fallout-term/fallout_login.py
2024-04-28 10:02:47 -05:00

86 lines
2.5 KiB
Python

import curses
from fallout_functions import slowWrite
from fallout_functions import INPUT_PAUSE
from fallout_functions import TYPE_DELAY
from fallout_functions import upperInput
from fallout_functions import HIDDEN_MASK
################## text strings ######################
HEADER_TEXT = "WELCOME TO ROBCO INDUSTRIES (TM) TERMLINK"
PASSWORD_PROMPT = "ENTER PASSWORD NOW"
PASSWORD_ERROR = "INCORRECT PASSWORD, PLEASE TRY AGAIN"
################## global "constants" ################
ENTRY = "LOGON "
################## functions #########################
def runLogin(scr, hardMode, username, password):
"""
Start the login process
hardMode - boolean indicating whether the user has to enter the username
and password or if they are entered automatically
username - the username to log in
password - the password to log in
Returns true if hardMode == false or if the user entered the correct string
"""
curses.use_default_colors()
scr.erase()
scr.move(0, 0)
curses.noecho()
scr.scrollok(True)
slowWrite(scr, HEADER_TEXT + "\n\n")
if hardMode:
# use must enter the correct text to proceed
entry = ""
while entry.upper() != ENTRY.upper() + username.upper():
slowWrite(scr, "> ")
entry = upperInput(scr)
else:
# input is entered for them
slowWrite(scr, "> ")
curses.napms(INPUT_PAUSE)
slowWrite(scr, ENTRY + username.upper() + "\n", TYPE_DELAY, True)
slowWrite(scr, "\n" + PASSWORD_PROMPT + "\n\n")
if hardMode:
# use must enter the correct text to proceed
entry = ""
while entry.upper() != password.upper():
if entry:
slowWrite(scr, PASSWORD_ERROR + "\n\n")
slowWrite(scr, "> ")
entry = upperInput(scr, True)
else:
# input is entered for them
slowWrite(scr, "> ")
curses.napms(INPUT_PAUSE)
password_stars = HIDDEN_MASK * len(password)
slowWrite(scr, password_stars + "\n", TYPE_DELAY, True)
curses.napms(500)
def beginLogin(hardMode, username, password):
"""
Initialize curses and start the login process
hardMode - boolean indicating whether the user has to enter the username
and password or if they are entered automatically
username - the username to log in
password - the password to log in
Returns true if hardMode == false or if the user entered the correct string
"""
res = curses.wrapper(runLogin, hardMode, username, password)
return res