def run(scope, action, argv): if scope == 'user': user.cache_all() if action == 'list': for un in user._USER_CACHE.keys(): print(un) elif action == 'add': username = argv[0] if len(argv) > 0 else raw_input('Username: '******'Shadowsocks Key: ') u = user.User(username, password) u.sskey = sskey u.write() elif action == 'del': for un in argv: os.remove(user.user_filename(un)) elif action == 'passwd': username = argv[0] if len(argv) > 0 else raw_input('Username: '******'sskey': username = argv[0] if len(argv) > 0 else raw_input('Username: '******'Shadowsocks Key: ') u = user.open(username) u.sskey = sskey u.write() elif scope == 'sys': if action == 'update': import ssmgr ssmgr.update_and_restart()
def passwd(): password = get_salted_password() u = current_user if (u.id == 0): u = user.open(request.forms.get('username')) u.salted_password = password u.write() return redirect('/')
def func_wrapper(*args, **kwargs): global current_user username = request.get_cookie('ssl_un') password = request.get_cookie('ssl_pw') logined = username and password if logined: current_user = user.open(username) logined = current_user and current_user.salted_password == password if not logined: response.set_cookie('ssl_un', '', expires=0) response.set_cookie('ssl_pw', '', expires=0) return redirect('/login') return func(*args, **kwargs)
def suspend(suspend, username): if (current_user.id != 0): return redirect('/') u = user.open(username) u.suspended = suspend != "0" u.write() msg = 'User %s status changed. Please click [Update SSConfig].' % username return template( 'home', config=config, user=current_user, message=msg, users=(user._USER_CACHE if current_user.id == 0 else {}) )
def do_login(): username = request.forms.get('username') password = get_salted_password() current_user = user.open(username) logined = current_user and current_user.salted_password == password if logined: response.set_cookie('ssl_un', username) response.set_cookie('ssl_pw', password) return redirect('/') return template('login', username=username, message='User not found.' if not current_user else 'Password is incorrect.', salt=config.USER_SALT )
def sskey(): sskey = request.forms.get('sskey') u = current_user if (u.id == 0): u = user.open(request.forms.get('username')) u.sskey = sskey u.write() import cron; cd = cron.start() if cd <= 0.5: msg = "Your Shadowsocks key is changed!" else: msg = "The Shadowsocks key will be changed in %.2f sec" % cd return template( 'home', config=config, user=current_user, message=msg, users=(user._USER_CACHE if current_user.id == 0 else {}) )