mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-07-06 17:14:07 +00:00
Added user dashboard
This commit is contained in:
@ -17,11 +17,12 @@ Including another URLconf
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from django.views.generic import RedirectView
|
from django.views.generic import RedirectView
|
||||||
from vpn.views import shadowsocks
|
from vpn.views import shadowsocks, userFrontend
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path('ss/<path:link>', shadowsocks, name='shadowsocks'),
|
path('ss/<path:link>', shadowsocks, name='shadowsocks'),
|
||||||
path('dynamic/<path:link>', shadowsocks, name='shadowsocks'),
|
path('dynamic/<path:link>', shadowsocks, name='shadowsocks'),
|
||||||
|
path('stat/<path:user_hash>', userFrontend, name='userFrontend'),
|
||||||
path('', RedirectView.as_view(url='/admin/', permanent=False)),
|
path('', RedirectView.as_view(url='/admin/', permanent=False)),
|
||||||
]
|
]
|
||||||
|
@ -13,4 +13,5 @@ setuptools==75.2.0
|
|||||||
shortuuid==1.0.13
|
shortuuid==1.0.13
|
||||||
django-celery-results==2.5.1
|
django-celery-results==2.5.1
|
||||||
PyYaml==6.0.2
|
PyYaml==6.0.2
|
||||||
|
Markdown==3.7
|
||||||
git+https://github.com/celery/django-celery-beat#egg=django-celery-beat
|
git+https://github.com/celery/django-celery-beat#egg=django-celery-beat
|
||||||
|
19
vpn/views.py
19
vpn/views.py
@ -2,6 +2,23 @@ import yaml
|
|||||||
import json
|
import json
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.http import JsonResponse, HttpResponse, Http404
|
from django.http import JsonResponse, HttpResponse, Http404
|
||||||
|
from mysite.settings import EXTERNAL_ADDRESS
|
||||||
|
|
||||||
|
def userFrontend(request, user_hash):
|
||||||
|
from .models import User, ACLLink
|
||||||
|
try:
|
||||||
|
user = get_object_or_404(User, hash=user_hash)
|
||||||
|
except Http404:
|
||||||
|
return JsonResponse({"error": "Not allowed"}, status=403)
|
||||||
|
|
||||||
|
acl_links = {}
|
||||||
|
for link in ACLLink.objects.filter(acl__user=user).select_related('acl__server'):
|
||||||
|
server_name = link.acl.server.name
|
||||||
|
if server_name not in acl_links:
|
||||||
|
acl_links[server_name] = []
|
||||||
|
acl_links[server_name].append({"link": f"{EXTERNAL_ADDRESS}/ss/{link.link}#{link.acl.server.name}", "comment": link.comment})
|
||||||
|
|
||||||
|
return JsonResponse(acl_links)
|
||||||
|
|
||||||
def shadowsocks(request, link):
|
def shadowsocks(request, link):
|
||||||
from .models import ACLLink, AccessLog
|
from .models import ACLLink, AccessLog
|
||||||
@ -22,7 +39,7 @@ def shadowsocks(request, link):
|
|||||||
|
|
||||||
if request.GET.get('mode') == 'json':
|
if request.GET.get('mode') == 'json':
|
||||||
config = {
|
config = {
|
||||||
"info": "Managed by OutFleet_v2 [github.com/house-of-vanity/OutFleet/]",
|
"info": "Managed by OutFleet_2 [github.com/house-of-vanity/OutFleet/]",
|
||||||
"password": server_user.password,
|
"password": server_user.password,
|
||||||
"method": server_user.method,
|
"method": server_user.method,
|
||||||
"prefix": "\u0005\u00dc_\u00e0\u0001",
|
"prefix": "\u0005\u00dc_\u00e0\u0001",
|
||||||
|
Reference in New Issue
Block a user