Локальные сети персональных компьютеров. Работа с сервером Novell NetWare

       

Программа BACCESS


Приведем текст программы BACCESS (листинг 26), которая определяет и выводит на экран имя, идентификатор, тип объекта, а также его уровень доступа. В программе используются описанные выше функции.

// =================================================== // Листинг 26. Программа для просмотра уровня // доступа рабочей станции // Файл baccess\baccess.cpp // // (C) A. Frolov, 1993 // ===================================================

#include <stdlib.h> #include <stdio.h>

#define WORD unsigned int #define BYTE unsigned char

extern "C" int GetNetWareShellVersion(char *,char *, char *); extern "C" int GetBinderyAccessLevel(BYTE *, long *); extern "C" int GetBinderyObjectName(long, char*, WORD*);

void main(void) {

char MajorVersion=0; char MinorVersion=0; char Revision=0; int ccode;

BYTE SecurityAccessLevel; long ObjectID; char ObjectName[48]; WORD ObjectType;

printf("\n*BACCESS* (C) Frolov A., 1993\n");

// Проверяем присутствие сетевой оболочки

asm push si GetNetWareShellVersion(&MajorVersion, &MinorVersion, &Revision); asm pop si

if(MajorVersion == 0) { printf("\nОболочка NetWare не загружена\n"); return; }

// Получаем свой идентификатор и уровень доступа

GetBinderyAccessLevel(&SecurityAccessLevel, &ObjectID);

// По идентификатору определяем свое имя

ccode = GetBinderyObjectName(ObjectID, ObjectName, &ObjectType);

// Если пользователь подключился к файл-серверу, // выводим его имя, идентификатор и тип

if(!ccode) { printf("Пользователь %s, ID = %lX, Type = %d\n", ObjectName, ObjectID, ObjectType); }

// Выводим права доступа на чтение

printf("Права доступа на чтение:\t");

switch(SecurityAccessLevel & 0x0f) { case 0: printf("Anyone\t(не подключен к файл-серверу)\n"); break; case 1: printf("Logged\t(подключен к файл-серверу)\n"); break; case 2: printf("Object\t(подключен к файл-серверу " "с именем и паролем)\n"); break; case 3: printf("Supervisor\t(права супервизора)\n"); break; case 4: printf("NetWare\t(права Novell NetWare)\n"); break; }

// Выводим права доступа на запись

printf("Права доступа на запись:\t");

switch((SecurityAccessLevel >> 4) & 0x0f) { case 0: printf("Anyone\t(не подключен к файл-серверу)\n"); break; case 1: printf("Logged\t(подключен к файл-серверу)\n"); break; case 2: printf("Object\t(подключен к файл-серверу " "с именем и паролем)\n"); break; case 3: printf("Supervisor\t(права супервизора)\n"); break; case 4: printf("NetWare\t(права Novell NetWare)\n"); break; } }



Содержание раздела