[Zrouter-src] ZRouter.org: push to ZRouter profiles/dlink.ua.web/files/etc/dhc...
zrouter-src at zrouter.org
zrouter-src at zrouter.org
Mon Sep 24 11:23:47 UTC 2012
details: http://zrouter.org/hg/zrouter//rev/7e979416094e
changeset: 458:7e979416094e
user: Aleksandr Rybalko <ray at ddteam.net>
date: Thu Sep 20 16:23:02 2012 +0300
description:
Commit removal.
diffstat:
profiles/dlink.ua.web/files/etc/dhclient-script | 66 -
profiles/dlink.ua.web/files/etc/mpd-linkdown | 50 -
profiles/dlink.ua.web/files/etc/mpd-linkup | 55 -
profiles/dlink.ua.web/files/etc/racoon/phase1-down.sh | 28 -
profiles/dlink.ua.web/files/etc/racoon/phase1-up.sh | 28 -
profiles/dlink.ua.web/files/etc/www/collector.lua | 262 --
profiles/dlink.ua.web/files/etc/www/collector.sh | 19 -
profiles/dlink.ua.web/files/etc/www/config.xml | 274 --
profiles/dlink.ua.web/files/etc/www/devd.lua | 254 --
profiles/dlink.ua.web/files/etc/www/devd.sh | 14 -
profiles/dlink.ua.web/files/etc/www/htdocs/Administration.info.html | 16 -
profiles/dlink.ua.web/files/etc/www/htdocs/Basic.wlan.html | 18 -
profiles/dlink.ua.web/files/etc/www/htdocs/cmd.xml | 125 -
profiles/dlink.ua.web/files/etc/www/htdocs/css/router.css | 290 --
profiles/dlink.ua.web/files/etc/www/htdocs/event.xml | 96 -
profiles/dlink.ua.web/files/etc/www/htdocs/header.html | 23 -
profiles/dlink.ua.web/files/etc/www/htdocs/home_sys.html | 50 -
profiles/dlink.ua.web/files/etc/www/htdocs/img/banner.jpg | Bin
profiles/dlink.ua.web/files/etc/www/htdocs/img/tool_bar.jpg | Bin
profiles/dlink.ua.web/files/etc/www/htdocs/index.html | 102 -
profiles/dlink.ua.web/files/etc/www/htdocs/js/ajax.js | 107 -
profiles/dlink.ua.web/files/etc/www/htdocs/js/defineMyTree.js | 77 -
profiles/dlink.ua.web/files/etc/www/htdocs/js/view.js | 18 -
profiles/dlink.ua.web/files/etc/www/httpd.lua | 1209 ----------
profiles/dlink.ua.web/files/etc/www/httpd.sh | 17 -
profiles/dlink.ua.web/files/etc/www/lib/mpd.lua | 305 --
profiles/dlink.ua.web/files/etc/www/lib/racoon.lua | 367 ---
profiles/dlink.ua.web/files/etc/www/lib/utils.lua | 326 --
profiles/dlink.ua.web/profile.mk | 13 -
29 files changed, 0 insertions(+), 4209 deletions(-)
diffs (4442 lines):
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/dhclient-script
--- a/profiles/dlink.ua.web/files/etc/dhclient-script Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-#!/bin/sh
-
-#LOG=/tmp/DHCLIENT-SCRIPT.log
-LOG=/dev/null
-
-touch ${LOG}
-echo "DHCLIENT-SCRIPT: $*" >> ${LOG}
-#set >> ${LOG}
-echo >> ${LOG}
-
-case ${reason} in
-ARPSEND)
- # TODO
- ;;
-
-ARPCHECK)
- # TODO
- ;;
-
-EXPIRE)
- # TODO
- ;;
-
-PREINIT)
- # TODO
- ;;
-
-REBOOT|BOUND|RENEW)
- #interface=wan0
- #new_broadcast_address=192.168.1.255
- #new_dhcp_lease_time=3600
- #new_dhcp_message_type=5
- #new_dhcp_server_identifier=192.168.1.3
- #new_domain_name_servers='192.168.1.3 192.168.1.3'
- #new_expiry=4137
- #new_ip_address=192.168.1.5
- #new_network_number=192.168.1.0
- #new_routers=192.168.1.3
- #new_subnet_mask=255.255.255.0
- #reason=REBOOT
- ifconfig ${interface} ${new_ip_address} netmask ${new_subnet_mask}
- echo "DHCP: iface=${interface} ip=${new_ip_address} netmask=${new_subnet_mask} route=${new_routers} dns=${new_domain_name_servers}" >> ${LOG}
- query="cmd=event"
- query="${query}&state=up"
- query="${query}&iface=${interface}"
- query="${query}&gw=${new_routers}"
- query="${query}&ip=${new_ip_address}"
- query="${query}&netmask=${new_subnet_mask}"
- query="${query}&dhclient_reason=${reason}"
- query="${query}&dhclient_lease_time=${new_dhcp_lease_time}"
- query="${query}&dhclient_message_type=${new_dhcp_message_type}"
- query="${query}&dhclient_server_identifier=${new_dhcp_server_identifier}"
- query="${query}&dhclient_expiry=${new_expiry}"
- i=1
- for dns in ${new_domain_name_servers} ; do
- query="${query}&dns${i}=${dns}"
- i=$(( ${i} + 1 ))
- done
-
- # Notify configuration handler
- fetch -qo - "http://127.0.0.1:8/event.xml?${query}"
- ;;
-*)
- ;;
-esac
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/mpd-linkdown
--- a/profiles/dlink.ua.web/files/etc/mpd-linkdown Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-LOG=/tmp/mpd-linkdown.log
-
-touch ${LOG}
-echo "mpd-linkdown $*" >> ${LOG}
-#set >> ${LOG}
-echo >> ${LOG}
-
-interface=$1
-proto=$2
-localip=$3
-remoteip=$4
-authname=$5
-
-echo $#
-case $# in
- 6)
- dns1="8.8.8.8"
- dns2="8.8.4.4"
- peeraddress=$6
- ;;
- 7)
- dns1=$6
- dns2="8.8.8.8"
- peeraddress=$7
- ;;
- 8)
- dns1=$6
- dns2=$7
- peeraddress=$8
- ;;
-esac
-
-echo "MPD: iface=${interface} proto = ${proto} localip=${localip} remoteip=${remoteip} dns1=${dns1} dns2=${dns2} peeraddress=${peeraddress}" >> ${LOG}
-
-query="cmd=event"
-query="${query}&state=down"
-query="${query}&iface=${interface}"
-query="${query}&proto=${proto}"
-query="${query}&gw=${remoteip}"
-query="${query}&ip=${localip}"
-#query="${query}&dns1=${dns1}"
-#query="${query}&dns2=${dns2}"
-
-# Notify configuration handler
-fetch -qo - "http://127.0.0.1:8/event.xml?${query}"
-
-exit 0
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/mpd-linkup
--- a/profiles/dlink.ua.web/files/etc/mpd-linkup Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-#!/bin/sh
-
-#
-# mpd-linkup ng0 inet 95.81.35.177/32 195.128.182.55 - dns1 195.128.182.40 dns2 195.128.182.41 [12]
-#
-
-LOG=/tmp/mpd-linkup.log
-
-touch ${LOG}
-echo "mpd-linkup $*" >> ${LOG}
-#set >> ${LOG}
-echo >> ${LOG}
-
-interface=$1
-proto=$2
-localip=$3
-remoteip=$4
-authname=$5
-
-case $# in
-6)
- dns1="8.8.8.8"
- dns2="8.8.4.4"
- peeraddress=$6
- ;;
-7)
- dns1=$6
- dns2="8.8.8.8"
- peeraddress=$7
- ;;
-8)
- dns1=$6
- dns2=$7
- peeraddress=$8
- ;;
-esac
-
-dns1=${dns1#dns1 }
-dns2=${dns2#dns2 }
-
-echo "MPD: iface=${interface} proto = ${proto} localip=${localip} remoteip=${remoteip} dns1=${dns1} dns2=${dns2} peeraddress=${peeraddress}" >> ${LOG}
-query="cmd=event"
-query="${query}&state=up"
-query="${query}&iface=${interface}"
-query="${query}&proto=${proto}"
-query="${query}&gw=${remoteip}"
-query="${query}&ip=${localip}"
-query="${query}&dns1=${dns1}"
-query="${query}&dns2=${dns2}"
-
-# Notify configuration handler
-fetch -qo - "http://127.0.0.1:8/event.xml?${query}"
-
-exit 0
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/racoon/phase1-down.sh
--- a/profiles/dlink.ua.web/files/etc/racoon/phase1-down.sh Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
-LOG=/tmp/racoon-phase1-down.log
-
-touch ${LOG}
-echo "phase1-down.sh $*" >> ${LOG}
-
-
-echo $@ >> ${LOG}
-echo "LOCAL_ADDR = ${LOCAL_ADDR} LOCAL_PORT = ${LOCAL_PORT} REMOTE_ADDR = ${REMOTE_ADDR} REMOTE_PORT = ${REMOTE_PORT}" >> ${LOG}
-
-echo >> ${LOG}
-
-query="cmd=event"
-query="${query}&state=down"
-query="${query}&iface=IPSec0" # XXX: should use names for IPSec peers
-query="${query}&gw=${REMOTE_ADDR}:${REMOTE_PORT}"
-query="${query}&ip=${LOCAL_ADDR}:${LOCAL_PORT}"
-
-# Notify configuration handler
-fetch -qo - "http://127.0.0.1:8/event.xml?${query}"
-
-# XXX: should be handled by httpd/collector
-sh "/var/run/racoon.${REMOTE_ADDR}_down.sh"
-
-exit 0
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/racoon/phase1-up.sh
--- a/profiles/dlink.ua.web/files/etc/racoon/phase1-up.sh Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
-LOG=/tmp/racoon-phase1-up.log
-
-touch ${LOG}
-echo "phase1-up.sh $*" >> ${LOG}
-
-
-echo $@ >> ${LOG}
-echo "LOCAL_ADDR = ${LOCAL_ADDR} LOCAL_PORT = ${LOCAL_PORT} REMOTE_ADDR = ${REMOTE_ADDR} REMOTE_PORT = ${REMOTE_PORT}" >> ${LOG}
-
-echo >> ${LOG}
-
-query="cmd=event"
-query="${query}&state=up"
-query="${query}&iface=IPSec0" # XXX: should use names for IPSec peers
-query="${query}&gw=${REMOTE_ADDR}:${REMOTE_PORT}"
-query="${query}&ip=${LOCAL_ADDR}:${LOCAL_PORT}"
-
-# Notify configuration handler
-fetch -qo - "http://127.0.0.1:8/event.xml?${query}"
-
-# XXX: should be handled by httpd/collector
-sh "/var/run/racoon.${REMOTE_ADDR}_up.sh"
-
-exit 0
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/collector.lua
--- a/profiles/dlink.ua.web/files/etc/www/collector.lua Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +0,0 @@
-#!/usr/bin/lua
-
-package.path = "./?.lua;/etc/www/lib/?.lua;./lib/?.lua";
-package.cpath =
- "/lib/?.so;/usr/lib/?.so;/usr/lib/lua/?.so;" ..
- "/lib/lua?.so;/usr/lib/lua?.so;/usr/lib/lua/lua?.so;" ..
- "/lib/?-core.so;/usr/lib/?-core.so;/usr/lib/lua/?-core.so;" ..
- "/lib/?/core.so;/usr/lib/?/core.so;/usr/lib/lua/?/core.so;";
-
-host = host or "127.0.0.1";
-port = port or "8";
-
-serverhost = serverhost or "127.0.0.1";
-serverport = serverport or "80";
-
--- Globals
-r = {}; -- Runtime varibles structure
-rquery = {};
-queue = {};
-local internet_led = nil;
-
---
--- Utility function: URL encoding function
---
-function urlEncode(str)
- if (str) then
- str = string.gsub (str, "\n", "\r\n")
- str = string.gsub (str, "([^%w ])",
- function (c) return string.format ("%%%02X", string.byte(c)) end)
- str = string.gsub (str, " ", "+")
- end
- return str
-end
-
-
---
--- Utility function: URL decode function
---
-function urlDecode(str)
- str = string.gsub (str, "+", " ")
- str = string.gsub (str, "%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
- str = string.gsub (str, "\r\n", "\n")
- return str
-end
-
--- convert name1=value1&name2=val+ue%2F2
--- to table {"name1"="value1", "name2"="val ue/2"}
-function parse_query(query)
- local parsed = {};
- local pos = 0;
-
- query = string.gsub(query, "&", "&");
- query = string.gsub(query, "<", "<");
- query = string.gsub(query, ">", ">");
-
- local function ginsert(qstr)
- local first, last = string.find(qstr, "=");
- if first then
- local key = urlDecode(string.sub(qstr, 0, first-1));
- local value = urlDecode(string.sub(qstr, first+1));
- parsed[key] = value;
- end
- end
-
- while true do
- local first, last = string.find(query, "&", pos);
- if first then
- ginsert(string.sub(query, pos, first-1));
- pos = last+1;
- else
- ginsert(string.sub(query, pos));
- break;
- end
- end
- return parsed;
-end
-
-function process(q, queryline)
-
- if q["cmd"] == "event" then
- q["timestamp"] = os.date("%Y-%m-%d %H:%M:%S");
-
- local iface = q["iface"];
-
- if not iface then
- return ("collector.lua: ERROR: Interface not defined");
- end
-
- if type(r[iface]) ~= "table" then r[iface] = {}; end
--- rquery[iface] = queryline;
- -- First element processed last (implement FIFO)
- table.insert(queue, 1, {handled=false, query=queryline, qt=q});
-
- for k,v in pairs(q) do
- if (k ~= "iface") and (k ~= "cmd") then
- r[iface][k] = v;
- end
- end
- if q["state"] == "up" then
- -- XXX: should not be here
- -- XXX: must check exit code
- if r[iface]["gw"] then
- exitcode = os.execute(
- "route change default " .. r[iface]["gw"] .." > /dev/null 2>&1 || " ..
- "route add default " .. r[iface]["gw"] .." > /dev/null 2>&1"
- );
- if internet_led then
- internet_led:set(1);
- end
- end
- local dns = {};
- if q["dns1"] and q["dns1"]:len() >= 7 then
- table.insert(dns, q["dns1"]);
- end
- if q["dns2"] and q["dns2"]:len() >= 7 then
- table.insert(dns, q["dns2"]);
- end
- if table.getn(dns) > 0 then
- resolv_conf = io.open("/etc/resolv.conf", "w");
- for i,v in ipairs(dns) do
- -- print("nameserver " .. v);
- resolv_conf:write("nameserver " .. v .. "\n");
- end
- resolv_conf:close();
- end
- end
- if q["state"] == "down" then
- if r[iface]["gw"] then
- if internet_led then
- internet_led:set(0);
- end
- end
- end
-
- return "OK";
-
- elseif q["cmd"] == "revent" then
-
- iface = q["iface"];
-
- if r[iface] then
- local ret = nil;
-
- for k,v in pairs(r[iface]) do
- if ret then
- ret = ret .. "&" .. urlEncode(k) .. "=" .. urlEncode(v);
- else
- ret = urlEncode(k) .. "=" .. urlEncode(v);
- end
- end
-
- return (ret);
- else
- return ("ERROR: no data for interface " .. iface);
- end
- else
- return ("ERROR: unknown command");
- end
-end
-
-function call_server(http, q)
- local query = "http://127.0.0.1:80/event.xml?" .. q;
-
- local body, code, headers = http.request(query);
-
- if code == 200 then
- return (true);
- else
- return (nil);
- end
-
-end
-
-function getopt(args, opts)
- i=1;
- while i < table.getn(arg) do
- if arg[i]:match("^-") then
- opts[arg[i]] = arg[i+1];
- i = i + 1;
- end
- i = i + 1;
- end
- return (opts);
-end
-
-
-
-opts = {};
-opts["-P"] = "/var/run/collector.pid";
-
-if arg then
- opts = getopt(arg, opts);
-end
-
-
--- Check pidfile
-dofile("lib/pidfile.lua");
-pidfile(opts["-P"]);
-
-dofile("lib/led.lua");
-
-internet_led = Led:new_from_env("INTERNET_LED");
-
-socket = require("socket");
-http = require("socket.http");
-server = assert(socket.bind(host, port));
-server:settimeout(5);
-
-
-while 1 do
- local method, path, query, major, minor;
-
- local control = server:accept();
-
- if control then
- while 1 do
- local data, err = control:receive();
- if not err then
- local q;
- _, _, method, path, q, major, minor = string.find(data, "([A-Z]+) (.-)%?(.-) HTTP/(%d).(%d)");
- if not query and q then
- query = q;
- break;
- end
- else
- break;
- end
- end
-
- if query then
- local q = parse_query(query);
- if q and q.cmd then
- assert(control:send(
- "HTTP/1.0 200 OK\r\n" ..
- "Server: simple-lua\r\n" ..
- "Content-type: text/xml\r\n" ..
- "Connection: close\r\n" ..
- "\r\n" ..
- process(q, query)
- ));
- end
- end
-
- assert(control:close());
- end
-
- local n = table.getn(queue);
- if n > 0 then
- for i = n,1,-1 do
- if queue[i].handled ~= true then
- -- print("queue[" .. i .. "] Will send " .. queue[i].query .. " to main server");
- if (call_server(http, queue[i].query) == true) then
- -- print("queue[" .. i .. "] Will delete " .. queue[i].query .. " from queue");
- queue[i].handled = true;
- table.remove(queue, i);
- end
- end
- end
- end
-
-end
-
-os.exit(0);
-
-
-
-
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/collector.sh
--- a/profiles/dlink.ua.web/files/etc/www/collector.sh Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-
-cd /etc/www
-
-echo $$ > /var/run/collector.sh.pid
-
-INTERNET_LED=$(kenv -q INTERNET_LED)
-INTERNET_LED_INVERT=$(kenv -q INTERNET_LED_INVERT)
-
-export INTERNET_LED INTERNET_LED_INVERT
-
-./collector.lua > /var/log/collector.sh.log 2>&1
-exit 1
-
-while true; do
- ./collector.lua > /var/log/collector.sh.log 2>&1
-done
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/config.xml
--- a/profiles/dlink.ua.web/files/etc/www/config.xml Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-<interfaces>
- <wan0>
- <PPPoE enable="false" type="pppoe" onchange="iface_changed('interfaces.wan0.PPPoE')">
- <action>
- <create target="socket:127.0.0.1:5005" type="socket">
- <message></message>
- </create>
- </action>
- <nat enable="true"></nat>
- <name>PPPoE</name>
- <username>pppoe1</username>
- <password>test</password>
- <service_name></service_name>
- <device>wan0</device>
- <default_route>true</default_route>
- <!-- flags -> FORCE='overwrite received', DEFAULT='used if no received' -->
- <ipaddr flags="DEFAULT,FORCE">10.0.0.1/32</ipaddr>
- <gateway flags="DEFAULT">10.0.0.2</gateway>
- <!-- <ip6addr></ip6addr> -->
- <!-- Values holders -->
- <dns1></dns1>
- <dns2></dns2>
- <name>wan0pppoe</name>
- <group>WAN</group>
- <cost>10</cost>
- </PPPoE>
- <PPP enable="false" type="modem" onchange="iface_changed('interfaces.wan0.PPP')">
- <action>
- <up target="socket:127.0.0.1:5005" type="socket"></up>
- <destroy target="socket:127.0.0.1:5005" type="socket"></destroy>
- <down target="socket:127.0.0.1:5005" type="socket"></down>
- <create target="socket:127.0.0.1:5005" type="socket"></create>
- <destroy target="socket:127.0.0.1:5005" type="socket"></destroy>
- </action>
- <name>3G</name>
- <nat enable="true"></nat>
- <username>IT</username>
- <password>IT</password>
- <phone>#777</phone>
- <init_string></init_string>
- <device>/dev/cuaU0.0</device>
- <default_route>true</default_route>
- <!-- flags -> FORCE='overwrite received', DEFAULT='used if no received' -->
- <ipaddr flags="DEFAULT,FORCE">10.0.0.1/32</ipaddr>
- <gateway flags="DEFAULT">10.0.0.2</gateway>
- <!-- <ip6addr></ip6addr> -->
- <!-- Values holders -->
- <dns1></dns1>
- <dns2></dns2>
- <name>PPP</name>
- <group>WAN</group>
- <cost>1000</cost>
- </PPP>
- <Static enable="true" type="hw">
- <nat enable="true"></nat>
- <dhcp enable="true"></dhcp>
- <device>wan0</device>
- <default_route>true</default_route>
- <!-- flags -> FORCE='overwrite received', DEFAULT='used if no received' -->
- <ipaddr flags="DEFAULT,FORCE">10.0.0.10/24</ipaddr>
- <!-- Values holders -->
- <gateway>10.0.0.1</gateway>
- <dns1>10.0.0.1</dns1>
- <dns2>10.0.0.2</dns2>
- <name>wan0</name>
- <group>WAN</group>
- <cost>100</cost>
- </Static>
- </wan0>
- <wlan0 enable="true" type="wlan">
- <create>
- <exec>ifconfig wlan0 create wlandev wifi0 wlanmode hostap</exec>
- </create>
- <init>
- <exec>ifconfig wlan0</exec>
- </init>
- <wlan_interface>wifi0</wlan_interface>
- <channel>6</channel>
- <mode>11ng</mode>
- <ht40>true</ht40>
- </wlan0>
- <wifi0>
- <init>
- <exec>ifconfig wifi0 up</exec>
- </init>
- </wifi0>
- <lan0>
- <init>
- <!-- exec>ifconfig lan0 up</exec -->
- </init>
- </lan0>
- <bridge0 type="bridge">
- <create>
- <exec>ifconfig wlan0 down</exec>
- <exec>ifconfig lan0 down</exec>
- <exec>ifconfig bridge0 create addm lan0 addm wlan0 up</exec>
- <exec>ifconfig bridge0 down</exec>
- <exec>ifconfig bridge0 ether `kenv LAN_MAC_ADDR`</exec>
- <exec>ifconfig lan0 up</exec>
- <exec>ifconfig wlan0 up</exec>
- <exec>ifconfig bridge0 up</exec>
- </create>
- <init>
- </init>
- <ipaddr>192.168.0.1/24</ipaddr>
- <lagg_interfaces>lan0,wlan0</lagg_interfaces>
- </bridge0>
-</interfaces>
-<switch>
- <ports>
- <port id="0" pvid="1" tagged="false"></port>
- <port id="1" pvid="1" tagged="false"></port>
- <port id="2" pvid="1" tagged="false"></port>
- <port id="3" pvid="1" tagged="false"></port>
- <port id="4" pvid="2" tagged="false"></port>
- <port id="5" pvid="1" tagged="true"></port>
- <port id="6" pvid="1" tagged="false"></port>
- </ports>
- <vlans>
- <vlan id="0" vid="1">0,1,2,3,5</vlan>
- <vlan id="1" vid="2">4,5</vlan>
- </vlans>
-</switch>
-<dnsrelay enable="false"></dnsrelay>
-<dhcpd>
- <instances>
- <instance id="0" enable="true">
- <interface>bridge0</interface>
- <domain>dlink.ua</domain>
- <!-- <domainservers>192.168.0.1</domainservers> -->
- <default-lease-time>600</default-lease-time>
- <max-lease-time>7200</max-lease-time>
- <range>
- <start>192.168.0.100</start>
- <end>192.168.0.200</end>
- </range>
- </instance>
- </instances>
-</dhcpd>
-<routes>
- <default>
- <source priority="10">interfaces.wan0.DHCP.gateway</source>
- <source priority="11">interfaces.wan0.PPPoE.gateway</source>
- <source priority="12">interfaces.wan0.PPP.gateway</source>
- <source priority="13">interfaces.wan0.Static.gateway</source>
- <source priority="14">interfaces.wan0.PPTP.gateway</source>
- <source priority="15">interfaces.wan0.L2TP.gateway</source>
- </default>
- <route id="1" enable="false">
- <net>172.16.0.0/12</net>
- <gw>192.168.0.2</gw>
- </route>
-</routes>
-<resolve>
- <search>dlink.ua</search>
- <domain>dlink.ua dlink.ru</domain>
- <options>attempts:5 timeout:10</options>
- <nameserver order="100">8.8.8.8</nameserver>
- <nameserver order="101">8.8.4.4</nameserver>
-</resolve>
-<igmp>
- <instance id="0" enable="false">
- <up>wan0</up>
- <down>wlan0</down>
- </instance>
- <instance id="0" enable="false">
- <up>wan0</up>
- <down>lan0</down>
- </instance>
-</igmp>
-<info>
- <hostname>zrouter</hostname>
- <location>home</location>
- <firmware>
- <!-- XXX: version and build date should be here -->
- <version>???</version>
- <date>????</date>
- <update_url>http://www.dlink.ua/files/products/ftp/pub/Router/DIR-620/Firmware/FreeBSD/D-Link_DIR-620-last.txt</update_url>
- </firmware>
-</info>
-<hostapd>
- <instance id="0" enable="true">
- <ieee80211d>1</ieee80211d>
- <country_code>UA</country_code>
- <interface>wlan0</interface>
- <macaddr_acl>0</macaddr_acl>
- <auth_algs>1</auth_algs>
- <debug>0</debug>
- <hw_mode>g</hw_mode>
- <ctrl_interface>/var/run/hostapd</ctrl_interface>
- <ctrl_interface_group>wheel</ctrl_interface_group>
- <ssid>zrouter</ssid>
- <channel>6</channel>
- <!-- Open -->
- <wpa>3</wpa>
- <!-- WPA -->
- <!-- <wpa>1</wpa> -->
- <!-- RSN/WPA2 -->
- <!-- <wpa>2</wpa> -->
- <wpa_passphrase>freebsdmall</wpa_passphrase>
- <wpa_key_mgmt>WPA-PSK</wpa_key_mgmt>
- <wpa_pairwise>CCMP TKIP</wpa_pairwise>
- </instance>
- <instance id="1" enable="false">
- <ieee80211d>1</ieee80211d>
- <country_code>UA</country_code>
- <interface>wlan0</interface>
- <macaddr_acl>0</macaddr_acl>
- <auth_algs>1</auth_algs>
- <debug>0</debug>
- <hw_mode>g</hw_mode>
- <ctrl_interface>/var/run/hostapd</ctrl_interface>
- <ctrl_interface_group>wheel</ctrl_interface_group>
- <ssid>zrouter</ssid>
- <!-- WPA -->
- <!-- <wpa>1</wpa> -->
- <!-- RSN/WPA2 -->
- <wpa>2</wpa>
- <wpa_passphrase>freebsdmall</wpa_passphrase>
- <wpa_key_mgmt>WPA-PSK</wpa_key_mgmt>
- <wpa_pairwise>CCMP TKIP</wpa_pairwise>
- </instance>
-</hostapd>
-<http>
- <users>
- <user username="admin" password="admin" group="admin"></user>
- <user username="user" password="123" group="stat"></user>
- </users>
- <!-- host>192.168.0.1</host
- bind to all, because we need local access also.
- XXX: we should take care about ipfw deny for that. -->
- <host>192.168.0.1</host>
- <port>80</port>
-</http>
-<ipsec>
- <remote id="0" enable="false">
- <gateway>10.0.0.2:500</gateway>
- <exchange_mode>main,aggressive</exchange_mode>
- <my_identifier>address 10.0.0.1</my_identifier>
- <peers_identifier>address 10.0.0.2</peers_identifier>
- <lifetime>time 28800 sec</lifetime>
- <initial_contact>on</initial_contact>
- <passive>off</passive>
- <proposal_check>obey</proposal_check>
- <nat_traversal>off</nat_traversal>
- <generate_policy>off</generate_policy>
- <proposal>
- <encryption_algorithm>3des</encryption_algorithm>
- <hash_algorithm>md5</hash_algorithm>
- <authentication_method>pre_shared_key</authentication_method>
- <dh_group>5</dh_group>
- <psk>pskpskpsk</psk>
- </proposal>
- </remote>
- <sainfo id="0" enable="true">
- <src>address 192.168.0.0/24 any</src>
- <dst>address 192.168.2.0/24 any</dst>
- <pfs_group>5</pfs_group>
- <lifetime>time 3600 sec</lifetime>
- <encryption_algorithm>3des</encryption_algorithm>
- <authentication_algorithm>hmac_md5</authentication_algorithm>
- <compression_algorithm>deflate</compression_algorithm>
- </sainfo>
- <setkey>
- <line>spdadd 192.168.0.0/24 192.168.2.0/24 any -P out ipsec esp/tunnel/10.0.0.1-10.0.0.2/use</line>
- <line>spdadd 192.168.2.0/24 192.168.0.0/24 any -P in ipsec esp/tunnel/10.0.0.2-10.0.0.1/use</line>
- <line></line>
- <line></line>
- </setkey>
-</ipsec>
-<ntp enable="true">
- <server id="1">ntp.dlink.com.tw</server>
- <server id="2">ntp1.dlink.com</server>
-</ntp>
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/devd.lua
--- a/profiles/dlink.ua.web/files/etc/www/devd.lua Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-#!/usr/bin/lua
-
-package.path = "./?.lua;/etc/www/lib/?.lua;./lib/?.lua";
-package.cpath =
- "/lib/?.so;/usr/lib/?.so;/usr/lib/lua/?.so;" ..
- "/lib/lua?.so;/usr/lib/lua?.so;/usr/lib/lua/lua?.so;" ..
- "/lib/?-core.so;/usr/lib/?-core.so;/usr/lib/lua/?-core.so;" ..
- "/lib/?/core.so;/usr/lib/?/core.so;/usr/lib/lua/?/core.so;";
-
-serverhost = serverhost or "127.0.0.1";
-serverport = serverport or "80";
-
--- redirect print to /dev/console
--- dofile("lib/print_to_console.lua");
-
--- redirect print to syslog
-dofile("lib/lsyslog.lua");
-syslog_init("devd.lua");
-
--- urlEncode/urlDecode
-dofile("lib/urlXxcode.lua");
-
-function tab_to_query(t)
- local ret = "event=devd";
-
- for k,v in pairs(t) do
- ret = ret .. "&" .. urlEncode(k) .. "=" .. urlEncode(v);
- end
-
- return (ret);
-end
-
-function call_server(config, q)
- local query = "http://127.0.0.1:80/event.xml?" .. q;
-
- local body, code, headers = config.http.request(query);
-
- if code == 200 then
- return (true);
- else
- return (nil);
- end
-
-end
-
-function exec_output(cmd)
- fp = io.popen(cmd, "r");
- data = fp:read("*a");
- fp:close();
- return data;
-end
-
-function system_event(config, msg)
- -- !system=IFNET subsystem=rt0 type=ATTACH
- -- !system=DEVFS subsystem=CDEV type=CREATE cdev=usb/0.1.1
- -- !system=USB subsystem=DEVICE type=ATTACH ugen=ugen0.1 cdev=ugen0.1 \
- -- vendor=0x0000 product=0x0000 devclass=0x09 devsubclass=0x00 \
- -- sernum= release=0x0100 mode=host port=1 parent=dotg0
- -- !system=GPIO subsystem=pin14 type=PIN_LOW bus=gpiobus0 period=0
- -- !system=GPIO subsystem=pin14 type=PIN_HIGH bus=gpiobus0 period=0
-
- function generic_event(m, msg)
- -- Relay to main control logic
- local query = "cmd=event" ..
- "&system=" .. m.system ..
- "&subsystem=" .. m.subsystem ..
- "&type=" .. m.type ..
- "&data=" .. urlEncode(msg);
- -- cmd=event&iface=wan0&state=linkup;
- print("devd.lua: query master with \"" .. query .. "\"");
- if call_server(config, query) == false then
- -- XXX error handling
- end
- end
-
- local m = {};
-
- if not msg then
- return (nil);
- end
-
- for k, v in msg:gmatch("(%w+)=(%S+)") do
- m[k] = v;
- -- print(k,v);
- end
-
- if m.system and m.subsystem and m.type then
- if m.system == "IFNET" then
- -- Interfaces
- -- system=IFNET subsystem=lan0 type=LINK_UP
- local linkstate;
- if m.type == "LINK_UP" then
- if m.subsystem == "lan0" then
- -- XXX: bug workaround, we have to check why UP does not unplumb iface
- os.execute("ifconfig lan0 down");
- os.execute("ifconfig lan0 up");
- end
- linkstate = "linkup";
- elseif m.type == "LINK_DOWN" then
- linkstate = "linkdown";
- else
- generic_event(m, msg);
- return (nil);
- end
- local query = "cmd=event" ..
- "&iface=" .. urlEncode(m.subsystem) ..
- "&state=" .. linkstate;
- -- cmd=event&iface=wan0&state=linkup;
- if call_server(config, query) == false then
- -- XXX error handling
- end
- elseif m.system == "DEVFS" then
- -- Device nodes
- generic_event(m, msg);
-
- elseif m.system == "USB" then
- -- USB messages
- generic_event(m, msg);
- -- !system=USB subsystem=INTERFACE type=ATTACH ugen=ugen0.2 cdev=ugen0.2 vendor=0x1f28 product=0x0021
- -- devclass=0x00 devsubclass=0x00 sernum="216219360300" release=0x0000
- -- mode=host interface=0 endpoints=2 intclass=0x08 intsubclass=0x06 intprotocol=0x50
-
- -- system=USB subsystem=DEVICE type=ATTACH ugen=ugen0.2 cdev=ugen0.2 vendor=0x1f28 product=0x0021
- -- devclass=0x00 devsubclass=0x00 sernum=%22216219360300%22 release=0x0000 mode=host port=1 parent=ugen0.1
-
- -- Our usb_modeswitch :)
- if m.subsystem == "DEVICE" and m.type == "ATTACH" then
- -- XXX: get that from config
- m.vendor = m.vendor - 0;
- m.product = m.product - 0;
- -- ugen0.2 -> 0.2
- devid = m.ugen:gsub("ugen", "");
- if m.vendor == 0x1f28 and m.product == 0x0021 then
- os.execute("hex2bin " ..
- "55534243b82e238c24000000800108df200000000000000000000000000000" ..
- " > /dev/usb/" .. devid .. ".8"); -- EndPoint 8
- end
- end
-
- elseif m.system == "GPIO" then
- -- GPIO messages
- generic_event(m, msg);
-
- -- XXX: should not be hardcoded
- if m.subsystem == reset_pin and m.bus == "gpiobus0" then
- if m.type == "PIN_LOW" then
- -- Pin return to normal state
- time = tonumber(m.period);
- -- if hold time between 10 and 15 sec, call httpd to reset to default
- -- XXX better to send event to httpd, then httpd will decide what to do
- -- XXX2 but if httpd have wrong config, then he can't start
- if 10 < time and time < 15 then
- -- XXX: always do restore config here, because wrong config break httpd yet
- -- if call_server(config, "restore=config") == false then
- -- If we can't get success from httpd, then we restore default manualy
- os.execute("mv /tmp/etc/www/config.xml /tmp/etc/www/config.xml.bak");
- os.execute("/etc/rc.save_config");
- os.execute("reboot");
- -- end
- os.execute("echo \"devd.lua: User request Reset to Default\" > /dev/console");
- end
- elseif m.type == "PIN_HIGH" then
- -- User push the reset button
- -- Nothing to do yet
- else
- -- Unknown type
- end
- end
- else
- -- Unknown system
- end
- end
-end
-
-function unknown_device(config, msg)
--- "? at pins=? on gpiobus0"
-end
-
-function device_attached(config, msg)
--- "+nvram2env0 at on nexus0"
-end
-
-function device_detached(config, msg)
--- "-nvram2env0 at on nexus0"
-end
-
-
-
-local run = true;
-local config = {};
-config.http = require("socket.http");
-
-reset_pin = exec_output("kenv -q RESET_PIN");
-if not reset_pin then
- reset_pin = 10;
-end
-reset_pin = string.format("pin%03d", reset_pin);
-
-while run do
- if not config.d then
- config.d = io.open("/dev/devctl", "r");
- end
- local line = config.d:read("*l");
- if line then
- print("devd.lua:DEBUG: got \"" .. line .. "\"");
- local m, _, t, msg = line:find("^(.)(.*)");
- if m and t and msg then
- if t == "!" then
- system_event(config, msg);
- elseif t == "?" then
- unknown_device(config, msg);
- elseif t == "+" then
- device_attached(config, msg);
- elseif t == "-" then
- device_detached(config, msg);
- else
- os.execute("echo \" Message with unknown type received " .. line .. "\" > /dev/console");
- end
- end
- end
-end
-
-
---[[
-!system=IFNET subsystem=rt0 type=ATTACH
-!system=IFNET subsystem=usbus0 type=ATTACH
-!system=IFNET subsystem=rt28600 type=ATTACH
-!system=IFNET subsystem=lo0 type=ATTACH
-
-+nvram2env0 at on nexus0
-+clock0 at on nexus0
-+rt0 at on nexus0
-+rt305x_sysctl0 at on obio0
-+rt305x_ic0 at on obio0
-+gpioc0 at pins=? on gpiobus0
-+gpioreset0 at pins=? on gpiobus0
-? at pins=? on gpiobus0
-+gpioled1 at pins=? on gpiobus0
-+gpiobus0 at on gpio0
-+gpio0 at on obio0
-+uart1 at on obio0
-+cfid0 at on cfi0
-+cfi0 at on obio0
-+usbus0 at on dotg0
-+dotg0 at on obio0
-+rt28600 at on nexus0
-+nexus0 at on root0
-
--- New device node
-!system=DEVFS subsystem=CDEV type=CREATE cdev=usbctl
-!system=DEVFS subsystem=CDEV type=CREATE cdev=usb/0.1.0
-!system=DEVFS subsystem=CDEV type=CREATE cdev=ugen0.1
-!system=DEVFS subsystem=CDEV type=CREATE cdev=usb/0.1.1
-
-!system=USB subsystem=DEVICE type=ATTACH ugen=ugen0.1 cdev=ugen0.1 vendor=0x0000 product=0x0000 devclass=0x09 devsubclass=0x00 sernum= release=0x0100 mode=host port=1 parent=dotg0
-!system=USB subsystem=INTERFACE type=ATTACH ugen=ugen0.1 cdev=ugen0.1 vendor=0x0000 product=0x0000 devclass=0x09 devsubclass=0x00 sernum= release=0x0100 mode=host interface=0 endpoints=1 intclass=0x09 intsubclass=0x00 intprotocol=0x00
-!system=DEVFS subsystem=CDEV type=CREATE cdev=cfid0
-!system=DEVFS subsystem=CDEV type=CREATE cdev=map/bootloader
-
--- Reported GPIO pins
-!system=GPIO subsystem=pin14 type=PIN_LOW bus=gpiobus0 period=0
-!system=GPIO subsystem=pin14 type=PIN_HIGH bus=gpiobus0 period=0
-]]
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/devd.sh
--- a/profiles/dlink.ua.web/files/etc/www/devd.sh Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-
-cd /etc/www
-
-echo $$ > /var/run/devd.sh.pid
-
-./devd.lua > /var/log/devd.sh.log 2>&1
-exit 1
-
-while true; do
- ./devd.lua
-done
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/Administration.info.html
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/Administration.info.html Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,16 +0,0 @@
-$$$code:inc("htdocs/header.html")$$$
- <h1>Device Information</h1>
-Vendor:<strong>$$$info.device.vendor$$$</strong><br/>
-Model:<strong>$$$info.device.model$$$</strong><br/>
-Hardware Revision:<strong>$$$info.device.revision$$$</strong><br/>
-
-$$$code:conf_table("DevInfo", "Device Information", "info",
-{
- { label = "Hostname", type = "node", htmltype = "text", node = "hostname" },
- { label = "Location", type = "node", htmltype = "text", node = "location" },
-})$$$
-
-
-$$$code:inc("htdocs/footer.html")$$$
-
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/Basic.wlan.html
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/Basic.wlan.html Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-$$$code:inc("htdocs/header.html")$$$
- <h1>Wireless configuration</h1>
-
-$$$code:conf_table("WLAN", "Wireless Access Point configuration", "hostapd.instance[1]",
-{
- { label = "Enabled", type = "attr", htmltype = "checkbox", node = ":enable" },
- { label = "Country code (UA)", type = "node", htmltype = "text", node = "country_code" },
- { label = "wireless iface (wlan0)", type = "node", htmltype = "text", node = "interface" },
- { label = "Channel (6)", type = "node", htmltype = "text", node = "channel" },
- { label = "SSID", type = "node", htmltype = "text", node = "ssid" },
- { label = "WPA mode, 1-WPA, 2-RSN, 3-WPA+RSN", type = "node", htmltype = "text", node = "wpa" },
- { label = "WPA key", type = "node", htmltype = "text", node = "wpa_passphrase" },
-})$$$
-
-$$$code:inc("htdocs/footer.html")$$$
-
-
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/cmd.xml
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/cmd.xml Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-function process()
-
- if rq.POST["cmd"] == "get" then
-
- return (c:getNode(rq.POST["key"]):value());
-
- elseif rq.POST["cmd"] == "set" then
-
- c:getNode(rq.POST["key"]):value(rq.POST["value"]);
- return (c:getNode(rq.POST["key"]):value());
-
- elseif rq.POST["cmd"] == "upload_config" then
-
- print(tdump(rq.POST));
- return ("OK");
-
- elseif rq.POST["cmd"] == "upgrade" then
-
- os.execute("LAST=`fetch -o - " .. c:getNode("info.firmware.update_url"):value() .."` ; /etc/upgrade ${LAST} > /dev/console 2>&1");
- return ("OK");
-
- elseif rq.POST["cmd"] == "setmany" then
-
- path = rq.POST["path"];
- if not path then
- return ("path missing");
- end
- -- print(rq.RequestBody);
-
- -- if name like "sm:key" do c:getNode(path .. "key"):value(rq.POST["value"]);
- -- if name like "smattr:key:attr" do c:getNode(path .. "key"):attr("attr", rq.POST["value"]);
- for k,v in pairs(rq.POST) do
- attr, _, subpath, attrname = string.find(k, "^smattr:(.-):(.*)");
- if not v then v = ""; end
- if (attr) then
- if string.len(subpath) > 0 then
- subpath = path .. "." .. subpath;
- else
- subpath = path;
- end
-
- local n = c:getOrCreateNode(subpath);
- if not n then
- print ("ERROR: can't find/create node \"" .. subpath .. "\"");
- return ("ERROR: can't find/create node \"" .. subpath .. "\"");
- end
- n:attr(attrname, v);
- print(subpath .." ".. attrname .. " newval=" .. c:getNode(subpath):attr(attrname));
- elseif string.find(k, "^sm:") then
- _, _, subpath = string.find(k, "^sm:(.*)");
- if string.len(subpath) > 0 then
- subpath = path .. "." .. subpath;
- else
- subpath = path;
- end
- local n = c:getOrCreateNode(subpath);
- if not n then
- print ("ERROR: can't find/create node \"" .. subpath .. "\"");
- return ("ERROR: can't find/create node \"" .. subpath .. "\"");
- end
- n:value(v or "");
- print(subpath .. " newval=" .. n:value());
- end
- end
- return ("OK");
-
- elseif rq.POST["save"] == "config" then
-
- print("Saving configuration to config.xml");
- if not save_file("config.xml", xmldump(c:gettree())) then
- return ("Error saving configuration");
- end
- if os.execute("/etc/rc.save_config") ~= 0 then
- return ("Error saving configuration block to flash");
- end
- return ("Configuration saved successful");
-
- elseif rq.POST["restore"] == "config" then
-
- print("Restoring factory default setting");
- os.execute("echo '(sleep 5 ; rm /tmp/etc/www/config.xml ; /etc/rc.save_config ; /sbin/reboot ) & ' >> /tmp/restore_scrip.sh");
- if os.execute("sh /tmp/restore_scrip.sh &") ~= 0 then
- return ("Run restore script fail");
- end
- return ("Configuration restore procedure started");
-
- elseif rq.POST["system"] == "reboot" then
-
- print("Reboot device");
- os.execute("echo '(sleep 5 ; /sbin/reboot) &' > /tmp/reboot_scrip.sh");
- os.execute("echo 'Run /tmp/reboot_scrip.sh' > /dev/console");
- if os.execute("sh /tmp/reboot_scrip.sh &") ~= 0 then
- return ("Can't execute reboot script");
- end
- os.execute("echo 'Return \"Reboot in progress\" to parent' > /dev/console");
- return ("Reboot in progress");
-
- elseif rq.POST["telnet"] == "enable" then
-
- print("Enabling telnet service");
- os.execute("echo 'Enabling telnet service' > /dev/console");
- os.execute("/usr/libexec/telnetd -4 -debug 23 &");
- return ("telnet service started");
-
- else
-
--- print(tdump(rq));
--- print(tdump(rq.POST));
- return ("Unknow command");
-
- end
-end
-
-
-
- return ([[
-<?xml version="1.0" encoding="utf-8" ?>
-<data>
-]] ..
-process() ..
-[[
-</data>
-]]);
-
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/css/router.css
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/css/router.css Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-html, div, h1, h2, h3, h4, p, ul, ol, li, dl, dt, dd, td, input, select, textarea
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 12px;
-}
-
-body
-{
- background: #CCDCE2;
- font-size: 12px; font-family:
- Arial; margin: 0px;
-}
-
-body.body_fw{
- background: #ffffff;
-}
-
-input, select, textarea
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 11px;
-}
-
-input.text
-{
- text-align: left;
- border: solid;
- border-width: 1px;
- border-color: steelblue;
-}
-
-.style6
-{
- font-size: 14px;
- font-weight: bold;
-}
-.r_tb
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 12px;
- text-align:right;
-}
-.c_tb
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 12px;
- text-align:center;
-}
-.l_tb
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 12px;
- text-align:left;
-}
-.br_tb
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 12px;
- text-align:right;
- font-weight: bold;
-}
-.bc_tb
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 12px;
- text-align:center;
- font-weight: bold;
-}
-.bl_tb
-{
- font-family: Tahoma, Helvetica, Geneva, Arial, sans-serif;
- font-size: 12px;
- text-align:left;
- font-weight: bold;
-}
-
-h1
-{
- color: #000000;
- font-size: 12px;
- font-weight: bold;
- letter-spacing: 1px;
- text-transform: uppercase;
- margin: 0 -10px 5px -10px;
- padding: 5px 5px 5px 10px;
- background: url(img/light_blue1.jpg);
-}
-
-#table_tree{
- font-family: Arial;
- font-size: 22px;
- height: 514px;
- width: 200px;
- margin: 5px 4px 3px 1px;
- border-top-color:#808080;
- border-left-color:#808080;
- background:#FFFFFF;
-}
-
-#table_page{
- width:555px;
- height: 514px;
- margin: 5px 5px 5px 3px;
- border-width: 2px;
- border-top:solid 2 #ffffff;
- border-bottom:solid 2 #808080;
- border-left:solid 2 #ffffff;
- border-right:solid 2 #808080;
- background:#CCDCE2;
-}
-
-#table_frame{
- width:547px;
- height: 504px;
- margin: 2px 2px 2px 3px;
- border: 1px solid #136393;
- background:#E4EAEB;
-}
-
-#alink_tree a:link, #alink_tree a:visited, #alink_tree a:active{
- text-decoration: none;
- font-size: 11px;
- color: #000000;
-}
-
-#td_header
-{
- font-family: Arial;
- height: 30px;
- color: #000000;
- font-size: 18px;
- background: url(img/light_blue1.jpg);
- padding-left: 15px;
-}
-
-#table_header{
- height: 30px;
- width: 100%;
- background:#CCDCE2;
-}
-
-#table_set_main{
- width: 100%;
- margin-top: 1px;
- border-top: solid 1px #136393;
- background: #E4EAEB;
- padding-left: 5px;
- padding-top: 5px;
-}
-
-#td_left{
- font-family: Arial;
- text-align:left;
- margin: 2px;
- height:25px;
-}
-
-#td_right{
- font-family: Arial;
- text-align:left;
-}
-
-span.word{
- vertical-align: 3px;
- padding: 0px 3px 0px 3px;
-}
-
-span.img{
- vertical-align: 5px;
-}
-
-a.logout{
- font-family: Arial;
- font-size: 11px;
- margin: 0px 0px 0px 0px;
- padding: 6px 8px 6px 8px;
- width:200px;
-}
-
-a.logout:link, a.logout:visited, a.logout:active{
- color: #000000;
- background: #FFFFCC;
-}
-
-a.logout:hover {
- color: #0000FF;
- background: #FFFFCC;
- text-decoration: underline;
-}
-
-.list_head{
- background: #4D4D4D;
- color: #FFFFFF;
-}
-
-.div_tab {
- background: #ffffff;
- border-color: #c0c0c0 #ffffff #ffffff #c0c0c0;
- border-style: inset;
- border-width: 2px;
- overflow: auto;
- height: 125px;
-}
-
-.div_tab td{
- height: 20px;
-}
-
-.div_tab tr{
- height: auto;
-}
-
-.div_client_tab{
- background: #E4EAEB;
- border-color: #c0c0c0 #ffffff #ffffff #c0c0c0;
- border-style: inset;
- border-width: 1px;
- overflow: auto;
-}
-
-.div_client_tab td{
- height: 20px;
-}
-
-.div_client_tab tr{
- height: auto;
-}
-
-.table_tool{
- width: 99%;
- background: #E4EAEB;
- border: 1px solid #136393;
-
-}
-
-.table_tool_td{
- font-family: Arial;
- height: 25px;
- color: #ffffff;
- font-size: 15px;
- background: #6595b9;
- padding-left: 5px;
-}
-
-.table_tool td{
- padding: 3px;
-}
-
-.sec_n {
- background-color: #EEEEEE;
- color: #000000;
- border-left: 1px solid #FFFFFF;
- border-top: 1px solid #FFFFFF;
- border-right: 1px solid gray;
- border-bottom: 1px solid #FFFFFF
-}
-
-.sec_s {
- background-color: #D4D0C8;
- color: #000000;
- border-left: 1px solid #FFFFFF;
- border-top: 1px solid #FFFFFF;
- border-right: 1px solid gray;
- font-weight: bold;
-}
-
-.TabPane_body {
- background-color: #D4D0C8;
- color: #000000;
- border-left:1px solid #FFFFFF;
- border-right: 1px solid gray;
- border-bottom: 1px solid gray;
- width:99%;
- height:350px;
-}
-
-.edit_vlan_table{
-
- background-color: #E4EAEB;
- margin:20px 10px 0px 10px;
- border: 1px solid #136393;
-}
-
-.help_title_td
-{
- font-size: 14px;
- text-decoration: underline;
- font-weight:bold;
-
-}
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/event.xml
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/event.xml Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
--- rq = {};
--- rq.GET = {};
-
--- rq.GET["cmd" ] = "event";
--- rq.GET["gw" ] = "192.168.1.3";
--- rq.GET["dns2" ] = "192.168.1.3";
--- rq.GET["dns1" ] = "192.168.1.3";
--- rq.GET["iface" ] = "PPP";
--- rq.GET["state"] = "up";
-
--- r = {};
-
--- function doit()
-
-function process()
- if not c then
- print("Configuration structure 'c' is missing");
- end
- if not rq then
- print("Request structure 'rq' is missing");
- end
-
- if rq.GET["cmd"] == "get" then
-
- return (c:getNode(rq.GET["key"]):value());
-
- elseif rq.GET["cmd"] == "set" then
-
- c:getNode(rq.GET["key"]):value(rq.GET["value"]);
- return (c:getNode(rq.GET["key"]):value());
-
- elseif rq.GET["restore"] == "config" then
-
- os.execute("echo \"event.xml: " .. rq.QueryString .."\" > /dev/console");
- if os.execute("rm /tmp/etc/www/config.xml") ~= 0 then
- return ("Can't remove current config");
- end
- if os.execute("/etc/rc.save_config") ~= 0 then
- return ("Error saving configuration block to flash");
- end
- if os.execute("reboot &") ~= 0 then
- return ("Error when trying reboot");
- end
- return ("Configuration restored successful");
-
- elseif rq.GET["cmd"] == "event" then
- -- print(rq.RequestHeader);
- -- cmd=event&iface=wan0&state=linkup
- local iface = rq.GET["iface"];
- local newstate = rq.GET["state"];
-
- if not iface then
- return ("event.lua: ERROR: Interface not defined");
- end
-
- if type(r[iface]) ~= "table" then r[iface] = {}; end
-
- print("echo \"event.xml: " .. rq.QueryString .."\" > /dev/console");
- if newstate == "up" then
- -- Update NAT alias address for Static/DHCP
- if iface == "wan0" then
- local ip = rq.GET["ip"];
- ip = ip:gsub("/%d+", "");
- os.execute("ngctl msg wan0nat: setaliasaddr " .. ip);
- end
- elseif newstate == "linkup" then
- --
- run_dhclient(c, iface); -- if DHCP enabled.
- elseif newstate == "down" then
- --
- elseif newstate == "linkdown" then
- --
- end
-
- for k,v in pairs(rq.GET) do
- if (k ~= "iface") and (k ~= "cmd") then
- r[iface][k] = v;
- end
- end
-
- return "OK";
-
- elseif rq.GET["cmd"] == "revent" then
-
- iface = rq.GET["iface"];
-
- if r[iface] then
- return (tdump(r[iface]));
- else
- return ("ERROR: no data for interface " .. iface);
- end
- else
- return ("ERROR: unknown command");
- end
-end
-
-return ([[
-<?xml version="1.0" encoding="utf-8" ?>
-<data>]] ..
-process() ..
-[[
-</data>
-]]);
-
--- end
-
--- print(doit());
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/header.html
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/header.html Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title></title>
- <style type="text/css"> body { margin:0; padding:0; } </style>
- <link href="css/anim.css" rel="stylesheet" type="text/css">
- </head>
- <body class="yui3-skin-sam yui-skin-sam">
-<script type="text/javascript" src="js/ajax.js"></script>
-<script>
-function send_update(form, proc)
-{
- var query = getValuesAsArray(form);
- if (!proc) {
- proc = function (x) { };
- }
- ajax("POST", "/cmd.xml", query, true, proc);
-
- return false;
-}
-</script>
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/home_sys.html
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/home_sys.html Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-
-<HTML XMLNS="http://www.w3.org/1999/xhtml">
- <HEAD>
- <LINK REL="stylesheet" HREF="index_files/router.css" TYPE="text/css">
- <META http-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
- <TITLE>$$$info.device.vendor$$$ $$$info.device.model$$$ $$$info.device.revision$$$</TITLE>
- <script type="text/javascript" src="js/utils.js"></script>
- <script type="text/javascript" src="js/ajax.js"></script>
- </HEAD>
- <BODY LEFTMARGIN="0" TOPMARGIN="0" STYLE="overflow:auto;" BGCOLOR="#ccdce2" MARGINHEIGHT="0" MARGINWIDTH="0">
- <TABLE ID="table_frame" BORDER="0" CELLPADDING="0" CELLSPACING="0">
- <TBODY>
- <TR>
- <TD VALIGN="top">
- <TABLE ID="table_header" CELLPADDING="0" CELLSPACING="0">
- <TBODY>
- <TR><TD ID="td_header" VALIGN="middle">System Information</TD></TR>
- </TBODY>
- </TABLE>
- <TABLE ID="table_set_main" BORDER="0" CELLPADDING="0" CELLSPACING="0">
- <!-- ________________________________ Main Content Start ______________________________ -->
- <TBODY>
- <TR><TD ID="td_left" HEIGHT="25" WIDTH="150">Device</TD>
- <TD ID="td_right">$$$info.device.vendor$$$ $$$info.device.model$$$ $$$info.device.revision$$$</TD>
- </TR>
- <TR><TD ID="td_left" HEIGHT="25" WIDTH="150">SoC</TD>
- <TD ID="td_right">$$$info.soc.vendor$$$ $$$info.soc.model$$$ $$$info.soc.revision$$$</TD>
- </TR>
- <TR><TD ID="td_left" HEIGHT="25">Firmware Version</TD><TD ID="td_right">$$$info.firmware.version$$$</TD></TR>
- <TR><TD ID="td_left" HEIGHT="25">Code revision</TD><TD ID="td_right">$$$code: r.zrouter_version.revision $$$</TD></TR>
- <TR><TD ID="td_left" HEIGHT="25">Firmware build date</TD><TD ID="td_right">$$$code: r.zrouter_version.build $$$</TD></TR>
- <TR><TD ID="td_left" HEIGHT="25">System Name</TD><TD ID="td_right">$$$info.hostname$$$</TD></TR>
- <TR><TD ID="td_left" HEIGHT="25">Location</TD><TD ID="td_right">$$$info.location$$$</TD></TR>
- <TR><TD ID="td_left" HEIGHT="25">System Time</TD><TD ID="td_right">$$$code:os.date("%Y-%m-%d %H:%M:%S")$$$</TD></TR>
- <!--TR><TD ID="td_left" HEIGHT="25">Up Time</TD><TD ID="td_right"></TD></TR-->
- <!-- TR><TD ID="td_left" HEIGHT="25">Operation Mode</TD><TD ID="td_right">Access Point</TD></TR -->
- <!-- TR><TD ID="td_left" HEIGHT="25">MAC Address</TD><TD ID="td_right">00:21:91:5a:86:f2</TD></TR-->
- <!-- TR><TD ID="td_left" HEIGHT="25">SSID 1~3</TD><TD ID="td_right">02:21:91:5a:86:f2 ~ 06:21:91:5a:86:f2</TD></TR-->
- <TR><TD ID="td_left" HEIGHT="25">IP Address</TD><TD ID="td_right">$$$interfaces.bridge0.ipaddr$$$</TD></TR>
-
- </TBODY>
- <!-- ________________________________ Main Content End _______________________________ -->
- </TABLE>
- </TD>
- </TR>
- </TBODY>
- </TABLE>
- </BODY>
-</HTML>
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/img/banner.jpg
Binary file profiles/dlink.ua.web/files/etc/www/htdocs/img/banner.jpg has changed
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/img/tool_bar.jpg
Binary file profiles/dlink.ua.web/files/etc/www/htdocs/img/tool_bar.jpg has changed
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/index.html
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/index.html Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
- <link rel="stylesheet" href="css/router.css" type="text/css" />
- <link rel="stylesheet" href="css/toolbar.css" type="text/css" />
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
- <title>$$$info.device.vendor$$$ $$$info.device.model$$$ $$$info.device.revision$$$</title>
- <script type="text/javascript" src="js/utils.js"></script>
- <script type="text/javascript" src="js/wizard.js"></script>
- <!-- script type="text/javascript" src="js/tree.js"></script -->
- <script type="text/javascript" src="js/view.js"></script>
- <script type="text/javascript" src="js/ajax.js"></script>
-</head>
-<body leftmargin="0" topmargin="0" style="overflow: auto;" bgcolor="#ccdce2" marginheight="0" marginwidth="0">
- <center>
- <table id="MainTable" border="1" bordercolor="#1e4c7d" cellpadding="0" cellspacing="0">
- <tbody>
- <tr>
- <td colspan="2">
- <table background="img/banner.jpg" border="0" cellpadding="0" cellspacing="0" height="71" width="1000">
- <tbody>
- <tr>
- <td align="right" valign="middle">
- <font style="color: white; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
- <b>$$$info.device.vendor$$$ $$$info.device.model$$$ $$$info.device.revision$$$</b>
- </font>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <div class='toolbar'>
- <ul>
- <li><a href='home_sys.html' target='ifrMain'><span>Home<img src='img/home.gif' width='16' border='0' hspace='10'></span></a></li>
- <li class='separator'> </li>
- <li><a href='#'><span>Maintenance<img src='img/tool.gif' width='16' border='0' hspace='10'></span></a>
- <ul>
- <li><a href='#' onClick="tryget('system=reboot'); return false;"><span>Reboot</span></a></li>
- </ul>
- </li>
- <li class='separator'> </li>
- <li><a href='#'><span>Configuration</span></a>
- <ul>
- <li><a href='#' onClick="tryget('save=config'); return false;"><span>Save Configuration</span></a></li>
- <li><a href='#' onClick="tryget('restore=config'); return false;"><span>Restore to Default</span></a></li>
- <li><a href='#' onClick="tryget('telnet=enable'); return false;"><span>Run telnet service</span></a></li>
- </ul>
- </li>
- <li class='separator'> </li>
- <li><a href='http://www.dlink.ua/files/products/ftp/pub/Router/DIR-632/Help/'><span>Help</span></a></li>
- </ul>
- </div>
- <div style="clear:both; height: 0px; margin: 0px 0px 0px 0px;"> </div>
- </td>
- </tr>
-
-
- <tr>
- <td bordercolor="ccdce2" valign="top">
- <table id="table_tree" style="margin: 3px; width: 256px;" border="1" cellpadding="0" cellspacing="0" frame="box" width="261">
- <tbody>
- <tr>
- <td id="link_tree" valign="top">
- <iframe id="ifrMenu" class="ifrMenu" src="tv.html" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- <td bordercolor="ccdce2" valign="top" style="padding: 5px;">
- <table id="table_page" style="margin: 3px; width: 720px; padding: 5px;" border="0" cellpadding="0" cellspacing="0" frame="box" width="750">
- <tbody>
- <tr>
- <td>
- <iframe id="ifrMain" name="ifrMain" src="home_sys.html" onload="" frameborder="0" height="100%" scrolling="auto" width="100%"></iframe>
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <table background="img/FreeBSD_logo.png" border="0" cellpadding="0" cellspacing="0" height="75" width="1000">
- <tbody>
- <tr>
- <td align="right" valign="middle">
-
- </td>
- </tr>
- </tbody>
- </table>
- </td>
- </tr>
- </tbody>
- </table>
- </center>
-</body>
-</html>
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/js/ajax.js
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/js/ajax.js Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-
-function getXmlHttp()
-{
- var xmlhttp;
- try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
- catch (e) {
- try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP.6.0"); }
- catch (E) { }
- try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP.3.0"); }
- catch (E) { }
- try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
- catch (E) { xmlhttp = false; }
- }
- if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
- xmlhttp = new XMLHttpRequest();
- }
- return xmlhttp;
-}
-
-var xmlhttp = getXmlHttp()
-var xmlhttptimeout = 0;
-
-function ajax(method, target, msg, async, handler)
-{
-
- if (handler != "ignore") {
- xmlhttptimeout = setTimeout( function(){ xmlhttp.abort(); alert("Timeout") }, 10000);
- }
-
- xmlhttp.onreadystatechange = function()
- {
- if (xmlhttp.readyState != 4) return;
-
- clearTimeout(xmlhttptimeout);
-
- if (xmlhttp.status == 200) {
- handler(xmlhttp);
- } else {
- alert("Error: " + xmlhttp.statusText);
- }
- }
-
- xmlhttp.open(method, target, async);
- xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
- xmlhttp.send(msg);
-}
-
-function getValuesAsArray(formRef)
-{
- var ret = "r=" + encodeURIComponent(Math.random());
- var els = formRef.elements;
- for(var no=0; no < els.length; no++)
- {
- if(els[no].disabled)
- continue;
- var tag = els[no].tagName.toLowerCase();
-
- switch(tag){
- case "input":
- var type = els[no].type.toLowerCase();
-
- if(!type)
- type='text';
-
- switch(type){
- case "text":
- case "image":
- case "hidden":
- case "password":
- ret += '&' + encodeURIComponent(els[no].name) + '=' + encodeURIComponent(els[no].value);
- break;
- case "checkbox":
- if(els[no].checked)
- ret += '&' + encodeURIComponent(els[no].name) + '=true';
- else
- ret += '&' + encodeURIComponent(els[no].name) + '=false';
- break;
- case "radio":
- if(els[no].checked)
- ret += '&' + encodeURIComponent(els[no].name) + '=' + encodeURIComponent(els[no].value);
- break;
- }
- break;
- case "select":
- var string = '';
- var mult = els[no].getAttribute('multiple');
- if(mult || mult===''){
- ops = els[no].options;
-
- for(var no2=0;no2<ops.length;no2++)
- {
- var index = retArray[els[no].name].length;
- if(ops[no2].selected)
- ret += '&' + encodeURIComponent(els[no].name + index) + '=' + encodeURIComponent(ops[no2].value);
- }
- }else{
- ret += '&' + encodeURIComponent(els[no].name) + '=' + encodeURIComponent(ops[els[no].selectedIndex].value);
- }
- break;
- case "textarea":
- ret += '&' + encodeURIComponent(els[no].name) + '=' + encodeURIComponent(els[no].value);
- break;
- }
- }
- return ret;
-}
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/js/defineMyTree.js
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/js/defineMyTree.js Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/* You can find instructions for this file here:
-/ http://www.geocities.com/marcelino_martins/ftv2instructions.html
-*/
-
-// Decide if the names are links or just the icons
-var USETEXTLINKS = 1; //replace 0 with 1 for hyperlinks
-
-// Decide if the tree is to start all open or just showing the root folders
-var STARTALLOPEN = 0; //replace 0 with 1 to show the whole tree
-
-var ICONPATH = 'img/';
-
-var deviceType="Router";
-
-var band=0;
-
-
-if(band==0)
-{
- var x="CfgWLanParam.html?0";
-}
-else
-{
- var x="CfgWLanParam.html?1";
-}
-
-
-var foldersTree = gHeader(deviceType, "/home_sys.html");
-var aux1, aux2;
-
-aux1 = insFld(foldersTree, gFld("<font face=Tahoma size=2> Basic Settings </font>", ""));
-insDoc(aux1, gLnk("R"," Internet", "/Basic.wan.html"));
-insDoc(aux1, gLnk("R"," Wireless", "/Basic.wlan.html"));
-insDoc(aux1, gLnk("R"," LAN", "/Basic.lan.html"));
-insDoc(aux1, gLnk("R"," IPTV", "/Basic.iptv.html"));
-
-aux1 = insFld(foldersTree, gFld("<font face=Tahoma size=2> Security Links </font>", ""));
-insDoc(aux1, gLnk("R"," IPSec", "/Security.IPSec.html"));
-insDoc(aux1, gLnk("R"," OpenVPN", "/Security.OpenVPN.html"));
-insDoc(aux1, gLnk("R"," SSH Tunnels", "/Security.SSH.html"));
-
-aux1 = insFld(foldersTree, gFld("<font face=Tahoma size=2> Administration </font>", ""));
-insDoc(aux1, gLnk("R"," Device Info", "/Administration.info.html"));
-insDoc(aux1, gLnk("R"," Users", "/Administration.users.html"));
-insDoc(aux1, gLnk("R"," Firmware", "/Administration.firmware.html"));
-
-//aux1 = insFld(foldersTree, gFld("<font face=Tahoma size=2> Advanced Settings </font>", ""));
-//insDoc(aux1, gLnk("R"," Performance", "/home_sys.html?page=adv_perf.html"));
-//insDoc(aux1, gLnk("R"," Multi-SSID", "/home_sys.html?page=adv_mssid.html"));
-//insDoc(aux1, gLnk("R"," VLAN ", "/home_sys.html?page=adv_8021q.html"));
-//insDoc(aux1, gLnk("R"," Instrusion", "/home_sys.html?page=adv_rogue.html"));
-//insDoc(aux1, gLnk("R"," Schedule", "/home_sys.html?page=adv_schedule.html"));
-//insDoc(aux1, gLnk("R"," QOS", "/home_sys.html?page=adv_qos.html"));
-
-//aux2 = insFld(aux1, gFld("<font face=Tahoma size=2> DHCP Server</font>", ""));
-//insDoc(aux2, gLnk("R"," Dynamic Pool Setting", "/home_sys.html?page=adv_dhcpd.html"));
-//insDoc(aux2, gLnk("R"," Static Pool Setting", "/home_sys.html?page=adv_dhcps.html"));
-//insDoc(aux2, gLnk("R"," Current IP Mapping List", "/home_sys.html?page=adv_dhcpl.html"));
-
-//aux2 = insFld(aux1, gFld("<font face=Tahoma size=2> Filters</font>", ""));
-//insDoc(aux2, gLnk("R"," Wireless MAC ACL", "/home_sys.html?page=adv_acl.html"));
-//insDoc(aux2, gLnk("R"," WLAN Partition", "/home_sys.html?page=adv_partition.html"));
-
-aux1 = insFld(foldersTree, gFld("<font face=Tahoma size=2> Status</font>", ""));
-insDoc(aux1, gLnk("R"," Device Information", "/status.lua"));
-insDoc(aux1, gLnk("R"," System Log", "/log.lua"));
-//insDoc(aux1, gLnk("R"," Client Information", "/home_sys.html?page=st_info.html"));
-//insDoc(aux1, gLnk("R"," WDS Information", "/home_sys.html?page=st_wds_info.html"));
-
-//aux2 = insFld(aux1, gFld("<font face=Tahoma size=2> Stats</font>", ""));
-//insDoc(aux2, gLnk("R"," Ethernet", "/home_sys.html?page=st_stats_lan.html"));
-//insDoc(aux2, gLnk("R"," WLAN", "/home_sys.html?page=st_stats_wl.html"));
-
-//aux2 = insFld(aux1, gFld("<font face=Tahoma size=2>Log</font>", ""));
-//insDoc(aux2, gLnk("R"," View Log", "/home_sys.html?page=st_log.html"));
-//insDoc(aux2, gLnk("R"," Log Settings", "/home_sys.html?page=st_logs.html"));
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/htdocs/js/view.js
--- a/profiles/dlink.ua.web/files/etc/www/htdocs/js/view.js Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-function tryget(msg)
-{
- if (msg == 'system=reboot') {
-
- ajax("POST", "/cmd.xml", "system=reboot&r=" + encodeURIComponent(Math.random()), true, "ignore");
- reboottimeout = setTimeout( function(){ clearTimeout(reboottimeout); window.location = "/";}, 80000);
- return false;
- }
-
- ajax("POST", "/cmd.xml", msg + "&r=" + encodeURIComponent(Math.random()), true,
- function (x) {
- window.alert(x.responseXML.getElementsByTagName("data")[0].firstChild.nodeValue);
- }
- );
- return false;
-}
-
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/httpd.lua
--- a/profiles/dlink.ua.web/files/etc/www/httpd.lua Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1290 +0,0 @@
-#!/usr/bin/lua
--- -*-mode: C++; style: K&R; c-basic-offset: 4 ; -*- */
-
---
--- A simple HTTP server written in Lua, using the socket primitives
--- in 'libhttpd.so'.
---
---
--- Steve Kemp
--- --
--- http://www.steve.org.uk/
---
--- $Id: httpd.lua,v 1.31 2005/10/31 17:08:22 steve Exp $
-
-
---
--- load the socket library
---
-package.path = "./?.lua;/etc/www/lib/?.lua;./lib/?.lua";
-package.cpath =
- "/lib/?.so;/usr/lib/?.so;/usr/lib/lua/?.so;" ..
- "/lib/lua?.so;/usr/lib/lua?.so;/usr/lib/lua/lua?.so;" ..
- "/lib/?-core.so;/usr/lib/?-core.so;/usr/lib/lua/?-core.so;" ..
- "/lib/?/core.so;/usr/lib/?/core.so;/usr/lib/lua/?/core.so;";
-
---io.stdout = assert(io.open("/dev/console", "w"));
---io.stderr = io.stdout;
-
-socket = require("socket");
-require('sysctl.core');
-
--- Expat binding
-dofile('lib/xml.lua');
--- XML entity handlers
-dofile('lib/handler.lua');
-
--- read_file, tdump, xmldump
-dofile('lib/utils.lua');
--- Conf object
-dofile('lib/conf.lua');
--- Node object
-dofile('lib/node.lua');
--- base64 decode/encode
-dofile('lib/base64.lua');
--- Socket helper
---dofile("lib/sock.lua");
--- Route select logic
-dofile("lib/route.lua");
--- MPD helper
-dofile("lib/mpd.lua");
--- RACOON helper
-dofile("lib/racoon.lua");
--- DHCPD helper
--- dofile("lib/dhcpd.lua");
--- HOSTAPD helper
---dofile("lib/hostapd.lua");
-
--- redirect print to /dev/console
--- dofile("lib/print_to_console.lua");
-
--- redirect print to syslog
-dofile("lib/lsyslog.lua");
-syslog_init("httpd.lua");
-
--- urlEncode/urlDecode
-dofile("lib/urlXxcode.lua");
-
-httpd_debug = true;
-
---
--- A table of MIME types.
--- These values will be loaded from /etc/mime.types if available, otherwise
--- a minimum set of defaults will be used.
---
-mime = {};
-
--- # lua -e 'package.cpath ="/usr/lib/lua/lua?.so"; require("sysctl.core"); s,e,v,t = pcall(function () return sysctl.get("hw.device.model") end); print(s,e,v,t);'
--- true DIR-825 A nil
--- # lua -e 'package.cpath ="/usr/lib/lua/lua?.so"; require("sysctl.core"); s,e,v,t = pcall(function () return sysctl.get("hw.device.mode") end); print(s,e,v,t);'
--- false (command line):1: unknown iod 'hw.device.mode' nil nil
-
--- save sysctl obj
-sysctl_obj = sysctl;
-function sysctl(oid, value)
- if type(oid) == "table" then
- print("sysctl(table) not implemented\n");
- else
- if value then
- print("sysctl(%s, %s)\n", oid, tostring(value));
- local s,v,t = pcall(function () return sysctl_obj.set(oid, value) end);
- if s then return (v); end
- return (nil);
- else
- print("sysctl(%s)\n", oid);
- local s,v,t = pcall(function () return sysctl_obj.get(oid) end);
- if s then return (v); end
- return (nil);
- end
- end
-end
-
---
--- Start a server upon the given port, using the given
--- root directory path.
---
--- The root path is designed to contain sub-directories for
--- each given virtual host.
---
-function start_server( c, config )
- running = 1;
-
- --
- -- Bind a socket to the given port
- -- c:getNode("http.host"):value();
- s = socket.tcp();
- assert(s:setoption("reuseaddr", true));
- assert(s:bind("*", c:getNode("http.port"):value()));
- assert(s:listen(8));
- assert(s:settimeout(5));
- config.listener = s;
-
- --
- -- Print some status messages.
- --
- print( "\nListening upon:" );
- print( " http://" .. c:getNode("http.host"):value() .. ":" ..
- c:getNode("http.port"):value() .. "/" );
- print( "\n\n");
- --[[
- table.insert(r.tasks.countdown, { count=25, task=
- function()
- print("task 0 ok");
- return (true);
- end
- });
- table.insert(r.tasks.countdown, { count=10, task=
- function()
- print("task 1 ok");
- return (true);
- end
- });
- table.insert(r.tasks.countdown, { count=15, task=
- function()
- print("task 2 ok");
- return (true);
- end
- });
- table.insert(r.tasks.countdown, { count=5, task=
- function()
- print("task 3 ok");
- return (true);
- end
- });
- ]]
- --
- -- Loop accepting requests.
- --
- while ( running == 1 ) do
- processConnection( c, config );
- periodic_tasks(c);
- end
-
- --
- -- Finished.
- --
- config.listener:close();
-end
-
-function periodic_tasks(c)
- -- fetch collector info
- local i;
- local n = #r.tasks.countdown;
-
- for i = n,1,-1 do
- r.tasks.countdown[i].count = r.tasks.countdown[i].count -
- r.tasks.step;
-
- if (r.tasks.countdown[i].count <= 0) then
- -- Task must return true, else run forever
- if r.tasks.countdown[i].task() then
- table.remove(r.tasks.countdown, i);
- end
- end
- end
-end
-
-
-
---
--- Process a single incoming connection.
---
-function processConnection( c, config )
- --
- -- Accept a new connection
- --
- config.listener:settimeout(r.tasks.step);
- local client = config.listener:accept();
- if (not client) then return (nil) end;
- local ip, port = client:getpeername();
-
- if not client then
- return (nil);
- end
-
- found = 0; -- Found the end of the HTTP headers?
- chunk = 0; -- Count of data read from client socket
- size = 0; -- Total size of incoming request.
- code = 0; -- Status code we send to the client
- request = ""; -- Request body read from client.
- rq = {};
- rq.ip = ip;
- rq.port = port;
-
-
- --
- -- Read in a response from the client, terminating at the first
- -- '\r\n\r\n' line - this is the end of the HTTP header request.
- --
- -- Also break out of this loop if we read ten packets of data
- -- from the client but didn't manage to find a HTTP header end.
- -- This should help protect us from DOSes.
- --
- -- client:settimeout(1);
- -- while ( true ) do
- -- local data, err = client:receive("*l");
- --
- -- if not data then break end
- --
- -- request = request .. data .. "\r\n";
- --
- -- if data:len() <= 0 then break end
- -- end
-
- -- local request, err = client:receive("*a");
-
- -- size = request:len();
- --
- -- print("Rq: \"" .. request .. "\"");
- --
- -- position,len = request:find("\r\n\r\n");
- -- if ( position ~= nil ) then
- -- rq.RequestHeader = request:sub(0, position);
- -- rq.RequestBody = request:sub(position+4);
- -- rq.RequestBodyLength = len-4;
- -- else
- -- -- Maybe we need say ERROR!!!!
- -- return (nil);
- -- end
-
- rq.ContentLength = -1;
- rq.RequestHeader = "";
- i = 1;
- while ( true ) do
- local data, err = client:receive("*l");
- --print(i, data or "(no data)", err or " . ");
- i = i + 1;
-
- if not data then break end
-
- local match, _, len = data:find("Content%-Length: ([^:\r\n]+)");
- if match then
- rq.ContentLength = tonumber(len);
- end
-
- rq.RequestHeader = rq.RequestHeader .. data .. "\r\n";
-
- if data:len() <= 0 then break end
- end
-
- if rq.ContentLength >= 0 then
- rq.RequestBodyLength = rq.ContentLength;
- rq.RequestBody, err = client:receive(rq.RequestBodyLength);
- end
-
- if err then
- rq.RequestBodyLength = nil;
- rq.RequestBody = nil;
- end
-
- --
- -- OK We now have a complete HTTP request of 'size' bytes long
- -- stored in 'rq.RequestHeader'.
- --
-
- --
- -- Find the requested path.
- --
- _, _, method, path, major, minor =
- string.find(rq.RequestHeader, "([A-Z]+) (.+) HTTP/(%d).(%d)");
-
- --
- -- We only handle GET requests.
- --
- if ( method ~= "GET" ) and ( method ~= "POST" ) then
- error = "Method not implemented";
-
- if ( method == nil ) then
- error = error .. ".";
- else
- error = error .. ": " .. urlEncode( method );
- end
-
- err = sendError(501, error);
- client:send(err);
- client:close();
- return err:len(), "501";
- end
-
-
- --
- -- Decode the requested path.
- --
- path = urlDecode( path );
-
- --
- -- find the Virtual Host which we need for serving, and find the
- -- user agent and referer for logging purposes.
- --
- _, _, rq.Host = rq.RequestHeader:find( "Host: (.-)\r?\n");
- _, _, rq.Agent = rq.RequestHeader:find( "Agent: (.-)\r?\n");
- _, _, rq.Referer = rq.RequestHeader:find( "Referer: (.-)\r?\n");
-
- _, _, rq.Accept = rq.RequestHeader:find( "Accept: (.-)\r?\n");
- _, _, rq.AcceptLanguage = rq.RequestHeader:find( "Accept%-Language: ([^:\r\n]+)");
- _, _, rq.AcceptEncoding = rq.RequestHeader:find( "Accept%-Encoding: ([^:\r\n]+)");
- _, _, rq.AcceptCharset = rq.RequestHeader:find( "Accept%-Charset: ([^:\r\n]+)");
- _, _, rq.ContentType = rq.RequestHeader:find( "Content%-Type: ([^:\r\n]+)");
- _, _, rq.ContentLength = rq.RequestHeader:find( "Content%-Length: ([^:\r\n]+)");
- _, _, rq.Authorization = rq.RequestHeader:find( "Authorization: ([^:\r\n]+)");
-
- rq.UserName = nil;
- rq.Password = nil;
- rq.Group = nil;
- if rq.Authorization then
- local BasicAuth = "";
- _, _, BasicAuth = string.find(rq.RequestHeader,
- "Basic ([^:\r\n]+)");
- if BasicAuth then
- local pair = b64dec(BasicAuth);
- _, _, _u, _p = string.find(pair, "(.-)%:(.*)");
-
- for usr = 1, 8, 1 do
- local u = c:getNode(string.format(
- "http.users.user[%d]",
- usr));
- if u and (u:attr("username") == _u) and
- (u:attr("password") == _p) then
- rq.UserName = _u;
- rq.Password = _p;
- rq.Group = u:attr("group");
- end
- end
- end
- end
-
- if not rq.Group and rq.ip ~= "127.0.0.1" then
- local message = "HTTP/1.1 401 Authorization Required\r\n" ;
- message = message .. "Server: httpd\r\n";
- message = message .. "WWW-Authenticate: Basic " ..
- "realm=\"Secure Area\"\n";
- message = message .. "Content-type: text/html\r\n";
- message = message .. "Connection: close\r\n\r\n" ;
- message = message ..
- "<html>" ..
- "<head><title>Error</title></head>" ..
- "<body><H1>401 Unauthorized.</H1></body>" ..
- "</html>" ;
- --Content-Length: 311
-
- size = string.len(message);
- client:send(message);
- client:close();
- code = "401";
- else
- size, code = handleRequest(c, config, path, client, method, rq);
- end
-
- if ( rq.Agent == nil ) then rq.Agent = "-" end;
- if ( rq.Referer == nil ) then rq.Referer = "-" end;
- if ( code == nil ) then code = 0 ; end;
-
- if ( running == 0 ) then
- print( "Terminating as per request from " .. ip );
- end
-
- --
- -- Close the client connection.
- --
- client:close();
-end
-
---
--- Attempt to serve the given path to the given client
---
-function handleRequest( c, config, path, client, method, rq )
- --
- -- Local file
- --
- local file = string.gsub(path, "%?.*", "");
- local query_string = "";
- if file ~= path then
- query_string = string.gsub(path, ".*%?", "");
- end
-
- rq.ScriptName = file;
- rq.QueryString = query_string;
- rq.GET = parse_query(query_string);
- -- TODO check request content type
- if rq.RequestBody then
- rq.POST = parse_query(rq.RequestBody);
- end
-
- --
- -- File must be beneath the vhost root.
- --
- file = "htdocs/" .. file ;
-
- --
- -- Attempt to sanitize the input Virtual Host + requested path.
- --
- -- file = string.strip( file );
- file = string.gsub (file, "//", "/")
-
- --
- -- Add a trailing "index.html" to paths ending in / if such
- -- a file exists.
- --
- -- Otherwise if it is a directory then serve it.
- --
- if ( string.endsWith( file, "/" ) ) then
- tmp = file .. "index.html";
- if ( fileExists( tmp ) ) then
- file = tmp;
- end
- end
-
- --
- -- Open the file and return an error if it fails.
- --
-
- if ( fileExists(file) == false ) then
- err = sendError(404, "File not found " .. urlEncode(path));
- size = string.len(err);
- client:send(err)
- client:close();
- return size, "404";
- end;
-
- --
- -- Find the suffix to get the mime.type.
- --
- _, _, ext = string.find( file, "\.([^\.]+)$" );
- if ( ext == nil ) then
- ext = "html"; -- HACK
- end
-
- mimetype = mime[ext];
- if ( mimetype == nil ) then mimetype = 'text/plain' ; end;
-
- --
- -- Send out the header.
- --
- client:send(
- "HTTP/1.0 200 OK\r\n" ..
- "Server: httpd\r\n" ..
- "Content-type: " .. mimetype .. "\r\n" ..
- "Connection: close\r\n\r\n" );
-
-
- --
- -- Read the file, and then serve it.
- --
- f = io.open( file, "rb" );
- size = fileSize( f );
- local t = f:read("*all")
- f:close();
-
- local retcode = "200";
-
- -- Replace $$$ name $$$ variables
- if (ext == "html") or (ext == "js") then
- t = string.gsub(t, "%$%$%$(.-)%$%$%$",
- function (s)
- if not s then return; end
- return evalembeded(s)
- end);
-
- -- Eval Lua code
- elseif (ext == "lua") or (ext == "xml") or (ext == "dat") then
- code, err = assert(loadstring(t));
- if not code then
- t = sendError(500, "Error \""..err.."\" when parse"..
- " " .. urlEncode(path));
- retcode = "500";
- else
- t = code();
- end
- end
- client:send(t);
- client:close();
-
- return string.len(t), retcode;
-end
-
-function evalembeded(s)
- if not s then
- return "";
- end
-
- match, _, code = string.find(s, "^code%:(.*)$");
- if match then
- local func, err = loadstring("return " .. code);
- if not func then
- return err;
- end
- return func();
- else
- node = c:getNode(s);
- if node then
- return field(node:value() or "");
- end
- return field("");
- end
-end
-
-function exec_output(cmd)
- fp = io.popen(cmd, "r");
- data = fp:read("*a");
- fp:close();
- return data;
-end
-
-function queryData(rq)
- if rq.POST["cmd"] then
- cmd = rq.POST["cmd"];
- if cmd == "get" then
- key = rq.POST["key"];
- if key == "datetime" then
- return os.date("%Y-%m-%d %H:%M:%S");
- end
- if key == "uptime" then
- return sysctl("kern.ident");
- end
- else
- return ("Unknown command \"" .. cmd .. "\"");
- end
- end
- return ("");
-end
-
-
--- convert name1=value1&name2=val+ue%2F2
--- to table {"name1"="value1", "name2"="val ue/2"}
-function parse_query(query)
- local parsed = {};
- local pos = 0;
-
- query = string.gsub(query, "&", "&");
- query = string.gsub(query, "<", "<");
- query = string.gsub(query, ">", ">");
-
- local function ginsert(qstr)
- local first, last = string.find(qstr, "=");
- if first then
- local key = urlDecode(string.sub(qstr, 0, first-1));
- local value = urlDecode(string.sub(qstr, first+1));
- parsed[key] = value;
- end
- end
-
- while true do
- local first, last = string.find(query, "&", pos);
- if first then
- ginsert(string.sub(query, pos, first-1));
- pos = last+1;
- else
- ginsert(string.sub(query, pos));
- break;
- end
- end
- return parsed;
-end
-
---
--- Send the given error message to the client.
--- Return the length of data sent to the client so we know what to log.
---
-function sendError( status, str )
- message = "HTTP/1.0 " .. status .. " OK\r\n" ;
- message = message .. "Server: httpd\r\n";
- message = message .. "Content-type: text/html\r\n";
- message = message .. "Connection: close\r\n\r\n" ;
- message = message .. "<html><head><title>Error</title></head>" ;
- message = message .. "<body><h1>Error</h1>" ;
- message = message .. "<p>" .. str .. "</p></body></html>" ;
-
- return (message);
-end
-
-
-
---
--- Utility function: Determine the size of an open file.
---
-function fileSize (file)
- local current = file:seek() -- get current position
- local size = file:seek("end") -- get file size
- file:seek("set", current) -- restore position
- return size
-end
-
-
---
--- Utility function: Determine whether the given file exists.
---
-function fileExists (file)
- local f = io.open(file, "rb");
- if f == nil then
- return false;
- else
- f:close();
- return true;
- end
-end
-
-function read_zrouter_version (ar)
- ar.zrouter_version = {};
- return parse_kv_file(ar.zrouter_version, "/etc/zrouter_version");
-end
-
-function read_rc_conf (ar)
- ar.rc_conf = {};
- return parse_kv_file(ar.rc_conf, "/etc/rc.conf");
-end
-
---
--- Read the mime file and setup mime types
---
-function loadMimeFile(file, table)
- local f = io.open( file, "r" );
- while true do
- local line = f:read()
- if line == nil then break end
- _, _, mimetype, name = string.find( line, "^(.*)\t+([^\t]+)$" );
- if ( mimetype ~= nil ) then
- for w in string.gfind(name, "([^%s]+)") do
- table[w] = mimetype;
- end
- end
- end
-end
-
---
--- Utility function: Does the string end with the given suffix?
---
-function string.endsWith(String,End)
- return End=='' or string.sub(String,-string.len(End))==End
-end
-
---
--- Strip path traversal requests.
---
-function string.strip( str )
- return( string.gsub( str, "/../", "" ) );
-end
-
---
--- Log an access request.
---
-function logAccess( user, method, host, ip, request, status, size, agent, referer, major, minor )
- date = os.date("%m/%b/%Y:%H:%M:%S +0000");
-
- --
- -- Format the logging line.
- --
- log = string.format( '%s %s - - [%s] "%s %s HTTP/%s.%s" %s %s "%s" "%s"',
- user, method, ip, date, request, major, minor, status, size, referer, agent );
-
- logfile = "logs/access.log"
-
- --
- -- Open logfile for appending.
- --
- file = io.open( logfile , "a" );
- if ( file ~= nil ) then
- file:write( log .. "\n" );
- file:close();
- else
- print( "WARNING : Unable to open logfile for writing : " .. logfile );
- end
-
- print( log );
-end
-
---
------
----
---
--- This is the start of the real code. Now that our functions have been
--- defined we actually execute from this point onwards.
---
----
-----
---
-
---
--- Setup the MIME types our server will use for serving files.
---
-if ( fileExists( "/etc/mime.types" ) ) then
- loadMimeFile( "/etc/mime.types", mime );
-else
- --
- -- The global MIME types file does not exist.
- -- Setup minimal defaults.
- --
--- print( "WARNING: /etc/mime.types could not be read." );
--- print( " Running with minimal MIME types." );
-
- -- TODO: lua scripts can be able to set content type
- mime[ "lua" ] = "text/html";
- mime[ "xml" ] = "application/xml";
- mime[ "html"] = "text/html";
- mime[ "txt" ] = "text/plain";
- mime[ "js" ] = "text/plain";
- mime[ "css" ] = "text/css";
- mime[ "jpg" ] = "image/jpeg";
- mime[ "jpeg"] = "image/jpeg";
- mime[ "gif" ] = "image/gif";
- mime[ "png" ] = "image/png";
- mime[ "dat" ] = "application/octet-stream";
-end
-
-function checkIface(name)
- local ret = os.execute("ifconfig " .. name .. " > /dev/null");
- if ret ~= 0 then
- return (nil);
- end
- return (true);
-end
---[[
- <create>
- <exec order="1">ifconfig wlan0 ether `kenv WAN_MAC_ADDR`</exec>
- <exec order="2">ifconfig lan0 ether `kenv WAN_MAC_ADDR`</exec>
- <exec order="3">ifconfig bridge0 create addm lan0 addm wlan0 up</exec>
- </create>
- <init>
- <exec order="1">ifconfig bridge0</exec>
- </init>
-]]
-
-function doexec(c, path)
- if ((not c) or (not path)) then
- return (nil);
- end
-
- local block = c:getNode(path);
-
- if not block then
- return (nil);
- end
-
- local function execone(c, path)
- local exec = c:getNode(path);
- if exec then
- exec = exec:value();
- if exec then
- print("Run:" .. exec)
- print(exec_output(exec));
- end
- end
- end
-
- for i = 1,16,1 do
- execone(c, path .. ".exec[" .. i .. "]");
- end
-
- return (true);
-
-end
-
-
-function configure_lan(c)
-
- local function config_iface(c, name)
- if not checkIface(name) then
- doexec(c, "interfaces." .. name ..".create");
- end
- doexec(c, "interfaces." .. name ..".init");
-
- ipnode = c:getNode("interfaces." .. name .. ".ipaddr");
- if (ipnode) then
- local ip = ipnode:value();
- if ip then
- local cmd = "ifconfig " .. name .. " " .. " inet " .. ip;
- print("Run:" .. cmd)
- print(exec_output(cmd));
- end
- end
- end
-
- config_iface(c, "lan0");
- config_iface(c, "wlan0");
- config_iface(c, "bridge0");
-
-end
-
-mpd = 0;
-
-function configure_mpd_link(c, path, bundle, link)
- if mpd == 0 then
- mpd = MPD:new(c, "127.0.0.1", 5005);
- end
-
--- local bundle = "PPP";
--- local path = "interfaces.wan0.PPP";
-
- mpd:config_bundle(path, bundle);
- mpd:config_link(path, link, bundle);
-end
-
-function run_dhclient(c, iface)
- local path = "interfaces." .. iface .. ".Static";
-
- -- return if no iface.Static node.
- if not c:getNode(path) then
- return (nil);
- end
-
- -- return if Static mode not enabled.
- if c:getNode(path):attr("enable") ~= "true" then
- return (nil);
- end
-
- -- return if no DHCP enabled.
- local dhcp = c:getNode(path .. ".dhcp");
- if not dhcp or dhcp:attr("enable") ~= "true" then
- return (nil);
- end
-
- -- Run dhclient
- print("Run dhclient on " .. iface);
- os.execute(string.format("kill `cat /var/run/dhclient.%s.pid`", iface));
-
- -- Do not execute dhclient if interface is down
- if exec_output("ifconfig -v " .. iface .." | grep 'status: active'") ~= "" then
- os.execute(string.format("/sbin/dhclient -b %s", iface));
- -- XXX, hack to "unplumb" iface if it was not up on boot
- os.execute(string.format("ifconfig %s `ifconfig %s | grep 'ether '`", iface, iface));
- end
-end
-
-
-function configure_wan(c)
- -- TODO: auto enumerate wan links
- --[[
-kldload ng_nat
-kldload ng_ipfw
-
-ngctl mkpeer ipfw: nat 60 out
-ngctl name ipfw:60 nat
-ngctl connect ipfw: nat: 61 in
-ngctl msg nat: setaliasaddr 192.168.101.204
-
-ipfw add 98 netgraph 61 all from any to any in via wan0
-ipfw add 99 netgraph 60 all from any to any out via wan0
-
-sysctl net.inet.ip.fw.one_pass=0
- ]]
-
- kldload({"ng_nat", "ng_ipfw"});
- sysctl("net.inet.ip.fw.one_pass", 0);
-
- local sub = "";
- for _, sub in ipairs({"Static", "PPPoE", "PPP", "PTPP", "L2TP"}) do
- print("sub=" .. sub);
- local path = "interfaces.wan0." .. sub;
- local ifnode = c:getNode(path);
-
- if ifnode and ifnode:attr("enable") == "true" then
- local subtype = c:getNode(path):attr("type");
- print("subtype=" .. subtype);
- if (subtype == "l2tp") then
- -- TODO: multilink have different link names
- elseif (subtype == "pppoe") then
- kldload({"ng_pppoe"});
- os.execute("sleep 1");
- configure_mpd_link(c, path, sub, sub);
- -- Add interface to route select logic
- r.route:f(sub,
- safeValue(c, path .. ".group", "WAN"),
- safeValue(c, path .. ".cost", "1000") - 0,
- "down",
- "LINKDOWN")
- elseif (subtype == "pptp") then
- -- TODO: multilink have different link names
- elseif (subtype == "modem") then
- kldload({"umodem", "u3g"});
- os.execute("sleep 1");
- configure_mpd_link(c, path, sub, sub);
- r.route:f(sub,
- safeValue(c, path .. ".group", "WAN"),
- safeValue(c, path .. ".cost", "1000") - 0,
- "down",
- "LINKDOWN")
- elseif (subtype == "hw") then
- local dev = c:getNode(path .. ".device"):value();
- local dhcp = c:getNode(path .. ".dhcp");
- local dhcpenabled = 0;
- if dhcp and dhcp:attr("enable") == "true" then
- dhcpenabled = true;
- end
-
- os.execute(string.format("ifconfig %s up", dev));
- r.route:f(sub,
- safeValue(c, path .. ".group", "WAN"),
- safeValue(c, path .. ".cost", "1000") - 0,
- "up",
- "LINKDOWN")
-
- local query = "cmd=event";
- query = query .. "&state=up";
- query = query .. "&iface=" .. urlEncode(dev);
- query = query .. "&gw=" .. urlEncode(c:getNode(path .. ".gateway"):value());
- query = query .. "&ip=" .. urlEncode(c:getNode(path .. ".ipaddr"):value());
- query = query .. "&netmask=" .. urlEncode(c:getNode(path .. ".ipaddr"):value());
- query = query .. "&dns1=" .. urlEncode(c:getNode(path .. ".dns1"):value());
- query = query .. "&dns2=" .. urlEncode(c:getNode(path .. ".dns2"):value());
-
- -- Call collector, to let him know about static config, and assign route+dns's
- cmdline = "fetch -qo - \"http://127.0.0.1:8/event.xml?" .. query .. "\"";
- print("Exec: " .. cmdline);
- os.execute(cmdline);
-
- -- Config static first
- local ip = c:getNode(path .. ".ipaddr"):value();
- local dhcp = c:getNode(path .. ".dhcp");
- print("Run: \"ifconfig " .. dev .. " " .. ip .. "\"");
- if os.execute(string.format("ifconfig %s %s", dev, ip)) ~= 0 then
- print("\"ifconfig " .. dev .. " " .. ip .. "\" - failed");
- end
-
- run_dhclient(c, dev); -- if DHCP enabled.
-
- -- XXX temporary FIX for wan0 with static address
- -- if not dhcpenabled and dev == "wan0" then
- os.execute(string.format("route add default %s",
- c:getNode(path .. ".gateway"):value()));
- -- end
-
-
- local nat = c:getNode(path .. ".nat");
- if nat and nat:attr("enable") == "true" then
- local ip = c:getNode(path .. ".ipaddr"):value();
- ip = ip:gsub("/%d+", "");
- os.execute("ngctl mkpeer ipfw: nat 60 out");
- os.execute("ngctl name ipfw:60 wan0nat");
- os.execute("ngctl connect ipfw: wan0nat: 61 in");
- os.execute("ngctl msg wan0nat: setaliasaddr " .. ip);
-
- if dhcpenabled then
- -- pass DHCP via iface
- os.execute("ipfw add 96 allow all from any 67 to any 68 out via " .. dev);
- os.execute("ipfw add 97 allow all from any 68 to any 67 out via " .. dev);
- end
- os.execute("ipfw add 98 netgraph 61 all from any to any in via " .. dev);
- os.execute("ipfw add 99 netgraph 60 all from any to any out via " .. dev);
- else
- if dhcpenabled then
- os.execute("ipfw delete 96");
- os.execute("ipfw delete 97");
- end
- os.execute("ipfw delete 98");
- os.execute("ipfw delete 99");
- end
- else
- print("Unsupported interface type " .. subtype);
- end
- else
- print("Skiping disabled iface " .. path);
- end
- end
-end
-
-dhcpd = 0;
-function start_dhcpd(c)
- if c:getNode("dhcpd.instances.instance[1]"):attr("enable") == "true" then
- if dhcpd == 0 then
- dhcpd = DHCPD:new(c, "dhcpd.instances.instance[1]");
- end
- dhcpd:make_conf();
- dhcpd:write();
- print("Start DHCPD");
- dhcpd:run();
- end
-end
-
-function getopt(args, opts)
- i=1;
- while i < table.getn(arg) do
- if arg[i]:match("^-") then
- opts[arg[i]] = arg[i+1];
- i = i + 1;
- end
- i = i + 1;
- end
- return (opts);
-end
-
-function update_board_info(c)
- for _, oid in pairs({"device.vendor", "device.model", "device.revision", "soc.vendor", "soc.model"}) do
- n = c:getOrCreateNode("info." .. oid);
- n:value(sysctl("hw." .. oid));
- if not n:value() then
- n:value("__NO_DATA__");
- end
- print(tostring(oid) .. "=" .. n:value());
- end
-end
-
-function safeValue(c, name, default)
- node = c:getNode(name);
- if not node then
- if default then
- return default;
- else
- return "";
- end
- end
- return node:value();
-end
-
-function start_dnsmasq(c)
- -- TODO: if DNS-Relay enabled
- -- XXX: dnsmasq able to do DHCPD also
- -- dhcp-range=[interface:<inter-face>,][tag:<tag>[,tag:<tag>],][set:<tag],]<start-addr>,<end-addr>[,<netmask>[,<broadcast>]][,<lease time>]
- -- # --domain=zrouter,192.168.0.100,192.168.0.200
- -- # --dhcp-range=192.168.0.100,192.168.0.200,1h
- -- # --dhcp-authoritative - don't wait for other DHCPDs
- -- # --bogus-priv - NXDOMAIN for private nets
- local_domain = "";
- local_dhcp_range = "";
- if c:getNode("dhcpd.instances.instance[1]"):attr("enable") == "true" then
-
- dhcproot = "dhcpd.instances.instance[1].";
- domain = safeValue(c, dhcproot .. "domain", "zrouter");
- dltime = safeValue(c, dhcproot .. "default-lease-time", 3600);
- mltime = safeValue(c, dhcproot .. "max-lease-time");
- ranges = safeValue(c, dhcproot .. "range.start");
- rangee = safeValue(c, dhcproot .. "range.end");
-
- local_domain = " --domain=" .. domain .."," .. ranges .. "," .. rangee;
- local_dhcp_range = " --dhcp-range=" .. ranges .. "," .. rangee .. "," .. dltime;
-
- end
- dnsmasq_cmd =
- "/sbin/dnsmasq" ..
- " -i bridge0" ..
- local_domain ..
- local_dhcp_range ..
- " --dhcp-authoritative" ..
- " --bogus-priv";
-
- print("Start " .. dnsmasq_cmd);
- os.execute(dnsmasq_cmd);
-end
-
-function start_hostapd(c)
- if c:getNode("hostapd.instance[1]"):attr("enable") == "true" then
- kldload({"wlan_xauth", "wlan_tkip", "wlan_ccmp"});
- aproot = "hostapd.instance[1].";
- driver = "bsd";
- -- <ieee80211d>1</ieee80211d>
- -- <country_code>UA</country_code>
- channel = safeValue(c, aproot .. "channel", 6);
- country_code = safeValue(c, aproot .. "country_code", "UA");
- -- <interface>wlan0</interface>
- interface = safeValue(c, aproot .. "interface", "wlan0");
-
- commandline = string.format("ifconfig %s down",interface);
- if os.execute(commandline) ~= 0 then
- print("Exec: " .. commandline .. " - FAILED");
- end
- commandline = string.format(
- "ifconfig %s country %s channel %s up",
- interface, country_code, channel);
- if os.execute(commandline) ~= 0 then
- print("Exec: " .. commandline .. " - FAILED");
- end
- -- <macaddr_acl>0</macaddr_acl>
- -- <auth_algs>1</auth_algs>
- -- <debug>0</debug>
- -- <hw_mode>g</hw_mode>
- -- <ctrl_interface>/var/run/hostapd</ctrl_interface>
- -- <ctrl_interface_group>wheel</ctrl_interface_group>
- -- <ssid>zrouter</ssid>
- ssid = safeValue(c, aproot .. "ssid", "zrouter");
- -- <!-- Open -->
- -- <wpa>0</wpa>
- wpa = safeValue(c, aproot .. "wpa", 3);
- -- <!-- WPA -->
- -- <!-- <wpa>1</wpa> -->
- -- <!-- RSN/WPA2 -->
- -- <!-- <wpa>2</wpa> -->
- -- <wpa_pairwise>CCMP TKIP</wpa_pairwise>
- wpa_key_mgmt = safeValue(c, aproot .. "wpa_key_mgmt", "WPA-PSK");
- wpa_passphrase = safeValue(c, aproot .. "wpa_passphrase", "freebsdmall");
- wpa_pairwise = safeValue(c, aproot .. "wpa_pairwise", "CCMP");
- ctrl_interface = "/var/run/hostapd";
-
- -- # TARGET
- -- interface=wlan0
- -- driver=bsd
- -- ssid=CACHEBOY_11N_1
- -- wpa=3
- -- wpa_key_mgmt=WPA-PSK
- -- wpa_passphrase=Sysinit891234
- -- wpa_pairwise=CCMP
- -- ctrl_interface=/var/run/hostapd
- hostapd_conf = "/tmp/hostapd." .. interface ..".conf";
-
- hostapd_conf_data =
- "interface=" .. interface .. "\n" ..
- "driver=" .. driver .. "\n" ..
- "country_code=" .. country_code .. "\n" ..
- "channel=" .. channel .. "\n" ..
- "ssid=" .. ssid .. "\n" ..
- "wpa=" .. wpa .. "\n" ..
- "wpa_key_mgmt=" .. wpa_key_mgmt .. "\n" ..
- "wpa_passphrase=" .. wpa_passphrase .. "\n" ..
- "wpa_pairwise=" .. wpa_pairwise .. "\n" ..
- "ctrl_interface=" .. ctrl_interface .. "\n";
-
- local f = assert(io.open(hostapd_conf, "w"));
- f:write(hostapd_conf_data);
- f:close();
-
- hostapd_cmd = "/usr/sbin/hostapd -B " .. hostapd_conf;
-
- print("Start " .. hostapd_cmd);
- os.execute(hostapd_cmd);
-
- end
-end
-
-function start_igmp_fwd(c)
- if not c:getNode("igmp.instance[1]") then
- return;
- end
- if c:getNode("igmp.instance[1]"):attr("enable") == "true" then
- upif = safeValue(c, aproot .. "up", "wan0");
- downif = safeValue(c, aproot .. "down", "lan0");
-
- cmd = "/etc/rc.d/ng_igmpproxy start " .. upif .. " " .. downif;
-
- print("Start " .. cmd);
- os.execute(cmd);
- end
-end
-
--- Globals
-config = {}; -- Unused now
-c = {}; -- XML tree from config.xml
-r = {}; -- Runtime varibles structure
-
-r.routes = {};
-r.routes["default"] = "127.0.0.1";
-r.routes["224.0.0.0/4"] = "-iface bridge0"
-r.tasks = {};
-r.tasks.step = 5; -- Seconds
-r.tasks.periodic = {};
-r.tasks.onetime = {}; -- At some time
-r.tasks.countdown= {}; -- when counter expired
-r.ver = {};
-
-opts = {};
-opts["-P"] = "/var/run/httpd.pid";
-
-if arg then
- opts = getopt(arg, opts);
-end
-
--- Check pidfile
-dofile("lib/pidfile.lua");
-pidfile(opts["-P"]);
-
-
-print("Parse config ...");
-c = Conf:new(load_file("config.xml"));
-
-update_board_info(c);
-read_zrouter_version(r);
-read_rc_conf(r);
-
-print("Initialize board ...");
-
-print("Initialize route select logic ...");
-r.route = ROUTE:new(c, 0);
-
-print("Enable LAN ports ...");
-os.execute("/etc/rc.d/switchctl enablelan");
-print("Init LAN ...");
-configure_lan(c);
-
-print("Start DHCP/DNS Relay ...");
-start_dnsmasq(c);
--- start_dhcpd(c);
-
--- print("Init AP");
--- ap = HOSTAPD:new(c, 1);
--- ap:run();
-
-print("Init AP ...");
-start_hostapd(c);
-
-print("Init IGMP/Multicast forwarding ...");
-start_igmp_fwd(c);
-
-os.execute("ipfw add 100 allow ip from any to any via lo0");
--- os.execute("ipfw add 200 deny ip from any to 127.0.0.0/8");
--- os.execute("ipfw add 300 deny ip from 127.0.0.0/8 to any");
-
--- Hide Web-UI from WAN links
-os.execute("ipfw add 400 allow tcp from any to me 80 via lan0");
-os.execute("ipfw add 500 allow tcp from any to me 80 via bridge0");
--- TODO: If not enabled WAN administration
-os.execute("ipfw add 600 deny tcp from any to me 80");
--- check w/ ipfw NAT-ed packets
-sysctl("net.inet.ip.forwarding", 1);
-sysctl("net.inet.ip.fastforwarding", 1);
-sysctl("net.inet.tcp.blackhole", 2);
-sysctl("net.inet.udp.blackhole", 0);
-sysctl("net.inet.icmp.drop_redirect", 1);
-sysctl("net.inet.icmp.log_redirect", 0);
-sysctl("net.inet.ip.redirect", 0);
-sysctl("net.inet.ip.sourceroute", 0);
-sysctl("net.inet.ip.accept_sourceroute", 0);
-sysctl("net.inet.icmp.bmcastecho", 0);
-sysctl("net.inet.icmp.maskrepl", 0);
-sysctl("net.link.ether.inet.max_age", 30);
-sysctl("net.inet.ip.ttl", 226);
-sysctl("net.inet.tcp.drop_synfin", 1);
-sysctl("net.inet.tcp.syncookies", 1);
--- sysctl("kern.ipc.somaxconn", 32768);
--- sysctl("kern.maxfiles", 204800);
--- sysctl("kern.maxfilesperproc", 200000);
--- ??? -- sysctl("kern.ipc.nmbclusters", 524288);
--- sysctl("kern.ipc.maxsockbuf", 2097152);
-sysctl("kern.random.sys.harvest.ethernet", 0);
-sysctl("kern.random.sys.harvest.interrupt", 0);
--- sysctl("net.inet.ip.dummynet.io_fast", 1);
--- sysctl("net.inet.ip.dummynet.max_chain_len", 2048);
--- sysctl("net.inet.ip.dummynet.hash_size", 65535);
--- sysctl("net.inet.ip.dummynet.pipe_slot_limit", 2048);
--- ?? -- sysctl("net.inet.carp.preempt", 1);
--- ?? -- sysctl("net.inet.carp.log", 2);
--- ?? -- sysctl("kern.ipc.shmmax", 67108864);
-sysctl("net.inet.ip.intr_queue_maxlen", 8192);
-sysctl("net.inet.ip.fw.one_pass", 0);
-sysctl("net.inet.ip.portrange.randomized", 0);
-sysctl("net.inet.tcp.nolocaltimewait", 1);
-
-racoon = 0;
-if racoon == 0 then
- racoon = RACOON:new(c);
-end
-
--- WAN links tasks
-table.insert(r.tasks.countdown, { count=2, task=
- function()
- print("Init WAN links ...");
- configure_wan(c);
- return (true);
- end
- });
--- IPSec links tasks
-table.insert(r.tasks.countdown, { count=10, task=
- function()
- print("Run racoon ...");
- racoon:run();
- return (true);
- end
- });
-
-print("Run server ...");
-start_server( c, config );
-
-
-
-
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/httpd.sh
--- a/profiles/dlink.ua.web/files/etc/www/httpd.sh Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-
-cd /etc/www
-
-echo $$ > /var/run/httpd.sh.pid
-
-./httpd.lua > /var/log/httpd.sh.log 2>&1
-echo -n "./httpd.lua exit with status code $? at " >> /var/log/httpd.sh.log 2>&1
-date >> /var/log/httpd.sh.log 2>&1
-echo "./httpd.lua exit " > /dev/console
-exit 1
-
-while true; do
- ./httpd.lua
-done
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/lib/mpd.lua
--- a/profiles/dlink.ua.web/files/etc/www/lib/mpd.lua Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,315 +0,0 @@
------------------------------------
------------ MPD Class ------------
------------------------------------
---[[
-
-create bundle static B1
-bundle B1
-
-set bundle links L1
-
-set iface addrs 1.1.1.1 2.2.2.2
-set iface route default
-set iface enable on-demand
-set iface idle 900
-set iface enable nat
-set iface up-script /etc/mpd5-up.sh
-set iface down-script /etc/mpd5-down.sh
-
-set ipcp ranges 0.0.0.0/0 0.0.0.0/0
-set ipcp enable req-pri-dns
-set ipcp enable req-sec-dns
-
-open iface
-
-
-
-create link static L1 modem
-create link static L1 pppoe
-create link static L1 pptp
-create link static L1 ltp
-
-set auth authname adbrd****@dsl.ukrtel.net
-set auth password *******
-
-set modem device /dev/cuaU0.0
-set modem var $DialPrefix "DT"
-set modem var $Telephone "#777"
-set modem var $TryPPPEarly "yes"
-set modem var $InitString "+CGDCONT=1,\"IP\",\"internet\""
-set modem script DialPeer
-set modem idle-script Ringback
-set modem watch -cd
-
-set pppoe iface nfe0
-set pppoe service ""
-
-set pptp self 10.1.3.3
-set pptp peer 10.1.0.1
-set pptp disable windowing
-
-set l2tp peer 10.10.10.10
-
-set link disable chap pap
-set link accept chap pap
-set link action bundle B1
-set link enable incoming
-set link max-redial 0
-set link mtu 1460
-set link keep-alive 10 60
-set link bandwidth 14194304
-
-open
-
-
-
-
-
-
-]]
-
---require("sleep");
-
-MPD = {};
-mt = {};
-
-function MPD:new(tree, host, port, debug)
- local t = {};
- if not host or not port then
- print("No host or port");
- return (nil);
- end
-
--- t.socket = socket.connect(host, port);
--- if not t.socket then
--- print("Can't connect to " .. host .. ":" .. port);
--- return (nil);
--- end
- t.host = host;
- t.port = port;
- t.c = tree;
- t.debug = 1;
- return setmetatable(t, mt);
-end
-
-function MPD:msg(s, wait)
-
- if self.debug then print("DEBUG MPD:msg: " .. s); end
- self.socket:settimeout(0.1);
- self.socket:send(s .. "\n");
-
- local err = nil;
- local ret = "";
--- while not err do
- local data, err = self.socket:receive("*a");
- ret = ret .. (data or "");
--- end
- if self.debug then print("DEBUG MPD:msg:return = [[" .. ret .. "]]"); end
-
- return (ret);
-end
-
-function MPD:config_bundle(path, bundle)
- local pathl = path .. ".";
- local node;
-
- self.socket = socket.connect(self.host, self.port);
- if not self.socket then
- print("Can't connect to " .. self.host .. ":" .. self.port);
- return (nil);
- end
- -- Create or select bundle
- self:msg("create bundle static " .. bundle);
- self:msg("bundle " .. bundle);
-
- -- Multilink only
--- self:msg("set bundle links L1");
-
- -- TODO
--- local ip = c:getNode(pathl .. "ipaddr")
--- if ip then
--- string.match(ip:value(), "%d+%.%d+%.%d+%.%d+%/(%d+)")
--- end
-
- local def_local_addr = "0.0.0.0";
- local def_perr_addr = "10.254.254.2";
- if self.c:getNode(pathl .. "gateway"):value() then
- def_perr_addr = self.c:getNode(pathl .. "gateway"):value();
- end
-
- self:msg("set iface addrs " .. def_local_addr .. " " .. def_perr_addr);
- self:msg("set iface up-script /etc/mpd-linkup");
- self:msg("set iface down-script /etc/mpd-linkdown");
- self:msg("set ipcp ranges " .. def_local_addr .. "/0 " .. def_perr_addr .."/0");
-
- -- We should apply default on a up-script run
--- self:msg("set iface route default");
-
- local dod = self.c:getNode(pathl .. "on-demand")
- if dod and dod:attr("enable") == "true" then
- self:msg("set iface enable on-demand");
- self:msg("set iface idle " .. self.c:getNode(pathl .. "idle-time"):value());
- end
-
- self:msg("set iface name " .. bundle);
-
- node = self.c:getNode(pathl .. "nat")
- if node and node:attr("enable") == "true" then
- self:msg("set iface enable nat");
- end
-
- self:msg("set ipcp enable req-pri-dns");
- self:msg("set ipcp enable req-sec-dns");
-
- self:msg("open iface");
-
- self:msg("exit");
- self.socket:close();
-
- return (true);
-end
-
-function MPD:config_link(path, link, bundle)
- local pathl = path .. ".";
- self.socket = socket.connect(self.host, self.port);
- if not self.socket then
- print("Can't connect to " .. self.host .. ":" .. self.port);
- return (nil);
- end
-
- local mpdtype = self.c:getNode(path);
- if mpdtype and mpdtype:attr("type") then
- mpdtype = mpdtype:attr("type");
- else
- return (nil);
- end
-
- self:msg("create link static " .. link .. " " .. mpdtype);
- self:msg("link " .. link);
-
- local user = self.c:getNode(pathl .. "username");
- if user and user:value() and string.len(user:value()) > 0 then
- self:msg("set auth authname " .. user:value());
- local passwd = self.c:getNode(pathl .. "password");
- if passwd and passwd:value() then
- self:msg("set auth password \"" .. passwd:value() .. "\"");
- else
- self:msg("set auth password \"\"");
- end
- end
-
- if mpdtype == "modem" then
- self:msg("set modem device " ..
- self.c:getNode(pathl .. "device"):value() .. "");
- self:msg("set modem var $DialPrefix \"DT\"");
- -- Try to send PPP request, for cases when modem stick at data mode
- -- Leased Line.
- self:msg("set modem var $TryPPPEarly \"yes\"");
- self:msg("set modem var $Telephone \"" ..
- self.c:getNode(pathl .. "phone"):value() .. "\"");
- local initstring = self.c:getNode(pathl .. "init_string");
- if initstring then -- If node
- initstring = initstring:value();
- if initstring and initstring ~= "" then -- If value not empty
- -- Escape double quotes
- initstring = initstring:gsub("\"", "\\\"");
- print("set modem var $InitString \"" .. initstring .. "\"");
- self:msg("set modem var $InitString \"" .. initstring .. "\"");
- end
- end
- self:msg("set modem script DialPeer");
- self:msg("set modem idle-script Ringback");
- self:msg("set modem watch -cd");
- elseif mpdtype == "pppoe" then
- self:msg("set pppoe iface " .. self.c:getNode(pathl .. "device"):value() .. "");
- local service_node = self.c:getNode(pathl .. "service_name");
- if service_node and service_node:value() then
- self:msg("set pppoe service \"" .. service_node:value() .. "\"");
- end
- elseif mpdtype == "pptp" then
- -- TODO:
- self:msg("set pptp self 10.1.3.3");
- self:msg("set pptp peer 10.1.0.1");
- self:msg("set pptp disable windowing");
- end
-
-
- -- TODO
- self:msg("set link disable chap pap");
- self:msg("set link accept chap pap");
- self:msg("set link action bundle " .. bundle);
- self:msg("set link enable incoming");
- self:msg("set link max-redial 0");
- self:msg("set link mtu 1460");
- self:msg("set link keep-alive 10 60");
--- self:msg("set link bandwidth 14194304");
-
- -- Open link
- self:msg("open");
- self:msg("exit");
- self.socket:close();
-
-
-
- return (true);
-end
-
-function MPD:show_bundle(path, bundle)
--- self.socket:refresh();
- self.socket = socket.connect(self.host, self.port);
-
- self:msg("bundle " .. bundle);
- local info = self:msg("show bundle " .. bundle, 500);
- self:msg("exit");
- self.socket:close();
-
- return (true);
-end
-
-function MPD:close()
--- self.socket:close();
-end
-
-mt.__index = MPD;
------------------------------------
--------- End of MPD Class --------
------------------------------------
-
---[[
-Bundle 'PPP' (static):
- Links : PPP[Opened/UP]
- Status : OPEN
- Session time : 1119 seconds
- MultiSession Id: 249-PPP
- Total bandwidth: 28800 bits/sec
- Avail bandwidth: 28800 bits/sec
- Peer authname : ""
-Configuration:
- Retry timeout : 2 seconds
- BW-manage:
- Period : 60 seconds
- Low mark : 20%
- High mark : 80%
- Min conn : 30 seconds
- Min disc : 90 seconds
- Links :
-Bundle level options:
- ipcp enable
- ipv6cp disable
- compression disable
- encryption disable
- crypt-reqd disable
- bw-manage disable
- round-robin disable
-Multilink PPP:
- Status : Inactive
-Traffic stats:
- Input octets : 1322
- Input frames : 19
- Output octets : 1270
- Output frames : 18
- Bad protocols : 0
- Runts : 0
- Dup fragments : 0
- Drop fragments : 0
-]]
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/lib/racoon.lua
--- a/profiles/dlink.ua.web/files/etc/www/lib/racoon.lua Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,368 +0,0 @@
---[[
-
-file /etc/racoon/racoon.conf:
->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-path pidfile "/var/run/racoon.pid";
-path pre_shared_key "/var/db/racoon/racoon_psk.txt"; #location of pre-shared key file
-log notify; #log verbosity setting: set to 'notify' when testing and debugging is complete
-
-padding # options are not to be changed
-{
- maximum_length 20;
- randomize off;
- strict_check off;
- exclusive_tail off;
-}
-
-timer # timing options. change as needed
-{
- counter 5;
- interval 20 sec;
- persend 1;
-# natt_keepalive 15 sec;
- phase1 30 sec;
- phase2 15 sec;
-}
-
-listen # address [port] that racoon will listening on
-{
- isakmp 192.168.90.1 [500];
- isakmp_natt 192.168.90.1 [4500];
-}
-
-include /var/run/racoon.links.conf
-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-Generated /var/run/racoon.links.conf:
->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-include /var/run/racoon.10.0.0.2:500.conf
-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-Generated /var/run/racoon.10.0.0.2:500.conf:
->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-
-remote 10.0.0.2 [500]
-{
- exchange_mode main,aggressive;
- doi ipsec_doi;
- situation identity_only;
- my_identifier address 10.0.0.1;
- peers_identifier address 10.0.0.2;
- lifetime time 28800 sec;
- initial_contact on;
- passive off;
- proposal_check obey;
- generate_policy off;
-
- proposal {
- encryption_algorithm 3des;
- hash_algorithm md5;
- authentication_method pre_shared_key;
- dh_group 5;
- }
-}
-sainfo (address 192.168.0.0/24 any address 192.168.2.0/24 any)
-{
- pfs_group 5;
- lifetime time 3600 sec;
- encryption_algorithm 3des;
- authentication_algorithm hmac_md5;
- compression_algorithm deflate;
-}
-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-
-usage: racoon [-BdFv] [-a (port)] [-f (file)] [-l (file)] [-p (port)]
- -B: install SA to the kernel from the file specified by the configuration file.
- -d: debug level, more -d will generate more debug message.
- -C: dump parsed config file.
- -L: include location in debug messages
- -F: run in foreground, do not become daemon.
- -v: be more verbose
- -a: port number for admin port.
- -f: pathname for configuration file.
- -l: pathname for log file.
- -p: port number for isakmp (default: 500).
- -P: port number for NAT-T (default: 4500).
-
-<ipsec>
- <remote id="0" enable="true">
- <gateway>10.0.0.2:500</gateway>
- <exchange_mode>main,aggressive</exchange_mode>
- <my_identifier>address 10.0.0.1</my_identifier>
- <peers_identifier>address 10.0.0.2</peers_identifier>
- <lifetime>time 28800 sec</lifetime>
- <initial_contact>on</initial_contact>
- <passive>off</passive>
- <proposal_check>obey</proposal_check>
- <nat_traversal>off</nat_traversal>
- <generate_policy>off</generate_policy>
- <proposal>
- <encryption_algorithm>3des</encryption_algorithm>
- <hash_algorithm>md5</hash_algorithm>
- <authentication_method>pre_shared_key</authentication_method>
- <dh_group>5</dh_group>
- <psk>pskpskpsk</psk>
- </proposal>
- </remote>
- <sainfo id="0" enable="true">
- <src>address 192.168.0.0/24 any</src>
- <dst>address 192.168.2.0/24 any</dst>
- <pfs_group>5</pfs_group>
- <lifetime>time 3600 sec</lifetime>
- <encryption_algorithm>3des</encryption_algorithm>
- <authentication_algorithm>hmac_md5</authentication_algorithm>
- <compression_algorithm>deflate</compression_algorithm>
- </sainfo>
- <setkey>
- <line>spdadd 192.168.0.0/24 192.168.2.0/24 any -P out ipsec esp/tunnel/10.0.0.1-10.0.0.2/use</line>
- <line>spdadd 192.168.2.0/24 192.168.0.0/24 any -P in ipsec esp/tunnel/10.0.0.2-10.0.0.1/use</line>
- <line></line>
- <line></line>
- </setkey>
-</ipsec>
-
-
-]]
-
--- require("ipcalc");
-
-RACOON = {};
-local mt = {};
-
-
-function RACOON:new(c, debug)
- t = {};
- t.c = c;
- t.remote_count = 0;
- t.pidfile = "/var/run/racoon.pid";
- t.logfile = "/var/log/racoon.log";
- t.configfile = "/etc/racoon/racoon.conf";
- t.linksfile = "/var/run/racoon.links.conf";
- t.psk = "/var/db/racoon/racoon_psk.txt";
-
- t.debug = debug;
- return setmetatable(t, mt);
-end
-
-function RACOON:make_conf()
-
- -- Generate linksfile
- local f = assert(io.open(self.linksfile, "w"));
- for i = 1,16,1 do
- local ppath = "ipsec.remote[" ..i.. "]";
- local node = self.c:getNode(ppath);
- if node and node:attr("enable") == "true" then
- local gw = self.c:getNode(ppath .. ".gateway"):value();
- if gw then
- f:write("include \"/var/run/racoon." .. gw .. ".conf\";\n");
- t.remote_count = t.remote_count + 1;
- else
- print("Can't get " .. ppath .. ".gateway value");
- return (nil);
- end
- end
- end
- if self.remote_count == 0 then
- -- No remote targets, so nothing todo
- print("No remote targets, so nothing todo");
- return (nil);
- end
-
- for i = 1,16,1 do
- local ppath = "ipsec.sainfo[" ..i.. "]";
- local node = self.c:getNode(ppath);
- if node and node:attr("enable") == "true" then
- f:write("include \"/var/run/racoon.sainfo" .. i .. ".conf\";\n");
- end
- end
- f:close();
-
-
-
- local function addline(ppath, item, prep, confitem)
- local ret = "";
- local val = self.c:getNode(ppath .. "." .. (confitem or item)):value();
- if val then
- ret = (prep or "") .. item .. "\t" .. val .. ";\n";
- else
- print("Can't get " .. ppath .. "." .. (confitem or item) .." value");
- end
- return (ret);
- end
-
- -- XXX: We need setup routes per IPSec tunnel
- local last_gw = nil;
-
- for i = 1,16,1 do
- local ppath = "ipsec.remote[" ..i.. "]";
- local node = self.c:getNode(ppath);
- if node and node:attr("enable") == "true" then
- local gw = self.c:getNode(ppath .. ".gateway"):value();
- local file = "/var/run/racoon." .. gw .. ".conf";
- local remote = gw:gsub(":", " [") .. "]";
- last_gw = gw:gsub(":.*", "");
-
- local conf = "remote\t" .. remote .. "\n";
-
- conf = conf .. "{\n";
- conf = conf .. addline(ppath, "exchange_mode" , "\t");
- conf = conf .. "\tdoi ipsec_doi;\n";
- conf = conf .. "\tsituation identity_only;\n";
- conf = conf .. "\tscript \"/etc/racoon/phase1-up.sh\" phase1_up;\n";
- conf = conf .. "\tscript \"/etc/racoon/phase1-down.sh\" phase1_down;\n";
-
- conf = conf .. addline(ppath, "my_identifier" , "\t");
- conf = conf .. addline(ppath, "peers_identifier" , "\t");
- conf = conf .. addline(ppath, "lifetime" , "\t");
- conf = conf .. addline(ppath, "initial_contact" , "\t");
- conf = conf .. addline(ppath, "passive" , "\t");
- conf = conf .. addline(ppath, "proposal_check" , "\t");
- conf = conf .. addline(ppath, "generate_policy" , "\t");
- conf = conf .. "\tproposal {\n";
- conf = conf .. addline(ppath, "encryption_algorithm", "\t\t", "proposal.encryption_algorithm");
- conf = conf .. addline(ppath, "hash_algorithm" , "\t\t", "proposal.hash_algorithm");
- conf = conf .. addline(ppath, "authentication_method","\t\t", "proposal.authentication_method");
- conf = conf .. addline(ppath, "dh_group" , "\t\t", "proposal.dh_group");
- conf = conf .. "\t}\n";
- conf = conf .. "}\n";
-
- print("IPsec Remote config file " .. file .. ":\n" ..
- conf ..
- "=======================================\n");
-
- local f = assert(io.open(file, "w"));
- f:write(conf);
- f:close();
-
- end
- end
-
- local route_up = nil;
- local route_down = nil;
-
- if last_gw then
- local route_up_file = "/var/run/racoon." .. last_gw .. "_up.sh";
- local route_down_file = "/var/run/racoon." .. last_gw .. "_down.sh";
-
- route_up = assert(io.open(route_up_file, "w"));
- route_down = assert(io.open(route_down_file, "w"));
-
- route_up:write("#!/bin/sh\n");
- route_down:write("#!/bin/sh\n");
- end
-
- for i = 1,16,1 do
- local ppath = "ipsec.sainfo[" ..i.. "]";
- local node = self.c:getNode(ppath);
- if node and node:attr("enable") == "true" then
- local file = "/var/run/racoon.sainfo" .. i .. ".conf";
- local src = self.c:getNode(ppath .. ".src"):value();
- local dst = self.c:getNode(ppath .. ".dst"):value();
-
- dst_cidr = dst:gsub("^%S+%s+(%S+)%s+%S+", "%1");
- if dst_cidr:match("%d+%.%d+%.%d+%.%d+%/%d+") then
- -- Preinstall routes of secured remote nets
- -- "already in table" ignored
- local cmd = string.format(
- "/sbin/route add %s -iface lo0 -reject", dst_cidr);
- print(cmd);
- os.execute(cmd);
- if last_gw then
- route_up:write(string.format("/sbin/route change %s %s\n", dst_cidr, last_gw));
- route_down:write(string.format("/sbin/route change %s -iface lo0 -reject\n", dst_cidr));
- end
- end
-
- local conf = "sainfo (" .. src .. " " .. dst .. ")\n";
- conf = conf .. "{\n";
- conf = conf .. addline(ppath, "pfs_group" , "\t");
- conf = conf .. addline(ppath, "lifetime" , "\t");
- conf = conf .. addline(ppath, "encryption_algorithm" , "\t");
- conf = conf .. addline(ppath, "authentication_algorithm" , "\t");
- conf = conf .. addline(ppath, "compression_algorithm" , "\t");
- conf = conf .. "}\n";
-
- print("IPsec SA info config file " .. file .. ":\n" ..
- conf ..
- "=======================================\n");
-
- local f = assert(io.open(file, "w"));
- f:write(conf);
- f:close();
- end
- end
- if last_gw then
- route_up:close();
- route_down:close();
- end
-
-end
-
-function RACOON:make_psk()
-
- -- Generate linksfile
- local f = assert(io.open(self.psk, "w"));
- for i = 1,16,1 do
- local ppath = "ipsec.remote[" ..i.. "]";
- local node = self.c:getNode(ppath);
- if node and node:attr("enable") == "true" then
- local gw = self.c:getNode(ppath .. ".gateway"):value();
- if gw then
- gw = gw:gsub(":.*", "");
- local psk = self.c:getNode(ppath .. ".proposal.psk");
- if psk then
- f:write(gw .. "\t" .. psk:value() .. "\n");
- end;
- else
- print("Can't get " .. ppath .. ".gateway value");
- return (nil);
- end
- end
- end
- f:close();
- os.execute("/bin/chmod 700 " .. self.psk);
-end
-
-function RACOON:setkey()
- local setkey = "";
-
- for i = 1,16,1 do
- local ppath = "ipsec.setkey.line[" ..i.. "]";
- local node = self.c:getNode(ppath);
- if node then
- local val = node:value();
- if val and string.len(val) > 0 then
- setkey = setkey .. val .. ";\n";
- end
- end
- end
-
- if string.len(setkey) > 0 then
- local sk = io.popen("/sbin/setkey -c ", "w");
- sk:write(setkey);
- sk:close();
- end
-end
-
-function RACOON:run()
- -- FIXME install routes to remote nets via his IPSec gates
- --os.execute("route add 192.168.2.0/24 10.0.0.1");
- os.execute("mkdir -p /var/run/");
- os.execute("mkdir -p /var/db/racoon");
- self:setkey();
- self:make_psk();
- self:make_conf();
- if self.remote_count > 0 then
--- os.execute("echo 'WARNING: RACOON run in DEBUG mode' > /dev/console");
--- os.execute("/sbin/racoon -ddddf " .. self.configfile .. " -l " .. self.logfile);
- os.execute("/sbin/racoon -f " .. self.configfile .. " -l " .. self.logfile);
- end
-end
-
-function RACOON:stop()
-
- os.execute("kill `cat /var/run/racoon.pid`");
-end
-
-mt.__index = RACOON;
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/files/etc/www/lib/utils.lua
--- a/profiles/dlink.ua.web/files/etc/www/lib/utils.lua Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,328 +0,0 @@
---[[
- tdump(table_to_dump)
- return text dump of table
-]]
-
-function tdump(t)
- local function dmp(t, l, k)
- local ret = "";
- if type(t) == "table" then
- ret = ret .. string.format("%s%s:", string.rep(" ", l*2), tostring(k)) .. "\n";
- for k, v in pairs(t) do
- if k ~= "_parent" then
- ret = ret .. dmp(v, l+1, k);
- end
- end
- else
- ret = ret .. string.format("%s%s:%s", string.rep(" ", l*2), tostring(k), tostring(t)) .. "\n";
- end
- return (ret);
- end
- return dmp(t, 1, "root");
-end
-
---[[
- xmldump(table_to_dump)
- return XML subtree of table
-]]
-
-function xmldump(t)
-
- local function xatrdmp(t)
- local ret = '';
-
- for k, v in pairs(t) do
- ret = ret .. string.format(" %s=\"%s\"", tostring(k), tostring(v));
- end
-
- return ret;
- end
-
- local function xdmp(t, l)
- local ret = '';
- local enum = 0;
- local name = t._name or '';
- local attrs = '';
- local childs = '';
- local brk = nil;
-
- if t._attr then
- attrs = attrs .. xatrdmp(t._attr);
- end
-
-
- if t._children then
- for k, v in ipairs(t._children) do
- childs = childs .. xdmp(v, l+1);
- end
-
- if table.maxn (t._children) > 1 then
- brk = 1;
- elseif table.maxn (t._children) == 1 and
- t._children[1]._type ~= "TEXT" then
- brk = 1;
- end
- end
-
- if t._type == "ELEMENT" then
- if brk then
- ret = ret ..
- string.format("%s<%s%s>\n", string.rep(" ", l*4), name, attrs) ..
- childs ..
- string.format("%s</%s>\n", string.rep(" ", l*4), name);
- else
- ret = ret ..
- string.format("%s<%s%s>", string.rep(" ", l*4), name, attrs) ..
- childs ..
- string.format("</%s>\n", name);
- end
- elseif t._type == "TEXT" then
- ret = ret .. t._text;
- elseif t._type == "ROOT" then
- ret = childs;
- elseif t._type == "COMMENT" then
- ret = ret ..
- string.format("%s<!-- %s -->\n", string.rep(" ", l*4), t._text);
--- else
--- print("Parse Error Unknow type \"" .. (t._type or "(nil)") .. "\"");
- end
-
- -- print(ret);
- return ret;
- end
-
- return xdmp(t, -1);
-end
-
-
-
---[[
- read_file(_file)
- return data from file
-]]
-function read_file(_file)
- local xml;
-
- if (_debug) then
- io.write ( "File: ".._file.."\n" )
- end
-
- local f, e = io.open(_file, "r")
- if f then
- xml = f:read("*a")
- else
- return ("Can't open file " .. _file);
- end
-
- return xml;
-end
-
-function inc(_file)
- return read_file(_file);
-end
-
-function load_file(_file)
- h = domHandler();
- x = xmlParser(h);
- index = 1
-
- x.options.expandEntities = 1; -- nil;
- x:parse(read_file(_file));
-
- return (h.root);
-end
-
-function save_file(_file, _data)
- local out, e = io.open(_file, "w");
- if out then
- out:write(_data);
- assert(out:close());
- else
- print(e);
- return (nil);
- end
-
- return (true);
-end
-
-function checked(v)
- if (v and v ~= "" and v ~= "false") then
- return "checked";
- end
- return "";
-end
-
-function field(v)
- if (v and v ~= "") then
- return v;
- end
- return "";
-end
-
-function conf_table(id, header, rootpath, fields)
-
- local ret =
- "<div id=\"" .. id .. "\" class=\"yui3-module boxitem\">\n" ..
- " <div class=\"yui3-hd\">\n" ..
- " <h4>" .. header .."</h4>\n" ..
- " </div>\n" ..
- " <div class=\"yui3-bd\">\n" ..
- " <form method=\"POST\" target=\"/cmd.xml\" onchange=\"document.getElementById('" .. id .. "_update_button').disabled = false; return true;\">\n" ..
- " <input type=\"hidden\" name=\"path\" value=\"" .. rootpath .."\" />\n" ..
- " <input type=\"hidden\" name=\"cmd\" value=\"setmany\" />\n" ..
- " <table>\n";
-
-
- for i,v in ipairs(fields) do
- if v.type == "attr" then
- local _, _, nodestr, attrstr = string.find(v.node, "(.-)%:(.*)");
-
- print(string.format("node='%s' attr='%s'", nodestr or "(no node)", attrstr or "(no attr)"));
-
- if not nodestr then
- nodestr = rootpath;
- else
- nodestr = rootpath .. "." .. nodestr;
- end
-
- if not attrstr then
- ret = ret .. "Error parsing attr fileld at path " .. v.node;
- else
-
- attrvalue = c:getNode(nodestr):attr(attrstr) or
- "Error getting attribute value of " .. nodestr .. ":attr(" .. attrstr .. ")";
- local inserted = "";
- if v.htmltype == "checkbox" then
- inserted = checked(attrvalue);
- elseif v.htmltype == "text" then
- inserted = " value=\"" .. attrvalue .. "\"";
- else
- inserted = "Unknown htmltype " .. v.htmltype;
- end
- ret = ret ..
- " <tr>\n" ..
- " <td>" .. v.label .. ":</td>\n" ..
- " <td><input name=\"smattr:" .. v.node .. "\" " ..
- "type=\"" .. v.htmltype .. "\" " ..
- inserted ..
- " onchange=\"" ..
- "document.getElementById(" ..
- "'" .. id .. "_update_button'" ..
- ").disabled = false; return true;\"/></td>\n" ..
- " </tr>\n";
- end
- elseif v.type == "node" then
- local nodestr = v.node;
- if not nodestr then
- nodestr = rootpath;
- else
- nodestr = rootpath .. "." .. nodestr;
- end
-
- local n = c:getNode(nodestr);
- if n then
- nodevalue = n:value() or "";
- else
- nodevalue = "Error: node " .. nodestr .. " not found";
- end
-
- nodevalue = nodevalue:gsub("\"",""");
-
- ret = ret ..
- " <tr>\n" ..
- " <td>" .. v.label .. ":</td>\n" ..
- " <td><input type=\"" .. v.htmltype .. "\" name=\"sm:" .. v.node .. "\" value=\"" ..
- nodevalue ..
- "\" onchange=\"document.getElementById(" ..
- "'" .. id .. "_update_button'" ..
- ").disabled = false; return true;\"/></td>\n" ..
- " </tr>\n";
- end
- end
-
- ret = ret ..
- " <tr>\n" ..
- " <td> </td>\n" ..
- " <td><input id=\"" .. id .. "_update_button\" type=\"button\" name=\"Update\" value=\"Update\" disabled onclick=\"" ..
- "send_update(this.form, function(x) { document.getElementById('" .. id .. "_update_button').disabled = true; })" ..
- "\"/></td>\n" ..
- " </tr>\n" ..
- " </table>\n" ..
- " </form>\n" ..
- " </div>\n" ..
- "</div>\n";
-
- return (ret);
-end
-
-function peritem(item, sub)
- if type(item) == "table" then
-
- for k, v in pairs(item) do
- sub(v);
- end
- else
- sub(item);
- end
-end
-
-function kldload(module)
- function kldload_one(module)
- if debug then
- print("kldstat -q -m " .. module .. " || kldload " .. module);
- end
- os.execute("kldstat -q -m " .. module .. " || kldload " .. module);
- end
- peritem(module, kldload_one);
-end
-
-function strip_quote (str)
- str = str:gsub("^\"(.*)\"$", "%1");
- str = str:gsub("^\'(.*)\'$", "%1");
- return str;
-end
-
-function parse_kv_file (ar, file)
- local err = nil;
- if not file then
- return "Filename required";
- end
-
- if type(ar) ~= "table" then
- return "First argument must be table";
- end
-
- local f = io.open(file);
- if not f then
- return "Can't open \"" .. file .. "\"\n";
- end
-
- local count = 0;
- while true do
- local line = f:read('*line');
- if line == nil then break end -- EOF
- if count > 100 then
- -- to much lines
- err = "Lines count more than 100 \"" .. file .. "\n";
- break;
- end
-
- line = line:gsub("#.*$", ""); -- Strip comments
- line = line:gsub("%s*$", ""); -- Strip whitespaces
-
- if line ~= "" then -- Do only if line not empty
- match, _, name, value = line:find("^(.+)=(.+)%s*$");
- if not match then
- err = "Wrong format in \"" .. file .. "\n";
- break;
- end
- ar[strip_quote(name)] = strip_quote(value);
- end
-
- count = count + 1;
- end
-
- f:close();
- return err;
-end
-
diff -r 12a79832118b -r 7e979416094e profiles/dlink.ua.web/profile.mk
--- a/profiles/dlink.ua.web/profile.mk Thu Sep 20 15:57:10 2012 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-
-
-
-# Requirement of other profiles
-# XXX not yet supported, TARGET_PROFILES used as simple list
-#TARGET_PROFILES+=shttpd
-
-WORLD_SUBDIRS_ZROUTER+= \
- target/usr.bin/lua/
-
-WORLD_SUBDIRS_USR_SBIN+= \
- tcpdump
-
More information about the Zrouter-src
mailing list