tazpanel rev 420

network: things are now successfull: connect to Ethernet or {new or stored} Wi-Fi, re-connect Ethernet <-> Wi-Fi without previously stopping, start and stop Ethernet or Wi-Fi connections. Seems network part of TazPanel is fully workable now.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Wed Mar 25 00:38:04 2015 +0200 (2015-03-25)
parents 299f204b8f1f
children 4074a9fc45ee
files lib/tazpanel.js network.cgi styles/default/tweaks.css
line diff
     1.1 --- a/lib/tazpanel.js	Tue Mar 24 03:39:08 2015 +0200
     1.2 +++ b/lib/tazpanel.js	Wed Mar 25 00:38:04 2015 +0200
     1.3 @@ -402,5 +402,8 @@
     1.4  			password.value = networks[i].password;
     1.5  	}
     1.6  
     1.7 +	// Not used yet
     1.8 +	document.getElementById('bssid').value = '';
     1.9 +
    1.10  	wifiSettingsChange();
    1.11  }
     2.1 --- a/network.cgi	Tue Mar 24 03:39:08 2015 +0200
     2.2 +++ b/network.cgi	Wed Mar 25 00:38:04 2015 +0200
     2.3 @@ -33,6 +33,51 @@
     2.4  }
     2.5  
     2.6  
     2.7 +# Connect to a Wi-Fi network
     2.8 +connect_wifi() {
     2.9 +	/etc/init.d/network.sh stop | log
    2.10 +	sed -i \
    2.11 +		-e "s|^WIFI_ESSID=.*|WIFI_ESSID=\"$(GET essid)\"|" \
    2.12 +		-e "s|^WIFI_BSSID=.*|WIFI_BSSID=\"$(GET bssid)\"|" \
    2.13 +		-e "s|^WIFI_KEY_TYPE=.*|WIFI_KEY_TYPE=\"$(GET keyType)\"|" \
    2.14 +		-e "s|^WIFI_KEY=.*|WIFI_KEY=\"$(GET password)\"|" \
    2.15 +		-e "s|^WIFI_EAP_METHOD=.*|WIFI_EAP_METHOD=\"$(GET eap)\"|" \
    2.16 +		-e "s|^WIFI_CA_CERT=.*|WIFI_CA_CERT=\"$(GET caCert)\"|" \
    2.17 +		-e "s|^WIFI_CLIENT_CERT=.*|WIFI_CLIENT_CERT=\"$(GET clientCert)\"|" \
    2.18 +		-e "s|^WIFI_IDENTITY=.*|WIFI_IDENTITY=\"$(GET identity)\"|" \
    2.19 +		-e "s|^WIFI_ANONYMOUS_IDENTITY=.*|WIFI_ANONYMOUS_IDENTITY=\"$(GET anonymousIdentity)\"|" \
    2.20 +		-e "s|^WIFI_PHASE2=.*|WIFI_PHASE2=\"$(GET phase2)\"|" \
    2.21 +		/etc/network.conf
    2.22 +	. /etc/network.conf
    2.23 +	start_wifi
    2.24 +}
    2.25 +
    2.26 +
    2.27 +# Start an Ethernet connection
    2.28 +
    2.29 +start_eth() {
    2.30 +	case "$(GET staticip)" in
    2.31 +		on) DHCP='no';  STATIC='yes';;
    2.32 +		*)  DHCP='yes'; STATIC='no';;
    2.33 +	esac
    2.34 +
    2.35 +	/etc/init.d/network.sh stop | log
    2.36 +	sleep 2
    2.37 +	sed -i \
    2.38 +		-e "s|^INTERFACE=.*|INTERFACE=\"$(GET iface)\"|" \
    2.39 +		-e 's|^WIFI=.*|WIFI="no"|' \
    2.40 +		-e "s|^DHCP=.*|DHCP=\"$DHCP\"|" \
    2.41 +		-e "s|^STATIC=.*|STATIC=\"$STATIC\"|" \
    2.42 +		-e "s|^IP=.*|IP=\"$(GET ip)\"|" \
    2.43 +		-e "s|^NETMASK=.*|NETMASK=\"$(GET netmask)\"|" \
    2.44 +		-e "s|^GATEWAY=.*|GATEWAY=\"$(GET gateway)\"|" \
    2.45 +		-e "s|^DNS_SERVER=.*|DNS_SERVER=\"$(GET dns)\"|" \
    2.46 +		/etc/network.conf
    2.47 +	/etc/init.d/network.sh start | log
    2.48 +	. /etc/network.conf
    2.49 +}
    2.50 +
    2.51 +
    2.52  # Use /etc/wpa/wpa.conf as single database for known networks, passwords, etc.
    2.53  # Translate this data to use in javascript.
    2.54  
    2.55 @@ -85,8 +130,12 @@
    2.56  	*\ restart\ *)
    2.57  		/etc/init.d/network.sh restart | log
    2.58  		wait_up ;;
    2.59 -	*\ start-wifi\ *)
    2.60 +	*\ start_wifi\ *)
    2.61  		start_wifi ;;
    2.62 +	*\ start_eth\ *)
    2.63 +		start_eth ;;
    2.64 +	*\ connect_wifi\ *)
    2.65 +		connect_wifi ;;
    2.66  	*\ host\ *)
    2.67  		get_hostname="$(GET host)"
    2.68  		echo $(eval_gettext 'Changed hostname: $get_hostname') | log
    2.69 @@ -129,28 +178,21 @@
    2.70  	*\ eth\ *)
    2.71  		# Wired connections settings
    2.72  		xhtml_header
    2.73 -		if [ "$(GET ip)" ]; then
    2.74 -			DHCP=no
    2.75 -			STATIC=no
    2.76 -			[ -n "$(GET dhcp)" ] && DHCP=yes
    2.77 -			[ -n "$(GET static)" ] && STATIC=yes
    2.78 -			LOADING_MSG=$(gettext 'Setting up IP...'); loading_msg
    2.79  
    2.80 -			sed -i \
    2.81 -				-e s"/^INTERFACE=.*/INTERFACE=\"$(GET iface)\""/ \
    2.82 -				-e s"/^DHCP=.*/DHCP=\"$DHCP\"/" \
    2.83 -				-e s"/^STATIC=.*/STATIC=\"$STATIC\"/" \
    2.84 -				-e s"/^NETMASK=.*/NETMASK=\"$(GET netmask)\"/" \
    2.85 -				-e s"/^GATEWAY=.*/GATEWAY=\"$(GET gateway)\"/" \
    2.86 -				-e s"/^DNS_SERVER=.*/DNS_SERVER=\"$(GET dns)\"/" \
    2.87 -				-e s"/^IP=.*/IP=\"$(GET ip)\"/" /etc/network.conf
    2.88 -			/etc/init.d/network stop | log
    2.89 -			sleep 2
    2.90 -			/etc/init.d/network start | log
    2.91 -			. /etc/network.conf
    2.92 +		PAR1="size=\"20\" required"; PAR="$PAR1 pattern=\"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\""
    2.93 +
    2.94 +		case "$STATIC" in
    2.95 +			yes) use_static='checked';;
    2.96 +			*)   use_static='';;
    2.97 +		esac
    2.98 +
    2.99 +		stop_disabled=''; start_disabled=''
   2.100 +		if cat /sys/class/net/eth*/operstate | fgrep -q up; then
   2.101 +			start_disabled='disabled'
   2.102 +		else
   2.103 +			stop_disabled='disabled'
   2.104  		fi
   2.105  
   2.106 -		PAR1="size=\"20\" required"; PAR="$PAR1 pattern=\"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\" data-x=\"Four numbers, each in range 0-255, delimited by full stop.\""
   2.107  		cat <<EOT
   2.108  <h2>$(gettext 'Ethernet connection')</h2>
   2.109  
   2.110 @@ -164,45 +206,48 @@
   2.111  		<div>
   2.112  			<table>
   2.113  				<tr><td>$(gettext 'Interface')</td>
   2.114 -					<td><select name="iface" value="$INTERFACE" style="width:100%"/>
   2.115 +					<td><select name="iface" value="$INTERFACE" style="width:100%">
   2.116  					$(cd /sys/class/net; ls -1 | awk -viface="$INTERFACE" '{
   2.117  						sel = ($0 == iface) ? " selected":""
   2.118  						printf "<option value=\"%s\"%s>%s", $0, sel, $0
   2.119  					}')
   2.120  					</select></td>
   2.121  				</tr>
   2.122 -				<tr><td>&nbsp;</td>
   2.123 -					<td><label><input type="checkbox" name="staticip" id="staticip"/>
   2.124 +				<tr><td>$(gettext 'Static IP')</td>
   2.125 +					<td><label><input type="checkbox" name="staticip" id="staticip" $use_static/>
   2.126  						$(gettext 'Use static IP')</td>
   2.127 -				<tr><td>$(gettext 'IP address')</td>
   2.128 -					<td><input type="text" name="ip"      id="st1" value="$IP"         $PAR/></td>
   2.129  				</tr>
   2.130 -				<tr><td>$(gettext 'Netmask')</td>
   2.131 -					<td><input type="text" name="netmask" id="st2" value="$NETMASK"    $PAR/></td>
   2.132 +				<tr id="st1"><td>$(gettext 'IP address')</td>
   2.133 +					<td><input type="text" name="ip"      value="$IP"         $PAR/></td>
   2.134  				</tr>
   2.135 -				<tr><td>$(gettext 'Gateway')</td>
   2.136 -					<td><input type="text" name="gateway" id="st3" value="$GATEWAY"    $PAR/></td>
   2.137 +				<tr id="st2"><td>$(gettext 'Netmask')</td>
   2.138 +					<td><input type="text" name="netmask" value="$NETMASK"    $PAR/></td>
   2.139  				</tr>
   2.140 -				<tr><td>$(gettext 'DNS server')</td>
   2.141 -					<td><input type="text" name="dns"     id="st4" value="$DNS_SERVER" $PAR/></td>
   2.142 +				<tr id="st3"><td>$(gettext 'Gateway')</td>
   2.143 +					<td><input type="text" name="gateway" value="$GATEWAY"    $PAR/></td>
   2.144 +				</tr>
   2.145 +				<tr id="st4"><td>$(gettext 'DNS server')</td>
   2.146 +					<td><input type="text" name="dns"     value="$DNS_SERVER" $PAR/></td>
   2.147  				</tr>
   2.148  			</table>
   2.149  		</div>
   2.150  	</form>
   2.151  	<footer><!--
   2.152 -		--><button form="conf" type="submit" name="static"  data-icon="ok"    >$(gettext 'Activate (static)')</button><!--
   2.153 -		--><button form="conf" type="submit" name="dhcp"    data-icon="ok"    >$(gettext 'Activate (DHCP)'  )</button><!--
   2.154 -		--><button form="conf" name="disable" data-icon="cancel">$(gettext 'Disable'          )</button><!--
   2.155 +		--><button form="conf" type="submit" name="start_eth" data-icon="start" $start_disabled>$(gettext 'Start'  )</button><!--
   2.156 +		--><button form="conf" type="submit" name="stop"      data-icon="stop"  $stop_disabled >$(gettext 'Stop'   )</button><!--
   2.157  	--></footer>
   2.158  </section>
   2.159  
   2.160  <script type="text/javascript">
   2.161 -	document.getElementById('staticip').onchange = static_change;
   2.162 +function static_change() {
   2.163 +	staticip = document.getElementById('staticip').checked;
   2.164 +	for (i = 1; i < 5; i++) {
   2.165 +		document.getElementById('st' + i).style.display = staticip ? '' : 'none';
   2.166 +	}
   2.167 +}
   2.168  
   2.169 -	function static_change() {
   2.170 -		staticip = document.getElementById('staticip');
   2.171 -		alert(staticip.checked);
   2.172 -	}
   2.173 +document.getElementById('staticip').onchange = static_change;
   2.174 +static_change();
   2.175  </script>
   2.176  
   2.177  <section>
   2.178 @@ -343,7 +388,7 @@
   2.179  		fi
   2.180  
   2.181  		cat <<EOT
   2.182 -	   <button name="start-wifi" data-icon="start"   $start_disabled>$(gettext 'Start')</button><!--
   2.183 +	   <button name="start_wifi" data-icon="start"   $start_disabled>$(gettext 'Start')</button><!--
   2.184  	--><button name="stop"       data-icon="stop"    $stop_disabled >$(gettext 'Stop' )</button><!--
   2.185  	--><button type="submit"     data-icon="refresh" $stop_disabled >$(gettext 'Scan' )</button>
   2.186  </form>
   2.187 @@ -361,23 +406,6 @@
   2.188  </script>
   2.189  EOT
   2.190  
   2.191 -			ESSID="$(GET essid)"
   2.192 -			#WIFI_KEY_TYPE="$(GET keyType)"
   2.193 -			#WIFI_KEY="$(GET key)"
   2.194 -			#WIFI_AP="$(GET ap)"
   2.195 -
   2.196 -			if [ -n "$ESSID" ]; then
   2.197 -				/etc/init.d/network.sh stop | log
   2.198 -				sed -i \
   2.199 -					-e "s/^WIFI_ESSID=.*/WIFI_ESSID=\"$essid\"/" \
   2.200 -					-e "s/^WIFI_KEY_TYPE=.*/WIFI_KEY_TYPE=\"$WIFI_KEY_TYPE\"/" \
   2.201 -					-e "s/^WIFI_KEY=.*/WIFI_KEY=\"$WIFI_KEY\"/" \
   2.202 -					-e "s/^WIFI_AP=.*/WIFI_AP=\"$WIFI_AP\"/" \
   2.203 -					/etc/network.conf
   2.204 -				. /etc/network.conf
   2.205 -				start_wifi
   2.206 -			fi
   2.207 -
   2.208  			# ESSID names are clickable
   2.209  			#SELECT="$(GET select)"
   2.210  			#if [ -n "$SELECT" ]; then
   2.211 @@ -390,7 +418,8 @@
   2.212  	<header>$(gettext 'Connection')</header>
   2.213  	<div>
   2.214  		<form id="connection">
   2.215 -			<input type="hidden" name="connect-wifi"/>
   2.216 +			<input type="hidden" name="connect_wifi"/>
   2.217 +			<input type="hidden" name="bssid" id="bssid"/>
   2.218  			<table>
   2.219  				<tr><td>$(gettext 'Network SSID')</td>
   2.220  					<td><input type="text" name="essid" value="$WIFI_ESSID" id="essid"/></td>
     3.1 --- a/styles/default/tweaks.css	Tue Mar 24 03:39:08 2015 +0200
     3.2 +++ b/styles/default/tweaks.css	Wed Mar 25 00:38:04 2015 +0200
     3.3 @@ -224,6 +224,9 @@
     3.4  
     3.5  [data-img="web"]::before {color:#268bd2} /*blue*/
     3.6  
     3.7 +/* disabled buttons with gray icons */
     3.8 +[disabled][data-icon]:before { color: #888; }
     3.9 +
    3.10  
    3.11  
    3.12  /**********