summaryrefslogtreecommitdiffhomepage
path: root/contrib/package/luci-splash/src
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2008-04-27 11:06:07 +0000
committerSteven Barth <steven@midlink.org>2008-04-27 11:06:07 +0000
commitace012a0325a4ad2249b137a0d7c7edcc2a71f54 (patch)
tree71051f83388ea5a5092f86f13e3bd6aa4a519591 /contrib/package/luci-splash/src
parent706da44cf275dc20426a55a4d01ed79026d3eb80 (diff)
Diffstat (limited to 'contrib/package/luci-splash/src')
-rw-r--r--contrib/package/luci-splash/src/luci-splash/htdocs/cgi-bin/index.cgi31
-rw-r--r--contrib/package/luci-splash/src/luci-splash/htdocs/index.html10
-rw-r--r--contrib/package/luci-splash/src/luci-splash/splash.lua93
-rw-r--r--contrib/package/luci-splash/src/luci-splash/sync.lua39
-rw-r--r--contrib/package/luci-splash/src/luci_splash.cron1
-rw-r--r--contrib/package/luci-splash/src/luci_splash.init87
-rw-r--r--contrib/package/luci-splash/src/luci_splash.uci2
-rw-r--r--contrib/package/luci-splash/src/luci_splash_httpd.conf1
8 files changed, 0 insertions, 264 deletions
diff --git a/contrib/package/luci-splash/src/luci-splash/htdocs/cgi-bin/index.cgi b/contrib/package/luci-splash/src/luci-splash/htdocs/cgi-bin/index.cgi
deleted file mode 100644
index 88f67c2acc..0000000000
--- a/contrib/package/luci-splash/src/luci-splash/htdocs/cgi-bin/index.cgi
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/haserl --shell=luac
-dofile("/usr/lib/luci-splash/splash.lua")
-
-local srv
-local ip = ffluci.http.remote_addr()
-for k, v in pairs(uci:show("network").network) do
- if v[".type"] == "interface" then
- local p = ffluci.sys.net.mask4prefix(v.netmask)
- if ffluci.sys.net.belongs(ip, v.ipaddr, p) then
- srv = v.ipaddr
- end
- end
-end
-
-if not srv then
- ffluci.http.textheader()
- return print("Unable to detect network settings!")
-end
-
-local action = "splash"
-
-local mac = ip4mac(ip)
-if not mac then
- action = "unknown"
-end
-
-if iswhitelisted(mac) or haslease(mac) then
- action = "allowed"
-end
-
-ffluci.http.redirect("http://" .. srv .. "/cgi-bin/luci-splash/" .. action) \ No newline at end of file
diff --git a/contrib/package/luci-splash/src/luci-splash/htdocs/index.html b/contrib/package/luci-splash/src/luci-splash/htdocs/index.html
deleted file mode 100644
index 58387a5fec..0000000000
--- a/contrib/package/luci-splash/src/luci-splash/htdocs/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="refresh" content="0; URL=/cgi-bin/index.cgi" />
-</head>
-<body style="background-color: black">
-<a style="color: white; text-decoration: none" href="/cgi-bin/index.cgi">FFLuCI - Freifunk Lua Configuration Interface</a>
-</body>
-</html> \ No newline at end of file
diff --git a/contrib/package/luci-splash/src/luci-splash/splash.lua b/contrib/package/luci-splash/src/luci-splash/splash.lua
deleted file mode 100644
index c9a053df2c..0000000000
--- a/contrib/package/luci-splash/src/luci-splash/splash.lua
+++ /dev/null
@@ -1,93 +0,0 @@
-package.path = "/usr/lib/lua/?.lua;/usr/lib/lua/?/init.lua;" .. package.path
-package.cpath = "/usr/lib/lua/?.so;" .. package.cpath
-
-require("ffluci.http")
-require("ffluci.sys")
-require("ffluci.model.uci")
-
--- Init state session
-uci = ffluci.model.uci.Session("/var/state")
-
-
--- Add a lease to state and invoke add_rule
-function add_lease(mac)
- local key = uci:add("luci_splash", "lease")
- uci:set("luci_splash", key, "mac", mac)
- uci:set("luci_splash", key, "start", os.time())
- add_rule(mac)
-end
-
-
--- Remove a lease from state and invoke remove_rule
-function remove_lease(mac)
- mac = mac:lower()
-
- for k, v in pairs(uci:show("luci_splash").luci_splash) do
- if v.mac:lower() == mac then
- remove_rule(mac)
- uci:del("luci_splash", k)
- end
- end
-end
-
-
--- Add an iptables rule
-function add_rule(mac)
- return os.execute("iptables -t nat -I luci_splash_leases -m mac --mac-source '"..mac.."' -j RETURN")
-end
-
-
--- Remove an iptables rule
-function remove_rule(mac)
- return os.execute("iptables -t nat -D luci_splash_leases -m mac --mac-source '"..mac.."' -j RETURN")
-end
-
-
--- Get the MAC-Address of current user
-function ip4mac(ip)
- local mac = nil
-
- for i, l in ipairs(ffluci.sys.net.arptable()) do
- if l["IP address"] == ip then
- mac = l["HW address"]
- end
- end
-
- return mac
-end
-
-
--- Check whether a MAC-Address is listed in the lease state list
-function haslease(mac)
- mac = mac:lower()
-
- for k, v in pairs(uci:show("luci_splash").luci_splash) do
- if v[".type"] == "lease" and v.mac and v.mac:lower() == mac then
- return true
- end
- end
-
- return false
-end
-
-
--- Check whether a MAC-Address is whitelisted
-function iswhitelisted(mac)
- mac = mac:lower()
-
- for k, v in pairs(uci:show("luci_splash").luci_splash) do
- if v[".type"] == "whitelist" and v.mac and v.mac:lower() == mac then
- return true
- end
- end
-
- return false
-end
-
-
--- Returns a list of MAC-Addresses for which a rule is existing
-function listrules()
- local cmd = "iptables -t nat -L luci_splash_leases | grep RETURN |"
- cmd = cmd .. "egrep -io [0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+"
- return ffluci.util.split(ffluci.sys.exec(cmd))
-end \ No newline at end of file
diff --git a/contrib/package/luci-splash/src/luci-splash/sync.lua b/contrib/package/luci-splash/src/luci-splash/sync.lua
deleted file mode 100644
index 410b6608c3..0000000000
--- a/contrib/package/luci-splash/src/luci-splash/sync.lua
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/haserl --shell=luac --accept-none
-dofile("/usr/lib/luci-splash/splash.lua")
-
-local written = {}
-local time = os.time()
-
--- Current leases in state files
-local leases = uci:show("luci_splash").luci_splash
-
--- Convert leasetime to seconds
-local leasetime = tonumber(uci:get("luci_splash", "general", "leasetime")) * 3600
-
--- Clean state file
-uci:revert("luci_splash")
-
-
--- For all leases
-for k, v in pairs(uci:show("luci_splash")) do
- if v[".type"] == "lease" then
- if os.difftime(time, tonumber(v.start)) > leasetime then
- -- Remove expired
- remove_rule(v.mac)
- else
- -- Rewrite state
- local n = uci:add("luci_splash", "lease")
- uci:set("luci_splash", n, "mac", v.mac)
- uci:set("luci_splash", n, "start", v.start)
- written[v.mac] = 1
- end
- end
-end
-
-
--- Delete rules without state
-for i, r in ipairs(listrules()) do
- if not written[r] then
- remove_rule(r)
- end
-end \ No newline at end of file
diff --git a/contrib/package/luci-splash/src/luci_splash.cron b/contrib/package/luci-splash/src/luci_splash.cron
deleted file mode 100644
index 81b51e9a95..0000000000
--- a/contrib/package/luci-splash/src/luci_splash.cron
+++ /dev/null
@@ -1 +0,0 @@
-*/15 * * * * /usr/lib/luci-splash/sync.lua \ No newline at end of file
diff --git a/contrib/package/luci-splash/src/luci_splash.init b/contrib/package/luci-splash/src/luci_splash.init
deleted file mode 100644
index 10d6411d12..0000000000
--- a/contrib/package/luci-splash/src/luci_splash.init
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh /etc/rc.common
-START=70
-
-iface_add() {
- local cfg="$1"
-
- config_get net "$cfg" network
- [ -n "$net" ] || return 0
-
- config_get iface "$net" ifname
- [ -n "$iface" ] || return 0
- iface="${iface%%:*}"
-
- config_get ipaddr "$net" ipaddr
- [ -n "$ipaddr" ] || return 0
-
- config_get netmask "$net" netmask
- [ -n "$netmask" ] || return 0
-
- eval "$(ipcalc.sh $ipaddr $netmask)"
-
- iptables -t nat -A luci_splash -i "$iface" -s "$IP/$PREFIX" -j luci_splash_portal
- iptables -t nat -A luci_splash_portal -i "$iface" -s "$IP/$PREFIX" -d "$ipaddr" -p tcp --dport 80 -j RETURN
-}
-
-blacklist_add() {
- local cfg="$1"
-
- config_get mac "$cfg" mac
- [ -n "$mac" ] && iptables -t nat -A luci_splash_portal -m mac --mac-source "$mac" -j DROP
-}
-
-whitelist_add() {
- local cfg="$1"
-
- config_get mac "$cfg" mac
- [ -n "$mac" ] && iptables -t nat -A luci_splash_portal -m mac --mac-source "$mac" -j RETURN
-}
-
-start() {
- ### Read chains from config
- include /lib/network
- scan_interfaces
- config_load luci_splash
-
- ### Create subchains
- iptables -t nat -N luci_splash
- iptables -t nat -N luci_splash_portal
- iptables -t nat -N luci_splash_leases
-
- ### Build the main rule
- config_foreach iface_add iface
-
- ### Build the portal rule
- config_foreach blacklist_add blacklist
- config_foreach whitelist_add whitelist
- iptables -t nat -A luci_splash_portal -j luci_splash_leases
-
- ### Build the leases rule
- iptables -t nat -A luci_splash_leases -p tcp --dport 80 -j REDIRECT --to-ports 8082
- iptables -t nat -A luci_splash_leases -j DROP
-
- ### Start the splash httpd
- httpd -c /etc/luci_splash_httpd.conf -p 8082 -h /usr/lib/luci-splash/htdocs
-
- ### Sync leases
- /usr/lib/luci-splash/sync.lua
-
- ### Hook in the chain
- iptables -t nat -A prerouting_rule -j luci_splash
-}
-
-stop() {
- ### Hook out the chain
- iptables -t nat -D prerouting_rule -j luci_splash
-
- ### Clear subchains
- iptables -t nat -F luci_splash_leases
- iptables -t nat -F luci_splash_portal
- iptables -t nat -F luci_splash
-
- ### Delete subchains
- iptables -t nat -X luci_splash_leases
- iptables -t nat -X luci_splash_portal
- iptables -t nat -X luci_splash
-}
-
diff --git a/contrib/package/luci-splash/src/luci_splash.uci b/contrib/package/luci-splash/src/luci_splash.uci
deleted file mode 100644
index c4cfef5dd9..0000000000
--- a/contrib/package/luci-splash/src/luci_splash.uci
+++ /dev/null
@@ -1,2 +0,0 @@
-config core general
- option leasetime 1 \ No newline at end of file
diff --git a/contrib/package/luci-splash/src/luci_splash_httpd.conf b/contrib/package/luci-splash/src/luci_splash_httpd.conf
deleted file mode 100644
index 6007e80dba..0000000000
--- a/contrib/package/luci-splash/src/luci_splash_httpd.conf
+++ /dev/null
@@ -1 +0,0 @@
-E404:index.html \ No newline at end of file