hiddifypanel 10.30.0.dev0__py3-none-any.whl → 10.30.0.dev2__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/base.py +15 -14
- hiddifypanel/models/config.py +5 -12
- hiddifypanel/panel/admin/templates/model/proxydetail_list.html +6 -0
- hiddifypanel/panel/commercial/ProxyDetailsAdmin.py +13 -1
- hiddifypanel/panel/init_db.py +10 -11
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/en/LC_MESSAGES/messages.po +41 -34
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/fa/LC_MESSAGES/messages.po +37 -25
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/pt/LC_MESSAGES/messages.po +4 -1
- hiddifypanel/translations/ru/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/ru/LC_MESSAGES/messages.po +4 -1
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo +0 -0
- hiddifypanel/translations/zh/LC_MESSAGES/messages.po +3 -0
- hiddifypanel/translations.i18n/en.json +35 -34
- hiddifypanel/translations.i18n/fa.json +26 -25
- hiddifypanel/translations.i18n/pt.json +2 -1
- hiddifypanel/translations.i18n/ru.json +2 -1
- hiddifypanel/translations.i18n/zh.json +1 -0
- {hiddifypanel-10.30.0.dev0.dist-info → hiddifypanel-10.30.0.dev2.dist-info}/METADATA +1 -1
- {hiddifypanel-10.30.0.dev0.dist-info → hiddifypanel-10.30.0.dev2.dist-info}/RECORD +28 -27
- {hiddifypanel-10.30.0.dev0.dist-info → hiddifypanel-10.30.0.dev2.dist-info}/WHEEL +1 -1
- {hiddifypanel-10.30.0.dev0.dist-info → hiddifypanel-10.30.0.dev2.dist-info}/LICENSE.md +0 -0
- {hiddifypanel-10.30.0.dev0.dist-info → hiddifypanel-10.30.0.dev2.dist-info}/entry_points.txt +0 -0
- {hiddifypanel-10.30.0.dev0.dist-info → hiddifypanel-10.30.0.dev2.dist-info}/top_level.txt +0 -0
hiddifypanel/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
10.30.0.
|
1
|
+
10.30.0.dev2
|
hiddifypanel/VERSION.py
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
__version__='10.30.0.
|
1
|
+
__version__='10.30.0.dev2'
|
2
2
|
from datetime import datetime
|
3
|
-
__release_date__= datetime.strptime('2024-06-
|
3
|
+
__release_date__= datetime.strptime('2024-06-30','%Y-%m-%d')
|
hiddifypanel/base.py
CHANGED
@@ -18,18 +18,19 @@ from loguru import logger
|
|
18
18
|
from hiddifypanel.panel.init_db import init_db
|
19
19
|
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
return fmt + '\n'
|
21
|
+
def logger_dynamic_formatter(record) -> str:
|
22
|
+
fmt = '<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>'
|
23
|
+
if record['extra']:
|
24
|
+
fmt += ' | <level>{extra}</level>'
|
25
|
+
return fmt + '\n'
|
27
26
|
|
27
|
+
|
28
|
+
def init_logger(app, cli):
|
28
29
|
# configure logger
|
29
|
-
from hiddifypanel.models import ConfigEnum, hconfig
|
30
30
|
logger.remove()
|
31
|
-
logger.add(sys.stderr
|
32
|
-
|
31
|
+
logger.add(sys.stderr if cli else sys.stdout, format=logger_dynamic_formatter, level=app.config['STDOUT_LOG_LEVEL'],
|
32
|
+
colorize=True, catch=True, enqueue=True, diagnose=False, backtrace=True)
|
33
|
+
logger.trace('Logger initiated :)')
|
33
34
|
|
34
35
|
|
35
36
|
# TODO: refactor this function
|
@@ -86,20 +87,20 @@ def create_app(*args, cli=False, **config):
|
|
86
87
|
v = True if v.lower() == "true" else (False if v.lower() == "false" else v)
|
87
88
|
|
88
89
|
app.config[c] = v
|
89
|
-
|
90
|
+
init_logger(app, cli)
|
90
91
|
hiddifypanel.database.init_app(app)
|
91
92
|
with app.app_context():
|
92
93
|
init_db()
|
93
|
-
|
94
|
-
|
94
|
+
logger.add(app.config['HIDDIFY_CONFIG_PATH'] + "/log/system/panel.log", format=logger_dynamic_formatter, level=hconfig(ConfigEnum.log_level),
|
95
|
+
colorize=True, catch=True, enqueue=True, diagnose=False, backtrace=True)
|
95
96
|
|
96
97
|
def get_locale():
|
97
98
|
# Put your logic here. Application can store locale in
|
98
99
|
# user profile, cookie, session, etc.
|
99
100
|
if "admin" in request.base_url:
|
100
|
-
g.locale =
|
101
|
+
g.locale = hconfig(ConfigEnum.admin_lang) or 'en'
|
101
102
|
else:
|
102
|
-
g.locale = auth.current_account.lang or hconfig(ConfigEnum.lang) or '
|
103
|
+
g.locale = auth.current_account.lang or hconfig(ConfigEnum.lang) or 'en'
|
103
104
|
return g.locale
|
104
105
|
app.jinja_env.globals['get_locale'] = get_locale
|
105
106
|
babel = Babel(app, locale_selector=get_locale)
|
hiddifypanel/models/config.py
CHANGED
@@ -9,11 +9,7 @@ from hiddifypanel.models.child import Child, ChildMode
|
|
9
9
|
from sqlalchemy import Column, String, Boolean, Enum, ForeignKey, Integer
|
10
10
|
from strenum import StrEnum
|
11
11
|
from sqlalchemy_serializer import SerializerMixin
|
12
|
-
|
13
|
-
|
14
|
-
def error(st):
|
15
|
-
from hiddifypanel.hutils.utils import error as err
|
16
|
-
err(st)
|
12
|
+
from loguru import logger
|
17
13
|
|
18
14
|
|
19
15
|
class BoolConfig(db.Model, SerializerMixin):
|
@@ -74,15 +70,15 @@ def hconfig(key: ConfigEnum, child_id: Optional[int] = None): # -> str | int |
|
|
74
70
|
if bool_conf:
|
75
71
|
value = bool_conf.value
|
76
72
|
else:
|
77
|
-
|
73
|
+
logger.warning(f'bool {key} not found ')
|
78
74
|
else:
|
79
75
|
str_conf = StrConfig.query.filter(StrConfig.key == key, StrConfig.child_id == child_id).first()
|
80
76
|
if str_conf:
|
81
77
|
value = str_conf.value
|
82
78
|
else:
|
83
|
-
|
79
|
+
logger.warning(f'str {key} not found ')
|
84
80
|
except BaseException:
|
85
|
-
|
81
|
+
logger.exception(f'{key} error!')
|
86
82
|
raise
|
87
83
|
if value != None:
|
88
84
|
if key.type == int:
|
@@ -97,7 +93,6 @@ def set_hconfig(key: ConfigEnum, value: str | int | bool, child_id: int | None =
|
|
97
93
|
if child_id is None:
|
98
94
|
child_id = Child.current().id
|
99
95
|
|
100
|
-
print(f"chainging .... {key}---{value}---{child_id}---{commit}")
|
101
96
|
if key.type == int and value != None:
|
102
97
|
int(value) # for testing int
|
103
98
|
|
@@ -127,7 +122,7 @@ def set_hconfig(key: ConfigEnum, value: str | int | bool, child_id: int | None =
|
|
127
122
|
else:
|
128
123
|
old_v = dbconf.value
|
129
124
|
dbconf.value = value
|
130
|
-
|
125
|
+
logger.trace(f"changing {key} from {old_v} to {value}")
|
131
126
|
Events.config_changed.notify(conf=dbconf, old_value=old_v)
|
132
127
|
|
133
128
|
if child_id == 0 and key.hide_in_virtual_child:
|
@@ -171,11 +166,9 @@ def add_or_update_config(commit: bool = True, child_id: int | None = None, overr
|
|
171
166
|
def bulk_register_configs(hconfigs, commit: bool = True, froce_child_unique_id: str | None = None, override_unique_id: bool = True):
|
172
167
|
from hiddifypanel.panel import hiddify
|
173
168
|
for conf in hconfigs:
|
174
|
-
# print(conf)
|
175
169
|
if conf['key'] == ConfigEnum.unique_id and not override_unique_id:
|
176
170
|
continue
|
177
171
|
child_id = hiddify.get_child(unique_id=froce_child_unique_id)
|
178
|
-
# print(conf, child_id, conf.get('child_unique_id', None), override_child_unique_id)
|
179
172
|
add_or_update_config(commit=False, child_id=child_id, **conf)
|
180
173
|
if commit:
|
181
174
|
db.session.commit()
|
@@ -7,12 +7,15 @@ from markupsafe import Markup
|
|
7
7
|
from hiddifypanel.auth import login_required
|
8
8
|
from flask_admin.actions import action
|
9
9
|
from flask_admin.contrib.sqla import form, filters as sqla_filters, tools
|
10
|
+
from flask_admin import expose
|
11
|
+
|
12
|
+
|
10
13
|
# Define a custom field type for the related domains
|
11
14
|
from hiddifypanel import hutils
|
12
15
|
|
13
16
|
|
14
17
|
class ProxyDetailsAdmin(AdminLTEModelView):
|
15
|
-
|
18
|
+
list_template = 'model/proxydetail_list.html'
|
16
19
|
column_hide_backrefs = True
|
17
20
|
can_create = False
|
18
21
|
form_excluded_columns = ['child', 'proto', 'transport', 'cdn']
|
@@ -20,6 +23,15 @@ class ProxyDetailsAdmin(AdminLTEModelView):
|
|
20
23
|
column_searchable_list = ['name', 'proto', 'transport', 'l3', 'cdn']
|
21
24
|
column_editable_list = ['name']
|
22
25
|
|
26
|
+
@expose('reset_proxies')
|
27
|
+
def reset_proxies(self):
|
28
|
+
from hiddifypanel.panel.init_db import get_proxy_rows_v1
|
29
|
+
from hiddifypanel.database import db
|
30
|
+
db.session.bulk_save_objects(get_proxy_rows_v1())
|
31
|
+
db.session.commit()
|
32
|
+
hutils.flask.flash((_('config.validation-success-no-reset')), 'success') # type: ignore
|
33
|
+
return redirect("./")
|
34
|
+
|
23
35
|
@action('disable', 'Disable', 'Are you sure you want to disable selected proxies?')
|
24
36
|
def action_disable(self, ids):
|
25
37
|
query = tools.get_query_for_ids(self.get_query(), self.model, ids)
|
hiddifypanel/panel/init_db.py
CHANGED
@@ -13,7 +13,7 @@ from hiddifypanel.panel import hiddify
|
|
13
13
|
from hiddifypanel.database import db, db_execute
|
14
14
|
from flask import g
|
15
15
|
from sqlalchemy import text
|
16
|
-
|
16
|
+
from loguru import logger
|
17
17
|
MAX_DB_VERSION = 90
|
18
18
|
|
19
19
|
|
@@ -564,7 +564,6 @@ def add_config_if_not_exist(key: ConfigEnum, val: str | int, child_id: int | Non
|
|
564
564
|
child_id = Child.current().id
|
565
565
|
|
566
566
|
old_val = hconfig(key, child_id)
|
567
|
-
hutils.utils.error(f'{key}, {val}, {child_id}, {old_val}')
|
568
567
|
if old_val is None:
|
569
568
|
set_hconfig(key, val)
|
570
569
|
|
@@ -583,7 +582,7 @@ def execute(query: str):
|
|
583
582
|
|
584
583
|
db_execute(query)
|
585
584
|
except BaseException as e:
|
586
|
-
|
585
|
+
logger.debug(e)
|
587
586
|
pass
|
588
587
|
|
589
588
|
|
@@ -599,7 +598,7 @@ def add_new_enum_values():
|
|
599
598
|
|
600
599
|
# Get the existing values in the enum
|
601
600
|
existing_values = [f'{e}' if isinstance(e, ConfigEnum) else e.value for e in enum_class]
|
602
|
-
|
601
|
+
|
603
602
|
# Get the values in the enum column in the database
|
604
603
|
# result = db.engine.execute(f"SELECT DISTINCT `{column_name}` FROM {table_name}")
|
605
604
|
# db_values = {row[0] for row in result}
|
@@ -616,7 +615,7 @@ def add_new_enum_values():
|
|
616
615
|
# Find the new values that need to be added to the enum column in the database
|
617
616
|
new_values = set(existing_values) - set(db_values)
|
618
617
|
old_values = set(db_values) - set(existing_values)
|
619
|
-
|
618
|
+
|
620
619
|
if len(new_values) == 0 and len(old_values) == 0:
|
621
620
|
continue
|
622
621
|
|
@@ -642,14 +641,14 @@ def upgrade_database():
|
|
642
641
|
if not os.path.isdir(backup_root) or len(os.listdir(backup_root)) == 0:
|
643
642
|
if os.path.isfile(sqlite_db):
|
644
643
|
os.rename(sqlite_db, sqlite_db + ".old")
|
645
|
-
|
644
|
+
logger.info("no backup found...")
|
646
645
|
return
|
647
646
|
if os.path.isfile(sqlite_db):
|
648
|
-
|
647
|
+
logger.info("Finding Old Version Database... importing configs from latest backup")
|
649
648
|
newest_file = max([(f, os.path.getmtime(os.path.join(backup_root, f)))
|
650
649
|
for f in os.listdir(backup_root) if os.path.isfile(os.path.join(backup_root, f))], key=lambda x: x[1])[0]
|
651
650
|
with open(f'{backup_root}{newest_file}', 'r') as f:
|
652
|
-
|
651
|
+
logger.info(f"importing configs from {newest_file}")
|
653
652
|
json_data = json.load(f)
|
654
653
|
hiddify.set_db_from_json(json_data,
|
655
654
|
set_users=True,
|
@@ -667,7 +666,7 @@ def upgrade_database():
|
|
667
666
|
os.rename(sqlite_db, sqlite_db + ".old")
|
668
667
|
set_hconfig(ConfigEnum.db_version, db_version, commit=True)
|
669
668
|
|
670
|
-
|
669
|
+
logger.info("Upgrading to the new dataset succuess.")
|
671
670
|
|
672
671
|
|
673
672
|
def init_db():
|
@@ -700,7 +699,7 @@ def init_db():
|
|
700
699
|
if not db_action or (start_version == 0 and ver == 10):
|
701
700
|
continue
|
702
701
|
|
703
|
-
|
702
|
+
logger.info(f"Updating db from version {db_version} for node {child.id}")
|
704
703
|
|
705
704
|
if ver < 70:
|
706
705
|
if child.id != 0:
|
@@ -710,7 +709,7 @@ def init_db():
|
|
710
709
|
db_action(child.id)
|
711
710
|
|
712
711
|
Events.db_init_event.notify(db_version=db_version)
|
713
|
-
|
712
|
+
logger.info(f"Updated successfuly db from version {db_version} to {ver}")
|
714
713
|
|
715
714
|
db_version = ver
|
716
715
|
db.session.commit()
|
Binary file
|
@@ -674,6 +674,9 @@ msgstr "Rename File"
|
|
674
674
|
msgid "Reset Filters"
|
675
675
|
msgstr "Reset Filters"
|
676
676
|
|
677
|
+
msgid "Reset Proxies"
|
678
|
+
msgstr "Reset Proxies"
|
679
|
+
|
677
680
|
msgid "Reset Usage Time:"
|
678
681
|
msgstr "Traffic usage reset time:"
|
679
682
|
|
@@ -1344,7 +1347,7 @@ msgstr ""
|
|
1344
1347
|
"<a href='https://github.com/hiddify/hiddify-config/wiki/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AF%D8%A7%D9%85%DB%8C%D9%86-%D9%81%D8%B1%D8%A7%D9%86%D8%AA%DB%8C%D9%86%DA%AF'>Guide</a>. ⚠️CloudFlare does not support Domain Fronting."
|
1345
1348
|
|
1346
1349
|
msgid "config.domain_fronting.label"
|
1347
|
-
msgstr "🔒
|
1350
|
+
msgstr "🔒 TLS Domain Fronting"
|
1348
1351
|
|
1349
1352
|
msgid "config.domain_fronting_domain.description"
|
1350
1353
|
msgstr ""
|
@@ -1358,7 +1361,7 @@ msgid "config.domain_fronting_http_enable.description"
|
|
1358
1361
|
msgstr "Enabling HTTP Domain Fronting causes your domain to be block quickly."
|
1359
1362
|
|
1360
1363
|
msgid "config.domain_fronting_http_enable.label"
|
1361
|
-
msgstr "
|
1364
|
+
msgstr "HTTP Domain Fronting"
|
1362
1365
|
|
1363
1366
|
msgid "config.domain_fronting_tls_enable.description"
|
1364
1367
|
msgstr ""
|
@@ -1366,7 +1369,7 @@ msgstr ""
|
|
1366
1369
|
" connect to CDN"
|
1367
1370
|
|
1368
1371
|
msgid "config.domain_fronting_tls_enable.label"
|
1369
|
-
msgstr "🔒
|
1372
|
+
msgstr "🔒 TLS Domain Fronting"
|
1370
1373
|
|
1371
1374
|
msgid "config.firewall.description"
|
1372
1375
|
msgstr ""
|
@@ -1394,13 +1397,13 @@ msgstr ""
|
|
1394
1397
|
"framework. It can be used in supported CDNs"
|
1395
1398
|
|
1396
1399
|
msgid "config.grpc_enable.label"
|
1397
|
-
msgstr "➿
|
1400
|
+
msgstr "➿ gRPC"
|
1398
1401
|
|
1399
1402
|
msgid "config.h2_enable.description"
|
1400
1403
|
msgstr "Enable HTTP/2 Protocol"
|
1401
1404
|
|
1402
1405
|
msgid "config.h2_enable.label"
|
1403
|
-
msgstr "🔵
|
1406
|
+
msgstr "🔵 h2"
|
1404
1407
|
|
1405
1408
|
msgid "config.hidden.description"
|
1406
1409
|
msgstr "config.hidden.description"
|
@@ -1442,7 +1445,7 @@ msgstr ""
|
|
1442
1445
|
"⚠️ <strong>Not Available in Xray based Clients. Only HiddifyNext, Singbox, and V2fly clients are supported.</strong> <a href=\"https://hiddify.com/manager/basic-concepts-and-troubleshooting/Basic-Concepts/#http-upgrade\" target=\"_blank\"><strong>(Read More)</strong></a></p>"
|
1443
1446
|
|
1444
1447
|
msgid "config.httpupgrade_enable.label"
|
1445
|
-
msgstr "🆙
|
1448
|
+
msgstr "🆙 HTTPUpgrade Method"
|
1446
1449
|
|
1447
1450
|
msgid "config.hysteria.description"
|
1448
1451
|
msgstr ""
|
@@ -1463,7 +1466,7 @@ msgid "config.hysteria_enable.description"
|
|
1463
1466
|
msgstr "To Enable UDP based Hysteria Protocol"
|
1464
1467
|
|
1465
1468
|
msgid "config.hysteria_enable.label"
|
1466
|
-
msgstr "⚫️
|
1469
|
+
msgstr "⚫️ Hysteria2"
|
1467
1470
|
|
1468
1471
|
msgid "config.hysteria_obfs_enable.description"
|
1469
1472
|
msgstr " Enables Hysteria Obfuscation (Salamander)"
|
@@ -1503,7 +1506,7 @@ msgid "config.kcp_enable.description"
|
|
1503
1506
|
msgstr "It is a UDP Based Protocol "
|
1504
1507
|
|
1505
1508
|
msgid "config.kcp_enable.label"
|
1506
|
-
msgstr "
|
1509
|
+
msgstr "KCP"
|
1507
1510
|
|
1508
1511
|
msgid "config.kcp_ports.description"
|
1509
1512
|
msgstr ""
|
@@ -1574,7 +1577,7 @@ msgstr ""
|
|
1574
1577
|
"target=\"_blank\">(Read More)</a></p>"
|
1575
1578
|
|
1576
1579
|
msgid "config.mux_enable.label"
|
1577
|
-
msgstr "Ⓜ️ MUX
|
1580
|
+
msgstr "Ⓜ️ MUX (⚠️ Incompatible With Some Clients)"
|
1578
1581
|
|
1579
1582
|
msgid "config.mux_max_connections.description"
|
1580
1583
|
msgstr "Maximum Connections. Conflict with Max Streams"
|
@@ -1749,7 +1752,7 @@ msgid "config.quic_enable.description"
|
|
1749
1752
|
msgstr "Enable QUIC Protocol"
|
1750
1753
|
|
1751
1754
|
msgid "config.quic_enable.label"
|
1752
|
-
msgstr "🟡
|
1755
|
+
msgstr "🟡 QUIC"
|
1753
1756
|
|
1754
1757
|
msgid "config.reality.description"
|
1755
1758
|
msgstr "REALITY eliminate the Server-Side TLS Fingerprint Feature"
|
@@ -1761,7 +1764,7 @@ msgid "config.reality_enable.description"
|
|
1761
1764
|
msgstr "Enable Reality Protocol"
|
1762
1765
|
|
1763
1766
|
msgid "config.reality_enable.label"
|
1764
|
-
msgstr "🔴
|
1767
|
+
msgstr "🔴 Reality"
|
1765
1768
|
|
1766
1769
|
msgid "config.reality_fallback_domain.description"
|
1767
1770
|
msgstr ""
|
@@ -1835,7 +1838,7 @@ msgstr ""
|
|
1835
1838
|
"Inspection)"
|
1836
1839
|
|
1837
1840
|
msgid "config.shadowsocks2022_enable.label"
|
1838
|
-
msgstr "⭕️
|
1841
|
+
msgstr "⭕️ Shadowsocks 2022"
|
1839
1842
|
|
1840
1843
|
msgid "config.shadowsocks2022_method.description"
|
1841
1844
|
msgstr "This method also used in ShadowTLS and SSFakeTLS"
|
@@ -1934,7 +1937,7 @@ msgid "config.ssh_server_enable.description"
|
|
1934
1937
|
msgstr "SSH Proxy is completely different than original SSH Server"
|
1935
1938
|
|
1936
1939
|
msgid "config.ssh_server_enable.label"
|
1937
|
-
msgstr "✔️
|
1940
|
+
msgstr "✔️ SSH Proxy"
|
1938
1941
|
|
1939
1942
|
msgid "config.ssh_server_port.description"
|
1940
1943
|
msgstr ""
|
@@ -1965,7 +1968,7 @@ msgstr ""
|
|
1965
1968
|
"accounting."
|
1966
1969
|
|
1967
1970
|
msgid "config.ssr_enable.label"
|
1968
|
-
msgstr "
|
1971
|
+
msgstr "SSR"
|
1969
1972
|
|
1970
1973
|
msgid "config.ssr_fakedomain.description"
|
1971
1974
|
msgstr ""
|
@@ -2006,10 +2009,14 @@ msgid "config.sub_full_singbox_enable.label"
|
|
2006
2009
|
msgstr "config.sub_full_singbox_enable.label"
|
2007
2010
|
|
2008
2011
|
msgid "config.sub_full_xray_json_enable.description"
|
2009
|
-
msgstr "
|
2012
|
+
msgstr ""
|
2013
|
+
"XRay full link provides comprehensive configuration options for XRay-"
|
2014
|
+
"specific settings. This includes custom fragmentation and multiplexing (mux)"
|
2015
|
+
" in applications such as v2rayNG that support XRay protocols for fine-tuned "
|
2016
|
+
"control over XRay proxy setup."
|
2010
2017
|
|
2011
2018
|
msgid "config.sub_full_xray_json_enable.label"
|
2012
|
-
msgstr "
|
2019
|
+
msgstr "XRay Full Config Link"
|
2013
2020
|
|
2014
2021
|
msgid "config.sub_singbox_ssh_enable.description"
|
2015
2022
|
msgstr "config.sub_singbox_ssh_enable.description"
|
@@ -2021,13 +2028,13 @@ msgid "config.tcp_enable.description"
|
|
2021
2028
|
msgstr "Enable TCP Protocol"
|
2022
2029
|
|
2023
2030
|
msgid "config.tcp_enable.label"
|
2024
|
-
msgstr "🟠
|
2031
|
+
msgstr "🟠 TCP"
|
2025
2032
|
|
2026
2033
|
msgid "config.telegram.description"
|
2027
2034
|
msgstr "A proxy designed for Telegram to bypass Telegram filtering"
|
2028
2035
|
|
2029
2036
|
msgid "config.telegram.label"
|
2030
|
-
msgstr "Telegram
|
2037
|
+
msgstr "Telegram Configs"
|
2031
2038
|
|
2032
2039
|
msgid "config.telegram_adtag.description"
|
2033
2040
|
msgstr ""
|
@@ -2054,7 +2061,7 @@ msgstr ""
|
|
2054
2061
|
"Domain</strong></span></p>"
|
2055
2062
|
|
2056
2063
|
msgid "config.telegram_enable.label"
|
2057
|
-
msgstr "✔️
|
2064
|
+
msgstr "✔️ Telegram MTProto"
|
2058
2065
|
|
2059
2066
|
msgid "config.telegram_fakedomain.description"
|
2060
2067
|
msgstr ""
|
@@ -2086,7 +2093,7 @@ msgstr ""
|
|
2086
2093
|
"the-TLS-Trick-works-and-its-usage/\" target=\"_blank\">(Read More)</a></p>"
|
2087
2094
|
|
2088
2095
|
msgid "config.tls_fragment_enable.label"
|
2089
|
-
msgstr "⏯
|
2096
|
+
msgstr "⏯ TLS Fragment"
|
2090
2097
|
|
2091
2098
|
msgid "config.tls_fragment_size.description"
|
2092
2099
|
msgstr "The Size of each Packet"
|
@@ -2104,7 +2111,7 @@ msgid "config.tls_mixed_case.description"
|
|
2104
2111
|
msgstr "Enables TLS Mixed SNI Case Fragmentation"
|
2105
2112
|
|
2106
2113
|
msgid "config.tls_mixed_case.label"
|
2107
|
-
msgstr "🔠
|
2114
|
+
msgstr "🔠 TLS Mixed SNI Case"
|
2108
2115
|
|
2109
2116
|
msgid "config.tls_padding_enable.description"
|
2110
2117
|
msgstr ""
|
@@ -2114,7 +2121,7 @@ msgstr ""
|
|
2114
2121
|
"More)</a></p>"
|
2115
2122
|
|
2116
2123
|
msgid "config.tls_padding_enable.label"
|
2117
|
-
msgstr "♒️
|
2124
|
+
msgstr "♒️ TLS Padding"
|
2118
2125
|
|
2119
2126
|
msgid "config.tls_padding_length.description"
|
2120
2127
|
msgstr "The length of the Padding for TLS Fragmentation"
|
@@ -2154,7 +2161,7 @@ msgid "config.trojan_enable.description"
|
|
2154
2161
|
msgstr "Enable Trojan Protocol"
|
2155
2162
|
|
2156
2163
|
msgid "config.trojan_enable.label"
|
2157
|
-
msgstr "🟤
|
2164
|
+
msgstr "🟤 Trojan"
|
2158
2165
|
|
2159
2166
|
msgid "config.tuic.description"
|
2160
2167
|
msgstr ""
|
@@ -2169,7 +2176,7 @@ msgid "config.tuic_enable.description"
|
|
2169
2176
|
msgstr "It is a UDP based protocol similar to QUIC"
|
2170
2177
|
|
2171
2178
|
msgid "config.tuic_enable.label"
|
2172
|
-
msgstr "⚫️
|
2179
|
+
msgstr "⚫️ TUIC"
|
2173
2180
|
|
2174
2181
|
msgid "config.tuic_port.description"
|
2175
2182
|
msgstr "Use comma to separate ports like ( 63000,60000 )"
|
@@ -2195,7 +2202,7 @@ msgid "config.v2ray_enable.description"
|
|
2195
2202
|
msgstr "V2ray does not support accounting and not suggested"
|
2196
2203
|
|
2197
2204
|
msgid "config.v2ray_enable.label"
|
2198
|
-
msgstr "♈️
|
2205
|
+
msgstr "♈️ V2Ray "
|
2199
2206
|
|
2200
2207
|
msgid "config.validation-error"
|
2201
2208
|
msgstr "There is an error in one of the fields."
|
@@ -2212,13 +2219,13 @@ msgid "config.vless_enable.description"
|
|
2212
2219
|
msgstr "Enable VLess Protocol"
|
2213
2220
|
|
2214
2221
|
msgid "config.vless_enable.label"
|
2215
|
-
msgstr "⚫️
|
2222
|
+
msgstr "⚫️ VLess"
|
2216
2223
|
|
2217
2224
|
msgid "config.vmess_enable.description"
|
2218
2225
|
msgstr "Active VMess Protocol"
|
2219
2226
|
|
2220
2227
|
msgid "config.vmess_enable.label"
|
2221
|
-
msgstr "🟣
|
2228
|
+
msgstr "🟣 VMess"
|
2222
2229
|
|
2223
2230
|
msgid "config.warp-https-domain-for-warp-site"
|
2224
2231
|
msgstr "config.warp-https-domain-for-warp-site"
|
@@ -2238,7 +2245,7 @@ msgstr ""
|
|
2238
2245
|
"server IP "
|
2239
2246
|
|
2240
2247
|
msgid "config.warp_enable.label"
|
2241
|
-
msgstr "
|
2248
|
+
msgstr "WARP+"
|
2242
2249
|
|
2243
2250
|
msgid "config.warp_mode.description"
|
2244
2251
|
msgstr ""
|
@@ -2283,7 +2290,7 @@ msgstr ""
|
|
2283
2290
|
"Next</a>)</p>"
|
2284
2291
|
|
2285
2292
|
msgid "config.wireguard_enable.label"
|
2286
|
-
msgstr "🐉
|
2293
|
+
msgstr "🐉 WireGuard"
|
2287
2294
|
|
2288
2295
|
msgid "config.wireguard_ipv4.description"
|
2289
2296
|
msgstr "-"
|
@@ -2327,13 +2334,13 @@ msgid "config.ws_enable.description"
|
|
2327
2334
|
msgstr "Websocket creates a tunnel over HTTP that is useful to be used in CDN"
|
2328
2335
|
|
2329
2336
|
msgid "config.ws_enable.label"
|
2330
|
-
msgstr "🔰
|
2337
|
+
msgstr "🔰 Websocket"
|
2331
2338
|
|
2332
2339
|
msgid "config.xtls_enable.description"
|
2333
2340
|
msgstr "Enable XTLS Protocol"
|
2334
2341
|
|
2335
2342
|
msgid "config.xtls_enable.label"
|
2336
|
-
msgstr "🟢
|
2343
|
+
msgstr "🟢 XTLS"
|
2337
2344
|
|
2338
2345
|
msgid "config.invalid uuid"
|
2339
2346
|
msgstr ""
|
@@ -2374,7 +2381,7 @@ msgstr ""
|
|
2374
2381
|
"<a href='https://github.com/hiddify/hiddify-config/wiki/Guide-for-domain-fronting'>Guide</a>. ⚠️CloudFlare does not support Domain Fronting."
|
2375
2382
|
|
2376
2383
|
msgid "domain.domain_fronting.label"
|
2377
|
-
msgstr "🔒
|
2384
|
+
msgstr "🔒 TLS Domain Fronting"
|
2378
2385
|
|
2379
2386
|
msgid "domain.ip"
|
2380
2387
|
msgstr "IP"
|
@@ -2407,13 +2414,13 @@ msgid "items"
|
|
2407
2414
|
msgstr "items"
|
2408
2415
|
|
2409
2416
|
msgid "lang.en"
|
2410
|
-
msgstr "🇺🇸 English -
|
2417
|
+
msgstr "🇺🇸 English - انگلیسی"
|
2411
2418
|
|
2412
2419
|
msgid "lang.fa"
|
2413
2420
|
msgstr "🇮🇷 Persian - فارسی"
|
2414
2421
|
|
2415
2422
|
msgid "lang.pt"
|
2416
|
-
msgstr "🇵🇹 Portuguese
|
2423
|
+
msgstr "🇵🇹 Portuguese"
|
2417
2424
|
|
2418
2425
|
msgid "lang.ru"
|
2419
2426
|
msgstr "🇷🇺 Russian - Русский"
|
Binary file
|