tazpanel annotate settings.cgi @ rev 337

settings.cgi: set date manualy
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Jan 02 13:35:40 2013 +0100 (2013-01-02)
parents 288c37594662
children 51abbebce217
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
pascal@336 17 # Get system database. LDAP compatible.
pascal@336 18 getdb()
pascal@336 19 {
pascal@336 20 getent $1 2>/dev/null || cat /etc/$1
pascal@336 21 }
pascal@336 22
pascal@336 23 listdb()
pascal@336 24 {
pascal@336 25 for item in $(getdb $1 | cut -d ":" -f 1); do
pascal@336 26 echo "<option>$item</option>\n"
pascal@336 27 done
pascal@336 28 }
pascal@336 29
pankso@42 30 #
pankso@42 31 # Commands executed before page loading.
pankso@42 32 #
pankso@42 33
pascal@81 34 case " $(GET) " in
pascal@115 35 *\ do\ *)
paul@205 36 # Assume no array support in httpd_helper.sh ;^)
pascal@115 37 users=""
pascal@336 38 groups=""
pascal@115 39 IFS="&"
pascal@115 40 for i in $QUERY_STRING ; do
pascal@115 41 case "$i" in
pascal@336 42 user=*) users="$users ${i#user=}" ;;
pascal@336 43 group=*) groups="$groups ${i#group=}" ;;
pascal@115 44 esac
pascal@115 45 done
pascal@115 46 unset IFS
pascal@336 47 for cmd in "Delete group" ; do
pascal@336 48 [ "$(GET do)" == "$(gettext "$cmd")" ] || continue
pascal@336 49 for group in $groups ; do
pascal@336 50 case "$cmd" in
pascal@336 51 Delete*) delgroup $group ;;
pascal@336 52 esac
pascal@336 53 done
pascal@336 54 done
pascal@115 55 for cmd in "Delete user" "Lock user" "Unlock user" \
pascal@115 56 "Change password" ; do
al@303 57 [ "$(GET do)" == "$(gettext "$cmd")" ] || continue # BUGGY
pascal@115 58 for user in $users ; do
pascal@115 59 case "$cmd" in
pascal@115 60 Delete*) deluser $user ;;
pankso@119 61 Lock*) passwd -l $user | log ;;
pankso@119 62 Unlock*) passwd -u $user | log ;;
pascal@252 63 Change*) echo "$user:$(GET password)" | chpasswd -m | log ;;
pascal@115 64 esac
pascal@115 65 done
pascal@115 66 done ;;
pascal@336 67 *\ addmember\ *)
pascal@336 68 addgroup $(GET member) $(GET group) ;;
pascal@336 69 *\ delmember\ *)
pascal@336 70 delgroup $(GET member) $(GET group) ;;
pascal@336 71 *\ addgroup\ *)
pascal@336 72 addgroup $(GET addgroup) ;;
pascal@115 73 *\ adduser\ *)
pankso@42 74 #
pankso@42 75 # Manage system user accounts
pankso@42 76 #
pascal@81 77 user=$(GET adduser)
pascal@115 78 passwd=$(GET passwd)
pascal@81 79 if [ -n "$user" ]; then
slaxemulator@233 80 adduser -D -s /bin/sh -g "SliTaz User" -G users -h /home/$user $user
pascal@252 81 echo "$user:$passwd" | chpasswd -m | log
slaxemulator@233 82 for g in audio cdrom floppy video tty
pascal@81 83 do
pascal@81 84 addgroup $user $g
pascal@81 85 done
pascal@81 86 fi ;;
pascal@81 87 *\ gen_locale\ *)
pascal@81 88 new_locale=$(GET gen_locale) ;;
pascal@141 89 *\ gen_keymap\ *)
pascal@141 90 new_keymap=$(GET gen_keymap) ;;
pascal@142 91 *\ apply_xorg_kbd\ *)
pascal@142 92 sed -i "s/XkbLayout.*/XkbLayout \" \"$(GET apply_xorg_kbd)\"/" \
pascal@142 93 /etc/X11/xorg.conf.d/40-Keyboard.conf ;;
pascal@337 94 *\ date\ *)
pascal@337 95 date $(GET month)$(GET day)$(GET hour)$(GET min)$(GET year).$(GET sec) ;;
pascal@81 96 *\ rdate\ *)
pankso@42 97 rdate -s tick.greyware.com ;;
pascal@81 98 *\ hwclock\ *)
pankso@150 99 hwclock -w -u ;;
pankso@110 100 *\ panel_pass*)
pankso@110 101 sed -i s@/:root:.*@/:root:$(GET panel_pass)@ $HTTPD_CONF ;;
pankso@110 102 *\ style*)
pankso@110 103 sed -i s/'^STYLE.*'/"STYLE=\"$(GET style)\""/ $CONFIG
al@292 104 . $CONFIG ;;
pankso@42 105 esac
pankso@42 106
pankso@42 107 #
pankso@42 108 # Default xHTML content
pankso@42 109 #
pankso@42 110 xhtml_header
pankso@67 111
pankso@110 112 case " $(GET) " in
pascal@336 113 *\ group*)
pascal@336 114 #
pascal@336 115 # Groups management
pascal@336 116 #
pascal@336 117 cat <<EOT
pascal@336 118 <h3 id="groups">$(gettext 'Manage groups')</h3>
pascal@336 119
pascal@336 120 <form method="get" action="$SCRIPT_NAME">
pascal@336 121 <input type="hidden" name="groups" />
pascal@336 122 <div id="actions">
pascal@336 123 <div class="float-left">
pascal@336 124 $(gettext 'Selection:')
pascal@336 125 <input type="submit" name="do" value="$(gettext 'Delete group')" />
pascal@336 126 </div>
pascal@336 127 </div>
pascal@336 128
pascal@336 129 <table class="zebra outbox">
pascal@336 130 <thead>
pascal@336 131 <tr class="thead">
pascal@336 132 <td>$(gettext 'Group')</td>
pascal@336 133 <td>$(gettext 'Group ID')</td>
pascal@336 134 <td>$(gettext 'Members')</td>
pascal@336 135 </tr>
pascal@336 136 </thead>
pascal@336 137 </tbody>
pascal@336 138 EOT
pascal@336 139 for group in `getdb group | cut -d ":" -f 1`
pascal@336 140 do
pascal@336 141 IFS=':'
pascal@336 142 set -- $(getdb group | grep "^$group:")
pascal@336 143 unset IFS
pascal@336 144 gid=$3
pascal@336 145 members=$4
pascal@336 146 cat <<EOT
pascal@336 147 <tr>
pascal@336 148 <td><input type='checkbox' name='group' value='$group' />
pascal@336 149 <img src='$IMAGES/users.png' />$group</td>
pascal@336 150 <td>$gid</td>
pascal@336 151 <td>${members//,/, }</td>
pascal@336 152 </tr>
pascal@336 153 EOT
pascal@336 154 done
pascal@336 155 cat << EOT
pascal@336 156 </tbody>
pascal@336 157 </table>
pascal@336 158 </form>
pascal@336 159
pascal@336 160 <section>
pascal@336 161 <h4>$(gettext 'Add a new group')</h4>
pascal@336 162
pascal@336 163 <form method="get" action="$SCRIPT_NAME">
pascal@336 164 <input type="hidden" name="groups" />
pascal@336 165 <table>
pascal@336 166 <tr><td>$(gettext 'Group name:')</td>
pascal@336 167 <td><input type="text" name="addgroup" size="30" /></td>
pascal@336 168 <td>
pascal@336 169 <input type="submit" value="$(gettext 'Create group')" /></td></tr>
pascal@336 170 </table>
pascal@336 171 </form>
pascal@336 172 </section>
pascal@336 173
pascal@336 174 <section>
pascal@336 175 <h4>$(gettext 'Manage group membership')</h4>
pascal@336 176
pascal@336 177 <form method="get" action="$SCRIPT_NAME">
pascal@336 178 <input type="hidden" name="groups" />
pascal@336 179 <table>
pascal@336 180 <tr><td>$(gettext 'Group name:')</td>
pascal@336 181 <td><select name="group">
pascal@336 182 $(listdb group)
pascal@336 183 </select></td>
pascal@336 184 <td>$(gettext 'User name:')</td>
pascal@336 185 <td><select name="member">
pascal@336 186 $(listdb passwd)
pascal@336 187 </select></td></tr>
pascal@336 188 <tr><td colspan="4"><input type="submit" name="addmember" value="$(gettext 'Add user')" />
pascal@336 189 <input type="submit" name="delmember" value="$(gettext 'Remove user')" /></td></tr>
pascal@336 190 </table>
pascal@336 191 </form>
pascal@336 192 </section>
pascal@336 193
pascal@336 194 EOT
pascal@336 195 ;;
pascal@336 196
pankso@110 197 *\ user*)
pankso@110 198 #
pankso@110 199 # Users management
pankso@110 200 #
pankso@110 201 cat <<EOT
al@303 202 <h3 id="users">$(gettext 'Manage users')</h3>
al@303 203
pankso@110 204 <form method="get" action="$SCRIPT_NAME">
pascal@115 205 <div id="actions">
pascal@115 206 <div class="float-left">
al@303 207 $(gettext 'Selection:')
al@303 208 <input type="submit" name="do" value="$(gettext 'Delete user')" />
al@303 209 <input type="submit" name="do" value="$(gettext 'Lock user')" />
al@303 210 <input type="submit" name="do" value="$(gettext 'Unlock user')" />
pascal@115 211 </div>
pascal@115 212 </div>
al@303 213
al@311 214 <table class="zebra outbox">
al@303 215 <thead>
pascal@115 216 <tr class="thead">
al@303 217 <td>$(gettext 'Login')</td>
al@303 218 <td>$(gettext 'User ID')</td>
al@303 219 <td>$(gettext 'Name')</td>
al@303 220 <td>$(gettext 'Home')</td>
al@303 221 <td>$(gettext 'Shell')</td>
pascal@115 222 </tr>
al@303 223 </thead>
al@303 224 </tbody>
pascal@115 225 EOT
pascal@336 226 for login in `getdb passwd | cut -d ":" -f 1`
pankso@110 227 do
pascal@115 228 if [ -d /home/$login ]; then
pascal@115 229 colorlogin=$login
pascal@115 230 grep -qs "^$login:!" /etc/shadow &&
pascal@115 231 colorlogin="<span style='color: red;'>$login</span>"
pascal@115 232 IFS=':'
pascal@336 233 set -- $(getdb passwd | grep "^$login:")
pascal@115 234 unset IFS
pascal@115 235 uid=$3
pascal@115 236 gid=$4
pascal@115 237 name="$(echo $5 | sed s/,.*//)"
pascal@115 238 home="$6"
pascal@115 239 shell=$7
pascal@115 240 cat <<EOT
pascal@115 241 <tr>
pascal@115 242 <td><input type='checkbox' name='user' value='$login' />
pascal@115 243 <img src='$IMAGES/user.png' />$colorlogin</td>
pascal@115 244 <td>$uid:$gid</td>
pascal@115 245 <td>$name</td>
pascal@115 246 <td>$home</td>
pascal@115 247 <td>$shell</td>
pascal@115 248 </tr>
pascal@115 249 EOT
pankso@110 250 fi
pankso@110 251 done
al@303 252 cat << EOT
al@303 253 </tbody>
al@303 254 </table>
al@303 255 EOT
pankso@110 256 cat << EOT
pankso@117 257 <p>
al@303 258 $(gettext 'Password:')
pascal@121 259 <input type="password" name="password" />
al@303 260 <input type="submit" name="do" value="$(gettext 'Change password')" />
pankso@117 261 </p>
pankso@42 262 </form>
pankso@42 263
al@312 264 <section>
al@303 265 <h4>$(gettext 'Add a new user')</h4>
al@303 266
pankso@42 267 <form method="get" action="$SCRIPT_NAME">
pankso@42 268 <input type="hidden" name="user" />
al@303 269 <table>
al@303 270 <tr><td>$(gettext 'User login:')</td>
al@303 271 <td><input type="text" name="adduser" size="30" /></td></tr>
al@303 272 <tr><td>$(gettext 'User password:')</td>
al@303 273 <td><input type="password" name="passwd" size="30" /></td></tr>
al@303 274 <tr><td colspan="2">
al@303 275 <input type="submit" value="$(gettext 'Create user')" /></td></tr>
al@303 276 </table>
pankso@42 277 </form>
al@312 278 </section>
pascal@147 279
al@312 280 <section>
al@303 281 <h4>$(gettext 'Current user sessions')</h4>
pascal@147 282
al@303 283 <pre>$(who)</pre>
al@312 284 </section>
al@303 285
al@312 286 <section>
al@303 287 <h4>$(gettext 'Last user sessions')</h4>
al@303 288
al@303 289 <pre>$(last)</pre>
al@312 290 </section>
pankso@42 291 EOT
pankso@110 292 ;;
al@313 293
al@313 294
al@313 295 *\ locale*)
al@313 296 #
al@313 297 # Choose locale
al@313 298 #
al@313 299 LOADING_MSG="$(gettext 'Please wait...')"
al@313 300 loading_msg
al@313 301 cur_loc=$(locale | grep LANG | cut -d= -f2)
al@318 302 cat << EOT
al@313 303 <h3 id="locale">$(gettext 'Choose locale')</h3>
al@313 304
al@313 305 <p>$(gettext 'Current locale settings:')</p>
al@313 306 <pre>$(locale)</pre>
al@313 307
al@313 308 <p>$(gettext 'Locales that are currently installed on the machine:')</p>
al@313 309 <pre>$(locale -a)</pre>
al@313 310
al@313 311 <p>$(gettext 'Available locales:')</p>
al@318 312 EOT
al@313 313
al@318 314 is_installed "glibc-locale"
al@318 315 [ $? = 1 ] &&
al@318 316 msg tip $(gettext \
paul@319 317 "Can't see your language?<br/>You can \
al@318 318 <a href='/pkgs.cgi?do=Install&glibc-locale'>install glibc-locale</a> \
paul@319 319 to see a larger list of available locales.")
al@318 320
al@318 321 cat << EOT
al@313 322 <form method="get" action="$SCRIPT_NAME">
al@313 323 <div class="outbox">
al@313 324 <table class="zebra fixed">
al@313 325 <thead>
al@313 326 <tr><td style="width:9em">$(gettext 'Code')</td>
al@313 327 <td style="width:10em">$(gettext 'Language')</td>
al@313 328 <td style="width:10em">$(gettext 'Territory')</td>
al@313 329 <td>$(gettext 'Description')</td>
al@313 330 </tr>
al@313 331 </thead>
al@313 332 </table>
al@313 333
al@313 334 <div style="max-height: 16em; overflow:auto">
al@313 335 <table class="zebra fixed">
al@313 336 <col style="width:9em">
al@313 337 <col style="width:10em">
al@313 338 <col style="width:10em">
al@313 339 <col>
al@313 340 <tbody style="max-height:10em; overflow:auto">
al@313 341 EOT
al@313 342 for locale in $(find /usr/share/i18n/locales -type f | sort)
al@313 343 do
al@313 344 locale_name=$(basename $locale)
al@313 345 locale_title=$(grep -m 1 -e '^ *title' $locale | cut -d'"' -f2)
al@313 346 if [ -n "$locale_title" ]; then
al@313 347 sel=""; [ "$locale_name" == "$cur_loc" ] && sel="checked"
al@313 348 cat << EOT
al@313 349 <tr><td><input type="radio" name="gen_locale" value="$locale_name" $sel />$locale_name</td>
al@313 350 <td>$(gettext -d iso_639 "$(grep -m 1 -e '^ *language' $locale | cut -d '"' -f2)")</td>
al@313 351 <td>$(gettext -d iso_3166 "$(grep -m 1 -e '^ *territory' $locale | cut -d '"' -f2)")</td>
al@313 352 <td>$locale_title</td>
al@313 353 </tr>
al@313 354 EOT
al@313 355 fi
al@313 356 done
al@313 357 cat << EOT
al@313 358 </tbody>
al@313 359 </table>
al@313 360 </div>
al@313 361 </div>
al@313 362 <p><input type="submit" value="$(gettext 'Activate')" /></p>
al@313 363 </form>
al@313 364 EOT
al@313 365 ;;
al@313 366
al@313 367
pankso@110 368 *)
pankso@110 369 #
pankso@110 370 # Defaut system settings page
pankso@110 371 #
pankso@110 372 cat << EOT
pankso@110 373 <div id="wrapper">
al@303 374 <h2>$(gettext 'System settings')</h2>
al@303 375 <p>$(gettext 'Manage system time, users or language settings')<p>
pankso@110 376 </div>
pankso@110 377 <div id="actions">
pankso@110 378 <a class="button" href="$SCRIPT_NAME?users">
pascal@336 379 <img src="$IMAGES/user.png" />$(gettext 'Manage users')</a>
pascal@336 380 <a class="button" href="$SCRIPT_NAME?groups">
pascal@336 381 <img src="$IMAGES/users.png" />$(gettext 'Manage groups')</a>
pankso@110 382 </div>
pankso@42 383
al@312 384 <section>
al@303 385 <h3>$(gettext 'System time')</h3>
al@303 386
al@303 387 <table>
al@313 388 <tr><td>$(gettext 'Time zome:')</td><td>$(cat /etc/TZ)
al@313 389 <a class="button" href="$SCRIPT_NAME">$(gettext 'Change')</a></td></tr>
al@303 390 <tr><td>$(gettext 'System time:')</td><td>$(date)</td></tr>
al@303 391 <tr><td>$(gettext 'Hardware clock:')</td><td>$(hwclock -r)</tr>
al@303 392 </table>
pascal@337 393 <form method="get" action="$SCRIPT_NAME">
pascal@337 394 <select name="day">
pascal@337 395 $(for i in $(seq 1 31); do echo "<option>$i</option>"; done)
pascal@337 396 </select>
pascal@337 397 <select name="month">
pascal@337 398 $(for i in 01 02 03 04 05 06 07 08 09 10 11 12; do
pascal@337 399 date -d ${i}010101 '+%m %B' | \
pascal@337 400 sed 's|\(.*\) \(.*\)|<option value="\1">\2</option>|'
pascal@337 401 done)
pascal@337 402 </select>
pascal@337 403 <select name="year">
pascal@337 404 $(for i in $(seq 2010 2030); do echo "<option>$i</option>"; done)
pascal@337 405 </select>
pascal@337 406 - <select name="hour">
pascal@337 407 $(for i in $(seq 0 23); do printf "<option>%02d</option>" $i; done)
pascal@337 408 </select>
pascal@337 409 : <select name="min">
pascal@337 410 $(for i in $(seq 0 59); do printf "<option>%02d</option>" $i; done)
pascal@337 411 </select>
pascal@337 412 : <select name="sec">
pascal@337 413 $(for i in $(seq 0 59); do printf "<option>%02d</option>" $i; done)
pascal@337 414 </select>
pascal@337 415 <input type="submit" name="date" value="$(gettext 'Set date')" />
pascal@337 416 </form>
al@303 417 <a class="button" href="$SCRIPT_NAME?rdate">$(gettext 'Sync online')</a>
al@303 418 <a class="button" href="$SCRIPT_NAME?hwclock">$(gettext 'Set hardware clock')</a>
al@312 419 </section>
pankso@110 420 EOT
pankso@110 421 #
pankso@110 422 # Locale settings
pankso@110 423 #
pankso@110 424 cat << EOT
al@312 425 <section>
al@303 426 <h3 id="locale">$(gettext 'System language')</h3>
pankso@42 427 <p>
pankso@42 428 EOT
pankso@42 429 # Check if a new locale was requested
pankso@42 430 if [ -n "$new_locale" ]; then
pankso@42 431 rm -rf /usr/lib/locale/$new_locale
pankso@42 432 localedef -i $new_locale -c -f UTF-8 \
pankso@42 433 /usr/lib/locale/$new_locale
pankso@42 434 # System configuration
pankso@42 435 echo "LANG=$new_locale" > /etc/locale.conf
pankso@42 436 echo "LC_ALL=$new_locale" >> /etc/locale.conf
al@318 437 msg warn "$(eval_gettext \
al@318 438 'You must logout and login again to your current session to use $new_locale locale.')"
pankso@42 439 else
al@313 440 gettext 'Current system locale:'; echo -n " <strong>"
al@313 441 locale | grep LANG | cut -d= -f2
pankso@42 442 fi
pankso@42 443 cat << EOT
al@313 444 </strong> <a class="button" href="$SCRIPT_NAME?locale">$(gettext 'Change')</a></p>
al@312 445 </section>
pankso@110 446
al@312 447 <section>
al@303 448 <h3 id="keymap">$(gettext 'Console keymap')</h3>
pascal@141 449 <p>
pascal@141 450 EOT
pascal@141 451 # Check if a new keymap was requested
pascal@141 452 if [ -n "$new_keymap" ]; then
pascal@141 453 echo "$new_keymap" > /etc/keymap.conf
pascal@141 454 if [ -x /bin/loadkeys ]; then
pascal@141 455 loadkeys $new_keymap
pascal@141 456 else
pascal@141 457 loadkmap < /usr/share/kmap/$new_keymap.kmap
pascal@141 458 fi
pascal@141 459 fi
pascal@142 460 keymap=$(cat /etc/keymap.conf)
al@303 461 eval_gettext 'Current console keymap: $keymap'
pascal@142 462 echo "</p>"
pascal@142 463 if [ -n "$keymap" ]; then
pascal@142 464 case "$keymap" in
pascal@142 465 fr_CH*)
pascal@142 466 keymap="ch" ;;
pascal@142 467 ru)
pascal@142 468 keymap="us,ru(winkeys)" ;;
pascal@142 469 slovene)
pascal@142 470 keymap=si ;;
pascal@142 471 *)
pascal@142 472 keymap=${keymap%-lat*}
pascal@142 473 keymap=${keymap%-abnt2} ;;
pascal@142 474 esac
pascal@142 475 keyboard_config=/etc/X11/xorg.conf.d/40-Keyboard.conf
pascal@142 476 cat << EOT
pascal@142 477 <form method="get" action="$SCRIPT_NAME">
al@303 478 $(gettext 'Suggested keymap for Xorg:')
pascal@142 479 <input type="submit" name "apply_xorg_kbd" value="$keymap" />
pascal@142 480 <a class="button" href="index.cgi?file=$keyboard_config">
al@303 481 <img src="$IMAGES/edit.png" />$(gettext 'Edit')</a>
pascal@142 482 </form>
pascal@142 483 EOT
pascal@142 484 fi
pascal@141 485 cat << EOT
pascal@141 486 <form method="get" action="$SCRIPT_NAME">
al@303 487 $(gettext 'Available keymaps:')
pascal@141 488 <select name="gen_keymap">
pascal@141 489 $(list_keymaps)
pascal@141 490 </select>
al@303 491 <input type="submit" value="$(gettext 'Activate')" />
pascal@141 492 </form>
al@312 493 </section>
pascal@141 494
al@312 495 <section>
al@303 496 <h2>$(gettext 'Panel configuration')</h2>
al@303 497
pankso@110 498 <form method="get" action="$SCRIPT_NAME">
pankso@110 499 <p>
al@303 500 $(gettext 'Style:')
pankso@110 501 <select name="style">
pankso@110 502 $(list_styles)
pankso@110 503 </select>
al@303 504 <input type="submit" value="$(gettext 'Activate')" />
pankso@110 505 </p>
pankso@110 506 </form>
pankso@110 507 <form method="get" action="$SCRIPT_NAME">
pankso@110 508 <p>
al@303 509 $(gettext 'Panel password:')
pankso@110 510 <input type="password" name="panel_pass"/>
al@303 511 <input type="submit" value="$(gettext 'Change')" />
pankso@110 512 </p>
pankso@110 513 </form>
pankso@110 514 <p>
al@303 515 $(gettext 'Configuration files:')
pankso@110 516 <a class="button" href="index.cgi?file=$CONFIG">
al@303 517 <img src="$IMAGES/edit.png" />$(gettext 'Panel')</a>
pankso@110 518 <a class="button" href="index.cgi?file=$HTTPD_CONF">
al@303 519 <img src="$IMAGES/edit.png" />$(gettext 'Server')</a>
pankso@110 520 </p>
pankso@110 521 <p>
al@303 522 $(gettext 'TazPanel provides a debuging mode and page:')
al@303 523 <a href="/index.cgi?debug">debug</a>
pankso@110 524 </p>
al@312 525 </section>
pankso@42 526 EOT
pankso@110 527 ;;
pankso@110 528 esac
pankso@42 529
pankso@42 530 xhtml_footer
pankso@42 531 exit 0