1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

New interface for Glorytun TCP VPN

This commit is contained in:
Ycarus (Yannick Chabanois) 2020-12-03 11:23:34 +01:00
parent 4a825c5650
commit 9ceaa526a5
23 changed files with 125 additions and 1071 deletions

View file

@ -10,4 +10,5 @@ config glorytun 'vpn'
option mtuauto '1'
option localip '10.255.255.2'
option remoteip '10.255.255.1'
option multiqueue '1'
option multiqueue '1'
option label 'Default VPN'

View file

@ -22,17 +22,18 @@ validate_section() {
uci_validate_section glorytun glorytun "${1}" \
'enable:bool:0' \
'mptcp:bool:0' \
'listener:bool:0' \
'mode:string' \
'key:string' \
'host:host' \
'port:port' \
'dev:string' \
'timeout:uinteger:10000' \
'chacha20:bool:0' \
'proto:string'
}
start_instance() {
local enable key host port dev listener mptcp proto chacha20
local enable key host port dev mptcp proto chacha20 mode multiqueue timeout
validate_section "${1}" || {
_err "validation failed"
@ -71,14 +72,14 @@ start_instance() {
${host:+host "$host"} \
${dev:+dev "$dev"}
[ "${listener}" = "1" ] && procd_append_param command listener
[ "${mode}" = "listener" ] && procd_append_param command listener
[ "${mptcp}" = "1" ] && procd_append_param command mptcp
[ "${chacha20}" = "1" ] && procd_append_param command chacha20
[ "${multiqueue}" = "1" ] && procd_append_param command multiqueue
procd_append_param command \
retry count -1 const 500000 \
timeout 10000 \
timeout ${timeout} \
keepalive count 5 idle 20 interval 2 \
buffer-size 32768

View file

@ -0,0 +1,16 @@
#
# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Interface to Glorytun TCP
LUCI_DEPENDS:=+glorytun
PKG_LICENSE:=GPLv3
#include ../luci/luci.mk
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -0,0 +1,87 @@
'use strict';
'require rpc';
'require form';
'require fs';
'require uci';
'require tools.widgets as widgets';
var callHostHints;
return L.view.extend({
callHostHints: rpc.declare({
object: 'luci-rpc',
method: 'getHostHints',
expect: { '': {} }
}),
load: function() {
return this.callHostHints();
},
render: function(hosts) {
var m, s, o;
m = new form.Map('glorytun', _('Glorytun TCP'));
s = m.section(form.GridSection, 'glorytun', _('Instances'));
s.addremove = true;
s.anonymous = true;
s.nodescriptions = true;
s.tab('general', _('General Settings'));
s.tab('advanced', _('Advanced Settings'));
o = s.taboption('general', form.Flag, 'enable', _('Enabled'));
o.default = o.enabled;
o = s.taboption('general', form.ListValue, 'mode', _('Mode'));
o.value('',_('Client'));
o.value('listener',_('Server'));
o.modalonly = true;
o = s.taboption('general', form.Value, 'host', _('Host'));
o.rmempty = false;
o = s.taboption('general', form.Value, 'port', _('Port'));
o.rmempty = false;
o = s.taboption('general', form.Value, 'key', _('Key'));
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general', form.Value, 'dev', _('Interface name'));
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general', form.Value, 'localip', _('Local IP'));
o.datatype = 'or(ip4addr,ip6addr)';
o.rmempty = false;
o = s.taboption('general', form.Value, 'remoteip', _('Remote IP'));
o.datatype = 'or(ip4addr,ip6addr)';
o.rmempty = false;
o = s.taboption('advanced', form.Flag, 'mptcp', _('MPTCP'));
o.default = o.enabled;
o.modalonly = true;
o = s.taboption('advanced', form.Flag, 'chacha20', _('chacha'), _('Force fallback cipher'));
o.default = o.enabled;
o.modalonly = true;
o = s.taboption('advanced', form.Value, 'timeout', _('Timeout'));
o.default = '10000';
o.rmempty = false;
o.modalonly = true;
o = s.taboption('advanced', form.Flag, 'multiqueue', _('Multiqueue'));
o.default = o.enabled;
o.rmempty = false;
o.modalonly = true;
o = s.taboption('general',form.Value, 'label', _('Label'));
o.rmempty = true;
return m.render();
}
});

View file

@ -0,0 +1,13 @@
{
"admin/vpn/glorytun-tcp": {
"title": "Glorytun TCP",
"order": 60,
"action": {
"type": "view",
"path": "services/glorytun-tcp"
},
"depends": {
"acl": [ "luci-app-glorytun-tcp" ]
}
}
}

View file

@ -1,6 +1,6 @@
{
"luci-app-glorytun": {
"description": "Grant UCI access for luci-app-glorytun",
"luci-app-glorytun-tcp": {
"description": "Grant access to glorytun TCP",
"read": {
"uci": [ "glorytun" ]
},

View file

@ -1,21 +0,0 @@
#
# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
# Copyright (C) 2017-2019 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#
# This is based on OpenVPN LuCI Support.
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for Glorytun
LUCI_DEPENDS:=+glorytun +glorytun-udp
LUCI_PKGARCH:=all
PKG_LICENSE:=GPLv2
PKG_MAINTAINER:=Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
#include ../luci/luci.mk
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

View file

@ -1,14 +0,0 @@
-- Copyright 2018 - 2019 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
-- Licensed to the public under the Apache License 2.0.
module("luci.controller.glorytun", package.seeall)
function index()
if not nixio.fs.access("/etc/config/glorytun") then
return
end
--entry({"admin", "services", "glorytun"}, cbi("glorytun"), _("Glorytun") )
--entry({"admin", "services", "glorytun", "settings"}, cbi("glorytun-settings"), nil ).leaf = true
entry({"admin", "vpn", "glorytun"}, cbi("glorytun"), _("Glorytun") )
entry({"admin", "vpn", "glorytun", "settings"}, cbi("glorytun-settings"), nil ).leaf = true
end

View file

@ -1,83 +0,0 @@
-- Copyright 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
-- Copyright 2008 Steven Barth <steven@midlink.org>
-- Licensed to the public under the Apache License 2.0.
require("luci.ip")
require("luci.model.uci")
local basicParams = {
--
-- Widget, Name, Default(s), Description
--
{ Flag,"enable",0, translate("Enable") },
{ Value,"port",65001, translate("TCP port # for both local and remote") },
{ Value,"dev","tun0", translate("Interface name") },
{ Value,"host","vpnserver.example.org", translate("Remote host name or ip address") },
{ Value,"localip","192.168.99.2", translate("Local tunnel ip address") },
{ Value,"remoteip","192.168.99.1", translate("Remote tunnel ip address") },
{ Value,"key","secretkey", translate("The secret key") },
{ ListValue,"proto",{ "tcp", "udp" }, translate("Protocol") },
{ Flag,"listener",0, translate("Server mode") },
{ Value,"bind","", translate("Bind address") },
--{ Value,"bind-backup","", translate("Bind backup") },
{ Value,"bindport",65002, translate("Bind port") },
{ Value,"mtu",1500, translate("MTU") },
{ Flag,"mtuauto",0, translate("MTU auto") },
{ Flag,"mptcp",0, translate("MPTCP") },
{ Flag,"chacha20",0, translate("Use ChaCha20 stream cipher") }
}
local m = Map("glorytun")
local p = m:section( SimpleSection )
p.template = "glorytun/pageswitch"
p.mode = "settings"
p.instance = arg[1]
local s = m:section( NamedSection, arg[1], "glorytun" )
for _, option in ipairs(basicParams) do
local o = s:option(
option[1], option[2],
option[2], option[4]
)
o.optional = true
if option[1] == DummyValue then
o.value = option[3]
else
if option[1] == DynamicList then
function o.cfgvalue(...)
local val = AbstractValue.cfgvalue(...)
return ( val and type(val) ~= "table" ) and { val } or val
end
end
if type(option[3]) == "table" then
if o.optional then o:value("", "-- remove --") end
for _, v in ipairs(option[3]) do
v = tostring(v)
o:value(v)
end
o.default = tostring(option[3][1])
else
o.default = tostring(option[3])
end
end
for i=5,#option do
if type(option[i]) == "table" then
o:depends(option[i])
end
end
end
return m

View file

@ -1,147 +0,0 @@
-- Copyright 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
-- Copyright 2008 Steven Barth <steven@midlink.org>
-- Licensed to the public under the Apache License 2.0.
local fs = require "nixio.fs"
local sys = require "luci.sys"
local uci = require "luci.model.uci".cursor()
local testfullps = luci.sys.exec("ps --help 2>&1 | grep BusyBox") --check which ps do we have
local psstring = (string.len(testfullps)>0) and "ps w" or "ps axfw" --set command we use to get pid
local m = Map("glorytun", translate("Glorytun"))
local s = m:section( TypedSection, "glorytun", translate("Glorytun instances"), translate("Below is a list of configured Glorytun instances and their current state") )
s.template = "cbi/tblsection"
s.template_addremove = "glorytun/cbi-select-input-add"
s.addremove = true
s.add_select_options = { }
s.add_select_options[''] = ''
s.extedit = luci.dispatcher.build_url(
"admin", "vpn", "glorytun", "settings", "%s"
)
uci:load("glorytun_recipes")
uci:foreach( "glorytun_recipes", "glorytun_recipe",
function(section)
s.add_select_options[section['.name']] =
section['_description'] or section['.name']
end
)
function s.getPID(section) -- Universal function which returns valid pid # or nil
local pid = sys.exec("%s | grep -w %s | grep glorytun | grep -v grep | awk '{print $1}'" % { psstring,section} )
if pid and #pid > 0 and tonumber(pid) ~= nil then
return tonumber(pid)
else
return nil
end
end
function s.parse(self, section)
local recipe = luci.http.formvalue(
luci.cbi.CREATE_PREFIX .. self.config .. "." ..
self.sectiontype .. ".select"
)
if recipe and not s.add_select_options[recipe] then
self.invalid_cts = true
else
TypedSection.parse( self, section )
end
end
function s.create(self, name)
local recipe = luci.http.formvalue(
luci.cbi.CREATE_PREFIX .. self.config .. "." ..
self.sectiontype .. ".select"
)
name = luci.http.formvalue(
luci.cbi.CREATE_PREFIX .. self.config .. "." ..
self.sectiontype .. ".text"
)
if #name > 3 and not name:match("[^a-zA-Z0-9_]") then
--uci:section(
-- "glorytun", "glorytun", name,
-- uci:get_all( "glorytun_recipes", recipe )
--)
local recipe_data = uci:get_all( "glorytun_recipes", recipe )
uci:set("glorytun", name,"glorytun")
local k, v
for k, v in pairs(recipe_data) do
uci:set("glorytun", name, k,v)
end
uci:delete("glorytun", name, "_role")
uci:delete("glorytun", name, "_description")
uci:commit("glorytun")
uci:save("glorytun")
luci.http.redirect( self.extedit:format(name) )
elseif #name > 0 then
self.invalid_cts = true
end
return 0
end
s:option( Flag, "enable", translate("Enabled") )
local active = s:option( DummyValue, "_active", translate("Started") )
function active.cfgvalue(self, section)
local pid = s.getPID(section)
if pid ~= nil then
return (sys.process.signal(pid, 0))
and translatef("yes (%i)", pid)
or translate("no")
end
return translate("no")
end
local updown = s:option( Button, "_updown", translate("Start/Stop") )
updown._state = false
updown.redirect = luci.dispatcher.build_url(
"admin", "vpn", "glorytun"
)
function updown.cbid(self, section)
local pid = s.getPID(section)
self._state = pid ~= nil and sys.process.signal(pid, 0)
self.option = self._state and "stop" or "start"
return AbstractValue.cbid(self, section)
end
function updown.cfgvalue(self, section)
self.title = self._state and "stop" or "start"
self.inputstyle = self._state and "reset" or "reload"
end
local port = s:option( DummyValue, "port", translate("Port") )
function port.cfgvalue(self, section)
local val = AbstractValue.cfgvalue(self, section)
return val or "65001"
end
local dev = s:option( DummyValue, "dev", translate("Interface") )
function dev.cfgvalue(self, section)
local val = AbstractValue.cfgvalue(self, section)
return val or "tun"
end
local proto = s:option( DummyValue, "proto", translate("Protocol") )
function proto.cfgvalue(self, section)
local val = AbstractValue.cfgvalue(self, section)
return val or "tcp"
end
function updown.write(self, section, value)
if self.option == "stop" then
local pid = s.getPID(section)
if pid ~= nil then
sys.process.signal(pid,15)
end
else
local type = proto.cfgvalue(self,section)
luci.sys.call("/etc/init.d/glorytun-udp start %s" % section)
luci.sys.call("/etc/init.d/glorytun start %s" % section)
end
luci.http.redirect( self.redirect )
end
return m

View file

@ -1,11 +0,0 @@
<div class="cbi-section-create">
<% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
<input type="text" class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.text" />
<select class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.select">
<%- for k, v in luci.util.kspairs(self.add_select_options) do %>
<option value="<%=k%>"><%=luci.xml.pcdata(v)%></option>
<% end -%>
</select>
<input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" title="<%:Add%>" />
<% if self.invalid_cts then %><br /><%:Invalid%></div><% end %>
</div>

View file

@ -1,13 +0,0 @@
<%#
Copyright 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
Licensed to the public under the Apache License 2.0.
-%>
<fieldset class="cbi-section">
<legend>
<a href="<%=url('admin/vpn/glorytun')%>"><%:Overview%></a> &raquo;
<%=luci.i18n.translatef("Instance \"%s\"", self.instance)%>
</legend>
</fieldset>

View file

@ -1,104 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2020-10-05 12:39+0000\n"
"Last-Translator: Anonymous <noreply@weblate.org>\n"
"Language-Team: German <http://weblate.openmptcprouter.com/projects/omr/"
"luciapplicationsglorytun/de/>\n"
"Language: de\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 4.0.4\n"
msgid "Add"
msgstr "Hinzufügen"
msgid ""
"Below is a list of configured Glorytun instances and their current state"
msgstr ""
"Nachfolgend eine Liste der konfigurierten Glorytun-Instanzen und ihre "
"aktuelle Status."
msgid "Bind address"
msgstr "Bindungsadresse"
msgid "Bind backup"
msgstr "Alternative Bindungsadresse"
msgid "Bind port"
msgstr "Verbindungs-Port"
msgid "Enable"
msgstr "Aktivieren"
msgid "Enabled"
msgstr "Aktiv"
msgid "Glorytun"
msgstr "Glorytun"
msgid "Glorytun instances"
msgstr "Glorytun-Instanzen"
msgid "Instance \"%s\""
msgstr "Instanz '%s'"
msgid "Interface"
msgstr "Schnittstelle"
msgid "Interface name"
msgstr "Name der Verbindung"
msgid "Invalid"
msgstr "Ungültig"
msgid "Local tunnel ip address"
msgstr "IP-Adresse des lokalen Tunnels"
msgid "MPTCP"
msgstr "MPTCP"
msgid "MTU"
msgstr "MTU"
msgid "MTU auto"
msgstr "automatische MTU"
msgid "Overview"
msgstr "Übersicht"
msgid "Port"
msgstr "Port"
msgid "Protocol"
msgstr "Protokoll"
msgid "Remote host name or ip address"
msgstr "FQDN oder IP-Adresse der Gegenstelle"
msgid "Remote tunnel ip address"
msgstr "Tunnel-IP-Adresse der Gegenstelle"
msgid "Server mode"
msgstr "Server-Modus"
msgid "Start/Stop"
msgstr "Start/Stop"
msgid "Started"
msgstr "gestartet"
msgid "TCP port # for both local and remote"
msgstr "TCP-Port Nummer lokal und gegenüber"
msgid "The secret key"
msgstr "geheimer Schlüssel"
msgid "Use ChaCha20 stream cipher"
msgstr "Stromverschlüsselung 'ChaCha20' nutzen"
msgid "no"
msgstr "nein"
msgid "yes (%i)"
msgstr "ja (%i)"

View file

@ -1,104 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2020-10-07 10:57+0000\n"
"Last-Translator: Weblate Admin <contact@openmptcprouter.com>\n"
"Language-Team: French <http://weblate.openmptcprouter.com/projects/omr/"
"luciapplicationsglorytun/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\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 4.0.4\n"
msgid "Add"
msgstr "Ajouter"
msgid "Below is a list of configured Glorytun instances and their current state"
msgstr "Ci-dessous une liste des instances Glorytun configurées et leur état actuel"
msgid "Bind address"
msgstr "Adresse mappée"
msgid "Bind backup"
msgstr "Lier la sauvegarde"
msgid "Bind port"
msgstr "Port de connexion"
msgid "Enable"
msgstr "Activer"
msgid "Enabled"
msgstr "Activer"
msgid "Glorytun"
msgstr "Glorytun"
msgid "Glorytun instances"
msgstr "Instances de Glorytun"
msgid "Instance \"%s\""
msgstr "Instance \"%s\""
msgid "Interface"
msgstr "Interface"
msgid "Interface name"
msgstr "Nom de l'interface"
msgid "Invalid"
msgstr "Invalide"
msgid "Local tunnel ip address"
msgstr "Adresse IP locale du tunnel"
msgid "MPTCP"
msgstr "MPTCP"
msgid "MTU"
msgstr "MTU"
msgid "MTU auto"
msgstr "MTU auto"
msgid "Overview"
msgstr "Aperçu"
msgid "Port"
msgstr "Port"
msgid "Protocol"
msgstr "Protocole"
msgid "Remote host name or ip address"
msgstr "Nom de l'hôte distant ou adresse IP"
msgid "Remote tunnel ip address"
msgstr "Adresse IP distance du tunnel"
msgid "Server mode"
msgstr "Mode serveur"
msgid "Start/Stop"
msgstr "Marche/Arrêt"
msgid "Started"
msgstr "Démarré"
msgid "TCP port # for both local and remote"
msgstr "Port TCP local et distant"
msgid "The secret key"
msgstr "La clef secréte"
msgid "Use ChaCha20 stream cipher"
msgstr "Utiliser le chiffrement ChaCha20"
msgid "no"
msgstr "non"
msgid "yes (%i)"
msgstr "oui (%i)"

View file

@ -1,104 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2020-09-21 12:51+0000\n"
"Last-Translator: Weblate Admin <contact@openmptcprouter.com>\n"
"Language-Team: Italian <http://weblate.openmptcprouter.com/projects/omr/"
"luciapplicationsglorytun/it/>\n"
"Language: it\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 4.0.4\n"
msgid "Add"
msgstr "Aggiungi"
msgid ""
"Below is a list of configured Glorytun instances and their current state"
msgstr ""
"Di seguito è riportato un elenco di istanze Glorytun configurate e il loro "
"stato corrente"
msgid "Bind address"
msgstr "Associa indirizzo"
msgid "Bind backup"
msgstr "Bind backup"
msgid "Bind port"
msgstr "Bind port"
msgid "Enable"
msgstr "Attivare"
msgid "Enabled"
msgstr "Abilitato"
msgid "Glorytun"
msgstr "Glorytun"
msgid "Glorytun instances"
msgstr "Istanze di Glorytun"
msgid "Instance \"%s\""
msgstr "Istanza \"%s\""
msgid "Interface"
msgstr "Interfaccia"
msgid "Interface name"
msgstr "Nome interfaccia"
msgid "Invalid"
msgstr "Non valido"
msgid "Local tunnel ip address"
msgstr "Indirizzo IP del tunnel locale"
msgid "MPTCP"
msgstr "MPTCP"
msgid "MTU"
msgstr "MTU"
msgid "MTU auto"
msgstr "MTU auto"
msgid "Overview"
msgstr "Panoramica"
msgid "Port"
msgstr "Porta"
msgid "Protocol"
msgstr "Protocollo"
msgid "Remote host name or ip address"
msgstr "Nome host remoto o indirizzo IP"
msgid "Remote tunnel ip address"
msgstr "Indirizzo IP del tunnel remoto"
msgid "Server mode"
msgstr "Modalità server"
msgid "Start/Stop"
msgstr "Marcia/arresto"
msgid "Started"
msgstr "Iniziato"
msgid "TCP port # for both local and remote"
msgstr "Porta TCP # sia per locale che per remoto"
msgid "The secret key"
msgstr "Chiave segreta"
msgid "Use ChaCha20 stream cipher"
msgstr "Usa il cifrario a flusso ChaCha20"
msgid "no"
msgstr "no"
msgid "yes (%i)"
msgstr "Sì (%i)"

View file

@ -1,103 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2020-10-13 07:30+0000\n"
"Last-Translator: Quentin PAGÈS <githubou@quentino.fr>\n"
"Language-Team: Occitan <http://weblate.openmptcprouter.com/projects/omr/"
"luciapplicationsglorytun/oc/>\n"
"Language: oc\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 4.0.4\n"
msgid "Add"
msgstr "Ajustar"
msgid ""
"Below is a list of configured Glorytun instances and their current state"
msgstr ""
"Çai-jos una lista de las instàncias Glorytun configuradas e lor estat actual"
msgid "Bind address"
msgstr "Adreça mapada"
msgid "Bind backup"
msgstr "Associar la salvagarda"
msgid "Bind port"
msgstr "Pòrt de connexion"
msgid "Enable"
msgstr "Activat"
msgid "Enabled"
msgstr "Activat"
msgid "Glorytun"
msgstr "Glorytun"
msgid "Glorytun instances"
msgstr "Instàncias Glorytun"
msgid "Instance \"%s\""
msgstr "Instància « %s»"
msgid "Interface"
msgstr "Interfàcia"
msgid "Interface name"
msgstr "Nom de linterfàcia"
msgid "Invalid"
msgstr "Invalid"
msgid "Local tunnel ip address"
msgstr "Adreça IP locala del tunèl"
msgid "MPTCP"
msgstr "MPTCP"
msgid "MTU"
msgstr "MTU"
msgid "MTU auto"
msgstr "MTU auto"
msgid "Overview"
msgstr "Apercebut"
msgid "Port"
msgstr "Pòrt"
msgid "Protocol"
msgstr "Protocòl"
msgid "Remote host name or ip address"
msgstr "Nom de lòste alonhat o adreça IP"
msgid "Remote tunnel ip address"
msgstr "Adreça IP alonhada del tunèl"
msgid "Server mode"
msgstr "Mòde servidor"
msgid "Start/Stop"
msgstr "Aviar/Arrestar"
msgid "Started"
msgstr "Aviat"
msgid "TCP port # for both local and remote"
msgstr "Pòrt TCP local e alonhat"
msgid "The secret key"
msgstr "La clau secrèta"
msgid "Use ChaCha20 stream cipher"
msgstr "Utilizar lo chiframent ChaCha20"
msgid "no"
msgstr "non"
msgid "yes (%i)"
msgstr "òc (%i)"

View file

@ -1,93 +0,0 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "Add"
msgstr ""
msgid ""
"Below is a list of configured Glorytun instances and their current state"
msgstr ""
msgid "Bind address"
msgstr ""
msgid "Bind backup"
msgstr ""
msgid "Bind port"
msgstr ""
msgid "Enable"
msgstr ""
msgid "Enabled"
msgstr ""
msgid "Glorytun"
msgstr ""
msgid "Glorytun instances"
msgstr ""
msgid "Instance \"%s\""
msgstr ""
msgid "Interface"
msgstr ""
msgid "Interface name"
msgstr ""
msgid "Invalid"
msgstr ""
msgid "Local tunnel ip address"
msgstr ""
msgid "MPTCP"
msgstr ""
msgid "MTU"
msgstr ""
msgid "MTU auto"
msgstr ""
msgid "Overview"
msgstr ""
msgid "Port"
msgstr ""
msgid "Protocol"
msgstr ""
msgid "Remote host name or ip address"
msgstr ""
msgid "Remote tunnel ip address"
msgstr ""
msgid "Server mode"
msgstr ""
msgid "Start/Stop"
msgstr ""
msgid "Started"
msgstr ""
msgid "TCP port # for both local and remote"
msgstr ""
msgid "The secret key"
msgstr ""
msgid "Use ChaCha20 stream cipher"
msgstr ""
msgid "no"
msgstr ""
msgid "yes (%i)"
msgstr ""

View file

@ -1,102 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2020-06-27 17:26+0000\n"
"Last-Translator: antrouter <xinyangla@188.com>\n"
"Language-Team: Chinese (Simplified) <http://weblate.openmptcprouter.com/"
"projects/omr/luciapplicationsglorytun/zh_Hans/>\n"
"Language: zh_Hans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.0.4\n"
msgid "Add"
msgstr "添加"
msgid ""
"Below is a list of configured Glorytun instances and their current state"
msgstr "以下是已配置的Glorytun实例及其当前状态的列表"
msgid "Bind address"
msgstr "绑定地址"
msgid "Bind backup"
msgstr "绑定备份"
msgid "Bind port"
msgstr "绑定端口"
msgid "Enable"
msgstr "开启"
msgid "Enabled"
msgstr "开启"
msgid "Glorytun"
msgstr "Glorytun(隧道)"
msgid "Glorytun instances"
msgstr "Glorytun实例"
msgid "Instance \"%s\""
msgstr "实例\"%s\""
msgid "Interface"
msgstr "接口"
msgid "Interface name"
msgstr "网卡名称"
msgid "Invalid"
msgstr "无效"
msgid "Local tunnel ip address"
msgstr "本地隧道IP地址"
msgid "MPTCP"
msgstr "MPTCP"
msgid "MTU"
msgstr "MTU"
msgid "MTU auto"
msgstr "自动MTU"
msgid "Overview"
msgstr "概况"
msgid "Port"
msgstr "端口"
msgid "Protocol"
msgstr "协议"
msgid "Remote host name or ip address"
msgstr "远程主机名或IP地址"
msgid "Remote tunnel ip address"
msgstr "远程隧道IP地址"
msgid "Server mode"
msgstr "服务器模式"
msgid "Start/Stop"
msgstr "开始/停止"
msgid "Started"
msgstr "开始了"
msgid "TCP port # for both local and remote"
msgstr "本地和远程的TCP端口号"
msgid "The secret key"
msgstr "秘钥"
msgid "Use ChaCha20 stream cipher"
msgstr "使用ChaCha20流密码"
msgid "no"
msgstr "不"
msgid "yes (%i)"
msgstr "是(%i)"

View file

@ -1,102 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2020-07-09 07:31+0000\n"
"Last-Translator: antrouter <xinyangla@188.com>\n"
"Language-Team: Chinese (Traditional) <http://weblate.openmptcprouter.com/"
"projects/omr/luciapplicationsglorytun/zh_Hant/>\n"
"Language: zh_Hant\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.0.4\n"
msgid "Add"
msgstr "添加"
msgid ""
"Below is a list of configured Glorytun instances and their current state"
msgstr "以下是已配置的Glorytun實例及其當前狀態的列表"
msgid "Bind address"
msgstr "綁定地址"
msgid "Bind backup"
msgstr "綁定地址"
msgid "Bind port"
msgstr "綁定端口"
msgid "Enable"
msgstr "啟用"
msgid "Enabled"
msgstr "啟用"
msgid "Glorytun"
msgstr "Glorytun隧道"
msgid "Glorytun instances"
msgstr "Glorytun實例"
msgid "Instance \"%s\""
msgstr "實例\"%s\""
msgid "Interface"
msgstr "接口"
msgid "Interface name"
msgstr "接口名稱"
msgid "Invalid"
msgstr "無效"
msgid "Local tunnel ip address"
msgstr "本地隧道IP地址"
msgid "MPTCP"
msgstr "MPTCP協議"
msgid "MTU"
msgstr "MTU"
msgid "MTU auto"
msgstr "自動MTU"
msgid "Overview"
msgstr "總覽"
msgid "Port"
msgstr "端口"
msgid "Protocol"
msgstr "協議"
msgid "Remote host name or ip address"
msgstr "遠程主機名或IP地址"
msgid "Remote tunnel ip address"
msgstr "遠程隧道IP地址"
msgid "Server mode"
msgstr "服務器模式"
msgid "Start/Stop"
msgstr "開始/停止"
msgid "Started"
msgstr "已開始"
msgid "TCP port # for both local and remote"
msgstr "本地和遠程的TCP端口號"
msgid "The secret key"
msgstr "秘鑰"
msgid "Use ChaCha20 stream cipher"
msgstr "使用ChaCha20流密碼"
msgid "no"
msgstr "沒有"
msgid "yes (%i)"
msgstr "是(%i)"

View file

@ -1,50 +0,0 @@
config glorytun_recipe servertcp
option _description "Simple TCP server configuration"
option _role "server"
option port "65001"
option dev "tun0"
option key "secretkey"
option listener "1"
option localip "192.168.99.1"
option remoteip "192.168.99.2"
option proto "tcp"
option enable "0"
config glorytun_recipe clienttcp
option _description "Simple TCP client configuration"
option _role "client"
option port "65001"
option dev "tun0"
option host "vpnserver.example.org"
option key "secretkey"
option localip "192.168.99.2"
option remoteip "192.168.99.1"
option proto "tcp"
option enable "0"
config glorytun_recipe serverudp
option _description "Simple UDP server configuration"
option _role "server"
option dev "tun0"
option bindport "65003"
option bind "192.168.99.1"
option key "secretkey"
option localip "192.168.99.1"
option remoteip "192.168.99.2"
option proto "udp"
option mtuauto "1"
option enable "0"
config glorytun_recipe clientudp
option _description "Simple UDP client configuration"
option _role "client"
option port "65003"
option dev "tun0"
option host "vpnserver.example.org"
option key "secretkey"
option localip "192.168.99.2"
option remoteip "192.168.99.1"
option proto "udp"
option mtuauto "1"
option enable "0"

View file

@ -1,13 +0,0 @@
{
"admin/vpn/glorytun": {
"title": "Glorytun",
"order": 20,
"action": {
"type": "cbi",
"path": "glorytun"
},
"depends": {
"acl": [ "luci-app-glorytun" ]
}
}
}