hiddifypanel 8.0.0.dev27__py3-none-any.whl → 8.0.0.dev28__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hiddifypanel/VERSION +1 -1
- hiddifypanel/VERSION.py +1 -1
- hiddifypanel/models/report.py +41 -0
- hiddifypanel/panel/clean_ip.py +29 -5
- hiddifypanel/panel/user/user.py +45 -3
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/en/LC_MESSAGES/messages.po +4 -4
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/fa/LC_MESSAGES/messages.po +4 -4
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/pt/LC_MESSAGES/messages.po +4 -4
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/zh/LC_MESSAGES/messages.po +4 -4
- {hiddifypanel-8.0.0.dev27.dist-info → hiddifypanel-8.0.0.dev28.dist-info}/METADATA +1 -1
- {hiddifypanel-8.0.0.dev27.dist-info → hiddifypanel-8.0.0.dev28.dist-info}/RECORD +19 -18
- {hiddifypanel-8.0.0.dev27.dist-info → hiddifypanel-8.0.0.dev28.dist-info}/LICENSE.md +0 -0
- {hiddifypanel-8.0.0.dev27.dist-info → hiddifypanel-8.0.0.dev28.dist-info}/WHEEL +0 -0
- {hiddifypanel-8.0.0.dev27.dist-info → hiddifypanel-8.0.0.dev28.dist-info}/entry_points.txt +0 -0
- {hiddifypanel-8.0.0.dev27.dist-info → hiddifypanel-8.0.0.dev28.dist-info}/top_level.txt +0 -0
hiddifypanel/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
8.0.0.
|
1
|
+
8.0.0.dev28
|
hiddifypanel/VERSION.py
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
from sqlalchemy_serializer import SerializerMixin
|
2
|
+
from flask import Flask, flash, request
|
3
|
+
from flask_sqlalchemy import SQLAlchemy
|
4
|
+
from flask_admin import Admin
|
5
|
+
from flask_admin.contrib.sqla import ModelView
|
6
|
+
from wtforms import SelectMultipleField
|
7
|
+
from urllib.parse import urlparse
|
8
|
+
from .config_enum import ConfigEnum, ConfigCategory
|
9
|
+
from .config import hconfig
|
10
|
+
|
11
|
+
from sqlalchemy.orm import backref
|
12
|
+
|
13
|
+
from flask import Markup
|
14
|
+
from dateutil import relativedelta
|
15
|
+
from hiddifypanel.panel.database import db
|
16
|
+
|
17
|
+
import enum
|
18
|
+
import datetime
|
19
|
+
import uuid as uuid_mod
|
20
|
+
from enum import auto
|
21
|
+
from strenum import StrEnum
|
22
|
+
|
23
|
+
|
24
|
+
class Report(db.Model, SerializerMixin):
|
25
|
+
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
26
|
+
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), default=0, nullable=False)
|
27
|
+
asn_id = db.Column(db.String(200), nullable=False, unique=False)
|
28
|
+
city = db.Column(db.String(200))
|
29
|
+
country = db.Column(db.String(200))
|
30
|
+
latitude = Column(Float,)
|
31
|
+
longitude = Column(Float, )
|
32
|
+
accuracy_radius = Column(Float, )
|
33
|
+
|
34
|
+
date = db.Column(db.DateTime, nullable=False, default=datetime.datetime.min)
|
35
|
+
details = db.relationship('ReportDetail', cascade="all,delete", backref='report', lazy='dynamic',)
|
36
|
+
|
37
|
+
|
38
|
+
class ReportDetail(db.Model, SerializerMixin):
|
39
|
+
report_id = db.Column(db.Integer, db.ForeignKey('report.id'), primary_key=True, )
|
40
|
+
proxy_id = db.Column(db.Integer, db.ForeignKey('proxy.id'), primary_key=True, )
|
41
|
+
ping = db.Column(db.Integer, default=-1)
|
hiddifypanel/panel/clean_ip.py
CHANGED
@@ -34,6 +34,7 @@ apt.ircf.space APT
|
|
34
34
|
try:
|
35
35
|
ipasn = maxminddb.open_database('GeoLite2-ASN.mmdb') if os.path.exists('GeoLite2-ASN.mmdb') else {}
|
36
36
|
ipcountry = maxminddb.open_database('GeoLite2-Country.mmdb') if os.path.exists('GeoLite2-Country.mmdb') else {}
|
37
|
+
ipcity = maxminddb.open_database('GeoLite2-City.mmdb') if os.path.exists('GeoLite2-City.mmdb') else {}
|
37
38
|
except Exception as e:
|
38
39
|
print("Error can not load maxminddb", file=sys.stderr)
|
39
40
|
ipasn = {}
|
@@ -63,14 +64,37 @@ asn_map = {
|
|
63
64
|
|
64
65
|
def get_asn_short_name(user_ip=None):
|
65
66
|
user_ip = user_ip or get_real_user_ip()
|
66
|
-
|
67
|
-
|
68
|
-
|
67
|
+
try:
|
68
|
+
asn_id = get_asn_id(user_ip)
|
69
|
+
return asn_map.get(asn_id, "unknown")
|
70
|
+
except:
|
71
|
+
return "unknown"
|
69
72
|
|
70
73
|
|
71
|
-
def
|
74
|
+
def get_asn_id(user_ip=None):
|
72
75
|
user_ip = user_ip or get_real_user_ip()
|
73
|
-
|
76
|
+
try:
|
77
|
+
asnres = ipasn.get(user_ip)
|
78
|
+
return asnres['autonomous_system_number']
|
79
|
+
except:
|
80
|
+
return "unknown"
|
81
|
+
|
82
|
+
|
83
|
+
def get_country(user_ip=None):
|
84
|
+
try:
|
85
|
+
user_ip = user_ip or get_real_user_ip()
|
86
|
+
return (ipcountry.get(user_ip) or {}).get('country', {}).get('iso_code', 'unknown')
|
87
|
+
except:
|
88
|
+
return 'unknown'
|
89
|
+
|
90
|
+
|
91
|
+
def get_city(user_ip=None):
|
92
|
+
try:
|
93
|
+
user_ip = user_ip or get_real_user_ip()
|
94
|
+
res = ipcity.get(user_ip)
|
95
|
+
return {'city': res.get('city').get('name'), 'latitude': res.get('latitude'), 'longitude': res.get('longitude'), 'accuracy_radius': res.get('accuracy_radius')}
|
96
|
+
except:
|
97
|
+
return 'unknown'
|
74
98
|
|
75
99
|
|
76
100
|
def get_real_user_ip_debug(user_ip=None):
|
hiddifypanel/panel/user/user.py
CHANGED
@@ -35,6 +35,13 @@ class UserView(FlaskView):
|
|
35
35
|
# user_agent = user_agents.parse(request.user_agent.string)
|
36
36
|
|
37
37
|
# return render_template('home/multi.html',**c,ua=user_agent)
|
38
|
+
@route('/auto')
|
39
|
+
def auto_sub(self):
|
40
|
+
if re.match('^([Cc]lash-verge|[Cc]lash-?[Mm]eta)', request.user_agent.string):
|
41
|
+
return self.clash_config(meta_or_normal="meta")
|
42
|
+
elif re.match('^([Cc]lash|[Ss]tash)', user_agent):
|
43
|
+
return self.clash_config(meta_or_normal="normal")
|
44
|
+
return self.all_configs(base64=True)
|
38
45
|
|
39
46
|
@route('/new/')
|
40
47
|
@route('/new')
|
@@ -59,6 +66,40 @@ class UserView(FlaskView):
|
|
59
66
|
|
60
67
|
return resp
|
61
68
|
|
69
|
+
@route('/report', methods=["POST"])
|
70
|
+
def report(self):
|
71
|
+
data = request.get_json()
|
72
|
+
user_ip = clean_ip.get_real_user_ip()
|
73
|
+
report = Report()
|
74
|
+
report.asn_id = clean_ip.get_asn_id(user_ip)
|
75
|
+
report.country = clean_ip.get_country(user_ip)
|
76
|
+
|
77
|
+
city_info = clean_ip.get_city(user_ip)
|
78
|
+
report.city = city_info['name']
|
79
|
+
report.latitude = city_info['latitude']
|
80
|
+
report.longitude = city_info['longitude']
|
81
|
+
report.accuracy_radius = city_info['accuracy_radius']
|
82
|
+
|
83
|
+
report.date = datetime.datetime.now()
|
84
|
+
sub_update_time = data['sub_update_time']
|
85
|
+
sub_url = data['sub_url']
|
86
|
+
|
87
|
+
db.session.add(report)
|
88
|
+
db.session.commit()
|
89
|
+
proxy_map = {p.name: p.id for p in Proxy.query.all()}
|
90
|
+
|
91
|
+
for name, ping in data['pings']:
|
92
|
+
detail = ReportDetail()
|
93
|
+
detail.report_id = report.id
|
94
|
+
detail.proxy_id = proxy_map.get(name, -1)
|
95
|
+
del proxy_map[name]
|
96
|
+
if detail.proxy_id < 0:
|
97
|
+
print("Error. Proxy not found!")
|
98
|
+
continue
|
99
|
+
detail.ping = ping
|
100
|
+
db.session.add(detail)
|
101
|
+
db.session.commit()
|
102
|
+
|
62
103
|
@route('/clash/<typ>.yml', methods=["GET", "HEAD"])
|
63
104
|
@route('/clash/<meta_or_normal>/<typ>.yml', methods=["GET", "HEAD"])
|
64
105
|
def clash_config(self, meta_or_normal="normal", typ="all.yml"):
|
@@ -82,13 +123,14 @@ class UserView(FlaskView):
|
|
82
123
|
if request.method == 'HEAD':
|
83
124
|
resp = ""
|
84
125
|
else:
|
85
|
-
resp = render_template('singbox_config.json', **c, host_keys=hiddify.get_hostkeys(True),
|
126
|
+
resp = render_template('singbox_config.json', **c, host_keys=hiddify.get_hostkeys(True),
|
127
|
+
ssh_client_version=hiddify.get_ssh_client_version(user), ssh_ip=hiddify.get_ip(4), base64=False)
|
86
128
|
return add_headers(resp, c)
|
87
129
|
|
88
130
|
@route('/all.txt', methods=["GET", "HEAD"])
|
89
|
-
def all_configs(self):
|
131
|
+
def all_configs(self, base64=False):
|
90
132
|
mode = "new" # request.args.get("mode")
|
91
|
-
base64 = request.args.get("base64", "").lower() == "true"
|
133
|
+
base64 = base64 or request.args.get("base64", "").lower() == "true"
|
92
134
|
c = get_common_data(g.user_uuid, mode)
|
93
135
|
# response.content_type = 'text/plain';
|
94
136
|
if request.method == 'HEAD':
|
Binary file
|
@@ -3,8 +3,8 @@ msgid ""
|
|
3
3
|
msgstr ""
|
4
4
|
"Project-Id-Version: HiddifyPanel\n"
|
5
5
|
"Report-Msgid-Bugs-To: \n"
|
6
|
-
"POT-Creation-Date: 2023-08-10
|
7
|
-
"PO-Revision-Date: 2023-08-
|
6
|
+
"POT-Creation-Date: 2023-08-10 20:37+0200\n"
|
7
|
+
"PO-Revision-Date: 2023-08-10 03:09-0500\n"
|
8
8
|
"Last-Translator: hidden u\n"
|
9
9
|
"Language-Team: English (USA)\n"
|
10
10
|
"Language: en_US\n"
|
@@ -15,12 +15,12 @@ msgstr ""
|
|
15
15
|
"Generated-By: Babel 2.12.1\n"
|
16
16
|
|
17
17
|
# | msgid "This Domain does not exist in the Panel !"
|
18
|
-
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:
|
18
|
+
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
|
19
19
|
msgid "This domain does not exist in the panel!"
|
20
20
|
msgstr "This Domain does not exist in the Panel !"
|
21
21
|
|
22
22
|
# | msgid "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
|
23
|
-
#: hiddifypanel/panel/clean_ip.py:
|
23
|
+
#: hiddifypanel/panel/clean_ip.py:127
|
24
24
|
msgid "Error! auto cdn ip can not be find, please contact admin."
|
25
25
|
msgstr "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
|
26
26
|
|
Binary file
|
@@ -3,8 +3,8 @@ msgid ""
|
|
3
3
|
msgstr ""
|
4
4
|
"Project-Id-Version: HiddifyPanel\n"
|
5
5
|
"Report-Msgid-Bugs-To: \n"
|
6
|
-
"POT-Creation-Date: 2023-08-10
|
7
|
-
"PO-Revision-Date: 2023-08-
|
6
|
+
"POT-Creation-Date: 2023-08-10 20:37+0200\n"
|
7
|
+
"PO-Revision-Date: 2023-08-10 03:09-0500\n"
|
8
8
|
"Last-Translator: hidden u\n"
|
9
9
|
"Language: fa\n"
|
10
10
|
"Language-Team: Persian\n"
|
@@ -15,13 +15,13 @@ msgstr ""
|
|
15
15
|
"Generated-By: Babel 2.12.1\n"
|
16
16
|
|
17
17
|
# | msgid "This Domain does not exist in the Panel !"
|
18
|
-
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:
|
18
|
+
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
|
19
19
|
msgid "This domain does not exist in the panel!"
|
20
20
|
msgstr "این دامنه در پنل وجود ندارد!"
|
21
21
|
|
22
22
|
# | msgid ""
|
23
23
|
# | "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
|
24
|
-
#: hiddifypanel/panel/clean_ip.py:
|
24
|
+
#: hiddifypanel/panel/clean_ip.py:127
|
25
25
|
msgid "Error! auto cdn ip can not be find, please contact admin."
|
26
26
|
msgstr "خطا! آی پی اتوماتیک نتوانست پیدا شود. لطفا با مدیر تماس بگیرید"
|
27
27
|
|
Binary file
|
@@ -3,8 +3,8 @@ msgid ""
|
|
3
3
|
msgstr ""
|
4
4
|
"Project-Id-Version: HiddifyPT\n"
|
5
5
|
"Report-Msgid-Bugs-To: \n"
|
6
|
-
"POT-Creation-Date: 2023-08-10
|
7
|
-
"PO-Revision-Date: 2023-08-
|
6
|
+
"POT-Creation-Date: 2023-08-10 20:37+0200\n"
|
7
|
+
"PO-Revision-Date: 2023-08-10 03:09-0500\n"
|
8
8
|
"Last-Translator: lymanrudni\n"
|
9
9
|
"Language: pt\n"
|
10
10
|
"Language-Team: Portuguese\n"
|
@@ -15,13 +15,13 @@ msgstr ""
|
|
15
15
|
"Generated-By: Babel 2.12.1\n"
|
16
16
|
|
17
17
|
# | msgid "This Domain does not exist in the Panel !"
|
18
|
-
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:
|
18
|
+
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
|
19
19
|
msgid "This domain does not exist in the panel!"
|
20
20
|
msgstr "Este Domínio não existe no Painel!"
|
21
21
|
|
22
22
|
# | msgid ""
|
23
23
|
# | "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
|
24
|
-
#: hiddifypanel/panel/clean_ip.py:
|
24
|
+
#: hiddifypanel/panel/clean_ip.py:127
|
25
25
|
#, fuzzy
|
26
26
|
msgid "Error! auto cdn ip can not be find, please contact admin."
|
27
27
|
msgstr ""
|
Binary file
|
@@ -3,8 +3,8 @@ msgid ""
|
|
3
3
|
msgstr ""
|
4
4
|
"Project-Id-Version: HiddifyPanel\n"
|
5
5
|
"Report-Msgid-Bugs-To: \n"
|
6
|
-
"POT-Creation-Date: 2023-08-10
|
7
|
-
"PO-Revision-Date: 2023-08-
|
6
|
+
"POT-Creation-Date: 2023-08-10 20:37+0200\n"
|
7
|
+
"PO-Revision-Date: 2023-08-10 03:09-0500\n"
|
8
8
|
"Last-Translator: hidden u\n"
|
9
9
|
"Language: zh\n"
|
10
10
|
"Language-Team: Chinese\n"
|
@@ -15,14 +15,14 @@ msgstr ""
|
|
15
15
|
"Generated-By: Babel 2.12.1\n"
|
16
16
|
|
17
17
|
# | msgid "This Domain does not exist in the Panel !"
|
18
|
-
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:
|
18
|
+
#: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
|
19
19
|
#, fuzzy
|
20
20
|
msgid "This domain does not exist in the panel!"
|
21
21
|
msgstr "该域名在面板中不存在!"
|
22
22
|
|
23
23
|
# | msgid ""
|
24
24
|
# | "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
|
25
|
-
#: hiddifypanel/panel/clean_ip.py:
|
25
|
+
#: hiddifypanel/panel/clean_ip.py:127
|
26
26
|
#, fuzzy
|
27
27
|
msgid "Error! auto cdn ip can not be find, please contact admin."
|
28
28
|
msgstr "自动 CDN IP 错误!找不到,请联系管理员。"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
hiddifypanel/Events.py,sha256=mkIsfz4YQqegdeFgH4quxvLIx7AundtjAW6HBSP9I-M,719
|
2
|
-
hiddifypanel/VERSION,sha256=
|
3
|
-
hiddifypanel/VERSION.py,sha256=
|
2
|
+
hiddifypanel/VERSION,sha256=al2WuwHwj-7R15lIqut6U7xytLKEi--83xTh92IGUb4,12
|
3
|
+
hiddifypanel/VERSION.py,sha256=CvuftKNR5OdFNPvsAe1Fqzea9Fd37uto54wSUNdN0VY,117
|
4
4
|
hiddifypanel/__init__.py,sha256=b4nIILUBiDaAWF1Mnkew84MxzR5OeWogcVbR-gpnbrA,217
|
5
5
|
hiddifypanel/__main__.py,sha256=GaHLsnu3y4zNTh6x-9kuZLOYaShltkG96rRAHOuMLak,270
|
6
6
|
hiddifypanel/base.py,sha256=choHdG5ctEX-jftutIb9hh3Kdu5oV3HOJpQv9KQBt24,2640
|
@@ -18,13 +18,14 @@ hiddifypanel/models/config_enum.py,sha256=2sVE_Dn8zjq0eIAHrb5pG8GkYvNrLDU1DdW3QG
|
|
18
18
|
hiddifypanel/models/domain.py,sha256=mHxKPedR5TC2RMz8Lmqo62EJlfda2kJhde638bM12ec,6406
|
19
19
|
hiddifypanel/models/parent_domain.py,sha256=yfcC_OM9xiyMHQBSRIeXpR8WLT2SNtE0CYhM5ouQJiw,2478
|
20
20
|
hiddifypanel/models/proxy.py,sha256=K7rjSaCZoLiU7QsA6qxibQxgvLB0ev8zsvIlt0tUqqQ,2824
|
21
|
+
hiddifypanel/models/report.py,sha256=G0IxEPDXy1jZlYzwgMsJFRdWHLzcVjQWLDprryCgAfM,1507
|
21
22
|
hiddifypanel/models/usage.py,sha256=z09tM56OU8ZHYZ_-MFyJUoizhI3sHXf5OAcQ1ObO26A,4175
|
22
23
|
hiddifypanel/models/user.py,sha256=kUdbx77zsC3mQDmZ9QQR5bbCIliT8sy-nvHXMionjEM,12016
|
23
24
|
hiddifypanel/panel/__init__.py,sha256=njms9QqmFhfzKdCBwqH_J_bue1GYGlfg7QdXDS6j1Wo,126
|
24
25
|
hiddifypanel/panel/admin_2.py,sha256=ikpkTEjEcmKivFOqPZv0mi-9aMLf5HeTHjZuSqaJySU,1039
|
25
26
|
hiddifypanel/panel/asset.py,sha256=mb3PWCHIcZnuV0wEN0DgKtLANbV9iAFYtZVuOzGX-Oo,461
|
26
27
|
hiddifypanel/panel/cf_api.py,sha256=CacbS0dbjeJXOXCCQoEGBv5LoHo0bJU7dwYaFtAIokU,1109
|
27
|
-
hiddifypanel/panel/clean_ip.py,sha256=
|
28
|
+
hiddifypanel/panel/clean_ip.py,sha256=AGU12ylBYa7GAWzCN4yO_d1FyI30jY8U5muJLgwXZiY,4918
|
28
29
|
hiddifypanel/panel/cli.py,sha256=0KZFlh5GneyFsSHfz6XbMandkeYxEFO1TyG_Cn0_FnE,7654
|
29
30
|
hiddifypanel/panel/common.py,sha256=lJkCRm78SkDmYmwCy3w5CbMsR6QKafi74uQiUcDnFHg,4778
|
30
31
|
hiddifypanel/panel/custom_widgets.py,sha256=GrLc5klxOJhO9bPdl_RHI7RjiG_JK2rG0p-f0k88BJw,2483
|
@@ -81,7 +82,7 @@ hiddifypanel/panel/commercial/templates/parent_dash.html,sha256=pMZRHQRxb2blYe0f
|
|
81
82
|
hiddifypanel/panel/user/__init__.py,sha256=C1oDWpEwa_bNdrff9I33_m9h2F_ma0_Ruu6T1QfMlMI,1047
|
82
83
|
hiddifypanel/panel/user/link_maker.html,sha256=g420NAm_fUI8asYjyfCiXyUOIwEQfDPonZA9xh3p0-8,177
|
83
84
|
hiddifypanel/panel/user/link_maker.py,sha256=RS4C7wkWtnd86x7AW0V_yTNEzi9kDZVXYoJ36JBGkLM,19583
|
84
|
-
hiddifypanel/panel/user/user.py,sha256=
|
85
|
+
hiddifypanel/panel/user/user.py,sha256=czMktgKm8XxwRZu5_0HA-nL2VAzdYwL8ddqe7EjwmBI,11675
|
85
86
|
hiddifypanel/panel/user/templates/all_configs copy.txt,sha256=ivn6fiOLnn4R7WLoKiPFbW-oOu-v1hdSqOW-sSeYmXA,510
|
86
87
|
hiddifypanel/panel/user/templates/all_configs.txt,sha256=q_Is8KCiiQcowf9-xsPj34YFILgk3cyAGULBfrf7vdg,1126
|
87
88
|
hiddifypanel/panel/user/templates/clash_config copy.yml,sha256=_BIDTWAe6St7f0Q3KhNAYuQsVqQDmx_5ayElt5Gs-fw,7537
|
@@ -678,17 +679,17 @@ hiddifypanel/templates/macros.html,sha256=lvw_I1hYTx5mq5e9j9kwbNp5n_WDdjFgwKzI3J
|
|
678
679
|
hiddifypanel/templates/master.html,sha256=VDhR902TCiMu6pnGrHDlsGYCR8PKKvBZcgiX00D4SP8,20817
|
679
680
|
hiddifypanel/templates/static.html,sha256=jp6q4wtx-k2A_cjqJoNiMS7Ee30arE45qI3ev4d5ky4,165
|
680
681
|
hiddifypanel/templates/hiddify-flask-admin/list.html,sha256=St0TD6-ZIJ24A6Akbh51JNkTEOpimFq2iiRydcUjQlA,13642
|
681
|
-
hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=
|
682
|
-
hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=
|
683
|
-
hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=
|
684
|
-
hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=
|
685
|
-
hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=
|
686
|
-
hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=
|
687
|
-
hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=
|
688
|
-
hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=
|
689
|
-
hiddifypanel-8.0.0.
|
690
|
-
hiddifypanel-8.0.0.
|
691
|
-
hiddifypanel-8.0.0.
|
692
|
-
hiddifypanel-8.0.0.
|
693
|
-
hiddifypanel-8.0.0.
|
694
|
-
hiddifypanel-8.0.0.
|
682
|
+
hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=o1eU10wDDknUWZuA8hO6OsT-8_953mzFZFeECW4yrj8,56470
|
683
|
+
hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=_l2G-cwx4N_CkJh4vOfiw5pEnRgV6pazAENABzRInS0,154384
|
684
|
+
hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=sMjIgk5qqlLcHIZ_RVtVH0NY-6zueHku9LGXhZ24zHM,76094
|
685
|
+
hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=ZG5wGiJKOqTwCAh7Yk4wKdlpJga0AnZziSFpZf9oW-U,176918
|
686
|
+
hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=jarjbWO-W19lks-o6EZXoCpDLPcj3_EfK7oQz2wXifQ,58471
|
687
|
+
hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=T4NPQSXJYgnNSn5yzKMRg0XBKoogHTQPWA25ZvQGf28,152557
|
688
|
+
hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=sMtEgjkE8Ui_2blcv3y6FaeHRlAIYN5b_yi_FtxrZVc,48371
|
689
|
+
hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=3lglBd41hlmwQqyvK5bbiOLCHx9T3qrJw4uwx-9QZfk,147770
|
690
|
+
hiddifypanel-8.0.0.dev28.dist-info/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
|
691
|
+
hiddifypanel-8.0.0.dev28.dist-info/METADATA,sha256=ECiA-y_P0M8ccSMajbfnU-RlLIniDKF5VVdKiYr4DPc,2851
|
692
|
+
hiddifypanel-8.0.0.dev28.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
|
693
|
+
hiddifypanel-8.0.0.dev28.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
|
694
|
+
hiddifypanel-8.0.0.dev28.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
|
695
|
+
hiddifypanel-8.0.0.dev28.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|