示例#1
0
async def nodes_create_view(request):
    user = request['user']
    nodes = await SS_Node.objects.execute(SS_Node.select())
    return render('admin_panel/node/create.html',
                  request,
                  user=user,
                  nodes=nodes)
示例#2
0
 async def get(self, request):
     user = request['user']
     nodes = await SS_Node.objects.execute(SS_Node.select())
     return render('admin_panel/node/index.html',
                   request,
                   user=user,
                   nodes=nodes)
示例#3
0
async def traffic_log(request):
    user = request['user']

    total = await User_Traffic_Log.objects.count(
        User_Traffic_Log.select().where(User_Traffic_Log.user == user))

    page, per_page, offset = Pagination.get_page_args(request)

    traffic_logs = await User_Traffic_Log.objects.execute(
        User_Traffic_Log.select().where(
            User_Traffic_Log.user == user).order_by(
                User_Traffic_Log.id.desc()).paginate(page, per_page))
    ids = [log.id for log in traffic_logs]

    logs_query = (
        User_Traffic_Log.select().where(User_Traffic_Log.id << ids).order_by(
            User_Traffic_Log.id.desc()))

    nodes_query = SS_Node.select()

    traffic_logs = await User_Traffic_Log.objects.prefetch(
        logs_query, nodes_query)

    Pagination._per_page = 20
    pagination = Pagination(request, total=total, record_name='traffic_logs')
    return render('user_panel/traffic_log.html',
                  request,
                  user=user,
                  traffic_logs=traffic_logs,
                  pagination=pagination)
示例#4
0
    async def get(self, request, user_id):
        user = request['user']

        user_detail = await User.objects.get(User.id == user_id)
        return render('admin_panel/user/edit.html',
                      request,
                      user=user,
                      user_detail=user_detail)
示例#5
0
async def nodes(request):
    user = request['user']
    nodes = await SS_Node.objects.execute(
        SS_Node
            .select()
            .where((SS_Node.node_group == user.node_group) | (SS_Node.node_group == 0))
    )
    return render('user_panel/nodes.html', request, user=user, nodes=nodes)
示例#6
0
 async def get(self, request):
     user = request['user']
     configs = {}
     for config in await SP_Config.objects.execute(SP_Config.select()):
         configs[config.key] = config.value
     return render('admin_panel/config.html',
                   request,
                   user=user,
                   configs=configs)
示例#7
0
async def index_view(request):
    user = request['user']
    analytics = {
        'total_user':
        await User.objects.count(User.select()),
        'checkin_user':
        await
        User.objects.count(User.select().where(User.last_check_in_time > 0)),
        'traffic_usage':
        tools.flow_auto_show(await User.objects.scalar(
            User.select(fn.Sum(User.u + User.d)))),
        'online_user':
        await User.objects.count(User.select().where(User.t > 3600)),
        'total_node':
        await SS_Node.objects.count(SS_Node.select()),
    }
    return render('admin_panel/index.html', request, user=user, **analytics)
示例#8
0
async def users_view(request):
    user = request['user']

    total = await User.objects.count(User.select())

    page, per_page, offset = Pagination.get_page_args(request)

    users = await User.objects.execute(User.select().order_by(
        User.id.asc()).paginate(page, per_page))

    Pagination._per_page = 20
    pagination = Pagination(request, total=total, record_name='users')
    return render('admin_panel/user/index.html',
                  request,
                  user=user,
                  users=users,
                  pagination=pagination)
示例#9
0
async def node_detail(request, node_id):
    user = request['user']
    node = await SS_Node.objects.get(SS_Node.id == node_id)

    if user.user_class < node.node_class or (user.node_group != node.node_group
                                             and node.node_group != 0):
        return json({})

    ss_info = {
        'server': node.server,
        'server_port': user.port,
        'password': user.passwd,
        'method': user.method,
        'protocol': user.protocol,
        'obfs': user.obfs
    }
    if user.obfs in ('http_post', 'http_simple'):
        ss_info['obfs_param'] = user.obfs_param

    if user.obfs in ('http_simple', 'http_post', 'random_head', 'tls1.2_ticket_auth') \
            or user.protocol in ('verify_deflate', 'auth_chain_a', 'auth_sha1_v4',
                                 'auth_aes128_md5', 'auth_aes128_sha1'):

        ss_url = '%s:%s:%s:%s:%s:%s/?obfsparam=%s&remarks=%s' % (
            ss_info['server'], ss_info['server_port'],
            user.protocol.replace('_compatible', ''), ss_info['method'],
            user.obfs.replace('_compatible', ''),
            tools.base64_url_encode(
                ss_info['password']), tools.base64_url_encode(
                    user.obfs_param), tools.base64_url_encode(node.name))
        ssqr_s_n = 'ssr://' + tools.base64_url_encode(ss_url)
        ss_url = '%s:%s:%s:%s@%s:%s/%s' % (
            user.obfs.replace('_compatible', ''),
            user.protocol.replace('_compatible', ''), ss_info['method'],
            ss_info['password'], ss_info['server'], ss_info['server_port'],
            tools.base64_encode(user.obfs_param))
        ssqr_s = "ss://" + tools.base64_encode(ss_url)
        ssqr = ssqr_s
    else:
        ss_url = '%s:%s:%s:%s:%s:%s/?obfsparam=%s&remarks=%s' % (
            ss_info['server'], ss_info['server_port'],
            user.protocol.replace('_compatible', ''), ss_info['method'],
            user.obfs.replace('_compatible', ''),
            tools.base64_url_encode(ss_info['password']),
            tools.base64_url_encode(user.obfs_param
                                    or ''), tools.base64_url_encode(node.name))
        ssqr_s_n = "ssr://" + tools.base64_encode(ss_url)
        ss_url = '%s:%s:%s:%s@%s:%s/%s' % (
            user.obfs.replace('_compatible', ''),
            user.protocol.replace('_compatible', ''), ss_info['method'],
            ss_info['password'], ss_info['server'], ss_info['server_port'],
            tools.base64_encode(user.obfs_param or ''))
        ssqr_s = "ss://" + tools.base64_encode(ss_url)
        ss_url = '%s:%s@%s:%s' % (ss_info['method'], ss_info['password'],
                                  ss_info['server'], ss_info['server_port'])
        ssqr = "ss://" + tools.base64_encode(ss_url)

    surge_base = '/'.join(
        request.url.split('/')[:3]) + '/downloads/ProxyBase.conf'
    surge_proxy = '#!PROXY-OVERRIDE:ProxyBase.conf\n'
    surge_proxy += '[Proxy]\n'
    surge_proxy += 'Proxy = custom,%s,%s,%s,%s,%s/downloads/SSEncrypt.module' % (
        ss_info['server'], ss_info['server_port'], ss_info['method'],
        ss_info['password'], '/'.join(request.url.split('/')[:3]))

    data = {
        'ss_info': ss_info,
        'ss_info_show': ujson.dumps(ss_info, indent=4),
        'ssqr': ssqr,
        'ssqr_s_n': ssqr_s_n,
        'ssqr_s': ssqr_s,
        'surge_base': surge_base,
        'surge_proxy': surge_proxy
    }
    return render('user_panel/node_detail.html', request, user=user, **data)
示例#10
0
async def index(request):
    user = request['user']
    return render('user_panel/index.html',
                  request,
                  user=user,
                  checkin_time=request.app.config.CHECKIN_TIME)
示例#11
0
async def invite(request):
    user = request['user']
    return render('user_panel/invite.html', request, user=user)
示例#12
0
async def edit(request):
    user = request['user']
    return render('user_panel/edit.html', request, user=user)
示例#13
0
async def token(request):
    return render('auth/token.html', request)
示例#14
0
async def profile(request):
    user = request['user']
    return render('user_panel/profile.html', request, user=user)
示例#15
0
async def nodes_edit_view(request, node_id):
    user = request['user']
    node = await SS_Node.objects.get(SS_Node.id == node_id)
    return render('admin_panel/node/edit.html', request, user=user, node=node)
示例#16
0
 async def get(self, request):
     return render('auth/register.html', request)
示例#17
0
async def reset(request):
    return render('auth/reset.html', request)
示例#18
0
 async def get(self, request):
     return render('auth/login.html', request)