tazpanel annotate settings.cgi @ rev 303

3 weeks forging ;) Some bugs fixed, maybe all i18n improved (please, recheck 'po's!), couple of new features added... Enjoy!
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri May 04 13:00:43 2012 +0300 (2012-05-04)
parents 72e9955ebdff
children 3e9acc16f728
rev   line source
pankso@42 1 #!/bin/sh
pankso@42 2 #
pankso@42 3 # System settings CGI interface: user, locale, keyboard, date. Since we
paul@205 4 # don't have multiple pages here there is only one case used to get command
paul@205 5 # values and the full content is followed directly.
pankso@42 6 #
pankso@112 7 # Copyright (C) 2011 SliTaz GNU/Linux - BSD License
pankso@42 8 #
pankso@42 9
pankso@42 10 # Common functions from libtazpanel
pankso@42 11 . lib/libtazpanel
pankso@42 12 get_config
pascal@81 13 header
pankso@42 14
al@292 15 TITLE=$(gettext 'TazPanel - Settings')
pankso@42 16
pankso@42 17 #
pankso@42 18 # Commands executed before page loading.
pankso@42 19 #
pankso@42 20
pascal@81 21 case " $(GET) " in
pascal@115 22 *\ do\ *)
paul@205 23 # Assume no array support in httpd_helper.sh ;^)
pascal@115 24 users=""
pascal@115 25 IFS="&"
pascal@115 26 for i in $QUERY_STRING ; do
pascal@115 27 case "$i" in
pascal@115 28 user=*) users="$users ${i#user=}" ;;
pascal@115 29 esac
pascal@115 30 done
pascal@115 31 unset IFS
pascal@115 32 for cmd in "Delete user" "Lock user" "Unlock user" \
pascal@115 33 "Change password" ; do
al@303 34 [ "$(GET do)" == "$(gettext "$cmd")" ] || continue # BUGGY
pascal@115 35 for user in $users ; do
pascal@115 36 case "$cmd" in
pascal@115 37 Delete*) deluser $user ;;
pankso@119 38 Lock*) passwd -l $user | log ;;
pankso@119 39 Unlock*) passwd -u $user | log ;;
pascal@252 40 Change*) echo "$user:$(GET password)" | chpasswd -m | log ;;
pascal@115 41 esac
pascal@115 42 done
pascal@115 43 done ;;
pascal@115 44 *\ adduser\ *)
pankso@42 45 #
pankso@42 46 # Manage system user accounts
pankso@42 47 #
pascal@81 48 user=$(GET adduser)
pascal@115 49 passwd=$(GET passwd)
pascal@81 50 if [ -n "$user" ]; then
slaxemulator@233 51 adduser -D -s /bin/sh -g "SliTaz User" -G users -h /home/$user $user
pascal@252 52 echo "$user:$passwd" | chpasswd -m | log
slaxemulator@233 53 for g in audio cdrom floppy video tty
pascal@81 54 do
pascal@81 55 addgroup $user $g
pascal@81 56 done
pascal@81 57 fi ;;
pascal@81 58 *\ gen_locale\ *)
pascal@81 59 new_locale=$(GET gen_locale) ;;
pascal@141 60 *\ gen_keymap\ *)
pascal@141 61 new_keymap=$(GET gen_keymap) ;;
pascal@142 62 *\ apply_xorg_kbd\ *)
pascal@142 63 sed -i "s/XkbLayout.*/XkbLayout \" \"$(GET apply_xorg_kbd)\"/" \
pascal@142 64 /etc/X11/xorg.conf.d/40-Keyboard.conf ;;
pascal@81 65 *\ rdate\ *)
pankso@42 66 rdate -s tick.greyware.com ;;
pascal@81 67 *\ hwclock\ *)
pankso@150 68 hwclock -w -u ;;
pankso@110 69 *\ panel_pass*)
pankso@110 70 sed -i s@/:root:.*@/:root:$(GET panel_pass)@ $HTTPD_CONF ;;
pankso@110 71 *\ style*)
pankso@110 72 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
al@292 73 . $CONFIG ;;
pankso@42 74 esac
pankso@42 75
pankso@42 76 #
pankso@42 77 # Default xHTML content
pankso@42 78 #
pankso@42 79 xhtml_header
pankso@67 80
pankso@110 81 case " $(GET) " in
pankso@110 82 *\ user*)
pankso@110 83 #
pankso@110 84 # Users management
pankso@110 85 #
pankso@110 86 cat <<EOT
al@303 87 <h3 id="users">$(gettext 'Manage users')</h3>
al@303 88
pankso@110 89 <form method="get" action="$SCRIPT_NAME">
pascal@115 90 <div id="actions">
pascal@115 91 <div class="float-left">
al@303 92 $(gettext 'Selection:')
al@303 93 <input type="submit" name="do" value="$(gettext 'Delete user')" />
al@303 94 <input type="submit" name="do" value="$(gettext 'Lock user')" />
al@303 95 <input type="submit" name="do" value="$(gettext 'Unlock user')" />
pascal@115 96 </div>
pascal@115 97 </div>
al@303 98
al@303 99 <table class="zebra">
al@303 100 <thead>
pascal@115 101 <tr class="thead">
al@303 102 <td>$(gettext 'Login')</td>
al@303 103 <td>$(gettext 'User ID')</td>
al@303 104 <td>$(gettext 'Name')</td>
al@303 105 <td>$(gettext 'Home')</td>
al@303 106 <td>$(gettext 'Shell')</td>
pascal@115 107 </tr>
al@303 108 </thead>
al@303 109 </tbody>
pascal@115 110 EOT
pascal@115 111 for login in `cat /etc/passwd | cut -d ":" -f 1`
pankso@110 112 do
pascal@115 113 if [ -d /home/$login ]; then
pascal@115 114 colorlogin=$login
pascal@115 115 grep -qs "^$login:!" /etc/shadow &&
pascal@115 116 colorlogin="<span style='color: red;'>$login</span>"
pascal@115 117 IFS=':'
pascal@115 118 set -- $(grep "^$login:" /etc/passwd)
pascal@115 119 unset IFS
pascal@115 120 uid=$3
pascal@115 121 gid=$4
pascal@115 122 name="$(echo $5 | sed s/,.*//)"
pascal@115 123 home="$6"
pascal@115 124 shell=$7
pascal@115 125 cat <<EOT
pascal@115 126 <tr>
pascal@115 127 <td><input type='checkbox' name='user' value='$login' />
pascal@115 128 <img src='$IMAGES/user.png' />$colorlogin</td>
pascal@115 129 <td>$uid:$gid</td>
pascal@115 130 <td>$name</td>
pascal@115 131 <td>$home</td>
pascal@115 132 <td>$shell</td>
pascal@115 133 </tr>
pascal@115 134 EOT
pankso@110 135 fi
pankso@110 136 done
al@303 137 cat << EOT
al@303 138 </tbody>
al@303 139 </table>
al@303 140 EOT
pankso@110 141 cat << EOT
pankso@117 142 <p>
al@303 143 $(gettext 'Password:')
pascal@121 144 <input type="password" name="password" />
al@303 145 <input type="submit" name="do" value="$(gettext 'Change password')" />
pankso@117 146 </p>
pankso@42 147 </form>
pankso@42 148
al@303 149 <h4>$(gettext 'Add a new user')</h4>
al@303 150
pankso@42 151 <form method="get" action="$SCRIPT_NAME">
pankso@42 152 <input type="hidden" name="user" />
al@303 153 <table>
al@303 154 <tr><td>$(gettext 'User login:')</td>
al@303 155 <td><input type="text" name="adduser" size="30" /></td></tr>
al@303 156 <tr><td>$(gettext 'User password:')</td>
al@303 157 <td><input type="password" name="passwd" size="30" /></td></tr>
al@303 158 <tr><td colspan="2">
al@303 159 <input type="submit" value="$(gettext 'Create user')" /></td></tr>
al@303 160 </table>
pankso@42 161 </form>
pascal@147 162
al@303 163 <h4>$(gettext 'Current user sessions')</h4>
pascal@147 164
al@303 165 <pre>$(who)</pre>
al@303 166
al@303 167 <h4>$(gettext 'Last user sessions')</h4>
al@303 168
al@303 169 <pre>$(last)</pre>
pankso@42 170 EOT
pankso@110 171 ;;
pankso@110 172 *)
pankso@110 173 #
pankso@110 174 # Defaut system settings page
pankso@110 175 #
pankso@110 176 cat << EOT
pankso@110 177 <div id="wrapper">
al@303 178 <h2>$(gettext 'System settings')</h2>
al@303 179 <p>$(gettext 'Manage system time, users or language settings')<p>
pankso@110 180 </div>
pankso@110 181 <div id="actions">
pankso@110 182 <a class="button" href="$SCRIPT_NAME?users">
al@303 183 <img src="$IMAGES/users.png" />$(gettext 'Manage users')</a>
pankso@110 184 </div>
pankso@42 185
al@303 186 <h3>$(gettext 'System time')</h3>
al@303 187
al@303 188 <table>
al@303 189 <tr><td>$(gettext 'Time zome:')</td><td>$(cat /etc/TZ)</td></tr>
al@303 190 <tr><td>$(gettext 'System time:')</td><td>$(date)</td></tr>
al@303 191 <tr><td>$(gettext 'Hardware clock:')</td><td>$(hwclock -r)</tr>
al@303 192 </table>
al@303 193 <a class="button" href="$SCRIPT_NAME?rdate">$(gettext 'Sync online')</a>
al@303 194 <a class="button" href="$SCRIPT_NAME?hwclock">$(gettext 'Set hardware clock')</a>
pankso@110 195 EOT
pankso@110 196 #
pankso@110 197 # Locale settings
pankso@110 198 #
pankso@110 199 cat << EOT
al@303 200 <h3 id="locale">$(gettext 'System language')</h3>
pankso@42 201 <p>
pankso@42 202 EOT
pankso@42 203 # Check if a new locale was requested
pankso@42 204 if [ -n "$new_locale" ]; then
pankso@42 205 rm -rf /usr/lib/locale/$new_locale
pankso@42 206 localedef -i $new_locale -c -f UTF-8 \
pankso@42 207 /usr/lib/locale/$new_locale
pankso@42 208 # System configuration
pankso@42 209 echo "LANG=$new_locale" > /etc/locale.conf
pankso@42 210 echo "LC_ALL=$new_locale" >> /etc/locale.conf
al@303 211 eval_gettext "You must logout and login again to your current \
al@303 212 session to use \$new_locale locale."
pankso@42 213 else
al@303 214 gettext 'Current system locales:'
pankso@42 215 locale -a
pankso@42 216 fi
pankso@42 217 cat << EOT
pankso@42 218 </p>
pankso@42 219 <form method="get" action="$SCRIPT_NAME">
al@303 220 $(gettext 'Available locales:')
pascal@81 221 <select name="gen_locale">
al@303 222 <option value="en_US">en__US</options>
pankso@110 223 $(list_locales)
pankso@42 224 </select>
al@303 225 <input type="submit" value="$(gettext 'Activate')" />
pankso@42 226 </form>
pankso@110 227
al@303 228 <h3 id="keymap">$(gettext 'Console keymap')</h3>
pascal@141 229 <p>
pascal@141 230 EOT
pascal@141 231 # Check if a new keymap was requested
pascal@141 232 if [ -n "$new_keymap" ]; then
pascal@141 233 echo "$new_keymap" > /etc/keymap.conf
pascal@141 234 if [ -x /bin/loadkeys ]; then
pascal@141 235 loadkeys $new_keymap
pascal@141 236 else
pascal@141 237 loadkmap < /usr/share/kmap/$new_keymap.kmap
pascal@141 238 fi
pascal@141 239 fi
pascal@142 240 keymap=$(cat /etc/keymap.conf)
al@303 241 eval_gettext 'Current console keymap: $keymap'
pascal@142 242 echo "</p>"
pascal@142 243 if [ -n "$keymap" ]; then
pascal@142 244 case "$keymap" in
pascal@142 245 fr_CH*)
pascal@142 246 keymap="ch" ;;
pascal@142 247 ru)
pascal@142 248 keymap="us,ru(winkeys)" ;;
pascal@142 249 slovene)
pascal@142 250 keymap=si ;;
pascal@142 251 *)
pascal@142 252 keymap=${keymap%-lat*}
pascal@142 253 keymap=${keymap%-abnt2} ;;
pascal@142 254 esac
pascal@142 255 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
pascal@142 256 cat << EOT
pascal@142 257 <form method="get" action="$SCRIPT_NAME">
al@303 258 $(gettext 'Suggested keymap for Xorg:')
pascal@142 259 <input type="submit" name "apply_xorg_kbd" value="$keymap" />
pascal@142 260 <a class="button" href="index.cgi?file=$keyboard_config">
al@303 261 <img src="$IMAGES/edit.png" />$(gettext 'Edit')</a>
pascal@142 262 </form>
pascal@142 263 EOT
pascal@142 264 fi
pascal@141 265 cat << EOT
pascal@141 266 <form method="get" action="$SCRIPT_NAME">
al@303 267 $(gettext 'Available keymaps:')
pascal@141 268 <select name="gen_keymap">
pascal@141 269 $(list_keymaps)
pascal@141 270 </select>
al@303 271 <input type="submit" value="$(gettext 'Activate')" />
pascal@141 272 </form>
pascal@141 273
al@303 274 <h2>$(gettext 'Panel configuration')</h2>
al@303 275
pankso@110 276 <form method="get" action="$SCRIPT_NAME">
pankso@110 277 <p>
al@303 278 $(gettext 'Style:')
pankso@110 279 <select name="style">
pankso@110 280 $(list_styles)
pankso@110 281 </select>
al@303 282 <input type="submit" value="$(gettext 'Activate')" />
pankso@110 283 </p>
pankso@110 284 </form>
pankso@110 285 <form method="get" action="$SCRIPT_NAME">
pankso@110 286 <p>
al@303 287 $(gettext 'Panel password:')
pankso@110 288 <input type="password" name="panel_pass"/>
al@303 289 <input type="submit" value="$(gettext 'Change')" />
pankso@110 290 </p>
pankso@110 291 </form>
pankso@110 292 <p>
al@303 293 $(gettext 'Configuration files:')
pankso@110 294 <a class="button" href="index.cgi?file=$CONFIG">
al@303 295 <img src="$IMAGES/edit.png" />$(gettext 'Panel')</a>
pankso@110 296 <a class="button" href="index.cgi?file=$HTTPD_CONF">
al@303 297 <img src="$IMAGES/edit.png" />$(gettext 'Server')</a>
pankso@110 298 </p>
pankso@110 299 <p>
al@303 300 $(gettext 'TazPanel provides a debuging mode and page:')
al@303 301 <a href="/index.cgi?debug">debug</a>
pankso@110 302 </p>
pankso@42 303 EOT
pankso@110 304 ;;
pankso@110 305 esac
pankso@42 306
pankso@42 307 xhtml_footer
pankso@42 308 exit 0