tazpanel rev 13

A bunch of change, users mangement, javascript small function, css, tazpg.cgi
author Christophe Lincoln <pankso@slitaz.org>
date Sun Apr 03 03:21:00 2011 +0200 (2011-04-03)
parents 4c1174a446ee
children 2ea20065417a
files index.cgi lib/checkbox.js po/tazpkg-cgi/tazpkg-cgi.pot styles/default/header.html styles/default/style.css tazpanel tazpanel.conf tazpanel.desktop tazpkg.cgi
line diff
     1.1 --- a/index.cgi	Sat Apr 02 21:45:16 2011 +0200
     1.2 +++ b/index.cgi	Sun Apr 03 03:21:00 2011 +0200
     1.3 @@ -1,55 +1,191 @@
     1.4  #!/bin/sh
     1.5  #
     1.6 -# CGI/Shell script example for TazPanel
     1.7 +# Main CGI interface for TazPanel. In on word: KISS
     1.8  #
     1.9  echo "Content-Type: text/html"
    1.10  echo ""
    1.11  
    1.12 -. tazpanel.conf
    1.13 +# We need a config file first
    1.14 +CONFIG="/etc/slitaz/tazpanel.conf"
    1.15 +[ -f $CONFIG ] && . $CONFIG
    1.16 +[ -f tazpanel.conf ] && . tazpanel.conf
    1.17 +[ -z $PANEL ] && echo "No config file found" && exit 1
    1.18  
    1.19 +# xHTML 5 header
    1.20  xhtml_header() {
    1.21 -	# xHTML 5 header
    1.22  	cat $HEADER | sed s/'- %TITLE%'/"$TITLE"/
    1.23  }
    1.24  
    1.25 -[ $DEBUG == "1" ] && echo "<p class='debug'>DEBUG on</p>"
    1.26 +table_start() {
    1.27 +	cat << EOT
    1.28 +<table>
    1.29 +	<tbody>
    1.30 +EOT
    1.31 +}
    1.32 +
    1.33 +table_end () {
    1.34 +	cat << EOT
    1.35 +	</tbody>
    1.36 +</table>
    1.37 +EOT
    1.38 +}
    1.39  
    1.40  #
    1.41  # Commands
    1.42  #
    1.43  
    1.44  case "$QUERY_STRING" in
    1.45 -	users)
    1.46 +	boot)
    1.47 +		# Everything until user login
    1.48 +		TITLE="- Network"
    1.49 +		xhtml_header
    1.50 +		cat << EOT
    1.51 +<div id="wrapper">
    1.52 +<h2>`gettext "Boot &amp; startup"`</h2>
    1.53 +<p>
    1.54 +	`gettext "Everything that appends before user login."` 
    1.55 +</p>
    1.56 +
    1.57 +<h3>`gettext "Kernel cmdline"`</h3>
    1.58 +<pre>
    1.59 +`cat /proc/cmdline`
    1.60 +</pre>
    1.61 +EOT
    1.62 +		echo '</div>' ;;
    1.63 +	users|user=*)
    1.64 +		# Manage system user accounts
    1.65  		TITLE="- Users"
    1.66  		xhtml_header
    1.67 -		echo '<ul>'
    1.68 -		fgrep /home /etc/passwd | while read line
    1.69 +
    1.70 +		cmdline=`echo ${QUERY_STRING#user*=} | sed s'/&/ /g'`		
    1.71 +		#user=`echo ${cmdline} | sed s'/=/ /' | awk '{print $1}'`
    1.72 +		#cmd=`echo ${cmdline} | sed s'/=/ /' |awk '{print $2}'`
    1.73 +		
    1.74 +		[ $DEBUG == "1" ] && echo \
    1.75 +			"<p class='debug'>$cmdline</p>"
    1.76 +			#$REQUEST_METHOD $QUERY_STRING
    1.77 +		# Parse cmdline
    1.78 +		for opt in $cmdline
    1.79  		do
    1.80 -			echo '<li>'
    1.81 -			echo "	<img src='$IMAGES/user.png' />$line"
    1.82 -			echo '</li>'
    1.83 +			case $opt in
    1.84 +				adduser=*)
    1.85 +					user=${opt#adduser=}
    1.86 +					cmd=adduser ;;
    1.87 +				deluser=*)
    1.88 +					user=${opt#deluser=}
    1.89 +					deluser $user ;;
    1.90 +				passwd=*)
    1.91 +					pass=${opt#passwd=} ;;
    1.92 +			esac
    1.93  		done
    1.94 -		echo '</ul>' ;;
    1.95 +		case "$cmd" in
    1.96 +			adduser)
    1.97 +				echo "$user"
    1.98 +				echo $pass
    1.99 +				adduser -D $user
   1.100 +				echo "$pass" | chpasswd
   1.101 +				for g in audio cdrom floppy video
   1.102 +				do
   1.103 +					addgroup $user $g
   1.104 +				done ;;
   1.105 +			*) continue ;;
   1.106 +		esac
   1.107 +		cat << EOT
   1.108 +<div id="wrapper">
   1.109 +<h2>`gettext "Manage users"`</h2>
   1.110 +<div>`gettext "Manage human users on your SliTaz system"`</div>
   1.111 +<form method="get" action="$SCRIPT_NAME">
   1.112 +EOT
   1.113 +		table_start
   1.114 +		cat << EOT
   1.115 +<tr id="thead">
   1.116 +	<td>`gettext "Name"`</td>
   1.117 +	<td>`gettext "User ID"`</td>
   1.118 +	<td>`gettext "Name"`</td>
   1.119 +	<td>`gettext "Home"`</td>
   1.120 +	<td>`gettext "SHell"`</td>
   1.121 +</tr>
   1.122 +EOT
   1.123 +		for i in `cat /etc/passwd | cut -d ":" -f 1`
   1.124 +		do
   1.125 +			if [ -d /home/$i ]; then
   1.126 +				login=$i
   1.127 +				uid=`cat /etc/passwd | grep $i | cut -d ":" -f 3`
   1.128 +				gid=`cat /etc/passwd | grep $i | cut -d ":" -f 4`
   1.129 +				name=`cat /etc/passwd | grep $i | cut -d ":" -f 5 | \
   1.130 +					sed s/,,,//`
   1.131 +				home=`cat /etc/passwd | grep $i | cut -d ":" -f 6`
   1.132 +				shell=`cat /etc/passwd | grep $i | cut -d ":" -f 7`
   1.133 +				echo '<tr>'
   1.134 +				echo "<td><input type='hidden' name='user' />
   1.135 +					<input type='checkbox' name='deluser' value='$login' />
   1.136 +					<img src='$IMAGES/user.png' />$login</td>"
   1.137 +				echo "<td>$uid:$gid</td>"
   1.138 +				echo "<td>$name</td>"
   1.139 +				echo "<td>$home</td>"
   1.140 +				echo "<td>$shell</td>"
   1.141 +				echo '</tr>'
   1.142 +			fi
   1.143 +		done
   1.144 +		table_end
   1.145 +		#`gettext "Selection:"`
   1.146 +		cat << EOT
   1.147 +<div>
   1.148 +	<input type="submit" value="`gettext "Delete selected user"`" />
   1.149 +</div>
   1.150 +
   1.151 +</form>
   1.152 +</div>
   1.153 +
   1.154 +<h3>`gettext "Add a user"`</h3>
   1.155 +<form method="get" action="$SCRIPT_NAME">
   1.156 +<input type="hidden" name="user" size="30" />
   1.157 +<p>
   1.158 +	`gettext ""`
   1.159 +	<input type="text" name="adduser" size="30" />
   1.160 +</p>
   1.161 +<p>
   1.162 +	`gettext ""`
   1.163 +	<input type="password" name="passwd" size="30" />
   1.164 +</p>
   1.165 +<input type="submit" value="`gettext ""`Create user" />
   1.166 +</form
   1.167 +EOT
   1.168 +		;;
   1.169  	network)
   1.170 +		# Network configuration
   1.171  		TITLE="- Network"
   1.172  		xhtml_header
   1.173 +		cat << EOT
   1.174 +<div id="wrapper">
   1.175 +<h2>`gettext "Connections`</h2>
   1.176 +EOT
   1.177  		echo '<pre>'
   1.178  		ifconfig
   1.179 -		echo '</pre>' ;;
   1.180 +		echo '</pre>'
   1.181 +		echo '</div>' ;;
   1.182  	hardware)
   1.183  		TITLE="- Hardware"
   1.184  		xhtml_header
   1.185 +		cat << EOT
   1.186 +<div id="wrapper">
   1.187 +<h2>`gettext "Drivers &amp; Devices"`</h2>
   1.188 +EOT
   1.189  		echo '<pre>'
   1.190  		lspci
   1.191 -		echo '</pre>' ;;
   1.192 +		echo '</pre>'
   1.193 +		echo '</div>' ;;
   1.194  	*)
   1.195  		# Default xHTML content
   1.196  		xhtml_header
   1.197  		cat << EOT
   1.198 +<div id="wrapper">
   1.199 +<h2>`gettext "Host:"` `hostname`</h2>
   1.200  <p>
   1.201  	Uptime: `uptime`
   1.202  </p>
   1.203  EOT
   1.204 +		echo '</div>'
   1.205  		;;
   1.206  esac
   1.207  
     2.1 --- a/lib/checkbox.js	Sat Apr 02 21:45:16 2011 +0200
     2.2 +++ b/lib/checkbox.js	Sun Apr 03 03:21:00 2011 +0200
     2.3 @@ -1,20 +1,19 @@
     2.4 -javascript:(function(){
     2.5 -function checkFrames(w) {
     2.6 -
     2.7 -  try {
     2.8 -    var inputs = w.document.getElementsByTagName('input');
     2.9 -    for (var i = 0; i < inputs.length; i++) {
    2.10 -      if (inputs[i].type && inputs[i].type == 'checkbox'){
    2.11 -        inputs[i].checked = !inputs[i].checked;
    2.12 -      }
    2.13 -    }
    2.14 -  } catch (e){}
    2.15 -  if(w.frames && w.frames.length>0){
    2.16 -    for(var i = 0; i < w.frames.length;i++){
    2.17 -      var fr = w.frames[i];
    2.18 -      checkFrames(fr);
    2.19 -    }
    2.20 -  }
    2.21 +javascript:(function() {
    2.22 +function checkBoxes(w) {
    2.23 +	try {
    2.24 +		var inputs = w.document.getElementsByTagName('input');
    2.25 +		for (var i = 0; i < inputs.length; i++) {
    2.26 +			if (inputs[i].type && inputs[i].type == 'checkbox') {
    2.27 +				inputs[i].checked = !inputs[i].checked;
    2.28 +			}
    2.29 +		}
    2.30 +	} catch (e){}
    2.31 +	if (w.frames && w.frames.length>0) {
    2.32 +		for (var i = 0; i < w.frames.length;i++) {
    2.33 +			var fr = w.frames[i];
    2.34 +			checkFrames(fr);
    2.35 +		}
    2.36 +	}
    2.37  }
    2.38 -checkFrames(window);
    2.39 +checkBoxes(window);
    2.40  })()
     3.1 --- a/po/tazpkg-cgi/tazpkg-cgi.pot	Sat Apr 02 21:45:16 2011 +0200
     3.2 +++ b/po/tazpkg-cgi/tazpkg-cgi.pot	Sun Apr 03 03:21:00 2011 +0200
     3.3 @@ -8,7 +8,7 @@
     3.4  msgstr ""
     3.5  "Project-Id-Version: Tazpkg CGI\n"
     3.6  "Report-Msgid-Bugs-To: \n"
     3.7 -"POT-Creation-Date: 2011-04-02 21:33+0200\n"
     3.8 +"POT-Creation-Date: 2011-04-03 03:19+0200\n"
     3.9  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    3.10  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
    3.11  "Language-Team: LANGUAGE <LL@li.org>\n"
    3.12 @@ -41,55 +41,55 @@
    3.13  msgid "Blocked packages     : "
    3.14  msgstr ""
    3.15  
    3.16 -#: tazpkg.cgi:97
    3.17 +#: tazpkg.cgi:96
    3.18  msgid "Search"
    3.19  msgstr ""
    3.20  
    3.21 -#: tazpkg.cgi:109
    3.22 +#: tazpkg.cgi:108
    3.23  msgid "Name"
    3.24  msgstr ""
    3.25  
    3.26 -#: tazpkg.cgi:110
    3.27 +#: tazpkg.cgi:109
    3.28  msgid "Version"
    3.29  msgstr ""
    3.30  
    3.31 -#: tazpkg.cgi:111
    3.32 +#: tazpkg.cgi:110
    3.33  msgid "Description"
    3.34  msgstr ""
    3.35  
    3.36 -#: tazpkg.cgi:112
    3.37 +#: tazpkg.cgi:111
    3.38  msgid "Web"
    3.39  msgstr ""
    3.40  
    3.41 -#: tazpkg.cgi:127
    3.42 +#: tazpkg.cgi:126
    3.43  msgid "List:"
    3.44  msgstr ""
    3.45  
    3.46 -#: tazpkg.cgi:128 tazpkg.cgi:182
    3.47 +#: tazpkg.cgi:127 tazpkg.cgi:181
    3.48  msgid "My packages"
    3.49  msgstr ""
    3.50  
    3.51 -#: tazpkg.cgi:129 tazpkg.cgi:213 tazpkg.cgi:231
    3.52 +#: tazpkg.cgi:128 tazpkg.cgi:213 tazpkg.cgi:231
    3.53  msgid "All packages"
    3.54  msgstr ""
    3.55  
    3.56 -#: tazpkg.cgi:130 tazpkg.cgi:246
    3.57 +#: tazpkg.cgi:129 tazpkg.cgi:246
    3.58  msgid "Recharge"
    3.59  msgstr ""
    3.60  
    3.61 -#: tazpkg.cgi:131
    3.62 +#: tazpkg.cgi:130
    3.63  msgid "Upgradeable"
    3.64  msgstr ""
    3.65  
    3.66 -#: tazpkg.cgi:132 tazpkg.cgi:349
    3.67 +#: tazpkg.cgi:131 tazpkg.cgi:349
    3.68  msgid "Configuration"
    3.69  msgstr ""
    3.70  
    3.71 -#: tazpkg.cgi:141 tazpkg.cgi:151 tazpkg.cgi:162
    3.72 +#: tazpkg.cgi:140 tazpkg.cgi:150 tazpkg.cgi:161
    3.73  msgid "Selection:"
    3.74  msgstr ""
    3.75  
    3.76 -#: tazpkg.cgi:165
    3.77 +#: tazpkg.cgi:164
    3.78  msgid "Toogle all"
    3.79  msgstr ""
    3.80  
     4.1 --- a/styles/default/header.html	Sat Apr 02 21:45:16 2011 +0200
     4.2 +++ b/styles/default/header.html	Sun Apr 03 03:21:00 2011 +0200
     4.3 @@ -6,13 +6,14 @@
     4.4  	<link rel="shortcut icon" href="styles/default/favicon.ico" />
     4.5  	<link rel="stylesheet" type="text/css" href="styles/default/style.css" />
     4.6  </head>
     4.7 -<body>
     4.8 -
     4.9 +<body onLoad="init()">
    4.10 +	
    4.11  <h1>TazPanel - %TITLE%</h1>
    4.12  
    4.13  <div id="block">
    4.14  	<a href="./">Panel</a>
    4.15  	| <a href="tazpkg.cgi">Packages</a>
    4.16 +	| <a href="index.cgi?boot">Boot</a>
    4.17  	| <a href="index.cgi?users">Users</a>
    4.18  	| <a href="index.cgi?network">Network</a>
    4.19  	| <a href="index.cgi?hardware">Hardware</a>
     5.1 --- a/styles/default/style.css	Sat Apr 02 21:45:16 2011 +0200
     5.2 +++ b/styles/default/style.css	Sun Apr 03 03:21:00 2011 +0200
     5.3 @@ -49,6 +49,7 @@
     5.4  /* Content */
     5.5  
     5.6  #content { margin: 0; }
     5.7 +#wrapper { margin: 80px 0 20px; }
     5.8  
     5.9  .search {
    5.10  	position: absolute;
    5.11 @@ -67,7 +68,7 @@
    5.12  .box {
    5.13  	margin: 10px 0;
    5.14  	padding: 12px;
    5.15 -	background: #efefef;
    5.16 +	background: #f8f8f8;
    5.17  	border: 1px solid #ddd;
    5.18  }
    5.19  
    5.20 @@ -80,12 +81,15 @@
    5.21  	border: 1px solid #ddd;
    5.22  }
    5.23  
    5.24 +.float_left { float: right; }
    5.25 +.float_right { float: right; }
    5.26 +
    5.27  /* Table */
    5.28  
    5.29  table {
    5.30  	background-color: #f8f8f8;
    5.31  	border: 1px solid #ddd;
    5.32 -	margin: 30px 0 0 0;
    5.33 +	margin: 40px 0 0 0;
    5.34  	padding: 10px 10px 10px 0;
    5.35  	width: 100%;
    5.36  }
     6.1 --- a/tazpanel	Sat Apr 02 21:45:16 2011 +0200
     6.2 +++ b/tazpanel	Sun Apr 03 03:21:00 2011 +0200
     6.3 @@ -3,8 +3,11 @@
     6.4  # Tiny Tazpanel cmdline interface
     6.5  #
     6.6  
     6.7 -#. /etc/slitaz/tazpanel.conf
     6.8 +CONFIG="/etc/slitaz/tazpanel.conf"
     6.9 +
    6.10 +[ -f $CONFIG ] && . $CONFIG
    6.11  [ -f tazpanel.conf ] && . tazpanel.conf
    6.12 +[ -z $PANEL ] && echo "No config file found" && exit 1
    6.13  
    6.14  case "$1" in
    6.15  	start)
     7.1 --- a/tazpanel.conf	Sat Apr 02 21:45:16 2011 +0200
     7.2 +++ b/tazpanel.conf	Sun Apr 03 03:21:00 2011 +0200
     7.3 @@ -14,9 +14,9 @@
     7.4  
     7.5  # Busybox HTTP deamon config
     7.6  # /etc/slitaz/httpd.conf
     7.7 -HTTPD_CONF="httpd.conf"
     7.8 +HTTPD_CONF="/etc/slitaz/httpd.conf"
     7.9  HTTPD_PORT="8080"
    7.10  
    7.11 -# Tazpkg paths
    7.12 +# Shared Tazpkg paths
    7.13  LOCALSTATE="/var/lib/tazpkg"
    7.14  INSTALLED="$LOCALSTATE/installed"
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/tazpanel.desktop	Sun Apr 03 03:21:00 2011 +0200
     8.3 @@ -0,0 +1,7 @@
     8.4 +[Desktop Entry]
     8.5 +Encoding=UTF-8
     8.6 +Name=TazPanel
     8.7 +Icon=slitaz-menu
     8.8 +Exec=browser http://tazpanel:8080/
     8.9 +Type=Application
    8.10 +Categories=System;
     9.1 --- a/tazpkg.cgi	Sat Apr 02 21:45:16 2011 +0200
     9.2 +++ b/tazpkg.cgi	Sun Apr 03 03:21:00 2011 +0200
     9.3 @@ -92,7 +92,6 @@
     9.4  <div class="search">
     9.5  <form method="get" action="$SCRIPT_NAME">
     9.6  	<p>
     9.7 -		
     9.8  		<input type="text" name="search" size="20">
     9.9  		<input type="submit" value="`gettext "Search"`">
    9.10  	</p>
    9.11 @@ -207,6 +206,7 @@
    9.12  	list-all)
    9.13  		# List all available packages on mirror
    9.14  		cd  $LOCALSTATE
    9.15 +		loader
    9.16  		search_form
    9.17  		sub_block
    9.18  		cat << EOT