| [1305] | 1 | ewdu ; JJIH/SMH - Utilities for EWD to VISTA interaction ; 11/18/11 5:39pm
 | 
|---|
| [1284] | 2 |  ;
 | 
|---|
 | 3 | r(sessid) ; Restore Symbol Table
 | 
|---|
 | 4 |  d mergeArrayFromSession^%zewdAPI(.DUZ,"DUZ",sessid)
 | 
|---|
 | 5 |  d mergeArrayFromSession^%zewdAPI(.IO,"IO",sessid)
 | 
|---|
 | 6 |  s U=$$getSessionValue^%zewdAPI("U",sessid)
 | 
|---|
| [1320] | 7 |  s DILOCKTM=$$getSessionValue^%zewdAPI("DILOCKTM",sessid)
 | 
|---|
 | 8 |  s DIQUIET=$$getSessionValue^%zewdAPI("DIQUIET",sessid)
 | 
|---|
 | 9 |  s DISYS=$$getSessionValue^%zewdAPI("DISYS",sessid)
 | 
|---|
 | 10 |  s DT=$$getSessionValue^%zewdAPI("DT",sessid)
 | 
|---|
 | 11 |  s DTIME=$$getSessionValue^%zewdAPI("DTIME",sessid)
 | 
|---|
| [1284] | 12 |  quit
 | 
|---|
 | 13 |  ;
 | 
|---|
 | 14 | s(sessid) ; Save to Symbol Table
 | 
|---|
| [1320] | 15 |  set DIQUIET=1 d DT^DICRW
 | 
|---|
| [1284] | 16 |  d mergeArrayToSession^%zewdAPI(.DUZ,"DUZ",sessid)
 | 
|---|
 | 17 |  d mergeArrayToSession^%zewdAPI(.IO,"IO",sessid)
 | 
|---|
 | 18 |  d setSessionValue^%zewdAPI("U","^",sessid)
 | 
|---|
| [1320] | 19 |  d setSessionValue^%zewdAPI("DILOCKTM",DILOCKTM,sessid)
 | 
|---|
 | 20 |  d setSessionValue^%zewdAPI("DIQUIET",DIQUIET,sessid)
 | 
|---|
 | 21 |  d setSessionValue^%zewdAPI("DISYS",DISYS,sessid)
 | 
|---|
 | 22 |  d setSessionValue^%zewdAPI("DT",DT,sessid)
 | 
|---|
 | 23 |  d setSessionValue^%zewdAPI("DTIME",DTIME,sessid)
 | 
|---|
| [1284] | 24 |  quit
 | 
|---|
 | 25 |  ;
 | 
|---|
| [1314] | 26 |  ; Custom Tag
 | 
|---|
 | 27 | SS(nodeOID,attrValues,docOID,technology) ; <vista:session> to get VISTA Session Variables
 | 
|---|
 | 28 |  N attr
 | 
|---|
 | 29 |  S attr("method")="r^ewdu"
 | 
|---|
 | 30 |  S attr("param1")="#ewd_sessid"
 | 
|---|
 | 31 |  S attr("type")="procedure"
 | 
|---|
 | 32 |  N xOID s xOID=$$addElementToDOM^%zewdDOM("ewd:execute",nodeOID,"",.attr)
 | 
|---|
 | 33 |  D removeIntermediateNode^%zewdDOM(nodeOID)
 | 
|---|
 | 34 |  quit
 | 
|---|
 | 35 |  ;
 | 
|---|
| [1284] | 36 | NULL ; Open Null Device
 | 
|---|
 | 37 |  s %ZIS="0H",IOP="NULL" d ^%ZIS
 | 
|---|
 | 38 |  i POP s $ec=",U1,"  ; this crashes everything... intended...
 | 
|---|
 | 39 |  q
 | 
|---|
 | 40 |  ;
 | 
|---|
| [1317] | 41 | setup(sessid) ; Set-up and SSO
 | 
|---|
| [1284] | 42 |  ; TODO: Set IO("CLNM")
 | 
|---|
 | 43 |  i '$data(IO) d NULL                  ; Open Null Device
 | 
|---|
 | 44 |  s IO("IP")=$$getServerValue^%zewdAPI("REMOTE_ADDR",sessid)
 | 
|---|
 | 45 |  n return
 | 
|---|
 | 46 |  d SETUP^XUSRB(.return)               ; Set-up and Try SSO
 | 
|---|
| [1317] | 47 |  ;0=server name, 1=volume, 2=uci, 3=device, 4=# attempts, 5=skip signon-screen,6=Domain Name, 7=Production (0=no, 1=Yes)
 | 
|---|
 | 48 |  i $g(return(5)),DUZ>0 q $$s(sessid)  ; Single Sign-On Successful; need redirect though here.
 | 
|---|
| [1284] | 49 |  e  d  q ""                           ; Otherwise, get INTRO text
 | 
|---|
| [1317] | 50 |  . N INTROTXT
 | 
|---|
 | 51 |  . D INTRO^XUSRB(.INTROTXT)
 | 
|---|
 | 52 |  . d mergeArrayToSession^%zewdAPI(.INTROTXT,"so.introtxt",sessid)
 | 
|---|
 | 53 |  . d setSessionValue^%zewdAPI("so.serverName",return(0),sessid)
 | 
|---|
 | 54 |  . d setSessionValue^%zewdAPI("so.volume",return(1),sessid)
 | 
|---|
 | 55 |  . d setSessionValue^%zewdAPI("so.uci",return(2),sessid)
 | 
|---|
 | 56 |  . ; Don't care about device! (return(3))
 | 
|---|
 | 57 |  . ; Number of Attempts (return(4))
 | 
|---|
 | 58 |  . d setSessionValue^%zewdAPI("so.fqdn",return(6),sessid)
 | 
|---|
 | 59 |  . d setSessionValue^%zewdAPI("so.prod",return(7),sessid)
 | 
|---|
| [1320] | 60 |  . ; 
 | 
|---|
 | 61 |  . ; Get the Date in the Symbol Table since $$SITE wants it
 | 
|---|
 | 62 |  . s DIQUIET=1 d DT^DICRW
 | 
|---|
 | 63 |  . ;
 | 
|---|
 | 64 |  . ; Get the site name and format it
 | 
|---|
 | 65 |  . n sitename s sitename=$P($$SITE^VASITE(),"^",2)
 | 
|---|
 | 66 |  . s sitename=$$TITLE^XLFSTR(sitename)
 | 
|---|
 | 67 |  . d setSessionValue^%zewdAPI("so.sitename",sitename,sessid)
 | 
|---|
| [1284] | 68 |  ; ---
 | 
|---|
 | 69 | so(sessid) ; SO from EWD; routes to $$SO
 | 
|---|
 | 70 |  ; TODO: Set IO("CLNM")
 | 
|---|
 | 71 |  d NULL                             ; IO set-up
 | 
|---|
 | 72 |  s IO("IP")=$$getServerValue^%zewdAPI("REMOTE_ADDR",sessid)
 | 
|---|
 | 73 |  d SETUP^XUSRB();                   ; This time, just need partition set-up
 | 
|---|
 | 74 |  n ac s ac=$$getSessionValue^%zewdAPI("ac",sessid)
 | 
|---|
 | 75 |  n vc s vc=$$getSessionValue^%zewdAPI("vc",sessid)
 | 
|---|
 | 76 |  n result s result=$$SO(ac,vc)
 | 
|---|
 | 77 |  ;
 | 
|---|
 | 78 |  ; Change Verify Code Logic Ahead... Damn Complex!
 | 
|---|
 | 79 |  i $l(result),result="CVC" d  q ""  ; User must change Verify Code
 | 
|---|
 | 80 |  . S DUZ=$$STATE^XWBSEC("XUS DUZ")  ; VISTA kills off DUZ if vc needs changing.
 | 
|---|
 | 81 |  .                                  ; That's fine when it can get it back. But we are not a stateful process.
 | 
|---|
 | 82 |  .                                  ; By the time the second request is made, XUS DUZ is gone gone gone.
 | 
|---|
 | 83 |  . d s(sessid)                      ; Save symbol table for next page (including DUZ)
 | 
|---|
 | 84 |  . d setRedirect^%zewdAPI("cvc",sessid) ; Next page is cvc.
 | 
|---|
 | 85 |  . d setSessionValue^%zewdAPI("cvcForced",1,sessid) ; Need to know that the user is toast!
 | 
|---|
 | 86 |  ;
 | 
|---|
 | 87 |  i $l(result) q result  ; General Error Message - User can't log-in
 | 
|---|
 | 88 |  ;
 | 
|---|
 | 89 |  e  d  q ""  ; Everything Okay
 | 
|---|
 | 90 |  . d s(sessid)
 | 
|---|
 | 91 |  . i $$isCheckboxOn^%zewdAPI("cvc","cvc",sessid) d setRedirect^%zewdAPI("cvc",sessid)
 | 
|---|
 | 92 |  ;
 | 
|---|
 | 93 | SO(ac,vc) ; Sign-on to VISTA, AV way
 | 
|---|
 | 94 |  ; TODO: Handle the rest of the return values
 | 
|---|
 | 95 |  N return
 | 
|---|
| [1316] | 96 |  ; if ac contains ;, then it contains the verify code
 | 
|---|
 | 97 |  ; else, send ac;vc
 | 
|---|
 | 98 |  if ac[";" d VALIDAV^XUSRB(.return,$$ENCRYP^XUSRB1(ac))
 | 
|---|
 | 99 |  else  d VALIDAV^XUSRB(.return,$$ENCRYP^XUSRB1(ac_";"_vc))
 | 
|---|
| [1284] | 100 |  i return(0)>0,'return(2) q "" ; Sign on successful!
 | 
|---|
 | 101 |  i return(0)=0,return(2) q "CVC"  ; Verify Code must be changed NOW!
 | 
|---|
 | 102 |  i $l(return(3)) q return(3)  ; Error Message returned whole
 | 
|---|
 | 103 |  ; Note: division selection not implemented here
 | 
|---|
 | 104 |  quit ""
 | 
|---|
 | 105 |  ; ---
 | 
|---|
 | 106 | sss(id) ; Test
 | 
|---|
 | 107 |  d setRedirect^%zewdAPI("index",id,"bb")
 | 
|---|
 | 108 |  q ""
 | 
|---|
 | 109 | whoami(sessid) ; Who Am I? PrePage Script
 | 
|---|
 | 110 |  d r(sessid)
 | 
|---|
 | 111 |  n Name s Name=$$GET1^DIQ(200,DUZ,.01) ; User Name
 | 
|---|
 | 112 |  d setSessionValue^%zewdAPI("Name",Name,sessid)
 | 
|---|
 | 113 |  q ""
 | 
|---|
 | 114 | cvc(sessid) ; Change Verify Code
 | 
|---|
 | 115 |  ; get stored session values for DUZ, IO, and U
 | 
|---|
 | 116 |  d r(sessid) ; Restore the Symbol Table
 | 
|---|
 | 117 |  n VC1,VC2,VC3
 | 
|---|
 | 118 |  s VC1=$$getPasswordValue^%zewdAPI("vc1",sessid)
 | 
|---|
 | 119 |  s VC2=$$getPasswordValue^%zewdAPI("vc2",sessid)
 | 
|---|
 | 120 |  s VC3=$$getPasswordValue^%zewdAPI("vc3",sessid)
 | 
|---|
 | 121 |  ; Uppercase them -- otherwise CVC will fail.
 | 
|---|
 | 122 |  s VC1=$$UP^XLFSTR(VC1)
 | 
|---|
 | 123 |  s VC2=$$UP^XLFSTR(VC2)
 | 
|---|
 | 124 |  s VC3=$$UP^XLFSTR(VC3)
 | 
|---|
 | 125 |  ; Roman Cipher them vista-wise
 | 
|---|
 | 126 |  n eVC1,eVC2,eVC3
 | 
|---|
 | 127 |  s eVC1=$$ENCRYP^XUSRB1(VC1)
 | 
|---|
 | 128 |  s eVC2=$$ENCRYP^XUSRB1(VC2)
 | 
|---|
 | 129 |  s eVC3=$$ENCRYP^XUSRB1(VC3)
 | 
|---|
 | 130 |  ; Set-up Call
 | 
|---|
 | 131 |  n vcString s vcString=eVC1_U_eVC2_U_eVC3
 | 
|---|
 | 132 |  n ret
 | 
|---|
 | 133 |  d CVC^XUSRB(.ret,vcString)
 | 
|---|
 | 134 |  i ret(0)=0 q ""  ; Success
 | 
|---|
 | 135 |  i ret(0)>0 q ret(1)  ; Failure
 | 
|---|
| [1285] | 136 |  ;;
 | 
|---|
 | 137 |  ;;return(0)=0
 | 
|---|
 | 138 |  ;;return(1)=0
 | 
|---|
 | 139 |  ;;return(2)=1
 | 
|---|
 | 140 |  ;;return(3)="VERIFY CODE must be changed before continued use."
 | 
|---|
 | 141 |  ;;return(4)=0
 | 
|---|
 | 142 |  ;;return(5)=0
 | 
|---|
 | 143 |  ;;return(6)=""
 | 
|---|
 | 144 |  ;;return(7)="Good evening DOCTOR,TEN"
 | 
|---|
 | 145 |  ;;return(8)="     You last signed on today at 22:19"
 | 
|---|
 | 146 | listEWDApps(sessid)  ; Lists all available EWD Applicaitons, not including ewdMgr. Intended to be an imitation of a menu.
 | 
|---|
 | 147 |  n apps  ; Will hold our applications
 | 
|---|
 | 148 |  do
 | 
|---|
 | 149 |  . n ewdpath s ewdpath=^zewd("config","applicationRootPath")
 | 
|---|
 | 150 |  . o "lsApps":(shell="/bin/bash":command="ls -1 "_ewdpath:READONLY)::"PIPE"
 | 
|---|
 | 151 |  . u "lsApps"
 | 
|---|
 | 152 |  . n line
 | 
|---|
 | 153 |  . n counter s counter=1
 | 
|---|
 | 154 |  . for  read line quit:$zeof  do
 | 
|---|
 | 155 |  . . i line="ewdMgr" quit  ; Don't include ewdMgr
 | 
|---|
 | 156 |  . . s apps(counter)=line
 | 
|---|
 | 157 |  . . s counter=counter+1
 | 
|---|
 | 158 |  . c "lsApps"
 | 
|---|
 | 159 |  . zwrite:$g(debug) apps
 | 
|---|
| [1305] | 160 |  . d mergeArrayToSession^%zewdAPI(.apps,"installedapps",sessid)
 | 
|---|
| [1285] | 161 |  ;
 | 
|---|
| [1305] | 162 |  ; Old code: uses JSON
 | 
|---|
 | 163 |  ; n appsjson s appsjson=$$arrayToJSON^%zewdJSON("apps")
 | 
|---|
 | 164 |  ; zwrite:$g(debug) appsjson
 | 
|---|
 | 165 |  ; d setSessionValue^%zewdAPI("appsjson",appsjson,sessid)
 | 
|---|
 | 166 |  ; 
 | 
|---|
| [1285] | 167 |  q ""
 | 
|---|
| [1305] | 168 | redir(sessid)
 | 
|---|
 | 169 |  n redirapp s redirapp=$$getRequestValue^%zewdAPI("nextapp",sessid)
 | 
|---|
 | 170 |  d setRedirect^%zewdAPI("index",sessid,redirapp)
 | 
|---|
 | 171 |  q ""
 | 
|---|
 | 172 |  ;
 | 
|---|