Это моя простая cgi.serviceporgram для моей любимой платформы IBMI.
Эта сервиспрограмма обрабатывает входящие и исходящие потоки к STD-IO.
Скопируйте исходные файлы и составьте их в собственной библиотеке
Запустите свой администратор: STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
Создайте новый экземпляр HTTP-Server
Добавить следующие детали в HTTP-конфиг
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
AUTH против IBMI - USERPORFILES:
<Directory /qsys.lib/targetlib.lib>
SetEnv QIBM_CGI_LIBRARY_LIST "targetlib;YAJL;QHTTPSVR"
AuthType Basic
AuthName "Restricted Area"
PasswdFile %%SYSTEM%%
UserID %%CLIENT%%
Require valid-user
</Directory>
или без ibmi userprofile с списком проверки:
Создайте список проверки на вашем IBMI с помощью: CRTVLDL TARGETLIB/TEST .
Измените HTTP-CONF на следующее:
<Directory /qsys.lib/targetlib.lib>
SetEnv QIBM_CGI_LIBRARY_LIST "targetlib;YAJL;QHTTPSVR"
AuthType Basic
AuthName "Restricted Area"
PasswdFile targetlib/test
Require valid-user
</Directory>
Добавить разрешенных пользователей с HTTP-ADMIN "Advanced"-"Интернет-пользователь"
Начните свой новый http-server
Попробуйте поставленные примеры:
Пользовательская информация
https://yourIP:port/targetlib/userinfos?usrcls=secofr&exppwd=1&enabled=0
Активная работа:
https://yourIP:port/targetlib/activejobs?sbs=qbatch&jobsts=msgw
Блокировки объекта:
https://yourIP:port/targetlib/objectlocks?lib=testlib&obj=customers
История журнала Infos:
https://yourIP:port/targetlib/historylogs?start=2021-07-11&end=2021-07-12&query=brc
Журнал работы Infos:
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
Статистика объекта Infos:
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
Или попробуйте их с моим маленьким приложением Windows, написанным в VB.NET:
https://github.com/pantalonorange/control-for-ibm-i
Gethttpinput: читает поток и заполняет необходимые переменные, такие как «request_method» и так далее.
Эти значения записываются в переменную «inputParmds».
Написать
Gethttphader: простая процедура для определения заголовка HTTP
GetValueByName Получите значение по имени из параметров
vtranslatedata: конвертировать данные между различными CCSID.
ICONV используется для перевода.
PareSeceRyString: «Query_String» здесь проанализируется.
"id = 1 & test = 5" становится ds [id = 1], [test = 2]
SeperateValues: проанализированные данные из «PareSeceryString» здесь упрощены еще дальше.
"id = 1" или "test = 5" становится ds [{id} {1}] или [{test} {5}]