tazpanel annotate settings.cgi @ rev 233

settings.cgi: Make sure users are setup with users group account. Also make sure users are part of the tty group.
author Christopher Rogers <slaxemulator@gmail.com>
date Fri Feb 24 15:19:20 2012 -0500 (2012-02-24)
parents e0d1571d49ba
children f94970922f85
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
pankso@42 15 TITLE="- 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
pascal@115 34 [ "$(GET do)" == "$(gettext "$cmd")" ] || continue
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 ;;
pankso@118 40 Change*) echo "$user:$(GET password)" | chpasswd | 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
pankso@119 52 echo "$user:$passwd" | chpasswd | 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
pankso@110 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
pascal@115 87 <a name="users"></a>
pankso@110 88 <h3>`gettext "Manage users"`</h3>
pankso@110 89 <form method="get" action="$SCRIPT_NAME">
pascal@115 90 <div id="actions">
pascal@115 91 <div class="float-left">
pascal@115 92 $(gettext "Selection:")
pascal@115 93 <input type="submit" name="do" value="`gettext "Delete user"`" />
pascal@115 94 <input type="submit" name="do" value="`gettext "Lock user"`" />
pascal@115 95 <input type="submit" name="do" value="`gettext "Unlock user"`" />
pascal@115 96 </div>
pascal@115 97 </div>
pankso@42 98 EOT
pascal@115 99 table_start
pascal@115 100 cat << EOT
pascal@115 101 <tr class="thead">
pascal@115 102 <td>`gettext "Login"`</td>
pascal@115 103 <td>`gettext "User ID"`</td>
pascal@115 104 <td>`gettext "Name"`</td>
pascal@115 105 <td>`gettext "Home"`</td>
pascal@115 106 <td>`gettext "Shell"`</td>
pascal@115 107 </tr>
pascal@115 108 EOT
pascal@115 109 for login in `cat /etc/passwd | cut -d ":" -f 1`
pankso@110 110 do
pascal@115 111 if [ -d /home/$login ]; then
pascal@115 112 colorlogin=$login
pascal@115 113 grep -qs "^$login:!" /etc/shadow &&
pascal@115 114 colorlogin="<span style='color: red;'>$login</span>"
pascal@115 115 IFS=':'
pascal@115 116 set -- $(grep "^$login:" /etc/passwd)
pascal@115 117 unset IFS
pascal@115 118 uid=$3
pascal@115 119 gid=$4
pascal@115 120 name="$(echo $5 | sed s/,.*//)"
pascal@115 121 home="$6"
pascal@115 122 shell=$7
pascal@115 123 cat <<EOT
pascal@115 124 <tr>
pascal@115 125 <td><input type='checkbox' name='user' value='$login' />
pascal@115 126 <img src='$IMAGES/user.png' />$colorlogin</td>
pascal@115 127 <td>$uid:$gid</td>
pascal@115 128 <td>$name</td>
pascal@115 129 <td>$home</td>
pascal@115 130 <td>$shell</td>
pascal@115 131 </tr>
pascal@115 132 EOT
pankso@110 133 fi
pankso@110 134 done
pankso@110 135 table_end
pankso@110 136 cat << EOT
pankso@117 137 <p>
pankso@117 138 $(gettext "Password":)
pascal@121 139 <input type="password" name="password" />
pankso@117 140 <input type="submit" name="do" value="`gettext "Change password"`" />
pankso@117 141 </p>
pankso@42 142 </form>
pankso@42 143
pankso@42 144 <h4>`gettext "Add a new user"`</h4>
pankso@42 145 <form method="get" action="$SCRIPT_NAME">
pankso@42 146 <input type="hidden" name="user" />
pankso@42 147 <p>`gettext "User login:"`</p>
pankso@42 148 <p><input type="text" name="adduser" size="30" /></p>
pankso@42 149 <p>`gettext "User password:"`</p>
pankso@42 150 <p><input type="password" name="passwd" size="30" /></p>
pankso@42 151 <input type="submit" value="`gettext "Create user"`" />
pankso@42 152 </form>
pascal@147 153
pascal@147 154 <h4>`gettext "Current user sessions"`</h4>
pascal@147 155 <pre>
pascal@147 156 $(who)
pascal@147 157 </pre>
pascal@147 158
pascal@147 159 <h4>`gettext "Last user sessions"`</h4>
pascal@147 160 <pre>
pascal@147 161 $(last)
pascal@147 162 </pre>
pankso@42 163 EOT
pankso@110 164 ;;
pankso@110 165 *)
pankso@110 166 #
pankso@110 167 # Defaut system settings page
pankso@110 168 #
pankso@110 169 cat << EOT
pankso@110 170 <div id="wrapper">
pankso@110 171 <h2>$(gettext "System settings")</h2>
pankso@110 172 <p>$(gettext "Manage system time, users or language settings")<p>
pankso@110 173 </div>
pankso@110 174 <div id="actions">
pankso@110 175 <a class="button" href="$SCRIPT_NAME?users">
pankso@110 176 <img src="$IMAGES/users.png" />$(gettext "Manage users")</a>
pankso@110 177 </div>
pankso@42 178
pankso@110 179 <h3>`gettext "System time"`</h3>
pankso@110 180 <pre>
pankso@110 181 `gettext "Time zome :"` `cat /etc/TZ`
pankso@110 182 `gettext "System time :"` `date`
pankso@110 183 `gettext "Hardware clock :"` `hwclock -r`
pankso@110 184 </pre>
pankso@110 185 <a class="button" href="$SCRIPT_NAME?rdate">`gettext "Sync online"`</a>
pankso@110 186 <a class="button" href="$SCRIPT_NAME?hwclock">`gettext "Set hardware clock"`</a>
pankso@110 187 EOT
pankso@110 188 #
pankso@110 189 # Locale settings
pankso@110 190 #
pankso@110 191 cat << EOT
pankso@42 192 <a name="locale"></a>
pankso@42 193 <h3>`gettext "System language"`</h3>
pankso@42 194 <p>
pankso@42 195 EOT
pankso@42 196 # Check if a new locale was requested
pankso@42 197 if [ -n "$new_locale" ]; then
pankso@42 198 rm -rf /usr/lib/locale/$new_locale
pankso@42 199 localedef -i $new_locale -c -f UTF-8 \
pankso@42 200 /usr/lib/locale/$new_locale
pankso@42 201 # System configuration
pankso@42 202 echo "LANG=$new_locale" > /etc/locale.conf
pankso@42 203 echo "LC_ALL=$new_locale" >> /etc/locale.conf
paul@52 204 eval_gettext "You must logout and login again to your current
pankso@42 205 session to use \$new_locale locale."
pankso@42 206 else
pankso@110 207 gettext "Current system locales: "
pankso@42 208 locale -a
pankso@42 209 fi
pankso@42 210 cat << EOT
pankso@42 211 </p>
pankso@42 212 <form method="get" action="$SCRIPT_NAME">
pankso@110 213 $(gettext "Available locales:")
pascal@81 214 <select name="gen_locale">
pankso@42 215 <option value="en_US">en_US</options>
pankso@110 216 $(list_locales)
pankso@42 217 </select>
pankso@110 218 <input type="submit" value="$(gettext "Activate")" />
pankso@42 219 </form>
pankso@110 220
pascal@141 221 <a name="keymap"></a>
pascal@141 222 <h3>`gettext "Console keymap"`</h3>
pascal@141 223 <p>
pascal@141 224 EOT
pascal@141 225 # Check if a new keymap was requested
pascal@141 226 if [ -n "$new_keymap" ]; then
pascal@141 227 echo "$new_keymap" > /etc/keymap.conf
pascal@141 228 if [ -x /bin/loadkeys ]; then
pascal@141 229 loadkeys $new_keymap
pascal@141 230 else
pascal@141 231 loadkmap < /usr/share/kmap/$new_keymap.kmap
pascal@141 232 fi
pascal@141 233 fi
pascal@141 234 gettext "Current console keymap: "
pascal@142 235 keymap=$(cat /etc/keymap.conf)
pascal@142 236 echo $keymap
pascal@142 237 echo "</p>"
pascal@142 238 if [ -n "$keymap" ]; then
pascal@142 239 case "$keymap" in
pascal@142 240 fr_CH*)
pascal@142 241 keymap="ch" ;;
pascal@142 242 ru)
pascal@142 243 keymap="us,ru(winkeys)" ;;
pascal@142 244 slovene)
pascal@142 245 keymap=si ;;
pascal@142 246 *)
pascal@142 247 keymap=${keymap%-lat*}
pascal@142 248 keymap=${keymap%-abnt2} ;;
pascal@142 249 esac
pascal@142 250 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
pascal@142 251 cat << EOT
pascal@142 252 <form method="get" action="$SCRIPT_NAME">
pascal@142 253 $(gettext "Suggested keymap for Xorg:")
pascal@142 254 <input type="submit" name "apply_xorg_kbd" value="$keymap" />
pascal@142 255 <a class="button" href="index.cgi?file=$keyboard_config">
pascal@142 256 <img src="$IMAGES/edit.png" />$(gettext "Edit")</a>
pascal@142 257 </form>
pascal@142 258 EOT
pascal@142 259 fi
pascal@141 260 cat << EOT
pascal@141 261 <form method="get" action="$SCRIPT_NAME">
pascal@141 262 $(gettext "Available keymaps:")
pascal@141 263 <select name="gen_keymap">
pascal@141 264 $(list_keymaps)
pascal@141 265 </select>
pascal@141 266 <input type="submit" value="$(gettext "Activate")" />
pascal@141 267 </form>
pascal@141 268
pankso@193 269 <h2>$(gettext "Panel configuration")</h2>
pankso@110 270 <form method="get" action="$SCRIPT_NAME">
pankso@110 271 <p>
pankso@110 272 $(gettext "Style:")
pankso@110 273 <select name="style">
pankso@110 274 $(list_styles)
pankso@110 275 </select>
pankso@110 276 <input type="submit" value="$(gettext "Activate")" />
pankso@110 277 </p>
pankso@110 278 </form>
pankso@110 279 <form method="get" action="$SCRIPT_NAME">
pankso@110 280 <p>
pankso@110 281 $(gettext "Panel password:")
pankso@110 282 <input type="password" name="panel_pass"/>
pankso@110 283 <input type="submit" value="$(gettext "Change")" />
pankso@110 284 </p>
pankso@110 285 </form>
pankso@110 286 <p>
pankso@110 287 $(gettext "Configuration files: ")
pankso@110 288 <a class="button" href="index.cgi?file=$CONFIG">
pankso@110 289 <img src="$IMAGES/edit.png" />$(gettext "Panel")</a>
pankso@110 290 <a class="button" href="index.cgi?file=$HTTPD_CONF">
pankso@110 291 <img src="$IMAGES/edit.png" />$(gettext "Server")</a>
pankso@110 292 </p>
pankso@110 293 <p>
pankso@110 294 $(gettext "TazPanel provides a debuging mode and page:")
pankso@110 295 <a href='/index.cgi?debug'>debug</a>
pankso@110 296 </p>
pankso@42 297 EOT
pankso@110 298 ;;
pankso@110 299 esac
pankso@42 300
pankso@42 301 xhtml_footer
pankso@42 302 exit 0