Ceci est mon simple CGI.Serviceporgram pour ma plate-forme préférée IBMI.
Ce service de service gère les flux entrants et sortants vers STD-IO.
Copiez SourceFiles et compilez-les dans votre propre bibliothèque
Démarrez votre Admin-Server: STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
Créer une nouvelle instance HTTP-Server
Ajouter les parties suivantes au HTTP-Config
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
Auth contre l'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 sans IBMI UserProfile avec une liste de validation:
Créez une liste de validation sur votre IBMI avec: CRTVLDL TARGETLIB/TEST .
Changez le HTTP-CONF en ce qui suit:
<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>
Ajoutez les utilisateurs autorisés avec le HTTP-ADMIN "Advanced" - "Internet-utilisateur"
Démarrez votre nouveau serveur HTTP
Essayez les exemples livrés:
Informations sur les utilisateurs
https://yourIP:port/targetlib/userinfos?usrcls=secofr&exppwd=1&enabled=0
Emplois actifs:
https://yourIP:port/targetlib/activejobs?sbs=qbatch&jobsts=msgw
Serrures d'objet:
https://yourIP:port/targetlib/objectlocks?lib=testlib&obj=customers
Journal de l'historique Infos:
https://yourIP:port/targetlib/historylogs?start=2021-07-11&end=2021-07-12&query=brc
Journal du travail Infos:
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
Statistique d'objet Infos:
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
Ou essayez-les avec ma petite application Windows écrite dans VB.NET:
https://github.com/pantalonorange/control-for-ibm-i
GETHTTPINPUT: lit le flux et remplit les variables nécessaires comme "request_method" et ainsi de suite.
Ces valeurs sont écrites dans la variable "inputparmds".
WriteHttpout: Ici, nous pouvons écrire à l'io-std
Gethttpheader: procédure simple pour déterminer l'en-tête HTTP
getValueByName obtenir la valeur par nom à partir des paramètres
vtranslateData: convertir les données entre les différents CCSID.
L'icôve est utilisée pour la traduction.
PARSERSERYSTRING: Le "Query_string" est analysé ici.
"id = 1 & test = 5" devient ds [id = 1], [test = 2]
séparations de séparation: les données analysées de "ParseSerystring" sont encore plus simplifiées ici.
"id = 1" ou "test = 5" devient ds [{id} {1}] ou [{test} {5}]