*DECK NVFTILP USETEXT TEXTNVF USETEXT TEXTSS USETEXT TXTANVF USETEXT TXTAPSS PROC NVFTILP((PT)); # TITLE NVFTILP - ISSUE LOGIN PROMPTS # BEGIN # NVFTILP # # ** NVFTILP - ISSUE LOGIN PROMPTS. * * E. THAVIKULWAT 81/09/02 * * THIS PROCEDURE'S MAIN FUNCTION IS TO DETERMINE THE APPROPRIATE * LOGIN PROMPT TO ISSUE TO THE TERMINAL. IT IS CALLED INTO * EXECUTION BY THE FOLLOWING PROCEDURES: * *NVFTBRK* *NVFTDSP* *NVFTETI* *NVFTITE* *NVFTPSV* * *NVFTPUV* *NVFTRCN* *NVFTRVD* *NVFTTCD* *NVFTVAA* * *NVFTVVD* * * PROC NVFTILP((PT)) * * ENTRY: * PT = POINTER TO PTAC ENTRY. * PTA$PROMPT FIELD OF PTAC ENTRY CONTAINS THE PROMPT TO ISSUE. * * EXIT: * APPROPRIATE PROMPT ISSUED TO TERMINAL. * * METHOD: * FAMILY - IF FAMILY AND USER ARE BOTH MANDATORY, PROCEED TO * VALIDATE THE USER. * IF ONLY FAMILY IS MANDATORY, THEN ISSUE USER PROMPT * INSTEAD. * IF FAMILY IS NOT MANDATORY, ISSUE FAMILY PROMPT. * * USER - IF USER IS MANDATORY, PROCEED TO VALIDATE THE USER. * IF USER IS NOT MANDATORY, ISSUE USER PROMPT. * * PASSWORD - TERMINAL WOULD BE SET TO AWAITING PASSWORD PROMPT * ONLY IF: * 1) USER NAME WAS ENTERED IN RESPOND TO A USER * PROMPT. * 2) USER NAME WAS ENTERED IN AN ABBREVIATED FORMAT * FOLLOWING A FAMILY PROMPT. * FOR CASE 1, PROCEED TO ISSUE PASSWORD PROMPT. * FOR CASE 2, IF AUTOLOGIN TYPE FOR USER IS DEFAULT * AND "NULL" VALUE ENTERED OR USER TYPE IS MANDATORY, * PROCEED TO VALIDATE THE USER. OTHERWISE, ISSUE * PASSWORD PROMPT. * * PID - THE TERMINAL WOULD BE SET TO AWAITING PERSONAL ID * PROMPT ONLY IF THE FAMILY AND USER HAVE SUCCESSFULLY * BEEN VALIDATED, THE USER IS REQUIRED TO ENTER A * PERSONAL ID, AND THE PERSONAL ID HAS NOT PREVIOUSLY * BEEN ENTERED. IF THE USER IS REQUIRED TO ENTER THE * PID, IT WILL BE REQUESTED EVEN IF THE PASSWORD IS IN * ERROR. * * APPL - IF APPLICATION IS MANDATORY, SET STATE OF TERMINAL * TO AWAIT VALIDATE APPLICATION ACCESS. * IF APPLICATION IS PRIMARY, CHANGE APPLICATION TO TYPE * DEFAULT SO THAT SUBSEQUENT ATTEMPTS WILL ALWAYS * SOLICITE APPLICATION PROMPT AND SET STATE OF TERMINAL * TO AWAIT VALIDATE APPLICATION ACCESS. # # **** PROC NVFTILP - XREF LIST. # XREF BEGIN PROC NVFTPVR; # PREPARE VALIDATE USER REQUEST # PROC NVFUMQE; # TRANSFER SM OR TEXT TO QUEUE # PROC SSBSBF; # STORE BITFIELD IN TABLE # PROC SSCATR; # ACCEPT TIMER REQUEST # PROC SSTAQE; # ACCEPT QUEUE ENTRY # END # **** # DEF DTIME$ #120#; # DELAY TIME IN SECONDS FOR A RESPONSE # DEF EPOFF$ #X"45503D4E"#; # HEX CODE FOR "EP=N" # DEF TRBSIZ$ #4#; # NUMBER OF WORDS IN TIMER REQUEST BLOCK # *CALL TMSGNVF ITEM EPWD I; # CTRL/DEF ECHOPLEX WORD POSITION # ITEM EPBIT I; # CTRL/DEF ECHOPLEX BIT POSITION # ITEM LNGTH I; # LENGTH OF MESSAGE # ITEM PSUB I; # SUBSCRIPT FOR GOTO SWITCH # ITEM PT I; # SUBSCRIPT FOR ARRAY PTAC # ITEM PTIND I; # AUTOLOGIN TYPE INDICATOR VARIABLE # ITEM PTPRMT I; # PROMPT INDICATOR VARIABLE # ITEM PTTC I; # TERMINAL CLASS VARIABLE # # ** TRBBUF - TIMER REQUEST BUFFER. * * BUFFER CONTAINING TIMER INFORMATION. BUFFER IS SET UP TO CONTAIN * FC/INACT SM WHICH IS TO BE RETURNED TO *TAINPQ* QUEUE SHOULD THE * TIMER EXPIRE. # ARRAY TRBBUF[00:00] S(TRBSIZ$); BEGIN ITEM TRB$SMID S:CTQSTAT(00,00,12) = [S"SINA"]; # INTERNAL ID# ITEM TRB$WC U(00,48,12) = [TRBSIZ$]; # ENTRY-SIZE # ITEM TRB$ABT U(01,00,06) = [APPCMD]; # APPL BLOCK TYPE # ITEM TRB$CNUM U(01,18,18); # CANCELLATION NUMBER # ITEM TRB$PFCSFC U(02,00,16) = [FCINA]; # FC/INACT PFCSFC # ITEM TRB$ACN U(02,24,12); # APPLICATION CONNECTION NUMBER # ITEM TRB$DELAY U(03,24,18) = [DTIME$]; # DELAY TIME IN SEC # ITEM TRB$QNUM U(03,42,18); # Q NUM FOR TIMER EXPIRED MSG # END # * THE FOLLOWING BASED ARRAY IS FOR GENERAL PURPOSE USAGE # BASED ARRAY BPGEN[00:00] S(1); BEGIN ITEM BPG$WORD U(00,00,60); # FULL WORD REFERENCE # END SWITCH PRMTSWT LLAPPL, # LABEL FOR APPLICATION PROMPT # LLPRID, # LABEL FOR PERSONAL IDENTIFIER PROMPT # LLPWRD, # LABEL FOR PASSWORD PROMPT # LLUSER, # LABEL FOR USER PROMPT # LLFAM; # LABEL FOR FAMILY PROMPT # IF NOT PTA$ALIF[PT] THEN # NO AUTOLOGIN DATA # BEGIN GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT # END # * CHECK FOR AUTOLOGIN DATA. PASSWORD PROMPT IS NOT ISSUED IF USER * NAME WAS OBTAINED FROM THE *LCF* (I.E., USER IS MANDATORY OR USER * IS DEFAULT AND "NULL" VALUE RECEIVED). # PSUB = PTA$PROMPT[PT] - 1; GOTO PRMTSWT[PSUB]; LLFAM: # AWAITING FAMILY PROMPT # PTIND = PTA$FAMIND[PT]; IF (PTIND EQ MNDATRY$ OR PTIND EQ PRIMARY$) AND (PTA$USRIND[PT] EQ MNDATRY$ OR PTA$USRIND[PT] EQ PRIMARY$) THEN # PRIMARY/MANDATORY FAMILY AND USER, # BEGIN # PROCEED TO VALIDATE USER # NVFTPVR(PT); # PREPARE VALIDATE USER REQUEST # RETURN; # EXIT # END IF PTIND EQ MNDATRY$ OR PTIND EQ PRIMARY$ THEN # PRIMARY/MANDATORY FAMILY ONLY # BEGIN PTA$PROMPT[PT] = AWTUSR$; # CHANGE TO ISSUE USER PROMPT # END GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT # LLUSER: # AWAITING USER PROMPT # IF PTA$USRIND[PT] EQ MNDATRY$ OR PTA$USRIND[PT] EQ PRIMARY$ THEN # PRIMARY/MANDATORY USER, # BEGIN # PROCEED TO VALIDATE USER # NVFTPVR(PT); # PREPARE VALIDATE USER REQUEST # RETURN; # EXIT # END GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT # LLPWRD: # AWAITING PASSWORD PROMPT # PTIND = PTA$USRIND[PT]; IF (PTIND EQ MNDATRY$) OR ((PTIND EQ DEFAULT$) AND (PTA$VLTUSR[PT] EQ NULL$)) THEN # MANDATORY/DEFAULT USER SPECIFIED IN THE # BEGIN # LCF, BUT USER ENTERED IN ABBRE FORMAT # NVFTPVR(PT); # PREPARE VALIDATE USER REQUEST # RETURN; # EXIT # END GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT # LLAPPL: # AWAITING APPLICATION PROMPT # PTIND = PTA$APPIND[PT]; IF (PTIND EQ MNDATRY$) OR (PTIND EQ PRIMARY$) THEN # MANDATORY/PRIMARY APPLICATION # BEGIN IF PTIND EQ PRIMARY$ THEN # PRIMARY APPLICATION SPECIFIED # BEGIN # CHANGE TYPE TO DEFAULT SO # PTA$APPIND[PT] = DEFAULT$; # THAT SUBSEQUENT ATTEMPTS # END # WILL SOLICITE APPL PROMPT # PTA$STATE[PT] = PTACST"AWTVAA"; # SET TO AWAIT APPL ACCESS # RETURN; # EXIT # END GOTO ENDPRMT; # ISSUE APPROPRIATE PROMPT # LLPRID: ENDPRMT: # COMMON END PROCESSING # PTPRMT = PTA$PROMPT[PT]; ABHWORD[1] = 0; LNGTH = LMSG20$; # PRESET LENGTH OF PROMPT # IF PTPRMT NQ AWTPWD$ THEN # FAMILY/USER/APPL PROMPT # BEGIN IF PTPRMT EQ AWTFAM$ THEN # FAMILY PROMPT # BEGIN P = LOC(FAMBUF[0]); END ELSE BEGIN IF PTPRMT EQ AWTUSR$ THEN # USER PROMPT # BEGIN P = LOC(USRBUF[0]); END ELSE # APPLICATION PROMPT # BEGIN IF PTPRMT EQ AWTPID$ THEN BEGIN P = LOC(PIDBUF[0]); END ELSE BEGIN APP$TNAME = PTA$TN[PT]; P = LOC(APPBUF[0]); LNGTH = LMSG30$; END END END END ELSE # PASSWORD PROMPT # BEGIN P = LOC(PWRDBLK[0]); PTTC = PTA$TC[PT]; IF (PTTC EQ TCM33$ OR PTTC EQ TC2741$ OR PTTC EQ TCT4014$) THEN # PASSWORD BLANKING REQUIRED # BEGIN LNGTH = LMSG90$; END ABHCAN[1] = 1; # SET NON-ECHOED FLAG # END # * SEND PROMPT AND START NVF'S 2 MINUTE TIMER RUNNING. # WCB$WORD[1] = LNGTH / 10 + 2; ABHABT[1] = APPPTX$; ABHADR[1] = PTA$ACN[PT]; ABHACT[1] = CT6DISPLAY; ABHTLC[1] = LNGTH; IF PTPRMT GQ AWTPWD$ # IF PASSWORD HAS NOT BEEN RECIEVED, # THEN # KEEP CURSOR STAY ON THE SAME LINE IN # BEGIN # ORDER TO FACILITATE THE OVERMASKING # ABHNCP[1] = 1; # OF THE LINE WITH THE PASSWORD. # END SSTAQE(P,WCBUF[1],ABH[1],BPGEN[0]); # PROMPT TO QUEUE # TRB$ACN = PTA$ACN[PT]; # APPLICATION CONNECTION NUMBER # TRB$QNUM = LOC(P); # RETURN TIMR EXP MSG TO TAINPQ # SSCATR(TRBBUF[0]); # ISSUE TIMER REQUEST # PTA$CNUM[PT] = TRB$CNUM[0]; # SAVE CANCELLATION NUMBER # PTA$STATE[PT] = PTACST"AWTRSP"; # SET TERM STATE TO AWAIT RSP # END # END NVFTILP # TERM