tazpanel rev 364

Add TAZPANEL_DAEMON support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Jun 29 17:06:39 2013 +0200 (2013-06-29)
parents df2865290e55
children 9357d34b6d5f
files boot.cgi hardware.cgi index.cgi lib/libtazpanel styles/default/header.html
line diff
     1.1 --- a/boot.cgi	Sun Jun 23 16:55:26 2013 +0300
     1.2 +++ b/boot.cgi	Sat Jun 29 17:06:39 2013 +0200
     1.3 @@ -81,6 +81,7 @@
     1.4  	<tr>
     1.5  		<td>$(gettext 'Name')</td>
     1.6  		<td>$(gettext 'Description')</td>
     1.7 +		<td></td>
     1.8  		<td>$(gettext 'Status')</td>
     1.9  		<td>$(gettext 'Action')</td>
    1.10  		<td>$(gettext 'PID')</td>
    1.11 @@ -103,6 +104,10 @@
    1.12  			[ echo "RUN_DAEMONS" | fgrep $name ] && boot="on boot"
    1.13  			# Standard SliTaz busybox daemons and firewall
    1.14  			echo -n "<td>"
    1.15 +			cfg=""
    1.16 +			grep -qi "^${name}_OPTIONS=" /etc/daemons.conf && cfg="options|$cfg"
    1.17 +			[ -s /etc/$name.conf ] && cfg="edit|$cfg"
    1.18 +			[ -n "$(which $name)" ] && cfg="man|help|$cfg"
    1.19  			case "$name" in
    1.20  				firewall)
    1.21  					gettext 'SliTaz Firewall with iptable rules' ;;
    1.22 @@ -111,20 +116,25 @@
    1.23  				ntpd)
    1.24  					gettext 'Network time protocol daemon' ;;
    1.25  				ftpd)
    1.26 +					cfg="man|help|edit::/etc/inetd.conf"
    1.27  					gettext 'Anonymous FTP server' ;;
    1.28  				udhcpd)
    1.29  					gettext 'Busybox DHCP server' ;;
    1.30  				syslogd|klogd)
    1.31  					gettext 'Linux Kernel log daemon' ;;
    1.32  				crond)
    1.33 +					# FIXME crontab
    1.34  					gettext 'Execute scheduled commands' ;;
    1.35  				dnsd)
    1.36 +					cfg="man|help|edit|options::-d"
    1.37  					gettext 'Small static DNS server daemon' ;;
    1.38  				tftpd)
    1.39 +					cfg="man|help|edit::/etc/inetd.conf"
    1.40  					gettext 'Transfer a file on tftp request' ;;
    1.41  				inetd)
    1.42  					gettext 'Listen for network connections and launch programs' ;;
    1.43  				zcip)
    1.44 +					cfg="man|help|edit:Script:/etc/zcip.script|options::eth0 /etc/zcip.script"
    1.45  					gettext 'Manage a ZeroConf IPv4 link-local address' ;;
    1.46  				*)
    1.47  					# Description from receipt
    1.48 @@ -132,8 +142,10 @@
    1.49  					[ -d "$LOCALSTATE/installed/${name%d}" ] && pkg=${name%d}
    1.50  					[ -d "$LOCALSTATE/installed/${name}-pam" ] && pkg=${name}-pam
    1.51  					if [ "$pkg" ]; then
    1.52 +						unset SHORT_DESC TAZPANEL_DAEMON
    1.53  						. $LOCALSTATE/installed/$pkg/receipt
    1.54  						echo -n "$SHORT_DESC"
    1.55 +						cfg="${TAZPANEL_DAEMON:-$cfg}"
    1.56  					else
    1.57  						echo -n "----"
    1.58  					fi ;;
    1.59 @@ -148,6 +160,44 @@
    1.60  			[ "$name" = "apache" ] && pid=$(cat /var/run/$name/httpd.pid)
    1.61  			# Pidof works for many daemons
    1.62  			[ "$pid" ] || pid=$(pidof $name)
    1.63 +			echo -n "<td>"
    1.64 +			if [ "$cfg" ]; then
    1.65 +				IFS="|"
    1.66 +				for i in $cfg ; do
    1.67 +					IFS=":"
    1.68 +					set -- $i
    1.69 +					case "$1" in
    1.70 +					edit)	cat <<EOT
    1.71 +<a href="index.cgi?file=${3:-/etc/$name.conf}&action=edit">
    1.72 +<img title="${2:-$name Configuration}" src="$IMAGES/edit.png" /></a>
    1.73 +EOT
    1.74 +						;;
    1.75 +					options)
    1.76 +						key=$(echo $name | tr [a-z] [A-Z])_OPTIONS
    1.77 +						cat <<EOT
    1.78 +<a href="index.cgi?file=/etc/daemons.conf&action=setvar&var=$key&default=$3">
    1.79 +<img title="${2:-$key}" src="$IMAGES/tux.png" /></a>
    1.80 +EOT
    1.81 +						;;
    1.82 +					man)	cat <<EOT
    1.83 +<a href="index.cgi?exec=man ${3:-$name}">
    1.84 +<img title="${2:-$name Manual}" src="$IMAGES/text.png" /></a>
    1.85 +EOT
    1.86 +						;;
    1.87 +					help)	cat <<EOT
    1.88 +<a href="index.cgi?exec=$(which ${3:-$name}) --help">
    1.89 +<img title="${2:-$name Help}" src="$IMAGES/help.png" /></a>
    1.90 +EOT
    1.91 +						;;
    1.92 +					web)	cat <<EOT
    1.93 +<a href="${i#$1:$2:}">
    1.94 +<img title="${2:-$name Web} $(gettext "${i#$1:$2:}")" src="$IMAGES/browser.png" /></a>
    1.95 +EOT
    1.96 +						;;
    1.97 +					esac
    1.98 +				done
    1.99 +			fi
   1.100 +			echo "</td>"
   1.101  			if [ "$pid" ]; then
   1.102  				cat << EOT
   1.103  <td><img src="$IMAGES/started.png" alt="Started" title="$(gettext 'Started')" /></td>
     2.1 --- a/hardware.cgi	Sun Jun 23 16:55:26 2013 +0300
     2.2 +++ b/hardware.cgi	Sat Jun 29 17:06:39 2013 +0200
     2.3 @@ -12,27 +12,6 @@
     2.4  
     2.5  TITLE=$(gettext 'TazPanel - Hardware')
     2.6  
     2.7 -ktoh()
     2.8 -{
     2.9 -	k=$1
    2.10 -	if [ $k -lt 1024 ]; then
    2.11 -		eval_gettext '${k}K'
    2.12 -		return
    2.13 -	fi
    2.14 -	k=$((($k+512)/1024))
    2.15 -	if [ $k -lt 1024 ]; then
    2.16 -		eval_gettext '${k}M'
    2.17 -		return
    2.18 -	fi
    2.19 -	k=$((($k+512)/1024))
    2.20 -	if [ $k -lt 1024 ]; then
    2.21 -		eval_gettext '${k}G'
    2.22 -		return
    2.23 -	fi
    2.24 -	k=$((($k+512)/1024))
    2.25 -	eval_gettext '${k}T'
    2.26 -}
    2.27 -
    2.28  lsusb_table()
    2.29  {
    2.30  	cat << EOT
    2.31 @@ -318,12 +297,14 @@
    2.32  			if grep -q "^$fs " /proc/swaps; then
    2.33  				action="swapoff"
    2.34  				set -- $(grep "^$fs " /proc/swaps)
    2.35 -				size=$(ktoh $3)
    2.36 -				used=$(ktoh $4)
    2.37 -				av=$(ktoh $(($3-$4)))
    2.38 +				size=$(blk2h $(($3*2)))
    2.39 +				used=$(blk2h $(($4*2)))
    2.40 +				av=$(blk2h $((2*($3-$4))))
    2.41  				pct=$(((100*$4)/$3))%
    2.42  				mp=swap
    2.43  			fi
    2.44 +			[ -z "$size" ] &&
    2.45 +			size="$(blk2h $(cat /sys/block/${fs#/dev/}/size /sys/block/*/${fs#/dev/}/size))"
    2.46  			cat << EOT
    2.47  <tr>
    2.48  	<td><input type="radio" name="device" value="$action $fs" />
     3.1 --- a/index.cgi	Sun Jun 23 16:55:26 2013 +0300
     3.2 +++ b/index.cgi	Sat Jun 29 17:06:39 2013 +0200
     3.3 @@ -61,6 +61,17 @@
     3.4  #
     3.5  
     3.6  case " $(GET) " in
     3.7 +	*\ exec\ *)
     3.8 +		exec="$(GET exec)"
     3.9 +		TITLE=$(gettext 'TazPanel - exec')
    3.10 +		xhtml_header
    3.11 +		cat << EOT
    3.12 +<h2>$exec</h2>
    3.13 +<pre>
    3.14 +$($exec 2>&1 | htmlize)
    3.15 +</pre>
    3.16 +EOT
    3.17 +		;;
    3.18  	*\ file\ *)
    3.19  		#
    3.20  		# Handle files
    3.21 @@ -89,16 +100,32 @@
    3.22  EOT
    3.23  #The space before textarea gets muddled when the form is submitted.
    3.24  #It prevents anything else from getting messed up
    3.25 +		elif [ "$(GET action)" == "setvar" ]; then
    3.26 +			data="$(. $(GET file) ;eval echo \$$(GET var))"
    3.27 +			cat <<EOT
    3.28 +<form method="post" action="$SCRIPT_NAME?file=$file">
    3.29 +	<img src="$IMAGES/edit.png" />
    3.30 +	<input type="submit" value="$(gettext 'Save')">
    3.31 +	$(GET var) : 
    3.32 +	<input type="hidden" name="var" value="$(GET var)">
    3.33 +	<input type="text" name="content" value="${data:-$(GET default)}">
    3.34 +</form>
    3.35 +EOT
    3.36  		elif [ "$(GET action)" == "diff" ]; then
    3.37  			echo '<pre id="diff">'
    3.38  			file_is_modified $file diff | syntax_highlighter diff
    3.39  			echo '</pre>'
    3.40  		else
    3.41  			R=$(echo -en '\r')
    3.42 -			[ -n "$(POST content)" ] &&
    3.43 -				sed "s/$R /\n/g;s/$R%0//g" > $file <<EOT
    3.44 +			if [ -n "$(POST content)" ]; then
    3.45 +				if [ -n "$(POST var)" ]; then
    3.46 +					sed -i "s|^\\($(POST var)=\\).*|\1\"$(POST content)\"|" $file
    3.47 +				else
    3.48 +					sed "s/$R /\n/g;s/$R%0//g" > $file <<EOT
    3.49  $(POST content)
    3.50  EOT
    3.51 +				fi
    3.52 +			fi
    3.53  			cat <<EOT
    3.54  <div id="actions">
    3.55  	<a class="button" href='$SCRIPT_NAME?file=$file&action=edit'>
     4.1 --- a/lib/libtazpanel	Sun Jun 23 16:55:26 2013 +0300
     4.2 +++ b/lib/libtazpanel	Sat Jun 29 17:06:39 2013 +0200
     4.3 @@ -256,3 +256,15 @@
     4.4  is_installed() {
     4.5  	[ -d "$INSTALLED/$1" ]
     4.6  }
     4.7 +
     4.8 +blk2h() {
     4.9 +	echo $1 | awk '{
    4.10 +	n = $0/2
    4.11 +	for (i = 1; n > 1024; i++)
    4.12 +		n /= 1024
    4.13 +	f = "%1.0f%c"
    4.14 +	if (n < 1000)
    4.15 +		f = "%1.1f%c"
    4.16 +	printf f,n,substr("KMGT", i, 1)
    4.17 +}'
    4.18 +}
     5.1 --- a/styles/default/header.html	Sun Jun 23 16:55:26 2013 +0300
     5.2 +++ b/styles/default/header.html	Sat Jun 29 17:06:39 2013 +0200
     5.3 @@ -59,6 +59,7 @@
     5.4  					src="/styles/default/images/wireless.png" />$(gettext 'Wireless')</a></li>
     5.5  				<li><a href="/index.cgi?file=/etc/network.conf"><img
     5.6  					src="/styles/default/images/edit.png" />$(gettext 'Config file')</a></li>
     5.7 +				$(for i in menu.d/network/* ; do [ -f $i ] && . $i menu $i ; done)
     5.8  			</ul>
     5.9  		</li>
    5.10  		<li><a href="/settings.cgi">$(gettext 'Settings')</a>