Este é o meu simples CGI.ServicePorgram para minha plataforma de favorita IBMI.
Este programa de serve lida com os fluxos de entrada e saída para STD-IO.
Copie osfiles de origem e compile -os em sua própria biblioteca
Inicie seu servidor do administrador: STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
Crie uma nova instância HTTP-Server
Adicione as seguintes peças ao HTTP-Config
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
Auth contra o 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>
Ou sem o IBMI UserProfile com uma lista de validação:
Crie uma lista de validação no seu IBMI com: CRTVLDL TARGETLIB/TEST .
Altere o HTTP-Conf para o seguinte:
<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>
Adicione os usuários permitidos com o http-admin "avançado"-"usuário da Internet"
Comece seu novo HTTP-Server
Experimente os exemplos entregues:
Informações do usuário
https://yourIP:port/targetlib/userinfos?usrcls=secofr&exppwd=1&enabled=0
Empregos ativos:
https://yourIP:port/targetlib/activejobs?sbs=qbatch&jobsts=msgw
Bloqueios de objetos:
https://yourIP:port/targetlib/objectlocks?lib=testlib&obj=customers
History Log Infos:
https://yourIP:port/targetlib/historylogs?start=2021-07-11&end=2021-07-12&query=brc
Log de emprego Infos:
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
Estatística de objeto Infos:
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
Ou experimente -os com meu pequeno aplicativo Windows escrito em vb.net:
https://github.com/pantalonorange/control-for-ibm-i
Gethttpinput: lê o fluxo e preenche as variáveis necessárias como "request_method" e assim por diante.
Esses valores são gravados na variável "InputParmds".
writehttpout: Aqui podemos escrever para o IO-STD
Gethttpheader: Procedimento simples para determinar o cabeçalho HTTP
getValueByName Obtenha o valor pelo nome dos parâmetros
vtranslatedata: converta dados entre diferentes ccsid's.
O ICONV é usado para tradução.
Parsequestring: O "query_string" é analisado aqui.
"Id = 1 & test = 5" torna -se ds [id = 1], [teste = 2]
SeperateValues: Os dados analisados de "Parsequestres" são simplificados aqui ainda mais.
"id = 1" ou "test = 5" torna -se ds [{id} {1}] ou [{test} {5}]