hiddifypanel 10.14.0__py3-none-any.whl → 10.15.0.dev1__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 (106) hide show
  1. hiddifypanel/VERSION +1 -1
  2. hiddifypanel/VERSION.py +2 -2
  3. hiddifypanel/auth.py +15 -4
  4. hiddifypanel/base.py +11 -3
  5. hiddifypanel/cache.py +43 -25
  6. hiddifypanel/database.py +9 -0
  7. hiddifypanel/drivers/singbox_api.py +2 -14
  8. hiddifypanel/drivers/xray_api.py +0 -4
  9. hiddifypanel/hutils/__init__.py +1 -0
  10. hiddifypanel/hutils/convert.py +13 -2
  11. hiddifypanel/hutils/crypto.py +21 -2
  12. hiddifypanel/hutils/flask.py +19 -5
  13. hiddifypanel/hutils/importer/xui.py +5 -2
  14. hiddifypanel/hutils/node/__init__.py +3 -0
  15. hiddifypanel/hutils/node/api_client.py +76 -0
  16. hiddifypanel/hutils/node/child.py +147 -0
  17. hiddifypanel/hutils/node/parent.py +100 -0
  18. hiddifypanel/hutils/node/shared.py +65 -0
  19. hiddifypanel/hutils/proxy/shared.py +15 -3
  20. hiddifypanel/models/__init__.py +2 -2
  21. hiddifypanel/models/admin.py +14 -2
  22. hiddifypanel/models/base_account.py +3 -3
  23. hiddifypanel/models/child.py +30 -16
  24. hiddifypanel/models/config.py +39 -15
  25. hiddifypanel/models/config_enum.py +55 -8
  26. hiddifypanel/models/domain.py +28 -20
  27. hiddifypanel/models/parent_domain.py +2 -2
  28. hiddifypanel/models/proxy.py +13 -4
  29. hiddifypanel/models/report.py +2 -3
  30. hiddifypanel/models/usage.py +2 -2
  31. hiddifypanel/models/user.py +13 -4
  32. hiddifypanel/panel/admin/Actions.py +4 -6
  33. hiddifypanel/panel/admin/AdminstratorAdmin.py +13 -2
  34. hiddifypanel/panel/admin/Dashboard.py +5 -10
  35. hiddifypanel/panel/admin/DomainAdmin.py +12 -11
  36. hiddifypanel/panel/admin/NodeAdmin.py +6 -2
  37. hiddifypanel/panel/admin/ProxyAdmin.py +4 -3
  38. hiddifypanel/panel/admin/SettingAdmin.py +60 -21
  39. hiddifypanel/panel/admin/UserAdmin.py +10 -2
  40. hiddifypanel/panel/admin/templates/index.html +1 -1
  41. hiddifypanel/panel/admin/templates/parent_dash.html +2 -4
  42. hiddifypanel/panel/cli.py +16 -16
  43. hiddifypanel/panel/commercial/ProxyDetailsAdmin.py +10 -5
  44. hiddifypanel/panel/commercial/__init__.py +7 -5
  45. hiddifypanel/panel/commercial/restapi/v2/admin/__init__.py +0 -5
  46. hiddifypanel/panel/commercial/restapi/v2/admin/admin_info_api.py +2 -2
  47. hiddifypanel/panel/commercial/restapi/v2/admin/admin_log_api.py +4 -5
  48. hiddifypanel/panel/commercial/restapi/v2/admin/admin_user_api.py +8 -35
  49. hiddifypanel/panel/commercial/restapi/v2/admin/admin_users_api.py +4 -4
  50. hiddifypanel/panel/commercial/restapi/v2/admin/schema.py +157 -0
  51. hiddifypanel/panel/commercial/restapi/v2/admin/server_status_api.py +3 -3
  52. hiddifypanel/panel/commercial/restapi/v2/admin/user_api.py +9 -73
  53. hiddifypanel/panel/commercial/restapi/v2/admin/users_api.py +1 -1
  54. hiddifypanel/panel/commercial/restapi/v2/child/__init__.py +18 -0
  55. hiddifypanel/panel/commercial/restapi/v2/child/actions.py +63 -0
  56. hiddifypanel/panel/commercial/restapi/v2/child/register_parent_api.py +34 -0
  57. hiddifypanel/panel/commercial/restapi/v2/child/schema.py +7 -0
  58. hiddifypanel/panel/commercial/restapi/v2/child/sync_parent_api.py +21 -0
  59. hiddifypanel/panel/commercial/restapi/v2/panel/__init__.py +13 -0
  60. hiddifypanel/panel/commercial/restapi/v2/panel/info.py +18 -0
  61. hiddifypanel/panel/commercial/restapi/v2/panel/ping_pong.py +23 -0
  62. hiddifypanel/panel/commercial/restapi/v2/panel/schema.py +7 -0
  63. hiddifypanel/panel/commercial/restapi/v2/parent/__init__.py +16 -0
  64. hiddifypanel/panel/commercial/restapi/v2/parent/register_api.py +65 -0
  65. hiddifypanel/panel/commercial/restapi/v2/parent/schema.py +115 -0
  66. hiddifypanel/panel/commercial/restapi/v2/parent/status_api.py +26 -0
  67. hiddifypanel/panel/commercial/restapi/v2/parent/sync_api.py +53 -0
  68. hiddifypanel/panel/commercial/restapi/v2/parent/usage_api.py +57 -0
  69. hiddifypanel/panel/commercial/telegrambot/admin.py +1 -2
  70. hiddifypanel/panel/common.py +21 -6
  71. hiddifypanel/panel/hiddify.py +9 -80
  72. hiddifypanel/panel/init_db.py +43 -12
  73. hiddifypanel/panel/usage.py +28 -15
  74. hiddifypanel/panel/user/templates/home/usage.html +1 -1
  75. hiddifypanel/panel/user/templates/new.html +1 -1
  76. hiddifypanel/static/css/custom.css +13 -0
  77. hiddifypanel/static/images/hiddify.png +0 -0
  78. hiddifypanel/static/new/assets/{index-bce9b1a6.js → index-ccb9873c.js} +65 -65
  79. hiddifypanel/templates/admin-layout.html +24 -40
  80. hiddifypanel/templates/master.html +23 -41
  81. hiddifypanel/translations/en/LC_MESSAGES/messages.mo +0 -0
  82. hiddifypanel/translations/en/LC_MESSAGES/messages.po +90 -0
  83. hiddifypanel/translations/fa/LC_MESSAGES/messages.mo +0 -0
  84. hiddifypanel/translations/fa/LC_MESSAGES/messages.po +91 -1
  85. hiddifypanel/translations/pt/LC_MESSAGES/messages.mo +0 -0
  86. hiddifypanel/translations/pt/LC_MESSAGES/messages.po +98 -6
  87. hiddifypanel/translations/ru/LC_MESSAGES/messages.mo +0 -0
  88. hiddifypanel/translations/ru/LC_MESSAGES/messages.po +90 -0
  89. hiddifypanel/translations/zh/LC_MESSAGES/messages.mo +0 -0
  90. hiddifypanel/translations/zh/LC_MESSAGES/messages.po +92 -2
  91. hiddifypanel/translations.i18n/en.json +56 -0
  92. hiddifypanel/translations.i18n/fa.json +57 -1
  93. hiddifypanel/translations.i18n/pt.json +63 -7
  94. hiddifypanel/translations.i18n/ru.json +56 -0
  95. hiddifypanel/translations.i18n/zh.json +58 -2
  96. {hiddifypanel-10.14.0.dist-info → hiddifypanel-10.15.0.dev1.dist-info}/METADATA +47 -47
  97. {hiddifypanel-10.14.0.dist-info → hiddifypanel-10.15.0.dev1.dist-info}/RECORD +103 -85
  98. hiddifypanel/panel/commercial/restapi/v2/DTO.py +0 -9
  99. hiddifypanel/panel/commercial/restapi/v2/hello/__init__.py +0 -16
  100. hiddifypanel/panel/commercial/restapi/v2/hello/hello.py +0 -32
  101. /hiddifypanel/static/images/{hiddify1.png → hiddify-old.png} +0 -0
  102. /hiddifypanel/static/{new/assets/hiddify-logo-noroz-559c8dcb.png → images/hiddify2.png} +0 -0
  103. {hiddifypanel-10.14.0.dist-info → hiddifypanel-10.15.0.dev1.dist-info}/LICENSE.md +0 -0
  104. {hiddifypanel-10.14.0.dist-info → hiddifypanel-10.15.0.dev1.dist-info}/WHEEL +0 -0
  105. {hiddifypanel-10.14.0.dist-info → hiddifypanel-10.15.0.dev1.dist-info}/entry_points.txt +0 -0
  106. {hiddifypanel-10.14.0.dist-info → hiddifypanel-10.15.0.dev1.dist-info}/top_level.txt +0 -0
@@ -9,25 +9,22 @@
9
9
  {% block nav_bar %}
10
10
  {% include "donation.html" %}
11
11
  <!-- Navbar -->
12
- <nav class="main-header hold-transition sidebar-mini-md navbar navbar-expand {{" navbar-dark" if g.darkmode
13
- else "bg-white navbar-light" }} border-bottom">
12
+ <nav class="main-header hold-transition sidebar-mini-md navbar navbar-expand {{'navbar-dark' if g.darkmode else 'bg-white navbar-light' }} border-bottom">
14
13
  <!-- Left navbar links -->
15
14
 
16
15
 
17
16
 
18
17
  <div class="navbar-nav">
19
- <a class="nav-link" data-widget="pushmenu" href="#"><i class="fa fa-bars"></i> <span
20
- class="brand-text font-weight-light">{{_("master.page-title")}}
18
+ <a class="nav-link" data-widget="pushmenu" href="#"><i class="fa fa-bars"></i> <span class="brand-text font-weight-light">{{_("master.page-title")}}
21
19
  <!-- <span class="badge d-none d-sm-inline-block">{{version}}</span> -->
22
- {% if hconfig(ConfigEnum.is_parent) %}
20
+ {% if hutils.node.is_parent() %}
23
21
  {{_("Parent Panel")}}
24
- {% elif hconfig(ConfigEnum.parent_panel) %}
25
- {{g.child.name}}
22
+ {% elif hutils.node.is_child() %}
23
+ Child Panel
26
24
  {% endif %}
27
25
  </a>
28
26
  <a class="nav-link" href="https://github.com/hiddify/Hiddify-Manager/" target="_blank">
29
- <img alt="GitHub Repo stars"
30
- src="https://img.shields.io/github/stars/hiddify/hiddify-manager?style=social&logo=star&label=%E2%AD%90">
27
+ <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/hiddify/hiddify-manager?style=social&logo=star&label=%E2%AD%90">
31
28
 
32
29
  </a>
33
30
  </div>
@@ -41,11 +38,10 @@
41
38
  <i class="fa-solid fa-moon"></i>
42
39
  </a>
43
40
  {% endif %}
44
- {% if 0 and not hconfig(ConfigEnum.is_parent) %}
41
+ {% if 0 and not hutils.node.is_parent() %}
45
42
 
46
43
 
47
- <a class="nav-link btn btn-outline-secondary form_post d-none d-md-flex"
48
- href="{{hurl_for('admin.Actions:apply_configs')}}">
44
+ <a class="nav-link btn btn-outline-secondary form_post d-none d-md-flex" href="{{hurl_for('admin.Actions:apply_configs')}}">
49
45
  {{icon('solid','bolt','nav-icon')}} {{_('admin.Actions:apply_configs')}}
50
46
  </a>
51
47
 
@@ -59,15 +55,13 @@
59
55
 
60
56
 
61
57
  <!-- Main Sidebar Container -->
62
- <aside id="main-sidebar" class="main-sidebar {{ " sidebar-dark-primary"}} elevation-4">
58
+ <aside id="main-sidebar" class="main-sidebar {{'sidebar-dark-primary' if g.darkmode else ''}} elevation-4">
63
59
  <!-- Brand Logo -->
64
60
 
65
- <a href="https://github.com/hiddify/hiddify-manager/wiki" class=""
66
- style="text-align: center; color: white;display: block;">
67
- <img src="{{static_url_for(filename='images/WhiteLogo.png')}}" class=" "
68
- style="width: 50%;opacity: .8;margin: auto;display:block" />
61
+ <a href="https://github.com/hiddify/hiddify-manager/wiki" class="" style="text-align: center; color: white;display: block;">
62
+ <img src="{{static_url_for(filename='images/WhiteLogo.png')}}" class=" " style="width: 50%;opacity: .8;margin: auto;display:block" />
69
63
  <div class="ltr" style="font-size: 8pt;">{{version}}</div>
70
- {% if False and hconfig(ConfigEnum.is_parent) %}
64
+ {% if False and hutils.node.is_parent() %}
71
65
  <br>
72
66
  <!-- <span class="badge">{{_("Parent Panel")}}</span> -->
73
67
 
@@ -88,23 +82,18 @@
88
82
  <div class="n3av nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
89
83
  <!-- Add icons to the links using the .nav-icon class
90
84
  with font-awesome or any other icon font library -->
91
- {{ render_nav_item('admin.Dashboard:index', icon('solid','house','nav-icon')+(_("Parent Panel") if
92
- hconfig(ConfigEnum.is_parent) else _('admin.menu.home')),_use_li=True)
93
- }}
85
+ {{ render_nav_item('admin.Dashboard:index', icon('solid','house','nav-icon')+(_("Parent Panel") if hutils.node.is_parent() else _('admin.menu.home')),_use_li=True)}}
94
86
 
95
- {% if hconfig(ConfigEnum.parent_panel) %}
96
- {# render_nav_item(hconfig(ConfigEnum.parent_panel)+"/admin/user/",
97
- icon('solid','user','nav-icon')+_('admin.menu.user'),_badge=_('in parent panel') ,_use_li=True) #}
87
+ {% if hutils.node.is_child() %}
88
+ {{ render_nav_item(hconfig(ConfigEnum.parent_panel)+"/"+g.account.uuid+"/admin/user/",icon('solid','user-secret','nav-icon')+_('admin.menu.user'),_badge=_('in parent panel') ,_use_li=True) }}
98
89
  {% else %}
99
- {{ render_nav_item('flask.user.index_view', icon('solid','user','nav-icon')+_('admin.menu.user'),_use_li=True)
100
- }}
90
+ {{ render_nav_item('flask.user.index_view', icon('solid','user','nav-icon')+_('admin.menu.user'),_use_li=True)}}
101
91
  {% endif %}
102
- {% if hconfig(ConfigEnum.parent_panel) %}
103
- {{ render_nav_item(hconfig(ConfigEnum.parent_panel)+"/admin/adminuser/",
104
- icon('solid','user-secret','nav-icon')+_('Admins'),_badge=_('in parent panel') ,_use_li=True) }}
92
+
93
+ {% if hutils.node.is_child() %}
94
+ {{ render_nav_item(hconfig(ConfigEnum.parent_panel)+"/"+g.account.uuid+"/admin/adminuser/",icon('solid','user-secret','nav-icon')+_('Admins'),_badge=_('in parent panel') ,_use_li=True) }}
105
95
  {% else %}
106
- {{ render_nav_item('flask.adminuser.index_view',
107
- icon('solid','user-secret','nav-icon')+_('Admins'),_use_li=True) }}
96
+ {{ render_nav_item('flask.adminuser.index_view', icon('solid','user-secret','nav-icon')+_('Admins'),_use_li=True) }}
108
97
  {% endif %}
109
98
 
110
99
 
@@ -113,8 +102,7 @@
113
102
  request.endpoint or "Dashboard" in request.endpoint) else True %}
114
103
  <li class="nav-item {{'menu-open' if settings_active else ''}}">
115
104
 
116
- <a id=href="#" data-target="#setting-sidebar"
117
- class="nav-link">{{icon('solid','gear','nav-icon')+_('admin.menu.config')}}</a>
105
+ <a id="" href="#" data-target="#setting-sidebar" class="nav-link">{{icon('solid','gear','nav-icon')+_('admin.menu.config')}}</a>
118
106
 
119
107
  </li>
120
108
  {% endif %}
@@ -129,21 +117,17 @@
129
117
  {% if g.account.mode=="super_admin" %}
130
118
  <li class="nav-item {{'menu-open' if action_active else ''}}">
131
119
 
132
- <a id=href="#" data-target="#action-sidebar"
133
- class="nav-link">{{icon('solid','suitcase','nav-icon')+_('admin.actions.title')}} <i
134
- class="right fas fa-angle-left"></i></a>
120
+ <a id=href="#" data-target="#action-sidebar" class="nav-link">{{icon('solid','suitcase','nav-icon')+_('admin.actions.title')}} <i class="right fas fa-angle-left"></i></a>
135
121
 
136
122
  </li>
137
123
  {% endif %}
138
124
 
139
125
  <li class="nav-item">
140
126
  <a href="https://github.com/hiddify/hiddify-manager/wiki/{{'%D9%87%D9%85%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%E2%80%8C%D9%87%D8%A7-%D9%88-%D9%88%DB%8C%D8%AF%D8%A6%D9%88%D9%87%D8%A7' if get_locale()=='fa' else 'All-tutorials-and-videos'}}"
141
- target="_blank"
142
- class=" nav-link">{{icon('solid','circle-question','nav-icon')+_('admin.menu.support')}}</a>
127
+ target="_blank" class=" nav-link">{{icon('solid','circle-question','nav-icon')+_('admin.menu.support')}}</a>
143
128
  </li>
144
129
  <li class="nav-item d-none">
145
- <a href="https://t.me/hiddify" target="_blank"
146
- class="nav-link">{{icon('brands','telegram','nav-icon')+_('admin.menu.telegram')}}</a>
130
+ <a href="https://t.me/hiddify" target="_blank" class="nav-link">{{icon('brands','telegram','nav-icon')+_('admin.menu.telegram')}}</a>
147
131
  </li>
148
132
  <li class="nav-item">
149
133
  {% set issue_link = generate_github_issue_link_for_admin_sidebar() %}
@@ -20,35 +20,25 @@
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')}}"
24
- 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')}}" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
25
24
  rel="apple-touch-startup-image" />
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)"
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)"
28
26
  rel="apple-touch-startup-image" />
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)"
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)"
31
28
  rel="apple-touch-startup-image" />
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)"
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)"
34
30
  rel="apple-touch-startup-image" />
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)"
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)"
37
32
  rel="apple-touch-startup-image" />
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)"
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)"
40
34
  rel="apple-touch-startup-image" />
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)"
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)"
43
36
  rel="apple-touch-startup-image" />
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)"
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)"
46
38
  rel="apple-touch-startup-image" />
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)"
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)"
49
40
  rel="apple-touch-startup-image" />
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)"
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)"
52
42
  rel="apple-touch-startup-image" />
53
43
  <link rel="icon" type="image/x-icon" href="{{ static_url_for( filename='images/favicon.ico')}}">
54
44
  <link rel="manifest" href="{{ hurl_for('common_bp.LoginView:create_pwa_manifest',secret_uuid=g.account.uuid or '')}}">
@@ -70,8 +60,7 @@
70
60
  <link rel="stylesheet" href="{{static_url_for(filename='plugins/datatables/extensions/Responsive/css/responsive.bootstrap4.min.css')}}"> -->
71
61
 
72
62
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.13.2/css/dataTables.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">
63
+ <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/responsive/2.4.0/css/responsive.bootstrap4.min.css">
75
64
 
76
65
  <link rel="stylesheet" href="{{ static_url_for( filename='css/custom.css',version=5.23 ) }}">
77
66
  {% if get_locale()=='fa' %}
@@ -90,10 +79,10 @@
90
79
 
91
80
  <body class="hold-transition layout-fixed {{" dark-mode" if g.darkmode else "" }} {% block bodyclass %}sidebar-collapse{%endblock%}">
92
81
  <div id="splash_screen">
93
- <center>
94
-
82
+ <center>
83
+
95
84
  <img src="{{static_url_for( filename='images/hiddify.png' )}}" />
96
-
85
+
97
86
 
98
87
  <a href="https://github.com/hiddify/hiddify-manager/wiki">
99
88
  <h1 class="title">{{_('user.home.title')}}</h1><br>Powered by hiddify.com
@@ -152,21 +141,19 @@
152
141
  <footer class="main-footer d-flex flex-wrap justify-content-between align-items-center " dir="ltr">
153
142
  <div class="nav col-md-8 d-flex align-items-center">
154
143
 
155
- <strong><span class="mb-3 mb-md-0 text-muted">© 2023 Hiddify {{"Central" if hconfig(ConfigEnum.is_parent) else
144
+ <strong><span class="mb-3 mb-md-0 text-muted">© 2023 Hiddify {{"Central" if hutils.node.is_parent() else
156
145
  ""}} <span class="badge">{{version}}</span>
157
146
  </span>
158
147
  </strong>
159
148
  </div>
160
149
 
161
150
  <ul class="nav col-md-4 justify-content-end list-unstyled d-flex">
162
- <li class="ms-3"><a class="text-secondary" href="https://github.com/hiddify/hiddify-manager/wiki"><i
163
- class="fa-brands fa-github"></i></a></li>
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>
164
152
  <li class="ms-3"><a class="text-danger" href="https://youtube.com/@hiddify/videos">
165
153
  &nbsp; <i class="fa-brands fa-square-youtube fa-margin"></i> </a></li>
166
154
  <li class="ms-3"><a class="text-primary" href="https://twitter.com/intent/follow?screen_name=hiddify_com">
167
155
  &nbsp; <i class="fa-brands fa-square-twitter fa-margin"></i> </a></li>
168
- <li class="ms-3"><a class="text-primary" href="https://t.me/hiddify">&nbsp; <i
169
- class="fa-brands fa-telegram 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>
170
157
  </ul>
171
158
 
172
159
  </footer>
@@ -176,8 +163,7 @@
176
163
  </div>
177
164
  <!-- ./wrapper -->
178
165
 
179
- {#modal("guide-modal","","<video id='guide-video' controls
180
- style='max-height: 100%; max-width: 100%;width: auto; height: auto;'>
166
+ {#modal("guide-modal","","<video id='guide-video' controls style='max-height: 100%; max-width: 100%;width: auto; height: auto;'>
181
167
  <source id='guide-video-mp4' type='video/mp4'>
182
168
  </video>")#}
183
169
 
@@ -196,10 +182,8 @@
196
182
  <div class="btn-group">
197
183
  <a id='qrcode-link' class="btn btn-primary copy-link" href=""><i class="fa-regular fa-copy"></i>
198
184
  {{_("copy")}} </a>
199
- <a id="share-link-redirect" class="btn btn-success copy-link" href=""><i
200
- class="fa-solid fa-share-from-square"></i> {{_('clickable copy')}}</a>
201
- <a target="_blank" id="share-link-open" class="btn btn-secondary" href=""><i
202
- class="fa-solid fa-arrow-up-right-from-square"></i> {{_('open')}}</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>
203
187
  </div>
204
188
  <br />
205
189
  <div id="qrcode" style="margin:10px;padding:10px;"></div>
@@ -225,7 +209,7 @@
225
209
  wrappers[i].style.display = 'initial';
226
210
  }
227
211
 
228
- }, document.URL.indexOf("pwa") > 0 ? 0 : 1000);
212
+ }, document.URL.indexOf("pwa") > 0 ? 0 : 500);
229
213
 
230
214
  </script>
231
215
  <!-- jQuery -->
@@ -250,10 +234,8 @@
250
234
 
251
235
  <script src="{{ static_url_for( filename='plugins/datatables/jquery.dataTables.min.js' ) }}"></script>
252
236
  <script src="{{ static_url_for( filename='plugins/datatables/dataTables.bootstrap4.js' ) }}"></script>
253
- <script
254
- src="{{ static_url_for( filename='plugins/datatables/extensions/Responsive/js/dataTables.responsive.min.js' ) }}"></script>
255
- <script
256
- src="{{ static_url_for( filename='plugins/datatables/extensions/Responsive/js/responsive.bootstrap4.min.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>
257
239
 
258
240
  <!-- <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.13.2/js/jquery.dataTables.min.js"></script>
259
241
  <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.13.2/js/dataTables.bootstrap4.min.js"></script>
@@ -1139,6 +1139,18 @@ msgstr "🔀 CDN (Cloudflare Proxy, ...)"
1139
1139
  msgid "child has been removed!"
1140
1140
  msgstr "Child Has Been Removed!"
1141
1141
 
1142
+ msgid "child.register-failed"
1143
+ msgstr "child.register-failed"
1144
+
1145
+ msgid "child.register-success"
1146
+ msgstr "child.register-success"
1147
+
1148
+ msgid "child.sync-failed"
1149
+ msgstr "child.sync-failed"
1150
+
1151
+ msgid "child.sync-success"
1152
+ msgstr "child.sync-success"
1153
+
1142
1154
  msgid "clickable copy"
1143
1155
  msgstr "Link for Social Media"
1144
1156
 
@@ -1381,6 +1393,12 @@ msgstr ""
1381
1393
  msgid "config.grpc_enable.label"
1382
1394
  msgstr "➿ Enable gRPC"
1383
1395
 
1396
+ msgid "config.h2_enable.description"
1397
+ msgstr "config.h2_enable.description"
1398
+
1399
+ msgid "config.h2_enable.label"
1400
+ msgstr "config.h2_enable.label"
1401
+
1384
1402
  msgid "config.hidden.description"
1385
1403
  msgstr "config.hidden.description"
1386
1404
 
@@ -1457,6 +1475,9 @@ msgstr "Hysteria Maximum Upload Speed"
1457
1475
  msgid "config.hysteria_up_mbps.label"
1458
1476
  msgstr "⬆️ Hysteria Upload (mbps)"
1459
1477
 
1478
+ msgid "config.invalid-pattern-for-warp-sites"
1479
+ msgstr "config.invalid-pattern-for-warp-sites"
1480
+
1460
1481
  msgid "config.is_parent.description"
1461
1482
  msgstr "config.is_parent.description"
1462
1483
 
@@ -1500,6 +1521,12 @@ msgstr "For commercial use of this Product, you must Purchase its License"
1500
1521
  msgid "config.license.label"
1501
1522
  msgstr "License Code"
1502
1523
 
1524
+ msgid "config.log_level.description"
1525
+ msgstr "config.log_level.description"
1526
+
1527
+ msgid "config.log_level.label"
1528
+ msgstr "config.log_level.label"
1529
+
1503
1530
  msgid "config.mux.description"
1504
1531
  msgstr "MUX (Multiplex) configurations could be set in this section"
1505
1532
 
@@ -1596,6 +1623,24 @@ msgstr "Specify whether you want Released Package or Beta one"
1596
1623
  msgid "config.package_mode.label"
1597
1624
  msgstr "🔄 Package Update Mode"
1598
1625
 
1626
+ msgid "config.panel_mode.description"
1627
+ msgstr "config.panel_mode.description"
1628
+
1629
+ msgid "config.panel_mode.label"
1630
+ msgstr "config.panel_mode.label"
1631
+
1632
+ msgid "config.parent_admin_proxy_path.description"
1633
+ msgstr "config.parent_admin_proxy_path.description"
1634
+
1635
+ msgid "config.parent_admin_proxy_path.label"
1636
+ msgstr "config.parent_admin_proxy_path.label"
1637
+
1638
+ msgid "config.parent_domain.description"
1639
+ msgstr "config.parent_domain.description"
1640
+
1641
+ msgid "config.parent_domain.label"
1642
+ msgstr "config.parent_domain.label"
1643
+
1599
1644
  msgid "config.parent_panel.description"
1600
1645
  msgstr ""
1601
1646
  "You can Connect to the Central Panel to define only one user and the usage "
@@ -1683,12 +1728,24 @@ msgstr "Secret proxy path hide the proxies from the governments and bots"
1683
1728
  msgid "config.proxy_path_client.label"
1684
1729
  msgstr "🔏 Proxy Path for Clients"
1685
1730
 
1731
+ msgid "config.quic_enable.description"
1732
+ msgstr "config.quic_enable.description"
1733
+
1734
+ msgid "config.quic_enable.label"
1735
+ msgstr "config.quic_enable.label"
1736
+
1686
1737
  msgid "config.reality.description"
1687
1738
  msgstr "REALITY eliminate the Server-Side TLS Fingerprint Feature"
1688
1739
 
1689
1740
  msgid "config.reality.label"
1690
1741
  msgstr "Reality"
1691
1742
 
1743
+ msgid "config.reality_enable.description"
1744
+ msgstr "config.reality_enable.description"
1745
+
1746
+ msgid "config.reality_enable.label"
1747
+ msgstr "config.reality_enable.label"
1748
+
1692
1749
  msgid "config.reality_fallback_domain.description"
1693
1750
  msgstr ""
1694
1751
  "When the GFW visit the Websites in Server names, it will be redirect to this"
@@ -1901,6 +1958,12 @@ msgstr ""
1901
1958
  msgid "config.ssr_fakedomain.label"
1902
1959
  msgstr "SSR FakeDomain"
1903
1960
 
1961
+ msgid "config.tcp_enable.description"
1962
+ msgstr "config.tcp_enable.description"
1963
+
1964
+ msgid "config.tcp_enable.label"
1965
+ msgstr "config.tcp_enable.label"
1966
+
1904
1967
  msgid "config.telegram.description"
1905
1968
  msgstr "A proxy designed for Telegram to bypass Telegram filtering"
1906
1969
 
@@ -2021,6 +2084,12 @@ msgstr "Torrent Block Configurations could be set in this section."
2021
2084
  msgid "config.torrent_block.label"
2022
2085
  msgstr "Torrent Block Configuration"
2023
2086
 
2087
+ msgid "config.trojan_enable.description"
2088
+ msgstr "config.trojan_enable.description"
2089
+
2090
+ msgid "config.trojan_enable.label"
2091
+ msgstr "config.trojan_enable.label"
2092
+
2024
2093
  msgid "config.tuic.description"
2025
2094
  msgstr ""
2026
2095
  "Delicately-TUICed High-Performance proxy is on top of the QUIC protocol. \n"
@@ -2073,6 +2142,12 @@ msgstr ""
2073
2142
  msgid "config.validation-success-no-reset"
2074
2143
  msgstr " ✅ Configs have been changed successfully"
2075
2144
 
2145
+ msgid "config.vless_enable.description"
2146
+ msgstr "config.vless_enable.description"
2147
+
2148
+ msgid "config.vless_enable.label"
2149
+ msgstr "config.vless_enable.label"
2150
+
2076
2151
  msgid "config.vmess_enable.description"
2077
2152
  msgstr "Active VMess Protocol"
2078
2153
 
@@ -2185,6 +2260,12 @@ msgstr "Websocket creates a tunnel over HTTP that is useful to be used in CDN"
2185
2260
  msgid "config.ws_enable.label"
2186
2261
  msgstr "🔰 Enable Websocket"
2187
2262
 
2263
+ msgid "config.xtls_enable.description"
2264
+ msgstr "config.xtls_enable.description"
2265
+
2266
+ msgid "config.xtls_enable.label"
2267
+ msgstr "config.xtls_enable.label"
2268
+
2188
2269
  msgid "config.invalid uuid"
2189
2270
  msgstr ""
2190
2271
  "Invalid UUID secret. example: 6098ea35-8cb2-4a08-ba15-2be25bc49cb6\n"
@@ -2304,6 +2385,9 @@ msgstr "Next"
2304
2385
  msgid "no_reset"
2305
2386
  msgstr "⭐️ Without Reset"
2306
2387
 
2388
+ msgid "node.diff-version"
2389
+ msgstr "node.diff-version"
2390
+
2307
2391
  msgid "node.mode.dscr"
2308
2392
  msgstr "node.mode.dscr"
2309
2393
 
@@ -2334,6 +2418,12 @@ msgstr "package days?"
2334
2418
  msgid "package size?"
2335
2419
  msgstr "package size?"
2336
2420
 
2421
+ msgid "parent.invalid-parent-url"
2422
+ msgstr "parent.invalid-parent-url"
2423
+
2424
+ msgid "parent.sync-req-failed"
2425
+ msgstr "parent.sync-req-failed"
2426
+
2337
2427
  msgid "previous"
2338
2428
  msgstr "Previous"
2339
2429
 
@@ -1124,6 +1124,18 @@ msgstr "🔀 سی‌دی‌ان (پروکسی کلودفلر و ...)"
1124
1124
  msgid "child has been removed!"
1125
1125
  msgstr "پنل زیر مجموعه حذف شد"
1126
1126
 
1127
+ msgid "child.register-failed"
1128
+ msgstr ""
1129
+
1130
+ msgid "child.register-success"
1131
+ msgstr ""
1132
+
1133
+ msgid "child.sync-failed"
1134
+ msgstr ""
1135
+
1136
+ msgid "child.sync-success"
1137
+ msgstr ""
1138
+
1127
1139
  msgid "clickable copy"
1128
1140
  msgstr "لینک برای شبکه‌های اجتماعی"
1129
1141
 
@@ -1366,6 +1378,12 @@ msgstr ""
1366
1378
  msgid "config.grpc_enable.label"
1367
1379
  msgstr "➿ gRPC را فعال کنید"
1368
1380
 
1381
+ msgid "config.h2_enable.description"
1382
+ msgstr ""
1383
+
1384
+ msgid "config.h2_enable.label"
1385
+ msgstr ""
1386
+
1369
1387
  msgid "config.hidden.description"
1370
1388
  msgstr "-"
1371
1389
 
@@ -1447,6 +1465,9 @@ msgstr "حداکثر سرعت آپلود هیستریا"
1447
1465
  msgid "config.hysteria_up_mbps.label"
1448
1466
  msgstr "⬆️ آپلود (mbps) Hysteria"
1449
1467
 
1468
+ msgid "config.invalid-pattern-for-warp-sites"
1469
+ msgstr ""
1470
+
1450
1471
  msgid "config.is_parent.description"
1451
1472
  msgstr "-"
1452
1473
 
@@ -1491,11 +1512,17 @@ msgstr "برای استفاده تجاری از این محصول باید مج
1491
1512
  msgid "config.license.label"
1492
1513
  msgstr "کد مجوز"
1493
1514
 
1515
+ msgid "config.log_level.description"
1516
+ msgstr ""
1517
+
1518
+ msgid "config.log_level.label"
1519
+ msgstr ""
1520
+
1494
1521
  msgid "config.mux.description"
1495
1522
  msgstr "تنظیمات MUX (Multiplex) را می توان در این بخش تنظیم کرد"
1496
1523
 
1497
1524
  msgid "config.mux.label"
1498
- msgstr "پیکربندی MUX"
1525
+ msgstr "تنظیمات MUX"
1499
1526
 
1500
1527
  msgid "config.mux_brutal_down_mbps.description"
1501
1528
  msgstr "حداکثر سرعت دانلود TCP-Brutal"
@@ -1589,6 +1616,24 @@ msgstr ""
1589
1616
  msgid "config.package_mode.label"
1590
1617
  msgstr "🔄 حالت به روز رسانی"
1591
1618
 
1619
+ msgid "config.panel_mode.description"
1620
+ msgstr ""
1621
+
1622
+ msgid "config.panel_mode.label"
1623
+ msgstr ""
1624
+
1625
+ msgid "config.parent_admin_proxy_path.description"
1626
+ msgstr ""
1627
+
1628
+ msgid "config.parent_admin_proxy_path.label"
1629
+ msgstr ""
1630
+
1631
+ msgid "config.parent_domain.description"
1632
+ msgstr ""
1633
+
1634
+ msgid "config.parent_domain.label"
1635
+ msgstr ""
1636
+
1592
1637
  msgid "config.parent_panel.description"
1593
1638
  msgstr ""
1594
1639
  "می‌توانید به پنل مرکزی وصل شوید، تا فقط یک یوزر را تعریف کنید و میزان "
@@ -1679,12 +1724,24 @@ msgstr "مسیر مخفی پروکسی پروکسی ها را از دولت ها
1679
1724
  msgid "config.proxy_path_client.label"
1680
1725
  msgstr "مسیر پروکسی برای مشتریان"
1681
1726
 
1727
+ msgid "config.quic_enable.description"
1728
+ msgstr ""
1729
+
1730
+ msgid "config.quic_enable.label"
1731
+ msgstr ""
1732
+
1682
1733
  msgid "config.reality.description"
1683
1734
  msgstr "REALITY قابلیت اثر انگشت TLS سمت سرور را حذف می کند"
1684
1735
 
1685
1736
  msgid "config.reality.label"
1686
1737
  msgstr "ریالیتی"
1687
1738
 
1739
+ msgid "config.reality_enable.description"
1740
+ msgstr ""
1741
+
1742
+ msgid "config.reality_enable.label"
1743
+ msgstr ""
1744
+
1688
1745
  msgid "config.reality_fallback_domain.description"
1689
1746
  msgstr ""
1690
1747
  "هنگامی که GTW از وب‌ سایت‌ها در نام سرور بازدید می‌کند، به این دامنه هدایت "
@@ -1900,6 +1957,12 @@ msgstr ""
1900
1957
  msgid "config.ssr_fakedomain.label"
1901
1958
  msgstr "دامنه جعلی برای SSR"
1902
1959
 
1960
+ msgid "config.tcp_enable.description"
1961
+ msgstr ""
1962
+
1963
+ msgid "config.tcp_enable.label"
1964
+ msgstr ""
1965
+
1903
1966
  msgid "config.telegram.description"
1904
1967
  msgstr ""
1905
1968
  "پروکسی تلگرام برای استفاده درون اپ تلگرام طراحی شده تا فیلترینگ تلگرام را "
@@ -2020,6 +2083,12 @@ msgstr "در این قسمت تنظیمات Torrent Block قابل انجام ا
2020
2083
  msgid "config.torrent_block.label"
2021
2084
  msgstr "تنظیمات Torrent Block"
2022
2085
 
2086
+ msgid "config.trojan_enable.description"
2087
+ msgstr ""
2088
+
2089
+ msgid "config.trojan_enable.label"
2090
+ msgstr ""
2091
+
2023
2092
  msgid "config.tuic.description"
2024
2093
  msgstr ""
2025
2094
  "پروکسی Delicately-TUICed با کارایی بالا روی پروتکل QUIC است. \n"
@@ -2071,6 +2140,12 @@ msgstr ""
2071
2140
  msgid "config.validation-success-no-reset"
2072
2141
  msgstr " ✅ تنظیمات با موفقیت تغییر کرد"
2073
2142
 
2143
+ msgid "config.vless_enable.description"
2144
+ msgstr ""
2145
+
2146
+ msgid "config.vless_enable.label"
2147
+ msgstr ""
2148
+
2074
2149
  msgid "config.vmess_enable.description"
2075
2150
  msgstr "فعال کردن پروتکل VMess"
2076
2151
 
@@ -2184,6 +2259,12 @@ msgstr ""
2184
2259
  msgid "config.ws_enable.label"
2185
2260
  msgstr "🔰 Websocket را فعال کنید"
2186
2261
 
2262
+ msgid "config.xtls_enable.description"
2263
+ msgstr ""
2264
+
2265
+ msgid "config.xtls_enable.label"
2266
+ msgstr ""
2267
+
2187
2268
  msgid "config.invalid uuid"
2188
2269
  msgstr ""
2189
2270
  "رمز UUID نامعتبر است. به عنوان مثال: 6098ea35-8cb2-4a08-ba15-2be25bc49cb6"
@@ -2303,6 +2384,9 @@ msgstr "بعدی"
2303
2384
  msgid "no_reset"
2304
2385
  msgstr "⭐️ بدون ریست شدن"
2305
2386
 
2387
+ msgid "node.diff-version"
2388
+ msgstr ""
2389
+
2306
2390
  msgid "node.mode.dscr"
2307
2391
  msgstr ""
2308
2392
 
@@ -2333,6 +2417,12 @@ msgstr "تعداد روز؟"
2333
2417
  msgid "package size?"
2334
2418
  msgstr "حجم بسته"
2335
2419
 
2420
+ msgid "parent.invalid-parent-url"
2421
+ msgstr ""
2422
+
2423
+ msgid "parent.sync-req-failed"
2424
+ msgstr ""
2425
+
2336
2426
  msgid "previous"
2337
2427
  msgstr "قبلی"
2338
2428