Este es mi simple CGI.ServicePorgram para mi plataforma favorita IBMI.
Este ServieProgram maneja las transmisiones entrantes y salientes a STD-IO.
Copie SourceFiles y compilelos en su propia biblioteca
Inicie su servidor administrador: STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
Cree una nueva instancia de servidor HTTP
Agregue las siguientes partes al http-config
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
Auth contra el 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>
o sin IBMI UserProfile con una lista de validación:
Cree una lista de validación en su IBMI con: CRTVLDL TARGETLIB/TEST .
Cambie el HTTP-Conf a lo siguiente:
<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>
Agregue los usuarios permitidos con el http-admin "avanzado"-"usuario de Internet"
Inicie su nuevo servidor HTTP
Pruebe los ejemplos entregados:
Información de usuario
https://yourIP:port/targetlib/userinfos?usrcls=secofr&exppwd=1&enabled=0
Trabajos activos:
https://yourIP:port/targetlib/activejobs?sbs=qbatch&jobsts=msgw
Bloqueos 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
Infos de registro de trabajo:
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
Estadística de objetos infos:
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
O pruébalos con mi pequeña aplicación de Windows escrita en VB.NET:
https://github.com/pantalonorange/control-for-ibm-i
gethttpinput: lee la secuencia y complete las variables necesarias como "request_method", etc.
Estos valores se escriben en la variable "InputParmds".
WriteHttPout: Aquí podemos escribir en el IO-STD
gethttpheader: procedimiento simple para determinar el encabezado HTTP
getValueByName obtenga el valor por nombre de los parámetros
Vtransledata: Convierta datos entre diferentes CCSID.
ICONV se usa para la traducción.
Parsquerystring: la "Query_string" se analiza aquí.
"id = 1 & test = 5" se convierte en ds [id = 1], [test = 2]
SeperateValues: los datos analizados de "Parsquerystring" se simplifican aquí aún más.
"id = 1" o "test = 5" se convierte en ds [{id} {1}] o [{test} {5}]