mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-07-27 10:31:38 +08:00
🎉 Sync 2026-04-03 20:25:30
This commit is contained in:
parent
6b6cae9986
commit
4dbadea522
@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: luci-app-ddns 2.4.2-1\n"
|
||||
"POT-Creation-Date: 2016-09-25 10:43+0200\n"
|
||||
"PO-Revision-Date: 2026-02-18 07:12+0000\n"
|
||||
"Last-Translator: Werner Schleifer <werner.schleifer@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-23 18:10+0000\n"
|
||||
"Last-Translator: HerbJul <19JulianHerbst95@web.de>\n"
|
||||
"Language-Team: German <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsddns/de/>\n"
|
||||
"Language: de\n"
|
||||
@ -11,7 +11,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.16.1-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
|
||||
@ -204,7 +204,7 @@ msgstr "Dynamic-DNS-Version"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:545
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
msgstr "Bearbeitung"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:783
|
||||
msgid "Enable secure communication with DDNS provider"
|
||||
|
||||
@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: luci-app-ddns 2.4.0-1\n"
|
||||
"POT-Creation-Date: 2016-01-30 11:07+0100\n"
|
||||
"PO-Revision-Date: 2026-03-13 14:10+0000\n"
|
||||
"PO-Revision-Date: 2026-03-29 07:12+0000\n"
|
||||
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsddns/es/>\n"
|
||||
@ -284,7 +284,7 @@ msgstr "Ajustes globales"
|
||||
|
||||
#: applications/luci-app-ddns/root/usr/share/rpcd/acl.d/luci-app-ddns.json:3
|
||||
msgid "Grant access to ddns procedures"
|
||||
msgstr "Conceder acceso a los procedimientos de DDNS"
|
||||
msgstr "Conceder acceso a los procedimientos de ddns"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:320
|
||||
msgid "HTTPS not supported"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-09 19:11+0000\n"
|
||||
"Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-24 19:09+0000\n"
|
||||
"Last-Translator: Highlandword9 <highlandword9@gmail.com>\n"
|
||||
"Language-Team: Irish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsddns/ga/>\n"
|
||||
"Language: ga\n"
|
||||
@ -700,7 +700,7 @@ msgstr "Tosaigh DDNS"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:272
|
||||
msgid "State"
|
||||
msgstr "Stát"
|
||||
msgstr "Staid"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1117
|
||||
msgid "Status"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-03 18:00+0000\n"
|
||||
"PO-Revision-Date: 2026-03-28 14:53+0000\n"
|
||||
"Last-Translator: Hyeonjeong Lee <h9101654@gmail.com>\n"
|
||||
"Language-Team: Korean <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsddns/ko/>\n"
|
||||
@ -37,7 +37,7 @@ msgstr "기본 설정"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:903
|
||||
msgid "Bind Network"
|
||||
msgstr ""
|
||||
msgstr "바인드 네트워크"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:332
|
||||
msgid "Binding to a specific network not supported"
|
||||
@ -48,6 +48,8 @@ msgid ""
|
||||
"BusyBox's nslookup and hostip do not support TCP instead of the default UDP "
|
||||
"when sending requests to the DNS server!"
|
||||
msgstr ""
|
||||
"BusyBox의 nslookup과 hostip은 DNS 서버에 요청을 보낼 때 기본 UDP 대신 TCP를 "
|
||||
"지원하지 않습니다!"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:372
|
||||
msgid ""
|
||||
@ -77,7 +79,7 @@ msgstr "확인 간격"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:996
|
||||
msgid "Check Unit"
|
||||
msgstr ""
|
||||
msgstr "확인 간격 단위"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:27
|
||||
msgid "Configuration"
|
||||
@ -90,11 +92,11 @@ msgstr "설정 오류"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:417
|
||||
msgid "Contains Log files for each running section."
|
||||
msgstr ""
|
||||
msgstr "실행 중인 각 섹션에 대한 로그 파일이 포함되어 있습니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:411
|
||||
msgid "Contains PID and other status information for each running section."
|
||||
msgstr ""
|
||||
msgstr "각 실행 중인 섹션에 대한 PID 및 기타 상태 정보가 포함되어 있습니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:536
|
||||
msgid "Create service"
|
||||
@ -108,18 +110,20 @@ msgstr "현재 설정:"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:276
|
||||
msgid "Currently DDNS updates are not started at boot or on interface events."
|
||||
msgstr ""
|
||||
"현재 DDNS 업데이트가 부팅 또는 인터페이스 이벤트에서 시작되지 않습니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:727
|
||||
msgid "Custom update script for updating your DDNS Provider."
|
||||
msgstr ""
|
||||
"DDNS 서비스를 갱신하기 위한 사용자 정의 업데이트 스크립트를 설정합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:708
|
||||
msgid "Custom update-URL"
|
||||
msgstr ""
|
||||
msgstr "사용자 정의 업데이트 URL"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:726
|
||||
msgid "Custom update-script"
|
||||
msgstr ""
|
||||
msgstr "사용자 정의 업데이트 스크립트"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:284
|
||||
msgid "DDNS"
|
||||
@ -192,7 +196,7 @@ msgstr "편집"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:783
|
||||
msgid "Enable secure communication with DDNS provider"
|
||||
msgstr ""
|
||||
msgstr "DDNS 서비스와의 보안 통신(HTTPS)을 활성화합니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:612
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1140
|
||||
@ -205,7 +209,7 @@ msgstr "오류(Error)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1040
|
||||
msgid "Error Max Retry Counter"
|
||||
msgstr ""
|
||||
msgstr "오류 시 최대 재시도 횟수"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1050
|
||||
msgid "Error Retry Interval"
|
||||
@ -214,7 +218,7 @@ msgstr "오류 재시도 간격"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:877
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:887
|
||||
msgid "Event Network"
|
||||
msgstr ""
|
||||
msgstr "이벤트 네트워크"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:855
|
||||
msgid "Example for IPv4"
|
||||
@ -243,7 +247,7 @@ msgstr "IP 버전 강제"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1005
|
||||
#, fuzzy
|
||||
msgid "Force Interval"
|
||||
msgstr "강제 갱신 주기"
|
||||
msgstr "강제 업데이트 간격"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:936
|
||||
msgid "Force TCP on DNS"
|
||||
@ -252,7 +256,7 @@ msgstr "DNS에 TCP 강제"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1031
|
||||
#, fuzzy
|
||||
msgid "Force Unit"
|
||||
msgstr "강제 갱신 단위"
|
||||
msgstr "강제 업데이트 단위"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:948
|
||||
msgid "Format"
|
||||
@ -267,10 +271,12 @@ msgid ""
|
||||
"GNU Wget will use the IP of given network, cURL will use the physical "
|
||||
"interface."
|
||||
msgstr ""
|
||||
"GNU Wget은 주어진 네트워크의 IP를 사용하고, cURL은 물리적 인터페이스를 사용합"
|
||||
"니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:265
|
||||
msgid "Global Settings"
|
||||
msgstr "공통 설정"
|
||||
msgstr "전역 설정"
|
||||
|
||||
#: applications/luci-app-ddns/root/usr/share/rpcd/acl.d/luci-app-ddns.json:3
|
||||
msgid "Grant access to ddns procedures"
|
||||
@ -278,7 +284,7 @@ msgstr "DDNS 프로시저에 접근 권한 부여"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:320
|
||||
msgid "HTTPS not supported"
|
||||
msgstr ""
|
||||
msgstr "HTTPS 미지원"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:622
|
||||
msgid "Hostname/FQDN to validate, whether an IP update is necessary"
|
||||
@ -300,15 +306,15 @@ msgstr "IPv4 주소"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:950
|
||||
msgid "IPv6 address must be given in square brackets"
|
||||
msgstr ""
|
||||
msgstr "IPv6 주소는 대괄호로 지정해야 합니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:311
|
||||
msgid "IPv6 is not supported by this system"
|
||||
msgstr ""
|
||||
msgstr "IPv6은 이 시스템에서 지원되지 않습니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:310
|
||||
msgid "IPv6 not supported"
|
||||
msgstr ""
|
||||
msgstr "IPv6 미지원"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:508
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:636
|
||||
@ -319,7 +325,7 @@ msgstr "IPv6 주소"
|
||||
msgid ""
|
||||
"If Wget and cURL package are installed, Wget is used for communication by "
|
||||
"default."
|
||||
msgstr ""
|
||||
msgstr "Wget과 cURL 패키지가 설치된 경우 기본적으로 통신에 Wget이 사용됩니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:613
|
||||
msgid "If this service section is disabled it will not be started."
|
||||
@ -369,23 +375,23 @@ msgstr "인터페이스"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1006
|
||||
msgid "Interval to force an update at the DDNS Provider"
|
||||
msgstr ""
|
||||
msgstr "DDNS 서비스에 갱신을 강제할 간격을 설정합니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1032
|
||||
msgid "Interval unit for forced updates sent to DDNS Provider."
|
||||
msgstr ""
|
||||
msgstr "DDNS 서비스에 갱신을 강제할 간격의 단위를 선택합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:997
|
||||
msgid "Interval unit to check for changed IP"
|
||||
msgstr ""
|
||||
msgstr "IP 변경 확인 간격에 사용할 시간 단위를 설정합니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1145
|
||||
msgid "Last Update"
|
||||
msgstr ""
|
||||
msgstr "최근 업데이트"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:609
|
||||
msgid "Log File Viewer"
|
||||
msgstr ""
|
||||
msgstr "로그 보기"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:416
|
||||
msgid "Log directory"
|
||||
@ -397,17 +403,17 @@ msgstr "로그 길이"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:969
|
||||
msgid "Log to file"
|
||||
msgstr ""
|
||||
msgstr "로그 파일에 기록"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:957
|
||||
msgid "Log to syslog"
|
||||
msgstr "시스로그에 기록"
|
||||
msgstr "Syslog에 기록"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:621
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1130
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:29
|
||||
msgid "Lookup Hostname"
|
||||
msgstr ""
|
||||
msgstr "조회 호스트 이름"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:807
|
||||
msgid "Method used to determine the system IP-Address to send in updates"
|
||||
@ -423,16 +429,20 @@ msgid ""
|
||||
"Neither GNU Wget with SSL nor cURL is installed to select a network to use "
|
||||
"for communication."
|
||||
msgstr ""
|
||||
"통신에 사용할 네트워크를 선택하기 위한, SSL이 포함된 GNU Wget이나 cURL이 설치"
|
||||
"되어 있지 않습니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:321
|
||||
msgid ""
|
||||
"Neither GNU Wget with SSL nor cURL is installed to support secure updates "
|
||||
"via HTTPS protocol."
|
||||
msgstr ""
|
||||
"HTTPS 프로토콜을 통한 보안 업데이트를 지원하기 위한, SSL 포함 GNU Wget이나 "
|
||||
"cURL이 설치되어 있지 않습니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:615
|
||||
msgid "Neither from LuCI interface nor from console."
|
||||
msgstr ""
|
||||
msgstr "LuCI 인터페이스도 콘솔에서도 마찬가지로 안 됩니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:810
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:844
|
||||
@ -449,7 +459,7 @@ msgstr ""
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:228
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1149
|
||||
msgid "Never"
|
||||
msgstr "안함"
|
||||
msgstr "기록 없음"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:494
|
||||
msgid "New DDns Service…"
|
||||
@ -458,11 +468,11 @@ msgstr "새 DDNS 서비스 입력…"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1145
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:28
|
||||
msgid "Next Update"
|
||||
msgstr ""
|
||||
msgstr "다음 업데이트"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1145
|
||||
msgid "Next Verify"
|
||||
msgstr ""
|
||||
msgstr "다음 확인 예정"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:227
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1135
|
||||
@ -497,44 +507,48 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:916
|
||||
msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
|
||||
msgstr ""
|
||||
msgstr "선택 사항. 통신 시 IPv4 또는 IPv6만 사용하도록 강제합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:937
|
||||
msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
|
||||
msgstr ""
|
||||
msgstr "선택 사항. DNS 질의 시 기본 UDP 대신 TCP를 사용하도록 강제합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:904
|
||||
msgid "OPTIONAL: Network to use for communication"
|
||||
msgstr ""
|
||||
msgstr "선택 사항. 통신에 사용할 네트워크를 지정합니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:946
|
||||
msgid "OPTIONAL: Proxy-Server for detection and updates."
|
||||
msgstr ""
|
||||
msgstr "선택 사항. 감지 및 갱신에 사용할 프록시 서버를 설정합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:925
|
||||
msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
|
||||
msgstr ""
|
||||
"선택 사항. '등록된 IP'를 감지하기 위해 기본값 이외의 DNS 서버를 사용합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1041
|
||||
msgid ""
|
||||
"On Error the script will stop execution after the given number of retries."
|
||||
msgstr ""
|
||||
"오류 발생 시, 설정한 재시도 횟수를 초과하면 스크립트 실행이 중지됩니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:769
|
||||
msgid "Optional Encoded Parameter"
|
||||
msgstr ""
|
||||
msgstr "추가 매개변수 (인코딩)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:775
|
||||
msgid "Optional Parameter"
|
||||
msgstr ""
|
||||
msgstr "추가 매개변수"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:770
|
||||
msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
|
||||
msgstr ""
|
||||
"선택 사항. 업데이트 URL의 [PARAMENC] 문구를 치환합니다. (URL 인코딩 적용)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:776
|
||||
msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
|
||||
msgstr ""
|
||||
"선택 사항. 업데이트 URL의 [PARAMOPT] 문구를 치환합니다. (URL 인코딩 미적용)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:945
|
||||
msgid "PROXY-Server"
|
||||
@ -551,11 +565,11 @@ msgstr "CA 인증서 경로"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:312
|
||||
msgid ""
|
||||
"Please follow the instructions on OpenWrt's homepage to enable IPv6 support"
|
||||
msgstr ""
|
||||
msgstr "IPv6 지원을 활성화하려면 OpenWrt 홈페이지 상의 지침을 따르세요"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1086
|
||||
msgid "Please press [Read] button"
|
||||
msgstr ""
|
||||
msgstr "[읽기] 버튼을 누르세요"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:719
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:741
|
||||
@ -564,36 +578,36 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1069
|
||||
msgid "Read / Reread log file"
|
||||
msgstr ""
|
||||
msgstr "로그 파일 읽기/다시 읽기"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:693
|
||||
msgid "Really switch service?"
|
||||
msgstr ""
|
||||
msgstr "정말로 서비스를 전환합니까?"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1130
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:30
|
||||
msgid "Registered IP"
|
||||
msgstr ""
|
||||
msgstr "등록된 IP"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:567
|
||||
msgid "Reload"
|
||||
msgstr "다시 읽기"
|
||||
msgstr "다시 불러오기"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:550
|
||||
msgid "Reload this service"
|
||||
msgstr "이 서비스의 설정을 다시 읽어옵니다"
|
||||
msgstr "재시작 없이 설정 적용"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:749
|
||||
msgid "Replaces [DOMAIN] in Update-URL (URL-encoded)"
|
||||
msgstr ""
|
||||
msgstr "업데이트 URL의 [DOMAIN] 문구를 치환합니다. (URL 인코딩 적용)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:761
|
||||
msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
|
||||
msgstr ""
|
||||
msgstr "업데이트 URL의 [PASSWORD] 문구를 치환합니다. (URL 인코딩 적용)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:755
|
||||
msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
|
||||
msgstr ""
|
||||
msgstr "업데이트 URL의 [USERNAME] 문구를 치환합니다. (URL 인코딩 적용)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:290
|
||||
msgid "Restart DDns"
|
||||
@ -601,11 +615,11 @@ msgstr "DDNS 재시작"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1058
|
||||
msgid "Retry Unit"
|
||||
msgstr ""
|
||||
msgstr "재시도 간격 단위"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:17
|
||||
msgid "Run once"
|
||||
msgstr ""
|
||||
msgstr "1회 실행"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:231
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1120
|
||||
@ -620,13 +634,13 @@ msgstr "스크립트"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:517
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:657
|
||||
msgid "Select a service"
|
||||
msgstr ""
|
||||
msgstr "서비스 선택"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:518
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:659
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:679
|
||||
msgid "Service doesn't support this IP type"
|
||||
msgstr ""
|
||||
msgstr "서비스에서 이 IP 유형을 지원하지 않습니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:658
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:669
|
||||
@ -643,11 +657,11 @@ msgstr "서비스 다운로드 URL"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:294
|
||||
msgid "Services list last update"
|
||||
msgstr ""
|
||||
msgstr "서비스 목록 최근 업데이트"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1008
|
||||
msgid "Setting this parameter to 0 will force the script to only run once"
|
||||
msgstr ""
|
||||
msgstr "이 값을 0으로 설정하면 스크립트가 한 번만 실행됩니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:451
|
||||
msgid ""
|
||||
@ -682,7 +696,7 @@ msgstr "DDNS 중지"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:555
|
||||
msgid "Stop this service"
|
||||
msgstr "이 서비스를 중지합니다"
|
||||
msgstr "서비스 중지"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:19
|
||||
msgid "Stopped"
|
||||
@ -690,23 +704,23 @@ msgstr "중지됨"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:694
|
||||
msgid "Switch service"
|
||||
msgstr ""
|
||||
msgstr "서비스 전환"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1043
|
||||
msgid "The default setting of '0' will retry infinitely."
|
||||
msgstr ""
|
||||
msgstr "기본 설정인 '0'은 무한히 재시도됩니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1051
|
||||
msgid "The interval between which each subsequent retry commences."
|
||||
msgstr ""
|
||||
msgstr "각 재시도가 시작되는 시간 간격을 설정합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:497
|
||||
msgid "The service name is already used"
|
||||
msgstr ""
|
||||
msgstr "이미 사용 중인 서비스 이름입니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/status/include/70_ddns.js:43
|
||||
msgid "There is no service configured."
|
||||
msgstr ""
|
||||
msgstr "설정된 서비스가 없습니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:335
|
||||
msgid ""
|
||||
@ -731,7 +745,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:608
|
||||
msgid "Timer Settings"
|
||||
msgstr ""
|
||||
msgstr "타이머 설정"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:811
|
||||
msgid "URL"
|
||||
@ -751,15 +765,15 @@ msgstr "알 수 없음"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:301
|
||||
msgid "Update DDns Services List"
|
||||
msgstr ""
|
||||
msgstr "DDNS 서비스 목록 업데이트"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:684
|
||||
msgid "Update URL"
|
||||
msgstr ""
|
||||
msgstr "업데이트 URL"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:709
|
||||
msgid "Update URL for updating your DDNS Provider."
|
||||
msgstr ""
|
||||
msgstr "DDNS 서비스를 갱신하기 위한 업데이트 URL을 설정합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:782
|
||||
msgid "Use HTTP Secure"
|
||||
@ -783,15 +797,15 @@ msgstr "특정 DNS 서버 사용이 지원되지 않습니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:990
|
||||
msgid "Values below 5 minutes == 300 seconds are not supported"
|
||||
msgstr ""
|
||||
msgstr "5분(300초) 미만의 값은 지원되지 않습니다"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1025
|
||||
msgid "Values lower than 'Check Interval' except '0' are invalid"
|
||||
msgstr ""
|
||||
msgstr "'확인 간격'보다 작은 값은 설정할 수 없습니다. ('0' 제외)"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:16
|
||||
msgid "Verify"
|
||||
msgstr ""
|
||||
msgstr "확인 중"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:965
|
||||
msgid "Warning"
|
||||
@ -804,18 +818,20 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1059
|
||||
msgid "Which time units to use for retry counters."
|
||||
msgstr ""
|
||||
msgstr "재시도 간격에 사용할 시간 단위를 선택합니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:974
|
||||
msgid ""
|
||||
"Writes detailed messages to log file. File will be truncated automatically."
|
||||
msgstr ""
|
||||
"로그 파일에 상세 메시지를 기록합니다. 파일은 용량 초과 시 자동으로 비워집니"
|
||||
"다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:958
|
||||
msgid ""
|
||||
"Writes log messages to syslog. Critical Errors will always be written to "
|
||||
"syslog."
|
||||
msgstr ""
|
||||
msgstr "로그 메시지를 syslog에 기록합니다. 치명적인 오류는 항상 기록됩니다."
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:375
|
||||
msgid ""
|
||||
@ -857,7 +873,7 @@ msgstr "일"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:789
|
||||
msgid "directory or path/file"
|
||||
msgstr ""
|
||||
msgstr "디렉토리 또는 경로/파일"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1002
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1036
|
||||
|
||||
@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: luci-app-ddns 2.4.0-1\n"
|
||||
"POT-Creation-Date: 2016-01-30 11:07+0100\n"
|
||||
"PO-Revision-Date: 2025-10-30 03:41+0000\n"
|
||||
"PO-Revision-Date: 2026-03-18 02:23+0000\n"
|
||||
"Last-Translator: CRISTIAN ANDREI <cristianvdr@gmail.com>\n"
|
||||
"Language-Team: Romanian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsddns/ro/>\n"
|
||||
@ -12,7 +12,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||
"20)) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.14.1-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423
|
||||
msgid "\"../\" not allowed in path for Security Reason."
|
||||
@ -77,7 +77,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:532
|
||||
msgid "Cancel"
|
||||
msgstr "Anulați"
|
||||
msgstr "Anulare"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:981
|
||||
msgid "Check Interval"
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-04-18 02:24+0000\n"
|
||||
"Last-Translator: Anders Jackson <anders.jackson@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-22 17:10+0000\n"
|
||||
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
|
||||
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsddns/sv/>\n"
|
||||
"Language: sv\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.11.1-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:423
|
||||
msgid "\"../\" not allowed in path for Security Reason."
|
||||
@ -125,7 +125,7 @@ msgstr "Anpassat uppdateringsskript"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:284
|
||||
msgid "DDNS"
|
||||
msgstr ""
|
||||
msgstr "DDNS"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:207
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:279
|
||||
@ -610,7 +610,7 @@ msgstr "Kör en gång"
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:231
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:1120
|
||||
msgid "Running"
|
||||
msgstr "Igång"
|
||||
msgstr "Körs"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:813
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:870
|
||||
|
||||
@ -5,7 +5,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: luci-app-ddns 2.4.0-1\n"
|
||||
"POT-Creation-Date: 2016-01-30 11:07+0100\n"
|
||||
"PO-Revision-Date: 2026-03-09 19:12+0000\n"
|
||||
"PO-Revision-Date: 2026-03-27 06:10+0000\n"
|
||||
"Last-Translator: EESF-2 <eesf-2@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://hosted.weblate.org/"
|
||||
"projects/openwrt/luciapplicationsddns/zh_Hant/>\n"
|
||||
@ -117,7 +117,7 @@ msgstr "當前 DDNS 更新不會在系統啟動或觸發介面事件時啟動。
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:727
|
||||
msgid "Custom update script for updating your DDNS Provider."
|
||||
msgstr "為你的 DDNS 提供者自訂更新指令碼。"
|
||||
msgstr "為您的 DDNS 提供者自訂更新指令碼。"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:708
|
||||
msgid "Custom update-URL"
|
||||
@ -353,7 +353,7 @@ msgid ""
|
||||
"Install 'bind-host' or 'knot-host' or 'drill' package if you know you need "
|
||||
"TCP for DNS requests."
|
||||
msgstr ""
|
||||
"如果你需要 TCP 的 DNS 查詢,請安裝 'bind-host' 或 'knot-host' 或 'drill' 套"
|
||||
"如果您需要 TCP 的 DNS 查詢,請安裝 'bind-host' 或 'knot-host' 或 'drill' 套"
|
||||
"件。"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:386
|
||||
@ -830,7 +830,7 @@ msgid ""
|
||||
"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
|
||||
"package, if you need to specify a DNS server to detect your registered IP."
|
||||
msgstr ""
|
||||
"如果你需要指定 DNS 伺服器以檢測已註冊 IP,應安裝 'bind-host' 或 'knot-host' "
|
||||
"如果您需要指定 DNS 伺服器以檢測已註冊 IP,應安裝 'bind-host' 或 'knot-host' "
|
||||
"或 'drill' 或 'hostip' 套件。"
|
||||
|
||||
#: applications/luci-app-ddns/htdocs/luci-static/resources/view/ddns/overview.js:323
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-08 17:33+0000\n"
|
||||
"PO-Revision-Date: 2026-03-19 18:44+0000\n"
|
||||
"Last-Translator: Pavel Borecki <pavel.borecki@gmail.com>\n"
|
||||
"Language-Team: Czech <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsdockerman/cs/>\n"
|
||||
@ -2075,7 +2075,7 @@ msgstr "sestavovatel"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:324
|
||||
msgid "commit"
|
||||
msgstr ""
|
||||
msgstr "commit"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1827
|
||||
msgid "completed"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-04 20:22+0000\n"
|
||||
"Last-Translator: ssantos <ssantos@web.de>\n"
|
||||
"PO-Revision-Date: 2026-03-23 18:11+0000\n"
|
||||
"Last-Translator: Werner Schleifer <werner.schleifer@gmail.com>\n"
|
||||
"Language-Team: German <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsdockerman/de/>\n"
|
||||
"Language: de\n"
|
||||
@ -58,19 +58,19 @@ msgstr "Host-Gerät zum Container hinzufügen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:673
|
||||
msgid "Added Capabilities"
|
||||
msgstr ""
|
||||
msgstr "Hinzugefügte Fähigkeiten"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:616
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Erweitert"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:342
|
||||
msgid "All Subtypes"
|
||||
msgstr ""
|
||||
msgstr "Alle Untertypen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:73
|
||||
msgid "All Types"
|
||||
msgstr ""
|
||||
msgstr "Alle Typen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:629
|
||||
msgid "Allocates an ephemeral host port for all of a container's exposed ports"
|
||||
@ -80,7 +80,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:480
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:239
|
||||
msgid "Always"
|
||||
msgstr ""
|
||||
msgstr "Immer"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:222
|
||||
msgid "Always pull image first"
|
||||
@ -101,7 +101,7 @@ msgstr "API-Version"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:70
|
||||
msgid "Attachable"
|
||||
msgstr ""
|
||||
msgstr "Anbringbar"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:139
|
||||
msgid "Available"
|
||||
@ -125,7 +125,7 @@ msgstr "Ein Volume mit Bindung einhängen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:732
|
||||
msgid "BlkIO Stats"
|
||||
msgstr ""
|
||||
msgstr "BlkIO Status"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:667
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:720
|
||||
@ -149,11 +149,11 @@ msgstr "Gerät der Netzwerkbrücke"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:419
|
||||
msgid "Build"
|
||||
msgstr ""
|
||||
msgstr "Bauvorgang"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:206
|
||||
msgid "Build an image."
|
||||
msgstr ""
|
||||
msgstr "Baue ein Image."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:72
|
||||
msgid ""
|
||||
@ -169,23 +169,23 @@ msgstr "CAP-ADD(--cap-add)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:839
|
||||
msgid "COMMAND"
|
||||
msgstr ""
|
||||
msgstr "Befehl"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:672
|
||||
msgid "CPU Period"
|
||||
msgstr ""
|
||||
msgstr "CPU-Zyklus"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:617
|
||||
msgid "CPU Period (microseconds)"
|
||||
msgstr ""
|
||||
msgstr "CPU-Zyklus (Mikrosekunden)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:678
|
||||
msgid "CPU Quota"
|
||||
msgstr ""
|
||||
msgstr "CPU-Anteil"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:620
|
||||
msgid "CPU Quota (microseconds)"
|
||||
msgstr ""
|
||||
msgstr "CPU-Kontingent (Mikrosekunden)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:623
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:684
|
||||
@ -194,7 +194,7 @@ msgstr "Gewichtung der CPU-Anteile"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:733
|
||||
msgid "CPU Stats"
|
||||
msgstr ""
|
||||
msgstr "CPU-Statistiken"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:758
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:787
|
||||
@ -212,7 +212,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:762
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:791
|
||||
msgid "CPU usage data unavailable"
|
||||
msgstr ""
|
||||
msgstr "Keine Daten zur CPU-Auslastung verfügbar"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:607
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:660
|
||||
@ -228,18 +228,20 @@ msgstr "Abbrechen"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:35
|
||||
msgid "Causes errors when a chosen API > Docker endpoint API support."
|
||||
msgstr ""
|
||||
"Es kommt zu Fehlern, wenn die gewählte API die Unterstützung des Docker-"
|
||||
"Endpunkts übersteigt."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:882
|
||||
msgid "Changes"
|
||||
msgstr ""
|
||||
msgstr "Änderungen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:420
|
||||
msgid "Clean"
|
||||
msgstr ""
|
||||
msgstr "Bereinigt"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:257
|
||||
msgid "Cleaned build cache"
|
||||
msgstr ""
|
||||
msgstr "Build-Cache geleert"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1181
|
||||
msgid "Clear"
|
||||
@ -247,15 +249,15 @@ msgstr "Leeren"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617
|
||||
msgid "Click to add a new tag to this image"
|
||||
msgstr ""
|
||||
msgstr "Klicken Sie, um ein neues Tag zu diesem Bild hinzuzufügen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:531
|
||||
msgid "Click to remove this tag"
|
||||
msgstr ""
|
||||
msgstr "Klicken Sie, um diesen Tag zu entfernen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:213
|
||||
msgid "Click to view this network"
|
||||
msgstr ""
|
||||
msgstr "Klicken Sie, um dieses Netzwerk zu sehen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:81
|
||||
msgid "Client connection"
|
||||
@ -268,29 +270,29 @@ msgstr "Befehl"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1152
|
||||
msgid "Command cancelled"
|
||||
msgstr ""
|
||||
msgstr "Befehl abgebrochen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1131
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1142
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:86
|
||||
msgid "Command failed"
|
||||
msgstr ""
|
||||
msgstr "Befehl fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1119
|
||||
msgid "Command successful"
|
||||
msgstr ""
|
||||
msgstr "Befehl erfolgreich"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1012
|
||||
msgid "Command:"
|
||||
msgstr ""
|
||||
msgstr "Befehl:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:80
|
||||
msgid "Config Only"
|
||||
msgstr ""
|
||||
msgstr "Nur Konfiguration"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:76
|
||||
msgid "ConfigFrom"
|
||||
msgstr ""
|
||||
msgstr "ConfigFrom"
|
||||
|
||||
#: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:28
|
||||
msgid "Configuration"
|
||||
@ -313,7 +315,7 @@ msgstr "Netzwerk verbinden"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1936
|
||||
msgid "Connect network"
|
||||
msgstr ""
|
||||
msgstr "Mit dem Netzwerk verbinden"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1512
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1524
|
||||
@ -322,11 +324,11 @@ msgstr "Verbunden"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1055
|
||||
msgid "Connected to container console"
|
||||
msgstr ""
|
||||
msgstr "Mit der Container-Konsole verbunden"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1397
|
||||
msgid "Connecting…"
|
||||
msgstr ""
|
||||
msgstr "Verbinden…"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:998
|
||||
msgid "Console"
|
||||
@ -334,30 +336,30 @@ msgstr "Konsole"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1000
|
||||
msgid "Console Connection"
|
||||
msgstr ""
|
||||
msgstr "Konsolenanschluss"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1514
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1765
|
||||
msgid "Console connected"
|
||||
msgstr ""
|
||||
msgstr "Konsole angeschlossen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1507
|
||||
msgid "Console connection closed"
|
||||
msgstr ""
|
||||
msgstr "Konsolenverbindung geschlossen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1551
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1786
|
||||
msgid "Console disconnected"
|
||||
msgstr ""
|
||||
msgstr "Konsole getrennt"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1571
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1586
|
||||
msgid "Console is not connected"
|
||||
msgstr ""
|
||||
msgstr "Die Konsole ist nicht angeschlossen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:160
|
||||
msgid "Container"
|
||||
msgstr ""
|
||||
msgstr "Behälter"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:968
|
||||
msgid "Container Inspect"
|
||||
@ -373,11 +375,11 @@ msgstr "Containername"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:818
|
||||
msgid "Container Statistics"
|
||||
msgstr ""
|
||||
msgstr "Containerstatistik"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:927
|
||||
msgid "Container created"
|
||||
msgstr ""
|
||||
msgstr "Container erstellt"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:440
|
||||
msgid "Container detail"
|
||||
@ -385,34 +387,38 @@ msgstr "Containerdetail"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:927
|
||||
msgid "Container duplicated"
|
||||
msgstr ""
|
||||
msgstr "Container dupliziert"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:706
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:713
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:832
|
||||
msgid "Container is not running"
|
||||
msgstr ""
|
||||
msgstr "Der Container läuft nicht"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1086
|
||||
msgid "Container is not running. Cannot connect to WebSocket console."
|
||||
msgstr ""
|
||||
"Der Container läuft nicht. Es kann keine Verbindung zur WebSocket-Konsole "
|
||||
"hergestellt werden."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1007
|
||||
msgid "Container is not running. Cannot connect to console."
|
||||
msgstr ""
|
||||
"Der Container läuft nicht. Es kann keine Verbindung zur Konsole hergestellt "
|
||||
"werden."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1377
|
||||
msgid "Container rename"
|
||||
msgstr ""
|
||||
msgstr "Container umbenennen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1385
|
||||
msgid "Container rename failed"
|
||||
msgstr ""
|
||||
msgstr "Das Umbenennen des Containers ist fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1346
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1362
|
||||
msgid "Container update failed"
|
||||
msgstr ""
|
||||
msgstr "Die Aktualisierung des Containers ist fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:577
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:84
|
||||
@ -434,19 +440,19 @@ msgstr "Erstellen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:921
|
||||
msgid "Create container"
|
||||
msgstr ""
|
||||
msgstr "Container erstellen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:942
|
||||
msgid "Create container failed"
|
||||
msgstr ""
|
||||
msgstr "Das Erstellen des Containers ist fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:234
|
||||
msgid "Create network"
|
||||
msgstr ""
|
||||
msgstr "Netzwerk erstellen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:249
|
||||
msgid "Create network failed"
|
||||
msgstr ""
|
||||
msgstr "Das Erstellen des Netzwerks ist fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:63
|
||||
msgid "Create new docker container"
|
||||
@ -470,7 +476,7 @@ msgstr "DNS"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:582
|
||||
msgid "DNS Names"
|
||||
msgstr ""
|
||||
msgstr "DNS Name"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:73
|
||||
msgid "Debug"
|
||||
@ -482,25 +488,27 @@ msgstr "Standardbrücke"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:26
|
||||
msgid "Default ps flags"
|
||||
msgstr ""
|
||||
msgstr "Standard-ps-Optionen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:588
|
||||
msgid "Delete this volume mount"
|
||||
msgstr ""
|
||||
msgstr "Diese Datenträger-Einbindung löschen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:104
|
||||
msgid ""
|
||||
"Destinations prefixed with a Registry host matching an entry in this table "
|
||||
"invoke its corresponding credentials."
|
||||
msgstr ""
|
||||
"Ziele, deren Hostname mit einem Eintrag in dieser Tabelle übereinstimmt, "
|
||||
"rufen die entsprechenden Anmeldedaten auf."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1580
|
||||
msgid "Detach signal sent (Ctrl+D)"
|
||||
msgstr ""
|
||||
msgstr "Signal zum Trennen gesendet (Strg+D)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:96
|
||||
msgid "Detail"
|
||||
msgstr ""
|
||||
msgstr "Details"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:636
|
||||
msgid "Device(--device)"
|
||||
@ -508,7 +516,7 @@ msgstr "Gerät(--device)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:515
|
||||
msgid "Devices"
|
||||
msgstr ""
|
||||
msgstr "Geräte"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:559
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1051
|
||||
@ -518,11 +526,11 @@ msgstr "Verbindung trennen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1854
|
||||
msgid "Disconnect network"
|
||||
msgstr ""
|
||||
msgstr "Verbindung trennen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1844
|
||||
msgid "Disconnect network \"%s\" from container?"
|
||||
msgstr ""
|
||||
msgstr "Das Netzwerk „%s“ vom Container trennen?"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1117
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1500
|
||||
@ -533,7 +541,7 @@ msgstr "Getrennt"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:536
|
||||
msgid "Do you want to remove the tag \"%s\"?"
|
||||
msgstr ""
|
||||
msgstr "Möchtest du das Tag „%s“ entfernen?"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:16
|
||||
msgid "Docker - Configuration"
|
||||
@ -541,7 +549,7 @@ msgstr "Docker - Einrichtung"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:330
|
||||
msgid "Docker - Container"
|
||||
msgstr ""
|
||||
msgstr "Docker - Container"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:189
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:49
|
||||
@ -550,7 +558,7 @@ msgstr "Docker - Container"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:54
|
||||
msgid "Docker - Events"
|
||||
msgstr ""
|
||||
msgstr "Hafenarbeiter - Ereignisse"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:36
|
||||
msgid "Docker - Images"
|
||||
@ -563,7 +571,7 @@ msgstr "Docker - Netzwerke"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:26
|
||||
msgid "Docker - New Network"
|
||||
msgstr ""
|
||||
msgstr "Docker - Neues Netzwerk"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:144
|
||||
msgid "Docker - Overview"
|
||||
@ -592,7 +600,7 @@ msgstr "DockerMan ist ein einfacher Docker-Manager-Client für LuCI"
|
||||
|
||||
#: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:3
|
||||
msgid "Dockerman JS"
|
||||
msgstr ""
|
||||
msgstr "Dockerman JS"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:945
|
||||
msgid "Download"
|
||||
@ -600,7 +608,7 @@ msgstr "Herunterladen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:276
|
||||
msgid "Download a valid remote image tar."
|
||||
msgstr ""
|
||||
msgstr "Laden Sie einen gültigen Remote-Bild-Ter."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:63
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:41
|
||||
@ -611,7 +619,7 @@ msgstr "Treiber"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:679
|
||||
msgid "Dropped Capabilities"
|
||||
msgstr ""
|
||||
msgstr "Gelöschte Fähigkeiten"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:401
|
||||
msgid "Duplicate/Edit"
|
||||
@ -619,19 +627,19 @@ msgstr "Duplizieren/Bearbeiten"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:66
|
||||
msgid "Duplicate/Edit Container: %s"
|
||||
msgstr ""
|
||||
msgstr "Duplikat/Bearbeiten Container: %"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:422
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
msgstr "Bearbeitung"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:297
|
||||
msgid "Edit Mount"
|
||||
msgstr ""
|
||||
msgstr "Edit Mount"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:195
|
||||
msgid "Edit this container"
|
||||
msgstr ""
|
||||
msgstr "Bearbeiten Sie diesen Container"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:122
|
||||
msgid "Enable IPv6"
|
||||
@ -639,19 +647,20 @@ msgstr "IPv6 aktivieren"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:623
|
||||
msgid "Enter a new tag for image %s:"
|
||||
msgstr ""
|
||||
msgstr "Geben Sie einen neuen Tag für image %s ein:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:119
|
||||
msgid "Enter an optional name and labels for the new volume"
|
||||
msgstr ""
|
||||
"Geben Sie einen optionalen Namen und Etiketten für das neue Volumen ein"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:379
|
||||
msgid "Enter volume name or pick existing"
|
||||
msgstr ""
|
||||
msgstr "Volumenname eingeben oder bestehende auswählen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:250
|
||||
msgid "Entry"
|
||||
msgstr ""
|
||||
msgstr "Eingang"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:494
|
||||
msgid "Env"
|
||||
@ -659,7 +668,7 @@ msgstr "Umgebung"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:246
|
||||
msgid "Environment"
|
||||
msgstr ""
|
||||
msgstr "Umgebungsvariablen dumpen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:282
|
||||
msgid "Environmental Variable(-e)"
|
||||
@ -690,7 +699,7 @@ msgstr "Fehler"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1673
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1687
|
||||
msgid "Error loading logs:"
|
||||
msgstr ""
|
||||
msgstr "Fehler beim Laden von Protokollen:"
|
||||
|
||||
#: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:311
|
||||
msgid "Events"
|
||||
@ -698,7 +707,7 @@ msgstr "Ereignisse"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:65
|
||||
msgid "Example:"
|
||||
msgstr ""
|
||||
msgstr "Beispiel:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:84
|
||||
msgid "Example: tcp://0.0.0.0:2375"
|
||||
@ -711,11 +720,11 @@ msgstr "IPs ausschließen"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:411
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:386
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
msgstr "Exportieren"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:272
|
||||
msgid "Export this container"
|
||||
msgstr ""
|
||||
msgstr "Exportieren Sie diesen Container"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:628
|
||||
msgid "Exposed All Ports(-P)"
|
||||
@ -727,32 +736,32 @@ msgstr "Verfügbar gemachte Ports(-p)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1770
|
||||
msgid "Failed to connect to console"
|
||||
msgstr ""
|
||||
msgstr "Die Verbindung zur Konsole konnte nicht hergestellt werden"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:90
|
||||
msgid "Failed to execute \"/etc/init.d/%s %s\" action: %s"
|
||||
msgstr ""
|
||||
msgstr "Die Aktion „/etc/init.d/%s %s“ konnte nicht ausgeführt werden: %s"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:321
|
||||
msgid "Failed to load events: %s"
|
||||
msgstr ""
|
||||
msgstr "Ereignisse konnten nicht geladen werden: %s"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1675
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1686
|
||||
msgid "Failed to load logs"
|
||||
msgstr ""
|
||||
msgstr "Das Laden der Protokolle ist fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1568
|
||||
msgid "Failed to send data"
|
||||
msgstr ""
|
||||
msgstr "Das Senden der Daten ist fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1583
|
||||
msgid "Failed to send detach signal"
|
||||
msgstr ""
|
||||
msgstr "Das Senden des Trennsignals ist fehlgeschlagen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1722
|
||||
msgid "Failed to start console"
|
||||
msgstr ""
|
||||
msgstr "Versäumt, Konsole zu starten"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:77
|
||||
msgid "Fatal"
|
||||
@ -764,11 +773,11 @@ msgstr "Datei"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1602
|
||||
msgid "File uploaded to"
|
||||
msgstr ""
|
||||
msgstr "Datei hochgeladen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:885
|
||||
msgid "Filesystem Changes"
|
||||
msgstr ""
|
||||
msgstr "Dateisystem Änderungen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:463
|
||||
msgid "Finish Time"
|
||||
@ -778,10 +787,11 @@ msgstr "Endzeit"
|
||||
msgid ""
|
||||
"Flags passed to docker top (ps). Leave empty to use the built-in default."
|
||||
msgstr ""
|
||||
"Flaggen an die Docking-Top (ps). Lassen Sie den eingebauten Standard leer."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:50
|
||||
msgid "For local dockerd socket instances only."
|
||||
msgstr ""
|
||||
msgstr "Gilt nur für lokale Dockerd-Socket-Instanzen."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:300
|
||||
msgid "Force Remove"
|
||||
@ -789,17 +799,17 @@ msgstr "Entfernen erzwingen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:423
|
||||
msgid "Force remove"
|
||||
msgstr ""
|
||||
msgstr "Entfernen erzwingen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1306
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:745
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:153
|
||||
msgid "Form is not ready yet."
|
||||
msgstr ""
|
||||
msgstr "Form ist noch nicht bereit."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:96
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "Von"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:578
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:105
|
||||
@ -810,7 +820,7 @@ msgstr "Gateway"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:574
|
||||
msgid "Global IPv6 Address"
|
||||
msgstr ""
|
||||
msgstr "Global IPv6 Adresse"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:21
|
||||
msgid "Global settings"
|
||||
@ -818,7 +828,7 @@ msgstr "Globale Einstellungen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:23
|
||||
msgid "Globals"
|
||||
msgstr ""
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:262
|
||||
msgid "Go to relevant configuration page"
|
||||
@ -830,15 +840,15 @@ msgstr "Gewähre UCI Zugriff auf luci-app-dockerman"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:470
|
||||
msgid "Health Status"
|
||||
msgstr ""
|
||||
msgstr "Gesundheitsstatus"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:424
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
msgstr "Geschichte"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:430
|
||||
msgid "Host Directory"
|
||||
msgstr ""
|
||||
msgstr "Host-Verzeichnis"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:483
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:622
|
||||
@ -855,7 +865,7 @@ msgstr "ID"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1903
|
||||
msgid "IP Address (optional):"
|
||||
msgstr ""
|
||||
msgstr "IP-Adresse (optional):"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:45
|
||||
msgid "IP VLAN"
|
||||
@ -867,7 +877,7 @@ msgstr "IP-Adressbereich"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:98
|
||||
msgid "IPAM Driver"
|
||||
msgstr ""
|
||||
msgstr "IPAM Treiber"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:570
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:254
|
||||
@ -877,13 +887,13 @@ msgstr "IPv4-Adresse"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:64
|
||||
msgid "IPv6"
|
||||
msgstr ""
|
||||
msgstr "IPv6"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:572
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:259
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:129
|
||||
msgid "IPv6 Address"
|
||||
msgstr ""
|
||||
msgstr "IPv6-Adresse"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:580
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:134
|
||||
@ -892,7 +902,7 @@ msgstr "IPv6-Gateway"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:264
|
||||
msgid "IPv6 Link-Local Address"
|
||||
msgstr ""
|
||||
msgstr "IPv6 Link-Lokale Adresse"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:128
|
||||
msgid "IPv6 Subnet"
|
||||
@ -904,7 +914,7 @@ msgstr "Abbild"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:357
|
||||
msgid "Image (from image)"
|
||||
msgstr ""
|
||||
msgstr "Bild (aus Bild)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:456
|
||||
msgid "Image ID"
|
||||
@ -912,7 +922,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:113
|
||||
msgid "Image create completed"
|
||||
msgstr ""
|
||||
msgstr "Bild erstellen abgeschlossen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:231
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:699
|
||||
@ -921,7 +931,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:188
|
||||
msgid "Image push completed"
|
||||
msgstr ""
|
||||
msgstr "Image Push abgeschlossen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:199
|
||||
#: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:189
|
||||
@ -940,11 +950,11 @@ msgstr "Importieren"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:212
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:222
|
||||
msgid "In Use:"
|
||||
msgstr ""
|
||||
msgstr "Im Einsatz:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1105
|
||||
msgid "Include logs"
|
||||
msgstr ""
|
||||
msgstr "Inklusive Protokolle"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:172
|
||||
msgid "Index Server Address"
|
||||
@ -1009,11 +1019,11 @@ msgstr "Töten"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:260
|
||||
msgid "Kill this container"
|
||||
msgstr ""
|
||||
msgstr "Töte diesen Container"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:888
|
||||
msgid "Kind"
|
||||
msgstr ""
|
||||
msgstr "Art"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:68
|
||||
msgid "L2 bridge"
|
||||
@ -1025,7 +1035,7 @@ msgstr "L3-Brücke"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:94
|
||||
msgid "LAN connection"
|
||||
msgstr ""
|
||||
msgstr "LAN-Verbindung"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:92
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:84
|
||||
@ -1033,11 +1043,11 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:132
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:243
|
||||
msgid "Labels"
|
||||
msgstr ""
|
||||
msgstr "Etiketten"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1163
|
||||
msgid "Lines to show:"
|
||||
msgstr ""
|
||||
msgstr "Linien zu zeigen:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:508
|
||||
msgid "Links"
|
||||
@ -1049,15 +1059,15 @@ msgstr "Verknüpfungen mit anderen Containern"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:309
|
||||
msgid "Load Events"
|
||||
msgstr ""
|
||||
msgstr "Veranstaltungen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1176
|
||||
msgid "Load Logs"
|
||||
msgstr ""
|
||||
msgstr "Logs laden"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1668
|
||||
msgid "Loading logs…"
|
||||
msgstr ""
|
||||
msgstr "Protokolle werden geladen…"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:34
|
||||
msgid "Lock API endpoint to a specific version (helps guarantee behaviour)."
|
||||
@ -1265,7 +1275,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:671
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:237
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
msgstr "Nein"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1869
|
||||
msgid "No additional networks available to connect"
|
||||
@ -1616,7 +1626,7 @@ msgstr "Neustart"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:154
|
||||
msgctxt "daemon restart action"
|
||||
msgid "Restart"
|
||||
msgstr ""
|
||||
msgstr "Neustart"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:476
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:234
|
||||
@ -1659,7 +1669,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:62
|
||||
msgid "Scope"
|
||||
msgstr ""
|
||||
msgstr "Bereich"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:91
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:336
|
||||
@ -2214,11 +2224,11 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:341
|
||||
msgid "restart"
|
||||
msgstr ""
|
||||
msgstr "Neustart"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:363
|
||||
msgid "save"
|
||||
msgstr ""
|
||||
msgstr "Speichern"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:412
|
||||
msgid "secret"
|
||||
@ -2238,7 +2248,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:364
|
||||
msgid "tag"
|
||||
msgstr ""
|
||||
msgstr "Tag"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:419
|
||||
msgid "tmpfs Options"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-13 14:09+0000\n"
|
||||
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-28 19:26+0000\n"
|
||||
"Last-Translator: Francisco Serrador <fserrador@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsdockerman/es/>\n"
|
||||
"Language: es\n"
|
||||
@ -97,7 +97,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:33
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:168
|
||||
msgid "Api Version"
|
||||
msgstr "Versión de API"
|
||||
msgstr "Versión de Api"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:70
|
||||
msgid "Attachable"
|
||||
@ -1108,7 +1108,7 @@ msgstr "MAC VLAN"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:122
|
||||
msgid "Mac Address"
|
||||
msgstr "Dirección MAC"
|
||||
msgstr "Dirección Mac"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:335
|
||||
msgid "Manage and view container configuration"
|
||||
@ -1925,7 +1925,7 @@ msgstr "Token"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:107
|
||||
msgid "Tokes and Passwords are not encrypted in the uci configuration."
|
||||
msgstr ""
|
||||
"Los tokens y las contraseñas no están cifrados en la configuración de UCI."
|
||||
"Los vales y las Contraseñas no están cifrados en la configuración de uci."
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:82
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:139
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-09 19:11+0000\n"
|
||||
"Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-24 19:10+0000\n"
|
||||
"Last-Translator: Highlandword9 <highlandword9@gmail.com>\n"
|
||||
"Language-Team: Irish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsdockerman/ga/>\n"
|
||||
"Language: ga\n"
|
||||
@ -1739,7 +1739,7 @@ msgstr "Tosaigh an coimeádán seo"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:161
|
||||
msgid "State"
|
||||
msgstr "Stát"
|
||||
msgstr "Staid"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:695
|
||||
msgid "Stats"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-13 14:10+0000\n"
|
||||
"PO-Revision-Date: 2026-03-16 23:10+0000\n"
|
||||
"Last-Translator: Hyeonjeong Lee <h9101654@gmail.com>\n"
|
||||
"Language-Team: Korean <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsdockerman/ko/>\n"
|
||||
@ -32,7 +32,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
msgstr "동작"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1816
|
||||
msgid "Action unavailable:"
|
||||
@ -188,7 +188,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:733
|
||||
msgid "CPU Stats"
|
||||
msgstr ""
|
||||
msgstr "CPU 통계"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:758
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:787
|
||||
@ -1058,7 +1058,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:685
|
||||
msgid "Log Driver"
|
||||
msgstr ""
|
||||
msgstr "로그 드라이버"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:71
|
||||
msgid "Log Level"
|
||||
@ -1066,7 +1066,7 @@ msgstr "로그 수준"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:688
|
||||
msgid "Log Options"
|
||||
msgstr ""
|
||||
msgstr "로그 옵션"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:727
|
||||
msgid "Log driver options"
|
||||
@ -1094,7 +1094,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:731
|
||||
msgid "Mem Stats"
|
||||
msgstr ""
|
||||
msgstr "메모리 통계"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:691
|
||||
msgid "Memory"
|
||||
@ -1186,7 +1186,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:730
|
||||
msgid "Net Stats"
|
||||
msgstr ""
|
||||
msgstr "네트워크 통계"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:100
|
||||
msgid "Network Configurations"
|
||||
@ -1380,7 +1380,7 @@ msgstr "PID"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:729
|
||||
msgid "PID Stats"
|
||||
msgstr ""
|
||||
msgstr "PID 통계"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/networks.js:189
|
||||
msgid "Parent Interface"
|
||||
@ -1407,7 +1407,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:928
|
||||
msgid "Path:"
|
||||
msgstr ""
|
||||
msgstr "경로:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:390
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1797
|
||||
@ -2120,7 +2120,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:334
|
||||
msgid "export"
|
||||
msgstr ""
|
||||
msgstr "내보내기"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:206
|
||||
msgid "git repositories require git installed on the docker host."
|
||||
@ -2164,7 +2164,7 @@ msgstr "일시 정지"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:411
|
||||
msgid "plugin"
|
||||
msgstr ""
|
||||
msgstr "플러그인"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:318
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:347
|
||||
@ -2189,7 +2189,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:339
|
||||
msgid "rename"
|
||||
msgstr ""
|
||||
msgstr "이름 변경"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:340
|
||||
msgid "resize"
|
||||
@ -2209,7 +2209,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:413
|
||||
msgid "service"
|
||||
msgstr ""
|
||||
msgstr "서비스"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:342
|
||||
msgid "start"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-10-10 05:14+0000\n"
|
||||
"PO-Revision-Date: 2026-03-18 02:23+0000\n"
|
||||
"Last-Translator: CRISTIAN ANDREI <cristianvdr@gmail.com>\n"
|
||||
"Language-Team: Romanian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsdockerman/ro/>\n"
|
||||
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||
"20)) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.14-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:487
|
||||
msgid "/mnt/path"
|
||||
@ -223,7 +223,7 @@ msgstr "CPU-uri"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1914
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:499
|
||||
msgid "Cancel"
|
||||
msgstr "Anulați"
|
||||
msgstr "Anulare"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:35
|
||||
msgid "Causes errors when a chosen API > Docker endpoint API support."
|
||||
@ -243,7 +243,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1181
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
msgstr "Curățare"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:617
|
||||
msgid "Click to add a new tag to this image"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-02 22:45+0000\n"
|
||||
"PO-Revision-Date: 2026-03-22 17:11+0000\n"
|
||||
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
|
||||
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsdockerman/sv/>\n"
|
||||
@ -12,15 +12,15 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:487
|
||||
msgid "/mnt/path"
|
||||
msgstr ""
|
||||
msgstr "/mnt/genväg"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:439
|
||||
msgid "/path/in/image"
|
||||
msgstr ""
|
||||
msgstr "/genväg/i/avbild"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:127
|
||||
msgid "0"
|
||||
msgstr ""
|
||||
msgstr "0"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:106
|
||||
msgid "A Token is preferred over a Password."
|
||||
@ -32,7 +32,7 @@ msgstr "En lista över kärnfunktioner som du kan lägga till i behållaren"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
msgstr "Åtgärd"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1816
|
||||
msgid "Action unavailable:"
|
||||
@ -40,7 +40,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249
|
||||
msgid "Actor"
|
||||
msgstr ""
|
||||
msgstr "Skådespelare"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:564
|
||||
msgid "Add"
|
||||
@ -61,7 +61,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:616
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
msgstr "Avancerat"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:342
|
||||
msgid "All Subtypes"
|
||||
@ -79,7 +79,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:480
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:239
|
||||
msgid "Always"
|
||||
msgstr ""
|
||||
msgstr "Alltid"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:222
|
||||
msgid "Always pull image first"
|
||||
@ -167,7 +167,7 @@ msgstr "CAP-ADD(--cap-add)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:839
|
||||
msgid "COMMAND"
|
||||
msgstr ""
|
||||
msgstr "KOMMANDO"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:672
|
||||
msgid "CPU Period"
|
||||
@ -229,7 +229,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:882
|
||||
msgid "Changes"
|
||||
msgstr ""
|
||||
msgstr "Ändringar"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:420
|
||||
msgid "Clean"
|
||||
@ -280,7 +280,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1012
|
||||
msgid "Command:"
|
||||
msgstr ""
|
||||
msgstr "Kommando:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:80
|
||||
msgid "Config Only"
|
||||
@ -324,7 +324,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1397
|
||||
msgid "Connecting…"
|
||||
msgstr ""
|
||||
msgstr "Ansluter…"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:998
|
||||
msgid "Console"
|
||||
@ -428,7 +428,7 @@ msgstr "Containrar Översikt"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:421
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
msgstr "Skapa"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:921
|
||||
msgid "Create container"
|
||||
@ -498,7 +498,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:96
|
||||
msgid "Detail"
|
||||
msgstr ""
|
||||
msgstr "Detaljer"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:636
|
||||
msgid "Device(--device)"
|
||||
@ -512,7 +512,7 @@ msgstr "Enheter"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1051
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1116
|
||||
msgid "Disconnect"
|
||||
msgstr "Avbryt anslutning"
|
||||
msgstr "Koppla ner"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1854
|
||||
msgid "Disconnect network"
|
||||
@ -621,7 +621,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:422
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
msgstr "Redigera"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:297
|
||||
msgid "Edit Mount"
|
||||
@ -649,7 +649,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:250
|
||||
msgid "Entry"
|
||||
msgstr ""
|
||||
msgstr "Post"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:494
|
||||
msgid "Env"
|
||||
@ -657,7 +657,7 @@ msgstr "Env"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:246
|
||||
msgid "Environment"
|
||||
msgstr ""
|
||||
msgstr "Miljö"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:282
|
||||
msgid "Environmental Variable(-e)"
|
||||
@ -696,7 +696,7 @@ msgstr "Händelser"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:65
|
||||
msgid "Example:"
|
||||
msgstr ""
|
||||
msgstr "Exempel:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:84
|
||||
msgid "Example: tcp://0.0.0.0:2375"
|
||||
@ -709,7 +709,7 @@ msgstr "Exkludera IPs"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:411
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:386
|
||||
msgid "Export"
|
||||
msgstr ""
|
||||
msgstr "Exportera"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:272
|
||||
msgid "Export this container"
|
||||
@ -797,7 +797,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:96
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
msgstr "Från"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:578
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:105
|
||||
@ -832,7 +832,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:424
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
msgstr "Historik"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:430
|
||||
msgid "Host Directory"
|
||||
@ -875,7 +875,7 @@ msgstr "IPv4-adress"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:64
|
||||
msgid "IPv6"
|
||||
msgstr ""
|
||||
msgstr "IPv6"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:572
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:259
|
||||
@ -963,7 +963,7 @@ msgstr "Info"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:73
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:72
|
||||
msgid "Ingress"
|
||||
msgstr "Inflöde"
|
||||
msgstr "Inledning"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:73
|
||||
msgid ""
|
||||
@ -1031,7 +1031,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:132
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:243
|
||||
msgid "Labels"
|
||||
msgstr ""
|
||||
msgstr "Etiketter"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1163
|
||||
msgid "Lines to show:"
|
||||
@ -1171,11 +1171,11 @@ msgstr "Montera tmpfs-katalogen"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:287
|
||||
msgid "Mount(--mount)"
|
||||
msgstr ""
|
||||
msgstr "Montera(--mount)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:543
|
||||
msgid "Mounts/Binds"
|
||||
msgstr ""
|
||||
msgstr "Monteringar/Bindningar"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:449
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:561
|
||||
@ -1328,7 +1328,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:116
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:151
|
||||
msgid "Now"
|
||||
msgstr ""
|
||||
msgstr "Nu"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:661
|
||||
msgid "Number of CPUs. Number is a fractional number. 0.000 means no limit"
|
||||
@ -1339,7 +1339,7 @@ msgstr "Antal processorer. Tal är ett bråktal. 0.000 betyder ingen gräns"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1354
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:242
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
msgstr "OK"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:665
|
||||
msgid "OOM Kill Disable"
|
||||
@ -1387,7 +1387,7 @@ msgstr "Överblick"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:839
|
||||
msgid "PID"
|
||||
msgstr ""
|
||||
msgstr "PID"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:729
|
||||
msgid "PID Stats"
|
||||
@ -1403,7 +1403,7 @@ msgstr "Pass-through (speglar fysisk enhet till ett enda MAC VLAN)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:120
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
msgstr "Lösenord"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:888
|
||||
msgid "Path"
|
||||
@ -1418,12 +1418,12 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:928
|
||||
msgid "Path:"
|
||||
msgstr ""
|
||||
msgstr "Genväg:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:390
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1797
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
msgstr "Pausa"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:206
|
||||
msgid "Pause this container"
|
||||
@ -1432,7 +1432,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:86
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:143
|
||||
msgid "Paused"
|
||||
msgstr ""
|
||||
msgstr "Pausades"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:734
|
||||
msgid "Per CPU Stats"
|
||||
@ -1474,7 +1474,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1027
|
||||
msgid "Port:"
|
||||
msgstr ""
|
||||
msgstr "Port:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:501
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:164
|
||||
@ -1495,7 +1495,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:822
|
||||
msgid "Processes"
|
||||
msgstr ""
|
||||
msgstr "Processer"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:319
|
||||
msgid "Propagation: private"
|
||||
@ -1559,7 +1559,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:125
|
||||
msgid "Registry"
|
||||
msgstr ""
|
||||
msgstr "Register"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:100
|
||||
msgid "Registry Auth"
|
||||
@ -1610,7 +1610,7 @@ msgstr "Starta om"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:154
|
||||
msgctxt "daemon restart action"
|
||||
msgid "Restart"
|
||||
msgstr ""
|
||||
msgstr "Starta om"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:476
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:234
|
||||
@ -1632,7 +1632,7 @@ msgstr "Kör kommandot"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:84
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:141
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
msgstr "Körs"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:825
|
||||
msgid "Running Processes"
|
||||
@ -1640,7 +1640,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:192
|
||||
msgid "Running:"
|
||||
msgstr ""
|
||||
msgstr "Körs:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:839
|
||||
msgid "STAT"
|
||||
@ -1750,7 +1750,7 @@ msgstr "Stopp"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:155
|
||||
msgctxt "daemon stop action"
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
msgstr "Stopp"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:248
|
||||
msgid "Stop this container"
|
||||
@ -1865,7 +1865,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249
|
||||
msgid "Time"
|
||||
msgstr ""
|
||||
msgstr "Tid"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:358
|
||||
msgid "Tmpfs"
|
||||
@ -1881,7 +1881,7 @@ msgstr "Tmpfs(--tmpfs)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:131
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
msgstr "Till"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:138
|
||||
msgid "Token"
|
||||
@ -1900,7 +1900,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:45
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/volumes.js:111
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
msgstr "Totalt"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:170
|
||||
msgid "Total Memory"
|
||||
@ -1917,7 +1917,7 @@ msgstr ""
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:63
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:249
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "Typ"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1127
|
||||
msgid "Type command here... (Ctrl+D to detach)"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-13 14:10+0000\n"
|
||||
"PO-Revision-Date: 2026-03-29 16:36+0000\n"
|
||||
"Last-Translator: EESF-2 <eesf-2@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://hosted.weblate.org/"
|
||||
"projects/openwrt/luciapplicationsdockerman/zh_Hant/>\n"
|
||||
@ -280,7 +280,7 @@ msgstr "僅配置"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:76
|
||||
msgid "ConfigFrom"
|
||||
msgstr ""
|
||||
msgstr "配置從"
|
||||
|
||||
#: applications/luci-app-dockerman/root/usr/share/luci/menu.d/luci-app-dockerman.json:28
|
||||
msgid "Configuration"
|
||||
@ -316,7 +316,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1397
|
||||
msgid "Connecting…"
|
||||
msgstr ""
|
||||
msgstr "連線中…"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:998
|
||||
msgid "Console"
|
||||
@ -464,7 +464,7 @@ msgstr "DNS 名稱"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:73
|
||||
msgid "Debug"
|
||||
msgstr "偵錯"
|
||||
msgstr "除錯"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/configuration.js:57
|
||||
msgid "Default bridge"
|
||||
@ -1311,7 +1311,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:51
|
||||
msgid "Note: docker provides no container import facility."
|
||||
msgstr ""
|
||||
msgstr "注意: docker 不提供容器匯入設施。"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:116
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:151
|
||||
@ -1336,7 +1336,7 @@ msgstr "OOM 終止停用"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:481
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:240
|
||||
msgid "On failure"
|
||||
msgstr ""
|
||||
msgstr "失敗時"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:37
|
||||
msgid ""
|
||||
@ -1439,7 +1439,7 @@ msgstr "請輸入子路徑"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:293
|
||||
msgid "Please enter an image repo tag"
|
||||
msgstr ""
|
||||
msgstr "請輸入映像檔儲存庫標籤"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:299
|
||||
msgid "Please enter an image source"
|
||||
@ -1481,7 +1481,7 @@ msgstr "特權模式"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:822
|
||||
msgid "Processes"
|
||||
msgstr "程序"
|
||||
msgstr "程式"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:319
|
||||
msgid "Propagation: private"
|
||||
@ -1513,7 +1513,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:608
|
||||
msgid "Publish container's port(s) to the host"
|
||||
msgstr "將容器連接埠發佈至主機"
|
||||
msgstr "發佈容器連接埠至主機"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:361
|
||||
msgid "Pull"
|
||||
@ -1572,7 +1572,7 @@ msgstr "移除標籤"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:625
|
||||
msgid "Repository"
|
||||
msgstr ""
|
||||
msgstr "儲存庫"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:658
|
||||
msgid "Repository cannot be empty"
|
||||
@ -1626,7 +1626,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/overview.js:192
|
||||
msgid "Running:"
|
||||
msgstr ""
|
||||
msgstr "執行中:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:839
|
||||
msgid "STAT"
|
||||
@ -1644,7 +1644,7 @@ msgstr "範圍"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:91
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/events.js:336
|
||||
msgid "Select Type First"
|
||||
msgstr ""
|
||||
msgstr "請先選擇類型"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:159
|
||||
msgid "Select image tag"
|
||||
@ -1661,7 +1661,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1142
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
msgstr "發送"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:273
|
||||
msgid "Set custom DNS servers"
|
||||
@ -1749,7 +1749,7 @@ msgstr "已停止"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1090
|
||||
msgid "Streams:"
|
||||
msgstr ""
|
||||
msgstr "串流:"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network.js:104
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/network_new.js:103
|
||||
@ -1772,7 +1772,7 @@ msgstr "成功"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:1012
|
||||
msgid "Successful"
|
||||
msgstr ""
|
||||
msgstr "成功"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:536
|
||||
msgid "Sysctl Settings"
|
||||
@ -1913,7 +1913,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:980
|
||||
msgid "Unexpected error"
|
||||
msgstr ""
|
||||
msgstr "非預期錯誤"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1346
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1631
|
||||
@ -1924,16 +1924,16 @@ msgstr "未知錯誤"
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:479
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:238
|
||||
msgid "Unless stopped"
|
||||
msgstr ""
|
||||
msgstr "除非已停止"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:390
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1798
|
||||
msgid "Unpause"
|
||||
msgstr ""
|
||||
msgstr "取消暫停"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/containers.js:207
|
||||
msgid "Unpause this container"
|
||||
msgstr ""
|
||||
msgstr "取消暫停此容器"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:564
|
||||
msgid "Update"
|
||||
@ -1950,11 +1950,11 @@ msgstr "上傳"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1601
|
||||
msgid "Uploading file to container…"
|
||||
msgstr ""
|
||||
msgstr "上傳檔案到容器中…"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:698
|
||||
msgid "Uploading image…"
|
||||
msgstr ""
|
||||
msgstr "上傳映像檔中…"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1600
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/images.js:697
|
||||
@ -1995,7 +1995,7 @@ msgstr "版本"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:356
|
||||
msgid "Volume (named)"
|
||||
msgstr ""
|
||||
msgstr "儲存區 (已命名)"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container_new.js:383
|
||||
msgid "Volume Name"
|
||||
@ -2037,15 +2037,15 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:404
|
||||
msgid "builder"
|
||||
msgstr ""
|
||||
msgstr "建置器"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:324
|
||||
msgid "commit"
|
||||
msgstr ""
|
||||
msgstr "提交"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/view/dockerman/container.js:1827
|
||||
msgid "completed"
|
||||
msgstr ""
|
||||
msgstr "已完成"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:405
|
||||
msgid "config"
|
||||
@ -2091,7 +2091,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:329
|
||||
msgid "die"
|
||||
msgstr ""
|
||||
msgstr "die"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:373
|
||||
msgid "disconnect"
|
||||
@ -2188,7 +2188,7 @@ msgstr "重新命名"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:340
|
||||
msgid "resize"
|
||||
msgstr ""
|
||||
msgstr "調整大小"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:341
|
||||
msgid "restart"
|
||||
@ -2228,11 +2228,11 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:384
|
||||
msgid "unmount"
|
||||
msgstr ""
|
||||
msgstr "卸載"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:345
|
||||
msgid "unpause"
|
||||
msgstr ""
|
||||
msgstr "取消暫停"
|
||||
|
||||
#: applications/luci-app-dockerman/htdocs/luci-static/resources/dockerman/common.js:365
|
||||
msgid "untag"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2025-08-23 10:16+0000\n"
|
||||
"PO-Revision-Date: 2026-03-18 02:23+0000\n"
|
||||
"Last-Translator: CRISTIAN ANDREI <cristianvdr@gmail.com>\n"
|
||||
"Language-Team: Romanian <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationsksmbd/ro/>\n"
|
||||
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
|
||||
"20)) ? 1 : 2;\n"
|
||||
"X-Generator: Weblate 5.13\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:58
|
||||
msgid "Add optional guest access to IPC$ share, disabled by default"
|
||||
@ -17,7 +17,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:57
|
||||
msgid "Allow guest on IPC$."
|
||||
msgstr ""
|
||||
msgstr "Permiteți oaspeți pe IPC$."
|
||||
|
||||
#: applications/luci-app-ksmbd/htdocs/luci-static/resources/view/ksmbd.js:103
|
||||
msgid "Allow guests"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openclash
|
||||
PKG_VERSION:=0.47.071
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=0.47.075
|
||||
PKG_RELEASE:=3
|
||||
PKG_MAINTAINER:=vernesong <https://github.com/vernesong/OpenClash>
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
@ -537,10 +537,10 @@ function fetch_sub_info(sub_url, sub_ua)
|
||||
local info, upload, download, total, day_expire, http_code
|
||||
local used, expire, day_left, percent, surplus
|
||||
|
||||
info = luci.sys.exec(string.format("curl -sLI -X GET -m 10 --retry 2 -w 'http_code=%%{http_code}' -H 'User-Agent: %s' '%s'", sub_ua, sub_url))
|
||||
info = luci.sys.exec(string.format("curl -sLI -X GET -m 5 --retry 2 -w 'http_code=%%{http_code}' -H 'User-Agent: %s' '%s'", sub_ua, sub_url))
|
||||
local http_match = string.match(info, "http_code=(%d+)")
|
||||
if not info or not http_match or tonumber(http_match) ~= 200 then
|
||||
info = luci.sys.exec(string.format("curl -sLI -X GET -m 10 --retry 2 -w 'http_code=%%{http_code}' -H 'User-Agent: Quantumultx' '%s'", sub_url))
|
||||
info = luci.sys.exec(string.format("curl -sLI -X GET -m 5 --retry 2 -w 'http_code=%%{http_code}' -H 'User-Agent: Quantumultx' '%s'", sub_url))
|
||||
http_match = string.match(info, "http_code=(%d+)")
|
||||
end
|
||||
|
||||
@ -735,7 +735,15 @@ function get_sub_url(filename)
|
||||
function(s)
|
||||
if s.name == filename and s.address and string.find(s.address, "http") then
|
||||
string.gsub(s.address, '[^\n]+', function(w) table.insert(info_tb, w) end)
|
||||
sub_url = info_tb[1]
|
||||
if #info_tb == 1 then
|
||||
local url, _ = parse_url_with_name(info_tb[1], filename)
|
||||
sub_url = url
|
||||
elseif #info_tb > 1 then
|
||||
for _, raw in ipairs(info_tb) do
|
||||
local url, name = parse_url_with_name(raw, filename)
|
||||
table.insert(providers, {name = name, url = url})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
@ -744,6 +752,10 @@ function get_sub_url(filename)
|
||||
return {type = "single", url = sub_url}
|
||||
end
|
||||
|
||||
if #providers > 0 then
|
||||
return {type = "multiple", providers = providers}
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
@ -766,36 +778,33 @@ function sub_info_get()
|
||||
if filename and not is_start() then
|
||||
url_result = get_sub_url(filename)
|
||||
|
||||
if not url_result then
|
||||
sub_info = "No Sub Info Found"
|
||||
elseif url_result.type == "single" then
|
||||
local info = fetch_sub_info(url_result.url, sub_ua)
|
||||
if info then
|
||||
table.insert(providers_data, info)
|
||||
sub_info = "Successful"
|
||||
else
|
||||
sub_info = "No Sub Info Found"
|
||||
end
|
||||
elseif url_result.type == "multiple" then
|
||||
for i, provider in ipairs(url_result.providers) do
|
||||
local info = fetch_sub_info(provider.url, sub_ua)
|
||||
if url_result then
|
||||
if url_result.type == "single" then
|
||||
local info = fetch_sub_info(url_result.url, sub_ua)
|
||||
if info then
|
||||
info.provider_name = provider.name
|
||||
table.insert(providers_data, info)
|
||||
end
|
||||
end
|
||||
|
||||
if #providers_data > 0 then
|
||||
sub_info = "Successful"
|
||||
else
|
||||
sub_info = "No Sub Info Found"
|
||||
for i, provider in ipairs(url_result.providers) do
|
||||
local info = fetch_sub_info(provider.url, sub_ua)
|
||||
if info then
|
||||
info.provider_name = provider.name
|
||||
table.insert(providers_data, info)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if #providers_data == 0 then
|
||||
if not url_result then
|
||||
luci.http.status(400, "Subscription information not found")
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json({
|
||||
sub_info = sub_info,
|
||||
providers = providers_data,
|
||||
get_time = os.time(),
|
||||
url_result = url_result
|
||||
@ -903,6 +912,27 @@ function action_log_level()
|
||||
})
|
||||
end
|
||||
|
||||
function action_switch_log()
|
||||
local level, info
|
||||
if is_running() then
|
||||
local daip = daip()
|
||||
local dase = dase() or ""
|
||||
local cn_port = cn_port()
|
||||
level = luci.http.formvalue("log_level")
|
||||
if not daip or not cn_port or not level then luci.http.status(500, "Switch Faild") return end
|
||||
info = luci.sys.exec(string.format('curl -sL -m 3 --retry 2 -H "Content-Type: application/json" -H "Authorization: Bearer %s" -XPATCH http://"%s":"%s"/configs -d \'{\"log-level\": \"%s\"}\'', dase, daip, cn_port, level))
|
||||
if info ~= "" then
|
||||
luci.http.status(500, "Switch Faild")
|
||||
end
|
||||
else
|
||||
luci.http.status(500, "Switch Faild")
|
||||
end
|
||||
luci.http.prepare_content("application/json")
|
||||
luci.http.write_json({
|
||||
info = info;
|
||||
})
|
||||
end
|
||||
|
||||
local function s(e)
|
||||
local t=0
|
||||
local a={' B/S',' KB/S',' MB/S',' GB/S',' TB/S',' PB/S'}
|
||||
|
||||
@ -123,6 +123,14 @@ end
|
||||
o = s:option(TextValue, "address", translate("Subscribe Address"))
|
||||
function o.cfgvalue(...)
|
||||
return Value.cfgvalue(...) or translate("None")
|
||||
|
||||
end
|
||||
function o.validate(self, value)
|
||||
if value then
|
||||
value = value:gsub("\r\n?", "\n")
|
||||
value = value:gsub("%c*$", "")
|
||||
end
|
||||
return value
|
||||
end
|
||||
|
||||
---- template
|
||||
|
||||
@ -510,8 +510,8 @@ function o.write(self, section, value)
|
||||
value = value:gsub("\r\n?", "\n")
|
||||
local old_value = NXFS.readfile("/etc/openclash/custom/openclash_custom_chnroute_pass.list")
|
||||
if value ~= old_value then
|
||||
NXFS.writefile("/etc/openclash/custom/openclash_custom_chnroute_pass.list", value)
|
||||
end
|
||||
NXFS.writefile("/etc/openclash/custom/openclash_custom_chnroute_pass.list", value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -612,8 +612,6 @@
|
||||
|
||||
<link rel="stylesheet" href="/luci-static/resources/openclash/lib/codemirror.css"/>
|
||||
<link rel="stylesheet" href="/luci-static/resources/openclash/theme/material.css"/>
|
||||
<link rel="stylesheet" href="/luci-static/resources/openclash/theme/material-log.css"/>
|
||||
<link rel="stylesheet" href="/luci-static/resources/openclash/theme/idea.css"/>
|
||||
<link rel="stylesheet" href="/luci-static/resources/openclash/addon/fold/foldgutter.css"/>
|
||||
<link rel="stylesheet" href="/luci-static/resources/openclash/addon/lint/lint.css">
|
||||
<link rel="stylesheet" href="/luci-static/resources/openclash/addon/display/fullscreen.css">
|
||||
|
||||
@ -2972,13 +2972,15 @@
|
||||
try {
|
||||
var parsedData = JSON.parse(cachedData);
|
||||
|
||||
if (parsedData.sub_info && parsedData.sub_info !== "No Sub Info Found") {
|
||||
if (this.currentConfigFile === requestConfigFile) {
|
||||
this.displaySubscriptionInfo(parsedData);
|
||||
}
|
||||
} else if (parsedData.sub_info === "No Sub Info Found") {
|
||||
if (this.currentConfigFile === requestConfigFile) {
|
||||
this.showNoInfo();
|
||||
if (parsedData.providers) {
|
||||
if (parsedData.providers.length > 0) {
|
||||
if (this.currentConfigFile === requestConfigFile) {
|
||||
this.displaySubscriptionInfo(parsedData);
|
||||
}
|
||||
} else {
|
||||
if (this.currentConfigFile === requestConfigFile) {
|
||||
this.showNoInfo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3006,16 +3008,32 @@
|
||||
if (SubscriptionManager.currentConfigFile !== requestConfigFile) {
|
||||
return;
|
||||
}
|
||||
if (x && x.status == 200 && status.sub_info && status.sub_info !== "No Sub Info Found") {
|
||||
SubscriptionManager.retryCount = 0;
|
||||
localStorage.setItem('sub_info_' + filename, JSON.stringify(status));
|
||||
SubscriptionManager.displaySubscriptionInfo(status);
|
||||
} else if (x && x.status == 200 && status.sub_info === "No Sub Info Found") {
|
||||
SubscriptionManager.retryCount = 0;
|
||||
localStorage.setItem('sub_info_' + filename, JSON.stringify(status));
|
||||
SubscriptionManager.showNoInfo();
|
||||
|
||||
var needsErrorHandling = false;
|
||||
if (x && x.status == 200 && status.providers) {
|
||||
var newProvidersLength = (status.providers) ? status.providers.length : 0;
|
||||
var cachedProvidersLength = (parsedData && parsedData.providers) ? parsedData.providers.length : 0;
|
||||
|
||||
if (newProvidersLength !== cachedProvidersLength && cachedProvidersLength > newProvidersLength) {
|
||||
needsErrorHandling = true;
|
||||
}
|
||||
|
||||
if (!needsErrorHandling) {
|
||||
SubscriptionManager.retryCount = 0;
|
||||
localStorage.setItem('sub_info_' + filename, JSON.stringify(status));
|
||||
if (status.providers && status.providers.length === 0) {
|
||||
SubscriptionManager.showNoInfo();
|
||||
return;
|
||||
}
|
||||
SubscriptionManager.displaySubscriptionInfo(status);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
SubscriptionManager.handleError();
|
||||
needsErrorHandling = true;
|
||||
}
|
||||
|
||||
if (needsErrorHandling) {
|
||||
SubscriptionManager.handleError(cachedData);
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
@ -3039,15 +3057,11 @@
|
||||
|
||||
container.style.display = 'flex';
|
||||
|
||||
if (data && data.sub_info && data.sub_info !== "No Sub Info Found") {
|
||||
if (data.providers && Array.isArray(data.providers) && data.providers.length > 0) {
|
||||
if (data.providers.length > 1 || data.providers[0].provider_name) {
|
||||
this.displayMultipleProviders(data.providers, progressSection);
|
||||
} else {
|
||||
this.displaySingleProvider(data.providers[0], progressSection);
|
||||
}
|
||||
if (data && data.providers && data.providers.length > 0) {
|
||||
if (data.providers.length > 1 || data.providers[0].provider_name) {
|
||||
this.displayMultipleProviders(data.providers, progressSection);
|
||||
} else {
|
||||
progressSection.style.display = 'none';
|
||||
this.displaySingleProvider(data.providers[0], progressSection);
|
||||
}
|
||||
} else {
|
||||
progressSection.style.display = 'none';
|
||||
@ -3284,18 +3298,21 @@
|
||||
}
|
||||
},
|
||||
|
||||
handleError: function() {
|
||||
if (this.retryCount >= this.maxRetries) {
|
||||
handleError: function(cachedData) {
|
||||
if (!cachedData) {
|
||||
this.showNoInfo();
|
||||
}
|
||||
|
||||
if (this.retryCount >= this.maxRetries) {
|
||||
this.retryCount = 0;
|
||||
if (this.currentConfigFile) {
|
||||
if (this.currentConfigFile && cachedData) {
|
||||
localStorage.removeItem('sub_info_' + this.extractFilename(this.currentConfigFile));
|
||||
}
|
||||
} else {
|
||||
this.retryCount++;
|
||||
setTimeout(function() {
|
||||
SubscriptionManager.getSubscriptionInfo();
|
||||
}, 5000);
|
||||
}, 15000);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -432,9 +432,11 @@
|
||||
border: 1px solid #999999;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-sizing: border-box;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.sub_provider_fill {
|
||||
@ -458,6 +460,22 @@
|
||||
text-overflow: ellipsis;
|
||||
max-width: 100%;
|
||||
padding: 0 4px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.sub_provider_percent {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
font-size: 12px;
|
||||
color: #333;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 100%;
|
||||
padding: 0 4px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* Dark mode support */
|
||||
@ -470,6 +488,10 @@
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
:root[data-darkmode="true"] .sub_provider_percent {
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
/* Responsive adjustments for multiple providers */
|
||||
@media (max-width: 1024px) {
|
||||
.sub_providers_container {
|
||||
@ -483,6 +505,10 @@
|
||||
.sub_provider_name {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.sub_provider_percent {
|
||||
font-size: 11px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
@ -498,6 +524,10 @@
|
||||
.sub_provider_name {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.sub_provider_percent {
|
||||
font-size: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
@ -510,6 +540,10 @@
|
||||
.sub_provider_name {
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
.sub_provider_percent {
|
||||
font-size: 9px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 320px) {
|
||||
@ -521,6 +555,10 @@
|
||||
.sub_provider_name {
|
||||
font-size: 8px;
|
||||
}
|
||||
|
||||
.sub_provider_percent {
|
||||
font-size: 8px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -533,7 +571,7 @@
|
||||
|
||||
<div class="sub_div">
|
||||
<span id='<%=idname%>' class="sub_tab"></span>
|
||||
<button type="button" class="sub_setting" title='<%:Refresh%>' alt='<%:Refresh%>' onclick='return sub_info_refresh_<%=idname%>(this)'>
|
||||
<button type="button" class="sub_setting" title='<%:Refresh%>' alt='<%:Refresh%>' onclick='return sub_info_refresh_<%=idname%>(true)'>
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
||||
<path d="M23 4v6h-6"></path>
|
||||
<path d="M20.49 15a9 9 0 1 1-2.12-9.36L23 10"></path>
|
||||
@ -553,7 +591,7 @@
|
||||
|
||||
var retry_<%=idname%> = 0;
|
||||
var s_<%=idname%>;
|
||||
sub_info_get_<%=idname%>();
|
||||
sub_info_refresh_<%=idname%>(false);
|
||||
|
||||
setTimeout(function(){
|
||||
initDarkMode();
|
||||
@ -619,10 +657,6 @@ function progressbar_<%=idname%>(v, m, pc, np, f, t, tr) {
|
||||
};
|
||||
|
||||
function progressbar_multi_<%=idname%>(providers) {
|
||||
if (!providers || !Array.isArray(providers) || providers.length === 0) {
|
||||
return '<span>No Providers</span>';
|
||||
}
|
||||
|
||||
var providerCount = providers.length;
|
||||
var itemWidth;
|
||||
var containerClass = 'sub_providers_container';
|
||||
@ -661,6 +695,7 @@ function progressbar_multi_<%=idname%>(providers) {
|
||||
container += '<div class="sub_provider_item" style="width: ' + itemWidth + '" title="' + titleText + '">' +
|
||||
'<div class="sub_provider_fill ' + bgColorClass + '" style="width: ' + percent + '%"></div>' +
|
||||
'<span class="sub_provider_name">' + providerName + '</span>' +
|
||||
'<span class="sub_provider_percent">' + ' (' + percent + '%)' + '</span>' +
|
||||
'</div>';
|
||||
});
|
||||
|
||||
@ -673,7 +708,7 @@ function progressbar_multi_<%=idname%>(providers) {
|
||||
}
|
||||
|
||||
return container;
|
||||
}
|
||||
};
|
||||
|
||||
function initDragScroll_<%=idname%>() {
|
||||
var container = document.getElementById('sub_providers_<%=idname%>');
|
||||
@ -722,103 +757,93 @@ function initDragScroll_<%=idname%>() {
|
||||
container.addEventListener('dragstart', function(e) {
|
||||
e.preventDefault();
|
||||
});
|
||||
}
|
||||
|
||||
function sub_info_refresh_<%=idname%>()
|
||||
{
|
||||
if (s_<%=idname%>) { clearTimeout(s_<%=idname%>);};
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "sub_info_get")%>', {filename: "<%=filename%>"}, function(x, status) {
|
||||
if (x && x.status == 200 && status.sub_info != "" && status.sub_info != "No Sub Info Found") {
|
||||
retry_<%=idname%> = 0;
|
||||
localStorage.setItem("sub_info_<%=filename%>",JSON.stringify(status));
|
||||
document.getElementById('<%=idname%>').className = "sub_tab_show";
|
||||
|
||||
if (status.providers && Array.isArray(status.providers) && status.providers.length > 0) {
|
||||
if (status.providers.length === 1) {
|
||||
var provider = status.providers[0];
|
||||
document.getElementById('<%=idname%>').innerHTML = progressbar_<%=idname%>(
|
||||
(provider.surplus ? provider.surplus : provider.used),
|
||||
(provider.total),
|
||||
(provider.percent),
|
||||
false, false,
|
||||
(provider.expire),
|
||||
(provider.day_left)
|
||||
);
|
||||
} else {
|
||||
document.getElementById('<%=idname%>').innerHTML = progressbar_multi_<%=idname%>(status.providers);
|
||||
}
|
||||
} else {
|
||||
document.getElementById('<%=idname%>').innerHTML = progressbar_<%=idname%>(
|
||||
(status.surplus ? status.surplus : status.used),
|
||||
(status.total),
|
||||
(status.percent),
|
||||
false, false,
|
||||
(status.expire),
|
||||
(status.day_left)
|
||||
);
|
||||
}
|
||||
} else if ( x && x.status == 200 && status.sub_info == "No Sub Info Found" ) {
|
||||
retry_<%=idname%> = 0;
|
||||
localStorage.setItem("sub_info_<%=filename%>",JSON.stringify(status));
|
||||
document.getElementById('<%=idname%>').className = "sub_tab_show";
|
||||
document.getElementById('<%=idname%>').innerHTML = "<span><%:No Sub Info Found%></span>";
|
||||
} else {
|
||||
if (document.getElementById('<%=idname%>').innerHTML == "" || retry_<%=idname%> > 2) {
|
||||
document.getElementById('<%=idname%>').className = "sub_tab_show";
|
||||
document.getElementById('<%=idname%>').innerHTML = "<span style=color:red><%:Sub Info Get Error%></span>";
|
||||
}
|
||||
if (retry_<%=idname%> > 2) {
|
||||
retry_<%=idname%> = 0;
|
||||
localStorage.removeItem("sub_info_<%=filename%>");
|
||||
} else {
|
||||
retry_<%=idname%> ++;
|
||||
s_<%=idname%> = setTimeout("sub_info_refresh_<%=idname%>()",1000*120);
|
||||
return
|
||||
}
|
||||
};
|
||||
s_<%=idname%> = setTimeout("sub_info_refresh_<%=idname%>()",1000*1800);
|
||||
});
|
||||
};
|
||||
|
||||
function sub_info_get_<%=idname%>()
|
||||
{
|
||||
if (localStorage.getItem("sub_info_<%=filename%>")) {
|
||||
var save_info = JSON.parse(localStorage.getItem("sub_info_<%=filename%>"));
|
||||
document.getElementById('<%=idname%>').className = "sub_tab_show";
|
||||
if (save_info.sub_info == "No Sub Info Found") {
|
||||
document.getElementById('<%=idname%>').innerHTML = "<span><%:No Sub Info Found%></span>";
|
||||
}
|
||||
else {
|
||||
if (save_info.providers && Array.isArray(save_info.providers) && save_info.providers.length > 0) {
|
||||
if (save_info.providers.length === 1) {
|
||||
var provider = save_info.providers[0];
|
||||
document.getElementById('<%=idname%>').innerHTML = progressbar_<%=idname%>(
|
||||
(provider.surplus ? provider.surplus : provider.used),
|
||||
(provider.total),
|
||||
(provider.percent ? provider.percent : 0),
|
||||
false, false,
|
||||
(provider.expire),
|
||||
(provider.day_left ? provider.day_left : 0)
|
||||
);
|
||||
} else {
|
||||
document.getElementById('<%=idname%>').innerHTML = progressbar_multi_<%=idname%>(save_info.providers);
|
||||
}
|
||||
} else {
|
||||
document.getElementById('<%=idname%>').innerHTML = progressbar_<%=idname%>(
|
||||
(save_info.surplus ? save_info.surplus : save_info.used),
|
||||
(save_info.total),
|
||||
(save_info.percent ? save_info.percent : 0),
|
||||
false, false,
|
||||
(save_info.expire),
|
||||
(save_info.day_left ? save_info.day_left : 0)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
sub_info_refresh_<%=idname%>();
|
||||
};
|
||||
s_<%=idname%> = setTimeout("sub_info_refresh_<%=idname%>()",1000*30);
|
||||
function dispaly_progressbar(id, status) {
|
||||
document.getElementById(id).className = "sub_tab_show";
|
||||
if (status && status.providers && status.providers.length > 0) {
|
||||
if (status.providers.length === 1) {
|
||||
var provider = status.providers[0];
|
||||
document.getElementById(id).innerHTML = window["progressbar_" + id](
|
||||
(provider.surplus ? provider.surplus : provider.used),
|
||||
(provider.total),
|
||||
(provider.percent),
|
||||
false, false,
|
||||
(provider.expire),
|
||||
(provider.day_left)
|
||||
);
|
||||
} else {
|
||||
document.getElementById(id).innerHTML = window["progressbar_multi_" + id](status.providers);
|
||||
}
|
||||
} else {
|
||||
document.getElementById(id).innerHTML = "<span><%:No Sub Info Found%></span>";
|
||||
}
|
||||
};
|
||||
|
||||
function sub_info_refresh_<%=idname%>(force) {
|
||||
if (s_<%=idname%>) { clearTimeout(s_<%=idname%>);};
|
||||
|
||||
if (force) {
|
||||
localStorage.removeItem("sub_info_<%=filename%>");
|
||||
}
|
||||
|
||||
var save_info = (localStorage.getItem("sub_info_<%=filename%>")) ? JSON.parse(localStorage.getItem("sub_info_<%=filename%>")) : null;
|
||||
var shouldFetchNew = true;
|
||||
if (save_info && !force) {
|
||||
dispaly_progressbar('<%=idname%>', save_info);
|
||||
if (save_info.get_time) {
|
||||
var currentTime = Math.floor(Date.now() / 1000);
|
||||
var cacheTime = parseInt(save_info.get_time);
|
||||
var timeDiff = currentTime - cacheTime;
|
||||
var halfHourInSeconds = 30 * 60;
|
||||
|
||||
if (timeDiff <= halfHourInSeconds) {
|
||||
shouldFetchNew = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (retry_<%=idname%> >= 3) {
|
||||
localStorage.removeItem("sub_info_<%=filename%>");
|
||||
retry_<%=idname%> = 0;
|
||||
shouldFetchNew = false;
|
||||
}
|
||||
|
||||
if (!shouldFetchNew) {
|
||||
s_<%=idname%> = setTimeout("sub_info_refresh_<%=idname%>(false)", 60000*15);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!save_info) {
|
||||
document.getElementById('<%=idname%>').className = "sub_tab_show";
|
||||
document.getElementById('<%=idname%>').innerHTML = "<span><%:Collecting data...%></span>";
|
||||
}
|
||||
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "sub_info_get")%>', {filename: "<%=filename%>"}, function(x, status) {
|
||||
var needsErrorHandling = false;
|
||||
if (x && x.status == 200 && status.providers) {
|
||||
var save_info_length = (save_info && save_info.providers) ? save_info.providers.length : 0;
|
||||
var newProvidersLength = (status && status.providers) ? status.providers.length : 0;
|
||||
if (save_info_length !== newProvidersLength && save_info_length > newProvidersLength) {
|
||||
needsErrorHandling = true;
|
||||
}
|
||||
|
||||
if (!needsErrorHandling) {
|
||||
retry_<%=idname%> = 0;
|
||||
localStorage.setItem("sub_info_<%=filename%>", JSON.stringify(status));
|
||||
dispaly_progressbar('<%=idname%>', status);
|
||||
}
|
||||
} else {
|
||||
needsErrorHandling = true;
|
||||
};
|
||||
|
||||
if (needsErrorHandling && retry_<%=idname%> <= 2) {
|
||||
retry_<%=idname%>++;
|
||||
s_<%=idname%> = setTimeout("sub_info_refresh_<%=idname%>(false)", 15000);
|
||||
} else {
|
||||
s_<%=idname%> = setTimeout("sub_info_refresh_<%=idname%>(false)", 60000*15);
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
function set_subinfo_url_<%=idname%>(btn, filename) {
|
||||
@ -872,14 +897,12 @@ function set_subinfo_url_<%=idname%>(btn, filename) {
|
||||
|
||||
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "set_subinfo_url")%>', {filename: filename, url: new_url}, function(x, status) {
|
||||
if (x && x.status == 200 && status.info == "Success") {
|
||||
sub_info_refresh_<%=idname%>();
|
||||
sub_info_refresh_<%=idname%>(true);
|
||||
alert("<%:Specify subscribe infos sources url successfully!%>");
|
||||
}
|
||||
else if (x && x.status == 200 && status.info == "Delete success") {
|
||||
sub_info_refresh_<%=idname%>();
|
||||
} else if (x && x.status == 200 && status.info == "Delete success") {
|
||||
sub_info_refresh_<%=idname%>(true);
|
||||
alert("<%:Delete Specify Subscribe infos sources url successfully!%>");
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
alert("<%:Specify subscribe infos sources url failed:%>\n" + status.info);
|
||||
}
|
||||
});
|
||||
|
||||
@ -2393,9 +2393,6 @@ msgstr "Información de suscripción"
|
||||
msgid "No Sub Info Found"
|
||||
msgstr "No se ha encontrado información de suscripción"
|
||||
|
||||
msgid "Sub Info Get Error"
|
||||
msgstr "Error al obtener la información de suscripción"
|
||||
|
||||
msgid "Router-Self Proxy"
|
||||
msgstr "Proxy para tráfico del propio router"
|
||||
|
||||
|
||||
@ -2391,9 +2391,6 @@ msgstr "订阅信息"
|
||||
msgid "No Sub Info Found"
|
||||
msgstr "无订阅信息"
|
||||
|
||||
msgid "Sub Info Get Error"
|
||||
msgstr "订阅信息获取失败"
|
||||
|
||||
msgid "Router-Self Proxy"
|
||||
msgstr "*路由本机代理"
|
||||
|
||||
|
||||
@ -1042,10 +1042,10 @@ firewall_lan_ac_traffic()
|
||||
rule_target_v4="! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}"
|
||||
output_rule_target_v4="! -d ${fakeip_range} ${src_ip} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}"
|
||||
|
||||
rule_target_v6_="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}"
|
||||
output_rule_target_v6_="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}"
|
||||
rule_target_v6="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}"
|
||||
output_rule_target_v6="! -d ${fakeip_range6} ${src_ip} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}"
|
||||
rule_target_v6_="! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}"
|
||||
output_rule_target_v6_="! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target_} -m comment --comment ${comment}"
|
||||
rule_target_v6="! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}"
|
||||
output_rule_target_v6="! -d ${fakeip_range6} ${src_ip_v6} ${sport_ipt} ${user_rule} ${interface_rule} ${dscp_ipt} -j ${target} -m comment --comment ${comment}"
|
||||
|
||||
if [ "${family}" == "both" ] || [ "${family}" == "ipv4" ]; then
|
||||
if [ -z "${en_mode_tun}" ] || [ "${en_mode_tun}" -eq 2 ]; then
|
||||
@ -3868,7 +3868,6 @@ stop_service()
|
||||
rm -rf /tmp/clash_last_version \
|
||||
/tmp/openclash_last_version \
|
||||
/tmp/openclash.change \
|
||||
/tmp/openclash_debug.log \
|
||||
/tmp/openclash_announcement \
|
||||
${DNSMASQ_CONF_DIR}/dnsmasq_openclash_chnroute_pass.conf \
|
||||
${DNSMASQ_CONF_DIR}/dnsmasq_openclash_chnroute6_pass.conf \
|
||||
|
||||
@ -84,19 +84,22 @@ module YAML
|
||||
indent = $1
|
||||
value = $2.strip
|
||||
if value.empty?
|
||||
in_short_id = true
|
||||
(short_id_index + 1...lines.size).each do |i|
|
||||
line = lines[i]
|
||||
next if line.strip.empty?
|
||||
if line[/^\s*/].length <= short_id_indent_len
|
||||
break
|
||||
end
|
||||
if line =~ LIST_ITEM_REGEX
|
||||
if in_short_id
|
||||
indent = $1
|
||||
value = $2.strip
|
||||
if value !~ QUOTED_VALUE_REGEX
|
||||
lines[i] = "#{indent}- \"#{value}\"\n"
|
||||
end
|
||||
indent = $1
|
||||
value = $2.strip
|
||||
if value =~ KEY_REGEX
|
||||
break
|
||||
end
|
||||
if value !~ QUOTED_VALUE_REGEX
|
||||
lines[i] = "#{indent}- \"#{value}\"\n"
|
||||
end
|
||||
elsif line =~ KEY_REGEX
|
||||
in_short_id = false
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
@ -72,13 +72,13 @@ config_download()
|
||||
LOG_TIP "Config File【$name】Downloading User-Agent【$sub_ua】..."
|
||||
if [ -n "$subscribe_url_param" ] && [ -n "$c_address" ]; then
|
||||
LOG_INFO "Config File【$name】Downloading URL【$c_address$subscribe_url_param】..."
|
||||
DOWNLOAD_URL="${c_address}${subscribe_url_param}"
|
||||
DOWNLOAD_PARAM="$sub_ua"
|
||||
local DOWNLOAD_URL="${c_address}${subscribe_url_param}"
|
||||
local DOWNLOAD_PARAM="$sub_ua"
|
||||
fi
|
||||
if [ -z "$DOWNLOAD_URL" ]; then
|
||||
LOG_INFO "Config File【$name】Downloading URL【$subscribe_url】..."
|
||||
DOWNLOAD_URL="${subscribe_url}"
|
||||
DOWNLOAD_PARAM="$sub_ua"
|
||||
local DOWNLOAD_URL="${subscribe_url}"
|
||||
local DOWNLOAD_PARAM="$sub_ua"
|
||||
fi
|
||||
DOWNLOAD_FILE_CURL "$DOWNLOAD_URL" "$CFG_FILE" "$CONFIG_FILE" "$DOWNLOAD_PARAM"
|
||||
DOWNLOAD_RESULT=$?
|
||||
@ -395,9 +395,9 @@ sub_info_get()
|
||||
if [ "$sub_convert" -eq 0 ]; then
|
||||
subscribe_url=$address
|
||||
elif [ "$sub_convert" -eq 1 ] && [ -n "$template" ]; then
|
||||
while read line
|
||||
do
|
||||
subscribe_url=$([ -n "$subscribe_url" ] && echo "$subscribe_url|")$(urlencode "$line")
|
||||
while IFS= read -r line; do
|
||||
line=$(echo "$line" | tr -d '\r')
|
||||
subscribe_url=$([ -n "$subscribe_url" ] && echo "$subscribe_url|")$(urlencode "$line")
|
||||
done < <(echo "$address")
|
||||
if [ "$template" != "0" ]; then
|
||||
template_path=$(grep "^$template," /usr/share/openclash/res/sub_ini.list |awk -F ',' '{print $3}' 2>/dev/null)
|
||||
|
||||
@ -228,7 +228,7 @@ LOG_ERROR()
|
||||
{
|
||||
if [ -n "${1}" ]; then
|
||||
echo -e "${1}" > $START_LOG
|
||||
echo -e "${LOGTIME} [error] ${1}" >> $LOG_FILE
|
||||
echo -e "${LOGTIME} [Error] ${1}" >> $LOG_FILE
|
||||
fi
|
||||
}
|
||||
|
||||
@ -236,7 +236,7 @@ LOG_TIP()
|
||||
{
|
||||
if [ -n "${1}" ]; then
|
||||
echo -e "${1}" > $START_LOG
|
||||
echo -e "${LOGTIME} [tip] ${1}" >> $LOG_FILE
|
||||
echo -e "${LOGTIME} [Tip] ${1}" >> $LOG_FILE
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@ -182,6 +182,8 @@ done >/dev/null 2>&1
|
||||
|
||||
#check the clash service status
|
||||
if ! ubus call service list '{"name":"openclash"}' 2>/dev/null | jsonfilter -e '@.openclash.instances.*.running' | grep -q 'true'; then
|
||||
uci -q set openclash.config.enable=0
|
||||
uci -q commit openclash
|
||||
/etc/init.d/openclash stop >/dev/null 2>&1
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@ -2,11 +2,5 @@
|
||||
|
||||
uci_get_config() {
|
||||
local key="$1"
|
||||
local val
|
||||
val=$(uci -q get openclash.@overwrite[0]."$key" 2>/dev/null)
|
||||
if [ -n "$val" ]; then
|
||||
echo "$val"
|
||||
else
|
||||
uci -q get openclash.config."$key"
|
||||
fi
|
||||
uci -q get openclash.@overwrite[0]."$key" || uci -q get openclash.config."$key"
|
||||
}
|
||||
@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-openclaw
|
||||
PKG_VERSION:=$(strip $(shell cat $(CURDIR)/VERSION 2>/dev/null || echo "1.0.0"))
|
||||
PKG_RELEASE:=6
|
||||
PKG_RELEASE:=7
|
||||
|
||||
PKG_MAINTAINER:=10000ge10000 <10000ge10000@users.noreply.github.com>
|
||||
PKG_LICENSE:=GPL-3.0
|
||||
|
||||
@ -481,8 +481,7 @@ function action_uninstall()
|
||||
sys.exec("rm -f /tmp/openclaw-setup.* /tmp/openclaw-update.log /tmp/openclaw-plugin-upgrade.* /var/run/openclaw*.pid")
|
||||
-- 清理 LuCI 缓存
|
||||
sys.exec("rm -f /tmp/luci-indexcache /tmp/luci-modulecache/* 2>/dev/null")
|
||||
-- 删除 openclaw 系统用户
|
||||
sys.exec("sed -i '/^openclaw:/d' /etc/passwd /etc/shadow /etc/group 2>/dev/null")
|
||||
-- 注意:不再删除 openclaw 系统用户,因为环境卸载后重新安装时需要该用户,且避免产生孤儿文件导致权限问题
|
||||
|
||||
http.prepare_content("application/json")
|
||||
http.write_json({
|
||||
@ -1150,15 +1149,17 @@ function action_wechat_install()
|
||||
"echo '开始安装微信插件...' > /tmp/openclaw-wechat-install.log; " ..
|
||||
"echo '安装路径: %s' >> /tmp/openclaw-wechat-install.log; " ..
|
||||
"cd %s && " ..
|
||||
"su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
|
||||
"%s -y @tencent-weixin/openclaw-weixin-cli install' >> /tmp/openclaw-wechat-install.log 2>&1; " ..
|
||||
"su -s /bin/sh -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH; cd %s && " ..
|
||||
"npm config set cache %s/.npm && " ..
|
||||
"npx -y @tencent-weixin/openclaw-weixin-cli install' openclaw >> /tmp/openclaw-wechat-install.log 2>&1; " ..
|
||||
"RC=$?; echo $RC > /tmp/openclaw-wechat-install.exit; " ..
|
||||
"if [ $RC -eq 0 ]; then echo '✅ 微信插件安装成功!' >> /tmp/openclaw-wechat-install.log; " ..
|
||||
"else echo '❌ 安装失败 (exit: '$RC')' >> /tmp/openclaw-wechat-install.log; fi " ..
|
||||
") & echo $! > /tmp/openclaw-wechat-install.pid",
|
||||
install_path, oc_data, oc_data, oc_data, oc_data, install_path, install_path, npx_bin
|
||||
) sys.exec(install_cmd)
|
||||
install_path, oc_data, oc_data, oc_data, oc_data, install_path, install_path, oc_data, oc_data
|
||||
)
|
||||
sys.exec(install_cmd)
|
||||
|
||||
http.prepare_content("application/json")
|
||||
http.write_json({ status = "ok", message = "微信插件安装已在后台启动..." })
|
||||
@ -1255,21 +1256,21 @@ function action_wechat_login()
|
||||
-- 清理旧状态和可能的残留进程
|
||||
sys.exec("kill -9 $(cat /tmp/openclaw-wechat-login.pid 2>/dev/null) 2>/dev/null")
|
||||
sys.exec("pkill -f 'channels login --channel openclaw-weixin' 2>/dev/null")
|
||||
sys.exec("rm -f /tmp/openclaw-wechat-qrcode.txt /tmp/openclaw-wechat-login.pid /tmp/openclaw-wechat-login.exit /tmp/openclaw-wechat-restarted") -- 后台启动登录流程,将二维码输出到文件
|
||||
sys.exec("rm -f /tmp/openclaw-wechat-qrcode.txt /tmp/openclaw-wechat-login.pid /tmp/openclaw-wechat-login.exit /tmp/openclaw-wechat-restarted")
|
||||
|
||||
-- 后台启动登录流程,将二维码输出到文件
|
||||
local login_cmd = string.format(
|
||||
"( " ..
|
||||
"echo '正在启动微信登录...' > /tmp/openclaw-wechat-qrcode.txt; " ..
|
||||
"echo '安装路径: %s' >> /tmp/openclaw-wechat-qrcode.txt; " ..
|
||||
"cd %s && " ..
|
||||
"su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
|
||||
"%s %s channels login --channel openclaw-weixin' >> /tmp/openclaw-wechat-qrcode.txt 2>&1; " ..
|
||||
"echo $? > /tmp/openclaw-wechat-login.exit; " ..
|
||||
") >/dev/null 2>&1 & echo $! > /tmp/openclaw-wechat-login.pid",
|
||||
install_path, oc_data, oc_data, oc_data, oc_data, oc_data, install_path, install_path, node_bin, oc_entry
|
||||
) sys.exec(login_cmd)
|
||||
|
||||
http.prepare_content("application/json")
|
||||
"su -s /bin/sh -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
|
||||
"cd %s && %s %s channels login --channel openclaw-weixin' openclaw >> /tmp/openclaw-wechat-qrcode.txt 2>&1; " ..
|
||||
"echo $? > /tmp/openclaw-wechat-login.exit; " ..
|
||||
") >/dev/null 2>&1 & echo $! > /tmp/openclaw-wechat-login.pid",
|
||||
install_path, oc_data, oc_data, oc_data, oc_data, oc_data, install_path, install_path, oc_data, node_bin, oc_entry
|
||||
) sys.exec(login_cmd) http.prepare_content("application/json")
|
||||
http.write_json({ status = "ok", message = "微信登录流程已启动" })
|
||||
end
|
||||
|
||||
@ -1314,7 +1315,9 @@ function action_wechat_login_status()
|
||||
local qrcode_url = ""
|
||||
for url in qrcode:gmatch("https?://[^\n\r]+") do
|
||||
qrcode_url = url
|
||||
end -- 检查是否登录成功
|
||||
end
|
||||
|
||||
-- 检查是否登录成功
|
||||
local logged_in = qrcode:find("登录成功") ~= nil or qrcode:find("成功登录") ~= nil or qrcode:find("Login success") ~= nil or qrcode:find("Logged in") ~= nil
|
||||
|
||||
local state = "idle"
|
||||
@ -1333,7 +1336,7 @@ function action_wechat_login_status()
|
||||
-- 如果刚登录成功,触发一次重启,确保主进程加载微信
|
||||
if state == "success" and not nixio.fs.stat("/tmp/openclaw-wechat-restarted", "type") then
|
||||
sys.exec("touch /tmp/openclaw-wechat-restarted")
|
||||
sys.exec("/etc/init.d/openclaw restart &")
|
||||
sys.exec("/etc/init.d/openclaw restart_gateway >/dev/null 2>&1 &")
|
||||
end http.prepare_content("application/json")
|
||||
http.write_json({
|
||||
status = "ok",
|
||||
@ -1459,17 +1462,16 @@ function action_wechat_upgrade_plugin()
|
||||
"echo '正在升级微信插件...' > /tmp/openclaw-wechat-install.log; " ..
|
||||
"echo '安装路径: %s' >> /tmp/openclaw-wechat-install.log; " ..
|
||||
"cd %s && " ..
|
||||
"su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
|
||||
"%s -y @tencent-weixin/openclaw-weixin-cli install' >> /tmp/openclaw-wechat-install.log 2>&1; " ..
|
||||
"RC=$?; echo $RC > /tmp/openclaw-wechat-install.exit; " ..
|
||||
"if [ $RC -eq 0 ]; then echo '✅ 微信插件升级成功!' >> /tmp/openclaw-wechat-install.log; " ..
|
||||
"else echo '❌ 升级失败 (exit: '$RC')' >> /tmp/openclaw-wechat-install.log; fi " ..
|
||||
") & echo $! > /tmp/openclaw-wechat-install.pid",
|
||||
install_path, oc_data, oc_data, oc_data, oc_data, install_path, install_path, npx_bin
|
||||
) sys.exec(upgrade_cmd)
|
||||
|
||||
http.prepare_content("application/json")
|
||||
"su -s /bin/sh -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH; cd %s && " ..
|
||||
"npm config set cache %s/.npm && " ..
|
||||
"npx -y @tencent-weixin/openclaw-weixin-cli install' openclaw >> /tmp/openclaw-wechat-install.log 2>&1; " ..
|
||||
"RC=$?; echo $RC > /tmp/openclaw-wechat-install.exit; " ..
|
||||
"if [ $RC -eq 0 ]; then echo '✅ 微信插件升级成功!' >> /tmp/openclaw-wechat-install.log; " ..
|
||||
"else echo '❌ 升级失败 (exit: '$RC')' >> /tmp/openclaw-wechat-install.log; fi " ..
|
||||
") & echo $! > /tmp/openclaw-wechat-install.pid",
|
||||
install_path, oc_data, oc_data, oc_data, oc_data, install_path, install_path, oc_data, oc_data
|
||||
) sys.exec(upgrade_cmd) http.prepare_content("application/json")
|
||||
http.write_json({ status = "ok", message = "微信插件升级已在后台启动..." })
|
||||
end
|
||||
|
||||
@ -1514,17 +1516,15 @@ function action_wechat_logout()
|
||||
end
|
||||
|
||||
-- 在后台执行 logout
|
||||
local logout_cmd = string.format(
|
||||
"cd %s && su -s /bin/sh openclaw -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
|
||||
"%s %s channels logout --channel openclaw-weixin --account \"%s\"'",
|
||||
oc_data, oc_data, oc_data, oc_data, oc_data, install_path, install_path, node_bin, oc_entry, account_id
|
||||
)
|
||||
|
||||
sys.exec(logout_cmd .. " >/dev/null 2>&1")
|
||||
local logout_cmd = string.format(
|
||||
"su -s /bin/sh -c 'HOME=%s OPENCLAW_HOME=%s OPENCLAW_STATE_DIR=%s/.openclaw OPENCLAW_CONFIG_PATH=%s/.openclaw/openclaw.json " ..
|
||||
"PATH=%s/node/bin:%s/global/bin:$PATH " ..
|
||||
"cd %s && %s %s channels logout --channel openclaw-weixin --account \"%s\"' openclaw",
|
||||
oc_data, oc_data, oc_data, oc_data, install_path, install_path, oc_data, node_bin, oc_entry, account_id
|
||||
) sys.exec(logout_cmd .. " >/dev/null 2>&1")
|
||||
|
||||
-- 重启服务
|
||||
sys.exec("/etc/init.d/openclaw restart &")
|
||||
sys.exec("/etc/init.d/openclaw restart_gateway >/dev/null 2>&1 &")
|
||||
|
||||
http.prepare_content("application/json")
|
||||
http.write_json({ status = "ok", message = "已下线账号: " .. account_id })
|
||||
|
||||
@ -205,15 +205,19 @@ fi
|
||||
# 问题: 旧版本写入的是 "openclaw-qqbot",但实际插件名是 "@tencent-connect/openclaw-qqbot"
|
||||
fix_plugin_config() {
|
||||
local qqbot_ext_dir="${OC_DATA}/.openclaw/extensions/openclaw-qqbot"
|
||||
[ ! -d "$qqbot_ext_dir" ] && return
|
||||
local weixin_ext_dir="${OC_DATA}/.openclaw/extensions/openclaw-weixin"
|
||||
[ ! -d "$qqbot_ext_dir" ] && [ ! -d "$weixin_ext_dir" ] && return
|
||||
[ ! -f "$CONFIG_FILE" ] && return
|
||||
|
||||
"$NODE_BIN" -e "
|
||||
const fs=require('fs');
|
||||
try{
|
||||
const d=JSON.parse(fs.readFileSync('${CONFIG_FILE}','utf8'));
|
||||
if(!d.plugins)d.plugins={};
|
||||
let modified=false;
|
||||
if(!d.plugins)d.plugins={};
|
||||
if(!Array.isArray(d.plugins.allow))d.plugins.allow=[];
|
||||
const hasWechat=fs.existsSync('${weixin_ext_dir}'); if(hasWechat && !d.plugins.allow.includes("@tencent-weixin/openclaw-weixin")) { d.plugins.allow.push("@tencent-weixin/openclaw-weixin"); modified=true; }
|
||||
|
||||
|
||||
// 修复 plugins.allow 数组中的插件名称
|
||||
if(Array.isArray(d.plugins.allow)){
|
||||
|
||||
@ -389,9 +389,34 @@ install_openclaw() {
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_openclaw_user() {
|
||||
if ! id openclaw >/dev/null 2>&1; then
|
||||
echo " 正在创建 openclaw 系统用户..."
|
||||
local OC_UID=1000
|
||||
while grep -q "^[^:]*:x:${OC_UID}:" /etc/passwd 2>/dev/null; do
|
||||
OC_UID=$((OC_UID + 1))
|
||||
done
|
||||
local OC_GID=$OC_UID
|
||||
while grep -q "^[^:]*:x:${OC_GID}:" /etc/group 2>/dev/null; do
|
||||
OC_GID=$((OC_GID + 1))
|
||||
done
|
||||
if ! grep -q "^openclaw:" /etc/passwd 2>/dev/null; then
|
||||
echo "openclaw:x:${OC_UID}:${OC_GID}:openclaw:/opt/openclaw/data:/bin/false" >> /etc/passwd
|
||||
fi
|
||||
if ! grep -q "^openclaw:" /etc/shadow 2>/dev/null; then
|
||||
echo "openclaw:x:0:0:99999:7:::" >> /etc/shadow
|
||||
fi
|
||||
if ! grep -q "^openclaw:" /etc/group 2>/dev/null; then
|
||||
echo "openclaw:x:${OC_GID}:" >> /etc/group
|
||||
fi
|
||||
log_info "用户 openclaw 创建成功"
|
||||
fi
|
||||
}
|
||||
|
||||
init_openclaw() {
|
||||
echo ""
|
||||
echo "=== 初始化 OpenClaw ==="
|
||||
ensure_openclaw_user
|
||||
|
||||
# 创建数据目录
|
||||
ensure_mkdir "$OC_DATA/.openclaw"
|
||||
|
||||
@ -25,12 +25,11 @@ IPSET_BLACK6="passwall_black6"
|
||||
IPSET_WHITE6="passwall_white6"
|
||||
IPSET_BLOCK6="passwall_block6"
|
||||
|
||||
FORCE_INDEX=2
|
||||
|
||||
USE_SHUNT_TCP=0
|
||||
USE_SHUNT_UDP=0
|
||||
|
||||
FWMARK="0x50535732"
|
||||
# ASCII code for PSW1.Use whatever,just not the same.
|
||||
FWMARK="0x50535731"
|
||||
|
||||
ipt=$(command -v iptables-legacy || command -v iptables)
|
||||
ip6t=$(command -v ip6tables-legacy || command -v ip6tables)
|
||||
@ -180,7 +179,8 @@ REDIRECT() {
|
||||
get_jump_ipt() {
|
||||
case "$1" in
|
||||
direct)
|
||||
local mark="-m mark ! --mark 1"
|
||||
local s=""
|
||||
local mark="-m mark ! --mark ${FWMARK}"
|
||||
s="${mark} -j RETURN"
|
||||
echo $s
|
||||
;;
|
||||
@ -1349,7 +1349,7 @@ del_firewall_rule() {
|
||||
ip rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null
|
||||
ip route del local 0.0.0.0/0 dev lo table 999 2>/dev/null
|
||||
|
||||
ip -6 rule del fwmark ${FWMARK} table 999 priority 999 2>/dev/null
|
||||
ip -6 rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null
|
||||
ip -6 route del local ::/0 dev lo table 999 2>/dev/null
|
||||
|
||||
destroy_ipset $IPSET_LOCAL
|
||||
|
||||
@ -26,12 +26,11 @@ NFTSET_BLACK6="passwall_black6"
|
||||
NFTSET_WHITE6="passwall_white6"
|
||||
NFTSET_BLOCK6="passwall_block6"
|
||||
|
||||
FORCE_INDEX=0
|
||||
|
||||
USE_SHUNT_TCP=0
|
||||
USE_SHUNT_UDP=0
|
||||
|
||||
FWMARK="0x50535732"
|
||||
# ASCII code for PSW1.Use whatever,just not the same.
|
||||
FWMARK="0x50535731"
|
||||
|
||||
FWI=$(uci -q get firewall.passwall.path 2>/dev/null)
|
||||
FAKE_IP="198.18.0.0/15"
|
||||
@ -221,10 +220,10 @@ gen_nftset() {
|
||||
[ $# -gt 0 ] || [ ! -t 0 ] && insert_nftset "$nftset_name" "$timeout_argument_element" "$@"
|
||||
}
|
||||
|
||||
get_jump_ipt() {
|
||||
get_jump_nft() {
|
||||
case "$1" in
|
||||
direct)
|
||||
echo "mark != 1 counter return"
|
||||
echo "mark != ${FWMARK} counter return"
|
||||
;;
|
||||
proxy)
|
||||
if [ -n "$2" ] && [ -n "$(echo $2 | grep "^counter")" ]; then
|
||||
@ -447,14 +446,14 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$black6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$gfw6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$shunt6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
||||
}
|
||||
nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\""
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$black_set_name counter drop comment \"$remarks\""
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$gfw_set_name counter drop comment \"$remarks\""
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\""
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${chn_list} "counter drop") comment \"$remarks\""
|
||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$shunt_set_name counter drop comment \"$remarks\""
|
||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\""
|
||||
echolog " - ${msg}屏蔽代理 TCP 端口[${tcp_proxy_drop_ports}]"
|
||||
@ -465,14 +464,14 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$black6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$gfw6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$shunt6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
||||
}
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$black_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$gfw_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$shunt_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
||||
echolog " - ${msg}屏蔽代理 UDP 端口[${udp_proxy_drop_ports}]"
|
||||
@ -497,7 +496,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT) comment \"$remarks\""
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$black_set_name $(REDIRECT) comment \"$remarks\""
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$gfw_set_name $(REDIRECT) comment \"$remarks\""
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list}) comment \"$remarks\""
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_CHN $(get_jump_nft ${chn_list}) comment \"$remarks\""
|
||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$shunt_set_name $(REDIRECT) comment \"$remarks\""
|
||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} $(REDIRECT) comment \"$remarks\""
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} return comment \"$remarks\""
|
||||
@ -508,7 +507,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr $FAKE_IP_6 $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$black6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$gfw6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list}) comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${chn_list}) comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$shunt6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} return comment \"$remarks\"" 2>/dev/null
|
||||
@ -517,7 +516,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} ip daddr $FAKE_IP ${nft_j} comment \"$remarks\""
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$black_set_name ${nft_j} comment \"$remarks\" "
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$gfw_set_name ${nft_j} comment \"$remarks\" "
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "${nft_j}") comment \"$remarks\" "
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${chn_list} "${nft_j}") comment \"$remarks\" "
|
||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$shunt_set_name ${nft_j} comment \"$remarks\""
|
||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ${nft_j} comment \"$remarks\""
|
||||
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY4) comment \"$remarks\""
|
||||
@ -526,7 +525,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"$remarks\""
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$black6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$gfw6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\" "
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${chn_list} "counter jump PSW_RULE") comment \"$remarks\" "
|
||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$shunt6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) comment \"$remarks\"" 2>/dev/null
|
||||
@ -548,7 +547,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} ip daddr $FAKE_IP counter jump PSW_RULE comment \"$remarks\""
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$black_set_name counter jump PSW_RULE comment \"$remarks\""
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$gfw_set_name counter jump PSW_RULE comment \"$remarks\""
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\""
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${chn_list} "counter jump PSW_RULE") comment \"$remarks\""
|
||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$shunt_set_name counter jump PSW_RULE comment \"$remarks\""
|
||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\""
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(REDIRECT $udp_port TPROXY4) comment \"$remarks\""
|
||||
@ -557,7 +556,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"$remarks\""
|
||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$black6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$gfw6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${chn_list} "counter jump PSW_RULE") comment \"$remarks\"" 2>/dev/null
|
||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$shunt6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) comment \"$remarks\"" 2>/dev/null
|
||||
@ -634,7 +633,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACK6 counter drop comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNT6 counter drop comment \"默认\""
|
||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\""
|
||||
}
|
||||
@ -642,7 +641,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr $FAKE_IP counter drop comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_BLACK counter drop comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_SHUNT counter drop comment \"默认\""
|
||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\""
|
||||
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
||||
@ -653,14 +652,14 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr $FAKE_IP_6 counter drop comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_BLACK6 counter drop comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNT6 counter drop comment \"默认\""
|
||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\""
|
||||
}
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr $FAKE_IP counter drop comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_BLACK counter drop comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${CHN_LIST} "counter drop") comment \"默认\""
|
||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_SHUNT counter drop comment \"默认\""
|
||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\""
|
||||
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
||||
@ -690,7 +689,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr $FAKE_IP $(REDIRECT) comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_BLACK $(REDIRECT) comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_GFW $(REDIRECT) comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST}) comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_nft ${CHN_LIST}) comment \"默认\""
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_SHUNT $(REDIRECT) comment \"默认\""
|
||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp $(REDIRECT) comment \"默认\""
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp return comment \"默认\""
|
||||
@ -701,7 +700,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 $(REDIRECT) comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACK6 $(REDIRECT) comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 $(REDIRECT) comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST}) comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${CHN_LIST}) comment \"默认\""
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNT6 $(REDIRECT) comment \"默认\""
|
||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 $(REDIRECT) comment \"默认\""
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 return comment \"默认\""
|
||||
@ -710,7 +709,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j} comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_BLACK ${nft_j} comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_GFW ${nft_j} comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "${nft_j}") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${CHN_LIST} "${nft_j}") comment \"默认\""
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_SHUNT ${nft_j} comment \"默认\""
|
||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j} comment \"默认\""
|
||||
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"默认\""
|
||||
@ -720,7 +719,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACK6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNT6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE comment \"默认\""
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"默认\""
|
||||
@ -743,7 +742,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_BLACK counter jump PSW_RULE comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_GFW counter jump PSW_RULE comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_nft ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_SHUNT counter jump PSW_RULE comment \"默认\""
|
||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\""
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"默认\""
|
||||
@ -753,7 +752,7 @@ load_acl() {
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_BLACK6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNT6 counter jump PSW_RULE comment \"默认\""
|
||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\""
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"默认\""
|
||||
@ -1012,8 +1011,7 @@ add_firewall_rule() {
|
||||
|
||||
nft "add chain $NFTABLE_NAME PSW_DIVERT"
|
||||
nft "flush chain $NFTABLE_NAME PSW_DIVERT"
|
||||
nft "add rule $NFTABLE_NAME PSW_DIVERT meta l4proto tcp socket transparent 1 mark set ${FWMARK} counter accept"
|
||||
nft "add rule $NFTABLE_NAME PSW_DIVERT meta l4proto udp socket transparent 1 mark set ${FWMARK} counter accept"
|
||||
nft "add rule $NFTABLE_NAME PSW_DIVERT meta l4proto { tcp, udp } socket transparent 1 mark set ${FWMARK} counter accept"
|
||||
|
||||
nft "add chain $NFTABLE_NAME PSW_DNS"
|
||||
nft "flush chain $NFTABLE_NAME PSW_DNS"
|
||||
@ -1031,7 +1029,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW_RULE counter meta mark set ct mark"
|
||||
nft "add rule $NFTABLE_NAME PSW_RULE meta mark ${FWMARK} counter return"
|
||||
nft "add rule $NFTABLE_NAME PSW_RULE tcp flags & (fin|syn|rst|ack) == syn counter meta mark set ${FWMARK}"
|
||||
nft "add rule $NFTABLE_NAME PSW_RULE meta l4proto udp ct state new,related counter meta mark set ${FWMARK}"
|
||||
nft "add rule $NFTABLE_NAME PSW_RULE meta l4proto udp ct state { new, related } counter meta mark set ${FWMARK}"
|
||||
nft "add rule $NFTABLE_NAME PSW_RULE counter ct mark set mark"
|
||||
|
||||
#ipv4 tproxy mode and udp
|
||||
@ -1194,7 +1192,7 @@ add_firewall_rule() {
|
||||
nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr $FAKE_IP $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_BLACK $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_PROXY_DROP_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter drop")
|
||||
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_PROXY_DROP_PORTS "tcp dport") $(get_jump_nft ${CHN_LIST} "counter drop")
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_SHUNT $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
||||
@ -1204,7 +1202,7 @@ add_firewall_rule() {
|
||||
nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACK $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_PROXY_DROP_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter drop")
|
||||
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_PROXY_DROP_PORTS "udp dport") $(get_jump_nft ${CHN_LIST} "counter drop")
|
||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNT $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
||||
@ -1245,7 +1243,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr $FAKE_IP counter redirect"
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_BLACK counter redirect"
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_GFW counter redirect"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST})"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_nft ${CHN_LIST})"
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_SHUNT counter redirect"
|
||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter redirect"
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter return"
|
||||
@ -1255,7 +1253,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr $FAKE_IP_6 counter redirect"
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACK6 counter redirect"
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 counter redirect"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST})"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_nft ${CHN_LIST})"
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNT6 counter redirect"
|
||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter redirect"
|
||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter return"
|
||||
@ -1273,7 +1271,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j}"
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_BLACK $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "${nft_j}")"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_nft ${CHN_LIST} "${nft_j}")"
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_SHUNT $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"本机\""
|
||||
@ -1287,7 +1285,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE"
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_BLACK6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_GFW6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_CHN6 $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_CHN6 $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_nft ${CHN_LIST} "counter jump PSW_RULE")"
|
||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_SHUNT6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"本机\""
|
||||
@ -1325,7 +1323,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE"
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACK $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_nft ${CHN_LIST} "counter jump PSW_RULE")"
|
||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNT $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"本机\""
|
||||
@ -1338,7 +1336,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr $FAKE_IP_6 counter jump PSW_RULE"
|
||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_BLACK6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_GFW6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_CHN6 $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_CHN6 $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_nft ${CHN_LIST} "counter jump PSW_RULE")"
|
||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_SHUNT6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"本机\""
|
||||
@ -1384,7 +1382,7 @@ del_firewall_rule() {
|
||||
ip rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null
|
||||
ip route del local 0.0.0.0/0 dev lo table 999 2>/dev/null
|
||||
|
||||
ip -6 rule del fwmark ${FWMARK} table 999 priority 999 2>/dev/null
|
||||
ip -6 rule del fwmark ${FWMARK} lookup 999 priority 999 2>/dev/null
|
||||
ip -6 route del local ::/0 dev lo table 999 2>/dev/null
|
||||
|
||||
destroy_nftset $NFTSET_LOCAL
|
||||
|
||||
@ -128,9 +128,7 @@ destroy_nftset() {
|
||||
|
||||
gen_nft_tables() {
|
||||
if ! nft list table "$NFTABLE_NAME" >/dev/null 2>&1; then
|
||||
local nft_table_file="$TMP_PATH/PSW2_TABLE.nft"
|
||||
# Set the correct priority to fit fw4
|
||||
cat > "$nft_table_file" <<-EOF
|
||||
nft -f - <<-EOF
|
||||
table $NFTABLE_NAME {
|
||||
chain dstnat {
|
||||
type nat hook prerouting priority dstnat - 1; policy accept;
|
||||
@ -146,9 +144,6 @@ gen_nft_tables() {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
nft -f "$nft_table_file"
|
||||
rm -rf "$nft_table_file"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -715,8 +710,7 @@ add_firewall_rule() {
|
||||
|
||||
nft "add chain $NFTABLE_NAME PSW2_DIVERT"
|
||||
nft "flush chain $NFTABLE_NAME PSW2_DIVERT"
|
||||
nft "add rule $NFTABLE_NAME PSW2_DIVERT meta l4proto tcp socket transparent 1 mark set ${FWMARK} counter accept"
|
||||
nft "add rule $NFTABLE_NAME PSW2_DIVERT meta l4proto udp socket transparent 1 mark set ${FWMARK} counter accept"
|
||||
nft "add rule $NFTABLE_NAME PSW2_DIVERT meta l4proto { tcp, udp } socket transparent 1 mark set ${FWMARK} counter accept"
|
||||
|
||||
nft "add chain $NFTABLE_NAME PSW2_DNS"
|
||||
nft "flush chain $NFTABLE_NAME PSW2_DNS"
|
||||
@ -734,7 +728,7 @@ add_firewall_rule() {
|
||||
nft "add rule $NFTABLE_NAME PSW2_RULE counter meta mark set ct mark"
|
||||
nft "add rule $NFTABLE_NAME PSW2_RULE meta mark ${FWMARK} counter return"
|
||||
nft "add rule $NFTABLE_NAME PSW2_RULE tcp flags & (fin|syn|rst|ack) == syn counter meta mark set ${FWMARK}"
|
||||
nft "add rule $NFTABLE_NAME PSW2_RULE meta l4proto udp ct state new,related counter meta mark set ${FWMARK}"
|
||||
nft "add rule $NFTABLE_NAME PSW2_RULE meta l4proto udp ct state { new, related } counter meta mark set ${FWMARK}"
|
||||
nft "add rule $NFTABLE_NAME PSW2_RULE counter ct mark set mark"
|
||||
|
||||
#ipv4 tproxy mode and udp
|
||||
|
||||
@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
PKG_MAINTAINER:=Nick Peng <pymumu@gmail.com>
|
||||
PKG_VERSION:=1.2025.47.2
|
||||
PKG_RELEASE:=3
|
||||
PKG_RELEASE:=4
|
||||
|
||||
LUCI_TITLE:=LuCI for smartdns
|
||||
LUCI_DESCRIPTION:=Provides Luci for smartdns
|
||||
|
||||
@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: 2020-07-02 17:20-0300\n"
|
||||
"PO-Revision-Date: 2026-03-13 14:10+0000\n"
|
||||
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-27 19:47+0000\n"
|
||||
"Last-Translator: Francisco Serrador <fserrador@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationssmartdns/es/>\n"
|
||||
"Language: es\n"
|
||||
@ -531,7 +531,7 @@ msgstr "Ninguno"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:783
|
||||
msgid "Only socks5 proxy support udp server."
|
||||
msgstr "Solo el proxy Socks5 admite el servidor UDP."
|
||||
msgstr "Solo el proxy Socks5 admite el servidor udp."
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:779
|
||||
msgid "Please set proxy server first."
|
||||
@ -627,7 +627,7 @@ msgstr "Nombre del servidor"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:806
|
||||
msgid "Set Specific domain ip address."
|
||||
msgstr "Establecer dirección IP de dominio específico."
|
||||
msgstr "Establecer dirección ip de dominio específico."
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:805
|
||||
msgid "Set Specific domain rule list."
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2026-02-18 15:43+0000\n"
|
||||
"PO-Revision-Date: 2026-03-21 06:23+0000\n"
|
||||
"Last-Translator: Hyeonjeong Lee <h9101654@gmail.com>\n"
|
||||
"Language-Team: Korean <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationssmartdns/ko/>\n"
|
||||
@ -10,7 +10,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.16.1-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791
|
||||
msgid "Additional Args for upstream dns servers"
|
||||
@ -60,11 +60,11 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:228
|
||||
msgid "Bind Device"
|
||||
msgstr ""
|
||||
msgstr "장치 바인딩"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:233
|
||||
msgid "Bind Device Name"
|
||||
msgstr ""
|
||||
msgstr "바인드 장치 이름"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:997
|
||||
msgid "Block domain"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2026-01-27 12:49+0000\n"
|
||||
"PO-Revision-Date: 2026-03-22 17:10+0000\n"
|
||||
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
|
||||
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationssmartdns/sv/>\n"
|
||||
@ -10,7 +10,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.16-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:791
|
||||
msgid "Additional Args for upstream dns servers"
|
||||
@ -500,7 +500,7 @@ msgstr ""
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:999
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1024
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
msgstr "Ingen"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:783
|
||||
msgid "Only socks5 proxy support udp server."
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2026-03-13 14:10+0000\n"
|
||||
"PO-Revision-Date: 2026-03-27 06:10+0000\n"
|
||||
"Last-Translator: EESF-2 <eesf-2@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://hosted.weblate.org/"
|
||||
"projects/openwrt/luciapplicationssmartdns/zh_Hant/>\n"
|
||||
@ -389,7 +389,7 @@ msgstr "IP 集合名稱。"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:1137
|
||||
msgid "If you like this software, please buy me a cup of coffee."
|
||||
msgstr "如果你喜歡此軟體,請買一杯咖啡給我。"
|
||||
msgstr "如果您喜歡此軟體,請買一杯咖啡給我。"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:352
|
||||
msgid "Include Config Files<br>/etc/smartdns/conf.d"
|
||||
@ -603,7 +603,7 @@ msgstr "設定特定網域的規則清單。"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:807
|
||||
msgid "Set Specific ip blacklist."
|
||||
msgstr "設定指定的 ip 黑名單列表。"
|
||||
msgstr "設定指定的 ip 黑名單清單。"
|
||||
|
||||
#: applications/luci-app-smartdns/htdocs/luci-static/resources/view/smartdns/smartdns.js:708
|
||||
msgid "Set TLS hostname to verify."
|
||||
|
||||
@ -3,8 +3,8 @@ msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-08-21 22:06+0200\n"
|
||||
"PO-Revision-Date: 2026-03-05 21:05+0000\n"
|
||||
"Last-Translator: Francisco Serrador <fserrador@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-29 07:12+0000\n"
|
||||
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationstransmission/es/>\n"
|
||||
"Language: es\n"
|
||||
|
||||
@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-10-17 00:31+0200\n"
|
||||
"PO-Revision-Date: 2026-02-15 08:21+0000\n"
|
||||
"PO-Revision-Date: 2026-03-21 06:23+0000\n"
|
||||
"Last-Translator: Hyeonjeong Lee <h9101654@gmail.com>\n"
|
||||
"Language-Team: Korean <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationstransmission/ko/>\n"
|
||||
@ -12,7 +12,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 5.16-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:65
|
||||
msgid "Alternative download speed"
|
||||
@ -52,11 +52,11 @@ msgstr "대역폭 설정"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:174
|
||||
msgid "Binding address IPv4"
|
||||
msgstr ""
|
||||
msgstr "IPv4 바인드 주소"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:176
|
||||
msgid "Binding address IPv6"
|
||||
msgstr ""
|
||||
msgstr "IPv6 바인드 주소"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:86
|
||||
msgid "Block list enabled"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2026-01-25 20:29+0000\n"
|
||||
"PO-Revision-Date: 2026-03-22 17:10+0000\n"
|
||||
"Last-Translator: Kristoffer Grundström <swedishsailfishosuser@tutanota.com>\n"
|
||||
"Language-Team: Swedish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationstransmission/sv/>\n"
|
||||
@ -10,7 +10,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.16-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:65
|
||||
msgid "Alternative download speed"
|
||||
@ -242,7 +242,7 @@ msgstr ""
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:105
|
||||
msgid "Preallocation"
|
||||
msgstr ""
|
||||
msgstr "Fördelning"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:138
|
||||
#, fuzzy
|
||||
|
||||
@ -6,7 +6,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-10-08 14:06+0200\n"
|
||||
"PO-Revision-Date: 2026-03-09 19:10+0000\n"
|
||||
"PO-Revision-Date: 2026-03-27 06:10+0000\n"
|
||||
"Last-Translator: EESF-2 <eesf-2@users.noreply.hosted.weblate.org>\n"
|
||||
"Language-Team: Chinese (Traditional Han script) <https://hosted.weblate.org/"
|
||||
"projects/openwrt/luciapplicationstransmission/zh_Hant/>\n"
|
||||
@ -91,7 +91,7 @@ msgstr "DHT 已啟用"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:151
|
||||
msgid "Debug"
|
||||
msgstr "偵錯"
|
||||
msgstr "除錯"
|
||||
|
||||
#: applications/luci-app-transmission/htdocs/luci-static/resources/view/transmission.js:97
|
||||
msgid "Download directory"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"PO-Revision-Date: 2025-12-30 17:01+0000\n"
|
||||
"Last-Translator: Steve <secure@mail.az>\n"
|
||||
"PO-Revision-Date: 2026-03-23 18:10+0000\n"
|
||||
"Last-Translator: Werner Schleifer <werner.schleifer@gmail.com>\n"
|
||||
"Language-Team: German <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationswatchcat/de/>\n"
|
||||
"Language: de\n"
|
||||
@ -10,7 +10,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.15.1\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94
|
||||
msgid ""
|
||||
@ -182,7 +182,7 @@ msgstr "Ping Paket größe"
|
||||
|
||||
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:27
|
||||
msgid "Ping Reboot"
|
||||
msgstr "Ping neustart"
|
||||
msgstr "Ping-Neustart"
|
||||
|
||||
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:23
|
||||
msgid ""
|
||||
|
||||
@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2026-02-27 01:01+0000\n"
|
||||
"Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
|
||||
"PO-Revision-Date: 2026-03-28 19:26+0000\n"
|
||||
"Last-Translator: Francisco Serrador <fserrador@gmail.com>\n"
|
||||
"Language-Team: Spanish <https://hosted.weblate.org/projects/openwrt/"
|
||||
"luciapplicationswatchcat/es/>\n"
|
||||
"Language: es\n"
|
||||
@ -11,7 +11,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.16.1-dev\n"
|
||||
"X-Generator: Weblate 5.17-dev\n"
|
||||
|
||||
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:94
|
||||
msgid ""
|
||||
@ -156,7 +156,7 @@ msgstr "Interfaz a monitorizar y/o reiniciar"
|
||||
|
||||
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:86
|
||||
msgid "Jumbo: 9000 bytes"
|
||||
msgstr "Jumbo: 9000 bytes"
|
||||
msgstr "Jumbo: 9.000 bytes"
|
||||
|
||||
#: applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js:22
|
||||
msgid "Mode"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user