From: Hannu Nyman Date: Sun, 7 Jan 2018 08:54:24 +0000 (+0200) Subject: Merge pull request #1506 from Borromini/lede-17.01 X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=ff21f2f0a38dbac7411118377d3300a668db7146;hp=6d821070a99a5727d6d57e0af7931a03a3bb5555 Merge pull request #1506 from Borromini/lede-17.01 luci-app-wireguard: move to correct location --- diff --git a/applications/luci-app-wireguard/Makefile b/applications/luci-app-wireguard/Makefile new file mode 100644 index 000000000..92cdcf270 --- /dev/null +++ b/applications/luci-app-wireguard/Makefile @@ -0,0 +1,17 @@ +# +# Copyright (C) 2016-2017 Dan Luedtke +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=WireGuard Status +LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard +LUCI_PKGARCH:=all + +PKG_MAINTAINER:=Dan Luedtke + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-wireguard/luasrc/controller/wireguard.lua b/applications/luci-app-wireguard/luasrc/controller/wireguard.lua new file mode 100644 index 000000000..68a82fe5c --- /dev/null +++ b/applications/luci-app-wireguard/luasrc/controller/wireguard.lua @@ -0,0 +1,8 @@ +-- Copyright 2016-2017 Dan Luedtke +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.wireguard", package.seeall) + +function index() + entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92) +end diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm new file mode 100644 index 000000000..5af6232ae --- /dev/null +++ b/applications/luci-app-wireguard/luasrc/view/wireguard.htm @@ -0,0 +1,209 @@ +<%# + Copyright 2016-2017 Dan Luedtke + Licensed to the public under the Apache License 2.0. +-%> + +<% + local data = { } + local last_device = "" + + local wg_dump = io.popen("wg show all dump") + if wg_dump then + local line + for line in wg_dump:lines() do + local line = string.split(line, "\t") + if not (last_device == line[1]) then + last_device = line[1] + data[line[1]] = { + name = line[1], + public_key = line[3], + listen_port = line[4], + fwmark = line[5], + peers = { } + } + else + local peer = { + public_key = line[2], + endpoint = line[4], + allowed_ips = { }, + latest_handshake = line[6], + transfer_rx = line[7], + transfer_tx = line[8], + persistent_keepalive = line[9] + } + if not (line[4] == '(none)') then + for ipkey, ipvalue in pairs(string.split(line[5], ",")) do + if #ipvalue > 0 then + table.insert(peer['allowed_ips'], ipvalue) + end + end + end + table.insert(data[line[1]].peers, peer) + end + end + end + + if luci.http.formvalue("status") == "1" then + luci.http.prepare_content("application/json") + luci.http.write_json(data) + return + end +-%> + +<%+header%> + + + + +

WireGuard Status

+ +
+<%- +for ikey, iface in pairs(data) do + -%> + <%:Interface%> <%=ikey%> + + + + + + <%- + for pkey, peer in pairs(iface.peers) do + -%> + + + + + <%- + end + -%> +
<%:Configuration%> + + + + +
+   + + <%:Collecting data...%> +
+
<%:Peer%> + + + + +
+
+ ? +
+ <%:Collecting data...%> +
+
+ <%- +end +-%> +
+ +<%+footer%> diff --git a/applications/luci-app-wireguard/po/ja/wireguard.po b/applications/luci-app-wireguard/po/ja/wireguard.po new file mode 100644 index 000000000..5cd7a9003 --- /dev/null +++ b/applications/luci-app-wireguard/po/ja/wireguard.po @@ -0,0 +1,74 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2017-02-28 00:31+0900\n" +"Last-Translator: INAGAKI Hiroshi \n" +"Language-Team: \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.12\n" +"X-Poedit-Basepath: .\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "Allowed IPs" +msgstr "許可されたIP" + +msgid "Collecting data..." +msgstr "データ収集中です..." + +msgid "Configuration" +msgstr "設定" + +msgid "Data Received" +msgstr "受信済みデータ" + +msgid "Data Transmitted" +msgstr "送信済みデータ" + +msgid "Endpoint" +msgstr "エンドポイント" + +msgid "Firewall Mark" +msgstr "ファイアウォール マーク" + +msgid "Interface" +msgstr "インターフェース" + +msgid "Interface does not have a public key!" +msgstr "インターフェースに公開鍵がありません!" + +msgid "Latest Handshake" +msgstr "最新のハンドシェイク" + +msgid "Listen Port" +msgstr "待ち受けポート" + +msgid "Never" +msgstr "無し" + +msgid "Peer" +msgstr "ピア" + +msgid "Persistent Keepalive" +msgstr "永続的なキープアライブ" + +msgid "Public Key" +msgstr "公開鍵" + +msgid "WireGuard Status" +msgstr "WireGuard ステータス" + +msgid "h ago" +msgstr "時間前" + +msgid "m ago" +msgstr "分前" + +msgid "over a day ago" +msgstr "1日以上前" + +msgid "s ago" +msgstr "秒前" diff --git a/applications/luci-app-wireguard/po/pt-br/wireguard.po b/applications/luci-app-wireguard/po/pt-br/wireguard.po new file mode 100644 index 000000000..d3b5059d5 --- /dev/null +++ b/applications/luci-app-wireguard/po/pt-br/wireguard.po @@ -0,0 +1,73 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.11\n" +"Last-Translator: Luiz Angelo Daros de Luca \n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Language: pt_BR\n" + +msgid "Allowed IPs" +msgstr "Endereços IP autorizados" + +msgid "Collecting data..." +msgstr "Coletando dados..." + +msgid "Configuration" +msgstr "Configuração" + +msgid "Data Received" +msgstr "Dados Recebidos" + +msgid "Data Transmitted" +msgstr "Dados Enviados" + +msgid "Endpoint" +msgstr "Equipamento do ponto final" + +msgid "Firewall Mark" +msgstr "Marca do Firewall" + +msgid "Interface" +msgstr "Interface" + +msgid "Interface does not have a public key!" +msgstr "A interface não tem uma chave pública!" + +msgid "Latest Handshake" +msgstr "Última Negociação" + +msgid "Listen Port" +msgstr "Porta de Escuta" + +msgid "Never" +msgstr "Nunca" + +msgid "Peer" +msgstr "Parceiro" + +msgid "Persistent Keepalive" +msgstr "Manter Conexões Abertas (Keepalive)" + +msgid "Public Key" +msgstr "Chave Pública" + +msgid "WireGuard Status" +msgstr "Estado do WireGuard" + +msgid "h ago" +msgstr "horas atrás" + +msgid "m ago" +msgstr "meses atrás" + +msgid "over a day ago" +msgstr "mais de um dia atrás" + +msgid "s ago" +msgstr "segundos atrás" diff --git a/applications/luci-app-wireguard/po/sv/wireguard.po b/applications/luci-app-wireguard/po/sv/wireguard.po new file mode 100644 index 000000000..3422ae91e --- /dev/null +++ b/applications/luci-app-wireguard/po/sv/wireguard.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8\n" + +msgid "Allowed IPs" +msgstr "Tillåtna IP-adresser" + +msgid "Collecting data..." +msgstr "Samlar in data..." + +msgid "Configuration" +msgstr "Konfiguration" + +msgid "Data Received" +msgstr "Mottagen data" + +msgid "Data Transmitted" +msgstr "Överförd data" + +msgid "Endpoint" +msgstr "Slutpunkt" + +msgid "Firewall Mark" +msgstr "Brandväggsmarkering" + +msgid "Interface" +msgstr "Gränssnitt" + +msgid "Interface does not have a public key!" +msgstr "Gränssnittet har inte en publik nyckel!" + +msgid "Latest Handshake" +msgstr "Senaste handskakning" + +msgid "Listen Port" +msgstr "Lyssningsport" + +msgid "Never" +msgstr "Aldrig" + +msgid "Peer" +msgstr "Jämlike" + +msgid "Persistent Keepalive" +msgstr "Hålla vid liv ständigt" + +msgid "Public Key" +msgstr "Publik nyckel" + +msgid "WireGuard Status" +msgstr "Status för WireGuard" + +msgid "h ago" +msgstr "t sedan" + +msgid "m ago" +msgstr "m sedan" + +msgid "over a day ago" +msgstr "över en dag sedan" + +msgid "s ago" +msgstr "s sedan" diff --git a/applications/luci-app-wireguard/po/templates/wireguard.pot b/applications/luci-app-wireguard/po/templates/wireguard.pot new file mode 100644 index 000000000..9ec5c6004 --- /dev/null +++ b/applications/luci-app-wireguard/po/templates/wireguard.pot @@ -0,0 +1,62 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Allowed IPs" +msgstr "" + +msgid "Collecting data..." +msgstr "" + +msgid "Configuration" +msgstr "" + +msgid "Data Received" +msgstr "" + +msgid "Data Transmitted" +msgstr "" + +msgid "Endpoint" +msgstr "" + +msgid "Firewall Mark" +msgstr "" + +msgid "Interface" +msgstr "" + +msgid "Interface does not have a public key!" +msgstr "" + +msgid "Latest Handshake" +msgstr "" + +msgid "Listen Port" +msgstr "" + +msgid "Never" +msgstr "" + +msgid "Peer" +msgstr "" + +msgid "Persistent Keepalive" +msgstr "" + +msgid "Public Key" +msgstr "" + +msgid "WireGuard Status" +msgstr "" + +msgid "h ago" +msgstr "" + +msgid "m ago" +msgstr "" + +msgid "over a day ago" +msgstr "" + +msgid "s ago" +msgstr "" diff --git a/applications/luci-app-wireguard/po/zh-cn/wireguard.po b/applications/luci-app-wireguard/po/zh-cn/wireguard.po new file mode 100644 index 000000000..e873a8389 --- /dev/null +++ b/applications/luci-app-wireguard/po/zh-cn/wireguard.po @@ -0,0 +1,73 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.1\n" +"Last-Translator: liushuyu \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"Language: zh_CN\n" + +msgid "Allowed IPs" +msgstr "允许的 IP" + +msgid "Collecting data..." +msgstr "正在收集数据..." + +msgid "Configuration" +msgstr "配置" + +msgid "Data Received" +msgstr "已接收" + +msgid "Data Transmitted" +msgstr "已发送" + +msgid "Endpoint" +msgstr "传输端点" + +msgid "Firewall Mark" +msgstr "防火墙标识" + +msgid "Interface" +msgstr "接口" + +msgid "Interface does not have a public key!" +msgstr "接口没有配置公钥!" + +msgid "Latest Handshake" +msgstr "上次握手" + +msgid "Listen Port" +msgstr "监听端口" + +msgid "Never" +msgstr "从不" + +msgid "Peer" +msgstr "对端" + +msgid "Persistent Keepalive" +msgstr "Keepalive 间隔(秒)" + +msgid "Public Key" +msgstr "公钥" + +msgid "WireGuard Status" +msgstr "WireGuard 状态" + +msgid "h ago" +msgstr "小时前" + +msgid "m ago" +msgstr "分钟前" + +msgid "over a day ago" +msgstr "超过一天前" + +msgid "s ago" +msgstr "秒前" diff --git a/luci-app-wireguard/Makefile b/luci-app-wireguard/Makefile deleted file mode 100644 index 92cdcf270..000000000 --- a/luci-app-wireguard/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2016-2017 Dan Luedtke -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=WireGuard Status -LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard -LUCI_PKGARCH:=all - -PKG_MAINTAINER:=Dan Luedtke - -include ../../luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-wireguard/luasrc/controller/wireguard.lua b/luci-app-wireguard/luasrc/controller/wireguard.lua deleted file mode 100644 index 68a82fe5c..000000000 --- a/luci-app-wireguard/luasrc/controller/wireguard.lua +++ /dev/null @@ -1,8 +0,0 @@ --- Copyright 2016-2017 Dan Luedtke --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.wireguard", package.seeall) - -function index() - entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92) -end diff --git a/luci-app-wireguard/luasrc/view/wireguard.htm b/luci-app-wireguard/luasrc/view/wireguard.htm deleted file mode 100644 index 5af6232ae..000000000 --- a/luci-app-wireguard/luasrc/view/wireguard.htm +++ /dev/null @@ -1,209 +0,0 @@ -<%# - Copyright 2016-2017 Dan Luedtke - Licensed to the public under the Apache License 2.0. --%> - -<% - local data = { } - local last_device = "" - - local wg_dump = io.popen("wg show all dump") - if wg_dump then - local line - for line in wg_dump:lines() do - local line = string.split(line, "\t") - if not (last_device == line[1]) then - last_device = line[1] - data[line[1]] = { - name = line[1], - public_key = line[3], - listen_port = line[4], - fwmark = line[5], - peers = { } - } - else - local peer = { - public_key = line[2], - endpoint = line[4], - allowed_ips = { }, - latest_handshake = line[6], - transfer_rx = line[7], - transfer_tx = line[8], - persistent_keepalive = line[9] - } - if not (line[4] == '(none)') then - for ipkey, ipvalue in pairs(string.split(line[5], ",")) do - if #ipvalue > 0 then - table.insert(peer['allowed_ips'], ipvalue) - end - end - end - table.insert(data[line[1]].peers, peer) - end - end - end - - if luci.http.formvalue("status") == "1" then - luci.http.prepare_content("application/json") - luci.http.write_json(data) - return - end --%> - -<%+header%> - - - - -

WireGuard Status

- -
-<%- -for ikey, iface in pairs(data) do - -%> - <%:Interface%> <%=ikey%> - - - - - - <%- - for pkey, peer in pairs(iface.peers) do - -%> - - - - - <%- - end - -%> -
<%:Configuration%> - - - - -
-   - - <%:Collecting data...%> -
-
<%:Peer%> - - - - -
-
- ? -
- <%:Collecting data...%> -
-
- <%- -end --%> -
- -<%+footer%> diff --git a/luci-app-wireguard/po/ja/wireguard.po b/luci-app-wireguard/po/ja/wireguard.po deleted file mode 100644 index 5cd7a9003..000000000 --- a/luci-app-wireguard/po/ja/wireguard.po +++ /dev/null @@ -1,74 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2017-02-28 00:31+0900\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Language-Team: \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.12\n" -"X-Poedit-Basepath: .\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "Allowed IPs" -msgstr "許可されたIP" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Configuration" -msgstr "設定" - -msgid "Data Received" -msgstr "受信済みデータ" - -msgid "Data Transmitted" -msgstr "送信済みデータ" - -msgid "Endpoint" -msgstr "エンドポイント" - -msgid "Firewall Mark" -msgstr "ファイアウォール マーク" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Interface does not have a public key!" -msgstr "インターフェースに公開鍵がありません!" - -msgid "Latest Handshake" -msgstr "最新のハンドシェイク" - -msgid "Listen Port" -msgstr "待ち受けポート" - -msgid "Never" -msgstr "無し" - -msgid "Peer" -msgstr "ピア" - -msgid "Persistent Keepalive" -msgstr "永続的なキープアライブ" - -msgid "Public Key" -msgstr "公開鍵" - -msgid "WireGuard Status" -msgstr "WireGuard ステータス" - -msgid "h ago" -msgstr "時間前" - -msgid "m ago" -msgstr "分前" - -msgid "over a day ago" -msgstr "1日以上前" - -msgid "s ago" -msgstr "秒前" diff --git a/luci-app-wireguard/po/pt-br/wireguard.po b/luci-app-wireguard/po/pt-br/wireguard.po deleted file mode 100644 index d3b5059d5..000000000 --- a/luci-app-wireguard/po/pt-br/wireguard.po +++ /dev/null @@ -1,73 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.11\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"Language: pt_BR\n" - -msgid "Allowed IPs" -msgstr "Endereços IP autorizados" - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Configuration" -msgstr "Configuração" - -msgid "Data Received" -msgstr "Dados Recebidos" - -msgid "Data Transmitted" -msgstr "Dados Enviados" - -msgid "Endpoint" -msgstr "Equipamento do ponto final" - -msgid "Firewall Mark" -msgstr "Marca do Firewall" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface does not have a public key!" -msgstr "A interface não tem uma chave pública!" - -msgid "Latest Handshake" -msgstr "Última Negociação" - -msgid "Listen Port" -msgstr "Porta de Escuta" - -msgid "Never" -msgstr "Nunca" - -msgid "Peer" -msgstr "Parceiro" - -msgid "Persistent Keepalive" -msgstr "Manter Conexões Abertas (Keepalive)" - -msgid "Public Key" -msgstr "Chave Pública" - -msgid "WireGuard Status" -msgstr "Estado do WireGuard" - -msgid "h ago" -msgstr "horas atrás" - -msgid "m ago" -msgstr "meses atrás" - -msgid "over a day ago" -msgstr "mais de um dia atrás" - -msgid "s ago" -msgstr "segundos atrás" diff --git a/luci-app-wireguard/po/sv/wireguard.po b/luci-app-wireguard/po/sv/wireguard.po deleted file mode 100644 index 3422ae91e..000000000 --- a/luci-app-wireguard/po/sv/wireguard.po +++ /dev/null @@ -1,62 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8\n" - -msgid "Allowed IPs" -msgstr "Tillåtna IP-adresser" - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Data Received" -msgstr "Mottagen data" - -msgid "Data Transmitted" -msgstr "Överförd data" - -msgid "Endpoint" -msgstr "Slutpunkt" - -msgid "Firewall Mark" -msgstr "Brandväggsmarkering" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "Interface does not have a public key!" -msgstr "Gränssnittet har inte en publik nyckel!" - -msgid "Latest Handshake" -msgstr "Senaste handskakning" - -msgid "Listen Port" -msgstr "Lyssningsport" - -msgid "Never" -msgstr "Aldrig" - -msgid "Peer" -msgstr "Jämlike" - -msgid "Persistent Keepalive" -msgstr "Hålla vid liv ständigt" - -msgid "Public Key" -msgstr "Publik nyckel" - -msgid "WireGuard Status" -msgstr "Status för WireGuard" - -msgid "h ago" -msgstr "t sedan" - -msgid "m ago" -msgstr "m sedan" - -msgid "over a day ago" -msgstr "över en dag sedan" - -msgid "s ago" -msgstr "s sedan" diff --git a/luci-app-wireguard/po/templates/wireguard.pot b/luci-app-wireguard/po/templates/wireguard.pot deleted file mode 100644 index 9ec5c6004..000000000 --- a/luci-app-wireguard/po/templates/wireguard.pot +++ /dev/null @@ -1,62 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Allowed IPs" -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Data Received" -msgstr "" - -msgid "Data Transmitted" -msgstr "" - -msgid "Endpoint" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface does not have a public key!" -msgstr "" - -msgid "Latest Handshake" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Never" -msgstr "" - -msgid "Peer" -msgstr "" - -msgid "Persistent Keepalive" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "WireGuard Status" -msgstr "" - -msgid "h ago" -msgstr "" - -msgid "m ago" -msgstr "" - -msgid "over a day ago" -msgstr "" - -msgid "s ago" -msgstr "" diff --git a/luci-app-wireguard/po/zh-cn/wireguard.po b/luci-app-wireguard/po/zh-cn/wireguard.po deleted file mode 100644 index e873a8389..000000000 --- a/luci-app-wireguard/po/zh-cn/wireguard.po +++ /dev/null @@ -1,73 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.1\n" -"Last-Translator: liushuyu \n" -"Plural-Forms: nplurals=1; plural=0;\n" -"Language: zh_CN\n" - -msgid "Allowed IPs" -msgstr "允许的 IP" - -msgid "Collecting data..." -msgstr "正在收集数据..." - -msgid "Configuration" -msgstr "配置" - -msgid "Data Received" -msgstr "已接收" - -msgid "Data Transmitted" -msgstr "已发送" - -msgid "Endpoint" -msgstr "传输端点" - -msgid "Firewall Mark" -msgstr "防火墙标识" - -msgid "Interface" -msgstr "接口" - -msgid "Interface does not have a public key!" -msgstr "接口没有配置公钥!" - -msgid "Latest Handshake" -msgstr "上次握手" - -msgid "Listen Port" -msgstr "监听端口" - -msgid "Never" -msgstr "从不" - -msgid "Peer" -msgstr "对端" - -msgid "Persistent Keepalive" -msgstr "Keepalive 间隔(秒)" - -msgid "Public Key" -msgstr "公钥" - -msgid "WireGuard Status" -msgstr "WireGuard 状态" - -msgid "h ago" -msgstr "小时前" - -msgid "m ago" -msgstr "分钟前" - -msgid "over a day ago" -msgstr "超过一天前" - -msgid "s ago" -msgstr "秒前"