mirror of
https://github.com/kingmo888/rustdesk-api-server.git
synced 2026-02-21 10:27:23 +08:00
功能更新,V1.4.7
This commit is contained in:
parent
aa736e13b1
commit
2b3de4173a
10
README.md
10
README.md
@ -7,7 +7,7 @@
|
||||
<p align="center">
|
||||
<i>一个 python 实现的 Rustdesk API 接口,支持 WebUI 管理</i>
|
||||
<br/>
|
||||
<img src ="https://img.shields.io/badge/Version-1.4.6-blueviolet.svg"/>
|
||||
<img src ="https://img.shields.io/badge/Version-1.4.7-blueviolet.svg"/>
|
||||
<img src ="https://img.shields.io/badge/Python-3.7|3.8|3.9|3.10|3.11-blue.svg" />
|
||||
<img src ="https://img.shields.io/badge/Django-3.2+|4.x-yelow.svg" />
|
||||
<br/>
|
||||
@ -131,6 +131,7 @@ services:
|
||||
| `CSRF_TRUSTED_ORIGINS` | 可选,默认关闭验证;<br>如需开启填写你的访问地址 `http://yourdomain.com:21114` <br>**如需关闭验证请删除此变量,而不是留空** | 防跨域信任来源 |
|
||||
| `ID_SERVER` | 可选,默认为和API服务器同主机。<br>可自定义如 `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)。
|
||||
|
||||
## 其他相关工具
|
||||
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
<th>内存</th>
|
||||
<th>注册时间</th>
|
||||
<th>更新时间</th>
|
||||
<th>状态</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -41,6 +42,7 @@
|
||||
<td>{{one.memory}}</td>
|
||||
<td>{{one.create_time}}</td>
|
||||
<td>{{one.update_time}}</td>
|
||||
<td>{{one.status}} </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
@ -86,8 +88,9 @@
|
||||
<th>系统</th>
|
||||
<th>CPU</th>
|
||||
<th>内存</th>
|
||||
<th>注册时间</th>
|
||||
<th>注册日期</th>
|
||||
<th>更新时间</th>
|
||||
<th>状态</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -104,6 +107,7 @@
|
||||
<td>{{one.memory}} </td>
|
||||
<td>{{one.create_time}} </td>
|
||||
<td>{{one.update_time}} </td>
|
||||
<td>{{one.status}} </td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
@ -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')
|
||||
|
||||
BIN
db/db.sqlite3
BIN
db/db.sqlite3
Binary file not shown.
@ -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 = [
|
||||
|
||||
Loading…
Reference in New Issue
Block a user