| 1 | XWBSEC ;SFISC/VYD - RPC BROKER ;09/23/2004 13:01
|
---|
| 2 | ;;1.1;RPC BROKER;**3,6,10,35**;Mar 28, 1997
|
---|
| 3 | CHKPRMIT(XWBRP) ;checks to see if remote procedure is permited to run
|
---|
| 4 | ;Input: XWBRP - Remote procedure to check
|
---|
| 5 | Q:$$KCHK^XUSRB("XUPROGMODE")
|
---|
| 6 | N ERR,XWBPRMIT,XWBALLOW
|
---|
| 7 | S U="^",XWBSEC="" ;Return XWBSEC="" if OK to run RPC
|
---|
| 8 | ;
|
---|
| 9 | ;In the beginning, when no DUZ is defined and no context exist, setup
|
---|
| 10 | ;default signon context
|
---|
| 11 | S:'$G(DUZ) DUZ=0,XQY0="XUS SIGNON" ;set up default context
|
---|
| 12 | ;
|
---|
| 13 | ;These RPC's are allowed in any context, so we can just quit
|
---|
| 14 | I "^XWB IM HERE^XWB CREATE CONTEXT^XWB RPC LIST^XWB IS RPC AVAILABLE^XUS GET USER INFO^XUS GET TOKEN^"[(U_XWBRP_U) Q
|
---|
| 15 | ;VistAlink RPC's that are always allowed.
|
---|
| 16 | I "^XUS KAAJEE GET USER INFO^XUS KAAJEE LOGOUT^"[(U_XWBRP_U) Q
|
---|
| 17 | ;
|
---|
| 18 | ;If in Signon context, only allow XUS and XWB rpc's
|
---|
| 19 | I $G(XQY0)="XUS SIGNON","^XUS^XWB^"'[(U_$E(XWBRP,1,3)_U) S XWBSEC="Application context has not been created!" Q
|
---|
| 20 | ;XQCS allows all users access to the XUS SIGNON context.
|
---|
| 21 | ;Also to any context in the XUCOMMAND menu.
|
---|
| 22 | ;
|
---|
| 23 | I $G(XQY0)'="" D ;1.1*6. XQY0="" after XUS SIGNON context deleted.
|
---|
| 24 | . S XWBALLOW=$$CHK^XQCS(DUZ,$P(XQY0,U),XWBRP) ;do the check
|
---|
| 25 | . S:'XWBALLOW XWBSEC=XWBALLOW
|
---|
| 26 | E S XWBSEC="Application context has not been created!"
|
---|
| 27 | Q
|
---|
| 28 | ;
|
---|
| 29 | ;
|
---|
| 30 | CRCONTXT(RESULT,OPTION) ;creates context for the passed in option
|
---|
| 31 | K XQY0,XQY N XWB1,XABPGMOD,XWBPGMOD S RESULT=0
|
---|
| 32 | S OPTION=$$DECRYP^XUSRB1(OPTION) ;S:OPTION="" OPTION="\"
|
---|
| 33 | I OPTION="" S XQY=0,XQY0="",RESULT=1 Q ;delete context if "" passed in.
|
---|
| 34 | S XWB1=$$OPTLK^XQCS(OPTION)
|
---|
| 35 | I XWB1="" S (XWBSEC,RESULT)="The context '"_OPTION_"' does not exist on server." Q ;P10
|
---|
| 36 | S RESULT=$$CHK^XQCS(DUZ,XWB1)
|
---|
| 37 | ;Access or programmer
|
---|
| 38 | S XWBPGMOD=$$KCHK^XUSRB("XUPROGMODE")
|
---|
| 39 | I RESULT!XWBPGMOD S XQY0=OPTION,XQY=XWB1,RESULT=1
|
---|
| 40 | E S XWBSEC=RESULT
|
---|
| 41 | Q
|
---|
| 42 | ;
|
---|
| 43 | ;
|
---|
| 44 | STATE(%) ;Return a state value
|
---|
| 45 | Q:'$L($G(%)) $G(XWBSTATE)
|
---|
| 46 | Q $G(XWBSTATE(%))
|
---|
| 47 | ;
|
---|
| 48 | ;
|
---|
| 49 | SET(%,VALUE) ;Set the state variable
|
---|
| 50 | I $G(%)="" S XWBSTATE=VALUE
|
---|
| 51 | S XWBSTATE(%)=VALUE
|
---|
| 52 | Q
|
---|
| 53 | KILL(%) ;Kill state variable
|
---|
| 54 | I $L($G(%)) K XWBSTATE(%)
|
---|
| 55 | Q
|
---|