Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XWBTCPZ

XWBTCPZ.m

Go to the documentation of this file.
  1. XWBTCPZ ;SLC/KCM - calls to client listener [ 12/04/94 8:58 PM ]
  1. ;;1.0T11;RPC BROKER;;Oct 31, 1995
  1. ;
  1. STARTAPP(APP,ERR,DHCP) ; Start a windowed application (use full path name)
  1. ; input: X is name of windowed app
  1. ; output: ERR is returned error code (passed by reference)
  1. N X,I,DEV,LEN,OS,SKT
  1. S SKT=9100,ERR="unknown error" IF '$L(APP) S ERR="no app" Q
  1. S OS=$S(^%ZOSF("OS")["DSM":"DSM",^("OS")["MSM":"MSM",1:"")
  1. ; -- get the IP address of the client
  1. I OS="DSM" S IP=$P($&ZLIB.%GETDVI($P,"TT_ACCPORNAM")," ",2)
  1. I OS="MSM" S IP="127.0.0.1" ; -- for laptop demo only
  1. I '$L(IP) S ERR="not telnet device" Q
  1. ; -- connect to client
  1. I OS="DSM" O SKT:(TCPCHAN:ADDRESS=IP) U SKT S DEV=SKT
  1. I OS="MSM" O 56 U 56::"TCP" W /SOCKET(IP,SKT) S DEV=56
  1. ; -- send StartApp message
  1. S X="StartApp^"_APP
  1. I $G(DHCP) S X=X_" "_$$NCRYPT^XWBTCPZ(DUZ_"^password^"_$H,$C(83,69,67,82,69,84))
  1. W X,$C(4),!
  1. ; -- get acknowledgement
  1. R *LEN R X#LEN
  1. I X'="ack" S ERR="not started"
  1. E S ERR=""
  1. ; -- close socket
  1. C DEV
  1. U $P
  1. Q
  1. ;
  1. NCRYPT(SRC,KEY) ; Encrypt the string in SRC, using KEY
  1. ; Input: SRC, KEY
  1. ; Output: DEST returned as value of function
  1. N OFFSET,SRCPOS,SRCASC,KEYPOS,DEST
  1. S OFFSET=($R(10000)#255)+1
  1. S DEST=$TR($J($$HEX(OFFSET),2)," ","0")
  1. S KEYPOS=0 F SRCPOS=1:1:$L(SRC) D
  1. . S SRCASC=($A(SRC,SRCPOS)+OFFSET)#255
  1. . I KEYPOS<$L(KEY) S KEYPOS=KEYPOS+1
  1. . E S KEYPOS=1
  1. . S SRCASC=$$XOR(SRCASC,$A(KEY,KEYPOS))
  1. . S DEST=DEST_$J($$HEX(SRCASC),2)
  1. . S OFFSET=SRCASC
  1. Q DEST
  1. DCRYPT(SRC,KEY) ; Decrypt the string in SRC, using KEY
  1. ; Input: SRC, KEY
  1. ; Output: DEST returned as value of function
  1. N OFFSET,SRCPOS,SRCASC,KEYPOS,TMPASC,DEST
  1. S OFFSET=$$DEC($E(SRC,1,2)),DEST="",KEYPOS=0
  1. F SRCPOS=3:2:$L(SRC) D
  1. . S SRCASC=$$DEC($TR($E(SRC,SRCPOS,SRCPOS+1)," ",""))
  1. . I KEYPOS<$L(KEY) S KEYPOS=KEYPOS+1
  1. . E S KEYPOS=1
  1. . S TMPASC=$$XOR(SRCASC,$A(KEY,KEYPOS))
  1. . I TMPASC'>OFFSET S TMPASC=255+TMPASC-OFFSET
  1. . E S TMPASC=TMPASC-OFFSET
  1. . S DEST=DEST_$C(TMPASC),OFFSET=SRCASC
  1. Q DEST
  1. HEX(X) ; Return the hex value of the decimal number in X
  1. N I,X1,Y S Y="",X1=16
  1. F I=1:1 S Y=$E("0123456789ABCDEF",X#X1+1)_Y,X=X\X1 Q:X<1
  1. Q Y
  1. DEC(X) ; Return the decimal value of the hex number in X
  1. N I,X1,Y S Y=0,X1=16
  1. F I=1:1:$L(X) S Y=Y*X1+($F("0123456789ABCDEF",$E(X,I))-2)
  1. Q Y
  1. XOR(X1,X2) ;Exclusive OR two numbers
  1. I ^%ZOSF("OS")["DSM" Q $&ZLIB.%BOOLEAN(X1,X2,6)
  1. I ^%ZOSF("OS")["MSM" Q @("$ZBOOLEAN("_X1_","_X2_",6)")
  1. Q ""