Навигация:  Traffic Inspector SDK >

API администрирования

Previous pageReturn to chapter overviewNext page

 

API администрирования программы Traffic Inspector реализован как COM сервер, интерфейс к которому доступен другим приложениям как локально, так и удаленно через DCOM -  стандартную службу Windows, поддерживающее работу COM через сеть.

 

Требования к приложениям.

 

Приложения могут быть написаны на любом языке программирования, поддерживающим технологию COM Windows. Будут рассмотрены наиболее удобные -

 

Скрипты на VBScript или Jscript. Позволяют быстро и просто реализовать несложные задачи. Используют встроенную службу Windows Scripting Host. Написание и отладка не требует никаких сторонних инструментов, требуется только текстовый редактор.
Приложения на Microsoft .NET Framework.
Delphi.

 

Так как последние требуют наличие средств разработки и профессиональных навыков, для этих случаев здесь будут упомянуты только некоторые специфичные аспекты.

 

Требования к программному окружению.

 

При локальном доступе к API интерфейсу, когда приложение и сервер Traffic Inspector работают на одной ОС, все просто - сервер Traffic Inspector должен быть установлен и нормально работать.

 

При удаленном доступе требуется наличие зарегистрированной библиотеки типов Traffic Inspector, а также может потребоваться настройка безопасности службы DCOM. Здесь  проще всего установить удаленную консоль Traffic Inspector и настроить ее работу, что подробно описано в справке. Если консоль по какой-то причине устанавливать не хочется, то для регистрации библиотеки типов следует взять файл tiregtlb.dll из папки удаленной консоли и зарегистрировать его утилитой regsvr32.exe (этот файл в дальнейшем надо сохранить в этом месте, удалять его нельзя!).

 

Программный доступ к API интерфейсу.

 

Основным для API является интерфейс ITrafInspAdmin, только он может вызываться напрямую. Имя класса - "TrafInsp.TrafInspAdmin".

 

Для доступа к API интерфейсу приложения могут использовать раннее или позднее связывание. При позднем связывании анализ структуры интерфейса производится только в процессе выполнения кода, при каждом конкретном обращении к его методам. Ранее связывание работает быстрее и подразумевает компиляцию кода с библиотекой типов интерфейса API. Вариант с поздним связыванием более предпочтителен, так как API интерфейс Traffic Inspector при его обновлении может изменяться.

 

Все скриптовые технологии используют только позднее связывание. Например, для VBScript ссылка на интерфейс инициализируется так -

 

Set Srv = CreateObject("TrafInsp.TrafInspAdmin")

 

Для Delphi -

 

var Srv: Variant;

.................

Srv:= CreateOleObject('TrafInsp.TrafInspAdmin');

 

Для раннего связывания в Delphi надо импортировать библиотеку типов и подключить в проект соотв. модуль.

 

Для работы приложений Microsoft .NET Framework с интерфейсом Traffic Inspector потребуется interop модуль. Проще всего его взять на сервере - файл "Interop.TrafInsp.dll" из папки ASP.NET\bin. На сервере при установке программы этот модуль также помещается в GAC (глобальный кэш). Для приложений ASP.NET сервера см. отдельный раздел документации.

 

Совместимость приложений при обновлении программы.

 

При обновлении программы Traffic Inspector в процессе развития продукта API интерфейс может меняться. При этом обеспечивается совместимость на уровне методов в пределах одной линейки продукта. Для обеспечения корректной работы других приложений следует -

 

При удаленном доступе надо обновить консоль или файл tiregtlb.dll.
Для приложений Microsoft .NET Framework надо обновить файл Interop.TrafInsp.dll. Это не требуется при локальном доступе, если приложение ссылается на этот файл из GAC или по стандартному пути ASP.NET\bin - там файл будет обновлен инсталлятором.
В Delphi при использовании раннего связывания надо повторно произвести импорт библиотеки типов и обновить интерфейсный модуль.

 

Работа с API администрирования.

 

После инициализации ссылки на API интерфейс со стороны приложения требуется авторизация. Без авторизации возможно только чтение статуса, а также вызов некоторых функций-помощников. Доступа к функциям авторизации и разграничения прав реализован через отдельный интерфейс IPermissions -

 

Set Perm = Srv.QueryPermissions()

 

Для авторизации проще всего использовать встроенную учетную запись администраторов -

 

Result = Perm.DoSharedLogon("UserName", "Password", "From script demo")

If Result <> 0 Then

   ///// ошибка авторизации

End If

 

Пользователь может авторизоваться как полный администратор, имеющий все права, или с ограничениями - менеджер или кассир. Смотрите раздел "Основные функции, Администрирование и разграничение доступа" документации на программу. В зависимости от этого доступ к некоторым функциям API может быть запрещен или ограничен.

 

Функции API можно разделить на группы -

 

Сборные функции. GetConfig - Чтение различных данных конфигурации и состояния с сервера. SetConfig - модификация различных данных, а также некоторые функции управления.
GetList, UpdateList, UpdateList2, InsertList, DeleteList, ExchangeList, SaveList, FindInList, ItemGUIDByName, ItemNameByGUID - работа со списками конфигурации в XML формате.
Отдельные функции для работы с клиентами и счетами - UserClearBlock, TIUserLogon, TIUserLogoff, MessPopup, GetMessPopup, UserResetBillSess, UserAddCach.
Работа с дополнительными атрибутами - AdvAttrVerify, AdvAttrData, AdvAttrDataExists, AdvAttrDataClear, AdvAttrGetXML.
Работа со списками-описаниями - ImportDesc, ExportDesc, DeleteDescItem, DescMaintenance, CheckDesc.
Работа с базами данных - GetDBInfo, GetExtDBInfo, GetExtDBType, DBQuery, DBQuery2, DBSetTimeout.
GetNetStat - чтение текущей сетевой статистики.
ExternalCounterReset - сброс внешних счетчиков.
Рассылка SMTP сообщений - SMTPNotifEnabled, SMTPSendNotif, SMTPSendNotif2, SMTPSender.
Функции-помощники - BlockReasonAsString, BillTraffTypeAsString, SessStateAsString, ServiceAsString, ServiceSetAsString, IPProtoAsString, AppProtoAsString, GetUserADEmai, DateTimeToISO, ISOToDateTime, DNSResolve, GetMACByIP, WhoIs.
Различные другие функции - GetWWWServQueryParams, SetForwardProxy_AddExtFwRule, DoDownload, ProxyCacheMaintenance, HTTPCacheRead.
Работа с профилями - GetProfileComponent, SetProfileComponent, GetProfileSection, SetProfileSection, CopyProfile, ClearProfile, ClearProfile2.

 

Для сложных по структуре данных API использует XML формат. Данные при этом читаются и пишутся в текстовом виде. Структура XML данных строго типизирована и описана в XML схеме - файл schema.xsd. Запись данных несоответствующих этой схеме приведет к выдачи ошибки.

 

Для работы с XML данными стороннее приложение может использовать любой XML парсер. Примеры приведены для Microsoft XML версии 4.0.

 

Данные разделяются на два типа - данные конфигурации и данные состояния.

 

Данные конфигурации сохраняются в XML файлах и загружаются оттуда при старте программы. Любая их запись через API, даже если они не изменились, приводит к их автоматическому сохранению. Операция сохранения в программе сделана интелектуальной, операция сохранения выполняется с некоторой задержкой, позволяя накопить изменения, изменение в пакетном режиме не приводит к перегрузке ее работы.

 

Данные конфигурации в программе могут быть оформлены в XML списках или отдельными блоками XML данных.

 

Работа с отдельными блоками производится функциями GetConfig и SetConfig - см. их описание.

 

Для работы со списками имеется отдельный набор функций. XML список включает корневой элемент в который вложен набор элементов списка. Имена элементов списка должны быть одинаковыми. В списке может иметься набор общих настроек, они хранятся ввиде атрибутов корневого элемента. В консоли эти общие настройки, как правило, доступны в отдельном окне свойств списка. В функциях для работы со списками предусмотрена возможность разделения работы с такими данными - общие настройки и элементы списка отдельно.

 

Для элемента списка обязательным является атрибут GUID - его уникальный идентификатор. Все операции по обращению к элементам производятся по этому идентификатору. Также везде имеется атрибут DisplayName - отображаемое имя. При запросе данных этот атрибут доступен всегда. При запросе данных списка функцией GetList имеется возможность получить данные в минимальном наборе только с GUID и DisplayName. Также при запросе данных списка кроме данных конфигурации могут быть запрошены и данные состояния. См. описание на функцию GetList.

 

При формировании XML запроса на изменение данных любые атрибуты настроек можно задавать выборочно - будут изменяться только они. Обязательным является только идентификатор GUID для элементов списков. При добавлении нового элемента списка GUID можно не задавать, он в этом случае будет задан программой автоматически. Но некоторые атрибуты при добавлении могут быть обязательными, например, отображаемое имя элемента списка.

 

Данные состояния, если они не завязаны на списки, могут быть запрошены функцией GetConfig - см. описание. Также имеется отдельная функция чтения данных сетевой статистики GetNetStat.

 

Данные состояния счетов могут быть получены двумя способами - в XML формате функцией GetList или в бинарном формате функцией GetUsersState. Второй способ эффективнее, но формат получаемых данных не позволяет использовать его в скриптах и эта функция здесь рассматриваться не будет.

 

Все операции по изменению состояний счетов и внешних счетчиков доступны через функцию UpdateList или UpdateList2. Для упрощения работы предусмотрены отдельные функции UserResetBillSess, UserAddCach, ExternalCounterReset, где некоторые типовые операции можно реализовать без формирования XML данных.

 

 

 


Текущая страница справки: http://help.smart-soft.ru/doc20/index.html?sdk_apiadmin.htm

Сайт разработчиков Traffic Inspector