hiddifypanel 10.11.1__py3-none-any.whl → 10.12.0__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 +2 -2
- hiddifypanel/auth.py +15 -5
- hiddifypanel/hutils/encode.py +0 -1
- hiddifypanel/hutils/proxy/__init__.py +1 -0
- hiddifypanel/hutils/proxy/shared.py +18 -10
- hiddifypanel/hutils/proxy/singbox.py +22 -21
- hiddifypanel/hutils/proxy/xray.py +26 -352
- hiddifypanel/hutils/proxy/xrayjson.py +391 -0
- hiddifypanel/hutils/random.py +4 -0
- hiddifypanel/models/config.py +7 -2
- hiddifypanel/models/config_enum.py +9 -5
- hiddifypanel/panel/admin/DomainAdmin.py +3 -2
- hiddifypanel/panel/admin/templates/model/user_list.html +44 -20
- hiddifypanel/panel/commercial/restapi/v1/tgmsg.py +14 -10
- hiddifypanel/panel/commercial/restapi/v2/user/apps_api.py +17 -23
- hiddifypanel/panel/common_bp/login.py +2 -2
- hiddifypanel/panel/user/templates/base_xray_config.json.j2 +2 -2
- hiddifypanel/panel/user/user.py +1 -1
- hiddifypanel/static/images/hiddify.png +0 -0
- hiddifypanel/static/images/hiddify1.png +0 -0
- hiddifypanel/static/new/assets/hiddify-logo-7617d937.png +0 -0
- hiddifypanel/static/new/assets/hiddify-logo-7617d937_old.png +0 -0
- hiddifypanel/templates/admin-layout.html +22 -11
- hiddifypanel/templates/master.html +48 -25
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/en/LC_MESSAGES/messages.po +25 -16
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/fa/LC_MESSAGES/messages.po +12 -5
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/pt/LC_MESSAGES/messages.po +8 -5
- hiddifypanel/translations/ru/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/ru/LC_MESSAGES/messages.po +108 -47
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/zh/LC_MESSAGES/messages.po +108 -55
- hiddifypanel/translations.i18n/en.json +15 -13
- hiddifypanel/translations.i18n/fa.json +4 -2
- hiddifypanel/translations.i18n/pt.json +3 -1
- hiddifypanel/translations.i18n/ru.json +50 -48
- hiddifypanel/translations.i18n/zh.json +58 -56
- {hiddifypanel-10.11.1.dist-info → hiddifypanel-10.12.0.dist-info}/METADATA +1 -1
- {hiddifypanel-10.11.1.dist-info → hiddifypanel-10.12.0.dist-info}/RECORD +46 -43
- {hiddifypanel-10.11.1.dist-info → hiddifypanel-10.12.0.dist-info}/LICENSE.md +0 -0
- {hiddifypanel-10.11.1.dist-info → hiddifypanel-10.12.0.dist-info}/WHEEL +0 -0
- {hiddifypanel-10.11.1.dist-info → hiddifypanel-10.12.0.dist-info}/entry_points.txt +0 -0
- {hiddifypanel-10.11.1.dist-info → hiddifypanel-10.12.0.dist-info}/top_level.txt +0 -0
@@ -346,31 +346,25 @@ class AppAPI(MethodView):
|
|
346
346
|
|
347
347
|
if self.platform == Platform.all:
|
348
348
|
platform = [Platform.windows, Platform.linux, Platform.mac]
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
match p:
|
353
|
-
case Platform.windows:
|
354
|
-
ins_url = latest_url.split('releases/')[0] + f'releases/download/{version}/HiddifyClashDesktop_{version}_x64_en-US.msi'
|
355
|
-
dto.install.append(self.__get_app_install_dto(AppInstallType.setup, ins_url))
|
356
|
-
case Platform.linux:
|
357
|
-
ins_url = latest_url.split('releases/')[0] + f'releases/download/{version}/hiddify-clash-desktop_{version}_amd64.AppImage'
|
358
|
-
dto.install.append(self.__get_app_install_dto(AppInstallType.appimage, ins_url))
|
359
|
-
case Platform.mac:
|
360
|
-
ins_url = latest_url.split('releases/')[0] + f'releases/download/{version}/HiddifyClashDesktop_{version}_x64.dmg'
|
361
|
-
dto.install.append(self.__get_app_install_dto(AppInstallType.dmg, ins_url))
|
362
|
-
else:
|
363
|
-
match platform:
|
349
|
+
|
350
|
+
def get_link(p):
|
351
|
+
match p:
|
364
352
|
case Platform.windows:
|
365
|
-
ins_url = latest_url.split('releases/')[0] + f'releases/download/{version}/HiddifyClashDesktop_{version}_x64_en-US.msi'
|
353
|
+
ins_url = latest_url.split('releases/')[0] + f'releases/download/v{version}/HiddifyClashDesktop_{version}_x64_en-US.msi'
|
366
354
|
dto.install.append(self.__get_app_install_dto(AppInstallType.setup, ins_url))
|
367
355
|
case Platform.linux:
|
368
|
-
ins_url = latest_url.split('releases/')[0] + f'releases/download/{version}/hiddify-clash-desktop_{version}_amd64.AppImage'
|
356
|
+
ins_url = latest_url.split('releases/')[0] + f'releases/download/v{version}/hiddify-clash-desktop_{version}_amd64.AppImage'
|
369
357
|
dto.install.append(self.__get_app_install_dto(AppInstallType.appimage, ins_url))
|
370
358
|
case Platform.mac:
|
371
|
-
ins_url = latest_url.split('releases/')[0] + f'releases/download/{version}/HiddifyClashDesktop_{version}
|
359
|
+
ins_url = latest_url.split('releases/')[0] + f'releases/download/v{version}/HiddifyClashDesktop_{version}_x64.dmg'
|
372
360
|
dto.install.append(self.__get_app_install_dto(AppInstallType.dmg, ins_url))
|
373
361
|
|
362
|
+
if isinstance(platform, list):
|
363
|
+
for p in platform:
|
364
|
+
get_link(p)
|
365
|
+
else:
|
366
|
+
get_link(platform)
|
367
|
+
|
374
368
|
return dto
|
375
369
|
|
376
370
|
def __get_hiddify_next_app_dto(self):
|
@@ -402,17 +396,17 @@ class AppAPI(MethodView):
|
|
402
396
|
ins_url = ''
|
403
397
|
match install_type:
|
404
398
|
case AppInstallType.apk:
|
405
|
-
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/
|
399
|
+
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/Hiddify-Android-universal.apk'
|
406
400
|
case AppInstallType.google_play:
|
407
401
|
ins_url = 'https://play.google.com/store/apps/details?id=app.hiddify.com'
|
408
402
|
case AppInstallType.setup:
|
409
|
-
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/
|
403
|
+
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/Hiddify-Windows-Setup-x64.exe'
|
410
404
|
case AppInstallType.portable:
|
411
|
-
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/
|
405
|
+
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/Hiddify-Windows-Portable-x64.zip'
|
412
406
|
case AppInstallType.appimage:
|
413
|
-
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/
|
407
|
+
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/Hiddify-Linux-x64.AppImage'
|
414
408
|
case AppInstallType.dmg:
|
415
|
-
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/
|
409
|
+
ins_url = f'{self.hiddify_github_repo}/hiddify-next/releases/latest/download/Hiddify-MacOS.dmg'
|
416
410
|
|
417
411
|
install_dto = self.__get_app_install_dto(install_type, ins_url)
|
418
412
|
install_dtos.append(install_dto)
|
@@ -42,8 +42,8 @@ class LoginView(FlaskView):
|
|
42
42
|
return redirect(redirect_arg)
|
43
43
|
if hutils.flask.is_admin_proxy_path() and g.account.role in {Role.super_admin, Role.admin, Role.agent}:
|
44
44
|
return redirect(hurl_for('admin.Dashboard:index'))
|
45
|
-
if g.user_agent['is_browser'] and hutils.flask.is_client_proxy_path():
|
46
|
-
|
45
|
+
# if g.user_agent['is_browser'] and hutils.flask.is_client_proxy_path():
|
46
|
+
# return redirect(hurl_for('client.UserView:index'))
|
47
47
|
|
48
48
|
from hiddifypanel.panel.user import UserView
|
49
49
|
return UserView().auto_sub()
|
@@ -50,9 +50,9 @@
|
|
50
50
|
"tag": "fragment",
|
51
51
|
"protocol": "freedom",
|
52
52
|
"settings": {
|
53
|
-
"domainStrategy": "AsIs"
|
53
|
+
"domainStrategy": "AsIs"
|
54
54
|
{% if hconfig(ConfigEnum.tls_fragment_enable) %}
|
55
|
-
"fragment": {
|
55
|
+
,"fragment": {
|
56
56
|
"packets": "tlshello",
|
57
57
|
"length": "{{ hconfig(ConfigEnum.tls_fragment_size) }}",
|
58
58
|
"interval": "{{ hconfig(ConfigEnum.tls_fragment_sleep) }}"
|
hiddifypanel/panel/user/user.py
CHANGED
@@ -59,7 +59,7 @@ class UserView(FlaskView):
|
|
59
59
|
@login_required(roles={Role.user})
|
60
60
|
def xray(self):
|
61
61
|
c = c = get_common_data(g.account.uuid, mode="new")
|
62
|
-
configs = hutils.proxy.
|
62
|
+
configs = hutils.proxy.xrayjson.configs_as_json(c['domains'], c['profile_title'])
|
63
63
|
return add_headers(configs, c, 'application/json')
|
64
64
|
|
65
65
|
@route("/singbox/")
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -9,13 +9,15 @@
|
|
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
|
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">
|
13
14
|
<!-- Left navbar links -->
|
14
15
|
|
15
16
|
|
16
17
|
|
17
18
|
<div class="navbar-nav">
|
18
|
-
<a class="nav-link" data-widget="pushmenu" href="#"><i class="fa fa-bars"></i> <span
|
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")}}
|
19
21
|
<!-- <span class="badge d-none d-sm-inline-block">{{version}}</span> -->
|
20
22
|
{% if hconfig(ConfigEnum.is_parent) %}
|
21
23
|
{{_("Parent Panel")}}
|
@@ -24,7 +26,8 @@
|
|
24
26
|
{% endif %}
|
25
27
|
</a>
|
26
28
|
<a class="nav-link" href="https://github.com/hiddify/Hiddify-Manager/" target="_blank">
|
27
|
-
<img alt="GitHub Repo stars"
|
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">
|
28
31
|
|
29
32
|
</a>
|
30
33
|
</div>
|
@@ -41,7 +44,8 @@
|
|
41
44
|
{% if 0 and not hconfig(ConfigEnum.is_parent) %}
|
42
45
|
|
43
46
|
|
44
|
-
<a class="nav-link btn btn-outline-secondary form_post d-none d-md-flex"
|
47
|
+
<a class="nav-link btn btn-outline-secondary form_post d-none d-md-flex"
|
48
|
+
href="{{hurl_for('admin.Actions:apply_configs')}}">
|
45
49
|
{{icon('solid','bolt','nav-icon')}} {{_('admin.Actions:apply_configs')}}
|
46
50
|
</a>
|
47
51
|
|
@@ -58,8 +62,10 @@
|
|
58
62
|
<aside id="main-sidebar" class="main-sidebar {{ " sidebar-dark-primary"}} elevation-4">
|
59
63
|
<!-- Brand Logo -->
|
60
64
|
|
61
|
-
<a href="https://github.com/hiddify/hiddify-manager/wiki" class=""
|
62
|
-
|
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" />
|
63
69
|
<div class="ltr" style="font-size: 8pt;">{{version}}</div>
|
64
70
|
{% if False and hconfig(ConfigEnum.is_parent) %}
|
65
71
|
<br>
|
@@ -107,7 +113,8 @@
|
|
107
113
|
request.endpoint or "Dashboard" in request.endpoint) else True %}
|
108
114
|
<li class="nav-item {{'menu-open' if settings_active else ''}}">
|
109
115
|
|
110
|
-
<a id=href="#" data-target="#setting-sidebar"
|
116
|
+
<a id=href="#" data-target="#setting-sidebar"
|
117
|
+
class="nav-link">{{icon('solid','gear','nav-icon')+_('admin.menu.config')}}</a>
|
111
118
|
|
112
119
|
</li>
|
113
120
|
{% endif %}
|
@@ -122,17 +129,21 @@
|
|
122
129
|
{% if g.account.mode=="super_admin" %}
|
123
130
|
<li class="nav-item {{'menu-open' if action_active else ''}}">
|
124
131
|
|
125
|
-
<a id=href="#" data-target="#action-sidebar"
|
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>
|
126
135
|
|
127
136
|
</li>
|
128
137
|
{% endif %}
|
129
138
|
|
130
139
|
<li class="nav-item">
|
131
140
|
<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'}}"
|
132
|
-
target="_blank"
|
141
|
+
target="_blank"
|
142
|
+
class=" nav-link">{{icon('solid','circle-question','nav-icon')+_('admin.menu.support')}}</a>
|
133
143
|
</li>
|
134
144
|
<li class="nav-item d-none">
|
135
|
-
<a href="https://t.me/hiddify" target="_blank"
|
145
|
+
<a href="https://t.me/hiddify" target="_blank"
|
146
|
+
class="nav-link">{{icon('brands','telegram','nav-icon')+_('admin.menu.telegram')}}</a>
|
136
147
|
</li>
|
137
148
|
<li class="nav-item">
|
138
149
|
{% set issue_link = generate_github_issue_link_for_admin_sidebar() %}
|
@@ -206,7 +217,7 @@
|
|
206
217
|
{% endif %}
|
207
218
|
|
208
219
|
{% if g.account.mode=="super_admin" %}
|
209
|
-
{{
|
220
|
+
{{render_nav_item(proxy_stats_url(),icon('solid','feed','nav-icon')+_('admin.menu.proxy_stats'),_use_li=True)}}
|
210
221
|
{% endif %}
|
211
222
|
|
212
223
|
</div>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<html>
|
6
6
|
|
7
7
|
<head>
|
8
|
-
<title>{% block title %}{% endblock %}| {{_("master.page-title")}}</title>
|
8
|
+
<title>{% block title %}{% endblock %} | {{_("master.page-title")}}</title>
|
9
9
|
{% block head_meta %}
|
10
10
|
<meta name="robots" content="noindex, nofollow">
|
11
11
|
<meta name="googlebot" content="noindex, nofollow">
|
@@ -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')}}"
|
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')}}"
|
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')}}"
|
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')}}"
|
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')}}"
|
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')}}"
|
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')}}"
|
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')}}"
|
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')}}"
|
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')}}"
|
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"
|
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' %}
|
@@ -79,8 +90,11 @@
|
|
79
90
|
|
80
91
|
<body class="hold-transition layout-fixed {{" dark-mode" if g.darkmode else "" }} {% block bodyclass %}sidebar-collapse{%endblock%}">
|
81
92
|
<div id="splash_screen">
|
82
|
-
<center>
|
83
|
-
|
93
|
+
<center>
|
94
|
+
|
95
|
+
<img src="{{static_url_for( filename='images/hiddify.png' )}}" />
|
96
|
+
|
97
|
+
|
84
98
|
<a href="https://github.com/hiddify/hiddify-manager/wiki">
|
85
99
|
<h1 class="title">{{_('user.home.title')}}</h1><br>Powered by hiddify.com
|
86
100
|
</a>
|
@@ -138,18 +152,21 @@
|
|
138
152
|
<footer class="main-footer d-flex flex-wrap justify-content-between align-items-center " dir="ltr">
|
139
153
|
<div class="nav col-md-8 d-flex align-items-center">
|
140
154
|
|
141
|
-
<strong><span class="mb-3 mb-md-0 text-muted">© 2023 Hiddify {{"Central" if hconfig(ConfigEnum.is_parent) else
|
155
|
+
<strong><span class="mb-3 mb-md-0 text-muted">© 2023 Hiddify {{"Central" if hconfig(ConfigEnum.is_parent) else
|
156
|
+
""}} <span class="badge">{{version}}</span>
|
142
157
|
</span>
|
143
158
|
</strong>
|
144
159
|
</div>
|
145
160
|
|
146
161
|
<ul class="nav col-md-4 justify-content-end list-unstyled d-flex">
|
147
|
-
<li class="ms-3"><a class="text-secondary" href="https://github.com/hiddify/hiddify-manager/wiki"><i
|
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>
|
148
164
|
<li class="ms-3"><a class="text-danger" href="https://youtube.com/@hiddify/videos">
|
149
165
|
<i class="fa-brands fa-square-youtube fa-margin"></i> </a></li>
|
150
166
|
<li class="ms-3"><a class="text-primary" href="https://twitter.com/intent/follow?screen_name=hiddify_com">
|
151
167
|
<i class="fa-brands fa-square-twitter fa-margin"></i> </a></li>
|
152
|
-
<li class="ms-3"><a class="text-primary" href="https://t.me/hiddify"> <i
|
168
|
+
<li class="ms-3"><a class="text-primary" href="https://t.me/hiddify"> <i
|
169
|
+
class="fa-brands fa-telegram fa-margin"></i> </a></li>
|
153
170
|
</ul>
|
154
171
|
|
155
172
|
</footer>
|
@@ -159,7 +176,8 @@
|
|
159
176
|
</div>
|
160
177
|
<!-- ./wrapper -->
|
161
178
|
|
162
|
-
{#modal("guide-modal","","<video id='guide-video' controls
|
179
|
+
{#modal("guide-modal","","<video id='guide-video' controls
|
180
|
+
style='max-height: 100%; max-width: 100%;width: auto; height: auto;'>
|
163
181
|
<source id='guide-video-mp4' type='video/mp4'>
|
164
182
|
</video>")#}
|
165
183
|
|
@@ -176,9 +194,12 @@
|
|
176
194
|
<div class="modal-body">
|
177
195
|
<center>
|
178
196
|
<div class="btn-group">
|
179
|
-
<a id='qrcode-link' class="btn btn-primary copy-link" href=""><i class="fa-regular fa-copy"></i>
|
180
|
-
|
181
|
-
<a
|
197
|
+
<a id='qrcode-link' class="btn btn-primary copy-link" href=""><i class="fa-regular fa-copy"></i>
|
198
|
+
{{_("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>
|
182
203
|
</div>
|
183
204
|
<br />
|
184
205
|
<div id="qrcode" style="margin:10px;padding:10px;"></div>
|
@@ -204,7 +225,7 @@
|
|
204
225
|
wrappers[i].style.display = 'initial';
|
205
226
|
}
|
206
227
|
|
207
|
-
},
|
228
|
+
}, document.URL.indexOf("pwa") > 0 ? 0 : 1000);
|
208
229
|
|
209
230
|
</script>
|
210
231
|
<!-- jQuery -->
|
@@ -217,7 +238,7 @@
|
|
217
238
|
|
218
239
|
<script src="{{ static_url_for( filename='js/moment.min.js' ) }}"></script>
|
219
240
|
<script src="{{ static_url_for( filename='js/bootbox.all.min.js' ) }}"></script>
|
220
|
-
<script src="{{ static_url_for( filename="plugins/select2/select2.min.js" ) }}"></script>
|
241
|
+
<script src="{{ static_url_for( filename=" plugins/select2/select2.min.js" ) }}"></script>
|
221
242
|
|
222
243
|
|
223
244
|
|
@@ -229,8 +250,10 @@
|
|
229
250
|
|
230
251
|
<script src="{{ static_url_for( filename='plugins/datatables/jquery.dataTables.min.js' ) }}"></script>
|
231
252
|
<script src="{{ static_url_for( filename='plugins/datatables/dataTables.bootstrap4.js' ) }}"></script>
|
232
|
-
<script
|
233
|
-
|
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>
|
234
257
|
|
235
258
|
<!-- <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.13.2/js/jquery.dataTables.min.js"></script>
|
236
259
|
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.13.2/js/dataTables.bootstrap4.min.js"></script>
|
Binary file
|
@@ -596,6 +596,9 @@ msgstr "Please select at least one file."
|
|
596
596
|
msgid "Please select at least one record."
|
597
597
|
msgstr "Please select at least one record."
|
598
598
|
|
599
|
+
msgid "Please select at least one user"
|
600
|
+
msgstr "Please select at least one user"
|
601
|
+
|
599
602
|
msgid "Please select one of the following applications:"
|
600
603
|
msgstr ""
|
601
604
|
"📍 Please select one of the following applications:\n"
|
@@ -728,6 +731,9 @@ msgstr "Select all records"
|
|
728
731
|
msgid "Select record"
|
729
732
|
msgstr "Select record"
|
730
733
|
|
734
|
+
msgid "Seleted Users"
|
735
|
+
msgstr "Seleted Users"
|
736
|
+
|
731
737
|
msgid "Send Message to User's Telegram"
|
732
738
|
msgstr "📣 Send Message to User's Telegram"
|
733
739
|
|
@@ -841,11 +847,11 @@ msgid "User is inactive"
|
|
841
847
|
msgstr "User Is Inactive"
|
842
848
|
|
843
849
|
msgid ""
|
844
|
-
"User usage will be updated every 6 minutes. To update it now click <a
|
845
|
-
"
|
850
|
+
"User usage will be updated every 6 minutes. To update it now click <a "
|
851
|
+
"href=\"%(link)s\" class=\"btn btn-info\">here</a>"
|
846
852
|
msgstr ""
|
847
|
-
"
|
848
|
-
"href
|
853
|
+
"User usage will be updated every 6 minutes. To update it now click <a "
|
854
|
+
"href=\"%(link)s\" class=\"btn btn-info\">here</a>"
|
849
855
|
|
850
856
|
msgid "V2rayNG"
|
851
857
|
msgstr ""
|
@@ -1281,10 +1287,10 @@ msgid "config.country.label"
|
|
1281
1287
|
msgstr "🌍 Country"
|
1282
1288
|
|
1283
1289
|
msgid "config.create_easysetup_link.description"
|
1284
|
-
msgstr "
|
1290
|
+
msgstr "config.create_easysetup_link.description"
|
1285
1291
|
|
1286
1292
|
msgid "config.create_easysetup_link.label"
|
1287
|
-
msgstr "
|
1293
|
+
msgstr "config.create_easysetup_link.label"
|
1288
1294
|
|
1289
1295
|
msgid "config.db_version.description"
|
1290
1296
|
msgstr "Database Version Description"
|
@@ -1293,10 +1299,10 @@ msgid "config.db_version.label"
|
|
1293
1299
|
msgstr "Database Version Label"
|
1294
1300
|
|
1295
1301
|
msgid "config.dbvalues.description"
|
1296
|
-
msgstr "
|
1302
|
+
msgstr "config.dbvalues.description"
|
1297
1303
|
|
1298
1304
|
msgid "config.dbvalues.label"
|
1299
|
-
msgstr "
|
1305
|
+
msgstr "config.dbvalues.label"
|
1300
1306
|
|
1301
1307
|
msgid "config.decoy_domain.description"
|
1302
1308
|
msgstr ""
|
@@ -1356,10 +1362,10 @@ msgid "config.firewall.label"
|
|
1356
1362
|
msgstr "🛡️ Firewall"
|
1357
1363
|
|
1358
1364
|
msgid "config.first_setup.description"
|
1359
|
-
msgstr "
|
1365
|
+
msgstr "config.first_setup.description"
|
1360
1366
|
|
1361
1367
|
msgid "config.first_setup.label"
|
1362
|
-
msgstr "
|
1368
|
+
msgstr "config.first_setup.label"
|
1363
1369
|
|
1364
1370
|
msgid "config.general.description"
|
1365
1371
|
msgstr "It is General System Configurations"
|
@@ -1376,10 +1382,10 @@ msgid "config.grpc_enable.label"
|
|
1376
1382
|
msgstr "➿ Enable gRPC"
|
1377
1383
|
|
1378
1384
|
msgid "config.hidden.description"
|
1379
|
-
msgstr "
|
1385
|
+
msgstr "config.hidden.description"
|
1380
1386
|
|
1381
1387
|
msgid "config.hidden.label"
|
1382
|
-
msgstr "
|
1388
|
+
msgstr "config.hidden.label"
|
1383
1389
|
|
1384
1390
|
msgid "config.http.description"
|
1385
1391
|
msgstr "HTTP Configurations could be set in this section"
|
@@ -1452,7 +1458,7 @@ msgid "config.hysteria_up_mbps.label"
|
|
1452
1458
|
msgstr "⬆️ Hysteria Upload (mbps)"
|
1453
1459
|
|
1454
1460
|
msgid "config.is_parent.description"
|
1455
|
-
msgstr "
|
1461
|
+
msgstr "config.is_parent.description"
|
1456
1462
|
|
1457
1463
|
msgid "config.is_parent.label"
|
1458
1464
|
msgstr "Parent Panel"
|
@@ -1483,10 +1489,10 @@ msgid "config.lang.label"
|
|
1483
1489
|
msgstr "🗺️ User Area Language"
|
1484
1490
|
|
1485
1491
|
msgid "config.last_hash.description"
|
1486
|
-
msgstr "
|
1492
|
+
msgstr "config.last_hash.description"
|
1487
1493
|
|
1488
1494
|
msgid "config.last_hash.label"
|
1489
|
-
msgstr "
|
1495
|
+
msgstr "config.last_hash.label"
|
1490
1496
|
|
1491
1497
|
msgid "config.license.description"
|
1492
1498
|
msgstr "For commercial use of this Product, you must Purchase its License"
|
@@ -1920,7 +1926,10 @@ msgstr "🔐 Telegram Bot Token"
|
|
1920
1926
|
|
1921
1927
|
msgid "config.telegram_enable.description"
|
1922
1928
|
msgstr ""
|
1923
|
-
"Telegram MTProto is used for Encapsulate
|
1929
|
+
"<p data-pm-slice=\"1 1 []\">Telegram MTProto is used for Encapsulate "
|
1930
|
+
"Telegram Proxy as a tls traffic<br>⚠️ <span "
|
1931
|
+
"style=\"color:#d32f2f;\"><strong>This protocol requires a Direct "
|
1932
|
+
"Domain</strong></span></p>"
|
1924
1933
|
|
1925
1934
|
msgid "config.telegram_enable.label"
|
1926
1935
|
msgstr "✔️ Enable Telegram MTProto"
|
Binary file
|
@@ -584,6 +584,9 @@ msgstr "حداقل یک فایل انتخاب کنید"
|
|
584
584
|
msgid "Please select at least one record."
|
585
585
|
msgstr "حداقل یک پوشه انتخاب کنید"
|
586
586
|
|
587
|
+
msgid "Please select at least one user"
|
588
|
+
msgstr ""
|
589
|
+
|
587
590
|
msgid "Please select one of the following applications:"
|
588
591
|
msgstr ""
|
589
592
|
"📍 لطفا یکی از برنامه های زیر را انتخاب کنید:\n"
|
@@ -716,6 +719,9 @@ msgstr "انتخاب همه رکوردها"
|
|
716
719
|
msgid "Select record"
|
717
720
|
msgstr "انتخاب رکورد"
|
718
721
|
|
722
|
+
msgid "Seleted Users"
|
723
|
+
msgstr ""
|
724
|
+
|
719
725
|
msgid "Send Message to User's Telegram"
|
720
726
|
msgstr "📣 ارسال پیام به تلگرام کاربر"
|
721
727
|
|
@@ -829,11 +835,9 @@ msgid "User is inactive"
|
|
829
835
|
msgstr "کاربر غیر فعال است"
|
830
836
|
|
831
837
|
msgid ""
|
832
|
-
"User usage will be updated every 6 minutes. To update it now click <a
|
833
|
-
"
|
838
|
+
"User usage will be updated every 6 minutes. To update it now click <a "
|
839
|
+
"href=\"%(link)s\" class=\"btn btn-info\">here</a>"
|
834
840
|
msgstr ""
|
835
|
-
"🔄 حجم مصرفی کاربران بصورت خودکار هر دقیقه بروزرسانی میشود. برای بروزرسانی "
|
836
|
-
"دستی <a href='%(link)s' class='btn btn-info'>اینجا کلیک کنید</a>"
|
837
841
|
|
838
842
|
msgid "V2rayNG"
|
839
843
|
msgstr ""
|
@@ -1920,7 +1924,10 @@ msgid "config.telegram_bot_token.label"
|
|
1920
1924
|
msgstr "🔐 توکن ربات تلگرام"
|
1921
1925
|
|
1922
1926
|
msgid "config.telegram_enable.description"
|
1923
|
-
msgstr "
|
1927
|
+
msgstr ""
|
1928
|
+
"<p>برای کپسوله کردن پروکسی تلگرام در قالب ترافیک TLS استفاده میشود<br>⚠️ "
|
1929
|
+
"<span style=\"color:#d32f2f;\"><strong>این پروتکل نیاز به دامنه مستقیم "
|
1930
|
+
"دارد</strong></span></p>"
|
1924
1931
|
|
1925
1932
|
msgid "config.telegram_enable.label"
|
1926
1933
|
msgstr "✔️ فعال کردن پروکسی تلگرام (MTProto)"
|
Binary file
|
@@ -536,6 +536,9 @@ msgstr "Por favor, selecione pelo menos um arquivo."
|
|
536
536
|
msgid "Please select at least one record."
|
537
537
|
msgstr "Por favor, selecione pelo menos um registro."
|
538
538
|
|
539
|
+
msgid "Please select at least one user"
|
540
|
+
msgstr ""
|
541
|
+
|
539
542
|
msgid "Please select one of the following applications:"
|
540
543
|
msgstr ""
|
541
544
|
"Selecione um dos seguintes aplicativos:\n"
|
@@ -667,6 +670,9 @@ msgstr "Selecionar todos os registros"
|
|
667
670
|
msgid "Select record"
|
668
671
|
msgstr "Selecionar registro"
|
669
672
|
|
673
|
+
msgid "Seleted Users"
|
674
|
+
msgstr ""
|
675
|
+
|
670
676
|
msgid "Send Message to User's Telegram"
|
671
677
|
msgstr "📣 Enviar mensagem para o telegram do usuário"
|
672
678
|
|
@@ -781,12 +787,9 @@ msgid "User is inactive"
|
|
781
787
|
msgstr "O usuário está inativo"
|
782
788
|
|
783
789
|
msgid ""
|
784
|
-
"User usage will be updated every 6 minutes. To update it now click <a
|
785
|
-
"
|
790
|
+
"User usage will be updated every 6 minutes. To update it now click <a "
|
791
|
+
"href=\"%(link)s\" class=\"btn btn-info\">here</a>"
|
786
792
|
msgstr ""
|
787
|
-
"O uso do usuário será atualizado a cada 6 minutos. Para atualizá-lo agora "
|
788
|
-
"clique <a href=\"%(link)s\"<inlang-LineFeed>class=\"btn btn-"
|
789
|
-
"info\">aqui</a>"
|
790
793
|
|
791
794
|
msgid "V2rayNG"
|
792
795
|
msgstr ""
|
Binary file
|