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() 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)