hiddifypanel 10.30.6.dev0__py3-none-any.whl → 10.30.8.dev0__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 +16 -0
- hiddifypanel/base.py +8 -1
- hiddifypanel/drivers/singbox_api.py +2 -0
- hiddifypanel/drivers/ssh_liberty_bridge_api.py +10 -0
- hiddifypanel/drivers/user_driver.py +5 -2
- hiddifypanel/drivers/wireguard_api.py +34 -44
- hiddifypanel/drivers/xray_api.py +18 -4
- hiddifypanel/hutils/auth.py +1 -1
- hiddifypanel/hutils/proxy/xray.py +1 -1
- hiddifypanel/hutils/proxy/xrayjson.py +20 -22
- hiddifypanel/models/admin.py +14 -8
- hiddifypanel/models/base_account.py +14 -6
- hiddifypanel/models/user.py +38 -25
- hiddifypanel/panel/admin/DomainAdmin.py +1 -1
- hiddifypanel/panel/admin/UserAdmin.py +20 -11
- hiddifypanel/panel/cli.py +1 -27
- hiddifypanel/panel/commercial/restapi/v2/admin/__init__.py +3 -1
- hiddifypanel/panel/commercial/restapi/v2/admin/admin_info_api.py +1 -0
- hiddifypanel/panel/commercial/restapi/v2/admin/admin_log_api.py +1 -0
- hiddifypanel/panel/commercial/restapi/v2/admin/admin_user_api.py +9 -20
- hiddifypanel/panel/commercial/restapi/v2/admin/admin_users_api.py +14 -0
- hiddifypanel/panel/commercial/restapi/v2/admin/schema.py +19 -14
- hiddifypanel/panel/commercial/restapi/v2/admin/server_status_api.py +1 -0
- hiddifypanel/panel/commercial/restapi/v2/admin/system_actions.py +27 -0
- hiddifypanel/panel/commercial/restapi/v2/admin/user_api.py +12 -22
- hiddifypanel/panel/commercial/restapi/v2/admin/users_api.py +19 -1
- hiddifypanel/panel/commercial/restapi/v2/child/__init__.py +1 -1
- hiddifypanel/panel/commercial/restapi/v2/panel/ping_pong.py +12 -0
- hiddifypanel/panel/commercial/restapi/v2/panel/schema.py +5 -0
- hiddifypanel/panel/commercial/restapi/v2/parent/__init__.py +1 -1
- hiddifypanel/panel/commercial/restapi/v2/user/__init__.py +1 -1
- hiddifypanel/panel/hiddify.py +31 -0
- hiddifypanel/panel/init_db.py +1 -1
- hiddifypanel/panel/usage.py +27 -16
- hiddifypanel/templates/fake.html +316 -0
- hiddifypanel/translations.i18n/en.json +74 -33
- hiddifypanel/translations.i18n/fa.json +80 -118
- hiddifypanel/translations.i18n/pt.json +68 -315
- hiddifypanel/translations.i18n/ru.json +73 -168
- hiddifypanel/translations.i18n/zh.json +68 -296
- {hiddifypanel-10.30.6.dev0.dist-info → hiddifypanel-10.30.8.dev0.dist-info}/METADATA +1 -1
- {hiddifypanel-10.30.6.dev0.dist-info → hiddifypanel-10.30.8.dev0.dist-info}/RECORD +48 -47
- {hiddifypanel-10.30.6.dev0.dist-info → hiddifypanel-10.30.8.dev0.dist-info}/WHEEL +1 -1
- {hiddifypanel-10.30.6.dev0.dist-info → hiddifypanel-10.30.8.dev0.dist-info}/LICENSE.md +0 -0
- {hiddifypanel-10.30.6.dev0.dist-info → hiddifypanel-10.30.8.dev0.dist-info}/entry_points.txt +0 -0
- {hiddifypanel-10.30.6.dev0.dist-info → hiddifypanel-10.30.8.dev0.dist-info}/top_level.txt +0 -0
hiddifypanel/panel/usage.py
CHANGED
@@ -50,6 +50,7 @@ def _add_users_usage(users_usage_data: Dict[User, Dict], child_id, sync=False):
|
|
50
50
|
res = {}
|
51
51
|
have_change = False
|
52
52
|
before_enabled_users = user_driver.get_enabled_users()
|
53
|
+
|
53
54
|
daily_usage = {}
|
54
55
|
today = datetime.date.today()
|
55
56
|
for adm in AdminUser.query.all():
|
@@ -64,15 +65,14 @@ def _add_users_usage(users_usage_data: Dict[User, Dict], child_id, sync=False):
|
|
64
65
|
userDetails = {p.user_id: p for p in UserDetail.query.filter(UserDetail.child_id == child_id).all()}
|
65
66
|
for user, uinfo in users_usage_data.items():
|
66
67
|
usage_bytes = uinfo['usage']
|
67
|
-
devices = uinfo['devices']
|
68
68
|
|
69
69
|
# UserDetails things
|
70
70
|
detail = userDetails.get(user.id)
|
71
71
|
if not detail:
|
72
72
|
detail = UserDetail(user_id=user.id, child_id=child_id)
|
73
73
|
db.session.add(detail)
|
74
|
-
detail.connected_devices
|
75
|
-
|
74
|
+
if uinfo['devices'] != detail.connected_devices:
|
75
|
+
detail.connected_devices = uinfo['devices']
|
76
76
|
|
77
77
|
# Enable the user if isn't already
|
78
78
|
if not before_enabled_users[user.uuid] and user.is_active:
|
@@ -86,22 +86,21 @@ def _add_users_usage(users_usage_data: Dict[User, Dict], child_id, sync=False):
|
|
86
86
|
res[user.uuid] = "No usage"
|
87
87
|
else:
|
88
88
|
# Set new daily usage of the user
|
89
|
-
if sync:
|
90
|
-
|
91
|
-
daily_usage.get(user.added_by, daily_usage[1]).usage = usage_bytes
|
89
|
+
if sync and daily_usage.get(user.added_by, daily_usage[1]).usage != usage_bytes:
|
90
|
+
daily_usage.get(user.added_by, daily_usage[1]).usage = usage_bytes
|
92
91
|
else:
|
93
92
|
daily_usage.get(user.added_by, daily_usage[1]).usage += usage_bytes
|
94
93
|
|
95
|
-
|
94
|
+
in_bytes = usage_bytes
|
96
95
|
|
97
96
|
# Set new current usage of the user
|
98
|
-
if sync:
|
99
|
-
|
100
|
-
user.current_usage_GB = in_gig
|
97
|
+
if sync and user.current_usage != in_bytes:
|
98
|
+
user.current_usage = in_bytes
|
101
99
|
# detail.current_usage_GB = in_gig
|
102
100
|
else:
|
103
|
-
user.
|
104
|
-
detail.
|
101
|
+
user.current_usage += in_bytes
|
102
|
+
detail.current_usage = detail.current_usage or 0
|
103
|
+
detail.current_usage += in_bytes
|
105
104
|
|
106
105
|
# Change last online time of the user
|
107
106
|
user.last_online = datetime.datetime.now()
|
@@ -111,9 +110,10 @@ def _add_users_usage(users_usage_data: Dict[User, Dict], child_id, sync=False):
|
|
111
110
|
if user.start_date is None:
|
112
111
|
user.start_date = datetime.date.today()
|
113
112
|
|
114
|
-
res[user.uuid] =
|
113
|
+
res[user.uuid] = f'{in_bytes/1000000:0.3f}MB'
|
115
114
|
|
116
115
|
# Remove user from drivers(singbox, xray, wireguard etc.) if they're inactive
|
116
|
+
# print(before_enabled_users[user.uuid], user.is_active)
|
117
117
|
if before_enabled_users[user.uuid] and not user.is_active:
|
118
118
|
print(f"Removing enabled client {user.uuid} ")
|
119
119
|
user_driver.remove_client(user)
|
@@ -122,14 +122,25 @@ def _add_users_usage(users_usage_data: Dict[User, Dict], child_id, sync=False):
|
|
122
122
|
|
123
123
|
db.session.commit() # type: ignore
|
124
124
|
|
125
|
+
# Remove invalid users
|
126
|
+
for uuid in before_enabled_users:
|
127
|
+
if uuid in res:
|
128
|
+
continue
|
129
|
+
|
130
|
+
user = User.query.filter(User.uuid == uuid).first()
|
131
|
+
if not user:
|
132
|
+
user_driver.remove_client(User(uuid=uuid))
|
133
|
+
elif not user.is_active:
|
134
|
+
user_driver.remove_client(user)
|
135
|
+
|
136
|
+
# print("------------------", res)
|
125
137
|
# Apply the changes to the drivers
|
126
138
|
if have_change:
|
127
139
|
hiddify.quick_apply_users()
|
128
140
|
|
129
141
|
# Sync the new data with the parent node if the data has not been set by the parent node itself and the current panel is a child panel
|
130
|
-
if not sync:
|
131
|
-
|
132
|
-
hutils.node.child.sync_users_usage_with_parent()
|
142
|
+
if not sync and hutils.node.is_child():
|
143
|
+
hutils.node.child.sync_users_usage_with_parent()
|
133
144
|
|
134
145
|
return {"status": 'success', "comments": res}
|
135
146
|
|
hiddifypanel/templates/fake.html
CHANGED
@@ -0,0 +1,316 @@
|
|
1
|
+
{{_("config.dbvalues.label")}}
|
2
|
+
{{_("config.dbvalues.description")}}
|
3
|
+
{{_("config.create_easysetup_link.label")}}
|
4
|
+
{{_("config.create_easysetup_link.description")}}
|
5
|
+
{{_("config.wireguard_enable.label")}}
|
6
|
+
{{_("config.wireguard_enable.description")}}
|
7
|
+
{{_("config.wireguard_port.label")}}
|
8
|
+
{{_("config.wireguard_port.description")}}
|
9
|
+
{{_("config.wireguard_ipv6.label")}}
|
10
|
+
{{_("config.wireguard_ipv6.description")}}
|
11
|
+
{{_("config.wireguard_ipv4.label")}}
|
12
|
+
{{_("config.wireguard_ipv4.description")}}
|
13
|
+
{{_("config.wireguard_private_key.label")}}
|
14
|
+
{{_("config.wireguard_private_key.description")}}
|
15
|
+
{{_("config.wireguard_public_key.label")}}
|
16
|
+
{{_("config.wireguard_public_key.description")}}
|
17
|
+
{{_("config.wireguard_noise_trick.label")}}
|
18
|
+
{{_("config.wireguard_noise_trick.description")}}
|
19
|
+
{{_("config.ssh_server_redis_url.label")}}
|
20
|
+
{{_("config.ssh_server_redis_url.description")}}
|
21
|
+
{{_("config.ssh_server_port.label")}}
|
22
|
+
{{_("config.ssh_server_port.description")}}
|
23
|
+
{{_("config.ssh_server_enable.label")}}
|
24
|
+
{{_("config.ssh_server_enable.description")}}
|
25
|
+
{{_("config.first_setup.label")}}
|
26
|
+
{{_("config.first_setup.description")}}
|
27
|
+
{{_("config.core_type.label")}}
|
28
|
+
{{_("config.core_type.description")}}
|
29
|
+
{{_("config.warp_enable.label")}}
|
30
|
+
{{_("config.warp_enable.description")}}
|
31
|
+
{{_("config.warp_mode.label")}}
|
32
|
+
{{_("config.warp_mode.description")}}
|
33
|
+
{{_("config.warp_plus_code.label")}}
|
34
|
+
{{_("config.warp_plus_code.description")}}
|
35
|
+
{{_("config.warp_sites.label")}}
|
36
|
+
{{_("config.warp_sites.description")}}
|
37
|
+
{{_("config.dns_server.label")}}
|
38
|
+
{{_("config.dns_server.description")}}
|
39
|
+
{{_("config.reality_fallback_domain.label")}}
|
40
|
+
{{_("config.reality_fallback_domain.description")}}
|
41
|
+
{{_("config.reality_server_names.label")}}
|
42
|
+
{{_("config.reality_server_names.description")}}
|
43
|
+
{{_("config.reality_short_ids.label")}}
|
44
|
+
{{_("config.reality_short_ids.description")}}
|
45
|
+
{{_("config.reality_private_key.label")}}
|
46
|
+
{{_("config.reality_private_key.description")}}
|
47
|
+
{{_("config.reality_public_key.label")}}
|
48
|
+
{{_("config.reality_public_key.description")}}
|
49
|
+
{{_("config.reality_port.label")}}
|
50
|
+
{{_("config.reality_port.description")}}
|
51
|
+
{{_("config.restls1_2_domain.label")}}
|
52
|
+
{{_("config.restls1_2_domain.description")}}
|
53
|
+
{{_("config.restls1_3_domain.label")}}
|
54
|
+
{{_("config.restls1_3_domain.description")}}
|
55
|
+
{{_("config.show_usage_in_sublink.label")}}
|
56
|
+
{{_("config.show_usage_in_sublink.description")}}
|
57
|
+
{{_("config.cloudflare.label")}}
|
58
|
+
{{_("config.cloudflare.description")}}
|
59
|
+
{{_("config.license.label")}}
|
60
|
+
{{_("config.license.description")}}
|
61
|
+
{{_("config.country.label")}}
|
62
|
+
{{_("config.country.description")}}
|
63
|
+
{{_("config.package_mode.label")}}
|
64
|
+
{{_("config.package_mode.description")}}
|
65
|
+
{{_("config.utls.label")}}
|
66
|
+
{{_("config.utls.description")}}
|
67
|
+
{{_("config.telegram_bot_token.label")}}
|
68
|
+
{{_("config.telegram_bot_token.description")}}
|
69
|
+
{{_("config.is_parent.label")}}
|
70
|
+
{{_("config.is_parent.description")}}
|
71
|
+
{{_("config.parent_panel.label")}}
|
72
|
+
{{_("config.parent_panel.description")}}
|
73
|
+
{{_("config.parent_domain.label")}}
|
74
|
+
{{_("config.parent_domain.description")}}
|
75
|
+
{{_("config.parent_admin_proxy_path.label")}}
|
76
|
+
{{_("config.parent_admin_proxy_path.description")}}
|
77
|
+
{{_("config.panel_mode.label")}}
|
78
|
+
{{_("config.panel_mode.description")}}
|
79
|
+
{{_("config.log_level.label")}}
|
80
|
+
{{_("config.log_level.description")}}
|
81
|
+
{{_("config.unique_id.label")}}
|
82
|
+
{{_("config.unique_id.description")}}
|
83
|
+
{{_("config.last_hash.label")}}
|
84
|
+
{{_("config.last_hash.description")}}
|
85
|
+
{{_("config.cdn_forced_host.label")}}
|
86
|
+
{{_("config.cdn_forced_host.description")}}
|
87
|
+
{{_("config.lang.label")}}
|
88
|
+
{{_("config.lang.description")}}
|
89
|
+
{{_("config.admin_lang.label")}}
|
90
|
+
{{_("config.admin_lang.description")}}
|
91
|
+
{{_("config.admin_secret.label")}}
|
92
|
+
{{_("config.admin_secret.description")}}
|
93
|
+
{{_("config.tls_ports.label")}}
|
94
|
+
{{_("config.tls_ports.description")}}
|
95
|
+
{{_("config.tls_fragment_enable.label")}}
|
96
|
+
{{_("config.tls_fragment_enable.description")}}
|
97
|
+
{{_("config.tls_fragment_size.label")}}
|
98
|
+
{{_("config.tls_fragment_size.description")}}
|
99
|
+
{{_("config.tls_fragment_sleep.label")}}
|
100
|
+
{{_("config.tls_fragment_sleep.description")}}
|
101
|
+
{{_("config.tls_mixed_case.label")}}
|
102
|
+
{{_("config.tls_mixed_case.description")}}
|
103
|
+
{{_("config.tls_padding_enable.label")}}
|
104
|
+
{{_("config.tls_padding_enable.description")}}
|
105
|
+
{{_("config.tls_padding_length.label")}}
|
106
|
+
{{_("config.tls_padding_length.description")}}
|
107
|
+
{{_("config.mux_enable.label")}}
|
108
|
+
{{_("config.mux_enable.description")}}
|
109
|
+
{{_("config.mux_protocol.label")}}
|
110
|
+
{{_("config.mux_protocol.description")}}
|
111
|
+
{{_("config.mux_max_connections.label")}}
|
112
|
+
{{_("config.mux_max_connections.description")}}
|
113
|
+
{{_("config.mux_min_streams.label")}}
|
114
|
+
{{_("config.mux_min_streams.description")}}
|
115
|
+
{{_("config.mux_max_streams.label")}}
|
116
|
+
{{_("config.mux_max_streams.description")}}
|
117
|
+
{{_("config.mux_padding_enable.label")}}
|
118
|
+
{{_("config.mux_padding_enable.description")}}
|
119
|
+
{{_("config.mux_brutal_enable.label")}}
|
120
|
+
{{_("config.mux_brutal_enable.description")}}
|
121
|
+
{{_("config.mux_brutal_up_mbps.label")}}
|
122
|
+
{{_("config.mux_brutal_up_mbps.description")}}
|
123
|
+
{{_("config.mux_brutal_down_mbps.label")}}
|
124
|
+
{{_("config.mux_brutal_down_mbps.description")}}
|
125
|
+
{{_("config.http_ports.label")}}
|
126
|
+
{{_("config.http_ports.description")}}
|
127
|
+
{{_("config.kcp_ports.label")}}
|
128
|
+
{{_("config.kcp_ports.description")}}
|
129
|
+
{{_("config.kcp_enable.label")}}
|
130
|
+
{{_("config.kcp_enable.description")}}
|
131
|
+
{{_("config.decoy_domain.label")}}
|
132
|
+
{{_("config.decoy_domain.description")}}
|
133
|
+
{{_("config.proxy_path.label")}}
|
134
|
+
{{_("config.proxy_path.description")}}
|
135
|
+
{{_("config.proxy_path_admin.label")}}
|
136
|
+
{{_("config.proxy_path_admin.description")}}
|
137
|
+
{{_("config.proxy_path_client.label")}}
|
138
|
+
{{_("config.proxy_path_client.description")}}
|
139
|
+
{{_("config.firewall.label")}}
|
140
|
+
{{_("config.firewall.description")}}
|
141
|
+
{{_("config.netdata.label")}}
|
142
|
+
{{_("config.netdata.description")}}
|
143
|
+
{{_("config.http_proxy_enable.label")}}
|
144
|
+
{{_("config.http_proxy_enable.description")}}
|
145
|
+
{{_("config.block_iran_sites.label")}}
|
146
|
+
{{_("config.block_iran_sites.description")}}
|
147
|
+
{{_("config.allow_invalid_sni.label")}}
|
148
|
+
{{_("config.allow_invalid_sni.description")}}
|
149
|
+
{{_("config.auto_update.label")}}
|
150
|
+
{{_("config.auto_update.description")}}
|
151
|
+
{{_("config.speed_test.label")}}
|
152
|
+
{{_("config.speed_test.description")}}
|
153
|
+
{{_("config.only_ipv4.label")}}
|
154
|
+
{{_("config.only_ipv4.description")}}
|
155
|
+
{{_("config.shared_secret.label")}}
|
156
|
+
{{_("config.shared_secret.description")}}
|
157
|
+
{{_("config.telegram_enable.label")}}
|
158
|
+
{{_("config.telegram_enable.description")}}
|
159
|
+
{{_("config.telegram_adtag.label")}}
|
160
|
+
{{_("config.telegram_adtag.description")}}
|
161
|
+
{{_("config.telegram_lib.label")}}
|
162
|
+
{{_("config.telegram_lib.description")}}
|
163
|
+
{{_("config.telegram_fakedomain.label")}}
|
164
|
+
{{_("config.telegram_fakedomain.description")}}
|
165
|
+
{{_("config.v2ray_enable.label")}}
|
166
|
+
{{_("config.v2ray_enable.description")}}
|
167
|
+
{{_("config.torrent_block.label")}}
|
168
|
+
{{_("config.torrent_block.description")}}
|
169
|
+
{{_("config.tuic_enable.label")}}
|
170
|
+
{{_("config.tuic_enable.description")}}
|
171
|
+
{{_("config.tuic_port.label")}}
|
172
|
+
{{_("config.tuic_port.description")}}
|
173
|
+
{{_("config.hysteria_enable.label")}}
|
174
|
+
{{_("config.hysteria_enable.description")}}
|
175
|
+
{{_("config.hysteria_port.label")}}
|
176
|
+
{{_("config.hysteria_port.description")}}
|
177
|
+
{{_("config.hysteria_obfs_enable.label")}}
|
178
|
+
{{_("config.hysteria_obfs_enable.description")}}
|
179
|
+
{{_("config.hysteria_up_mbps.label")}}
|
180
|
+
{{_("config.hysteria_up_mbps.description")}}
|
181
|
+
{{_("config.hysteria_down_mbps.label")}}
|
182
|
+
{{_("config.hysteria_down_mbps.description")}}
|
183
|
+
{{_("config.shadowsocks2022_enable.label")}}
|
184
|
+
{{_("config.shadowsocks2022_enable.description")}}
|
185
|
+
{{_("config.shadowsocks2022_method.label")}}
|
186
|
+
{{_("config.shadowsocks2022_method.description")}}
|
187
|
+
{{_("config.shadowsocks2022_port.label")}}
|
188
|
+
{{_("config.shadowsocks2022_port.description")}}
|
189
|
+
{{_("config.ssfaketls_enable.label")}}
|
190
|
+
{{_("config.ssfaketls_enable.description")}}
|
191
|
+
{{_("config.ssfaketls_fakedomain.label")}}
|
192
|
+
{{_("config.ssfaketls_fakedomain.description")}}
|
193
|
+
{{_("config.shadowtls_enable.label")}}
|
194
|
+
{{_("config.shadowtls_enable.description")}}
|
195
|
+
{{_("config.shadowtls_fakedomain.label")}}
|
196
|
+
{{_("config.shadowtls_fakedomain.description")}}
|
197
|
+
{{_("config.ssr_enable.label")}}
|
198
|
+
{{_("config.ssr_enable.description")}}
|
199
|
+
{{_("config.ssr_fakedomain.label")}}
|
200
|
+
{{_("config.ssr_fakedomain.description")}}
|
201
|
+
{{_("config.vmess_enable.label")}}
|
202
|
+
{{_("config.vmess_enable.description")}}
|
203
|
+
{{_("config.domain_fronting_domain.label")}}
|
204
|
+
{{_("config.domain_fronting_domain.description")}}
|
205
|
+
{{_("config.domain_fronting_http_enable.label")}}
|
206
|
+
{{_("config.domain_fronting_http_enable.description")}}
|
207
|
+
{{_("config.domain_fronting_tls_enable.label")}}
|
208
|
+
{{_("config.domain_fronting_tls_enable.description")}}
|
209
|
+
{{_("config.ws_enable.label")}}
|
210
|
+
{{_("config.ws_enable.description")}}
|
211
|
+
{{_("config.grpc_enable.label")}}
|
212
|
+
{{_("config.grpc_enable.description")}}
|
213
|
+
{{_("config.httpupgrade_enable.label")}}
|
214
|
+
{{_("config.httpupgrade_enable.description")}}
|
215
|
+
{{_("config.vless_enable.label")}}
|
216
|
+
{{_("config.vless_enable.description")}}
|
217
|
+
{{_("config.trojan_enable.label")}}
|
218
|
+
{{_("config.trojan_enable.description")}}
|
219
|
+
{{_("config.reality_enable.label")}}
|
220
|
+
{{_("config.reality_enable.description")}}
|
221
|
+
{{_("config.tcp_enable.label")}}
|
222
|
+
{{_("config.tcp_enable.description")}}
|
223
|
+
{{_("config.quic_enable.label")}}
|
224
|
+
{{_("config.quic_enable.description")}}
|
225
|
+
{{_("config.xtls_enable.label")}}
|
226
|
+
{{_("config.xtls_enable.description")}}
|
227
|
+
{{_("config.h2_enable.label")}}
|
228
|
+
{{_("config.h2_enable.description")}}
|
229
|
+
{{_("config.db_version.label")}}
|
230
|
+
{{_("config.db_version.description")}}
|
231
|
+
{{_("config.last_priodic_usage_check.label")}}
|
232
|
+
{{_("config.last_priodic_usage_check.description")}}
|
233
|
+
{{_("config.branding_title.label")}}
|
234
|
+
{{_("config.branding_title.description")}}
|
235
|
+
{{_("config.branding_site.label")}}
|
236
|
+
{{_("config.branding_site.description")}}
|
237
|
+
{{_("config.branding_freetext.label")}}
|
238
|
+
{{_("config.branding_freetext.description")}}
|
239
|
+
{{_("config.not_found.label")}}
|
240
|
+
{{_("config.not_found.description")}}
|
241
|
+
{{_("config.path_vmess.label")}}
|
242
|
+
{{_("config.path_vmess.description")}}
|
243
|
+
{{_("config.path_vless.label")}}
|
244
|
+
{{_("config.path_vless.description")}}
|
245
|
+
{{_("config.path_trojan.label")}}
|
246
|
+
{{_("config.path_trojan.description")}}
|
247
|
+
{{_("config.path_v2ray.label")}}
|
248
|
+
{{_("config.path_v2ray.description")}}
|
249
|
+
{{_("config.path_ss.label")}}
|
250
|
+
{{_("config.path_ss.description")}}
|
251
|
+
{{_("config.path_httpupgrade.label")}}
|
252
|
+
{{_("config.path_httpupgrade.description")}}
|
253
|
+
{{_("config.path_ws.label")}}
|
254
|
+
{{_("config.path_ws.description")}}
|
255
|
+
{{_("config.path_tcp.label")}}
|
256
|
+
{{_("config.path_tcp.description")}}
|
257
|
+
{{_("config.path_grpc.label")}}
|
258
|
+
{{_("config.path_grpc.description")}}
|
259
|
+
{{_("config.sub_full_singbox_enable.label")}}
|
260
|
+
{{_("config.sub_full_singbox_enable.description")}}
|
261
|
+
{{_("config.sub_singbox_ssh_enable.label")}}
|
262
|
+
{{_("config.sub_singbox_ssh_enable.description")}}
|
263
|
+
{{_("config.sub_full_xray_json_enable.label")}}
|
264
|
+
{{_("config.sub_full_xray_json_enable.description")}}
|
265
|
+
{{_("config.sub_full_links_enable.label")}}
|
266
|
+
{{_("config.sub_full_links_enable.description")}}
|
267
|
+
{{_("config.sub_full_links_b64_enable.label")}}
|
268
|
+
{{_("config.sub_full_links_b64_enable.description")}}
|
269
|
+
{{_("config.sub_full_clash_enable.label")}}
|
270
|
+
{{_("config.sub_full_clash_enable.description")}}
|
271
|
+
{{_("config.sub_full_clash_meta_enable.label")}}
|
272
|
+
{{_("config.sub_full_clash_meta_enable.description")}}
|
273
|
+
{{_("config.hiddifycli_enable.label")}}
|
274
|
+
{{_("config.hiddifycli_enable.description")}}
|
275
|
+
|
276
|
+
{{_("config.admin.label")}}{{_("config.admin.description")}}
|
277
|
+
{{_("config.branding.label")}}{{_("config.branding.description")}}
|
278
|
+
{{_("config.general.label")}}{{_("config.general.description")}}
|
279
|
+
{{_("config.proxies.label")}}{{_("config.proxies.description")}}
|
280
|
+
{{_("config.domain_fronting.label")}}{{_("config.domain_fronting.description")}}
|
281
|
+
{{_("config.telegram.label")}}{{_("config.telegram.description")}}
|
282
|
+
{{_("config.http.label")}}{{_("config.http.description")}}
|
283
|
+
{{_("config.tls.label")}}{{_("config.tls.description")}}
|
284
|
+
{{_("config.mux.label")}}{{_("config.mux.description")}}
|
285
|
+
{{_("config.tls_trick.label")}}{{_("config.tls_trick.description")}}
|
286
|
+
{{_("config.ssh.label")}}{{_("config.ssh.description")}}
|
287
|
+
{{_("config.ssfaketls.label")}}{{_("config.ssfaketls.description")}}
|
288
|
+
{{_("config.shadowtls.label")}}{{_("config.shadowtls.description")}}
|
289
|
+
{{_("config.restls.label")}}{{_("config.restls.description")}}
|
290
|
+
{{_("config.tuic.label")}}{{_("config.tuic.description")}}
|
291
|
+
{{_("config.hysteria.label")}}{{_("config.hysteria.description")}}
|
292
|
+
{{_("config.ssr.label")}}{{_("config.ssr.description")}}
|
293
|
+
{{_("config.kcp.label")}}{{_("config.kcp.description")}}
|
294
|
+
{{_("config.hidden.label")}}{{_("config.hidden.description")}}
|
295
|
+
{{_("config.advanced.label")}}{{_("config.advanced.description")}}
|
296
|
+
{{_("config.too_advanced.label")}}{{_("config.too_advanced.description")}}
|
297
|
+
{{_("config.warp.label")}}{{_("config.warp.description")}}
|
298
|
+
{{_("config.reality.label")}}{{_("config.reality.description")}}
|
299
|
+
{{_("config.wireguard.label")}}{{_("config.wireguard.description")}}
|
300
|
+
{{_("config.shadowsocks.label")}}{{_("config.shadowsocks.description")}}
|
301
|
+
|
302
|
+
{{_("direct")}}
|
303
|
+
{{_("sub_link_only")}}
|
304
|
+
{{_("cdn")}}
|
305
|
+
{{_("auto_cdn_ip")}}
|
306
|
+
{{_("relay")}}
|
307
|
+
{{_("reality")}}
|
308
|
+
{{_("old_xtls_direct")}}
|
309
|
+
{{_("worker")}}
|
310
|
+
{{_("fake")}}
|
311
|
+
|
312
|
+
{{_("no_reset")}}
|
313
|
+
{{_("monthly")}}
|
314
|
+
{{_("weekly")}}
|
315
|
+
{{_("daily")}}
|
316
|
+
|