luci-0.11: Merge r9624 - r9626
This commit is contained in:
parent
03ed541b76
commit
0cbe6146d5
6 changed files with 91 additions and 112 deletions
|
@ -4,7 +4,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=freifunk-gwcheck
|
PKG_NAME:=freifunk-gwcheck
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,16 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
|
||||||
|
# Licensed under the GNU General Public License (GPL) v3
|
||||||
|
# This script monitors the local internet gateway
|
||||||
|
|
||||||
|
. /lib/functions/network.sh
|
||||||
|
|
||||||
|
#Exit if this script is already running
|
||||||
|
pid="$(pidof ff_olsr_test_gw.sh)"
|
||||||
|
if [ ${#pid} -gt 5 ]; then
|
||||||
|
logger -t gwcheck "Gateway check script is already running, exit now"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
#check if dyngw_plain is installed and enabled, else exit
|
#check if dyngw_plain is installed and enabled, else exit
|
||||||
dyngwplainlib=`uci show olsrd |grep dyn_gw_plain |awk {' FS="."; print $1"."$2 '}`
|
dyngwplainlib=`uci show olsrd |grep dyn_gw_plain |awk {' FS="."; print $1"."$2 '}`
|
||||||
|
@ -7,13 +19,17 @@ if [ -n "$dyngwplainlib" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "dyngw_plain not found in olsrd config, exit"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#Exit if this script is already running
|
||||||
|
pid="$(pidof ff_olsr_test_gw.sh)"
|
||||||
|
if [ ${#pid} -gt 5 ]; then
|
||||||
|
logger -p debug -t gwcheck "Gateway check script is already running, exit now"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# check if we have a defaultroute with metric=0 in one of these tables: main table and gw-check table.
|
# exit if there is no defaultroute with metric=0 in main or gw-check table.
|
||||||
# If not exit here.
|
|
||||||
defroutemain="$(ip r s |grep default |grep -v metric)"
|
defroutemain="$(ip r s |grep default |grep -v metric)"
|
||||||
defroutegwcheck="$(ip r s t gw-check |grep default |grep -v metric)"
|
defroutegwcheck="$(ip r s t gw-check |grep default |grep -v metric)"
|
||||||
if [ -z "$defroutegwcheck" -a -z "$defroutemain" ]; then
|
if [ -z "$defroutegwcheck" -a -z "$defroutemain" ]; then
|
||||||
|
@ -47,36 +63,73 @@ check_internet() {
|
||||||
echo 0
|
echo 0
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
logger -t gw-check "Could not get test file from http://$t/conntest.html"
|
logger -p debug -t gw-check "Could not fetch http://$t/conntest.html"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resolve() {
|
||||||
|
echo "$(nslookup $1 2>/dev/null |grep 'Address' |grep -v '127.0.0.1' |awk '{ print $3 }')"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_dnsservers() {
|
||||||
|
# this gets all dns servers for the wan interface. If ubus is not present (like on older
|
||||||
|
# openwrt versions before Attitude fallback to get these from /var/state/network.
|
||||||
|
|
||||||
|
dns=""
|
||||||
|
if [ -x /bin/ubus ]; then
|
||||||
|
network_get_dnsserver dns wan
|
||||||
|
else
|
||||||
|
dns="$(grep network.wan.resolv_dns /var/state/network | cut -d "=" -f 2)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
iw=$(check_internet)
|
iw=$(check_internet)
|
||||||
|
|
||||||
|
|
||||||
if [ "$iw" == 0 ]; then
|
if [ "$iw" == 0 ]; then
|
||||||
# check if we have a seperate routing table for our tests.
|
# check if we have a seperate routing table for our tests.
|
||||||
# If yes, move defaultroute to normal table and delete table gw-check
|
# If yes, move defaultroute to normal table and delete table gw-check
|
||||||
|
# Also delete ip rules to use table gw-check for our testhosts and wan dns servers
|
||||||
|
|
||||||
if [ -n "$defroutegwcheck" ]; then
|
if [ -n "$defroutegwcheck" ]; then
|
||||||
ip r a $defroutegwcheck
|
ip r a $defroutegwcheck
|
||||||
ip r d $defroutegwcheck t gw-check
|
ip r d $defroutegwcheck t gw-check
|
||||||
ip ru del fwmark 0x2 lookup gw-check
|
|
||||||
for host in $testserver; do
|
for host in $testserver; do
|
||||||
iptables -t mangle -D OUTPUT -d $host -p tcp --dport 80 -j MARK --set-mark 0x2
|
ips="$(resolve $host)"
|
||||||
|
for ip in $ips; do
|
||||||
|
[ -n "$(ip ru s | grep "to $ip lookup gw-check")" ] && ip rule del to $ip table gw-check
|
||||||
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
get_dnsservers
|
||||||
|
for d in $dns; do
|
||||||
|
[ -n "$(ip ru s | grep "to $d lookup gw-check")" ] && ip rule del to $d table gw-check
|
||||||
|
done
|
||||||
|
|
||||||
|
#ip r d default via 127.0.0.1 metric 100000
|
||||||
logger -t gw-check "Internet is available again, restoring default route ( $defroutegwcheck)"
|
logger -t gw-check "Internet is available again, restoring default route ( $defroutegwcheck)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
# Check failed. If we have a defaultroute with metric=0 and it is already in table gw-check then do nothing.
|
# Check failed. If we have a defaultroute with metric=0 and it is already in table gw-check then do nothing.
|
||||||
# If there is a defaultroute with metric=0 then remove it from the main routing table and add to table gw-check.
|
# If there is a defaultroute with metric=0 then remove it from the main routing table and add to table gw-check.
|
||||||
|
# Also setup ip rules to use table gw-check for our testhosts and wan dns servers
|
||||||
|
|
||||||
if [ -z "$(ip ru s | grep gw-check)" -a -n "$defroutemain" ]; then
|
if [ -z "$(ip ru s | grep gw-check)" -a -n "$defroutemain" ]; then
|
||||||
ip rule add fwmark 0x2 lookup gw-check
|
|
||||||
for host in $testserver; do
|
|
||||||
iptables -t mangle -I OUTPUT -d $host -p tcp --dport 80 -j MARK --set-mark 0x2
|
|
||||||
done
|
|
||||||
ip r a $defroutemain table gw-check
|
ip r a $defroutemain table gw-check
|
||||||
ip r d $defroutemain
|
ip r d $defroutemain
|
||||||
logger -t gw-check "Internet is not available, deactivating the default route ( $defroutemain)"
|
|
||||||
fi
|
fi
|
||||||
|
for host in $testserver; do
|
||||||
|
ips="$(resolve $host)"
|
||||||
|
for ip in $ips; do
|
||||||
|
[ -z "$(ip ru s | grep "to $ip lookup gw-check")" ] && ip rule add to $ip table gw-check
|
||||||
|
done
|
||||||
|
done
|
||||||
|
get_dnsservers
|
||||||
|
for d in $dns; do
|
||||||
|
[ -z "$(ip ru s | grep "to $d lookup gw-check")" ] && ip rule add to $d table gw-check
|
||||||
|
done
|
||||||
|
#ip r a default via 127.0.0.1 metric 100000
|
||||||
|
logger -t gw-check "Internet is not available, deactivating the default route ( $defroutemain)"
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -174,6 +174,8 @@ a img {
|
||||||
|
|
||||||
.header_left{
|
.header_left{
|
||||||
text-align:left;
|
text-align:left;
|
||||||
|
max-width: 50%;
|
||||||
|
float:left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header_left a{
|
.header_left a{
|
||||||
|
@ -182,21 +184,14 @@ a img {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header_left .spacer {
|
|
||||||
height: 12px;
|
|
||||||
min-height:12px;
|
|
||||||
width:99%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#header h1,
|
#header h1,
|
||||||
.header_right {
|
.header_right {
|
||||||
position: absolute;
|
max-width: 45%;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
font-size: 70%;
|
font-size: 70%;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
line-height: 160%;
|
line-height: 160%;
|
||||||
|
float:right;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul.dropdowns {
|
ul.dropdowns {
|
||||||
|
@ -296,7 +291,6 @@ ul.dropdowns ul ul ul li:hover ul {
|
||||||
color: #004a9c;
|
color: #004a9c;
|
||||||
border-bottom: 1px dotted #5A5A5A;
|
border-bottom: 1px dotted #5A5A5A;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menubar .warning {
|
#menubar .warning {
|
||||||
color: red;
|
color: red;
|
||||||
background-color: #FFF;
|
background-color: #FFF;
|
||||||
|
@ -415,7 +409,7 @@ html #menubar a:visited.warning {
|
||||||
* html .lang_pt-br #submenu_admin_network_firewall { width: 15em; }
|
* html .lang_pt-br #submenu_admin_network_firewall { width: 15em; }
|
||||||
|
|
||||||
#modemenu {
|
#modemenu {
|
||||||
width: auto;
|
/* width: auto;*/
|
||||||
background: #000;
|
background: #000;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
|
@ -448,6 +442,7 @@ textarea#syslog {
|
||||||
font-family: monospace;
|
font-family: monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#maincontent {
|
#maincontent {
|
||||||
clear: both;
|
clear: both;
|
||||||
width: 90%;
|
width: 90%;
|
||||||
|
@ -976,6 +971,7 @@ td.cbi-value-error {
|
||||||
padding: 0.3em;
|
padding: 0.3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.wrapper {
|
.wrapper {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
height: auto !important;
|
height: auto !important;
|
||||||
|
|
|
@ -1,84 +1,14 @@
|
||||||
.high_res_only{
|
|
||||||
display:none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main_bg_pattern {
|
|
||||||
position:absolute;
|
|
||||||
background: url(images/PF_background_pattern.png) repeat-x;
|
|
||||||
top:0px;
|
|
||||||
left:0px;
|
|
||||||
width:980px;
|
|
||||||
z-index:0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main_bg {
|
|
||||||
min-height:2000px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#heading{
|
|
||||||
margin-left:285px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#header{
|
#header{
|
||||||
padding-left:0px !important;
|
padding-left:0px !important;
|
||||||
padding-bottom:24px;
|
padding-bottom:24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#menubar{
|
.header_left{
|
||||||
font-size:35px;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#mainlogo {
|
||||||
#maincontent .multiColumn {
|
max-width: 90%;
|
||||||
margin:1em 0px;
|
|
||||||
width:100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#maincontent .multiColumn .first{
|
|
||||||
width:100% !important;
|
|
||||||
float:none !important;
|
|
||||||
display:block !important;
|
|
||||||
padding-right:0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#maincontent .multiColumn .second{
|
|
||||||
width:100% !important;
|
|
||||||
float:none !important;
|
|
||||||
display:block !important;
|
|
||||||
padding-right:0px;
|
|
||||||
}
|
|
||||||
#maincontent .multiColumn .terminateMultiColumn{
|
|
||||||
clear:both;
|
|
||||||
float:none;
|
|
||||||
display:block;
|
|
||||||
text-align:left !important;
|
|
||||||
padding-top:2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#maincontent ul{
|
|
||||||
margin-bottom:1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#sidebar_container{
|
|
||||||
display:none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#adbar_low_res_container{
|
|
||||||
display:block !important;
|
|
||||||
}
|
|
||||||
#main_content_container{
|
|
||||||
margin-top:50px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.lt_spec{
|
|
||||||
padding:0px;
|
|
||||||
width:54px;
|
|
||||||
height:42px;
|
|
||||||
background:transparent url(images/lt_round.png) no-repeat 0% 0% !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#content {
|
#content {
|
||||||
|
@ -86,8 +16,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
#maincontent{
|
#maincontent{
|
||||||
font-size:25px!important;
|
font-size:1.2em;
|
||||||
line-height:40px;
|
line-height:1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=submit],
|
input[type=submit],
|
||||||
|
@ -97,11 +27,7 @@ input[type=submit],
|
||||||
display:inline !important;
|
display:inline !important;
|
||||||
float:none !important;
|
float:none !important;
|
||||||
padding:10px 30px !important;
|
padding:10px 30px !important;
|
||||||
margin: 0px 10px !important;
|
margin: 10px 10px 10px 0 !important;
|
||||||
font-size:25px !important;
|
|
||||||
font-family: impact, sans-serif !important;
|
|
||||||
background:#ff8800 none !important;
|
|
||||||
border-color:#000000 !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.cbi-input-text,
|
.cbi-input-text,
|
||||||
|
@ -109,13 +35,11 @@ input[type=submit],
|
||||||
.cbi-input-user,
|
.cbi-input-user,
|
||||||
.cbi-input-password{
|
.cbi-input-password{
|
||||||
display:block !important;
|
display:block !important;
|
||||||
font-size:25px !important;
|
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
padding:0 !important;
|
padding:0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cbi-value-field{
|
.cbi-value-field{
|
||||||
font-size:25px;
|
|
||||||
margin:0 !important;
|
margin:0 !important;
|
||||||
margin-bottom: 1em !important;
|
margin-bottom: 1em !important;
|
||||||
width:100% !important;
|
width:100% !important;
|
||||||
|
@ -124,12 +48,12 @@ input[type=submit],
|
||||||
.cbi-section legend{
|
.cbi-section legend{
|
||||||
white-space:normal !important;
|
white-space:normal !important;
|
||||||
}
|
}
|
||||||
.cbi-section code{
|
|
||||||
font-size:24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.cbi-value-title{
|
.cbi-value-title{
|
||||||
font-size:25px;
|
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
float:none !important;
|
float:none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width:100%;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
.header_right {
|
||||||
|
display:none;
|
||||||
|
}
|
|
@ -75,6 +75,7 @@ You may obtain a copy of the License at
|
||||||
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
||||||
<link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
|
<link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
|
||||||
<link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="<%=media%>/mobile.css" type="text/css" />
|
<link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="<%=media%>/mobile.css" type="text/css" />
|
||||||
|
<link rel="stylesheet" media="only screen and (max-width: 854px)" href="<%=media%>/smallscreen.css" type="text/css" />
|
||||||
<link rel="stylesheet" media="handheld" href="<%=media%>/mobile.css" type="text/css" />
|
<link rel="stylesheet" media="handheld" href="<%=media%>/mobile.css" type="text/css" />
|
||||||
<!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie7.css" /><![endif]-->
|
<!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie7.css" /><![endif]-->
|
||||||
<% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" />
|
<% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" />
|
||||||
|
@ -83,6 +84,7 @@ You may obtain a copy of the License at
|
||||||
<%= css %>
|
<%= css %>
|
||||||
</style>
|
</style>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
<meta name="viewport" content="initial-scale=1.0">
|
||||||
<script type="text/javascript" src="<%=resource%>/xhr.js"></script>
|
<script type="text/javascript" src="<%=resource%>/xhr.js"></script>
|
||||||
|
|
||||||
<title><%=striptags( hostname .. ( (node and node.title) and ' - ' .. translate(tostring(node.title)) or '')) %> - LuCI</title>
|
<title><%=striptags( hostname .. ( (node and node.title) and ' - ' .. translate(tostring(node.title)) or '')) %> - LuCI</title>
|
||||||
|
@ -117,12 +119,11 @@ You may obtain a copy of the License at
|
||||||
</div>
|
</div>
|
||||||
<%else%>
|
<%else%>
|
||||||
<div class="header_left">
|
<div class="header_left">
|
||||||
<a href="<%=hp%>"><img src="<%=logo%>" alt="Logo" /></a>
|
<a href="<%=hp%>"><img src="<%=logo%>" id="mainlogo" alt="Logo" /></a>
|
||||||
<%if show_comm then%>
|
<%if show_comm then%>
|
||||||
<a href="<%=hp%>"><%=community%></a>
|
<a href="<%=hp%>"><%=community%></a>
|
||||||
<br/>
|
<br/>
|
||||||
<%end%>
|
<%end%>
|
||||||
<div class = "spacer"></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="header_right">
|
<div class="header_right">
|
||||||
<%=luci.version.distversion%><br />
|
<%=luci.version.distversion%><br />
|
||||||
|
@ -134,6 +135,8 @@ You may obtain a copy of the License at
|
||||||
<span id="xhr_poll_status_off" style="display:none"><%:off%></span>
|
<span id="xhr_poll_status_off" style="display:none"><%:off%></span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
|
||||||
<%end%>
|
<%end%>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue