이것은 나의 선호 플랫폼 IBMI에 대한 나의 간단한 cgi.serviceporgram입니다.
이 서류로 그램은 수신 및 나가는 스트림을 STD-IO로 처리합니다.
SourceFiles를 복사하여 자신의 라이브러리에서 컴파일하십시오
관리자-서버 시작 : STRTCPSVR SERVER(*HTTP) HTTPSVR(*ADMIN)
새 HTTP-Server 인스턴스를 만듭니다
HTTP-Config에 다음 부분을 추가하십시오
ScriptAliasMatch /targetlib/(.*) /qsys.lib/targetlib.lib/$1
IBMI에 대한 인증 - 사용자 프로파일 :
<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>
또는 유효성 검사 목록이있는 IBMI userProfile없이 :
CRTVLDL TARGETLIB/TEST 사용하여 IBMI에서 유효성 검사 목록을 만듭니다.
HTTP-Conf를 다음으로 변경하십시오.
<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>
HTTP-Admin "Advanced"-"Internet-User"로 허용 사용자를 추가하십시오.
새로운 HTTP-Server를 시작하십시오
전달 된 예제를 시도해보십시오.
사용자 정보
https://yourIP:port/targetlib/userinfos?usrcls=secofr&exppwd=1&enabled=0
활동적인 작업 :
https://yourIP:port/targetlib/activejobs?sbs=qbatch&jobsts=msgw
객체 잠금 :
https://yourIP:port/targetlib/objectlocks?lib=testlib&obj=customers
역사 로그 정보 :
https://yourIP:port/targetlib/historylogs?start=2021-07-11&end=2021-07-12&query=brc
작업 로그 정보 :
https://yourIP:port/targetlib/joblogs?job=067435/QUSER/QZDASOINIT&limit=20
객체 통계 정보 :
https://yourIP:port/targetlib/objectinfos?lib=yajl&objtype=*file
또는 vb.net으로 작성된 작은 Windows 앱으로 사용해보십시오.
https://github.com/pantalonorange/control-for-ibm-i
gethttpinput : 스트림을 읽고 "request_method"등과 같은 Neccessary 변수를 채 웁니다.
이 값은 "inputparmds"변수에 기록됩니다.
WriteHttpout : 여기서 우리는 IO-STD에 쓸 수 있습니다
gethttpheader : HTTP 헤더를 결정하는 간단한 절차
getValueByName 매개 변수에서 이름별로 값을 가져옵니다
VTRANSLATEDATA : 다른 CCSID간에 데이터를 변환합니다.
ICONV는 번역에 사용됩니다.
ParecteryString : "query_string"은 여기에 구문 분석됩니다.
"id = 1 & test = 5"는 ds가됩니다 [id = 1], [test = 2]
SeperateValues : "ParsecteryString"의 구문 분석 데이터는 여기에서 더욱 단순화됩니다.
"id = 1"또는 "test = 5"는 ds [{id} {1}] 또는 [{test} {5}]가됩니다.