hiddifypanel 11.0.11__py3-none-any.whl → 11.0.12b1__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.
Files changed (30) hide show
  1. hiddifypanel/VERSION +1 -1
  2. hiddifypanel/VERSION.py +2 -2
  3. hiddifypanel/hutils/proxy/shared.py +7 -7
  4. hiddifypanel/models/config_enum.py +1 -1
  5. hiddifypanel/models/domain.py +3 -0
  6. hiddifypanel/panel/admin/DomainAdmin.py +5 -3
  7. hiddifypanel/panel/init_db.py +6 -0
  8. hiddifypanel/templates/flaskadmin-layout.html +4 -3
  9. hiddifypanel/translations/en/LC_MESSAGES/messages.mo +0 -0
  10. hiddifypanel/translations/en/LC_MESSAGES/messages.po +8 -0
  11. hiddifypanel/translations/fa/LC_MESSAGES/messages.mo +0 -0
  12. hiddifypanel/translations/fa/LC_MESSAGES/messages.po +8 -0
  13. hiddifypanel/translations/my/LC_MESSAGES/messages.mo +0 -0
  14. hiddifypanel/translations/pt/LC_MESSAGES/messages.mo +0 -0
  15. hiddifypanel/translations/pt/LC_MESSAGES/messages.po +6 -0
  16. hiddifypanel/translations/ru/LC_MESSAGES/messages.mo +0 -0
  17. hiddifypanel/translations/ru/LC_MESSAGES/messages.po +6 -0
  18. hiddifypanel/translations/zh/LC_MESSAGES/messages.mo +0 -0
  19. hiddifypanel/translations/zh/LC_MESSAGES/messages.po +6 -0
  20. hiddifypanel/translations.i18n/en.json +4 -0
  21. hiddifypanel/translations.i18n/fa.json +4 -0
  22. hiddifypanel/translations.i18n/pt.json +4 -0
  23. hiddifypanel/translations.i18n/ru.json +4 -0
  24. hiddifypanel/translations.i18n/zh.json +4 -0
  25. {hiddifypanel-11.0.11.dist-info → hiddifypanel-11.0.12b1.dist-info}/METADATA +1 -1
  26. {hiddifypanel-11.0.11.dist-info → hiddifypanel-11.0.12b1.dist-info}/RECORD +30 -30
  27. {hiddifypanel-11.0.11.dist-info → hiddifypanel-11.0.12b1.dist-info}/WHEEL +0 -0
  28. {hiddifypanel-11.0.11.dist-info → hiddifypanel-11.0.12b1.dist-info}/entry_points.txt +0 -0
  29. {hiddifypanel-11.0.11.dist-info → hiddifypanel-11.0.12b1.dist-info}/licenses/LICENSE.md +0 -0
  30. {hiddifypanel-11.0.11.dist-info → hiddifypanel-11.0.12b1.dist-info}/top_level.txt +0 -0
hiddifypanel/VERSION CHANGED
@@ -1 +1 @@
1
- 11.0.11
1
+ 11.0.12b1
hiddifypanel/VERSION.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # import importlib.metadata
2
2
  from datetime import datetime
3
3
 
4
- __version__ = '11.0.11'
5
- __release_time__= datetime.strptime('2025-07-12T21:13:54','%Y-%m-%dT%H:%M:%S')
4
+ __version__ = '11.0.12b1'
5
+ __release_time__= datetime.strptime('2025-07-20T19:36:54','%Y-%m-%dT%H:%M:%S')
6
6
  is_released_version=True
@@ -262,7 +262,7 @@ def sni_host_server_extractor(domain_db: Domain, hconfigs):
262
262
  elif 'special' in domain_db.mode.value or domain_db.mode in [DomainType.fake]:
263
263
  server=hutils.network.get_direct_host_or_ip(4)
264
264
 
265
- if hconfig(ConfigEnum.use_ip_in_config):
265
+ if domain_db.resolve_ip:
266
266
  server = str(random_or_none(hutils.network.get_domain_ips_cached(server)) or server)
267
267
 
268
268
 
@@ -276,6 +276,7 @@ def sni_host_server_extractor(domain_db: Domain, hconfigs):
276
276
 
277
277
  else:
278
278
  allow_insecure=True
279
+
279
280
 
280
281
  base = {
281
282
  'sni': sni,
@@ -335,16 +336,15 @@ def make_proxy(hconfigs: dict, proxy: Proxy, domain_db: Domain, phttp=80, ptls=4
335
336
  # 'cdn': is_cdn,
336
337
  # 'mode': "CDN" if is_cdn else "direct",
337
338
  'l3': l3,
338
- # 'host': domain,
339
+
339
340
  'port': port,
340
- # 'server': cdn_forced_host,
341
- # 'sni': domain_db.servernames if is_cdn and domain_db.servernames else domain,
341
+
342
342
  'uuid': str(g.account.uuid),
343
343
  'proto': proxy.proto,
344
344
  'transport': proxy.transport,
345
345
  'proxy_path': hconfigs[ConfigEnum.proxy_path],
346
346
  'alpn': alpn,
347
- 'extra_info': f'{domain_db.alias or domain}',
347
+ 'extra_info': f'{domain_db.alias or domain_db.domain}',
348
348
  'fingerprint': hconfigs[ConfigEnum.utls],
349
349
  # 'allow_insecure': domain_db.mode == DomainType.fake or "Fake" in proxy.cdn,
350
350
  'dbe': proxy,
@@ -471,13 +471,13 @@ def make_proxy(hconfigs: dict, proxy: Proxy, domain_db: Domain, phttp=80, ptls=4
471
471
  if proxy.transport in ["ws", "WS"]:
472
472
  base['transport'] = 'ws'
473
473
  base['path'] = f'/{path[base["proto"]]}{hconfigs[ConfigEnum.path_ws]}'
474
- base["host"] = domain
474
+
475
475
  return base
476
476
 
477
477
  if proxy.transport in [ProxyTransport.httpupgrade]:
478
478
  base['transport'] = 'httpupgrade'
479
479
  base['path'] = f'/{path[base["proto"]]}{hconfigs[ConfigEnum.path_httpupgrade]}'
480
- base["host"] = domain
480
+
481
481
  return base
482
482
 
483
483
  if proxy.transport in [ProxyTransport.xhttp]:
@@ -163,7 +163,7 @@ class ConfigEnum(metaclass=FastEnum):
163
163
  admin_secret = _StrConfigDscr(ConfigCategory.hidden) # removed
164
164
 
165
165
  default_useragent_string = _StrConfigDscr(ConfigCategory.general)
166
- use_ip_in_config=_BoolConfigDscr(ConfigCategory.general)
166
+ use_ip_in_config=_BoolConfigDscr(ConfigCategory.hidden)
167
167
  # tls
168
168
  tls_ports = _StrConfigDscr(ConfigCategory.tls, ApplyMode.apply_config)
169
169
 
@@ -62,6 +62,7 @@ class Domain(db.Model):
62
62
  download_domain_id= db.Column(db.Integer, db.ForeignKey('domain.id', ondelete='SET NULL'), default=None,nullable=True)
63
63
  download_domain = db.relationship('Domain',remote_side=[id], foreign_keys=[download_domain_id])
64
64
  extra_params = db.Column(db.String(200), nullable=True, default='')
65
+ resolve_ip= db.Column(db.Boolean, nullable=True, default=False)
65
66
 
66
67
  def __repr__(self):
67
68
  return f'{self.domain}'
@@ -88,6 +89,7 @@ class Domain(db.Model):
88
89
  'grpc': self.grpc,
89
90
  'download_domain':self.download_domain.domain if self.download_domain else "",
90
91
  'show_domains': [dd.domain for dd in self.show_domains], # type: ignore
92
+ "resolve_ip":self.resolve_ip,
91
93
  }
92
94
  if dump_child_id:
93
95
  data['child_id'] = self.child_id
@@ -201,6 +203,7 @@ class Domain(db.Model):
201
203
  dbdomain.alias = domain.get('alias', '')
202
204
  dbdomain.grpc = domain.get('grpc', False)
203
205
  dbdomain.servernames = domain.get('servernames', '')
206
+ dbdomain.resolve_ip=domain.get("resolve_ip",False)
204
207
  show_domains = domain.get('show_domains', [])
205
208
  dbdomain.show_domains = Domain.query.filter(Domain.domain.in_(show_domains)).all()
206
209
  dl_domain=domain.get("download_domain")
@@ -51,7 +51,8 @@ class DomainAdmin(AdminLTEModelView):
51
51
  servernames=_('config.reality_server_names.description'),
52
52
  sub_link_only=_('This can be used for giving your users a permanent non blockable links.'),
53
53
  grpc=_('grpc-proxy.description'),
54
- download_domain=_('download_domain.description')
54
+ download_domain=_('download_domain.description'),
55
+ resolve_ip=_("domain.resolveip.description")
55
56
  )
56
57
  # create_modal = True
57
58
  can_export = False
@@ -86,10 +87,11 @@ class DomainAdmin(AdminLTEModelView):
86
87
  'show_domains': _('Show Domains'),
87
88
  'alias': _('Alias'),
88
89
  'grpc': _('gRPC'),
89
- "download_domain":_('download_domain.label')
90
+ "download_domain":_('download_domain.label'),
91
+ 'resolve_ip':_("domain.resolveip.label"),
90
92
  }
91
93
 
92
- form_columns = ['mode', 'domain','download_domain', 'alias', 'servernames', 'cdn_ip', 'show_domains']
94
+ form_columns = ['mode', 'domain', 'alias', 'servernames', 'cdn_ip', 'resolve_ip', 'show_domains', 'download_domain',]
93
95
 
94
96
  def _domain_admin_link(view, context, model, name):
95
97
  if model.mode == DomainType.fake:
@@ -16,6 +16,12 @@ from hiddifypanel.database import db, db_execute
16
16
  from loguru import logger
17
17
  MAX_DB_VERSION = 120
18
18
 
19
+ def _v108(child_id):
20
+ Domain.query.filter(Domain.mode==DomainType.auto_cdn_ip).update({
21
+ "mode":"cdn",
22
+ "resolve_ip":True
23
+ })
24
+
19
25
  def _v107(child_id):
20
26
  # set_hconfig(ConfigEnum.core_type,'xray') # disable singbox core temporary
21
27
  execute("UPDATE proxy SET params = '{}' WHERE params is NULL;")
@@ -61,9 +61,9 @@
61
61
  if ($("#domain").length > 0) {
62
62
  var selectElement = document.getElementById("mode");
63
63
  var groups = [
64
- { label: `{{_("Direct")}}`, options: ["direct", "old_xtls_direct"] },
64
+ { label: `{{_("Direct")}}`, options: ["direct"] },
65
65
  { label: `{{_("Panel Link")}}`, options: ["sub_link_only"] },
66
- { label: `{{_("Bridge Servers")}}`, options: ["cdn", "auto_cdn_ip", "worker", "relay"] },
66
+ { label: `{{_("Bridge Servers")}}`, options: ["cdn", "worker", "relay"] },
67
67
  { label: `{{_("Fake")}}`, options: ["special_reality_xhttp","special_reality_tcp","special_reality_grpc", "fake"] }
68
68
  ];
69
69
 
@@ -104,6 +104,7 @@
104
104
  $("#cdn_ip").val("")
105
105
  //$("#mode").parent().hide();
106
106
  $("#show_domains").parent().show()
107
+ $("#resolve_ip").parent().hide()
107
108
  $("#servernames").parent().hide();
108
109
  $("#domain").parent().find(".control-label").html(`{{_('domain.domain')}}`)
109
110
  $("#domain").parent().find(".help-block").html(`{{_('domain.description')}}`)
@@ -114,7 +115,7 @@
114
115
  $("#cdn_ip").parent().show();
115
116
  //$("#mode").parent().show();
116
117
  $("#show_domains").parent().hide()
117
-
118
+ $("#resolve_ip").parent().show()
118
119
 
119
120
  if ($("#mode").val() == 'direct') {
120
121
  $("#cdn_ip").parent().hide();
@@ -2527,6 +2527,14 @@ msgstr ""
2527
2527
  "Selected Domain for REALITY is not in the same ASN. To better use of the "
2528
2528
  "Protocol, it is better to find a Domain in the same ASN"
2529
2529
 
2530
+ msgid "domain.resolveip.description"
2531
+ msgstr ""
2532
+ "Use IP instead of domain name in the proxies. Useful when there are huge "
2533
+ "noise on the DNS."
2534
+
2535
+ msgid "domain.resolveip.label"
2536
+ msgstr "Resolve IP"
2537
+
2530
2538
  msgid "domain.show_domains_description"
2531
2539
  msgstr ""
2532
2540
  "For users visit the user area with this domain, Specify they can see the proxies of which domains.\n"
@@ -2522,6 +2522,14 @@ msgstr ""
2522
2522
  "دامنه انتخاب شده برای REALITY در همان ASN نیست. برای استفاده بهتر از این "
2523
2523
  "پروتکل، بهتر است یک دامنه در همان ASN پیدا کنید."
2524
2524
 
2525
+ msgid "domain.resolveip.description"
2526
+ msgstr ""
2527
+ "به جای نام دامنه از IP در پروکسی‌ها استفاده شود. زمانی مفید است که نویز "
2528
+ "زیادی در DNS وجود دارد."
2529
+
2530
+ msgid "domain.resolveip.label"
2531
+ msgstr "استفاده از IP"
2532
+
2525
2533
  msgid "domain.show_domains_description"
2526
2534
  msgstr ""
2527
2535
  "مشخص کنید کاربرانی که با این دامنه، پنل کاربری را مشاهده می‌کنند، کانفیگ‌های مربوط به کدام دامنه‌ها را مشاهده کنند.\n"
@@ -2484,6 +2484,12 @@ msgstr ""
2484
2484
  "O domínio selecionado para REALITY não está no mesmo ASN.\n"
2485
2485
  "Para melhor aproveitamento do Protocolo, é melhor encontrar um Domínio com o mesmo ASN"
2486
2486
 
2487
+ msgid "domain.resolveip.description"
2488
+ msgstr ""
2489
+
2490
+ msgid "domain.resolveip.label"
2491
+ msgstr ""
2492
+
2487
2493
  msgid "domain.show_domains_description"
2488
2494
  msgstr ""
2489
2495
  "Para os usuários que visitam a área do usuário com este domínio, especifique que eles podem ver os proxies de quais domínios.\n"
@@ -2539,6 +2539,12 @@ msgstr ""
2539
2539
  "Выбранный домен для REALITY не находится в том же ASN. Для более "
2540
2540
  "эффективного использования протокола лучше найти Домен в том же ASN"
2541
2541
 
2542
+ msgid "domain.resolveip.description"
2543
+ msgstr ""
2544
+
2545
+ msgid "domain.resolveip.label"
2546
+ msgstr ""
2547
+
2542
2548
  msgid "domain.show_domains_description"
2543
2549
  msgstr ""
2544
2550
  "Для посетителей пользовательской области с этим доменом, укажите, какие домены они могут видеть.\n"
@@ -2351,6 +2351,12 @@ msgstr "模式"
2351
2351
  msgid "domain.reality.asn_issue"
2352
2352
  msgstr "REALITY 的所选域不在同一 ASN 中。为了更好地使用该协议,最好在同一 ASN 中找到一个域"
2353
2353
 
2354
+ msgid "domain.resolveip.description"
2355
+ msgstr ""
2356
+
2357
+ msgid "domain.resolveip.label"
2358
+ msgstr ""
2359
+
2354
2360
  msgid "domain.show_domains_description"
2355
2361
  msgstr ""
2356
2362
  "对于访问该域的用户区的用户,指定他们可以看到哪些域的代理。\n"
@@ -1125,6 +1125,10 @@
1125
1125
  "reality": {
1126
1126
  "asn_issue": "Selected Domain for REALITY is not in the same ASN. To better use of the Protocol, it is better to find a Domain in the same ASN"
1127
1127
  },
1128
+ "resolveip": {
1129
+ "description": "Use IP instead of domain name in the proxies. Useful when there are huge noise on the DNS.",
1130
+ "label": "Resolve IP"
1131
+ },
1128
1132
  "show_domains_description": "For users visit the user area with this domain, Specify they can see the proxies of which domains.\n<br>\nSuggestion: For a domain with an unfiltered IP and different from the others, select all other domains (except the current domain). As a result, since the use of this IP is not for proxy and it is a simple website, this domain and IP will never be blocked and your users can easily update new profiles."
1129
1133
  },
1130
1134
  "download": "Direct Download",
@@ -1124,6 +1124,10 @@
1124
1124
  "reality": {
1125
1125
  "asn_issue": "دامنه انتخاب شده برای REALITY در همان ASN نیست. برای استفاده بهتر از این پروتکل، بهتر است یک دامنه در همان ASN پیدا کنید."
1126
1126
  },
1127
+ "resolveip": {
1128
+ "description": "به جای نام دامنه از IP در پروکسی‌ها استفاده شود. زمانی مفید است که نویز زیادی در DNS وجود دارد.",
1129
+ "label": "استفاده از IP"
1130
+ },
1127
1131
  "show_domains_description": "مشخص کنید کاربرانی که با این دامنه، پنل کاربری را مشاهده می‌کنند، کانفیگ‌های مربوط به کدام دامنه‌ها را مشاهده کنند.\n<br>\nپیشنهاد: برای یک دامنه با IP فیلتر نشده و متفاوت با بقیه، همه دامنه های دیگر (به جز دامنه فعلی) را انتخاب کنید. در نتیجه از آنجایی که از این IP برای فیلترشکن استفاده نمی‌شود و یک وبسایت ساده است، این دامنه و آی پی هرگز مسدود نمی‌شود و کاربران شما به راحتی می توانند پروفایل های جدید را به روز کنند."
1128
1132
  },
1129
1133
  "download": "دانلود مستقیم",
@@ -1116,6 +1116,10 @@
1116
1116
  "reality": {
1117
1117
  "asn_issue": "O domínio selecionado para REALITY não está no mesmo ASN.\nPara melhor aproveitamento do Protocolo, é melhor encontrar um Domínio com o mesmo ASN"
1118
1118
  },
1119
+ "resolveip": {
1120
+ "description": "",
1121
+ "label": ""
1122
+ },
1119
1123
  "show_domains_description": "Para os usuários que visitam a área do usuário com este domínio, especifique que eles podem ver os proxies de quais domínios.\n<br>\nSugestão: Para um domínio com IP não filtrado e diferente dos demais, selecione todos os outros domínios (exceto o domínio atual). Como resultado, como o uso deste IP não é para proxy e é um site simples, este domínio e IP nunca serão bloqueados e seus usuários poderão facilmente atualizar novos perfis."
1120
1124
  },
1121
1125
  "download": "Download direto",
@@ -1116,6 +1116,10 @@
1116
1116
  "reality": {
1117
1117
  "asn_issue": "Выбранный домен для REALITY не находится в том же ASN. Для более эффективного использования протокола лучше найти Домен в том же ASN"
1118
1118
  },
1119
+ "resolveip": {
1120
+ "description": "",
1121
+ "label": ""
1122
+ },
1119
1123
  "show_domains_description": "Для посетителей пользовательской области с этим доменом, укажите, какие домены они могут видеть.\n<br>\nПредложение: Для домена с IP-адресом не попадащим под фильтры, отличного от других, выберите все остальные домены (кроме текущего). В результате, поскольку этот IP-адрес используется не для прокси-сервера, а для простого веб-сайта, этот домен и IP-адрес никогда не будут заблокированы, и ваши пользователи смогут легко обновлять свои профили."
1120
1124
  },
1121
1125
  "download": "Direct Download",
@@ -1116,6 +1116,10 @@
1116
1116
  "reality": {
1117
1117
  "asn_issue": "REALITY 的所选域不在同一 ASN 中。为了更好地使用该协议,最好在同一 ASN 中找到一个域"
1118
1118
  },
1119
+ "resolveip": {
1120
+ "description": "",
1121
+ "label": ""
1122
+ },
1119
1123
  "show_domains_description": "对于访问该域的用户区的用户,指定他们可以看到哪些域的代理。\n<br>\n建议:对于IP未过滤且与其他域不同的域,选择所有其他域(当前域除外)。因此,由于该 IP 的使用不是用于代理,并且它是一个简单的网站,因此该域名和 IP 永远不会被阻止,您的用户可以轻松更新新的配置文件。"
1120
1124
  },
1121
1125
  "download": "直接下载",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hiddifypanel
3
- Version: 11.0.11
3
+ Version: 11.0.12b1
4
4
  Summary: hiddifypanel multi proxy panel
5
5
  Author: hiddify
6
6
  License:
@@ -1,6 +1,6 @@
1
1
  hiddifypanel/Events.py,sha256=AlnRdjVul0jP-NCT4-zoaQgowoOo-JhdQB4ytetAFKA,723
2
- hiddifypanel/VERSION,sha256=Zvld67Z7jUvyvLRTH3vKfVzHZ3Yy7x9YBcyjaRcLbZA,8
3
- hiddifypanel/VERSION.py,sha256=TamzsGw_L6qmp_cZei7lxWDXlxrIg3mwASZOx5PQr-Q,187
2
+ hiddifypanel/VERSION,sha256=joq5e4Gi-_VooYArjbkgxsGcXgMqXWnIoHK_XSYo1OA,10
3
+ hiddifypanel/VERSION.py,sha256=LU925yaHZFvJY9AGWd54uKxDJb1vM7aV1OPBT5oF_gg,189
4
4
  hiddifypanel/__init__.py,sha256=kigwDO8d9jXyPZLvJAWd6zo-GX3pG_xWf-q2aStz80Y,377
5
5
  hiddifypanel/__main__.py,sha256=IVchnXpK6bm8T3N--mN17HBQNLMeLAjyP7iwzULexB4,218
6
6
  hiddifypanel/auth.py,sha256=LJmH4ROqZv5ej_4m1b0xvbEw2meJTzDR1mFCDm523kE,8041
@@ -44,7 +44,7 @@ hiddifypanel/hutils/node/parent.py,sha256=UbyfvfP4fTSn6HN9oZDjYsKYIejiqW6eApKIfP
44
44
  hiddifypanel/hutils/node/shared.py,sha256=FDSj3e-i3pb3mEv5vcUeX0Km1nxYg1CeAruIq7RwFmU,2540
45
45
  hiddifypanel/hutils/proxy/__init__.py,sha256=V2dGkYT3tji__5YOSmKOMChFYXtlENe1fX6eHqK70Pc,129
46
46
  hiddifypanel/hutils/proxy/clash.py,sha256=JiT3wj48b9ezCGxZoEp5FrhvwfmNKslcF5GMoH9-8OU,7061
47
- hiddifypanel/hutils/proxy/shared.py,sha256=JRUNhBbxcASAFZrQCwc83hBF5ZATCCrYtX1zlGUx9v8,24248
47
+ hiddifypanel/hutils/proxy/shared.py,sha256=xJeC8kHX_pbtrU96Rl_i4YCcbqTscmB-sRRwsUfQUCE,24072
48
48
  hiddifypanel/hutils/proxy/singbox.py,sha256=Fmmzoake-gpnRB5yfTyQvd1dB-10WKwhJt4vhiKzJZQ,11722
49
49
  hiddifypanel/hutils/proxy/wireguard.py,sha256=gij01BYXII-RxAh3Yky0o3yce20HJKeHtu1KNwb0Uzk,934
50
50
  hiddifypanel/hutils/proxy/xray.py,sha256=IypJKIGxZnjrJ1SsXa-412uWdJtmCcEavZMCyIPHH7U,11793
@@ -54,8 +54,8 @@ hiddifypanel/models/admin.py,sha256=bbvpbquyPTmRjqwVT4zVC3bIF39zZYv8snlOR5XIF90,
54
54
  hiddifypanel/models/base_account.py,sha256=jVO4haLwTsiE7u4fWoDhhRZ_NjbO7hVJhry8k-Vnrzk,3507
55
55
  hiddifypanel/models/child.py,sha256=IhmCszhUgi1QXbWgji4UDjHV7_OyzLSLsW86BQWFys4,3009
56
56
  hiddifypanel/models/config.py,sha256=Ny3MXiPC-CrF8-xAEmRth6d_lfpDiWZHbCctyJNyWgg,6382
57
- hiddifypanel/models/config_enum.py,sha256=7Q8MZUwiKGGe1Tz7qmIsFhiKZcx8ZW0sGTxviYT98F8,17100
58
- hiddifypanel/models/domain.py,sha256=ftfHbdLeiUmzBCQisrAZ2geHX8KovEFXCTwq8OtOs8k,9523
57
+ hiddifypanel/models/config_enum.py,sha256=x9vUT4qvSrxlZsXAFy-GlcDac2pD4fM11-N7g6eNmG4,17099
58
+ hiddifypanel/models/domain.py,sha256=DuHBH9mKwGTCcZXyGxK32eFtT2qAH3oHbhJwgfNchWk,9692
59
59
  hiddifypanel/models/parent_domain.py,sha256=bs5F1neOAQu9XHEk3QQTBM4p2iuebM4cnAQqwfNjCtg,2291
60
60
  hiddifypanel/models/proxy.py,sha256=Bjagdx7IPMlOLBDZ5KPJvwiWQo-oYtjuJEUs_DhhQU0,3487
61
61
  hiddifypanel/models/report.py,sha256=FLoZdsIJd2ZlT6WidTQShi1GjJYk5ikS-KskzSnc9Mw,918
@@ -72,7 +72,7 @@ hiddifypanel/panel/common.py,sha256=pMxdgt37ubIZroFBuvHfN5qXNp8kytVTIzVxzZA_X_I,
72
72
  hiddifypanel/panel/custom_widgets.py,sha256=ojnLz-kAa1juZVW1JoCy8FAjvWNORKNpFIb8OnY0lLw,3767
73
73
  hiddifypanel/panel/hiddify.py,sha256=nwLTMYa_LyNuS26BPOO8jfyrslHX2MbQxN0o4lxCTd4,15687
74
74
  hiddifypanel/panel/hlogger.py,sha256=1AQQCs1lg0Y1AYIASRjxWAdFE92HENeg3z1rFycOoY0,1215
75
- hiddifypanel/panel/init_db.py,sha256=nhb5hGryptfbbGD9vs9NhIk32GFGE73IbgSNDa78Q3E,39520
75
+ hiddifypanel/panel/init_db.py,sha256=FcUFkbuWF654Wj1dxXzP14Ib12zfNwesE6hXAdjL28o,39671
76
76
  hiddifypanel/panel/run_commander.py,sha256=cXCFVvZ6iTzab3EOZ-Eq3aOeIqfgzgt2ppNaxm_3OJI,3205
77
77
  hiddifypanel/panel/usage.py,sha256=kQAz9nfHt3Mcfa8kLHdrpD408DZEFDT7T1xFV6MlDQE,11991
78
78
  hiddifypanel/panel/admin/Actions.py,sha256=o_ENbphriVrbRJkx9nvrkpaliuMIfp34sscMkZJ3P5s,8578
@@ -80,7 +80,7 @@ hiddifypanel/panel/admin/AdminstratorAdmin.py,sha256=X8MI3DtW62vJqFRp97M_CxSdB-N
80
80
  hiddifypanel/panel/admin/Backup.py,sha256=BKSoAZgw1j16P1Jh9vMqGj7ZfB2m-WafDK0C5vil5FY,3634
81
81
  hiddifypanel/panel/admin/ConfigAdmin.py,sha256=0hnLY-8BxrpVnrAcQaedWjHnRUq1X_Styi_ZCZ2ivds,2876
82
82
  hiddifypanel/panel/admin/Dashboard.py,sha256=JOqZLHxPOYKQYQVJ7AtHAkilH-anJZQyK1rQrgCJUeA,3798
83
- hiddifypanel/panel/admin/DomainAdmin.py,sha256=dCVT2zFLIbvVXy9ml4v95lNdEQfB6A3NoRMu_jko0GM,16539
83
+ hiddifypanel/panel/admin/DomainAdmin.py,sha256=snCzrD5JmbAgHPN4n2zLLaGwf3WYdIfkGHLXagJ5DQ8,16660
84
84
  hiddifypanel/panel/admin/NodeAdmin.py,sha256=QAHQjF7e7F4KqsWNWpMt7SoLANlFEborVtWQV9OXJ2E,3102
85
85
  hiddifypanel/panel/admin/ProxyAdmin.py,sha256=HtuYHkZ8LCrYtjF2xO2i7lyw_KtOTBYCPu0bNWR4fOs,5364
86
86
  hiddifypanel/panel/admin/QuickSetup.py,sha256=7ysSAlS7yJerstTDWhuhEwGyoTqpkry2-SfEbuP1VuY,12689
@@ -833,7 +833,7 @@ hiddifypanel/templates/admin.ht.old,sha256=e9FBo9YPi7zFVidg8jS6JhOOsYdBbNPxfpTWG
833
833
  hiddifypanel/templates/donation.html,sha256=Oft3WENpSnwpbDgMw3MnhQIlQhuN_TDKm54qd4_FwIk,741
834
834
  hiddifypanel/templates/error.html,sha256=Tnu3mMZ6zvFcATU6_OY1stljVPd9Djnxm3LV7Zx4zck,476
835
835
  hiddifypanel/templates/fake.html,sha256=AfAN68M52vzE5OgR432HbtXF6XXWLZ2n5sgy2YKpHgQ,14129
836
- hiddifypanel/templates/flaskadmin-layout.html,sha256=cmLZLegeqlM5BVSTni_tHjCn-X38BmH1MYy9YfhSao0,8048
836
+ hiddifypanel/templates/flaskadmin-layout.html,sha256=k3hMTkuClSBQ1o6ADxXjSigDPzhDDOOU7_lOgXEU1jU,8112
837
837
  hiddifypanel/templates/github_issue_body.j2,sha256=6Z4QF-cOAaUxDtRQXT8H4O9SrZ3TGoxgpjnfIpGbsxo,474
838
838
  hiddifypanel/templates/lte-master.html,sha256=jYhcNj8SuMOPT35OEG4e1sLWm03Vq53n4ynf3SdOWj4,1585
839
839
  hiddifypanel/templates/macros.html,sha256=HlnXbIMN8i37fVusBdfw0QfVkImnFpZw9zbmtpAT4p8,4139
@@ -842,28 +842,28 @@ hiddifypanel/templates/redirect.html,sha256=K9x_O4P96vEkqBhOXIhoGrWw1KIqd2bL0BjI
842
842
  hiddifypanel/templates/static.html,sha256=jp6q4wtx-k2A_cjqJoNiMS7Ee30arE45qI3ev4d5ky4,165
843
843
  hiddifypanel/templates/hiddify-flask-admin/actions.html,sha256=2NeITe2e-lPKCk_o511tCIqVtrPu8LYHE1wTCtrFUrI,1331
844
844
  hiddifypanel/templates/hiddify-flask-admin/list.html,sha256=MBGrTqZpzNLe4sZy0RozvXNr8seFUQc2C6v88BJtNWc,11095
845
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=Q4f8pDlINJyhlyHflxfeHXiYwnAV7sQVn9hUz_918vU,81676
846
- hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=tH2xN-ZD2QMyAkGBrqdPc5xMbotaDvfNhoQgGieHmAA,85045
847
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=rzywk0j4KEfZalyMnxK9FHCQUa-K_zGnqObfPsZct04,104622
848
- hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=UFCQQk8Xp5UVh18jqTn9h8ofc5rCBGRRorVCxLNAXfU,109594
849
- hiddifypanel/translations/my/LC_MESSAGES/messages.mo,sha256=w-eurbAH_9t7t4B15ihJsGK1g3adCvGJ58s4woqynsI,139090
845
+ hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=uzqVMpC1XgDcXi-Gzg11esYcKbtuPO2cQ6YAGYr4PUg,81862
846
+ hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=u_oPub6KzdSDKrqKzm7FC_1pKCYTG4QIcxdQbqu_eFs,85241
847
+ hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=mJ7rVnthOv_h6D8lNiGUmwO_vTbb1W9y7djFpoOTiYE,104895
848
+ hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=LjMKyC6OAD8vOG5e2leV9PanjQYjEyV2lNM4JaOaeOw,109877
849
+ hiddifypanel/translations/my/LC_MESSAGES/messages.mo,sha256=BotcFrWd3i1cGbBs2VNafh-nTF5suuR03tk-t4gLdKU,139090
850
850
  hiddifypanel/translations/my/LC_MESSAGES/messages.po,sha256=PvYBwQWXaUpAoqy90oow-sH-ZyPE7Fm_l-3FrXT_vEA,141985
851
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=KpqVNpjlluw2wrl3aPxgxiSZb2RtYIciG79zzwFPMPU,80947
852
- hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=pv73X2o2Iu6uPB4p0KQZf3bZDXit8BkF6vpld6WnfGU,86182
853
- hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=yLpgxIqXNS_0f4n6jJOLGq-XMSRlf-B6cT7TJFmoHdA,108744
854
- hiddifypanel/translations/ru/LC_MESSAGES/messages.po,sha256=0icV7NCGDwDWIDvKtxnRCK77TXKxopHAFAHjSoOirbE,114185
855
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=S0_Mc4Yvmq6zu152rMcn9Z6bCRSnYnFgFszAsj3Tgdw,75446
856
- hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=z_dw_uNhx9bGyBwS_0-r-mNYERcx4zY9GgGU_K-GnNs,80292
857
- hiddifypanel/translations.i18n/en.json,sha256=S8ZMPi2KAoylyfAHTFd6ZeI-pcx87GLmEI0SbbI-jpk,73876
858
- hiddifypanel/translations.i18n/fa.json,sha256=LFB3fkM7BSRXFH9T0K70xNXJsNuIr8HOtqxDxjd38mQ,98435
851
+ hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=ymffr9WMmGGF-4NdGp6_jKmwY0QzfKKEI5q_-xvDKII,80947
852
+ hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=Wswd3gUKUp3F-G8apMoTXd7WRvPImYbGXv22hTLvfEA,86272
853
+ hiddifypanel/translations/ru/LC_MESSAGES/messages.mo,sha256=lfLw0i1fPN9mGr-ne2-p1K-uJ0d34cf_d0WmTPKG28E,108744
854
+ hiddifypanel/translations/ru/LC_MESSAGES/messages.po,sha256=rI53bLwvV6SpSTNO_St3JY9fPE1WcAdKMAfpt76nQ-o,114275
855
+ hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=7H9xm9IMsRAeCjYqc_hedTMo9v9C5SAsq6TlreS7xqI,75446
856
+ hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=wf6-t8InQ53DN2oBx5BLnb7ZMwMRBUNhmD8qSM403ac,80382
857
+ hiddifypanel/translations.i18n/en.json,sha256=U38E-aBW-oKTTigNyNxrR7zT9saeYFf2E4wWJRq-ulk,74045
858
+ hiddifypanel/translations.i18n/fa.json,sha256=xaKMnDFCzYVPkEt31kDX8ALj52kds3X2y6Ny-jJA2TM,98691
859
859
  hiddifypanel/translations.i18n/fr.json,sha256=mAZvPzYQhQ1zleLr21cxeB99mb8gvoJBlw7_8AsJgQc,80895
860
860
  hiddifypanel/translations.i18n/my.json,sha256=FWUSUOcHAmVBaq7KL2aX5W8ywsElsy_Dj_ZHuT2EMpE,137466
861
- hiddifypanel/translations.i18n/pt.json,sha256=0GA2ZmV-xd1ljoKzRikMynV3ViZqE-t05MoG3jTi9QA,75209
862
- hiddifypanel/translations.i18n/ru.json,sha256=YQtSRYSo-CLs8Cetwf-dFGikQzGZqNJrYoM24pymkK8,102996
863
- hiddifypanel/translations.i18n/zh.json,sha256=toVy3NEw0n7MS4ZbRZd-5Fh_n1wGlZsviUZf8XPZ6CE,69742
864
- hiddifypanel-11.0.11.dist-info/licenses/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
865
- hiddifypanel-11.0.11.dist-info/METADATA,sha256=8HSIL4UNrmQodi4HVLWFf4tYFl5Roh0yg4nVmYvG3DM,25625
866
- hiddifypanel-11.0.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
867
- hiddifypanel-11.0.11.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
868
- hiddifypanel-11.0.11.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
869
- hiddifypanel-11.0.11.dist-info/RECORD,,
861
+ hiddifypanel/translations.i18n/pt.json,sha256=MxeCi0cpmNyJbo8swgw0F1pQYRhRWy3sY7F_WqbkkKM,75278
862
+ hiddifypanel/translations.i18n/ru.json,sha256=v4REl-NcInzLm6pR3Tnzxdr4mP90zfpsPMJ3vI--JB4,103065
863
+ hiddifypanel/translations.i18n/zh.json,sha256=BDHwuEp6dDZ2OnovdasTmUEwbUzE1C1HRKIee3fOUX0,69811
864
+ hiddifypanel-11.0.12b1.dist-info/licenses/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
865
+ hiddifypanel-11.0.12b1.dist-info/METADATA,sha256=RRezPq51WgRk6ekuNjha9VJA_UhQeQnFwu4v1KDQU0E,25627
866
+ hiddifypanel-11.0.12b1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
867
+ hiddifypanel-11.0.12b1.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
868
+ hiddifypanel-11.0.12b1.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
869
+ hiddifypanel-11.0.12b1.dist-info/RECORD,,