MAUTHAGENT_EXAMPLEV1.0 4-NOV-2021 10:08 VSI C V7.4-002 0X $READONLY$UTILITYiH$CODE$ $LITERAL$`$LINK$$DATA$( UTILITY  CGIPLUSUSAGECOUNT8CGIPLUSUSAGECOUNT DEBUG(DEBUG  DEBUGWATCH0 DEBUGWATCH @ SOFTWAREID0 SOFTWAREID(JpMAIN0JPPROCESSREQUEST(J0STRSAME8J@AUTHENTICATEUSER0J`  MEMBEROFGROUP8Jx AUTHENTICATEFROMLIST(J __MAIN 6= mark=daniel =daniel(=daniel0=moe8=howard@=larryH=fineP=curlyX=howard`=moeh=larryp=curlyx= username= password=((just to show which is which)=(Mark Daniel, +61 8 82596031= Mark Daniel (VMS-USER)= no-such-user= no-such-user= fails (VMS-USER)(=Moses Horwitz8= Larry FineH=Jakob Horwitz 2=AUTHAGENT_EXAMPLE =#G8^~ _#0"@^4GHcGG#]("0[8b "G@ZkPb#@pBG4Gxb/@ZkcG8]@]HP#/k///#G ^[~(^0~8@GGb@ZkGB" @BD4GHbhb="/@ZkB0BGtG8b2"C@Zk (? `@qDpDQs4HRTJSFWBQ~`@B 4GHb@Zk0B=CtG8b@Zk=4G4G¦Bb@@.sJ""R@JSF@>.UJ>/@Zk"8"C4GBb"@Zk"8"C4GBb@Zk`BGGGtGhb@ZkBGb@ZkE B4Gb"@ZkB"4Gb0@@Zk/// ,BGBbTG Hx2"@ZkPBGXb@ZkBGb/@Zk"BGGdbGX"@Zkb#/'@B4Gp"b@ZkPBGXb@Zk/Q0 H_FSFQ|//B(b"""bTG@ZkcBTG"bG@Zk B4G4G(b@Zk/X#;TG~^H[@!"^~ (GGb/@ZkXBGb/@ZkB4GP"b@ZkGBHTGb( "/@Zk`B4Ghb@ZkBZ_"0""bGb/@Zk`B4Ghb@Zk""G_"b#@ B4G"(b@Zk BG4G"(b@ZkGGXb#@\//G_"""b#o@ B "4G(b@ZkGb#*@K/GG""b#_@"B4G/b"/@Zk BG`"4G(b@ZkG`G_"b#K@B// ""TGb@Zk`B4Ghb@Zk"BB"x""cDtGb/@Zk`B4Ghb@Zk/ B4G(b"@Zk" BG4G(b"/@ZkGG(b#GB@XbGbc/ `G]]} (0#k///G]]} (0#/k///@BG4GHb@Zk///[#;G~^G^~ (0޴8@HGGGG@G!"b/@ZkBGG"Bb2"_"@ZkB4Gb/@ZkGGE G/S@///GG_"b#@¤G(_"b#@ H!0@_=/bBTGH""bG@E@@ZkB4Gb@ZkBtGh""Eb@ZkB4Gb@ZkŠBtGx("bE/@ZkB4Gb@Zk tGBb0B'P'"/@ZkB4Gb@Zk/tG ""Bb8 DG@ZkB4Gb/@ZkB '"TGb@ZkB4Gb/@ZkG]]} (0ݤ8@HP#k///H;#;G~^tG8[1^~ (GGG !"b@ZkBGG8"Bb2"_"@Zk8PB4GXb@Zk D/#@///GG_"b#@D _//8bBTG(""b@ZkPG4G]Xb]} (0#k/8BTG8""b@ZkPG4G]Xb]} (0#k/# ;CG^~^ ~(08޴@[HP>X^`~hG0GGG:"^GG[b/@ZkBGG "BGb2"5_"/@Zk 8B4G@b@Zk,BTG BbH`2"@Zk/BGX""B"tGb@Zk "BGGba/@ZkBG@8$"tGb/@Zkg// (¤/hB?"G"tGpb@Zk%FBCtG""]"b @Zk]!D //fJ"/ *.Q2J'JQ3B1!F/ //.B4G"bTJJ/@Zk*,J!*H?*.*Jx$F8$F/ G//, 'F* /g& "/ ` ,@HH@@D/ //J.B4Gj"bRSJGJ/@Zk+,+H *.*J!F j.J!k!jJCgBFŢBH""GGGb@Zk , HD/K.KJ/j.}J!jJ(//Ǣ& #/ .WJJWBF/ //J/4Gj#Z[KbGKB/@Zk +,+H *. =xp*J!F j.J!k!jJBGGH""Gb/@Zk .'*"F JPJJ PBF y/j.B4G"bStJgJ/@Zkn,Bx""bTGHf@Zk8B4G@b/@Zkj-jI/!///& "/ *,A0H'HA1@!!D/ //J.B4Gj"bRSJGJ/@Zkj-J!jI*.*JGD *J/X!F`F/ .s"JCUBF//s"KCUCXG/ s/s"sKCU@`E/,s"H?.B""GtGbPJ>@Zk8B4G@b/@Zk//bBGtGb+"/@Zk8B4G@b@Zk BG"btG@Zk8B4G@b@ZkBG4Gb/@ZkG]] }(08ݤ@HP=X]`}hp#/k///#C~^^~ (0޴8@GGGGGG///,4G(b#"Hc %D/DK @. BPJJ/@Zk$, BG4G(bA$H'H@ZkD//%1@C4G /G //G//.J@G]]} (0ݤ8@P#k41HGd DECC$MAIN42Lb#  DECC$MAIN41`@d DECC$MAIN4lG DECC$EXIT4xb#  DECC$EXIT4@ DECC$EXITD!GCGILIBENVIRONMENTVERSIOND"b#pCGILIBENVIRONMENTVERSIOND!@CGILIBENVIRONMENTVERSION4'G DECC$STRLEN4(b#p DECC$STRLEN4'@ DECC$STRLEN4%G8 DECC$MEMCPY4&(b#p DECC$MEMCPY4%4@8 DECC$MEMCPY4'hG DECC$STRLEN4(|b#p DECC$STRLEN4'@ DECC$STRLEN4%G DECC$MEMCPY4&b#p DECC$MEMCPY4%@ DECC$MEMCPY4G DECC$GETENV4b#p DECC$GETENV4@ DECC$GETENV4G DECC$GETENV4b#p DECC$GETENV4@ DECC$GETENVD(G<CGILIBENVIRONMENTSETDEBUGD,b#pCGILIBENVIRONMENTSETDEBUGD8@<CGILIBENVIRONMENTSETDEBUG<+<GXCGILIBENVIRONMENTINIT<,Pb#pCGILIBENVIRONMENTINIT<+T@XCGILIBENVIRONMENTINITD/XGhCGILIBENVIRONMENTISCGIPLUSD0`b#pCGILIBENVIRONMENTISCGIPLUSD/d@hCGILIBENVIRONMENTISCGIPLUS4pG CGILIBVAR4xb#p CGILIBVAR4@ CGILIBVAR4G CGILIBVARNULL4b#p CGILIBVARNULL4@ CGILIBVARNULL<#GCGILIBRESPONSEHEADER<$b#pCGILIBRESPONSEHEADER<#@CGILIBRESPONSEHEADER<)GCGILIBCGIPLUSEOF<*b#pCGILIBCGIPLUSEOF<)@CGILIBCGIPLUSEOFD!GCGILIBENVIRONMENTVERSIOND"b#pCGILIBENVIRONMENTVERSIOND!@CGILIBENVIRONMENTVERSION <G(CGILIBCGIPLUSCALLOUT< b#pCGILIBCGIPLUSCALLOUT<$@(CGILIBCGIPLUSCALLOUT<4GHCGILIBCGIPLUSCALLOUT< @b#pCGILIBCGIPLUSCALLOUT<D@HCGILIBCGIPLUSCALLOUT<)HGXCGILIBCGIPLUSEOF<*Pb#pCGILIBCGIPLUSEOF<)T@XCGILIBCGIPLUSEOF<#GCGILIBRESPONSEHEADER<$b#pCGILIBRESPONSEHEADER<#@CGILIBRESPONSEHEADER4-G DECC$FPUTS4.b#p DECC$FPUTS4-@ DECC$FPUTS4G DECC$EXIT4b#p DECC$EXIT4@ DECC$EXIT4G$DECC$GXFPRINTF4b#PDECC$GXFPRINTF4 @$DECC$GXFPRINTF<(GDCGILIBCGIPLUSESC<0b#PCGILIBCGIPLUSESC<@@DCGILIBCGIPLUSESC4DGX CGILIBVARNULL4Pb#P CGILIBVARNULL4T@X CGILIBVARNULL4\GDECC$GXFPRINTF4pb#PDECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b#P DECC$FFLUSH4@ DECC$FFLUSH4GDECC$GXFPRINTF4b#PDECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b#P DECC$FFLUSH4@ DECC$FFLUSH4G  CGILIBVAR4b#P CGILIBVAR4@  CGILIBVAR4 G$ CGILIBVAR4b#P CGILIBVAR4 @$ CGILIBVAR4TGl CGILIBVAR4db#P CGILIBVAR4h@l CGILIBVAR4G DECC$GETENV4b#P DECC$GETENV4@ DECC$GETENV4G CGILIBVAR4b#P CGILIBVAR4@ CGILIBVAR4GDECC$GXFPRINTF4b#PDECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b#P DECC$FFLUSH4@ DECC$FFLUSH4 GDDECC$GXFPRINTF48b#PDECC$GXFPRINTF4@@DDECC$GXFPRINTF4DGX DECC$FFLUSH4Pb#P DECC$FFLUSH4T@X DECC$FFLUSH4`Gt CGILIBVAR4hb#P CGILIBVAR4p@t CGILIBVAR4xG CGILIBVAR4b#P CGILIBVAR4@ CGILIBVAR<GCGILIBCGIPLUSEOT<b#PCGILIBCGIPLUSEOT<CGILIBCGIPLUSEOT 4 G4 DECC$EXIT4,b#P DECC$EXIT40@4 DECC$EXIT4`GDECC$GXFPRINTF4b#DECC$GXFPRINTF4@DECC$GXFPRINTF4GDECC$GXFPRINTF4b#DECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b# DECC$FFLUSH4@ DECC$FFLUSH4GDECC$GXFPRINTF4b#DECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b# DECC$FFLUSH4@ DECC$FFLUSH4GDECC$GXFPRINTF4b#DECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b# DECC$FFLUSH4@ DECC$FFLUSH4G DECC$GXFPRINTF4 b#DECC$GXFPRINTF4 @ DECC$GXFPRINTF4 G( DECC$FFLUSH4 b# DECC$FFLUSH4$ @( DECC$FFLUSH44 GT DECC$GXFPRINTF4< b#DECC$GXFPRINTF4P @T DECC$GXFPRINTF4T Gh DECC$FFLUSH4` b# DECC$FFLUSH4d @h DECC$FFLUSH4 G DECC$GXFPRINTF4 b#DECC$GXFPRINTF4 @ DECC$GXFPRINTF4 G DECC$FFLUSH4 b# DECC$FFLUSH4 @ DECC$FFLUSH4 G DECC$GXFPRINTF4 b#DECC$GXFPRINTF4 @ DECC$GXFPRINTF4 G DECC$FFLUSH4 b# DECC$FFLUSH4 @ DECC$FFLUSH4@ Gx DECC$GXFPRINTF4p b#`DECC$GXFPRINTF4t @x DECC$GXFPRINTF4 G DECC$GXFPRINTF4 b#`DECC$GXFPRINTF4 @ DECC$GXFPRINTF4 G DECC$FFLUSH4 b#` DECC$FFLUSH4 @ DECC$FFLUSH4 G, DECC$GXFPRINTF4 b#`DECC$GXFPRINTF4( @, DECC$GXFPRINTF4, G\ DECC$FFLUSH4@ b#` DECC$FFLUSH4X \ DECC$FFLUSH4d G| DECC$GXFPRINTF4p b#`DECC$GXFPRINTF4x @| DECC$GXFPRINTF4| G DECC$FFLUSH4 b#` DECC$FFLUSH4  DECC$FFLUSH4 G8 DECC$GXFPRINTF4( b#xDECC$GXFPRINTF44 @8 DECC$GXFPRINTF4L Gt DECC$GXFPRINTF4T b#xDECC$GXFPRINTF4p @t DECC$GXFPRINTF4x G DECC$FFLUSH4 b#x DECC$FFLUSH4 @ DECC$FFLUSH 4 G DECC$GXFPRINTF4 b#xDECC$GXFPRINTF4 @ DECC$GXFPRINTF4  G DECC$FOPEN4  b#x DECC$FOPEN4  @ DECC$FOPEND G CMA$TIS_VMSERRNO_GET_ADDRD b#xCMA$TIS_VMSERRNO_GET_ADDRD @ CMA$TIS_VMSERRNO_GET_ADDR4 G$ DECC$GXFPRINTF4 b#xDECC$GXFPRINTF4 @$ DECC$GXFPRINTF4 @ G\ DECC$FGETS4 T b#x DECC$FGETS4 X @\ DECC$FGETS4d G DECC$GXFPRINTF4| b#xDECC$GXFPRINTF4 @ DECC$GXFPRINTF4 G DECC$ISSPACE4 b#x DECC$ISSPACE4@ DECC$ISSPACE4G DECC$ISSPACE4b#x DECC$ISSPACE4@ DECC$ISSPACE4GDECC$GXFPRINTF4b#xDECC$GXFPRINTF4@DECC$GXFPRINTF4b#x DECC$ISSPACE4G DECC$ISSPACE4@ DECC$ISSPACE4G$DECC$GXFPRINTF4b#xDECC$GXFPRINTF4 @$DECC$GXFPRINTF4dG DECC$ISSPACE4pb#x DECC$ISSPACE4@ DECC$ISSPACE4GDECC$GXFPRINTF4b#xDECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b#x DECC$FFLUSH4@ DECC$FFLUSH4$GD DECC$ISSPACE40b#x DECC$ISSPACE4@@D DECC$ISSPACE4GDECC$GXFPRINTF4b#xDECC$GXFPRINTF4@DECC$GXFPRINTF4G4 DECC$FFLUSH4(b#x DECC$FFLUSH40@4 DECC$FFLUSH4DGdDECC$GXFPRINTF4Tb#xDECC$GXFPRINTF4`@dDECC$GXFPRINTF4dGx DECC$FFLUSH4pb#x DECC$FFLUSH4t@x DECC$FFLUSH4|GDECC$GXFPRINTF4b#xDECC$GXFPRINTF4@DECC$GXFPRINTF4G DECC$FFLUSH4b#x DECC$FFLUSH4@ DECC$FFLUSH4 G DECC$FCLOSE4b#x DECC$FCLOSE4 @ DECC$FCLOSE4hb#0 DECC$TOUPPER4G DECC$TOUPPER4@ DECC$TOUPPER4G DECC$TOUPPER4b#0 DECC$TOUPPER4@ DECC$TOUPPER = 401 "%s" NOT found =(401 "%s" NOT authenticated 8=0%500 Database open error %%X%08.08X `=(500 Database not specified. =8)000 [%d] authenticating "%s" from "%s" =0$AuthenticateFromList() |%s|%s|%s| =8-000 [%d] checking group membership of "%s" = MemberOfGroup() |%s|  =8*401 NOT authenticated Username unknownP=H:100 SET-COOKIE AUTHAGENT_EXAMPLE="%s" 100 VMS-USER %s =(Password validation failure=(000 [%d] authenticating "%s" =(AuthenticateUser() |%s|%s| =(AUTHAGENT_EXAMPLE_NO401= WWW_AUTH_PASSWORD(=8+100 AUTHAGENT-CALLOUT ProcessRequest() X=@5!AGENT-BEGIN: %s (%s) usage:%dapplication/proctor=(AUTHAGENT_EXAMPLE$WATCH==5AUTHAGENT_EXAMPLE$DBUGAUTHAGENT_EXAMPLE AXP-2.0.0 $ (CMA$TIS_VMSERRNO_GET_ADDR=100 USER %s  =|%s| (7 DEBUGWATCH= shr=get@ DECC$ISSPACE;`DECC$GXFPRINTF7DECC$$GL___CTYPEA=0" ;=pL 7DECC$GA_STDOUT7DECC$$GA___CTYPET7DEBUG DECC$FFLUSH= |%s|%s| =r DECC$FGETS= 200 READ+WRITE  DECC$FOPEN DECC$FCLOSE=0";=P0  DECC$TOUPPER=0" ;=0< ;= 200 YES = 403 NO =0"@;=( PL 100 REASON %s 7 SOFTWAREID=GROUP DECC$GETENV= defined! CGILIBVARNULL CGILIBCGIPLUSESC=REALM8= WWW_REMOTE_USERP=0";=0<  CGILIBVAR=000 [%d] %s  DECC$EXIT=0!WWW_AUTH_AGENTWWW_REMOTE_ADDR= 403 Not %s  CGILIBCGIPLUSEOT= /NO401text/plain== CGIplus!  =(null)0(CGILIBENVIRONMENTSETDEBUG CGILIBCGIPLUSCALLOUT(!CGILIBENVIRONMENTVERSION #CGILIBRESPONSEHEADER=0 ";=P( 7CGIPLUSUSAGECOUNT% DECC$MEMCPY' DECC$STRLEN )CGILIBCGIPLUSEOF +CGILIBENVIRONMENTINIT= !AGENT-END:- DECC$FPUTS(/CGILIBENVIRONMENTISCGIPLUS=REQUEST_METHOD=08";=P0 7DECC$$SHELL_HANDLER=1 DECC$MAIN `4h4p46x44464446 4(44=6444=60484(4=6@4H484=6P4X4H4=6  G=7/.AUTHAGENT_EXAMPLEVSI C V7.4-002 ?= p4=TRANSFER$BREAK$GO = 4p4= main4= +"  +"  +"  5" 5" 7" 7" 8" 8"  H" I" L" L"4 T" E" 5"  @" =   T= 4P4=ProcessRequest4= s" e"  e"  e"  y" " " " " " "_ " "  "  " " "  " "0 z" = p 8= @44=AuthenticateUser@4= " "  "  " " " " " " " " " "C " " #< =  =  4`4= MemberOfGroup 4= "# #  #  #  $# $# ,# 1# 1# 1# 7# 7# 7# =  = ! 4x4="AuthenticateFromList 4=PH D# V# D# D# D# D# V# V# Z# Z# b# b# i#+ t# p# p# p# y# y# # # # #@ # # #L = ` = 404= strsame4=VNM #  #  # # # # # #, = 8 s= 4 4= __main4= +" =  =  H DECC$ISSPACE DECC$TOUPPER DECC$$GA___CTYPET DECC$$GL___CTYPEA(CMA$TIS_VMSERRNO_GET_ADDRDECC$GA_STDOUT DECC$FCLOSE DECC$FFLUSHDECC$GXFPRINTF DECC$FPUTS DECC$FOPEN DECC$FGETS DECC$EXIT DECC$GETENV DECC$MEMCPY DECC$STRLEN CGILIBVAR CGILIBVARNULL CGILIBCGIPLUSEOF CGILIBCGIPLUSEOT CGILIBCGIPLUSESC CGILIBCGIPLUSCALLOUT CGILIBENVIRONMENTINIT(CGILIBENVIRONMENTISCGIPLUS(CGILIBENVIRONMENTSETDEBUG(CGILIBENVIRONMENTVERSION CGILIBRESPONSEHEADER DECC$MAIN DECC$$SHELL_HANDLER  C$IS