Initial import

This commit is contained in:
belliash
2013-08-14 13:56:12 +02:00
parent f392b8ef47
commit 9318b5b444
45 changed files with 1687 additions and 4 deletions

View File

@@ -0,0 +1,8 @@
#!/usr/bin/cbsi
<h1><%@ About Firmware %></h1>
<p><%@ Kagera Router Management Utility is a Linux based alternative Open Source firmware for powering a variety of WLAN routers. The main emphasis lies on providing the easiest possible handling while at the same time supporting a great number of functionalities within the framework of the respective hardware platform used. Kagera is built atop the OpenWrt project, which has great Linux Kernel support for many embedded devices, bringing its strengths and opens a whole new world of possibilities. This project would clearly not have been possible without all the hard work of the OpenWrt Team. More information about the firmware can be found on the <a href="http://kagera.eu.org/" target="_blank">Kagera project website</a>. %></p>
<h2><%@ License Information %></h2>
<p><%@ Kagera Router Management Utility is a free software; you can redistribute it and/or modify it under the terms of the <a href="http://www.gnu.org/licenses/gpl-2.0.html" target="_blank">GNU General Public License version 2.0</a> as published by the Free Software Foundation. Part of this license outlines requirements for derivative works, such as plugins or themes. There is some legal grey area regarding what is considered a derivative work, but we feel strongly that plugins and themes are derivative work and thus inherit the GPL license. %></p>
<p><%@ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License v2 for more details. %></p>

View File

@@ -0,0 +1,17 @@
#!/usr/bin/cbsi
<h1><%@ Run Custom Commands %></h1>
<form>
<textarea id="cmds"></textarea>
<div class="hidden">
<h2><%@ Output %></h2>
<div class="code">
<pre id="output"></pre>
</div>
</div>
<hr />
<div class="formctrl">
<input type="reset" value="<%@ Reset %>" />
<input type="button" value="<%@ Run %>" onclick="runScript()" />
</div>
</form>

View File

@@ -0,0 +1,114 @@
#!/usr/bin/cbsi
<%
. /etc/version && . /etc/openwrt_release
MEM_FREE=$(sed -e '/^MemFree: /!d; s#MemFree: *##; s# kB##g' /proc/meminfo | awk '{printf "%.2f", $1/1000}')
MEM_TOTAL=$(sed -e '/^MemTotal: /!d; s#MemTotal: *##; s# kB##g' /proc/meminfo | awk '{printf "%.2f", $1/1000}')
MEM_PERCENT=$(echo "${MEM_FREE} ${MEM_TOTAL}" | awk '{printf "%.2f", $1*100/$2}')
UPTIME=$(cat /proc/uptime | cut -d '.' -f1)
UPTIME_S=$(printf "%02d" $((UPTIME%60)))
UPTIME_M=$(printf "%02d" $((UPTIME/60%60)))
UPTIME_H=$(printf "%02d" $((UPTIME/60/60%24)))
UPTIME_D=$((UPTIME/60/60/24))
if [ -f /sbin/swconfig ]; then
BOARD=$(cat /tmp/sysinfo/board_name)
case "${BOARD}" in
routerstation-pro)
SWPORTS="4 3 2"
WANPORT="eth0";;
*)
SWPORTS="";;
esac
if [ "${SWPORTS}" != "" ]; then
if [ "$(ethtool ${WANPORT} | grep "Link detected" | cut -d" " -f3)" == "no" ]; then
STATUS="-----"
IMG="off"
else
LINK=$(ethtool ${WANPORT} | grep "Speed" | cut -d" " -f2)
IMG="on"
case "${LINK}" in
"1000Mb/s") STATUS="1 Gbit/s";;
"100Mb/s") STATUS="100 Mbit/s";;
*) STATUS="10 Mbit/s";;
esac
fi
PORTNO="${PORTNO}<td>WAN</td><td></td>"
PORTIMG="${PORTIMG}<td><img src=\"themes/kagera/images/rj45${IMG}.gif\" alt=\"${IMG}\" /></td><td></td>"
PORTSPEED="${PORTSPEED}<td>${STATUS}</td><td></td>"
for PORT in ${SWPORTS}; do
LINK=$(swconfig dev switch0 port $PORT get link | cut -f2,3 -d" ")
N=$((N+1))
case "${LINK}" in
"link:up speed:1000baseT") STATUS="1 Gbit/s" IMG="on";;
"link:up speed:100baseT") STATUS="100 Mbit/s" IMG="on";;
"link:up speed:10baseT") STATUS="10 Mbit/s" IMG="on";;
"link:down") STATUS="-----" IMG="off";;
esac
PORTNO="${PORTNO}<td>LAN ${N}</td>"
PORTIMG="${PORTIMG}<td><img src=\"themes/kagera/images/rj45${IMG}.gif\" alt=\"${IMG}\" /></td>"
PORTSPEED="${PORTSPEED}<td>${STATUS}</td>"
done
fi
fi
%>
<h1><%@ System Overview %></h1>
<table class="confdata">
<tr>
<td class="name"><%@ Router Model %></td>
<td class="value"><% [ -e /tmp/sysinfo/model ] && cat /tmp/sysinfo/model || %><%@ Unknown %></td>
</tr>
<tr>
<td class="name"><%@ Chipset %></td>
<td class="value"><% cat /proc/cpuinfo | sed 2,20d | cut -c16- %></td>
</tr>
<tr>
<td class="name"><%@ CPU Frequency %></td>
<td class="value"><% dmesg | grep Clocks: | awk -F: '{print $3}' | cut -d. -f1 %> <small>MHz</small></td>
</tr>
<tr>
<td class="name"><%@ Flash Size %></td>
<td class="value"><% dmesg | grep m25p80 | grep Kbytes | cut -d '(' -f2 | cut -d ' ' -f1 | awk '{print $1/1024}' %> <small>MB</small></td>
</tr>
<tr>
<td class="name"><%@ Firmware Version %></td>
<td class="value"><%: ${SYSTEM_VERSION} %>, <%@ built on %>&nbsp;<%: ${SYSTEM_BUILDDATE} %></td>
</tr>
<tr>
<td class="name"><%@ OpenWrt Revision %></td>
<td class="value"><%: ${DISTRIB_REVISION} %></td>
</tr>
<tr>
<td class="spacer" colspan="2"></td>
</tr>
<tr>
<td class="name"><%@ Current Date & Time %></td>
<td class="value"><% date "+%d/%m/%Y %H:%M:%S %Z" %></td>
</tr>
<tr>
<td class="name"><%@ System Uptime %></td>
<td class="value"><%: ${UPTIME_D} %>&nbsp;<%@ days %>, <%: ${UPTIME_H}:${UPTIME_M}:${UPTIME_S} %></td>
</tr>
<tr>
<td class="name"><%@ Total / Free Memory %></td>
<td class="value"><%: ${MEM_TOTAL} %> <small>MB</small> / <%: ${MEM_FREE} %> <small>MB (<%: ${MEM_PERCENT}% %>)</small></td>
</tr>
<tr>
<td class="name"><%@ CPU Load <small>(1 / 5 / 15 mins)</small> %></td>
<td class="value"><% awk '{print $1 " / " $2 " / " $3}' /proc/loadavg %></td>
</tr>
</table>
<% if [ "${SWPORTS}" != "" ]; then %>
<h2><%@ Ethernet Ports State %></h2>
<table class="portstate">
<tr class="portno">
<%: ${PORTNO} %>
</tr>
<tr class="portimg">
<%: ${PORTIMG} %>
</tr>
<tr class="portspeed">
<%: ${PORTSPEED} %>
</tr>
</table>
<% fi %>

View File

@@ -0,0 +1,25 @@
#!/usr/bin/cbsi
<h1><%@ System Logs %></h1>
<table class="confdata">
<tr>
<td class="name"><%@ Displayed Logs %></td>
<td class="value">
<label class="select"><select id="switch" onchange="switchView('output', this.value);">
<option value="syslog" selected="selected"><%@ General System Logs %></option>
<option value="krnlog"><%@ Kernel Messages %></option>
<option value="prclog"><%@ List of Processes %></option>
<option value="mntlog"><%@ Mount Points %></option>
</select></label>
</td>
</tr>
<tr>
<td class="spacer" colspan="2"></td>
</tr>
</table>
<div class="code" id="output">
<pre id="syslog"><% logread %></pre>
<pre id="krnlog"><% dmesg %></pre>
<pre id="prclog"><% ps %></pre>
<pre id="mntlog"><% mount %></pre>
</div>

View File

@@ -0,0 +1,32 @@
-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAM/u0ggHo+9vrGdJ
0vFAMFc9zoVE2NeNfy1bo/B1bTRvYM+9k5w1cB16A8eLXGnF+12t2BPsLdAfw6XH
WhsRQ5YWE73MYpwcL2JVPnUyOfPpNHiI3wF7TeINVZI7YRiezUdMJvroCcYyQamt
y3xRLRlfHHrKdC396lAlrA9Y1YbzAgMBAAECgYB6rYKJbkiQWaiz/+BOqfpbXoHc
KvRsqHTiQ/EDS6S0jQnnRwgx321YVsaoElbhqQdXC9wyVOPqqPL7ehR1Z8ghUTrL
5aoNXhTXTEd5KqQQsiR3NvY/s7V74wZRz2nMBF57wPFovQu1ddgeH/ZUR1HT9XTY
8a+bv1JrhObGv9JMUQJBAP4yHT97tY42YeIOdNmP4BufpVdMK4IvF0nkWdBssBvJ
aDHMv40z92Uf08EFRdxmEZglHUvlbgR6dMW7lFE2aQ8CQQDRaKT08QzSasp/CJx6
Nd+XC3KSzAkBrgQVP1+Z+m/cGfHHA+zXomaKMtnvw4ywFf6vWeSzbX2gtC2VSbEN
M9vdAkA5qAJMUPIIVLt0+9RzOJgbi+WD3IoN2EKPBxV8GfsEAnX4vblA/OWDcWml
YV3MNPaOrPRtL5f5uhDcfMSSeyXvAkEAtUSaFhVa/gHHC7POj9N2mm8kXIIWAcg6
bJIRFV692Y7zxUxWhkpj7JkcIfnqHLrNXci4ucC7kJKnKqVBh6YuWQJBAPfMcEEl
OHplIKZtBGVkX4PQFnhTJIO0hNCgdMNjw8Xn2kyvnc22fO3iKeLjPBssi6u1bdPF
N4il4Ch/p4Kr+Pc=
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICfzCCAeigAwIBAgIJAKL/ci6AhIbiMA0GCSqGSIb3DQEBBQUAMHYxCzAJBgNV
BAYTAkVVMRcwFQYDVQQIEw5FdXJvcGVhbiBVbmlvbjEjMCEGA1UEChMaQXNpbyBT
b2Z0d2FyZSBUZWNobm9sb2dpZXMxKTAnBgNVBAMTIEthZ2VyYSBSb3V0ZXIgTWFu
YWdlbWVudCBVdGlsaXR5MB4XDTEzMDUwMTExMTQyNFoXDTMzMTExMjExMTQyNFow
djELMAkGA1UEBhMCRVUxFzAVBgNVBAgTDkV1cm9wZWFuIFVuaW9uMSMwIQYDVQQK
ExpBc2lvIFNvZnR3YXJlIFRlY2hub2xvZ2llczEpMCcGA1UEAxMgS2FnZXJhIFJv
dXRlciBNYW5hZ2VtZW50IFV0aWxpdHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
AoGBAM/u0ggHo+9vrGdJ0vFAMFc9zoVE2NeNfy1bo/B1bTRvYM+9k5w1cB16A8eL
XGnF+12t2BPsLdAfw6XHWhsRQ5YWE73MYpwcL2JVPnUyOfPpNHiI3wF7TeINVZI7
YRiezUdMJvroCcYyQamty3xRLRlfHHrKdC396lAlrA9Y1YbzAgMBAAGjFTATMBEG
CWCGSAGG+EIBAQQEAwIGQDANBgkqhkiG9w0BAQUFAAOBgQCZJJzk1vhwnsgSXoSb
Q2ycYOfqnxQ7SHCZgmBWTsLs3COWf663KD1DwbUx8fqioXuhYvjZqGDbb/F2FpB6
Lv4uf/+O4VgNaum3E3TZW1M52/Oge3Zf0x95UWbh5+I0WmD+DqeXBXt1215axpVo
6wthLQu85vsgaVLbc2k8aEAxTw==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,14 @@
msgid "About Firmware"
msgstr ""
msgid "Kagera Router Management Utility is a Linux based alternative Open Source firmware for powering a variety of WLAN routers. The main emphasis lies on providing the easiest possible handling while at the same time supporting a great number of functionalities within the framework of the respective hardware platform used. Kagera is built atop the OpenWrt project, which has great Linux Kernel support for many embedded devices, bringing its strengths and opens a whole new world of possibilities. This project would clearly not have been possible without all the hard work of the OpenWrt Team. More information about the firmware can be found on the <a href="http://kagera.eu.org/" target="_blank">Kagera project website</a>."
msgstr ""
msgid "License Information"
msgstr ""
msgid "Kagera Router Management Utility is a free software; you can redistribute it and/or modify it under the terms of the <a href="http://www.gnu.org/licenses/gpl-2.0.html" target="_blank">GNU General Public License version 2.0</a> as published by the Free Software Foundation. Part of this license outlines requirements for derivative works, such as plugins or themes. There is some legal grey area regarding what is considered a derivative work, but we feel strongly that plugins and themes are derivative work and thus inherit the GPL license."
msgstr ""
msgid "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License v2 for more details."
msgstr ""

View File

@@ -0,0 +1,11 @@
msgid "Run Custom Commands"
msgstr ""
msgid "Output"
msgstr ""
msgid "Reset"
msgstr ""
msgid "Run"
msgstr ""

View File

@@ -0,0 +1,59 @@
msgid "Executing commands..."
msgstr ""
msgid "Applying system changes..."
msgstr ""
msgid "Restarting services..."
msgstr ""
msgid "Downloading firmware image..."
msgstr ""
msgid "Flashing image..."
msgstr ""
msgid "Rebooting device..."
msgstr ""
msgid "Do you really want to reboot?"
msgstr ""
msgid "Reboot"
msgstr ""
msgid "Logout"
msgstr ""
msgid "Status"
msgstr ""
msgid "Overview"
msgstr ""
msgid "Run Command"
msgstr ""
msgid "System Logs"
msgstr ""
msgid "System"
msgstr ""
msgid "About Kagera"
msgstr ""
msgid "Authorization Required"
msgstr ""
msgid "User Name:"
msgstr ""
msgid "Password:"
msgstr ""
msgid "Reset"
msgstr ""
msgid "Login"
msgstr ""

View File

@@ -0,0 +1,44 @@
msgid "System Overview"
msgstr ""
msgid "Router Model"
msgstr ""
msgid "Unknown"
msgstr ""
msgid "Chipset"
msgstr ""
msgid "CPU Frequency"
msgstr ""
msgid "Flash Size"
msgstr ""
msgid "Firmware Version"
msgstr ""
msgid "built on"
msgstr ""
msgid "OpenWrt Revision"
msgstr ""
msgid "Current Date & Time"
msgstr ""
msgid "System Uptime"
msgstr ""
msgid "days"
msgstr ""
msgid "Total / Free Memory"
msgstr ""
msgid "CPU Load <small>(1 / 5 / 15 mins)</small>"
msgstr ""
msgid "Ethernet Ports State"
msgstr ""

View File

@@ -0,0 +1,17 @@
msgid "System Logs"
msgstr ""
msgid "Displayed Logs"
msgstr ""
msgid "General System Logs"
msgstr ""
msgid "Kernel Messages"
msgstr ""
msgid "List of Processes"
msgstr ""
msgid "Mount Points"
msgstr ""

View File

@@ -0,0 +1,104 @@
#!/usr/bin/cbsi
<%
THEME=$(uci get kagera.webui.theme)
TIMEOUT=$(uci get kagera.webui.timeout)
if [ "${GET_option}" == "logout" ]; then
eval $(sessmgr -l -r "index.sh?option=overview")
elif [ "${POST_sessopen}" == "1" ] && [ -n "${POST_sesspass}" ]; then
sleep 3
eval $(sessmgr -u "${POST_sessuser}" -p "${POST_sesspass}" -b "${COOKIE_browser_time}" -a "${HTTP_USER_AGENT}" -i "${REMOTE_ADDR}" -t "${TIMEOUT}" -r "index.sh?option=${GET_option}")
fi
eval $(sessmgr -c "${COOKIE_kagera_sid}" -u "${COOKIE_kagera_usr}" -e "${COOKIE_kagera_exp}" -b "${COOKIE_browser_time}" -a "${HTTP_USER_AGENT}" -i "${REMOTE_ADDR}" -t "${TIMEOUT}")
[ -f /usr/lib/kagera/config/${GET_option}.cbsi ] || GET_option="overview"
if [ -n "${GET_refresh}" ]; then
echo "Content-type: text/plain; charset=utf-8"
if [ -n "${VALIDSESS}" ]; then
if [ "${GET_runcommand}" == "1" ]; then
if [ -n "${POST_commands}" ]; then
echo ""
echo "${POST_commands}" | tr -d "\r" > /tmp/run.sh
sh /tmp/run.sh
rm -f /tmp/run.sh
fi
else
/usr/bin/cbsi /usr/lib/kagera/config/${GET_option}.cbsi
fi
fi
exit
fi
echo "Content-type: text/html; charset=utf-8"
. /etc/version
%>
<!DOCTYPE html>
<html>
<head>
<title>Kagera Router Management Utility</title>
<meta name="robots" content="noindex,nofollow" />
<link rel="shortcut icon" href="/themes/kagera/images/favicon.ico"/>
<link rel="stylesheet" href="<%: themes/${THEME}/style.css %>" />
<script src="scripts/kagera.js" type="text/javascript"></script>
<script src="<%: scripts/${GET_option}.js %>" type="text/javascript"></script>
<script>
var sysmsg = ["<%@ Executing commands... %>", "<%@ Applying system changes... %>", "<%@ Restarting services... %>", "<%@ Downloading firmware image... %>", "<%@ Flashing image... %>", "<%@ Rebooting device... %>", "<%@ Do you really want to reboot? %>"];
var multimenu = <% uci get kagera.webui.multimenu %>;
</script>
</head>
<body>
<% if [ "${VALIDSESS}" == "1" ]; then %>
<div class="webui">
<div class="header">
<div class="logo">
<span id="title"><%: ${SYSTEM_DESCRIPTION} %></span>
<span id="version"><%: ${SYSTEM_VERSION} %></span>
</div>
<div class="controls">
<input type="button" class="creboot" value="<%@ Reboot %>" onclick="reboot(true);" />
<input type="button" class="clogout" value="<%@ Logout %>" onclick="logout();" />
</div>
</div>
<div class="body">
<div id="mainmenu">
<div class="navbox">
<span class="navheader"><%@ Status %></span>
<ul class="navbody">
<li><a href="index.sh?option=overview"><%@ Overview %></a></li>
<li><a href="index.sh?option=command"><%@ Run Command %></a></li>
<li><a href="index.sh?option=syslogs"><%@ System Logs %></a></li>
</ul>
<span class="navfooter"></span>
</div>
<div class="navbox">
<span class="navheader"><%@ System %></span>
<ul class="navbody">
<li><a href="index.sh?option=about"><%@ About Kagera %></a></li>
</ul>
<span class="navfooter"></span>
</div>
</div>
<div id="content">
<% /usr/bin/cbsi -t ${GET_option} /usr/lib/kagera/config/${GET_option}.cbsi %>
</div>
</div>
<div class="footer">
Copyright&copy; 2010-2013, <a href="http://www.asiotec.eu.org" target="_blank">Asio Software Technologies</a>
</div>
<% else %>
<div class="loginbox">
<div class="body">
<form action="<%: index.sh?option=${GET_option} %>" method="POST">
<h1><%@ Authorization Required %></h1>
<label><%@ User Name: %></label><input type="text" name="sessuser" autofocus="autofocus" />
<label><%@ Password: %></label><input type="password" name="sesspass" />
<hr />
<div class="formctrl">
<input type="hidden" name="sessopen" value="1" />
<input type="reset" value="<%@ Reset %>" />
<input type="submit" value="<%@ Login %>" />
</div>
</form>
</div>
<% fi %>
</div>
<div id="dim"></div><div id="msg"><img src="<%: themes/${THEME}/images/loader.gif %>" alt="L" /></div>
</body>
</html>

View File

@@ -0,0 +1,11 @@
function runScript() {
toggleMsg(sysmsg[0]);
var commands = [];
commands.push(document.getElementById("cmds").value);
statefunc = function(req) {
document.getElementById("output").innerHTML = req.responseText;
document.getElementsByClassName("hidden")[0].style.display = "inline";
toggleMsg();
}
runCommand(commands.join("\n"), statefunc, false);
}

View File

@@ -0,0 +1,245 @@
function getRequest() {
var req;
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
return req;
}
function initMenu() {
this.menu = document.getElementById("mainmenu");
this.submenus = this.menu.getElementsByTagName("div");
this.oneSmOnly = 3;
this.collapseMenu = function(submenu) {
var minHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
var moveBy = Math.round(4 * submenu.getElementsByTagName("a").length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight - moveBy;
if(newHeight > minHeight) {
submenu.style.height = newHeight + "px";
} else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "collapsed";
mainInstance.memorize();
}
}, 30);
};
this.collapseOthers = function(submenu) {
if(!multimenu) {
for(var i = 0; i < this.submenus.length; i++) {
if(this.submenus[i] != submenu && this.submenus[i].className != "collapsed") {
this.collapseMenu(this.submenus[i]);
}
}
}
};
this.expandMenu = function(submenu) {
var fullHeight = submenu.getElementsByTagName("span")[0].offsetHeight;
var links = submenu.getElementsByTagName("a");
for(var i = 0; i < links.length; i++) {
fullHeight += links[i].offsetHeight;
}
var moveBy = Math.round(4 * links.length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight + moveBy;
if(newHeight < fullHeight) {
submenu.style.height = newHeight + "px";
} else {
clearInterval(intId);
submenu.style.height= "";
submenu.className = "navbox";
mainInstance.memorize();
}
}, 30);
this.collapseOthers(submenu);
};
this.init = function() {
var mainInstance = this;
for(var i = 0; i < this.submenus.length; i++) {
this.submenus[i].getElementsByTagName("span")[0].onclick = function() {
if(this.parentNode.className == "collapsed") {
mainInstance.expandMenu(this.parentNode);
} else {
mainInstance.collapseMenu(this.parentNode);
}
};
}
var links = this.menu.getElementsByTagName("a");
links[0].className = "active";
for(var i = 0; i < links.length; i++) {
if(links[i].href == document.location.href) {
links[0].className = "";
links[i].className = "active";
break;
}
}
var regex = new RegExp("kagera_" + encodeURIComponent("mainmenu") + "=([01]+)");
var match = regex.exec(document.cookie);
if(match) {
var states = match[1].split("");
for(var i = 0; i < states.length; i++) {
this.submenus[i].className = (states[i] == 0 ? "collapsed" : "navbox");
}
} else if(!multimenu) {
this.collapseOthers(this.submenus[0]);
}
};
this.memorize = function() {
var states = new Array();
for(var i = 0; i < this.submenus.length; i++) {
states.push(this.submenus[i].className == "collapsed" ? 0 : 1);
var d = new Date();
d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000));
document.cookie = "kagera_" + encodeURIComponent("mainmenu") + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";
}
};
}
function initTips() {
var help = document.getElementById("help")
if(help) {
var abbrs = document.getElementsByTagName("abbr");
var tips = help.getElementsByTagName("div");
var mouseX, mouseY;
document.onmousemove = function(e) {
mouseX = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
mouseY = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
};
for(var i = 0; i < abbrs.length; i++) {
abbrs[i].onclick = function() {
for(var a = 0; a < tips.length; a++) {
if("s" + tips[a].id == this.id) {
tips[a].style.left = mouseX + "px";
tips[a].style.top = (mouseY - (tips[a].offsetHeight + 3)) + "px";
tips[a].style.visibility = "visible";
break;
}
}
};
abbrs[i].onmouseout = function() {
for(var a = 0; a < tips.length; a++) {
if("s" + tips[a].id == this.id) {
tips[a].style.visibility = "hidden";
break;
}
}
};
}
}
}
function logout() {
window.location.href="index.sh?option=logout";
}
function reboot(ask) {
var boot = true;
if(ask) {
var answer = confirm(sysmsg[6]);
if(!answer) {
boot = false;
}
}
if(boot) {
toggleMsg(sysmsg[5]);
statefunc = function() {
window.location.href="index.sh?option=overview";
}
testcon = function() {
runRequest("GET", document.location.href, "&refresh=1", statefunc, false);
}
runCommand("reboot", statefunc, true);
setInterval("testcon()", 5000);
}
}
function refreshData(func) {
statefunc = function(req) {
document.getElementById("content").innerHTML = req.responseText;
var target = document.getElementById("content");
var scripts = target.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++) {
eval(scripts[i].innerHTML);
}
if(typeof func == "function") {
func();
}
}
runRequest("GET", document.location.href, "&refresh=1", statefunc, false);
}
function runCommand(params, statefunc, noreload) {
runRequest("POST", document.location.href + "&refresh=1&runcommand=1", "commands=" + params, statefunc, noreload);
}
function runRequest(method, url, params, statefunc, noreload) {
var req = getRequest();
if(req) {
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
if(req.responseText != "") {
statefunc(req);
} else if(!noreload) {
location.reload(true);
}
}
}
if(method == "POST") {
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(params);
} else {
req.open("GET", url + params, true);
req.send();
}
}
return req;
}
function switchView(outid, swval) {
sw = document.getElementById(outid);
for(var i = 0; i < sw.children.length; i++) {
if(sw.children[i].id == swval) {
sw.children[i].style.display = "block";
} else {
sw.children[i].style.display = "none";
}
}
}
function toggleMsg(msg) {
dimbox = document.getElementById("dim");
msgbox = document.getElementById("msg");
if(msg) {
document.body.style.overflow = "hidden";
msgbox.innerHTML = msgtxt + "&nbsp;&nbsp;" + msg;
dimbox.style.display = "inline";
msgbox.style.display = "inline";
} else {
msgbox.style.display = "none";
dimbox.style.display = "none";
document.body.style.overflow = "auto";
}
}
window.onload = function() {
msgtxt = document.getElementById("msg").innerHTML;
mainmenu = new initMenu();
mainmenu.init();
initTips();
if(typeof initModule == "function") {
initModule();
}
}

View File

@@ -0,0 +1,3 @@
function initModule() {
setInterval("refreshData()", 10000);
}

View File

@@ -0,0 +1,3 @@
function initModule() {
switchView("output", document.getElementById("switch").value);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@@ -0,0 +1,576 @@
a {
color : #868686;
text-decoration : none;
}
abbr {
border-bottom : 1px dotted #666;
cursor : help;
font-variant : normal;
}
body {
background-attachment : fixed;
background-image : url('images/bg.png');
color : #868686;
font-family : Arial;
padding-top : 25px;
}
button, input[type=button], input[type=reset], input[type=submit] {
background : transparent url('images/button.png');
border : 0px;
color : #DDDDDD;
height : 31px;
text-shadow : #000000 1px 1px;
width : 104px;
}
button:hover, input[type=button]:hover, input[type=reset]:hover, input[type=submit]:hover {
background-position : center;
}
button:active, input[type=button]:active, input[type=reset]:active, input[type=submit]:active {
background-position : bottom;
}
h1 {
border-bottom : 1px solid #C9C9C9;
color : #C9C9C9;
font-family : "trebuchet ms";
font-size : 20px;
font-weight : bold;
margin : 2px 0px 15px 0px;
text-shadow : 1px 1px #000000;
}
h2 {
border-bottom : 1px solid #C9C9C9;
color : #C9C9C9;
font-family : "trebuchet ms";
font-size : 20px;
font-weight : bold;
margin : 35px 0px 15px 0px;
text-shadow : 1px 1px #000000;
}
hr {
border-bottom : 1px solid #3F3A3E;
border-left : none;
border-right : none;
border-top : 1px solid #000000;
clear : both;
margin-top : 35px;
}
img {
border : 0px;
}
input[type=checkbox], input[type=radio] {
display : none;
}
input[type=checkbox] + label, input[type=radio] + label {
background-repeat : no-repeat;
background-position : 0 0;
cursor : pointer;
display : inline-block;
font-size : 12px;
height : 15px;
line-height : 15px;
padding-left : 20px;
vertical-align : middle;
}
input[type=checkbox]:checked + label, input[type=radio]:checked + label {
background-position : 0 -15px;
}
input[type=checkbox]:checked + label:hover, input[type=radio]:checked + label:hover {
background-position : 0 -45px;
}
input[type=checkbox] + label:hover, input[type=radio] + label:hover {
background-position : 0 -30px;
}
input[type="checkbox"]:disabled + label, input[type="radio"]:disabled + label {
background-position : 0 -60px;
color : #505050;
cursor : default;
}
input[type=checkbox] + label {
background-image : url('images/checkbox.png');
}
input[type=radio] + label {
background-image : url('images/radiobtn.png');
}
input[type=password], input[type=text] {
background-color : #2B2B2B;
border : 1px solid #191919;
box-shadow : inset 0px 2px 1px #242424, 0 1px 0 #303030;
color : #919191;
font-family : arial;
font-size : 12px;
height : 16px;
margin : -1px 0px -1px 0px;
padding : 0px 3px 0px 3px;
width : 278px;
}
input[type=password]:focus, input[type=text]:focus, input[type=password]:hover, input[type=text]:hover {
background-color : #383838;
box-shadow : inset 0px 2px 1px #292929, 0 1px 0 #303030;
}
input[type=password]:disabled, input[type=text]:disabled {
background-color : #1E1E1E;
box-shadow : inset 0px 2px 1px #1B1B1B, 0 1px 0 #303030;
color : #505050;
}
input.clogout {
background : transparent url('images/clogout.png');
border : 0px;
color : #DDDDDD;
font-family : Arial;
font-size : 12px;
height : 81px;
padding-top : 41px;
text-shadow : #000000 1px 1px;
width : 80px;
}
input.creboot {
background : transparent url('images/creboot.png');
border : 0px;
color : #DDDDDD;
font-family : Arial;
font-size : 12px;
height : 81px;
padding-top : 41px;
text-shadow : #000000 1px 1px;
width : 80px;
}
input.creboot:hover, input.clogout:hover {
background-position : center;
}
input.creboot:active, input.clogout:active {
background-position : bottom;
}
option {
cursor : default;
}
p {
margin-bottom : 10px;
text-align : justify;
}
p a {
border-bottom : 1px dotted #666;
}
pre {
color : #B9B9B9;
font-size : 12px;
margin : 2px 2px 2px 2px;
}
select {
-moz-appearance : none;
-webkit-appearance : none;
appearance : none;
background-color : #2B2B2B;
border : 1px solid #191919;
box-shadow : inset 0px 2px 1px #242424, 0 1px 0 #303030;
color : #919191;
cursor : pointer;
display : inline-block;
font-family : arial;
font-size : 12px;
height : 17px;
margin : -1px 0px -1px 0px;
outline : none;
padding : 0px 3px 0px 0px;
width : 285px;
}
select:hover {
background-color : #383838;
box-shadow : inset 0px 2px 1px #292929, 0 1px 0 #303030;
}
select:disabled {
background-color : #1E1E1E;
box-shadow : inset 0px 2px 1px #1B1B1B, 0 1px 0 #303030;
color : #505050;
cursor : default;
}
small {
font-size : 11px;
}
table {
border-collapse : collapse;
border-spacing : 0px;
}
textarea {
background-color : #2B2B2B;
border : 1px solid #191919;
box-shadow : inset 0px 2px 1px #242424, 0 1px 0 #303030;
color : #919191;
font-size : 12px;
height : 300px;
padding : 2px 2px 2px 2px;
overflow : auto;
resize : vertical;
white-space : pre;
width : 766px;
word-wrap : normal;
}
textarea:focus, textarea:hover {
background-color : #383838;
box-shadow : inset 0px 2px 1px #292929, 0 1px 0 #303030;
}
textarea:disabled, textarea:disabled {
background-color : #1E1E1E;
box-shadow : inset 0px 2px 1px #1B1B1B, 0 1px 0 #303030;
color : #505050;
}
.body {
background-image : url('images/body.png');
clear : both;
float : left;
width : 1006px;
}
.code {
background-color : #1D1D1D;
border : 1px solid #141414;
box-shadow : inset 0px 2px 1px #1B1B1B, 0 1px 0 #303030;
height : 500px;
overflow : auto;
width : 770px;
}
.collapsed {
margin-bottom : 20px;
margin-top : 7px;
overflow : hidden;
height : 40px;
}
.collapsed .navbody a.active {
border-top : none;
margin-top : 0px;
}
.collapsed .navheader {
background-image : url('images/navhead2.png');
background-repeat : no-repeat;
}
#content {
color : #919191;
float : right;
font-family : Arial;
font-size : 14px;
margin-bottom : 7px;
margin-right : 20px;
margin-top : 7px;
padding-left : 7px;
width : 771px;
}
.controls {
float : right;
margin-right : 15px;
margin-top : 17px;
text-align : right;
}
.confdata {
line-height : 18px;
width : 772px;
}
.confdata .name {
background-color : #1D1D1D;
border : 1px solid #141414;
padding : 5px 30px 5px 5px;
width : 40%;
}
.confdata .spacer {
height : 15px;
padding : 5px 5px 5px 5px;
}
.confdata .title {
background-color : #1D1D1D;
border : 1px solid #141414;
color : #C9C9C9;
font-weight : bold;
height : 25px;
text-align : center;
}
.confdata .value {
background-color : #262626;
border : 1px solid #141414;
padding : 5px 5px 5px 5px;
}
#dim {
-moz-opacity : 0.8;
background-color : #000000;
display : none;
filter : alpha(opacity=80);
height : 200%;
left : 0px;
opacity : 0.8;
position : absolute;
top : 0px;
width : 100%;
z-index : 20;
}
.footer {
background-image : url('images/footer.png');
background-repeat : no-repeat;
clear : both;
font-size : 10px;
padding-right : 10px;
padding-top : 7px;
text-align : right;
width : 996px;
}
.formctrl {
text-align : right;
width : 100%;
}
.header {
background-image : url('images/header.png');
height : 107px;
width : 1006px;
}
.hidden {
display : none;
}
.hidden .code {
height : 250px;
}
.loginbox {
background : transparent url('images/loginbox.png') no-repeat;
font-size : 14px;
height : 191px;
left : 50%;
margin : -150px 0px 0px -224px;
padding : 22px 0px 0px 25px;
position : absolute;
top : 50%;
width : 448px;
}
.loginbox input[type=password], .loginbox input[type=text] {
margin-bottom : 12px;
float : left;
width : 205px;
}
.loginbox label {
float : left;
margin-right : 5px;
text-align : right;
width : 180px;
}
.loginbox .body {
background : none;
width : 398px;
}
.logo {
color : #6C6C6C;
float : left;
font-size : 10px;
padding-top : 83px;
text-align : right;
width : 428px;
}
#mainmenu {
float : left;
font-family : Arial, sans-serif;
padding-left : 12px;
width : 190px;
}
#msg {
background : url('images/msg.png');
color : #FFFFFF;
display : none;
font-size : 16px;
font-weight : bold;
height : 38px;
left : 50%;
margin : -23px 0px 0px -247px;
padding : 8px 0px 0px 8px;
position : absolute;
text-shadow : #000000 1px 1px;
top : 50%;
width : 487px;
z-index : 21;
}
#msg img {
vertical-align : middle;
}
.navbody {
border : none;
display : block;
list-style : none;
margin : 0px 0px 0px 0px;
padding : 0px 0px 0px 0px;
}
.navbody a {
color : #C9C9C9;
display : block;
font-family : verdana;
font-size : 13px;
font-weight : bold;
padding : 6px 9px 6px 9px;
text-decoration : none;
text-shadow : #000000 1px 1px;
}
.navbody a:hover {
background-color : #2F2F2F;
border-bottom : 1px solid #161616;
border-top : 1px solid #161616;
margin-top : -1px;
padding : 6px 9px 5px 9px;
}
.navbody a.active {
color : #FE8013;
background-color : #2F2F2F;
border-bottom : 1px solid #161616;
border-top : 1px solid #161616;
margin-top : -1px;
padding : 6px 9px 5px 9px;
}
.navbody li {
background-image : url('images/navbody.png');
padding : 0px 4px 0px 4px;
}
.navbox {
margin-top : 7px;
overflow : hidden;
}
.navfooter {
background-image : url('images/navfoot.png');
display : block;
height : 4px;
margin : -1px 0px 10px 0px;
}
.navheader {
background-image : url('images/navhead1.png');
color : #FFFFFF;
cursor : default;
display : block;
font-family : arial;
font-size : 14px;
font-weight : bold;
height : 26px;
padding-left : 12px;
padding-top : 14px;
text-shadow : #000000 1px 1px;
width : 190px;
}
.portno {
font-weight : bold;
}
.portspeed {
font-size : 10px;
}
.portstate td {
text-align : center;
width : 80px;
}
.select {
position : relative;
font-size : 16px;
}
.select:after {
background-image : url('images/arrow.png');
content : '';
height : 4px;
pointer-events : none;
position : absolute;
right : 7px;
top : 8px;
width : 8px;
}
.select:before {
background-color : #2E2E2E;
box-shadow : inset 0px 5px 4px #3E3E3E;
border : 1px solid #191919;
content : '';
height : 15px;
pointer-events : none;
position : absolute;
right : 0px;
top : 1px;
width : 20px;
}
.tips div {
background-color : #FFFFAA;
border : 1px solid #FE8013;
color : #000000;
font-family : verdana;
font-size : 12px;
padding : 3px;
position : absolute;
visibility : hidden;
z-index : 10;
}
.webui {
background-image : url('images/stripes.png');
background-repeat : no-repeat;
margin-left : auto;
margin-right : auto;
width : 1006px;
}

View File

@@ -0,0 +1 @@
Kagera Original