tazpanel annotate settings.cgi @ rev 141

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