From 175e1165db744f93b531bccb0a42cece7c68b561 Mon Sep 17 00:00:00 2001 From: kingmo888 <17401091+kingmo888@users.noreply.github.com> Date: Mon, 9 Sep 2024 23:56:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=8F=8D=E4=BB=A3=E6=97=B6IP?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E7=A1=AE=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/views_api.py | 13 +++++++++++-- api/views_front.py | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/api/views_api.py b/api/views_api.py index 5ede9bc..b11efcd 100644 --- a/api/views_api.py +++ b/api/views_api.py @@ -14,6 +14,15 @@ from .views_front import * from django.utils.translation import gettext as _ +def get_client_ip(request): + x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') + if x_forwarded_for: + ip = x_forwarded_for.split(',')[0] + else: + ip = request.META.get('REMOTE_ADDR') + return ip + + def login(request): result = {} if request.method == 'GET': @@ -226,7 +235,7 @@ def sysinfo(request): if request.method == 'GET': result['error'] = _('错误的提交方式!') return JsonResponse(result) - client_ip = request.META.get('REMOTE_ADDR') + client_ip = get_client_ip(request) postdata = json.loads(request.body) device = RustDesDevice.objects.filter(Q(rid=postdata['id']) & Q(uuid=postdata['uuid'])).first() if not device: @@ -255,7 +264,7 @@ def heartbeat(request): postdata = json.loads(request.body) device = RustDesDevice.objects.filter(Q(rid=postdata['id']) & Q(uuid=postdata['uuid'])).first() if device: - client_ip = request.META.get('REMOTE_ADDR') + client_ip = get_client_ip(request) device.ip_address = client_ip device.save() # token保活 diff --git a/api/views_front.py b/api/views_front.py index fa43427..1a0b712 100644 --- a/api/views_front.py +++ b/api/views_front.py @@ -295,7 +295,7 @@ def share(request): sharelinks = ShareLink.objects.filter(Q(uid=request.user.id) & Q(is_used=False) & Q(is_expired=False)) # 省资源:处理已过期请求,不主动定时任务轮询请求,在任意地方请求时,检查是否过期,过期则保存。 - now = datetime.datetime.now() + # now = datetime.datetime.now() for sl in sharelinks: check_sharelink_expired(sl) sharelinks = ShareLink.objects.filter(Q(uid=request.user.id) & Q(is_used=False) & Q(is_expired=False)) @@ -327,7 +327,7 @@ def share(request): # 自己的peers若重叠,需要跳过 peers_self_ids = [x.rid for x in RustDeskPeer.objects.filter(Q(uid=request.user.id))] peers_share = RustDeskPeer.objects.filter(Q(rid__in=peers) & Q(uid=sharelink.uid)) - peers_share_ids = [x.rid for x in peers_share] + # peers_share_ids = [x.rid for x in peers_share] for peer in peers_share: if peer.rid in peers_self_ids: