hiddifypanel 10.15.0.dev4__py3-none-any.whl → 10.16.0.dev0__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 CHANGED
@@ -1 +1 @@
1
- 10.15.0.dev4
1
+ 10.16.0.dev0
hiddifypanel/VERSION.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__='10.15.0.dev4'
1
+ __version__='10.16.0.dev0'
2
2
  from datetime import datetime
3
3
  __release_date__= datetime.strptime('2024-04-07','%Y-%m-%d')
@@ -13,22 +13,32 @@ class XrayApi(DriverABS):
13
13
 
14
14
  def get_enabled_users(self):
15
15
  xray_client = self.get_xray_client()
16
- users = User.query.all()
17
- t = "xtls"
18
- protocol = "vless"
19
- enabled = {}
20
- for u in users:
21
- uuid = u.uuid
22
- try:
23
- xray_client.add_client(t, f'{uuid}', f'{uuid}@hiddify.com', protocol=protocol, flow='xtls-rprx-vision', alter_id=0, cipher='chacha20_poly1305')
24
- xray_client.remove_client(t, f'{uuid}@hiddify.com')
25
- enabled[uuid] = 0
26
- except xtlsapi.xtlsapi.exceptions.EmailAlreadyExists as e:
27
- enabled[uuid] = 1
28
- except Exception as e:
29
- print(f"error {e}")
30
- enabled[uuid] = e
31
- return enabled
16
+ usages = xray_client.stats_query('user', reset=True)
17
+ res = defaultdict(int)
18
+ for use in usages:
19
+ if "user>>>" not in use.name:
20
+ continue
21
+ uuid = use.name.split(">>>")[1].split("@")[0]
22
+ res[uuid] = 1
23
+ return res
24
+
25
+ # xray_client = self.get_xray_client()
26
+ # users = User.query.all()
27
+ # t = "xtls"
28
+ # protocol = "vless"
29
+ # enabled = {}
30
+ # for u in users:
31
+ # uuid = u.uuid
32
+ # try:
33
+ # xray_client.add_client(t, f'{uuid}', f'{uuid}@hiddify.com', protocol=protocol, flow='xtls-rprx-vision', alter_id=0, cipher='chacha20_poly1305')
34
+ # xray_client.remove_client(t, f'{uuid}@hiddify.com')
35
+ # enabled[uuid] = 0
36
+ # except xtlsapi.xtlsapi.exceptions.EmailAlreadyExists as e:
37
+ # enabled[uuid] = 1
38
+ # except Exception as e:
39
+ # print(f"error {e}")
40
+ # enabled[uuid] = e
41
+ # return enabled
32
42
 
33
43
  def get_inbound_tags(self):
34
44
  try:
@@ -80,7 +90,9 @@ class XrayApi(DriverABS):
80
90
  pass
81
91
 
82
92
  def remove_client(self, user):
83
- uuid = user.uuid
93
+ return self._remove_client(user.uuid)
94
+
95
+ def _remove_client(self, uuid):
84
96
  xray_client = self.get_xray_client()
85
97
  tags = self.get_inbound_tags()
86
98
 
@@ -101,7 +113,10 @@ class XrayApi(DriverABS):
101
113
  if "user>>>" not in use.name:
102
114
  continue
103
115
  uuid = use.name.split(">>>")[1].split("@")[0]
104
- res[uuid_user_map[uuid]] += use.value
116
+ if u := uuid_user_map.get(uuid):
117
+ res[u] += use.value
118
+ else:
119
+ self._remove_client(uuid)
105
120
  return res
106
121
 
107
122
  def get_usage_imp(self, uuid):
@@ -2,7 +2,7 @@ from typing import List, Tuple
2
2
  from flask import current_app, flash as flask_flash, g, request
3
3
  from wtforms.validators import ValidationError
4
4
  from apiflask import abort as apiflask_abort
5
- from flask_babel import lazy_gettext as _
5
+ from flask_babel import gettext as _
6
6
  from flask import url_for # type: ignore
7
7
  from urllib.parse import urlparse
8
8
  from markupsafe import Markup
@@ -17,7 +17,8 @@ from hiddifypanel import hutils
17
17
 
18
18
 
19
19
  def flash(message: str, category: str = "message"):
20
- return flask_flash(Markup(message), category)
20
+ # if isinstance(message, LazyString)
21
+ return flask_flash(message, category)
21
22
 
22
23
 
23
24
  def flash_config_success(restart_mode: ApplyMode = ApplyMode.nothing, domain_changed=True):
@@ -156,7 +156,10 @@ class DomainAdmin(AdminLTEModelView):
156
156
  for td in Domain.query.filter(Domain.mode == DomainType.reality, Domain.domain != model.domain).all():
157
157
  # print(td)
158
158
  if td.servernames and (model.domain in td.servernames.split(",")):
159
- raise ValidationError(_("You have used this domain in: ") + _(f"config.reality_server_names.label") + " in " + td.domain)
159
+ raise ValidationError(_("You have used this domain in: ") + _(f"config.reality_server_names.label") + td.domain)
160
+
161
+ if is_created and Domain.query.filter(Domain.domain == model.domain, Domain.child_id == model.child_id).count() > 1:
162
+ raise ValidationError(_("You have used this domain in: "))
160
163
 
161
164
  ipv4_list = hutils.network.get_ips(4)
162
165
  ipv6_list = hutils.network.get_ips(6)
@@ -62,7 +62,7 @@ class InfoAPI(MethodView):
62
62
 
63
63
  dto.doh = f"https://{request.host}/{g.proxy_path}/dns/dns-query"
64
64
  dto.lang = (c['user'].lang) or Lang(hconfig(ConfigEnum.lang))
65
- dto.brand_icon_url = "" if hconfig(ConfigEnum.branding_title) else hutils.flask.static_url_for(filename="images/hiddify.png")
65
+ dto.brand_icon_url = "" if hconfig(ConfigEnum.branding_title) else hutils.flask.static_url_for(filename="images/favicon.ico")
66
66
  # with force_locale("fa"):
67
67
  dto.admin_message_html = hconfig(ConfigEnum.branding_freetext) or _("Join our Hiddify Telegram channel to get the latest updates on Hiddify.")
68
68
  if not hconfig(ConfigEnum.branding_freetext) and auth.admin_session_is_exist():
@@ -163,8 +163,7 @@ def init_app(app: APIFlask):
163
163
 
164
164
  # setup dark mode
165
165
  if request.args.get('darkmode') is not None:
166
- session['darkmode'] = request.args.get(
167
- 'darkmode', '').lower() == 'true'
166
+ session['darkmode'] = request.args.get('darkmode', '').lower() == 'true'
168
167
  g.darkmode = session.get('darkmode', False)
169
168
 
170
169
  # setup pwa
Binary file
@@ -20,25 +20,35 @@
20
20
  {% else %}
21
21
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
22
22
  {% endif %}
23
- <link href="{{static_url_for(filename='images/splash/iphone5_splash.png')}}" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
23
+ <link href="{{static_url_for(filename='images/splash/iphone5_splash.png')}}"
24
+ media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
24
25
  rel="apple-touch-startup-image" />
25
- <link href="{{static_url_for(filename='images/splash/iphone6_splash.png')}}" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
26
+ <link href="{{static_url_for(filename='images/splash/iphone6_splash.png')}}"
27
+ media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
26
28
  rel="apple-touch-startup-image" />
27
- <link href="{{static_url_for(filename='images/splash/iphoneplus_splash.png')}}" media="(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
29
+ <link href="{{static_url_for(filename='images/splash/iphoneplus_splash.png')}}"
30
+ media="(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
28
31
  rel="apple-touch-startup-image" />
29
- <link href="{{static_url_for(filename='images/splash/iphonex_splash.png')}}" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
32
+ <link href="{{static_url_for(filename='images/splash/iphonex_splash.png')}}"
33
+ media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
30
34
  rel="apple-touch-startup-image" />
31
- <link href="{{static_url_for(filename='images/splash/iphonexr_splash.png')}}" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
35
+ <link href="{{static_url_for(filename='images/splash/iphonexr_splash.png')}}"
36
+ media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
32
37
  rel="apple-touch-startup-image" />
33
- <link href="{{static_url_for(filename='images/splash/iphonexsmax_splash.png')}}" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
38
+ <link href="{{static_url_for(filename='images/splash/iphonexsmax_splash.png')}}"
39
+ media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
34
40
  rel="apple-touch-startup-image" />
35
- <link href="{{static_url_for(filename='images/splash/ipad_splash.png')}}" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
41
+ <link href="{{static_url_for(filename='images/splash/ipad_splash.png')}}"
42
+ media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
36
43
  rel="apple-touch-startup-image" />
37
- <link href="{{static_url_for(filename='images/splash/ipadpro1_splash.png')}}" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
44
+ <link href="{{static_url_for(filename='images/splash/ipadpro1_splash.png')}}"
45
+ media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
38
46
  rel="apple-touch-startup-image" />
39
- <link href="{{static_url_for(filename='images/splash/ipadpro3_splash.png')}}" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
47
+ <link href="{{static_url_for(filename='images/splash/ipadpro3_splash.png')}}"
48
+ media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
40
49
  rel="apple-touch-startup-image" />
41
- <link href="{{static_url_for(filename='images/splash/ipadpro2_splash.png')}}" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
50
+ <link href="{{static_url_for(filename='images/splash/ipadpro2_splash.png')}}"
51
+ media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
42
52
  rel="apple-touch-startup-image" />
43
53
  <link rel="icon" type="image/x-icon" href="{{ static_url_for( filename='images/favicon.ico')}}">
44
54
  <link rel="manifest" href="{{ hurl_for('common_bp.LoginView:create_pwa_manifest',secret_uuid=g.account.uuid or '')}}">
@@ -60,7 +70,8 @@
60
70
  <link rel="stylesheet" href="{{static_url_for(filename='plugins/datatables/extensions/Responsive/css/responsive.bootstrap4.min.css')}}"> -->
61
71
 
62
72
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.13.2/css/dataTables.bootstrap4.min.css">
63
- <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/responsive/2.4.0/css/responsive.bootstrap4.min.css">
73
+ <link rel="stylesheet" type="text/css"
74
+ href="https://cdn.datatables.net/responsive/2.4.0/css/responsive.bootstrap4.min.css">
64
75
 
65
76
  <link rel="stylesheet" href="{{ static_url_for( filename='css/custom.css',version=5.23 ) }}">
66
77
  {% if get_locale()=='fa' %}
@@ -77,7 +88,8 @@
77
88
 
78
89
  </head>
79
90
 
80
- <body class="hold-transition layout-fixed {{" dark-mode" if g.darkmode else "" }} {% block bodyclass %}sidebar-collapse{%endblock%}">
91
+ <body class="hold-transition layout-fixed {{" dark-mode" if g.darkmode else "" }} {% block bodyclass
92
+ %}sidebar-collapse{%endblock%}">
81
93
  <div id="splash_screen">
82
94
  <center>
83
95
 
@@ -148,12 +160,14 @@
148
160
  </div>
149
161
 
150
162
  <ul class="nav col-md-4 justify-content-end list-unstyled d-flex">
151
- <li class="ms-3"><a class="text-secondary" href="https://github.com/hiddify/hiddify-manager/wiki"><i class="fa-brands fa-github"></i></a></li>
163
+ <li class="ms-3"><a class="text-secondary" href="https://github.com/hiddify/hiddify-manager/wiki"><i
164
+ class="fa-brands fa-github"></i></a></li>
152
165
  <li class="ms-3"><a class="text-danger" href="https://youtube.com/@hiddify/videos">
153
166
  &nbsp; <i class="fa-brands fa-square-youtube fa-margin"></i> </a></li>
154
167
  <li class="ms-3"><a class="text-primary" href="https://twitter.com/intent/follow?screen_name=hiddify_com">
155
168
  &nbsp; <i class="fa-brands fa-square-twitter fa-margin"></i> </a></li>
156
- <li class="ms-3"><a class="text-primary" href="https://t.me/hiddify">&nbsp; <i class="fa-brands fa-telegram fa-margin"></i> </a></li>
169
+ <li class="ms-3"><a class="text-primary" href="https://t.me/hiddify">&nbsp; <i
170
+ class="fa-brands fa-telegram fa-margin"></i> </a></li>
157
171
  </ul>
158
172
 
159
173
  </footer>
@@ -163,7 +177,8 @@
163
177
  </div>
164
178
  <!-- ./wrapper -->
165
179
 
166
- {#modal("guide-modal","","<video id='guide-video' controls style='max-height: 100%; max-width: 100%;width: auto; height: auto;'>
180
+ {#modal("guide-modal","","<video id='guide-video' controls
181
+ style='max-height: 100%; max-width: 100%;width: auto; height: auto;'>
167
182
  <source id='guide-video-mp4' type='video/mp4'>
168
183
  </video>")#}
169
184
 
@@ -182,8 +197,10 @@
182
197
  <div class="btn-group">
183
198
  <a id='qrcode-link' class="btn btn-primary copy-link" href=""><i class="fa-regular fa-copy"></i>
184
199
  {{_("copy")}} </a>
185
- <a id="share-link-redirect" class="btn btn-success copy-link" href=""><i class="fa-solid fa-share-from-square"></i> {{_('clickable copy')}}</a>
186
- <a target="_blank" id="share-link-open" class="btn btn-secondary" href=""><i class="fa-solid fa-arrow-up-right-from-square"></i> {{_('open')}}</a>
200
+ <a id="share-link-redirect" class="btn btn-success copy-link" href=""><i
201
+ class="fa-solid fa-share-from-square"></i> {{_('clickable copy')}}</a>
202
+ <a target="_blank" id="share-link-open" class="btn btn-secondary" href=""><i
203
+ class="fa-solid fa-arrow-up-right-from-square"></i> {{_('open')}}</a>
187
204
  </div>
188
205
  <br />
189
206
  <div id="qrcode" style="margin:10px;padding:10px;"></div>
@@ -234,8 +251,10 @@
234
251
 
235
252
  <script src="{{ static_url_for( filename='plugins/datatables/jquery.dataTables.min.js' ) }}"></script>
236
253
  <script src="{{ static_url_for( filename='plugins/datatables/dataTables.bootstrap4.js' ) }}"></script>
237
- <script src="{{ static_url_for( filename='plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js' ) }}"></script>
238
- <script src="{{ static_url_for( filename='plugins/datatables/extensions/Responsive/js/responsive.bootstrap4.min.js' ) }}"></script>
254
+ <script
255
+ src="{{ static_url_for( filename='plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js' ) }}"></script>
256
+ <script
257
+ src="{{ static_url_for( filename='plugins/datatables/extensions/Responsive/js/responsive.bootstrap4.min.js' ) }}"></script>
239
258
 
240
259
  <!-- <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.13.2/js/jquery.dataTables.min.js"></script>
241
260
  <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.13.2/js/dataTables.bootstrap4.min.js"></script>
@@ -307,7 +326,7 @@
307
326
  position: "{{'topLeft' if get_locale()=='fa' else 'topRight'}}",
308
327
 
309
328
 
310
- body: `{{msg}}`
329
+ body: `{{msg|safe}}`
311
330
  })
312
331
  {% endfor %}
313
332
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hiddifypanel
3
- Version: 10.15.0.dev4
3
+ Version: 10.16.0.dev0
4
4
  Summary: hiddifypanel multi proxy panel
5
5
  Home-page: https://github.com/hiddify/hiddify-manager/
6
6
  Author: hiddify
@@ -1,6 +1,6 @@
1
1
  hiddifypanel/Events.py,sha256=AlnRdjVul0jP-NCT4-zoaQgowoOo-JhdQB4ytetAFKA,723
2
- hiddifypanel/VERSION,sha256=60iE1LDQ778D75q94VxQ5vFWh8PZSYyJz89tCYtUbIw,13
3
- hiddifypanel/VERSION.py,sha256=6oWtF-egCtYEAXZCyPxuYlN3GKlK3vyc5NvGMoUnuPI,118
2
+ hiddifypanel/VERSION,sha256=ugMSgWn9-MHWlcme3rr6cZMGbEkkx5qhtfvBwi9QZCs,13
3
+ hiddifypanel/VERSION.py,sha256=tdP9jIvzil6bRnSJnTO1gWydyef0rHk0VwucDnYGmLE,118
4
4
  hiddifypanel/__init__.py,sha256=aLukp3ORszdcH4G9J-MlxhjHN6yFlOuOE6mm-L3aG_g,266
5
5
  hiddifypanel/__main__.py,sha256=IVchnXpK6bm8T3N--mN17HBQNLMeLAjyP7iwzULexB4,218
6
6
  hiddifypanel/auth.py,sha256=5GUwwKCRY90RS0WTKPfqzuOYuLuwGLpNLpnKmubf7DE,7405
@@ -12,13 +12,13 @@ hiddifypanel/drivers/singbox_api.py,sha256=vApQU4vwMZdd71-FEnTGm8btRLoC1l0sSzAcH
12
12
  hiddifypanel/drivers/ssh_liberty_bridge_api.py,sha256=FXoS65hydwisizC20HTJvMQR_SNx1MvZ4Fu8jSwesWw,1768
13
13
  hiddifypanel/drivers/user_driver.py,sha256=vT04mM6cFMrnqt8VLlrw5iRThPDD_dHfo8Jvn-K_eyk,1914
14
14
  hiddifypanel/drivers/wireguard_api.py,sha256=YsfEIZXxwPqjhK9QGInrDFdLNCyCEPg9b9oDRW0--RY,3286
15
- hiddifypanel/drivers/xray_api.py,sha256=zUAnbnOB-Wo3dfiIIQaeX58G873sNI-IqJYzSKuOt5g,4270
15
+ hiddifypanel/drivers/xray_api.py,sha256=ZYzScPW7DNxGxQOFdG30H9wl1qOcTjkRTq5yLcgEok0,4788
16
16
  hiddifypanel/hutils/__init__.py,sha256=eHFBeXrTwiW3sb0ojTJNG_J26uiwyBoZ9O-W2lQKmeo,296
17
17
  hiddifypanel/hutils/auth.py,sha256=CoT25nrneWaAnRtx7qDE0v4WkdCeV3ra78VqEN48jeE,3031
18
18
  hiddifypanel/hutils/convert.py,sha256=bxkbphOC9GifVMKwgmo4lpAOyJ5rdSVRnG1eEjh8tIc,2061
19
19
  hiddifypanel/hutils/crypto.py,sha256=2MDnzjM_ZJdY1zJ3eCoa2v24FYzzdKKO4viOFnvmBlI,1858
20
20
  hiddifypanel/hutils/encode.py,sha256=XUq7NSrV11WeVIZFyfik8sqI82R0lKRm5mqKrxNoLrQ,834
21
- hiddifypanel/hutils/flask.py,sha256=KhZJC7MXZdn0zaPcZkO8ng_nvJ3_VkgcDA48CYfuwOA,10556
21
+ hiddifypanel/hutils/flask.py,sha256=o9DHfhqZPN1j7s5sVnFAFrJp0zjalVKFPQeL_w6dd9o,10584
22
22
  hiddifypanel/hutils/github_issue.py,sha256=oDJU-8BgefDdls9sUzhVpohH9utrD4WZLWrb3oUwV4c,6500
23
23
  hiddifypanel/hutils/model.py,sha256=ajlJ-Tx0Mq68S9y5qEj0lwlDbF2xj0niZBQyw7UU670,1320
24
24
  hiddifypanel/hutils/random.py,sha256=KrsarmRNL05PYzwMxDaDyv-_QcKS0YsZR2z7BnllAqI,1789
@@ -60,7 +60,7 @@ hiddifypanel/panel/auth_back.py,sha256=ft2YlK1Ke87fvKTpGLIHnLVpnBRn1Stlc_-6aEzud
60
60
  hiddifypanel/panel/auth_back2.py,sha256=8-MkPi4WAxO7gAeChQ7ceCx0QhuEQlrYazZ9qDnm_Mc,8983
61
61
  hiddifypanel/panel/cf_api.py,sha256=TByR9gRiF18TGPjGmWHEwgPdB-icfczBfrf2E-8H488,1127
62
62
  hiddifypanel/panel/cli.py,sha256=a2rTpUlUsjv3aEkqAK0aa8_PW3e1IzpXWaJPb4EVIyg,9368
63
- hiddifypanel/panel/common.py,sha256=8qLShJ1pPrZiChZOzi0PGFWAigRfj_DEGgLr4_5K8-E,8012
63
+ hiddifypanel/panel/common.py,sha256=fns77UWOc5zreyqZHEOHcHc3WuEX8mZZEwRY8J0aWAo,7995
64
64
  hiddifypanel/panel/custom_widgets.py,sha256=9qI_fNX8NKqB1r8ljgcaisGZaDM89_PM_rOBZbGaTYs,2506
65
65
  hiddifypanel/panel/hiddify.py,sha256=K8obO2Chc8A0Dh0FwMWT2NyvPbI8eGSHY3wLpCB2XoU,14436
66
66
  hiddifypanel/panel/init_db.py,sha256=5N-y7br2PBQ9hydT8kAHjB0ujlmEmBcjqF1e5n0FkFM,32667
@@ -71,7 +71,7 @@ hiddifypanel/panel/admin/AdminstratorAdmin.py,sha256=Y0h_mHRblguJjK0VqZoyCPcn02k
71
71
  hiddifypanel/panel/admin/Backup.py,sha256=dp74st7OBw_j3hH-4K4tf9EyP4qGuALaJ5pTcC-SWt8,3670
72
72
  hiddifypanel/panel/admin/ConfigAdmin.py,sha256=0hnLY-8BxrpVnrAcQaedWjHnRUq1X_Styi_ZCZ2ivds,2876
73
73
  hiddifypanel/panel/admin/Dashboard.py,sha256=cF1pUmSqvDad_4q7G-2xfFeFht-Vq9YrneRl0V8Caeg,4179
74
- hiddifypanel/panel/admin/DomainAdmin.py,sha256=5H0q5Dvgdx4KUg1FTabXTjrbvcy1br7XwCXw2okgCoI,14404
74
+ hiddifypanel/panel/admin/DomainAdmin.py,sha256=n6vNX58Bc7LxYwkXcAIOKf8GZuES3-AgWQzbNmth4Vo,14592
75
75
  hiddifypanel/panel/admin/NodeAdmin.py,sha256=QAHQjF7e7F4KqsWNWpMt7SoLANlFEborVtWQV9OXJ2E,3102
76
76
  hiddifypanel/panel/admin/ProxyAdmin.py,sha256=e-tCTfsEjqjbRezhVJvFyQZHh-uluvHFZXXwc4aFRDE,5319
77
77
  hiddifypanel/panel/admin/QuickSetup.py,sha256=X8d492PLQu8vNtabh-X2R2IDZVs_5pmWeyn-Qz5_qXk,7560
@@ -162,7 +162,7 @@ hiddifypanel/panel/commercial/restapi/v2/parent/usage_api.py,sha256=FOvb6nFuWcuc
162
162
  hiddifypanel/panel/commercial/restapi/v2/user/__init__.py,sha256=SxWty7krk6kt_JORT1AyQcUfgRdY_55vRb3FAxT4LB8,1230
163
163
  hiddifypanel/panel/commercial/restapi/v2/user/apps_api.py,sha256=WVq8Ufjr_HpkdHG3juTD6Tfg12kE-00VRV8PrbSiqY8,20833
164
164
  hiddifypanel/panel/commercial/restapi/v2/user/configs_api.py,sha256=tc2fP-neC2mbc7sRQADpLYwlIFLr5UtUjyTsOT3rVp4,4602
165
- hiddifypanel/panel/commercial/restapi/v2/user/info_api.py,sha256=BzoWLykmxkQmlUQ8b1-0NGaGRtPeVncwzVDA-7XBO68,3918
165
+ hiddifypanel/panel/commercial/restapi/v2/user/info_api.py,sha256=Ou-3TjwLqYYECIttjSU9rpjmfjDFbgHj2_gGnwmHj5E,3918
166
166
  hiddifypanel/panel/commercial/restapi/v2/user/mtproxies.py,sha256=wK6zMOw2OTVxeMkzZGVah34GYDMJa8Keq5z7jGKfFys,1676
167
167
  hiddifypanel/panel/commercial/restapi/v2/user/short_api.py,sha256=rhsmDJSCiZOhX9jpJGcRS_zBVRqvjpjH3CaNaJ9gMiI,1137
168
168
  hiddifypanel/panel/commercial/telegrambot/DefaultResponse.py,sha256=WgT8LuY_AsAK6QYIXWuBOmnRIDlg4rUPPokHWOrWzHQ,378
@@ -257,7 +257,7 @@ hiddifypanel/static/fonts/Vazir.ttf,sha256=Xpc1n9qGYzHwscPPkG4D5zR8asPnqtQsAP13v
257
257
  hiddifypanel/static/fonts/Vazir.woff,sha256=zeOSomAuJf5MSPtfWMQlRm-bfvW6fe3TR6bKKm3wB1A,47972
258
258
  hiddifypanel/static/fonts/Vazir.woff2,sha256=hiSb0YdZo_FDhmchu-X3E5e74hrd5t5TD9E9dc8SnnA,38004
259
259
  hiddifypanel/static/images/WhiteLogo.png,sha256=ZvfzfBxOkmJDyaxgI8v49Hu49lFlyJe0CuHCpokiHgs,7570
260
- hiddifypanel/static/images/favicon.ico,sha256=fuGQJqroZJi14OiVMVM4RsDfteo1dLKftiTz7QRtS7Q,15422
260
+ hiddifypanel/static/images/favicon.ico,sha256=rqIPdpwfnqaLFqeSbP_EIiTGQwG96Wl02ghQq9JByF4,13438
261
261
  hiddifypanel/static/images/hiddify-dark.png,sha256=YGz0d6SUh5NmWr45GRPqlGJSE-MiCxr6ZVhAU2JPaX4,111125
262
262
  hiddifypanel/static/images/hiddify-old.png,sha256=Lq-XqNRd5QQANwv4y7orXB3v5KERJpF8auNWB2do2CA,37408
263
263
  hiddifypanel/static/images/hiddify.png,sha256=oagOQAV1sbhSirE62kzzinkGOlWh9wy6w5JLOebEamU,31712
@@ -815,29 +815,29 @@ hiddifypanel/templates/flaskadmin-layout.html,sha256=PkF74ld3HZ-j5_nVzVxmispnmmo
815
815
  hiddifypanel/templates/github_issue_body.j2,sha256=6Z4QF-cOAaUxDtRQXT8H4O9SrZ3TGoxgpjnfIpGbsxo,474
816
816
  hiddifypanel/templates/lte-master.html,sha256=jYhcNj8SuMOPT35OEG4e1sLWm03Vq53n4ynf3SdOWj4,1585
817
817
  hiddifypanel/templates/macros.html,sha256=HlnXbIMN8i37fVusBdfw0QfVkImnFpZw9zbmtpAT4p8,4139
818
- hiddifypanel/templates/master.html,sha256=QZt6_N7txQICDW2lQn8ToWsbEqgOlqsu39criIBidhM,21738
818
+ hiddifypanel/templates/master.html,sha256=MduWpnW-_ksXxPb1fSOYJC0SKEYnAJ8i4XwX7AUZj38,21865
819
819
  hiddifypanel/templates/redirect.html,sha256=K9x_O4P96vEkqBhOXIhoGrWw1KIqd2bL0BjIqmnpZi0,412
820
820
  hiddifypanel/templates/static.html,sha256=jp6q4wtx-k2A_cjqJoNiMS7Ee30arE45qI3ev4d5ky4,165
821
821
  hiddifypanel/templates/hiddify-flask-admin/actions.html,sha256=2NeITe2e-lPKCk_o511tCIqVtrPu8LYHE1wTCtrFUrI,1331
822
822
  hiddifypanel/templates/hiddify-flask-admin/list.html,sha256=MBGrTqZpzNLe4sZy0RozvXNr8seFUQc2C6v88BJtNWc,11095
823
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=1t0QRQyXctEGG8dDjKh6Lbs11-8HpF9il4w5mlhnnSI,74266
823
+ hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=rPtaWV83QXB7qyh0mFXNEtGNdct7ZOi3U5QJDDJRtFQ,74266
824
824
  hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=htfXb1yD7U4vfsyeF9ECctKBrfJOwnaAfPp8cUiZvTE,77415
825
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=uSkBdIecpEv_VuT5s8y3pWHo0U1B97mQ3lZfp3Ker9c,94799
825
+ hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=Ngc8IRm8Nd7aXU0ins4e0pMRtRQr74D1HfbgMkxQf7A,94799
826
826
  hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=kfaTzdmS1eJCb0NjrHLfltd_y-FGXI2LCQxDEannE4E,99980
827
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=9arbXWGfogQTuEdEWfOXTVawdaPx3AkRUTVeq7ilD9Q,60612
827
+ hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=W_2BDz65QT8a_v-j3ZTCTd8u9qufpjJ0BQSRpLrEkU0,60612
828
828
  hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=tUp3Ed-ZBDZeD99yb7o6I76wWUU_QQT2i_cQfNV_7Zk,69869
829
- hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=x0GOEb1huOkW_KMo6A227Jf0INCzmvc-SsTCxd_VRbA,95543
829
+ hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=0xGRdDDqJcbQ21-FQ3upJaBc-gxZ-x93wqiK0lIJ5lg,95543
830
830
  hiddifypanel/translations/ru/LC_MESSAGES/messages.po,sha256=ojNL5z1gvjgiO-5hjccCLhK0Z-CeZKrwE3yiEE4ekeg,102007
831
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=KAFuLEkkPqCFHwOk0Kg1IJewXMMNJpo1Qlzfok2-Ne0,60878
831
+ hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=ZYp6tM5CxYBykEXEkNR_vAmysGN5q_95e6mw_dn3dwY,60878
832
832
  hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=f0fv1MW5_Okc5GixUoPv5BkV0XwM6wKrjK7khLeiv18,69040
833
833
  hiddifypanel/translations.i18n/en.json,sha256=07z5rKyF0AADkYOPjJVAN9aFrbtj4V8ZAQM5wK4f4bc,67420
834
834
  hiddifypanel/translations.i18n/fa.json,sha256=M5-D3rdRCbrWQqT3N4hw0OEmjfsBAIWOLeLmqSshyCw,89976
835
835
  hiddifypanel/translations.i18n/pt.json,sha256=Wh72C6ToJUVXgAfB_2JqJKQjw0_Rvv7gsYIp8-Nbd8Q,60171
836
836
  hiddifypanel/translations.i18n/ru.json,sha256=WNSflb5-l-CWOQ71SWhDSkgQLkJVHeZ_dehn3lRyv0s,91988
837
837
  hiddifypanel/translations.i18n/zh.json,sha256=17fERyiPhWV2899MMynfIeuZL6X7u-_pWd0h5n6FJUo,59588
838
- hiddifypanel-10.15.0.dev4.dist-info/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
839
- hiddifypanel-10.15.0.dev4.dist-info/METADATA,sha256=93jI_NSoLjG5hZ9V6AsP4Ccxo4AmSuKSdBWv5BA0Hfc,4013
840
- hiddifypanel-10.15.0.dev4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
841
- hiddifypanel-10.15.0.dev4.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
842
- hiddifypanel-10.15.0.dev4.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
843
- hiddifypanel-10.15.0.dev4.dist-info/RECORD,,
838
+ hiddifypanel-10.16.0.dev0.dist-info/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
839
+ hiddifypanel-10.16.0.dev0.dist-info/METADATA,sha256=AQVAB0o2OqwDFJXH5Jr8OuIcqt0AiAuXFFed5Q1sa3A,4013
840
+ hiddifypanel-10.16.0.dev0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
841
+ hiddifypanel-10.16.0.dev0.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
842
+ hiddifypanel-10.16.0.dev0.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
843
+ hiddifypanel-10.16.0.dev0.dist-info/RECORD,,