def settings(): current_settings = SETTINGS_HANDLER.get_settings() password_field = SETTINGS_HANDLER.get_setting('password') password_is_set = password_field and len(password_field) > 7 ssh_key_ids = SSH_KEY_HANDLER.get_key_ids() hostname = request.environ.get('HTTP_HOST').split( ":")[0] or request.environ.get('SERVER_NAME') username = pwd.getpwuid(os.getuid())[0] return template('settings.tpl', settings=current_settings, password_is_set=password_is_set, ssh_key_ids=ssh_key_ids, hostname=hostname, username=username)
def authenticate_route_handler(): AUTHENTICATOR.kill() password = request.forms.get('password') session = request.environ.get('beaker.session') keep_password = SETTINGS_HANDLER.get_setting('keep_password') or False stored_hash = SETTINGS_HANDLER.get_setting('password') if AUTHENTICATOR.matches_password( password.upper()) or keep_password and bcrypt.checkpw( password.encode('utf-8'), stored_hash.encode('utf-8')): session['User-Agent'] = request.headers.get('User-Agent') session['Logged-In'] = True session.save() redirect('/') else: if session.get('Logged-In', True): session['Logged-In'] = False session.save() if not keep_password: AUTHENTICATOR.reset_password() AUTHENTICATOR.launch() return template('login', keep_password=keep_password, failed=True)
def settings_update(): SETTINGS_HANDLER.set_setting( "enable_ftp_server", sanitize(request.forms.get('enable_ftp_server')) == 'on') SETTINGS_HANDLER.set_setting("ftp_username", sanitize(request.forms.get('ftp_username'))) SETTINGS_HANDLER.set_setting("ftp_password", sanitize(request.forms.get('ftp_password'))) # port number for FTP server ftp_port = int(sanitize(request.forms.get('ftp_port'))) if ftp_port and 1024 < ftp_port < 65536 and ftp_port != 8844: SETTINGS_HANDLER.set_setting("ftp_port", ftp_port) FTP_SERVER.reload() redirect('/settings')
def forgot_password(): SETTINGS_HANDLER.set_setting('keep_password', False) return redirect('/login')
def login(): keep_password = SETTINGS_HANDLER.get_setting('keep_password') if not keep_password: AUTHENTICATOR.reset_password() AUTHENTICATOR.launch() return template('login', keep_password=keep_password, failed=False)
def settings_update(): SETTINGS_HANDLER.set_setting( "enable_ftp_server", sanitize(request.forms.get('enable_ftp_server')) == 'on') # Make sure the login password is long enough login_password = sanitize(request.forms.get('login_password')) if len(login_password) > 7: password = bcrypt.hashpw(login_password.encode('utf-8'), bcrypt.gensalt()) SETTINGS_HANDLER.set_setting("password", password.decode('utf-8')) # Only allow enabling keep password if a password is set keep_password = sanitize(request.forms.get('generate_password')) != 'on' if keep_password and SETTINGS_HANDLER.get_setting( 'password') or not keep_password: SETTINGS_HANDLER.set_setting("keep_password", keep_password) # Make sure the FTP username is not set to empty ftp_username = sanitize(request.forms.get('ftp_username')) if ftp_username: SETTINGS_HANDLER.set_setting("ftp_username", ftp_username) # Make sure the FTP password is long enough ftp_password = sanitize(request.forms.get('ftp_password')) if len(ftp_password) > 7: SETTINGS_HANDLER.set_setting("ftp_password", ftp_password) # port number for FTP server ftp_port = int(sanitize(request.forms.get('ftp_port'))) if ftp_port and 1024 < ftp_port < 65536 and ftp_port != 8844: SETTINGS_HANDLER.set_setting("ftp_port", ftp_port) # Delete SSH keys if asked ssh_key_ids = SSH_KEY_HANDLER.get_key_ids() for key_id in ssh_key_ids: if sanitize(request.forms.get(html.escape(key_id)) == 'on'): SSH_KEY_HANDLER.remove_key(key_id) # After we are done deleting the selected ssh keys, add a new key if specified # The add_key function makes sanitization not needed SSH_KEY_HANDLER.add_key(request.forms.get('ssh_key')) FTP_SERVER.reload() redirect('/settings')
def settings(): current_settings = SETTINGS_HANDLER.get_settings() return template('settings.tpl', settings=current_settings)