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