Skip to content

Commit

Permalink
Merge pull request #108 from wuba/feature/version
Browse files Browse the repository at this point in the history
Feature/version
  • Loading branch information
bios000 authored Apr 21, 2023
2 parents 6baa447 + 32ac357 commit 793965d
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 8 deletions.
1 change: 1 addition & 0 deletions conf/version.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1.3.5
21 changes: 21 additions & 0 deletions modules/account/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from django.contrib import auth
from django.contrib.auth.models import update_last_login
from django.core.exceptions import ObjectDoesNotExist
from django.db import transaction
from django.shortcuts import get_object_or_404
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import mixins, status
from rest_framework.authtoken.models import Token
Expand Down Expand Up @@ -196,3 +198,22 @@ def first_login(self, request, *args, **kwargs):
if (self.request.user.last_login is None) or self.request.user.last_login == "2022-01-01 00:00:00":
result = FIRST_LOGIN.FALSE
return Response({"first_login": result}, status=status.HTTP_200_OK)

@action(methods=["GET"], detail=False, permission_classes=[AllowAny])
def api(self, request, *args, **kwargs):
"""
通过api获取对应token
"""
apikey = request.query_params.get('apikey', '')

try:
key = get_object_or_404(ApiKey, key=apikey)
if not key.user_id:
return Response({"code": 0, "message": "key对应的用户不存在"}, status=status.HTTP_400_BAD_REQUEST)
token, created = Token.objects.get_or_create(user_id=key.user_id)
return Response({"token": token.key}, status=status.HTTP_200_OK)
except ObjectDoesNotExist:
return Response({"code": 0, "message": "apikey错误"}, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
return Response({"code": 0, "message": f"发生未知错误: {str(e)}"},
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
24 changes: 24 additions & 0 deletions modules/config/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from rest_framework.viewsets import GenericViewSet
from modules.config import setting
from modules.config.setting import reload_config
from utils.helper import *


class ConfigViewSet(mixins.ListModelMixin, GenericViewSet):
Expand Down Expand Up @@ -51,6 +52,29 @@ def open_invite(self, requests, *args, **kwargs):
flag = int(setting.REGISTER_TYPE == REGISTER_TYPE.INVITE)
return Response({"open_invite": flag}, status=status.HTTP_200_OK)

@action(methods=["GET"], detail=False, permission_classes=[IsAdminUser, ])
def check_version(self, requests, *args, **kwargs):
"""
获取最新版本号
"""
flag = False
try:
latest_version = get_lastest_verson()
if not latest_version:
return Response({"code": 0, "message": f"检查更新错误,原因:{e}"}, status=status.HTTP_200_OK)
print(latest_version)
current_file_path = os.path.abspath(__file__)
print(current_file_path)
with open(f"{current_file_path}/../../../conf/version.ini", "r") as version_file:
current_version = version_file.read().strip()
print(f"Current project version: {current_version}")
# 比较两个版本
if latest_version != current_version:
flag = True
print("There is a new version available on GitHub.")
return Response({"renewable": flag}, status=status.HTTP_200_OK)
except Exception as e:
return Response({"code": 0, "message": f"检查更新错误,原因:{e}"}, status=status.HTTP_200_OK)

class DnsConfigViewSet(mixins.ListModelMixin, GenericViewSet):
queryset = DnsConfig.objects.all().order_by("id")
Expand Down
48 changes: 40 additions & 8 deletions modules/template/depend/listen/httpslog.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
os.environ['DJANGO_SETTINGS_MODULE'] = 'antenna.settings'

django.setup()

from modules.template.depend.base import BaseTemplate
from modules.message.constants import MESSAGE_TYPES
from modules.message.models import Message
from modules.task.models import TaskConfigItem
Expand Down Expand Up @@ -47,7 +47,7 @@ def render(self, request):
self.uri = urlparse(request.uri.decode('utf-8')).path.strip("/")
self.body = request.content.read().decode('utf-8')
request.content.seek(0)
# Extract request line
# Extract request line
request_line = f"{request.method.decode('utf-8')} {request.uri.decode('utf-8')} {request.clientproto.decode('utf-8')}"

# Extract headers
Expand Down Expand Up @@ -111,10 +111,42 @@ def connectionLost(self, reason):
self.request.finish()


root = MyResource()
class HttpsTemplate(BaseTemplate):
info = [{
"template_info": {
"name": "HTTPS", # 组件名
"title": "HTTPS协议监听组件", # 组件展示标题名
"author": "bios000", # 组件作者
"type": 1, # 组件类型,1是监听0是利用
"desc": "", # 组件介绍
"desc_url": "", # 组件使用说明链接
"choice_type": 0, # 组件选择类型0是单选,1是多选
"payload": "https://{key}.{domain}",
"file_name": "httpslog.py",
},
"item_info": [{
"name": "https_log",
"config": [],

}]}]

def __init__(self):
super().__init__()


def main():
try:
print(f"HTTPS 协议监听模块已开启 443 port starting listen ...", flush=True)
root = MyResource()

factory = Site(root)
reactor.listenSSL(443, factory,
ssl.DefaultOpenSSLContextFactory(f'{PROJECT_ROOT}/conf/server.key',
f'{PROJECT_ROOT}/conf/server.crt'))
reactor.run()
except Exception as e:
print(e)


factory = Site(root)
reactor.listenSSL(443, factory,
ssl.DefaultOpenSSLContextFactory(f'{PROJECT_ROOT}/conf/server.key',
f'{PROJECT_ROOT}/conf/server.crt'))
reactor.run()
if __name__ == '__main__':
main()
15 changes: 15 additions & 0 deletions utils/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,3 +253,18 @@ def get_param_message(request):
base64_message = params.get('message', '')
message = is_base64(base64_message) if base64_message else ''
return params, message


def get_lastest_verson():
"""
获取github 最新版本
"""
latest_version = ""
response = requests.get(f"https://api.github.com/repos/wuba/antenna/releases")
if response.status_code == 200:
releases = response.json()
latest_release = releases[0] # 按时间顺序排列,最新版本在第一个位置
latest_version = latest_release['tag_name']
print(f"Latest version on GitHub: {latest_version}")

return latest_version

0 comments on commit 793965d

Please sign in to comment.