From 2b3de4173afef5073ff6470cb2572d1bcb8912d0 Mon Sep 17 00:00:00 2001 From: kingmo888 <17401091+kingmo888@users.noreply.github.com> Date: Thu, 7 Mar 2024 09:46:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=9B=B4=E6=96=B0=EF=BC=8CV1?= =?UTF-8?q?.4.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++---- api/templates/show_work.html | 6 +++++- api/views_front.py | 27 ++++++++++++++++++--------- db/db.sqlite3 | Bin 155648 -> 155648 bytes rustdesk_server_api/settings.py | 2 ++ 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 659479d..e82750b 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

一个 python 实现的 Rustdesk API 接口,支持 WebUI 管理
- +
@@ -131,6 +131,7 @@ services: | `CSRF_TRUSTED_ORIGINS` | 可选,默认关闭验证;
如需开启填写你的访问地址 `http://yourdomain.com:21114`
**如需关闭验证请删除此变量,而不是留空** | 防跨域信任来源 | | `ID_SERVER` | 可选,默认为和API服务器同主机。
可自定义如 `yourdomain.com` | Web控制端使用的ID服务器 | | `DEBUG` | 可选,默认 `False` | 调试模式 | +| `ALLOW_REGISTRATION` | 可选,默认 `True` | 是否允许新用户注册 | ## 使用问题 @@ -171,16 +172,17 @@ services: > 将大神的web客户端集成进来,已集成。 [来源](https://www.52pojie.cn/thread-1708319-1-1.html) -- [ ] 对过期(不在线)设备的过滤,用以区分在线&离线设备 +- [ ] 对过期(不在线)设备的过滤,用以区分在线&离线设备(1.4.7) > 通过配置方式,对过期超过指定时间的设备清理或过滤。 -- [x] 首屏拆分为用户列表页与管理员列表页并增加分页。 +- [x] 首屏拆分为用户列表页与管理员列表页并增加分页(1.4.6)。 -- [x] 支持信息导出到为xlsx文件。 +- [x] 支持信息导出到为xlsx文件(1.4.6)。 > 支持管理员在【所有设备】页面导出所有设备信息。 +- [x] 通过配置项设定是否允许新用户注册(1.4.7)。 ## 其他相关工具 diff --git a/api/templates/show_work.html b/api/templates/show_work.html index d7dd16d..30c6412 100644 --- a/api/templates/show_work.html +++ b/api/templates/show_work.html @@ -24,6 +24,7 @@ 内存 注册时间 更新时间 + 状态 @@ -41,6 +42,7 @@ {{one.memory}} {{one.create_time}} {{one.update_time}} + {{one.status}} {% endfor %} @@ -86,8 +88,9 @@ 系统 CPU 内存 - 注册时间 + 注册日期 更新时间 + 状态 @@ -104,6 +107,7 @@ {{one.memory}} {{one.create_time}} {{one.update_time}} + {{one.status}} {% endfor %} diff --git a/api/views_front.py b/api/views_front.py index 93f0bb5..02f4f51 100644 --- a/api/views_front.py +++ b/api/views_front.py @@ -10,6 +10,7 @@ from api.models import RustDeskPeer, RustDesDevice, UserProfile, ShareLink from django.forms.models import model_to_dict from django.core.paginator import Paginator from django.http import HttpResponse +from django.conf import settings from itertools import chain from django.db.models.fields import DateTimeField, DateField, CharField, TextField @@ -77,7 +78,7 @@ def model_to_dict2(instance, fields=None, exclude=None, replace=None, default=No if type(f) == DateTimeField: # 字段类型是,DateTimeFiled 使用自己的方式操作 value = getattr(instance, key) - value = datetime.datetime.strftime(value, '%Y-%m-%d') + value = datetime.datetime.strftime(value, '%Y-%m-%d %H:%M') elif type(f) == DateField: # 字段类型是,DateFiled 使用自己的方式操作 value = getattr(instance, key) @@ -104,7 +105,6 @@ def model_to_dict2(instance, fields=None, exclude=None, replace=None, default=No return data - def index(request): print('sdf',sys.argv) if request.user and request.user.username!='AnonymousUser': @@ -114,14 +114,14 @@ def index(request): def user_action(request): action = request.GET.get('action', '') - if action == '': - return if action == 'login': return user_login(request) - if action == 'register': + elif action == 'register': return user_register(request) - if action == 'logout': + elif action == 'logout': return user_logout(request) + else: + return def user_login(request): if request.method == 'GET': @@ -143,11 +143,15 @@ def user_register(request): info = '' if request.method == 'GET': return render(request, 'reg.html') - + ALLOW_REGISTRATION = settings.ALLOW_REGISTRATION result = { 'code':0, 'msg':'' } + if not ALLOW_REGISTRATION: + result['msg'] = '当前未开放注册,请联系管理员!' + return JsonResponse(result) + username = request.POST.get('user', '') password1 = request.POST.get('pwd', '') @@ -191,14 +195,15 @@ def get_single_info(uid): #print(peers) devices = RustDesDevice.objects.filter(rid__in=rids) devices = {x.rid:x for x in devices} - + now = datetime.datetime.now() for rid, device in devices.items(): peers[rid]['create_time'] = device.create_time.strftime('%Y-%m-%d') - peers[rid]['update_time'] = device.update_time.strftime('%Y-%m-%d') + peers[rid]['update_time'] = device.update_time.strftime('%Y-%m-%d %H:%M') peers[rid]['version'] = device.version peers[rid]['memory'] = device.memory peers[rid]['cpu'] = device.cpu peers[rid]['os'] = device.os + peers[rid]['status'] = '在线' if (now-device.update_time).seconds <=120 else '离线' for rid in peers.keys(): peers[rid]['has_rhash'] = '是' if len(peers[rid]['rhash'])>1 else '否' @@ -209,11 +214,15 @@ def get_all_info(): devices = RustDesDevice.objects.all() peers = RustDeskPeer.objects.all() devices = {x.rid:model_to_dict2(x) for x in devices} + now = datetime.datetime.now() for peer in peers: user = UserProfile.objects.filter(Q(id=peer.uid)).first() device = devices.get(peer.rid, None) if device: devices[peer.rid]['rust_user'] = user.username + + for k, v in devices.items(): + devices[k]['status'] = '在线' if (now-datetime.datetime.strptime(v['update_time'], '%Y-%m-%d %H:%M')).seconds <=120 else '离线' return [v for k,v in devices.items()] @login_required(login_url='/api/user_action?action=login') diff --git a/db/db.sqlite3 b/db/db.sqlite3 index 7576dcb3384218712617bb04139cd641f5e839e4..f0b946c57ab1c6e6230e9c068a26ed165e5842c7 100644 GIT binary patch delta 461 zcmY+9ElvbM5Jq7W#3~?U&CYK~NKljd>*}rv0t5~VmLPF>Lb5?%5p@9+SS~=a4$T2D z8~_9tU=-71UtV5)wOY?t>-p>FayPbMy@WnsXAqRhzn2#|)u4*v=S82>01}M-si2*# zz@icTtJp6xNNC2`ZEtPt9h_XDS47*o)hC?xdL(sHVaNy#5e%xQ=WM*dOCcosSl z9=0s1Nq|X6#4oFu2MAJN_Lu4?46673<7YD0!?WG#RLY-`3-qx#*{#lT45@6BQE0&0?Q-#)aP&+Y8^59~H*^Z)<= delta 461 zcmY+AtxiNS5Jq7W#3~?U&EDUTkf54rXF8p^L4d$v!4f16Pe?WhEMi^&1(p{eS%>BU zFgySVUVtiYZ|hFJo_;f{^?bFSzkV)vxetCo7@~I~8d>doc~R0RUL@FgHI$U{Ny(n7 zuu~X9M2PlP?Np+fTI^Rp1o!B|ELPqzOTY?6LMGW%MdwA2p5N zf{Os`ZP82w7@0)uvPq>N_*@a}r8z1EkdWAZ8~l%wI!$>W(Na61qMn%TwjF!rY!XBt z?5(BJz?3Mc&APEz&gQ-4f$gm8%WQrRA=uqC3qhEpy?2LWR-6J0>wW*wZ$9_4<3B@P BXg>e| diff --git a/rustdesk_server_api/settings.py b/rustdesk_server_api/settings.py index 3cfaf95..42ed0fc 100644 --- a/rustdesk_server_api/settings.py +++ b/rustdesk_server_api/settings.py @@ -32,6 +32,8 @@ DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' ALLOWED_HOSTS = ["*"] AUTH_USER_MODEL = 'api.UserProfile' #AppName.自定义user +ALLOW_REGISTRATION = False # 是否允许注册, True为允许,False为不允许 + # Application definition INSTALLED_APPS = [