Dies ist mein einfaches CGI.ServicePorgram für meine Favorit -Plattform IBMI.
Dieses Serviesprogram übernimmt die eingehenden und ausgehenden Ströme nach STD-IO.
Kopieren Sie Sourcefiles und kompilieren Sie sie in Ihrer eigenen Bibliothek
Starten Sie Ihren Admin-Server: STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
Erstellen Sie eine neue HTTP-Server-Instanz
Fügen Sie der HTTP-Config die folgenden Teile hinzu
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
Auth gegen die 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>
oder ohne IBMI UserProfile mit einer Validierungsliste:
Erstellen Sie eine Validierungsliste auf Ihrem IBMI mit: CRTVLDL TARGETLIB/TEST .
Ändern Sie die HTTP-Conf in Folgendes:
<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>
Fügen Sie die erlaubten Benutzer mit dem HTTP-Admin "Advanced"-"Internet-User" hinzu-"Internet-Benutzer"
Starten Sie Ihren neuen HTTP-Server
Probieren Sie die gelieferten Beispiele aus:
Benutzerinformationen
https://yourIP:port/targetlib/userinfos?usrcls=secofr&exppwd=1&enabled=0
Aktive Jobs:
https://yourIP:port/targetlib/activejobs?sbs=qbatch&jobsts=msgw
Objektschlösser:
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
Jobprotokollinfos:
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
Objektstatistische Infos:
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
Oder probieren Sie sie mit meiner kleinen Windows -App in VB.NET aus:
https://github.com/pantalonorange/control-for-ibm-i
GethttpInput: liest den Stream und fülle die merkwürdigen Variablen wie "Request_method" und so weiter aus.
Diese Werte werden in die Variable "InputParmds" geschrieben.
WriteHttpout: Hier können wir an die IO-STD schreiben
Gethttpheader: Einfaches Verfahren zur Bestimmung des HTTP -Headers
GetValuebyName erhalten den Wert per Namen aus den Parametern
vtranslatedata: Daten zwischen verschiedenen CCSIDs konvertieren.
Iconv wird zur Übersetzung verwendet.
ParsexyString: Das "query_string" wird hier analysiert.
"id = 1 & test = 5" wird zu ds [id = 1], [test = 2]
Separatevalues: Die analysierten Daten von "ParseceryString" werden hier noch weiter vereinfacht.
"id = 1" oder "test = 5" wird zu ds [{id} {1}] oder [{test} {5}]