hiddifypanel 10.7.0.dev94__py3-none-any.whl → 10.8.0.dev96__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/drivers/ssh_liberty_bridge_api.py +1 -1
- hiddifypanel/panel/admin/Actions.py +1 -1
- hiddifypanel/panel/admin/DomainAdmin.py +12 -13
- hiddifypanel/panel/commercial/restapi/v2/admin/admin_user_api.py +11 -1
- hiddifypanel/panel/commercial/restapi/v2/admin/user_api.py +8 -1
- hiddifypanel/panel/init_db.py +1 -3
- hiddifypanel/panel/user/link_maker.py +4 -0
- hiddifypanel/panel/user/user.py +10 -7
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/en/LC_MESSAGES/messages.po +25 -289
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/fa/LC_MESSAGES/messages.po +24 -295
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/pt/LC_MESSAGES/messages.po +10 -283
- hiddifypanel/translations/ru/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/ru/LC_MESSAGES/messages.po +21 -296
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/zh/LC_MESSAGES/messages.po +10 -263
- hiddifypanel/translations.i18n/en.json +10 -172
- hiddifypanel/translations.i18n/fa.json +13 -175
- hiddifypanel/translations.i18n/pt.json +2 -164
- hiddifypanel/translations.i18n/ru.json +12 -174
- hiddifypanel/translations.i18n/zh.json +2 -164
- {hiddifypanel-10.7.0.dev94.dist-info → hiddifypanel-10.8.0.dev96.dist-info}/METADATA +1 -1
- {hiddifypanel-10.7.0.dev94.dist-info → hiddifypanel-10.8.0.dev96.dist-info}/RECORD +31 -31
- {hiddifypanel-10.7.0.dev94.dist-info → hiddifypanel-10.8.0.dev96.dist-info}/LICENSE.md +0 -0
- {hiddifypanel-10.7.0.dev94.dist-info → hiddifypanel-10.8.0.dev96.dist-info}/WHEEL +0 -0
- {hiddifypanel-10.7.0.dev94.dist-info → hiddifypanel-10.8.0.dev96.dist-info}/entry_points.txt +0 -0
- {hiddifypanel-10.7.0.dev94.dist-info → hiddifypanel-10.8.0.dev96.dist-info}/top_level.txt +0 -0
hiddifypanel/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
10.
|
1
|
+
10.8.0.dev96
|
hiddifypanel/VERSION.py
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
__version__='10.
|
1
|
+
__version__='10.8.0.dev96'
|
2
2
|
from datetime import datetime
|
3
|
-
__release_date__= datetime.strptime('2024-03-
|
3
|
+
__release_date__= datetime.strptime('2024-03-07','%Y-%m-%d')
|
@@ -10,7 +10,7 @@ class SSHLibertyBridgeApi(DriverABS):
|
|
10
10
|
|
11
11
|
def get_ssh_redis_client(self):
|
12
12
|
if not hasattr(self, 'redis_client'):
|
13
|
-
self.redis_client = redis.from_url(
|
13
|
+
self.redis_client = redis.from_url('unix:///opt/hiddify-manager/other/redis/run.sock?db=1', decode_responses=True)
|
14
14
|
|
15
15
|
return self.redis_client
|
16
16
|
|
@@ -170,7 +170,7 @@ class Actions(FlaskView):
|
|
170
170
|
|
171
171
|
tcp_ping = hutils.network.is_domain_reality_friendly(d)
|
172
172
|
if tcp_ping:
|
173
|
-
dip = hutils.network.get_domain_ip(d)
|
173
|
+
dip = str(hutils.network.get_domain_ip(d))
|
174
174
|
dip_country = (IPCOUNTRY.get(dip) or {}).get('country', {}).get('iso_code', 'unknown')
|
175
175
|
if dip_country == "IR":
|
176
176
|
continue
|
@@ -169,26 +169,25 @@ class DomainAdmin(AdminLTEModelView):
|
|
169
169
|
if hconfig(ConfigEnum.cloudflare) and model.mode != DomainType.fake:
|
170
170
|
try:
|
171
171
|
proxied = model.mode in [DomainType.cdn, DomainType.auto_cdn_ip]
|
172
|
-
cf_api.add_or_update_domain(model.domain, ipv4_list[0], "A", proxied=proxied)
|
172
|
+
cf_api.add_or_update_domain(model.domain, str(ipv4_list[0]), "A", proxied=proxied)
|
173
173
|
if ipv6_list:
|
174
|
-
cf_api.add_or_update_domain(model.domain, ipv6_list[0], "AAAA", proxied=proxied)
|
174
|
+
cf_api.add_or_update_domain(model.domain, str(ipv6_list[0]), "AAAA", proxied=proxied)
|
175
175
|
|
176
176
|
skip_check = True
|
177
177
|
except Exception as e:
|
178
|
-
# raise e
|
179
178
|
raise ValidationError(__("Can not connect to Cloudflare.") + f' {e}')
|
180
179
|
# elif model.mode==DomainType.auto_cdn_ip:
|
181
180
|
if model.alias and not model.alias.replace("_", "").isalnum():
|
182
181
|
hutils.flask.flash(__("Using alias with special charachters may cause problem in some clients like FairVPN."), 'warning')
|
183
|
-
|
182
|
+
# raise ValidationError(_("You have to add your cloudflare api key to use this feature: "))
|
184
183
|
|
185
184
|
dip = hutils.network.get_domain_ip(model.domain)
|
186
185
|
if model.sub_link_only:
|
187
186
|
if dip is None:
|
188
|
-
raise ValidationError(_("Domain can not be resolved! there is a problem in your domain"))
|
187
|
+
raise ValidationError(_("Domain can not be resolved! there is a problem in your domain")) # type: ignore
|
189
188
|
elif not skip_check:
|
190
189
|
if dip is None:
|
191
|
-
raise ValidationError(_("Domain can not be resolved! there is a problem in your domain"))
|
190
|
+
raise ValidationError(_("Domain can not be resolved! there is a problem in your domain")) # type: ignore
|
192
191
|
|
193
192
|
domain_ip_is_same_as_panel = False
|
194
193
|
domain_ip_is_same_as_panel |= dip in ipv4_list
|
@@ -196,24 +195,24 @@ class DomainAdmin(AdminLTEModelView):
|
|
196
195
|
domain_ip_is_same_as_panel |= ipaddress.ip_address(dip) == ipaddress.ip_address(ipv6)
|
197
196
|
|
198
197
|
if model.mode == DomainType.direct and not domain_ip_is_same_as_panel:
|
199
|
-
hutils.flask.flash(
|
200
|
-
|
201
|
-
|
202
|
-
# raise ValidationError(_("Domain IP=%(domain_ip)s is not matched with your ip=%(server_ip)s which is required in direct mode", server_ip=myip, domain_ip=dip))
|
198
|
+
# hutils.flask.flash(__(f"Domain IP={dip} is not matched with your ip={', '.join(list(map(str, ipv4_list)))} which is required in direct mode"),category='error')
|
199
|
+
raise ValidationError(
|
200
|
+
__("Domain IP=%(domain_ip)s is not matched with your ip=%(server_ip)s which is required in direct mode", server_ip=', '.join(list(map(str, ipv4_list))), domain_ip=dip)) # type: ignore
|
203
201
|
|
204
202
|
if domain_ip_is_same_as_panel and model.mode in [DomainType.cdn, DomainType.relay, DomainType.fake, DomainType.auto_cdn_ip]:
|
205
|
-
hutils.flask.flash(__(f"In CDN mode, Domain IP={dip} should be different to your ip={', '.join(list(map(str, ipv4_list)))}"), 'warning')
|
206
|
-
|
203
|
+
# hutils.flask.flash(__(f"In CDN mode, Domain IP={dip} should be different to your ip={', '.join(list(map(str, ipv4_list)))}"), 'warning')
|
204
|
+
raise ValidationError(__("In CDN mode, Domain IP=%(domain_ip)s should be different to your ip=%(server_ip)s", server_ip=', '.join(list(map(str, ipv4_list))), domain_ip=dip)) # type: ignore
|
207
205
|
|
208
206
|
# if model.mode in [DomainType.ss_faketls, DomainType.telegram_faketls]:
|
209
207
|
# if len(Domain.query.filter(Domain.mode==model.mode and Domain.id!=model.id).all())>0:
|
210
208
|
# ValidationError(f"another {model.mode} is exist")
|
209
|
+
|
211
210
|
model.domain = model.domain.lower()
|
212
211
|
if model.mode == DomainType.direct and model.cdn_ip:
|
213
212
|
raise ValidationError(f"Specifying CDN IP is only valid for CDN mode")
|
214
213
|
|
215
214
|
if model.mode == DomainType.fake and not model.cdn_ip:
|
216
|
-
model.cdn_ip = ipv4_list[0]
|
215
|
+
model.cdn_ip = str(ipv4_list[0])
|
217
216
|
|
218
217
|
# if model.mode==DomainType.fake and model.cdn_ip!=myip:
|
219
218
|
# raise ValidationError(f"Specifying CDN IP is only valid for CDN mode")
|
@@ -26,6 +26,16 @@ class AdminSchema(Schema):
|
|
26
26
|
lang = Enum(Lang, required=True)
|
27
27
|
|
28
28
|
|
29
|
+
class PatchAdminSchema(AdminSchema):
|
30
|
+
def __init__(self, *args, **kwargs):
|
31
|
+
super().__init__(*args, **kwargs)
|
32
|
+
self.fields['name'].required = False
|
33
|
+
self.fields['mode'].required = False
|
34
|
+
self.fields['lang'].required = False
|
35
|
+
self.fields['can_add_admin'].required = False
|
36
|
+
pass
|
37
|
+
|
38
|
+
|
29
39
|
class AdminUserApi(MethodView):
|
30
40
|
decorators = [login_required({Role.super_admin, Role.admin})]
|
31
41
|
|
@@ -36,7 +46,7 @@ class AdminUserApi(MethodView):
|
|
36
46
|
abort(403, "You don't have permission to access this admin")
|
37
47
|
return admin.to_dict()
|
38
48
|
|
39
|
-
@app.input(
|
49
|
+
@app.input(PatchAdminSchema, arg_name='data')
|
40
50
|
@app.output(SuccessfulSchema)
|
41
51
|
def patch(self, uuid, data):
|
42
52
|
admin = AdminUser.by_uuid(uuid) or abort(404, "admin not found")
|
@@ -69,6 +69,13 @@ class UserSchema(Schema):
|
|
69
69
|
)
|
70
70
|
|
71
71
|
|
72
|
+
class PatchUserSchema(UserSchema):
|
73
|
+
def __init__(self, *args, **kwargs):
|
74
|
+
super().__init__(*args, **kwargs)
|
75
|
+
self.fields['name'].required = False
|
76
|
+
pass
|
77
|
+
|
78
|
+
|
72
79
|
class UserApi(MethodView):
|
73
80
|
decorators = [login_required({Role.super_admin, Role.admin, Role.agent})]
|
74
81
|
|
@@ -80,7 +87,7 @@ class UserApi(MethodView):
|
|
80
87
|
|
81
88
|
return user.to_dict(False)
|
82
89
|
|
83
|
-
@app.input(
|
90
|
+
@app.input(PatchUserSchema, arg_name="data")
|
84
91
|
@app.output(SuccessfulSchema)
|
85
92
|
def patch(self, uuid, data):
|
86
93
|
user = User.by_uuid(uuid) or abort(404, "user not found")
|
hiddifypanel/panel/init_db.py
CHANGED
@@ -86,8 +86,6 @@ def _v65():
|
|
86
86
|
add_config_if_not_exist(ConfigEnum.mux_brutal_down_mbps, '100')
|
87
87
|
|
88
88
|
|
89
|
-
def _v64():
|
90
|
-
set_hconfig(ConfigEnum.ssh_server_redis_url, "unix:///opt/hiddify-manager/other/redis/run.sock?db=1")
|
91
89
|
|
92
90
|
|
93
91
|
def _v63():
|
@@ -182,7 +180,7 @@ def _v45():
|
|
182
180
|
|
183
181
|
if not Proxy.query.filter(Proxy.name == "SSH").first():
|
184
182
|
db.session.add(Proxy(l3='ssh', transport='ssh', cdn='direct', proto='ssh', enable=True, name="SSH"))
|
185
|
-
|
183
|
+
|
186
184
|
add_config_if_not_exist(ConfigEnum.ssh_server_port, hutils.random.get_random_unused_port())
|
187
185
|
add_config_if_not_exist(ConfigEnum.ssh_server_enable, False)
|
188
186
|
# def _v43():
|
@@ -302,6 +302,10 @@ def make_proxy(hconfigs, proxy: Proxy, domain_db: Domain, phttp=80, ptls=443, pp
|
|
302
302
|
def to_link(proxy):
|
303
303
|
if 'error' in proxy:
|
304
304
|
return proxy
|
305
|
+
# ignore httpupgrade for Streisand
|
306
|
+
if g.user_agent.get('is_streisand') and proxy.get('transport') == 'httpupgrade':
|
307
|
+
return {'msg': 'ignore httpupgrade for streisand'}
|
308
|
+
|
305
309
|
orig_name_link = (proxy['extra_info'] + " " + proxy["name"]).strip()
|
306
310
|
name_link = hutils.encode.url_encode(orig_name_link)
|
307
311
|
if proxy['proto'] == 'vmess':
|
hiddifypanel/panel/user/user.py
CHANGED
@@ -284,19 +284,22 @@ def get_domain_information(no_domain=False, filter_domain=None, alternative=None
|
|
284
284
|
# print("autocdn ip mode ", d.cdn_ip)
|
285
285
|
if "*" in d.domain:
|
286
286
|
d.domain = d.domain.replace("*", hutils.random.get_random_string(5, 15))
|
287
|
-
if len(domains) == 0:
|
288
|
-
domains = [Domain(id=0, domain=alternative, mode=DomainType.direct, cdn_ip='', show_domains=[], child_id=0)]
|
289
|
-
domains[0].has_auto_ip = True
|
290
287
|
|
291
|
-
|
288
|
+
valid_domains = [d for d in domains if d.mode != DomainType.fake and d.mode != DomainType.reality]
|
289
|
+
|
290
|
+
if len(valid_domains) == 0:
|
291
|
+
valid_domains = [Domain(id=0, domain=alternative, mode=DomainType.direct, cdn_ip='', show_domains=[], child_id=0)]
|
292
|
+
valid_domains[0].has_auto_ip = True
|
293
|
+
|
294
|
+
return domains, valid_domains, has_auto_cdn
|
292
295
|
|
293
296
|
|
294
297
|
def get_common_data(user_uuid, mode, no_domain=False, filter_domain=None):
|
295
298
|
'''Usable for user account'''
|
296
299
|
# uuid_secret=str(uuid.UUID(user_secret))
|
297
|
-
domains, has_auto_cdn = get_domain_information(no_domain, filter_domain, urlparse(request.base_url).hostname)
|
298
|
-
|
299
|
-
db_domain =
|
300
|
+
domains, valid_domains, has_auto_cdn = get_domain_information(no_domain, filter_domain, urlparse(request.base_url).hostname)
|
301
|
+
|
302
|
+
db_domain = valid_domains[0] # TODO refactor
|
300
303
|
domain = db_domain.domain
|
301
304
|
user: User = g.account if g.account.uuid == user_uuid else User.by_uuid(f'{user_uuid}')
|
302
305
|
if user is None:
|
Binary file
|
@@ -148,7 +148,7 @@ msgid "config.telegram_lib.description"
|
|
148
148
|
msgstr ""
|
149
149
|
"You can switch between different Telegram Libraries. Please note that only "
|
150
150
|
"Python works in all servers, others may have some issue. Test Proxy after "
|
151
|
-
"changing it
|
151
|
+
"changing it"
|
152
152
|
|
153
153
|
msgid "config.admin.label"
|
154
154
|
msgstr "Admin Settings"
|
@@ -178,15 +178,15 @@ msgstr ""
|
|
178
178
|
msgid "config.branding_site.description"
|
179
179
|
msgstr ""
|
180
180
|
"The link to be shown on support section of user's page.\n"
|
181
|
-
"You can put also your Telegram Channel or Telegram PV here
|
181
|
+
"You can put also your Telegram Channel or Telegram PV here"
|
182
182
|
|
183
183
|
msgid "config.branding_freetext.label"
|
184
184
|
msgstr "📢 Support Section Text"
|
185
185
|
|
186
186
|
msgid "config.branding_freetext.description"
|
187
187
|
msgstr ""
|
188
|
-
"Branding Text. this box's text will be shown on support section of User's "
|
189
|
-
"
|
188
|
+
"Branding Text. this box's text will be shown on support section of User's Page. you can use HTML tags\n"
|
189
|
+
"<p><br /><a href=\"https://onlinehtmleditor.dev\" target=\"_blank\">HTML Editor</a></p>"
|
190
190
|
|
191
191
|
msgid "config.branding.label"
|
192
192
|
msgstr "Customizing User Page"
|
@@ -353,7 +353,7 @@ msgid "config.tls.label"
|
|
353
353
|
msgstr "TLS Configuration"
|
354
354
|
|
355
355
|
msgid "config.tls.description"
|
356
|
-
msgstr "TLS Configurations could be set in this section
|
356
|
+
msgstr "TLS Configurations could be set in this section"
|
357
357
|
|
358
358
|
msgid "config.ssfaketls_enable.label"
|
359
359
|
msgstr "🆎 Shadowsocks FakeTLS (Simple OBFS)"
|
@@ -444,8 +444,9 @@ msgstr "🔐 Telegram Bot Token"
|
|
444
444
|
|
445
445
|
msgid "config.telegram_bot_token.description"
|
446
446
|
msgstr ""
|
447
|
-
"To add Telegram bot feature. you need to create a bot with
|
448
|
-
"
|
447
|
+
"<p>To add Telegram bot feature. you need to create a bot with <a "
|
448
|
+
"href=\"https://t.me/BotFather\" target=\"_blank\">@BotFather</a> and enter "
|
449
|
+
"the API code in this field</p>"
|
449
450
|
|
450
451
|
msgid "config.package_mode.label"
|
451
452
|
msgstr "🔄 Package Update Mode"
|
@@ -528,7 +529,7 @@ msgstr ""
|
|
528
529
|
"🔝 Increases browsing speed. To get the Key, go to the <a href='https://1.1.1.1/'> 1.1.1.1 </a>\n"
|
529
530
|
"app and purchase the original KEY from Cloudflare\n"
|
530
531
|
"<br>\n"
|
531
|
-
"⚠️ If there is an error in this Key, the WARP will be disabled
|
532
|
+
"⚠️ If there is an error in this Key, the WARP will be disabled"
|
532
533
|
|
533
534
|
msgid "config.warp_mode.label"
|
534
535
|
msgstr "✴️ Warp+ Mode"
|
@@ -729,65 +730,12 @@ msgstr "Shadowsocks Path"
|
|
729
730
|
msgid "config.path_ss.description"
|
730
731
|
msgstr "Shadowsocks Path in the Links"
|
731
732
|
|
732
|
-
msgid "config.dbvalues.label"
|
733
|
-
msgstr "-"
|
734
|
-
|
735
|
-
msgid "config.dbvalues.description"
|
736
|
-
msgstr "-"
|
737
|
-
|
738
733
|
msgid "config.create_easysetup_link.label"
|
739
734
|
msgstr "-"
|
740
735
|
|
741
736
|
msgid "config.create_easysetup_link.description"
|
742
737
|
msgstr "-"
|
743
738
|
|
744
|
-
msgid "config.wireguard_enable.label"
|
745
|
-
msgstr "Enable WireGuard"
|
746
|
-
|
747
|
-
msgid "config.wireguard_enable.description"
|
748
|
-
msgstr ""
|
749
|
-
"WireGuard is UDP based protocol.\n"
|
750
|
-
"\n"
|
751
|
-
"⚠️ It is working in Hiddify Next. "
|
752
|
-
|
753
|
-
msgid "config.wireguard_port.label"
|
754
|
-
msgstr "Wireguard Port"
|
755
|
-
|
756
|
-
msgid "config.wireguard_port.description"
|
757
|
-
msgstr "config.wireguard_port.description"
|
758
|
-
|
759
|
-
msgid "config.wireguard_ipv6.label"
|
760
|
-
msgstr "-"
|
761
|
-
|
762
|
-
msgid "config.wireguard_ipv6.description"
|
763
|
-
msgstr "-"
|
764
|
-
|
765
|
-
msgid "config.wireguard_ipv4.label"
|
766
|
-
msgstr "-"
|
767
|
-
|
768
|
-
msgid "config.wireguard_ipv4.description"
|
769
|
-
msgstr "-"
|
770
|
-
|
771
|
-
msgid "config.wireguard_private_key.label"
|
772
|
-
msgstr "-"
|
773
|
-
|
774
|
-
msgid "config.wireguard_private_key.description"
|
775
|
-
msgstr "-"
|
776
|
-
|
777
|
-
msgid "config.wireguard_public_key.label"
|
778
|
-
msgstr "-"
|
779
|
-
|
780
|
-
msgid "config.wireguard_public_key.description"
|
781
|
-
msgstr "-"
|
782
|
-
|
783
|
-
msgid "config.wireguard_noise_trick.label"
|
784
|
-
msgstr "WireGuard Noise Trick"
|
785
|
-
|
786
|
-
msgid "config.wireguard_noise_trick.description"
|
787
|
-
msgstr ""
|
788
|
-
"This method introduces extra noise to prevent detection and blocking by the "
|
789
|
-
"GFW."
|
790
|
-
|
791
739
|
msgid "config.ssh_server_redis_url.label"
|
792
740
|
msgstr "SSH user database address"
|
793
741
|
|
@@ -800,7 +748,7 @@ msgstr "↔️ SSH Proxy Port"
|
|
800
748
|
msgid "config.ssh_server_port.description"
|
801
749
|
msgstr ""
|
802
750
|
"This is completely different from your original SSH server. It is a "
|
803
|
-
"dedicated program
|
751
|
+
"dedicated program"
|
804
752
|
|
805
753
|
msgid "config.ssh_server_enable.label"
|
806
754
|
msgstr "✔️ Enable SSH Proxy"
|
@@ -817,13 +765,6 @@ msgstr ""
|
|
817
765
|
"<br>\n"
|
818
766
|
"📦 Singbox : Developed by SagerNet. It is also a good core"
|
819
767
|
|
820
|
-
msgid "config.warp_sites.label"
|
821
|
-
msgstr "🆚 Additional Warp Sites"
|
822
|
-
|
823
|
-
msgid "config.warp_sites.description"
|
824
|
-
msgstr ""
|
825
|
-
"Add additional sites to pass through Warp (only when warp mode is not None)"
|
826
|
-
|
827
768
|
msgid "config.dns_server.label"
|
828
769
|
msgstr "🖥 DNS Server"
|
829
770
|
|
@@ -833,128 +774,6 @@ msgstr ""
|
|
833
774
|
"🚧 Block Malware 1.1.1.2 <br>\n"
|
834
775
|
"🔞 Block Porn 1.1.1.3\n"
|
835
776
|
|
836
|
-
msgid "config.reality_port.label"
|
837
|
-
msgstr "↔️ Direct Reality Port"
|
838
|
-
|
839
|
-
msgid "config.reality_port.description"
|
840
|
-
msgstr ""
|
841
|
-
"You can set a customized port for your reality server to reduce the system's"
|
842
|
-
" overhead. (Allow direct connection to proxies should be yes)"
|
843
|
-
|
844
|
-
msgid "config.tls_fragment_enable.label"
|
845
|
-
msgstr "⏯ Enable TLS Fragment"
|
846
|
-
|
847
|
-
msgid "config.tls_fragment_enable.description"
|
848
|
-
msgstr "Under some circumstances, it can bypass the SNI blacklist system"
|
849
|
-
|
850
|
-
msgid "config.tls_fragment_size.label"
|
851
|
-
msgstr "🎚 TLS Fragment Size"
|
852
|
-
|
853
|
-
msgid "config.tls_fragment_size.description"
|
854
|
-
msgstr "The Size of each Packet"
|
855
|
-
|
856
|
-
msgid "config.tls_fragment_sleep.label"
|
857
|
-
msgstr "⏱ TLS Fragment Sleep"
|
858
|
-
|
859
|
-
msgid "config.tls_fragment_sleep.description"
|
860
|
-
msgstr "The time delay between Fragments"
|
861
|
-
|
862
|
-
msgid "config.tls_mixed_case.label"
|
863
|
-
msgstr "🔠 Enable TLS Mixed SNI Case"
|
864
|
-
|
865
|
-
msgid "config.tls_mixed_case.description"
|
866
|
-
msgstr "Enables TLS Mixed SNI Case Fragmentation"
|
867
|
-
|
868
|
-
msgid "config.tls_padding_enable.label"
|
869
|
-
msgstr "♒️ Enable TLS Padding"
|
870
|
-
|
871
|
-
msgid "config.tls_padding_enable.description"
|
872
|
-
msgstr "Enables Padding for TLS Fragmentation"
|
873
|
-
|
874
|
-
msgid "config.tls_padding_length.label"
|
875
|
-
msgstr "📏 TLS Padding"
|
876
|
-
|
877
|
-
msgid "config.tls_padding_length.description"
|
878
|
-
msgstr "The length of the Padding for TLS Fragmentation"
|
879
|
-
|
880
|
-
msgid "config.mux_enable.label"
|
881
|
-
msgstr "Ⓜ️ MUX Enable (⚠️ Incompatible with some clients)"
|
882
|
-
|
883
|
-
msgid "config.mux_enable.description"
|
884
|
-
msgstr ""
|
885
|
-
"Mux needs compatible clients. Mux in Hiddify Next and singbox are not "
|
886
|
-
"compatible with Xray"
|
887
|
-
|
888
|
-
msgid "config.mux_protocol.label"
|
889
|
-
msgstr "♍️ MUX Protocol"
|
890
|
-
|
891
|
-
msgid "config.mux_protocol.description"
|
892
|
-
msgstr ""
|
893
|
-
"ℹ️ Multiplex Protocol. 'sMux' is used by default\n"
|
894
|
-
"<br>\n"
|
895
|
-
"➖ sMux: Stream Multiplexing\n"
|
896
|
-
"<br>\n"
|
897
|
-
"➖ YaMux: Yet Another Multiplexer\n"
|
898
|
-
"<br>\n"
|
899
|
-
"➖ h2Mux: Multiplexing Streams Over HTTP/2"
|
900
|
-
|
901
|
-
msgid "config.mux_max_connections.label"
|
902
|
-
msgstr "⛓ MUX Max Connections"
|
903
|
-
|
904
|
-
msgid "config.mux_max_connections.description"
|
905
|
-
msgstr "Maximum Connections. Conflict with Max Streams"
|
906
|
-
|
907
|
-
msgid "config.mux_min_streams.label"
|
908
|
-
msgstr "↘️ MUX Min Streams"
|
909
|
-
|
910
|
-
msgid "config.mux_min_streams.description"
|
911
|
-
msgstr ""
|
912
|
-
"Minimum Multiplexed streams in a connection before opening a new connection"
|
913
|
-
|
914
|
-
msgid "config.mux_max_streams.label"
|
915
|
-
msgstr "↗️ MUX Max Streams"
|
916
|
-
|
917
|
-
msgid "config.mux_max_streams.description"
|
918
|
-
msgstr ""
|
919
|
-
"Maximum Multiplexed streams in a connection before opening a new connection"
|
920
|
-
|
921
|
-
msgid "config.mux_padding_enable.label"
|
922
|
-
msgstr "⟹ MUX Padding"
|
923
|
-
|
924
|
-
msgid "config.mux_padding_enable.description"
|
925
|
-
msgstr "Enables MUX Padding"
|
926
|
-
|
927
|
-
msgid "config.mux_brutal_enable.label"
|
928
|
-
msgstr "☣️ MUX Brutal"
|
929
|
-
|
930
|
-
msgid "config.mux_brutal_enable.description"
|
931
|
-
msgstr "Enables TCP-Brutal congestion control algorithm"
|
932
|
-
|
933
|
-
msgid "config.mux_brutal_up_mbps.label"
|
934
|
-
msgstr "⬆️ MUX Brutal Upload (mbps)"
|
935
|
-
|
936
|
-
msgid "config.mux_brutal_up_mbps.description"
|
937
|
-
msgstr "TCP-Brutal Maximum Upload Speed"
|
938
|
-
|
939
|
-
msgid "config.mux_brutal_down_mbps.label"
|
940
|
-
msgstr "⬇️ MUX Brutal Download (mbps)"
|
941
|
-
|
942
|
-
msgid "config.mux_brutal_down_mbps.description"
|
943
|
-
msgstr "TCP-Brutal Maximum Download Speed"
|
944
|
-
|
945
|
-
msgid "config.proxy_path_admin.label"
|
946
|
-
msgstr "🔐 Proxy Path for Admins"
|
947
|
-
|
948
|
-
msgid "config.proxy_path_admin.description"
|
949
|
-
msgstr ""
|
950
|
-
"We use secret proxy path to hide our proxies for the governments and bots"
|
951
|
-
|
952
|
-
msgid "config.proxy_path_client.label"
|
953
|
-
msgstr "🔏 Proxy Path for Clients"
|
954
|
-
|
955
|
-
msgid "config.proxy_path_client.description"
|
956
|
-
msgstr "Secret proxy path hide the proxies from the governments and bots"
|
957
|
-
|
958
777
|
msgid "config.hysteria_enable.label"
|
959
778
|
msgstr "Enable Hysteria2"
|
960
779
|
|
@@ -967,88 +786,6 @@ msgstr "🔍 Hysteria2 Port"
|
|
967
786
|
msgid "config.hysteria_port.description"
|
968
787
|
msgstr "Hysteria UDP Port for example 5678"
|
969
788
|
|
970
|
-
msgid "config.hysteria_obfs_enable.label"
|
971
|
-
msgstr "🎛 Hysteria OBFS Enable"
|
972
|
-
|
973
|
-
msgid "config.hysteria_obfs_enable.description"
|
974
|
-
msgstr " Enables Hysteria Obfuscation (Salamander)"
|
975
|
-
|
976
|
-
msgid "config.hysteria_up_mbps.label"
|
977
|
-
msgstr "⬆️ Hysteria Upload (mbps)"
|
978
|
-
|
979
|
-
msgid "config.hysteria_up_mbps.description"
|
980
|
-
msgstr "Hysteria Maximum Upload Speed"
|
981
|
-
|
982
|
-
msgid "config.hysteria_down_mbps.label"
|
983
|
-
msgstr "⬇️ Hysteria Download (mbps)"
|
984
|
-
|
985
|
-
msgid "config.hysteria_down_mbps.description"
|
986
|
-
msgstr "Hysteria Maximum Download Speed"
|
987
|
-
|
988
|
-
msgid "config.shadowsocks2022_enable.label"
|
989
|
-
msgstr "Enable Shadowsocks 2022"
|
990
|
-
|
991
|
-
msgid "config.shadowsocks2022_enable.description"
|
992
|
-
msgstr ""
|
993
|
-
"Shadowsocks 2022 is a secure proxy protocol for TCP and UDP traffic. The "
|
994
|
-
"proxy traffic is indistinguishable from a random byte stream, and therefore "
|
995
|
-
"can circumvent firewalls and Internet censors that rely on DPI (Deep Packet "
|
996
|
-
"Inspection)."
|
997
|
-
|
998
|
-
msgid "config.shadowsocks2022_method.label"
|
999
|
-
msgstr "Shadowsocks Encrypytion Method"
|
1000
|
-
|
1001
|
-
msgid "config.shadowsocks2022_method.description"
|
1002
|
-
msgstr "This method also used in ShadowTLS and SSFakeTLS"
|
1003
|
-
|
1004
|
-
msgid "config.shadowsocks2022_port.label"
|
1005
|
-
msgstr "Shadowsocks 2022 Port"
|
1006
|
-
|
1007
|
-
msgid "config.shadowsocks2022_port.description"
|
1008
|
-
msgstr "It needs both UDP and TCP to be free"
|
1009
|
-
|
1010
|
-
msgid "config.ws_enable.label"
|
1011
|
-
msgstr "Enable Websocket"
|
1012
|
-
|
1013
|
-
msgid "config.ws_enable.description"
|
1014
|
-
msgstr ""
|
1015
|
-
"Websocket creates a tunnel over http that is useful to be used in CDN."
|
1016
|
-
|
1017
|
-
msgid "config.grpc_enable.label"
|
1018
|
-
msgstr "Enable gRPC"
|
1019
|
-
|
1020
|
-
msgid "config.grpc_enable.description"
|
1021
|
-
msgstr ""
|
1022
|
-
"gRPC is a modern open source high performance Remote Procedure Call (RPC) "
|
1023
|
-
"framework. It can be used in supported CDNs."
|
1024
|
-
|
1025
|
-
msgid "config.httpupgrade_enable.label"
|
1026
|
-
msgstr "Enable HTTPUpgrade Method"
|
1027
|
-
|
1028
|
-
msgid "config.httpupgrade_enable.description"
|
1029
|
-
msgstr ""
|
1030
|
-
"HTTPUpgrade complete a HTTP 1.1 Upgrade request and response before using the connection directly. It is similar to WebSocket in the way it create an direction channel that can be forwarded by many reverse proxies and CDNs, without the need to deal with all the issue around WebSocket Protocol itself.\n"
|
1031
|
-
"\n"
|
1032
|
-
"⚠️ Not Available in Xray based Clients. Only HiddifyNext, Singbox, and V2fly clients are supported"
|
1033
|
-
|
1034
|
-
msgid "config.path_httpupgrade.label"
|
1035
|
-
msgstr "HTTP Upgrade Path"
|
1036
|
-
|
1037
|
-
msgid "config.path_httpupgrade.description"
|
1038
|
-
msgstr "should be random"
|
1039
|
-
|
1040
|
-
msgid "config.mux.label"
|
1041
|
-
msgstr "MUX Config"
|
1042
|
-
|
1043
|
-
msgid "config.mux.description"
|
1044
|
-
msgstr "MUX (Multiplex) configurations could be set in this section"
|
1045
|
-
|
1046
|
-
msgid "config.tls_trick.label"
|
1047
|
-
msgstr "TLS Trick"
|
1048
|
-
|
1049
|
-
msgid "config.tls_trick.description"
|
1050
|
-
msgstr "TLS Fragmentation configurations could be set in this section"
|
1051
|
-
|
1052
789
|
msgid "config.ssh.label"
|
1053
790
|
msgstr "SSH Proxy"
|
1054
791
|
|
@@ -1074,21 +811,6 @@ msgstr "-"
|
|
1074
811
|
msgid "config.hidden.description"
|
1075
812
|
msgstr "-"
|
1076
813
|
|
1077
|
-
msgid "config.wireguard.label"
|
1078
|
-
msgstr "Wireguard"
|
1079
|
-
|
1080
|
-
msgid "config.wireguard.description"
|
1081
|
-
msgstr ""
|
1082
|
-
"WireGuard is a lightweight, UDP based protocol known for its simplicity, efficiency, and strong security. It offers quick setup, transparent code, and has gained popularity for its ease of use across various operating systems.\n"
|
1083
|
-
"\n"
|
1084
|
-
"⚠️ Accounting is not yet implemented for this protocol."
|
1085
|
-
|
1086
|
-
msgid "config.shadowsocks.label"
|
1087
|
-
msgstr "Shadowsocks"
|
1088
|
-
|
1089
|
-
msgid "config.shadowsocks.description"
|
1090
|
-
msgstr "Shadowsocks is a fast tunnel proxy that helps you bypass firewalls."
|
1091
|
-
|
1092
814
|
msgid "Domain can not be resolved! there is a problem in your domain"
|
1093
815
|
msgstr ""
|
1094
816
|
"Domain can not be resolved! There is a problem in your domain. Please check "
|
@@ -1676,6 +1398,20 @@ msgstr ""
|
|
1676
1398
|
"Using alias with special charachters may cause problem in some clients like "
|
1677
1399
|
"FairVPN."
|
1678
1400
|
|
1401
|
+
msgid ""
|
1402
|
+
"Domain IP=%(domain_ip)s is not matched with your ip=%(server_ip)s which is "
|
1403
|
+
"required in direct mode"
|
1404
|
+
msgstr ""
|
1405
|
+
"Domain IP=%(domain_ip)s is not matched with your ip=%(server_ip)s which is "
|
1406
|
+
"required in direct mode"
|
1407
|
+
|
1408
|
+
msgid ""
|
1409
|
+
"In CDN mode, Domain IP=%(domain_ip)s should be different to your "
|
1410
|
+
"ip=%(server_ip)s"
|
1411
|
+
msgstr ""
|
1412
|
+
"In CDN mode, Domain IP=%(domain_ip)s should be different to your "
|
1413
|
+
"ip=%(server_ip)s"
|
1414
|
+
|
1679
1415
|
msgid "Domain is not REALITY friendly!"
|
1680
1416
|
msgstr "Domain is Not REALITY Friendly!"
|
1681
1417
|
|
@@ -1890,7 +1626,7 @@ msgid ""
|
|
1890
1626
|
msgstr ""
|
1891
1627
|
"🔄 Hiddify Manager automatically takes a Backup every 6 Hours. The path of the Backup files on the server: ⬇️\n"
|
1892
1628
|
"<br>\n"
|
1893
|
-
"/opt/hiddify-
|
1629
|
+
"/opt/hiddify-manager/hiddify-panel/backup/\n"
|
1894
1630
|
"<br>\n"
|
1895
1631
|
"<br>\n"
|
1896
1632
|
"<br>\n"
|
Binary file
|