这是我最喜欢的平台IBMI的简单CGI.ServicePorgram。
此服务程序处理传入和传出流到STD-IO。
复制SourceFiles并在您自己的库中编译它们
启动您的管理员服务器: STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
创建一个新的HTTP-Server实例
将以下部分添加到HTTP-Config
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
针对IBMI -userProfiles的验证:
<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用户封装:
使用以下方式在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“高级” - “ Internet-user”一起添加
启动新的HTTP服务器
尝试提供的示例:
用户信息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
历史日志信息:
https://yourIP:port/targetlib/historylogs?start=2021-07-11&end=2021-07-12&query=brc
作业日志信息:
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
对象统计信息:
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
或用我用vb.net编写的小型Windows应用程序尝试它们:
https://github.com/pantalonorange/control-for-ibm-i
gethttpinput:读取流并填充“ request_method”等必要变量,依此类推。
这些值写入“ InputParmds”变量。
writehttpout:在这里我们可以写入IO-STD
Gethttpheader:确定HTTP标头的简单过程
getValuebyName从参数中获取逐个名称的值
vtranslatedata:在不同的CCSID之间转换数据。
ICONV用于翻译。
PARSECORSTRING:“ QUERY_STRING”在这里解析。
“ ID = 1&test = 5”变为DS [ID = 1],[test = 2]
SeperateValues:从“ Parequerystring”中解析的数据进一步简化了。
“ id = 1”或“ test = 5”变为ds [{id} {1}]或[{test} {5}]