description="WEB server for file transfer", formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument("-d", "--dir", type=Path, default=Path().cwd()) parser.add_argument("--port", type=int, default=60000) parser.add_argument("-u", "--user", type=str, default="nano") parser.add_argument("-p", "--passwd", type=str, default=generate_password(10)) args = parser.parse_args() path_view = PathView.as_view('path_view') path_view_auth = auth.login_required(path_view) app.add_url_rule('/', view_func=path_view_auth) app.add_url_rule('/<path:p>', view_func=path_view_auth) users.update({args.user: generate_password_hash(args.passwd)}) root = Path(args.dir).resolve().absolute() port = str(args.port) cert_file = temp_dir / "cert_file.crt" key_file = temp_dir / "key_file.key" create_self_signed_cert(cert_file, key_file) upnp_add_port_mapping(internal_port=args.port,
def optional_require(func): @wraps(func) def inside_optional_require(*args, **kwargs): require_login = getenv('BASIC-AUTH_ENABLED', False) if require_login: # mad props to @matt from pythondev.slack.com for () at the end of old_login_required(func)() return old_login_required(func)(*args, **kwargs) else: return func(*args, **kwargs) return inside_optional_require auth.login_required = optional_require @app.route('/heartbeat') def heartbeat(): return jsonify({'success': True}) @app.route('/') def home(): return jsonify({'success': True}) @app.route('/api/schedules') @auth.login_required def schedules():