11 changed files with 0 additions and 974 deletions
@ -1,47 +0,0 @@ |
|||||
#!/bin/sh |
|
||||
|
|
||||
. /etc/init.d/globals |
|
||||
|
|
||||
ip_forwarding() { |
|
||||
v=${1:-0} |
|
||||
echo ${v} > /proc/sys/net/ipv4/ip_forward |
|
||||
} |
|
||||
|
|
||||
sbin_base=/sbin |
|
||||
if [ -x /var/sbin/openvpn ]; then |
|
||||
sbin_base=/var/sbin |
|
||||
fi |
|
||||
|
|
||||
case "$1" in |
|
||||
start) |
|
||||
if [ -e /var/etc/.openvpn ]; then |
|
||||
read mode < /var/etc/.openvpn |
|
||||
mode=${mode:-client} |
|
||||
|
|
||||
if [ ! -e /var/etc/openvpn/${mode}.conf ]; then |
|
||||
SHOWINFO "/var/etc/openvpn/${mode}.conf not found." |
|
||||
exit 1 |
|
||||
fi |
|
||||
|
|
||||
ip_forwarding 1 |
|
||||
${sbin_base}/openvpn \ |
|
||||
--config /var/etc/openvpn/${mode}.conf \ |
|
||||
--log /tmp/openvpn_${mode}.log \ |
|
||||
--daemon \ |
|
||||
--script-security 2 \ |
|
||||
--up /var/etc/openvpn/up.sh |
|
||||
fi |
|
||||
;; |
|
||||
stop) |
|
||||
killall -TERM openvpn |
|
||||
sleep 3 |
|
||||
ip_forwarding 0 |
|
||||
;; |
|
||||
restart) |
|
||||
$0 stop |
|
||||
$0 start |
|
||||
;; |
|
||||
*) |
|
||||
echo "[${BASENAME}] Usage: $0 {start|restart|stop}" |
|
||||
;; |
|
||||
esac |
|
@ -1,5 +0,0 @@ |
|||||
type=4 |
|
||||
name=OpenVPN setup |
|
||||
desc=OpenVPN settings and startup options |
|
||||
name.deutsch=OpenVPN Einstellungen |
|
||||
desc.deutsch=OpenVPN Einstellungen und Start-Optionen |
|
@ -1,66 +0,0 @@ |
|||||
--[[ |
|
||||
OpenVPN settings and startup options |
|
||||
|
|
||||
Copyright (C) 2017 Sven Hoefer <svenhoefer@svenhoefer.com> |
|
||||
Copyright (C) 2015 defans <defans@bluepeercrew.us> |
|
||||
License: WTFPLv2 |
|
||||
]] |
|
||||
|
|
||||
-- Plugin Version |
|
||||
version = "v0.11" |
|
||||
|
|
||||
LUA_API_VERSION_MAJOR = 1 |
|
||||
LUA_API_VERSION_MINOR = 30 |
|
||||
|
|
||||
|
|
||||
n = neutrino() |
|
||||
neutrino_conf = configfile.new() |
|
||||
neutrino_conf:loadConfig("/var/tuxbox/config/neutrino.conf") |
|
||||
|
|
||||
-- if Version Lua API ok |
|
||||
local v = n:checkVersion(LUA_API_VERSION_MAJOR, LUA_API_VERSION_MINOR) |
|
||||
if (v == 0) then do |
|
||||
return |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
-- define global paths |
|
||||
helpers = require "n_helpers" |
|
||||
pluginScriptPath = helpers.scriptPath() .. "/" .. helpers.scriptBase(); |
|
||||
|
|
||||
-- include lua files |
|
||||
dofile(pluginScriptPath .. "/variables.lua"); |
|
||||
dofile(pluginScriptPath .. "/init.lua"); |
|
||||
dofile(pluginScriptPath .. "/functions.lua"); |
|
||||
dofile(pluginScriptPath .. "/setup_menu_server.lua"); |
|
||||
dofile(pluginScriptPath .. "/setup_menu_client.lua"); |
|
||||
dofile(pluginScriptPath .. "/main_menu.lua"); |
|
||||
|
|
||||
-- set locale |
|
||||
locale = {} |
|
||||
local lang_default = "english" |
|
||||
local lang = neutrino_conf:getString("language", lang_default) |
|
||||
if lang == nil or (helpers.fileExist(pluginScriptPath .. "/" .. lang .. ".lua") == false) then |
|
||||
lang = lang_default |
|
||||
end |
|
||||
dofile(pluginScriptPath .. "/" .. lang .. ".lua"); |
|
||||
|
|
||||
if not helpers.fileExist(sbin_base .. "/openvpn") then |
|
||||
local h = hintbox.new{caption=locale.caption, text=locale.daemon_not_found} |
|
||||
h:paint() |
|
||||
repeat |
|
||||
msg, data = n:GetInput(500) |
|
||||
until msg == RC.ok or msg == RC.home |
|
||||
h:hide() |
|
||||
return |
|
||||
end |
|
||||
|
|
||||
-- run init |
|
||||
init() |
|
||||
|
|
||||
-- run mainmenu |
|
||||
mainmenu() |
|
||||
|
|
||||
if restart_on_exit then |
|
||||
action(cmd.init_d.restart, locale.daemon) |
|
||||
end |
|
@ -1,58 +0,0 @@ |
|||||
locale.caption = "OpenVPN Einstellungen" |
|
||||
--locale.yes = "ja" |
|
||||
--locale.no = "nein" |
|
||||
locale.off = "aus" |
|
||||
locale.server = "Server" |
|
||||
locale.client = "Client" |
|
||||
locale.ext = "Extern" |
|
||||
|
|
||||
locale.startup = "Startmodus" |
|
||||
locale.startup_hint = "Definieren Sie, in welchem Modus OpenVPN gestartet werden soll" |
|
||||
|
|
||||
locale.daemon = "Dienstprogramm" |
|
||||
locale.daemon_not_found = locale.daemon .. " nicht gefunden. Abbruch." |
|
||||
locale.daemon_start = "Starten" |
|
||||
locale.daemon_start_hint = "Startet das OpenVPN-Dienstprogramm (neu)" |
|
||||
locale.daemon_stop = "Stoppen" |
|
||||
locale.daemon_stop_hint = "Stoppt das OpenVPN-Dienstprogramm" |
|
||||
|
|
||||
locale.secret = "Schlüsseldatei" |
|
||||
locale.secret_new = "Erstellen" |
|
||||
locale.secret_new_hint = "Erzeugt eine neue Schlüsseldatei" |
|
||||
locale.secret_new_ask = "Soll eine neue OpenVPN-Schlüsseldatei erstellt werden?" |
|
||||
locale.secret_push = "Weitergeben" |
|
||||
locale.secret_push_hint = "Kopiert den eigenen Schlüssel zum Transport auf einen Datenträger" |
|
||||
locale.secret_pull = "Einlesen" |
|
||||
locale.secret_pull_hint = "Liest den Schlüssel einer Gegenstelle ein" |
|
||||
|
|
||||
locale.setup = "Konfiguration" |
|
||||
locale.setup_proto = "Protokoll" |
|
||||
locale.setup_proto_hint = "Stellen Sie das Verbindungsprotokoll ein" |
|
||||
locale.setup_ifconfig = "Interfaces" |
|
||||
locale.setup_ifconfig_hint = "Stellen Sie die Interfaces ein" |
|
||||
locale.setup_remote = "Entfernte Domain" |
|
||||
locale.setup_remote_hint = "Definieren Sie die entfernte Domain" |
|
||||
locale.setup_port = "Port" |
|
||||
locale.setup_port_hint = "Definieren Sie die den verwendeten Port" |
|
||||
locale.setup_server_hint = "Konfigurieren Sie OpenVPN für den Server-Modus" |
|
||||
locale.setup_client_hint = "Konfigurieren Sie OpenVPN für den Client-Modus" |
|
||||
locale.setup_keepalive = "Überwachung" |
|
||||
locale.setup_keepalive_hint = "Überwachungszeit in Sekunden, online offline." |
|
||||
locale.setup_lzo = "Kompression" |
|
||||
locale.setup_lzo_hint = "Schaltet die Kompression an oder aus. Standard ist adaptiv." |
|
||||
locale.setup_secret = "Schlüsseldatei" |
|
||||
locale.setup_secret_hint = "Schlüsseldatei auswählen" |
|
||||
|
|
||||
locale.routing = "Routing" --TODO |
|
||||
locale.routing_hint = "Route eintragen die benutzt werden soll oder leer lassen" --TODO |
|
||||
locale.routing_help = "Beispiel: " --TODO |
|
||||
locale.routing_help2 = "ip route add 192.168.1.0/24 via 10.8.0.2" --TODO |
|
||||
|
|
||||
locale.logging = "Protokollierung" |
|
||||
locale.logging_hint = "Protokolldatei anzeigen" |
|
||||
|
|
||||
locale.extern = "Externe Konfiguration" |
|
||||
locale.extern_import = "Importieren" |
|
||||
locale.extern_hint = "Externe Konfiguration importieren" |
|
||||
|
|
||||
locale.wait = "Bitte warten ..." |
|
@ -1,58 +0,0 @@ |
|||||
locale.caption = "OpenVPN setup" |
|
||||
--locale.yes = "yes" |
|
||||
--locale.no = "no" |
|
||||
locale.off = "off" |
|
||||
locale.server = "Server" |
|
||||
locale.client = "Client" |
|
||||
locale.ext = "Extern" |
|
||||
|
|
||||
locale.startup = "Startup mode" |
|
||||
locale.startup_hint = "Define the OpenVPN startup mode" |
|
||||
|
|
||||
locale.daemon = "Daemon" |
|
||||
locale.daemon_not_found = locale.daemon .. " not found. Aborting." |
|
||||
locale.daemon_start = "Start" |
|
||||
locale.daemon_start_hint = "Start the OpenVPN daemon" |
|
||||
locale.daemon_stop = "Stop" |
|
||||
locale.daemon_stop_hint = "Stop the OpenVPN daemon" |
|
||||
|
|
||||
locale.secret = "Secret file" |
|
||||
locale.secret_new = "Create" |
|
||||
locale.secret_new_hint = "Create a new secretfile" |
|
||||
locale.secret_new_ask = "Create a new OpenVPN secretfile?" |
|
||||
locale.secret_push = "Pass along" |
|
||||
locale.secret_push_hint = "" --TODO |
|
||||
locale.secret_pull = "Read in" |
|
||||
locale.secret_pull_hint = "" --TODO |
|
||||
|
|
||||
locale.setup = "Configuration" |
|
||||
locale.setup_proto = "Protocol" |
|
||||
locale.setup_proto_hint = "Configure protocol for connections" |
|
||||
locale.setup_ifconfig = "Interfaces" |
|
||||
locale.setup_ifconfig_hint = "Configure the interfaces" |
|
||||
locale.setup_remote = "Remote domain" |
|
||||
locale.setup_remote_hint = "Configure your remote domain" |
|
||||
locale.setup_port = "Port" |
|
||||
locale.setup_port_hint = "Configure your remote port" |
|
||||
locale.setup_server_hint = "Configure OpenVPN for server mode" |
|
||||
locale.setup_client_hint = "Configure OpenVPN for client mode" |
|
||||
locale.setup_keepalive = "Keepalive" |
|
||||
locale.setup_keepalive_hint = "Ping every X seconds, assume that remote peer is down if no ping received during a Y second time period." |
|
||||
locale.setup_lzo = "compression" |
|
||||
locale.setup_lzo_hint = "Turns compression on or off, default is adaptive" |
|
||||
locale.setup_secret = "Secret file" |
|
||||
locale.setup_secret_hint = "Choose a secret file" |
|
||||
|
|
||||
locale.routing = "Routing" --TODO |
|
||||
locale.routing_hint = "Route eintragen die benutzt werden soll oder leer lassen." --TODO |
|
||||
locale.routing_help = "Beispiel:" --TODO |
|
||||
locale.routing_help2 = "ip route add 192.168.1.0/24 via 10.8.0.2" --TODO |
|
||||
|
|
||||
locale.logging = "Logging" |
|
||||
locale.logging_hint = "View log file" |
|
||||
|
|
||||
locale.extern = "External Configuration" |
|
||||
locale.extern_import = "Import" |
|
||||
locale.extern_hint = "Import External configuration" |
|
||||
|
|
||||
locale.wait = "Please wait ..." |
|
@ -1,379 +0,0 @@ |
|||||
|
|
||||
function startup() |
|
||||
startup_options={ |
|
||||
locale.off, |
|
||||
locale.server, |
|
||||
locale.client, |
|
||||
locale.ext |
|
||||
} |
|
||||
end |
|
||||
|
|
||||
function split(s) |
|
||||
-- split s at first space |
|
||||
if not s then |
|
||||
return nil |
|
||||
end |
|
||||
local space = s:find("%s") or (#s + 1) |
|
||||
return s:sub(1, space-1), s:sub(space+1) |
|
||||
end |
|
||||
|
|
||||
function get_filename(s) |
|
||||
-- split s at last / |
|
||||
if not s then |
|
||||
return nil |
|
||||
end |
|
||||
local slash = s:find("/[^/]*$") |
|
||||
return s:sub(slash+1) |
|
||||
end |
|
||||
|
|
||||
function get_pathname(s) |
|
||||
-- split s at last / |
|
||||
if not s then |
|
||||
return nil |
|
||||
end |
|
||||
local slash = s:find("/[^/]*$") |
|
||||
return s:sub(1, slash-1) |
|
||||
end |
|
||||
|
|
||||
function load(config, T) |
|
||||
if not helpers.fileExist(config) then |
|
||||
save(config, T) |
|
||||
end |
|
||||
|
|
||||
local f = io.open(config, "r") |
|
||||
if f then |
|
||||
for line in f:lines() do |
|
||||
local key, val = split(line:match("^([^=#]+)([^\n]*)")) |
|
||||
if key then |
|
||||
if val == nil then |
|
||||
val = "" |
|
||||
end |
|
||||
T[helpers.trim(key)] = helpers.trim(val) |
|
||||
end |
|
||||
end |
|
||||
f:close() |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function save(config, T) |
|
||||
restart_on_exit = true |
|
||||
|
|
||||
local f = io.open(config, "w") |
|
||||
if f then |
|
||||
f:write("# Created by OpenVPN-Setup - Don't change this file manually.\n") |
|
||||
for k, v in pairs(T) do |
|
||||
if (k == "comp-lzo" and v == "n/a") then |
|
||||
goto continue |
|
||||
end |
|
||||
f:write(k .. " " .. v .. "\n") |
|
||||
::continue:: |
|
||||
end |
|
||||
f:close() |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function key_home(a) |
|
||||
return MENU_RETURN.EXIT |
|
||||
end |
|
||||
|
|
||||
function key_setup(a) |
|
||||
return MENU_RETURN.EXIT_ALL |
|
||||
end |
|
||||
|
|
||||
function get_upscript() |
|
||||
local f = nil |
|
||||
local cmd = "#!/bin/sh\n" |
|
||||
route = "" -- "ip route add 192.168.1.0/24 via 10.8.0.2" |
|
||||
|
|
||||
if not helpers.fileExist(scriptup) then |
|
||||
f = io.open(scriptup, "w") |
|
||||
f:write(string.lower(cmd)) |
|
||||
f:close() |
|
||||
os.execute("chmod +x " .. scriptup) |
|
||||
return |
|
||||
end |
|
||||
|
|
||||
local f = io.open(scriptup, "r") |
|
||||
if f then |
|
||||
for line in f:lines() do |
|
||||
if string.find(line, "#") then |
|
||||
goto continue |
|
||||
elseif string.find(line, scriptup_cmd) then |
|
||||
route = line |
|
||||
f:close() |
|
||||
break |
|
||||
end |
|
||||
::continue:: |
|
||||
end |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function set_upscript(id, value) |
|
||||
local cmd = "#!/bin/sh\n" |
|
||||
|
|
||||
if value ~= "" and value ~= " " then |
|
||||
cmd = cmd .. " " .. value .. "\n" |
|
||||
end |
|
||||
--print(cmd) |
|
||||
|
|
||||
local f = io.open(scriptup, "w") |
|
||||
if f then |
|
||||
f:write(string.lower(cmd)) |
|
||||
f:close() |
|
||||
end |
|
||||
|
|
||||
end |
|
||||
|
|
||||
function get_startup() |
|
||||
local f = io.open(flagfile, "r") |
|
||||
if f then |
|
||||
local c = f:read() |
|
||||
f:close() |
|
||||
|
|
||||
if c == nil then |
|
||||
c = "" |
|
||||
end |
|
||||
|
|
||||
for k, v in ipairs(startup_options) do |
|
||||
if string.lower(v) == c then |
|
||||
return v |
|
||||
end |
|
||||
end |
|
||||
end |
|
||||
return locale.off |
|
||||
end |
|
||||
|
|
||||
function set_startup(id, value) |
|
||||
activate_items(value) |
|
||||
restart_on_exit = true |
|
||||
|
|
||||
if value == locale.off then |
|
||||
os.remove(flagfile) |
|
||||
return |
|
||||
end |
|
||||
|
|
||||
local f = io.open(flagfile, "w") |
|
||||
if f then |
|
||||
f:write(string.lower(value)) |
|
||||
f:close() |
|
||||
end |
|
||||
|
|
||||
return |
|
||||
end |
|
||||
|
|
||||
function activate_items(item) |
|
||||
setup_server_active = false |
|
||||
setup_client_active = false |
|
||||
setup_server_client_active = false |
|
||||
|
|
||||
if item == locale.server then |
|
||||
setup_server_active = true |
|
||||
elseif item == locale.client then |
|
||||
setup_client_active = true |
|
||||
end |
|
||||
|
|
||||
if item ~= locale.off then |
|
||||
setup_server_client_active = true |
|
||||
end |
|
||||
|
|
||||
if m then |
|
||||
m:setActive{item=m_ss, activ=setup_server_active} |
|
||||
m:setActive{item=m_sc, activ=setup_client_active} |
|
||||
m:setActive{item=m_sr, activ=setup_server_client_active} |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function set_string_server(k, v) |
|
||||
S[k] = v |
|
||||
end |
|
||||
|
|
||||
function set_string_client(k, v) |
|
||||
C[k] = v |
|
||||
end |
|
||||
|
|
||||
function action(cmd, caption) |
|
||||
local caption = caption or locale.caption |
|
||||
local h = hintbox.new{caption=caption, text=locale.wait} |
|
||||
h:paint() |
|
||||
|
|
||||
print("action: " .. cmd) |
|
||||
os.execute(cmd) |
|
||||
|
|
||||
local i = 0 |
|
||||
repeat |
|
||||
i = i + 1 |
|
||||
msg, data = n:GetInput(500) |
|
||||
until msg == RC.ok or msg == RC.home or i == 2 |
|
||||
|
|
||||
h:hide() |
|
||||
end |
|
||||
|
|
||||
function secret_file_create(cmd, firstrun) |
|
||||
--print(firstrun) |
|
||||
if (((not helpers.fileExist(secret_file)) and (firstrun == true)) or ((firstrun == nil) and helpers.fileExist(secret_file))) then |
|
||||
local ret = messagebox.exec{ title=locale.secret, text=locale.secret_new_ask , buttons={ "yes", "no" } }; |
|
||||
if ret == "yes" then |
|
||||
action(cmd, locale.secret) |
|
||||
end |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function secret_file_push(k, v) |
|
||||
if not v then |
|
||||
v = k |
|
||||
end |
|
||||
secret_dest = v |
|
||||
action("cp -f " .. secret_file .. " " .. secret_dest, locale.secret_push) |
|
||||
if (not helpers.fileExist(secret_dest .. secret_file)) then |
|
||||
--TODO hintbox Fehler |
|
||||
else |
|
||||
--TODO hintbox Erfolg |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function secret_file_pull(k, v) |
|
||||
if not v then |
|
||||
v = k |
|
||||
end |
|
||||
action("cp -f " .. v .. " ".. secret_file, locale.secret_pull) |
|
||||
if (not helpers.fileExist(secret_file)) then |
|
||||
--TODO hintbox Fehler |
|
||||
else |
|
||||
--TODO hintbox Erfolg |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function logging() |
|
||||
m:hide() |
|
||||
|
|
||||
local fact = 0.8 --80% |
|
||||
local scr_x = SCREEN['X_RES'] |
|
||||
local scr_y = SCREEN['Y_RES'] |
|
||||
local dx = scr_x*fact |
|
||||
local x = (scr_x-dx)/2 |
|
||||
local dy = scr_y*fact |
|
||||
local y = (scr_y-dy)/2 |
|
||||
local offset = n:scale2Res(10) |
|
||||
local scroll = true |
|
||||
|
|
||||
w = cwindow.new{x=x, y=y, dx=dx, dy=dy, title=locale.logging, icon="hint_network", has_shadow=true, show_footer=false } |
|
||||
|
|
||||
local tmp_h = w:headerHeight() |
|
||||
local log=readlog() |
|
||||
ct = ctext.new{parent=w, x=offset, y=offset, dx=dx-offset, dy=dy-tmp_h-offset, text=log, mode = "ALIGN_TOP | ALIGN_SCROLL"} |
|
||||
ct:scroll{dir="down", pages=-1} |
|
||||
|
|
||||
w:paint{do_save_bg=true}; |
|
||||
|
|
||||
local i = 0 |
|
||||
repeat |
|
||||
i = i + 1 |
|
||||
msg, data = n:GetInput(500) |
|
||||
|
|
||||
if i==20 then |
|
||||
log=readlog() |
|
||||
ct:setText{text=log} |
|
||||
if scroll == true then |
|
||||
ct:scroll{dir="down", pages=-1} |
|
||||
end |
|
||||
ct:paint() |
|
||||
i = 0 |
|
||||
end |
|
||||
|
|
||||
if (msg == RC['up'] or msg == RC['page_up']) then |
|
||||
scroll = false |
|
||||
ct:scroll{dir="up"} |
|
||||
elseif (msg == RC['down'] or msg == RC['page_down']) then |
|
||||
ct:scroll{dir="down"} |
|
||||
scroll = true |
|
||||
end |
|
||||
|
|
||||
until msg == RC.ok or msg == RC.home |
|
||||
|
|
||||
w:hide{no_restore=true} |
|
||||
end |
|
||||
|
|
||||
function readlog() |
|
||||
local ret="no log available" |
|
||||
local logfile |
|
||||
local mode=string.lower(get_startup()) |
|
||||
|
|
||||
if (mode == "server" or mode == "client" or mode == "extern") then |
|
||||
logfile="/tmp/openvpn_" .. mode.. ".log" |
|
||||
|
|
||||
local f = io.open(logfile, "r") |
|
||||
if f then |
|
||||
ret = f:read("*a") |
|
||||
f:close() |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
return ret |
|
||||
end |
|
||||
|
|
||||
function search_conf(directory) |
|
||||
if not directory then |
|
||||
return nil |
|
||||
end |
|
||||
|
|
||||
local i, t, popen = 0, {}, io.popen |
|
||||
for filename in popen('ls -a "'..directory..'"'):lines() do |
|
||||
i = i + 1 |
|
||||
if filename:find(".conf") or filename:find(".ovpn") then |
|
||||
return filename |
|
||||
end |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function write_path(s) |
|
||||
if not helpers.fileExist(s) then |
|
||||
print("file not found") |
|
||||
end |
|
||||
|
|
||||
local cd = "cd%s" |
|
||||
local dir = get_pathname(s) |
|
||||
print(dir) |
|
||||
|
|
||||
local f = io.open(s, "r+") |
|
||||
if f then |
|
||||
for line in f:lines() do |
|
||||
print(line) |
|
||||
if line:find(cd) then |
|
||||
print("FOUND") |
|
||||
return |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
f:write("\n", "cd " .. dir, "\n") |
|
||||
f:close() |
|
||||
end |
|
||||
end |
|
||||
|
|
||||
function get_extern(k, v) |
|
||||
if not v then |
|
||||
v = k |
|
||||
end |
|
||||
if not v then |
|
||||
return |
|
||||
end |
|
||||
|
|
||||
local E = {"*.crt", "*.key", "*.conf", "*.ovpn"} |
|
||||
local dir = get_filename(v) |
|
||||
local destdir = conf_base .. "/" .. dir |
|
||||
|
|
||||
os.execute("mkdir -p " .. destdir) |
|
||||
for i, ext in pairs(E) do |
|
||||
os.execute("cp -pf " .. v .. "/" .. ext .. " " .. destdir) |
|
||||
end |
|
||||
|
|
||||
local cfg = search_conf(destdir) |
|
||||
if not cfg then |
|
||||
os.execute("rm -rf " .. destdir) |
|
||||
print("config not found") |
|
||||
return |
|
||||
end |
|
||||
|
|
||||
local destpath = destdir .. "/" .. cfg |
|
||||
os.execute("ln -s " .. destpath .. " " .. conf_base .. "/extern.conf") |
|
||||
write_path(destpath) |
|
||||
end |
|
@ -1,24 +0,0 @@ |
|||||
|
|
||||
function init() |
|
||||
startup() |
|
||||
|
|
||||
os.execute("mkdir -p " .. conf_base) |
|
||||
|
|
||||
if not helpers.fileExist(init_links.start) then |
|
||||
os.execute("cd " .. init_base .. " && ln -sf " .. init_script .. " " .. init_links.start) |
|
||||
end |
|
||||
if not helpers.fileExist(init_links.stop) then |
|
||||
os.execute("cd " .. init_base .. " && ln -sf " .. init_script .. " " .. init_links.stop) |
|
||||
end |
|
||||
|
|
||||
-- run helpers |
|
||||
secret_file_create(cmd.secret_file.create, true --[[firstrun]] ) |
|
||||
|
|
||||
load(conf_server, S) |
|
||||
load(conf_client, C) |
|
||||
|
|
||||
chooser_value = get_startup() |
|
||||
activate_items(chooser_value) |
|
||||
|
|
||||
get_upscript() |
|
||||
end |
|
@ -1,141 +0,0 @@ |
|||||
|
|
||||
function mainmenu() |
|
||||
m = menu.new{name=locale.caption .. " " .. version, icon="settings"} |
|
||||
m:addKey{directkey=RC.home, id="home", action="key_home"} |
|
||||
m:addKey{directkey=RC.setup, id="setup", action="key_setup"} |
|
||||
m:addItem{type="separator"} |
|
||||
m:addItem{type="cancel"} |
|
||||
m:addItem{type="separatorline"} |
|
||||
m:addItem{type="chooser", |
|
||||
action="set_startup", |
|
||||
value=chooser_value, |
|
||||
options=startup_options, |
|
||||
name=locale.startup, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.startup_hint, |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="separatorline", |
|
||||
name=locale.daemon |
|
||||
} |
|
||||
m:addItem{type="forwarder", |
|
||||
name=locale.daemon_stop, |
|
||||
action="action", |
|
||||
icon="rot", |
|
||||
directkey=RC.red, |
|
||||
id=cmd.init_d.stop, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.daemon_stop_hint |
|
||||
} |
|
||||
m:addItem{type="forwarder", |
|
||||
name=locale.daemon_start, |
|
||||
action="action", |
|
||||
icon="gruen", |
|
||||
directkey=RC.green, |
|
||||
id=cmd.init_d.restart, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.daemon_start_hint |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="separatorline", |
|
||||
name=locale.setup |
|
||||
} |
|
||||
m_ss = m:addItem{type="forwarder", |
|
||||
action="setup_menu_server", |
|
||||
value=conf_server:match("([^/]+)$"), |
|
||||
active=setup_server_active, |
|
||||
name=locale.server, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_server_hint, |
|
||||
} |
|
||||
m_sc = m:addItem{type="forwarder", |
|
||||
action="setup_menu_client", |
|
||||
value=conf_client:match("([^/]+)$"), |
|
||||
active=setup_client_active, |
|
||||
name=locale.client, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_client_hint, |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="separatorline", |
|
||||
name=locale.logging |
|
||||
} |
|
||||
m_sr = m:addItem{type="forwarder", |
|
||||
name=locale.logging, |
|
||||
action="logging", |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.logging_hint, |
|
||||
icon="gelb", |
|
||||
directkey=RC.yellow, |
|
||||
active=setup_server_client_active, |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="separatorline", |
|
||||
name=locale.routing |
|
||||
} |
|
||||
m:addItem{type="keyboardinput", |
|
||||
name=locale.routing, |
|
||||
action="set_upscript", |
|
||||
value=route, |
|
||||
size="50", |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.routing_hint, |
|
||||
help=locale.routing_help, |
|
||||
help2=locale.routing_help2, |
|
||||
icon="blau", |
|
||||
directkey=RC.blue, |
|
||||
enabled=false, |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="separatorline", |
|
||||
name=locale.secret |
|
||||
} |
|
||||
m:addItem{type="forwarder", |
|
||||
name=locale.secret_new, |
|
||||
action="secret_file_create", |
|
||||
id=cmd.secret_file.create, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.secret_new_hint, |
|
||||
icon="1", |
|
||||
directkey=RC["1"], |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="filebrowser", |
|
||||
dir_mode="1", |
|
||||
name=locale.secret_push, |
|
||||
action="secret_file_push", |
|
||||
enabled=helpers.fileExist(secret_file), |
|
||||
value=secret_dest, |
|
||||
icon="2", |
|
||||
directkey=RC["2"], |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.secret_push_hint |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="filebrowser", |
|
||||
name=locale.secret_pull, |
|
||||
action="secret_file_pull", |
|
||||
value=secret_dest, |
|
||||
filter={"key"}, |
|
||||
icon="3", |
|
||||
directkey=RC["3"], |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.secret_pull_hint |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="separatorline", |
|
||||
name=locale.extern |
|
||||
} |
|
||||
m:addItem{ |
|
||||
type="filebrowser", |
|
||||
dir_mode="1", |
|
||||
name=locale.extern_import, |
|
||||
action="get_extern", |
|
||||
value="/tmp/", |
|
||||
icon="4", |
|
||||
directkey=RC["4"], |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.extern_hint |
|
||||
} |
|
||||
m:exec() |
|
||||
end |
|
@ -1,67 +0,0 @@ |
|||||
|
|
||||
function setup_menu_client() |
|
||||
m:hide() |
|
||||
|
|
||||
local c_m = menu.new{name=locale.setup .. " " .. locale.client, icon="settings"} |
|
||||
c_m:addKey{directkey=RC.home, id="home", action="key_home"} |
|
||||
c_m:addKey{directkey=RC.setup, id="setup", action="key_setup"} |
|
||||
c_m:addItem{type="separator"} |
|
||||
c_m:addItem{type="back"} |
|
||||
c_m:addItem{type="separatorline"} |
|
||||
|
|
||||
c_m:addItem{type="chooser", |
|
||||
name=locale.setup_proto, |
|
||||
action="set_string_client", |
|
||||
options=proto_options_client, |
|
||||
id="proto", |
|
||||
value=C.proto, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_proto_hint, |
|
||||
} |
|
||||
c_m:addItem{type="keyboardinput", |
|
||||
name=locale.setup_ifconfig, |
|
||||
action="set_string_client", |
|
||||
id="ifconfig", |
|
||||
value=C.ifconfig, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_ifconfig_hint, |
|
||||
} |
|
||||
c_m:addItem{type="keyboardinput", |
|
||||
name=locale.setup_remote, |
|
||||
action="set_string_client", |
|
||||
id="remote", |
|
||||
value=C.remote, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_remote_hint, |
|
||||
} |
|
||||
c_m:addItem{type="stringinput", |
|
||||
name=locale.setup_keepalive, |
|
||||
action="set_string_client", |
|
||||
id="keepalive", |
|
||||
value=C.keepalive, |
|
||||
valid_chars="0123456789 ", |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_keepalive_hint, |
|
||||
} |
|
||||
c_m:addItem{type="chooser", |
|
||||
name=locale.setup_lzo, |
|
||||
action="set_string_client", |
|
||||
options=lzo_options, |
|
||||
id="comp-lzo", |
|
||||
value=C["comp-lzo"], |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_lzo_hint, |
|
||||
} |
|
||||
c_m:addItem{type="filebrowser", |
|
||||
name=locale.setup_secret, |
|
||||
action="set_string_client", |
|
||||
value=C.secret, |
|
||||
id="secret", |
|
||||
filter={"key"}, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_secret_hint |
|
||||
} |
|
||||
c_m:exec() |
|
||||
|
|
||||
save(conf_client, C) |
|
||||
end |
|
@ -1,69 +0,0 @@ |
|||||
|
|
||||
function setup_menu_server() |
|
||||
m:hide() |
|
||||
|
|
||||
local s_m = menu.new{name=locale.setup .. " " .. locale.server, icon="settings"} |
|
||||
s_m:addKey{directkey=RC.home, id="home", action="key_home"} |
|
||||
s_m:addKey{directkey=RC.setup, id="setup", action="key_setup"} |
|
||||
s_m:addItem{type="separator"} |
|
||||
s_m:addItem{type="back"} |
|
||||
s_m:addItem{type="separatorline"} |
|
||||
|
|
||||
s_m:addItem{type="chooser", |
|
||||
name=locale.setup_proto, |
|
||||
action="set_string_server", |
|
||||
options=proto_options_server, |
|
||||
id="proto", |
|
||||
value=S.proto, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_proto_hint, |
|
||||
} |
|
||||
s_m:addItem{type="keyboardinput", |
|
||||
name=locale.setup_ifconfig, |
|
||||
action="set_string_server", |
|
||||
id="ifconfig", |
|
||||
value=S.ifconfig, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_ifconfig_hint, |
|
||||
} |
|
||||
s_m:addItem{type="stringinput", |
|
||||
name=locale.setup_port, |
|
||||
action="set_string_server", |
|
||||
id="port", |
|
||||
value=S.port, |
|
||||
valid_chars="0123456789", |
|
||||
size="5", |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_port_hint, |
|
||||
} |
|
||||
s_m:addItem{type="stringinput", |
|
||||
name=locale.setup_keepalive, |
|
||||
action="set_string_server", |
|
||||
id="keepalive", |
|
||||
value=S.keepalive, |
|
||||
valid_chars="0123456789 ", |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_keepalive_hint, |
|
||||
} |
|
||||
s_m:addItem{type="chooser", |
|
||||
name=locale.setup_lzo, |
|
||||
action="set_string_server", |
|
||||
options=lzo_options, |
|
||||
id="comp-lzo", |
|
||||
value=S["comp-lzo"], |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_lzo_hint, |
|
||||
} |
|
||||
s_m:addItem{type="filebrowser", |
|
||||
name=locale.setup_secret, |
|
||||
action="set_string_server", |
|
||||
value=S.secret, |
|
||||
id="secret", |
|
||||
filter={"key"}, |
|
||||
hint_icon="hint_network", |
|
||||
hint=locale.setup_secret_hint |
|
||||
} |
|
||||
s_m:exec() |
|
||||
|
|
||||
save(conf_server, S) |
|
||||
end |
|
@ -1,60 +0,0 @@ |
|||||
|
|
||||
-- global variables |
|
||||
flagfile = "/var/etc/.openvpn" |
|
||||
sbin_base = "/sbin" |
|
||||
if helpers.fileExist("/var/sbin/openvpn") then |
|
||||
sbin_base = "/var/sbin" |
|
||||
end |
|
||||
|
|
||||
conf_base = "/var/etc/openvpn" |
|
||||
init_base = "/etc/init.d" |
|
||||
|
|
||||
init_script = init_base .. "/ovpn" |
|
||||
init_links = { |
|
||||
start = init_base .. "/S99ovpn", |
|
||||
stop = init_base .. "/K01ovpn" |
|
||||
} |
|
||||
|
|
||||
conf_server = conf_base .. "/server.conf" |
|
||||
conf_client = conf_base .. "/client.conf" |
|
||||
secret_file = conf_base .. "/static.key" |
|
||||
secret_dest = "/tmp/" |
|
||||
|
|
||||
scriptup = conf_base .. "/up.sh" |
|
||||
scriptup_cmd = "ip route add" |
|
||||
|
|
||||
cmd = { |
|
||||
init_d = { |
|
||||
start = init_script .. " start", |
|
||||
stop = init_script .. " stop", |
|
||||
restart = init_script .. " restart", |
|
||||
}, |
|
||||
secret_file = { |
|
||||
create = sbin_base .. "/openvpn --genkey --secret " .. secret_file, |
|
||||
}, |
|
||||
} |
|
||||
|
|
||||
-- server config defaults |
|
||||
S = {} |
|
||||
S.secret = secret_file |
|
||||
S.dev = "tun" |
|
||||
S.proto = "udp" |
|
||||
S.ifconfig = "10.8.0.1 10.8.0.2" |
|
||||
S.port = "1194" |
|
||||
S.keepalive = "10 120" |
|
||||
S["comp-lzo"] = "n/a" |
|
||||
|
|
||||
-- client config defaults |
|
||||
C = {} |
|
||||
C.secret = secret_file |
|
||||
C.dev = "tun" |
|
||||
C.proto = "udp" |
|
||||
C.ifconfig = "10.8.0.2 10.8.0.1" |
|
||||
C.remote = "myremote.mydomain 1194" |
|
||||
C.keepalive = "10 120" |
|
||||
C["comp-lzo"] = "n/a" |
|
||||
|
|
||||
proto_options_server = { "udp", "tcp-server" --[[, "tcp6", "udp6"]] } |
|
||||
proto_options_client = { "udp", "tcp-client" --[[, "tcp6", "udp6"]] } |
|
||||
|
|
||||
lzo_options = { "n/a", "adaptive", "no", "yes" } |
|
Loading…
Reference in new issue