diff options
author | Manuel Munz <freifunk@somakoma.de> | 2013-10-16 19:48:23 +0000 |
---|---|---|
committer | Manuel Munz <freifunk@somakoma.de> | 2013-10-16 19:48:23 +0000 |
commit | e966cfea23740e36f94c359506e7412da38af4fd (patch) | |
tree | 3f55a1ba36f6c514b601c85ffd2bf33d468820d8 /applications/luci-splash | |
parent | b8fe93a8368223da2ca9b56f0a1ca1b1e3740cd9 (diff) |
applications/luci-splash: Add a filter for arguments, only allow valid mac and ip addresses
Diffstat (limited to 'applications/luci-splash')
-rwxr-xr-x | applications/luci-splash/root/usr/sbin/luci-splash | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/applications/luci-splash/root/usr/sbin/luci-splash b/applications/luci-splash/root/usr/sbin/luci-splash index de5332330b..a7954211be 100755 --- a/applications/luci-splash/root/usr/sbin/luci-splash +++ b/applications/luci-splash/root/usr/sbin/luci-splash @@ -106,6 +106,26 @@ function get_filter_handle(parent, direction, device, mac) return handle end +function macvalid(mac) + if mac and mac:match( + "^[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]:" .. + "[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]:" .. + "[a-fA-F0-9][a-fA-F0-9]:[a-fA-F0-9][a-fA-F0-9]$" + ) then + return true + end + + return false +end + +function ipvalid(ipaddr) + if ipaddr then + return ip.IPv4(ipaddr) and true or false + end + + return false +end + function main(argv) local cmd = table.remove(argv, 1) local arg = argv[1] @@ -116,6 +136,12 @@ function main(argv) if ( cmd == "lease" or cmd == "add-rules" or cmd == "remove" or cmd == "whitelist" or cmd == "blacklist" or cmd == "status" ) and #argv > 0 then + if not (macvalid(arg) or ipvalid(arg)) then + print("Invalid argument. The second argument must " .. + "be a valid IPv4 or Mac Address.") + os.exit(1) + end + lock() local arp_cache = net.arptable() |