Ini adalah cgi.servicePorGram sederhana saya untuk platform favorit saya IBMI.
Servieprogram ini menangani aliran yang masuk dan keluar ke STD-IO.
Salin SourceFile dan kompilasi di perpustakaan Anda sendiri
Mulai Server Admin Anda: STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
Buat instance http-server baru
Tambahkan bagian-bagian berikut ke HTTP-Config
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
Auth terhadap 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>
atau tanpa IBMI userprofile dengan daftar validasi:
Buat daftar validasi di IBMI Anda dengan: CRTVLDL TARGETLIB/TEST .
Ubah HTTP-Conf ke yang berikut:
<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>
Tambahkan pengguna yang diizinkan dengan HTTP-Admin "Advanced"-"Internet-User"
Mulailah HTTP-Server baru Anda
Cobalah contoh yang disampaikan:
Informasi pengguna
https://yourIP:port/targetlib/userinfos?usrcls=secofr&exppwd=1&enabled=0
Pekerjaan Aktif:
https://yourIP:port/targetlib/activejobs?sbs=qbatch&jobsts=msgw
Kunci objek:
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
Pekerjaan Log Infos:
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
Infos Statistik Objek:
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
Atau coba dengan aplikasi Windows kecil saya yang ditulis di VB.NET:
https://github.com/pantalonorange/control-for-ibm-i
getHttpInput: Membaca aliran dan isi variabel neccessary seperti "request_method" dan sebagainya.
Nilai -nilai ini ditulis ke variabel "inputparmds".
writeHttpout: di sini kita dapat menulis ke IO-STD
getHttpheader: Prosedur sederhana untuk menentukan header HTTP
getValuebyName Dapatkan nilai dengan nama dari parameter
Vtranslatedata: Konversi data antara berbagai CCSID.
ICONV digunakan untuk terjemahan.
ParSeyString: "Query_string" diuraikan di sini.
"ID = 1 & test = 5" menjadi ds [id = 1], [tes = 2]
SEPERATEVALUES: Data parsed dari "ParsereyString" disederhanakan di sini lebih jauh.
"id = 1" atau "test = 5" menjadi ds [{id} {1}] atau [{test} {5}]