tazpkg annotate tazpanel/pkgs.cgi @ rev 717

pkgs.cgi: fix i18n_desc, show package description in info (use tazpkg); tazpkg: recognize interactive mode.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Wed Dec 17 01:59:31 2014 +0200 (2014-12-17)
parents 5cfba8b15016
children 9081585e7446
rev   line source
pascal@627 1 #!/bin/sh
pascal@627 2 #
al@633 3 # TazPkg CGI interface - Manage packages via a browser
pascal@627 4 #
pascal@627 5 # This CGI interface extensively uses tazpkg to manage packages and have
pascal@627 6 # its own code for some tasks. Please KISS, it is important and keep speed
pascal@627 7 # in mind. Thanks, Pankso.
pascal@627 8 #
al@707 9 # (C) 2011-2014 SliTaz GNU/Linux - BSD License
pascal@627 10 #
pascal@627 11
al@707 12 . /lib/libtaz.sh
pascal@627 13 . lib/libtazpanel
pascal@627 14 get_config
pascal@627 15 header
pascal@627 16
al@707 17
pascal@627 18 # xHTML 5 header with special side bar for categories.
al@707 19 TITLE=$(TEXTDOMAIN='tazpkg'; _ 'TazPanel - Packages')
pascal@627 20 xhtml_header | sed 's/id="content"/id="content-sidebar"/'
pascal@627 21
al@633 22 export TEXTDOMAIN='tazpkg'
psychomaniak@714 23 PKGS_DB="$LOCALSTATE"
al@707 24
pascal@627 25 pkg_info_link()
pascal@627 26 {
pascal@627 27 echo "$SCRIPT_NAME?info=$1" | sed 's/+/%2B/g'
pascal@627 28 }
pascal@627 29
al@707 30
pascal@627 31 i18n_desc() {
pascal@627 32 # Display localized short description
al@717 33 for L in $LANG ${LANG%%_*}; do
al@717 34 if [ -e "$PKGS_DB/packages-desc.$L" ]; then
al@717 35 LOCDESC=$(awk -F$'\t' -vp=$pkg '{if ($1 == p) print $2}' $PKGS_DB/packages-desc.$L)
al@717 36 if [ -n "$LOCDESC" ]; then
al@717 37 SHORT_DESC="$LOCDESC"
al@717 38 break
al@717 39 fi
al@717 40 fi
al@717 41 done
pascal@627 42 }
pascal@627 43
al@707 44
pascal@627 45 # We need packages information for list and search
al@707 46
pascal@627 47 parse_packages_desc() {
pascal@627 48 IFS="|"
pascal@627 49 cut -f 1,2,3,5 -d "|" | while read PACKAGE VERSION SHORT_DESC WEB_SITE
pascal@627 50 do
pascal@627 51 image=tazpkg-installed.png
pascal@627 52 [ -d $INSTALLED/${PACKAGE% } ] || image=tazpkg.png
pascal@627 53 i18n_desc
pascal@627 54 cat << EOT
pascal@627 55 <tr>
pascal@627 56 <td><input type="checkbox" name="pkg" value="$PACKAGE">
pascal@627 57 <a href="$(pkg_info_link $PACKAGE)"><img
pascal@627 58 src="$IMAGES/$image"/>$PACKAGE</a></td>
pascal@627 59 <td>$VERSION</td>
pascal@627 60 <td class="desc">$SHORT_DESC</td>
pascal@627 61 <td><a href="$WEB_SITE"><img src="$IMAGES/browser.png"/></a></td>
pascal@627 62 </tr>
pascal@627 63 EOT
pascal@627 64 done
pascal@627 65 unset IFS
pascal@627 66 }
pascal@627 67
al@707 68
pascal@627 69 # Display a full summary of packages stats
al@707 70
pascal@627 71 packages_summary() {
pascal@627 72 cat << EOT
pascal@627 73 <table class="zebra outbox">
pascal@627 74 <tbody>
al@707 75 <tr><td>$(_ 'Last recharge:')</td>
pascal@627 76 EOT
al@700 77 stat=$(stat -c %y $PKGS_DB/packages.list | \
pascal@627 78 sed 's/\(:..\):.*/\1/' | awk '{print $1}')
al@700 79 mtime=$(find $PKGS_DB/packages.list -mtime +10)
pascal@627 80 echo -n "<td>$stat "
pascal@627 81 if [ "$mtime" ]; then
al@707 82 _ '(Older than 10 days)'
pascal@627 83 else
al@707 84 _ '(Not older than 10 days)'
pascal@627 85 fi
pascal@627 86 cat << EOT
pascal@627 87 </td></tr>
al@707 88 <tr><td>$(_ 'Installed packages:')</td>
pascal@627 89 <td>$(ls $INSTALLED | wc -l)</td></tr>
al@707 90 <tr><td>$(_ 'Mirrored packages:')</td>
al@700 91 <td>$(cat $PKGS_DB/packages.list | wc -l)</td></tr>
al@707 92 <tr><td>$(_ 'Upgradeable packages:')</td>
al@700 93 <td>$(cat $PKGS_DB/packages.up | wc -l)</td></tr>
al@707 94 <tr><td>$(_ 'Installed files:')</td>
pascal@627 95 <td>$(cat $INSTALLED/*/files.list | wc -l)</td></tr>
al@707 96 <tr><td>$(_ 'Blocked packages:')</td>
al@700 97 <td>$(cat $PKGS_DB/blocked-packages.list | wc -l)</td></tr>
pascal@627 98 </tbody>
pascal@627 99 </table>
pascal@627 100 EOT
pascal@627 101 }
pascal@627 102
al@707 103
pascal@627 104 # Parse mirrors list to be able to have an icon and remove link
al@707 105
pascal@627 106 list_mirrors() {
pascal@627 107 while read line
pascal@627 108 do
pascal@627 109 cat << EOT
pascal@627 110 <li>
pascal@627 111 <a href="$SCRIPT_NAME?admin=rm-mirror=$line&amp;file=$(httpd -e $1)">
al@707 112 <img src="$IMAGES/clear.png" title="$(_ 'Delete')" />
pascal@627 113 </a>
pascal@627 114 <a href="$SCRIPT_NAME?admin=select-mirror&amp;mirror=$line">
al@707 115 <img src="$IMAGES/start.png" title="$(_ 'Use as default')" />
pascal@627 116 </a>
pascal@627 117 <a href="$line">$line</a>
pascal@627 118 </li>
pascal@627 119 EOT
pascal@627 120 done < $1
pascal@627 121 }
pascal@627 122
al@707 123
pascal@627 124 # Parse repositories list to be able to have an icon and remove link
al@707 125
pascal@627 126 list_repos() {
al@700 127 ls $PKGS_DB/undigest 2> /dev/null | while read repo ; do
pascal@627 128 cat <<EOT
pascal@627 129 <li><a href="$SCRIPT_NAME?admin=rm-repo=$repo">
al@707 130 <img src="$IMAGES/clear.png">$repo</a></li>
pascal@627 131 EOT
pascal@627 132 done
pascal@627 133 }
pascal@627 134
al@707 135
al@707 136
pascal@627 137 #
pascal@627 138 # xHTML functions
pascal@627 139 #
pascal@627 140
al@707 141
pascal@627 142 # ENTER will search but user may search for a button, so put one.
al@707 143
pascal@627 144 search_form() {
pascal@627 145 [ -n "$repo" ] || repo="$(GET repo)"
pascal@627 146 [ -n "$repo" ] || repo=Any
pascal@627 147 cat << EOT
pascal@627 148 <div class="search">
pascal@627 149 <form method="get" action="$SCRIPT_NAME">
pascal@627 150 <p>
pascal@627 151 <input type="text" name="search" size="20">
pascal@627 152 <input type="submit" value="$(gettext 'Search')">
pascal@627 153 <input class="radius" type="submit" name="files"
al@707 154 value="$(_n 'Files')">
pascal@627 155 <input type="hidden" name="repo" value="$repo" />
pascal@627 156 </p>
pascal@627 157 </form>
pascal@627 158 </div>
pascal@627 159 EOT
pascal@627 160 }
pascal@627 161
al@707 162
pascal@627 163 table_head() {
pascal@627 164 cat << EOT
pascal@627 165 <thead>
pascal@627 166 <tr>
al@707 167 <td>$(_ 'Name')</td>
al@707 168 <td>$(_ 'Version')</td>
al@707 169 <td>$(_ 'Description')</td>
al@707 170 <td>$(_ 'Web')</td>
pascal@627 171 </tr>
pascal@627 172 </thead>
pascal@627 173 EOT
pascal@627 174 }
pascal@627 175
al@707 176
pascal@627 177 sidebar() {
pascal@627 178 [ -n "$repo" ] || repo=Public
pascal@627 179 cat << EOT
pascal@627 180 <div id="sidebar">
al@707 181 <h4>$(_ 'Categories')</h4>
al@707 182 <a class="active_base-system" href="$SCRIPT_NAME?cat=base-system&repo=$repo" >$(_ 'base-system')</a>
al@707 183 <a class="active_x-window" href="$SCRIPT_NAME?cat=x-window&repo=$repo" >$(_ 'x-window')</a>
al@707 184 <a class="active_utilities" href="$SCRIPT_NAME?cat=utilities&repo=$repo" >$(_ 'utilities')</a>
al@707 185 <a class="active_network" href="$SCRIPT_NAME?cat=network&repo=$repo" >$(_ 'network')</a>
al@707 186 <a class="active_games" href="$SCRIPT_NAME?cat=games&repo=$repo" >$(_ 'games')</a>
al@707 187 <a class="active_graphics" href="$SCRIPT_NAME?cat=graphics&repo=$repo" >$(_ 'graphics')</a>
al@707 188 <a class="active_office" href="$SCRIPT_NAME?cat=office&repo=$repo" >$(_ 'office')</a>
al@707 189 <a class="active_multimedia" href="$SCRIPT_NAME?cat=multimedia&repo=$repo" >$(_ 'multimedia')</a>
al@707 190 <a class="active_development" href="$SCRIPT_NAME?cat=development&repo=$repo" >$(_ 'development')</a>
al@707 191 <a class="active_system-tools" href="$SCRIPT_NAME?cat=system-tools&repo=$repo">$(_ 'system-tools')</a>
al@707 192 <a class="active_security" href="$SCRIPT_NAME?cat=security&repo=$repo" >$(_ 'security')</a>
al@707 193 <a class="active_misc" href="$SCRIPT_NAME?cat=misc&repo=$repo" >$(_ 'misc')</a>
al@707 194 <a class="active_meta" href="$SCRIPT_NAME?cat=meta&repo=$repo" >$(_ 'meta')</a>
al@707 195 <a class="active_non-free" href="$SCRIPT_NAME?cat=non-free&repo=$repo" >$(_ 'non-free')</a>
al@707 196 <a class="active_all" href="$SCRIPT_NAME?cat=all&repo=$repo" >$(_ 'all')</a>
al@707 197 <a class="active_extra" href="$SCRIPT_NAME?cat=extra&repo=$repo" >$(_ 'extra')</a>
pascal@627 198 EOT
pascal@627 199
al@700 200 if [ -d $PKGS_DB/undigest ]; then
pascal@627 201 [ -n "$category" ] || category="base-system"
pascal@627 202 cat << EOT
al@707 203 <h4>$(_ 'Repositories')</h4>
al@707 204 <a class="repo_Public" href="$SCRIPT_NAME?repo=Public&cat=$category">$(_ 'Public')</a>
pascal@627 205 EOT
al@707 206
al@700 207 for i in $(ls $PKGS_DB/undigest); do
pascal@627 208 cat << EOT
pascal@627 209 <a class="repo_$i" href="$SCRIPT_NAME?repo=$i&cat=$category">$i</a>
pascal@627 210 EOT
pascal@627 211 done
al@707 212
pascal@627 213 cat << EOT
al@707 214 <a class="repo_Any" href="$SCRIPT_NAME?repo=Any&cat=$category">$(_ 'Any')</a>
pascal@627 215 EOT
pascal@627 216 fi
pascal@627 217 echo "</div>"
pascal@627 218 }
pascal@627 219
al@707 220
pascal@627 221 repo_list() {
al@700 222 if [ -n "$(ls $PKGS_DB/undigest/ 2> /dev/null)" ]; then
pascal@627 223 case "$repo" in
al@707 224 Public)
al@707 225 ;;
al@707 226 ""|Any)
al@707 227 for i in $PKGS_DB/undigest/* ; do
al@707 228 [ -d "$i" ] && echo "$i$1"
al@707 229 done ;;
al@707 230 *)
al@707 231 echo "$PKGS_DB/undigest/$repo$1"
al@707 232 return ;;
pascal@627 233 esac
pascal@627 234 fi
al@700 235 echo "$PKGS_DB$1"
pascal@627 236 }
pascal@627 237
al@707 238
pascal@627 239 repo_name() {
pascal@627 240 case "$1" in
al@707 241 $PKGS_DB)
al@707 242 echo "Public" ;;
al@707 243 $PKGS_DB/undigest/*)
al@707 244 echo ${1#$PKGS_DB/undigest/} ;;
pascal@627 245 esac
pascal@627 246 }
pascal@627 247
al@707 248
al@707 249
pascal@627 250 #
pascal@627 251 # Commands
pascal@627 252 #
pascal@627 253
al@707 254
pascal@627 255 case " $(GET) " in
pascal@627 256 *\ list\ *)
pascal@627 257 #
pascal@627 258 # List installed packages. This is the default because parsing
pascal@627 259 # the full packages.desc can be long and take up some resources
pascal@627 260 #
pascal@627 261 cd $INSTALLED
pascal@627 262 search_form
pascal@627 263 sidebar
al@707 264 LOADING_MSG="$(_ 'Listing packages...')"
pascal@627 265 loading_msg
pascal@627 266 cat << EOT
al@707 267 <h2>$(_ 'My packages')</h2>
pascal@627 268 <form method='get' action='$SCRIPT_NAME'>
pascal@627 269 <input type="hidden" name="do" value="Remove" />
pascal@627 270 <div id="actions">
pascal@627 271 <div class="float-left">
al@707 272 $(_ 'Selection:')
al@707 273 <input type="submit" value="$(_ 'Remove')" />
pascal@627 274 </div>
pascal@627 275 <div class="float-right">
pascal@627 276 <a class="button" href="$SCRIPT_NAME?recharge">
al@707 277 <img src="$IMAGES/recharge.png" />$(_ 'Recharge list')</a>
pascal@627 278 <a class="button" href='$SCRIPT_NAME?up'>
al@707 279 <img src="$IMAGES/update.png" />$(_ 'Check upgrades')</a>
pascal@627 280 </div>
pascal@627 281 </div>
pascal@627 282 EOT
pascal@627 283 cat << EOT
pascal@627 284 <table class="zebra outbox">
pascal@627 285 $(table_head)
pascal@627 286 <tbody>
pascal@627 287 EOT
al@707 288 for pkg in *; do
pascal@627 289 . $pkg/receipt
pascal@627 290 echo '<tr>'
pascal@627 291 # Use default tazpkg icon since all packages displayed are
pascal@627 292 # installed
pascal@627 293 colorpkg=$pkg
al@700 294 grep -qs "^$pkg$" $PKGS_DB/blocked-packages.list &&
pascal@627 295 colorpkg="<span style='color: red;'>$pkg</span>"
pascal@627 296 i18n_desc
pascal@627 297 cat << EOT
pascal@627 298 <td class="pkg">
pascal@627 299 <input type="checkbox" name="pkg" value="$pkg" />
pascal@627 300 <a href="$(pkg_info_link $pkg)"><img
pascal@627 301 src="$IMAGES/tazpkg-installed.png"/>$colorpkg</a></td>
pascal@627 302 <td>$VERSION</td>
pascal@627 303 <td class="desc">$SHORT_DESC</td>
pascal@627 304 <td><a href="$WEB_SITE"><img src="$IMAGES/browser.png"/></a></td>
pascal@627 305 </tr>
pascal@627 306 EOT
pascal@627 307 done
pascal@627 308 cat << EOT
pascal@627 309 </tbody>
pascal@627 310 </table>
pascal@627 311 </form>
pascal@627 312 EOT
pascal@627 313 ;;
pascal@627 314
al@707 315
pascal@627 316 *\ linkable\ *)
pascal@627 317 #
pascal@627 318 # List linkable packages.
pascal@627 319 #
pascal@627 320 cd $INSTALLED
pascal@627 321 search_form
pascal@627 322 sidebar
al@707 323 LOADING_MSG=$(_ 'Listing linkable packages...')
pascal@627 324 loading_msg
pascal@627 325 cat << EOT
al@707 326 <h2>$(_ 'Linkable packages')</h2>
pascal@627 327
pascal@627 328 <form method='get' action='$SCRIPT_NAME'>
pascal@627 329 <input type="hidden" name="do" value="Link" />
pascal@627 330 <div id="actions">
pascal@627 331 <div class="float-left">
al@707 332 $(_ 'Selection:')
al@707 333 <input type="submit" value="$(_ 'Link')" />
pascal@627 334 </div>
pascal@627 335 <div class="float-right">
pascal@627 336 <a class="button" href="$SCRIPT_NAME?recharge">
al@707 337 <img src="$IMAGES/recharge.png" />$(_ 'Recharge list')</a>
pascal@627 338 <a class="button" href="$SCRIPT_NAME?up">
al@707 339 <img src="$IMAGES/update.png" />$(_ 'Check upgrades')</a>
pascal@627 340 </div>
pascal@627 341 </div>
pascal@627 342 EOT
pascal@627 343 cat << EOT
pascal@627 344 <table class="zebra outbox">
pascal@627 345 $(table_head)
pascal@627 346 <tbody>
pascal@627 347 EOT
al@700 348 target=$(readlink $PKGS_DB/fslink)
al@707 349 for pkg in $(ls $target/$INSTALLED); do
pascal@627 350 [ -s $pkg/receipt ] && continue
pascal@627 351 . $target/$INSTALLED/$pkg/receipt
pascal@627 352 i18n_desc
pascal@627 353 cat << EOT
pascal@627 354 <tr>
pascal@627 355 <td class="pkg">
pascal@627 356 <input type="checkbox" name="pkg" value="$pkg" />
pascal@627 357 <a href="$(pkg_info_link $pkg)"><img
pascal@627 358 src="$IMAGES/tazpkg.png"/>$pkg</a>
pascal@627 359 </td>
pascal@627 360 <td>$VERSION</td>
pascal@627 361 <td class="desc">$SHORT_DESC</td>
pascal@627 362 <td><a href="$WEB_SITE"><img src="$IMAGES/browser.png"/></a></td>
pascal@627 363 </tr>
pascal@627 364 EOT
pascal@627 365 done
pascal@627 366 cat << EOT
pascal@627 367 </tbody>
pascal@627 368 </table>
pascal@627 369 </form>
pascal@627 370 EOT
pascal@627 371 ;;
pascal@627 372
pascal@627 373
pascal@627 374 *\ cat\ *)
pascal@627 375 #
pascal@627 376 # List all available packages by category on mirror. Listing all
pascal@627 377 # packages is too resource intensive and not useful.
pascal@627 378 #
al@700 379 cd $PKGS_DB
pascal@627 380 repo=$(GET repo)
pascal@627 381 category=$(GET cat)
pascal@627 382 [ "$category" == "cat" ] && category="base-system"
pascal@627 383 grep_category=$category
pascal@627 384 [ "$grep_category" == "all" ] && grep_category=".*"
pascal@627 385 search_form
pascal@627 386 sidebar | sed "s/active_$category/active/;s/repo_$repo/active/"
al@707 387 LOADING_MSG="$(_ 'Listing packages...')"
pascal@627 388 loading_msg
pascal@627 389 cat << EOT
al@707 390 <h2>$(_ 'Category: %s' $category)</h2>
pascal@627 391
pascal@627 392 <form method='get' action='$SCRIPT_NAME'>
pascal@627 393 <div id="actions">
pascal@627 394 <div class="float-left">
al@707 395 $(_ 'Selection:')
pascal@627 396 <input type="submit" name="do" value="Install" />
pascal@627 397 <input type="submit" name="do" value="Remove" />
pascal@627 398 <input type="hidden" name="repo" value="$repo" />
pascal@627 399 </div>
pascal@627 400 <div class="float-right">
pascal@627 401 <a class="button" href="$SCRIPT_NAME?recharge">
al@707 402 <img src="$IMAGES/recharge.png" />$(_ 'Recharge list')</a>
pascal@627 403 <a class="button" href="$SCRIPT_NAME?up">
al@707 404 <img src="$IMAGES/update.png" />$(_ 'Check upgrades')</a>
pascal@627 405 <a class="button" href='$SCRIPT_NAME?list'>
al@707 406 <img src="$IMAGES/tazpkg.png" />$(_ 'My packages')</a>
pascal@627 407 </div>
pascal@627 408 </div>
pascal@627 409 EOT
pascal@627 410 for i in $(repo_list ""); do
pascal@627 411 if [ "$repo" != "Public" ]; then
pascal@627 412 Repo_Name="$(repo_name $i)"
pascal@627 413 cat << EOT
al@707 414 <h3>$(_ 'Repository: %s' $Repo_Name)</h3>
pascal@627 415 EOT
pascal@627 416 fi
pascal@627 417 cat << EOT
pascal@627 418 <table class="zebra outbox">
pascal@627 419 $(table_head)
pascal@627 420 <tbody>
pascal@627 421 EOT
pascal@692 422 if [ "$category" == "extra" ]; then
pascal@692 423 sed 's,.*,&|--|--|--|http://mirror.slitaz.org/packages/get/&,' $i/extra.list
pascal@692 424 else
pascal@692 425 grep "| $grep_category |" $i/packages.desc
pascal@692 426 fi | parse_packages_desc
pascal@627 427 cat << EOT
pascal@627 428 </tbody>
pascal@627 429 </table>
pascal@627 430 EOT
pascal@627 431 done
pascal@627 432 echo '</form>' ;;
pascal@627 433
pascal@627 434
pascal@627 435 *\ search\ *)
pascal@627 436 #
pascal@627 437 # Search for packages. Here default is to search in packages.desc
pascal@627 438 # and so get result including packages names and descriptions
pascal@627 439 #
pascal@627 440 pkg=$(GET search)
pascal@627 441 repo=$(GET repo)
al@700 442 cd $PKGS_DB
pascal@627 443 search_form
pascal@627 444 sidebar | sed "s/repo_$repo/active/"
al@707 445 LOADING_MSG="$(_ 'Searching packages...')"
pascal@627 446 loading_msg
pascal@627 447 cat << EOT
al@707 448 <h2>$(_ 'Search packages')</h2>
pascal@627 449 <form method="get" action="$SCRIPT_NAME">
pascal@627 450 <div id="actions">
pascal@627 451 <div class="float-left">
al@707 452 $(_ 'Selection:')
pascal@627 453 <input type="submit" name="do" value="Install" />
pascal@627 454 <input type="submit" name="do" value="Remove" />
al@707 455 <a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a>
pascal@627 456 </div>
pascal@627 457 <div class="float-right">
pascal@627 458 <a class="button" href="$SCRIPT_NAME?recharge">
al@707 459 <img src="$IMAGES/recharge.png" />$(_ 'Recharge list')</a>
pascal@627 460 <a class="button" href="$SCRIPT_NAME?up">
al@707 461 <img src="$IMAGES/update.png" />$(_ 'Check upgrades')</a>
pascal@627 462 <a class="button" href='$SCRIPT_NAME?list'>
al@707 463 <img src="$IMAGES/tazpkg.png" />$(_ 'My packages')</a>
pascal@627 464 </div>
pascal@627 465 </div>
pascal@627 466 <input type="hidden" name="repo" value="$repo" />
pascal@627 467
pascal@627 468 <table class="zebra outbox">
pascal@627 469 EOT
pascal@627 470 if [ "$(GET files)" ]; then
pascal@627 471 cat <<EOT
pascal@627 472 <thead>
pascal@627 473 <tr>
al@707 474 <td>$(_ 'Package')</td>
al@707 475 <td>$(_ 'File')</td>
pascal@627 476 </tr>
pascal@627 477 <thead>
pascal@627 478 <tbody>
pascal@627 479 EOT
pascal@627 480 unlzma -c $(repo_list /files.list.lzma) \
pascal@627 481 | grep -Ei ": .*$(GET search)" | \
pascal@627 482 while read PACKAGE FILE; do
pascal@627 483 PACKAGE=${PACKAGE%:}
pascal@627 484 image=tazpkg-installed.png
pascal@627 485 [ -d $INSTALLED/$PACKAGE ] || image=tazpkg.png
pascal@627 486 cat << EOT
pascal@627 487 <tr>
pascal@627 488 <td><input type="checkbox" name="pkg" value="$PACKAGE">
pascal@627 489 <a href="$(pkg_info_link $PACKAGE)"><img src="$IMAGES/$image" />$PACKAGE</a></td>
pascal@627 490 <td>$FILE</td>
pascal@627 491 </tr>
pascal@627 492 EOT
pascal@627 493 done
pascal@627 494 else
pascal@627 495 cat << EOT
pascal@627 496 $(table_head)
pascal@627 497 <tbody>
pascal@627 498 EOT
pascal@627 499 grep -ih $pkg $(repo_list /packages.desc) | \
pascal@627 500 parse_packages_desc
pascal@627 501 fi
pascal@627 502 cat << EOT
pascal@627 503 </tbody>
pascal@627 504 </table>
pascal@627 505 </form>
pascal@627 506 EOT
pascal@627 507 ;;
pascal@627 508
pascal@627 509
pascal@627 510 *\ recharge\ *)
pascal@627 511 #
pascal@627 512 # Lets recharge the packages list
pascal@627 513 #
pascal@627 514 search_form
pascal@627 515 sidebar
al@707 516 LOADING_MSG="$(_ 'Recharging lists...')"
pascal@627 517 loading_msg
pascal@627 518 cat << EOT
al@707 519 <h2>$(_ 'Recharge')</h2>
pascal@627 520
pascal@627 521 <form method='get' action='$SCRIPT_NAME'>
pascal@627 522 <div id="actions">
pascal@627 523 <div class="float-left">
al@707 524 <p>$(_ 'Recharge checks for new or updated packages')</p>
pascal@627 525 </div>
pascal@627 526 <div class="float-right">
pascal@627 527 <a class="button" href='$SCRIPT_NAME?up'>
al@707 528 <img src="$IMAGES/update.png" />$(_ 'Check upgrades')</a>
pascal@627 529 <a class="button" href='$SCRIPT_NAME?list'>
al@707 530 <img src="$IMAGES/tazpkg.png" />$(_ 'My packages')</a>
pascal@627 531 </div>
pascal@627 532 </div>
pascal@627 533 <div class="wrapper">
pascal@627 534 <pre>
pascal@627 535 EOT
al@707 536 echo $(_ 'Recharging packages list') | log
pascal@627 537 tazpkg recharge | filter_taztools_msgs
pascal@627 538 cat << EOT
pascal@627 539 </pre>
pascal@627 540 </div>
al@707 541 <p>$(_ 'Packages lists are up-to-date. You should check for upgrades now.')</p>
pascal@627 542 EOT
pascal@627 543 ;;
pascal@627 544
pascal@627 545
pascal@627 546 *\ up\ *)
pascal@627 547 #
pascal@627 548 # Upgrade packages
pascal@627 549 #
al@700 550 cd $PKGS_DB
pascal@627 551 search_form
pascal@627 552 sidebar
al@707 553 LOADING_MSG="$(_ 'Checking for upgrades...')"
pascal@627 554 loading_msg
pascal@627 555 cat << EOT
al@707 556 <h2>$(_ 'Up packages')</h2>
pascal@627 557
pascal@627 558 <form method="get" action="$SCRIPT_NAME">
pascal@627 559 <div id="actions">
pascal@627 560 <div class="float-left">
al@707 561 $(_ 'Selection:')
pascal@627 562 <input type="submit" name="do" value="Install" />
pascal@627 563 <input type="submit" name="do" value="Remove" />
al@707 564 <a href="$(cat $PANEL/lib/checkbox.js)">$(_ 'Toogle all')</a>
pascal@627 565 </div>
pascal@627 566 <div class="float-right">
pascal@627 567 <a class="button" href="$SCRIPT_NAME?recharge">
al@707 568 <img src="$IMAGES/recharge.png" />$(_ 'Recharge list')</a>
pascal@627 569 <a class="button" href="$SCRIPT_NAME?list">
al@707 570 <img src="$IMAGES/tazpkg.png" />$(_ 'My packages')</a>
pascal@627 571 </div>
pascal@627 572 </div>
pascal@627 573 EOT
pascal@627 574 tazpkg up --check >/dev/null
pascal@627 575 cat << EOT
pascal@627 576 <table class="zebra outbox">
pascal@627 577 $(table_head)
pascal@627 578 <tbody>
pascal@627 579 EOT
pascal@627 580 for pkg in `cat packages.up`
pascal@627 581 do
al@700 582 grep -hs "^$pkg |" $PKGS_DB/packages.desc \
al@700 583 $PKGS_DB/undigest/*/packages.desc | \
pascal@627 584 parse_packages_desc
pascal@627 585 done
pascal@627 586 cat << EOT
pascal@627 587 </tbody>
pascal@627 588 </table>
pascal@627 589 </form>
pascal@627 590 EOT
pascal@627 591 ;;
pascal@627 592
pascal@627 593
pascal@627 594 *\ do\ *)
pascal@627 595 #
pascal@627 596 # Do an action on one or some packages
pascal@627 597 #
pascal@627 598 opt=""
pascal@627 599 pkgs=""
pascal@627 600 cmdline=$(echo ${QUERY_STRING#do=} | sed s'/&/ /g')
pascal@627 601 cmd=$(echo ${cmdline} | awk '{print $1}')
pascal@627 602 cmdline=${cmdline#*repo=* }
pascal@627 603 pkgs=$(echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//)
pascal@627 604 pkgs="$(httpd -d "$pkgs")"
pascal@627 605 cmd=$(echo $cmd | tr [:upper:] [:lower:])
pascal@627 606 case $cmd in
pascal@627 607 install)
pascal@627 608 cmd=get-install opt=--forced
pascal@627 609 LOADING_MSG="get-installing packages..."
pascal@627 610 ;;
pascal@627 611 link)
al@700 612 opt=$(readlink $PKGS_DB/fslink)
pascal@627 613 LOADING_MSG="linking packages..."
pascal@627 614 ;;
pascal@627 615 esac
pascal@627 616 search_form
pascal@627 617 sidebar
pascal@627 618 loading_msg
pascal@627 619 cat << EOT
al@633 620 <h2>TazPkg: $cmd</h2>
pascal@627 621
pascal@627 622 <form method="get" action="$SCRIPT_NAME">
pascal@627 623 <div id="actions">
pascal@627 624 <div class="float-left">
al@707 625 <p>$(_ 'Performing tasks on packages')</p>
pascal@627 626 </div>
pascal@627 627 <div class="float-right">
pascal@627 628 <p>
pascal@627 629 <a class="button" href="$SCRIPT_NAME?list">
al@707 630 <img src="$IMAGES/tazpkg.png" />$(_ 'My packages')</a>
pascal@627 631 </p>
pascal@627 632 </div>
pascal@627 633 </div>
pascal@627 634 <div class="box">
al@707 635 $(_ 'Executing %s for: %s' $cmd $pkgs)
pascal@627 636 </div>
pascal@627 637 EOT
al@707 638 for pkg in $pkgs; do
pascal@627 639 echo '<pre>'
al@707 640 echo $(_n 'y') | tazpkg $cmd $pkg $opt 2>/dev/null | filter_taztools_msgs
pascal@627 641 echo '</pre>'
pascal@627 642 done ;;
pascal@627 643
pascal@627 644
pascal@627 645 *\ info\ *)
pascal@627 646 #
pascal@627 647 # Packages info
pascal@627 648 #
pascal@627 649 pkg=$(GET info)
pascal@627 650 search_form
pascal@627 651 sidebar
pascal@627 652 if [ -d $INSTALLED/$pkg ]; then
pascal@627 653 . $INSTALLED/$pkg/receipt
al@707 654 files=$(cat $INSTALLED/$pkg/files.list | wc -l)
pascal@627 655 action="Remove"
al@707 656 action_i18n=$(_ 'Remove')
pascal@627 657 else
al@700 658 cd $PKGS_DB
al@707 659 LOADING_MSG=$(_ 'Getting package info...')
pascal@627 660 loading_msg
pascal@627 661 IFS='|'
al@707 662 set -- $(grep -hs "^$pkg |" packages.desc undigest/*/packages.desc)
pascal@627 663 unset IFS
pascal@627 664 PACKAGE=$1
pascal@627 665 VERSION="$(echo $2)"
pascal@627 666 SHORT_DESC="$(echo $3)"
pascal@627 667 CATEGORY="$(echo $4)"
pascal@627 668 WEB_SITE="$(echo $5)"
pascal@627 669 action="Install"
al@707 670 action_i18n=$(_ 'Install')
pascal@627 671 temp="$(echo $pkg | sed 's/get-//g')"
pascal@627 672 fi
pascal@627 673 cat << EOT
al@707 674 <h2>$(_ 'Package %s' $PACKAGE)</h2>
pascal@627 675
pascal@627 676 <div id="actions">
pascal@627 677 <div class="float-left">
pascal@627 678 <p>
pascal@627 679 EOT
pascal@627 680 if [ "$temp" != "$pkg" -a "$action" == "Install" ]; then
pascal@627 681 temp="$(echo $pkg | sed 's/get-//g')"
al@707 682 echo "<a class='button' href='$SCRIPT_NAME?do=Install&$temp'>$(_ 'Install (Non Free)')</a>"
pascal@627 683 else
pascal@627 684 echo "<a class='button' href='$SCRIPT_NAME?do=$action&$pkg'>$action_i18n</a>"
pascal@627 685 fi
pascal@627 686
pascal@627 687 if [ -d $INSTALLED/$pkg ]; then
al@700 688 if grep -qs "^$pkg$" $PKGS_DB/blocked-packages.list; then
pascal@627 689 cat << EOT
al@707 690 <a class="button" href="$SCRIPT_NAME?do=Unblock&$pkg">$(_ 'Unblock')</a>
pascal@627 691 EOT
pascal@627 692 else
pascal@627 693 cat << EOT
al@707 694 <a class="button" href='$SCRIPT_NAME?do=Block&$pkg'>$(_ 'Block')</a>
pascal@627 695 EOT
pascal@627 696 fi
pascal@627 697 cat << EOT
al@707 698 <a class="button" href='$SCRIPT_NAME?do=Repack&$pkg'>$(_ 'Repack')</a>
pascal@627 699 EOT
pascal@627 700 fi
pascal@627 701 i18n_desc
pascal@627 702 cat << EOT
pascal@627 703 </p>
pascal@627 704 </div>
pascal@627 705 <div class="float-right">
pascal@627 706 <p>
pascal@627 707 <a class="button" href='$SCRIPT_NAME?list'>
al@707 708 <img src="$IMAGES/tazpkg.png" />$(_ 'My packages')</a>
pascal@627 709 </p>
pascal@627 710 </div>
pascal@627 711 </div>
pascal@627 712 <table class="zebra outbox">
pascal@627 713 <tbody>
al@707 714 <tr><td><b>$(_ 'Name')</b></td><td>$PACKAGE</td></tr>
al@707 715 <tr><td><b>$(_ 'Version')</b></td><td>$VERSION</td></tr>
al@707 716 <tr><td><b>$(_ 'Description')</b></td><td>$SHORT_DESC</td></tr>
al@707 717 <tr><td><b>$(_ 'Category')</b></td><td>$CATEGORY</td></tr>
pascal@627 718 EOT
pascal@627 719 if [ -d $INSTALLED/$pkg ]; then
pascal@627 720 cat << EOT
al@707 721 <tr><td><b>$(_ 'Maintainer')</b></td><td>$MAINTAINER</td></tr>
al@707 722 <tr><td><b>$(_ 'Website')</b></td><td><a href="$WEB_SITE">$WEB_SITE</a></td></tr>
al@707 723 <tr><td><b>$(_ 'Sizes')</b></td><td>$PACKED_SIZE/$UNPACKED_SIZE</td></tr>
pascal@627 724 EOT
pascal@627 725 if [ -n "$DEPENDS" ]; then
al@707 726 echo "<tr><td><b>$(_ 'Depends')</b></td><td>"
pascal@627 727 for i in $DEPENDS; do
pascal@627 728 echo -n "<a href="$(pkg_info_link $i)">$i</a> "
pascal@627 729 done
pascal@627 730 echo "</td></tr>"
pascal@627 731 fi
pascal@627 732 if [ -n "$SUGGESTED" ]; then
al@707 733 echo "<tr><td><b>$(_ 'Suggested')</b></td><td>"
pascal@627 734 for i in $SUGGESTED; do
pascal@627 735 echo -n "<a href="$(pkg_info_link $i)">$i</a> "
pascal@627 736 done
pascal@627 737 echo "</td></tr>"
pascal@627 738 fi
al@707 739 [ -n "$TAGS" ] && echo "<tr><td><b>$(_ 'Tags')</b></td><td>$TAGS</td></tr>"
pascal@627 740 I_FILES=$(cat $INSTALLED/$pkg/files.list | wc -l)
pascal@627 741 cat << EOT
pascal@627 742 </tbody>
pascal@627 743 </table>
al@717 744 EOT
al@717 745 DESC="$(tazpkg desc $pkg)"
al@717 746 [ -n "$DESC" ] && echo "<pre>$DESC</pre>"
pascal@627 747
al@717 748 cat << EOT
al@707 749 <p>$(_ 'Installed files: %s' $I_FILES)</p>
pascal@627 750
al@717 751 <pre>$(sort $INSTALLED/$pkg/files.list)</pre>
pascal@627 752 EOT
pascal@627 753 else
pascal@627 754 cat << EOT
al@707 755 <tr><td><b>$(_ 'Website')</b></td><td><a href="$WEB_SITE">$WEB_SITE</a></td></tr>
al@707 756 <tr><td><b>$(_ 'Sizes')</b></td><td>$(grep -hsA 3 ^$pkg$ packages.txt undigest/*/packages.txt | \
pascal@627 757 tail -n 1 | sed 's/ *//')</td></tr>
pascal@627 758 </table>
pascal@627 759
al@707 760 <p>$(_ 'Installed files:')</p>
pascal@627 761
pascal@627 762 <pre>
al@717 763 $(lzcat files.list.lzma undigest/*/files.list.lzma 2> /dev/null | \
al@717 764 sed "/^$pkg: /!d;s/^$pkg: //" | sort)
pascal@627 765 </pre>
pascal@627 766 EOT
pascal@627 767 fi
pascal@627 768 ;;
pascal@627 769
pascal@627 770
pascal@627 771 *\ admin\ * )
pascal@627 772 #
al@633 773 # TazPkg configuration page
pascal@627 774 #
pascal@627 775 cmd=$(GET admin)
pascal@627 776 case "$cmd" in
pascal@627 777 clean)
pascal@627 778 rm -rf /var/cache/tazpkg/* ;;
pascal@627 779 add-mirror)
pascal@627 780 # Decode url
pascal@627 781 mirror=$(GET mirror)
pascal@627 782 case "$mirror" in
pascal@627 783 http://*|ftp://*)
pascal@627 784 echo "$mirror" >> $(GET file) ;;
pascal@627 785 esac ;;
pascal@627 786 rm-mirror=http://*|rm-mirror=ftp://*)
pascal@627 787 mirror=${cmd#rm-mirror=}
pascal@627 788 sed -i -e "s@$mirror@@" -e '/^$/d' $(GET file) ;;
pascal@627 789 select-mirror*)
al@707 790 release=$(cat /etc/slitaz-release)
pascal@627 791 mirror="$(GET mirror)packages/$release/"
pascal@627 792 tazpkg setup-mirror $mirror | log
pascal@627 793 ;;
pascal@627 794 add-repo)
pascal@627 795 # Decode url
pascal@627 796 mirror=$(GET mirror)
al@700 797 repository=$PKGS_DB/undigest/$(GET repository)
pascal@627 798 case "$mirror" in
pascal@627 799 http://*|ftp://*)
pascal@627 800 mkdir -p $repository
pascal@627 801 echo "$mirror" > $repository/mirror
pascal@627 802 echo "$mirror" > $repository/mirrors ;;
pascal@627 803 esac ;;
pascal@627 804 rm-repo=*)
pascal@627 805 repository=${cmd#rm-repo=}
al@700 806 rm -rf $PKGS_DB/undigest/$repository ;;
pascal@627 807 esac
al@707 808 [ "$cmd" == "$(_n 'Set link')" ] &&
pascal@627 809 [ -d "$(GET link)/$INSTALLED" ] &&
al@700 810 ln -fs $(GET link) $PKGS_DB/fslink
al@707 811 [ "$cmd" == "$(_n 'Remove link')" ] &&
al@700 812 rm -f $PKGS_DB/fslink
al@707 813 cache_files=$(find /var/cache/tazpkg -name *.tazpkg | wc -l)
al@707 814 cache_size=$(du -sh /var/cache/tazpkg | cut -f1 | sed 's|\.0||')
pascal@627 815 sidebar
pascal@627 816 cat << EOT
al@707 817 <h2>$(_ 'Administration')</h2>
pascal@627 818 <div>
al@707 819 <p>$(_ 'TazPkg administration and settings')</p>
pascal@627 820 </div>
pascal@627 821 <div id="actions">
pascal@627 822 <a class="button" href='$SCRIPT_NAME?admin=&action=saveconf'>
al@707 823 <img src="$IMAGES/tazpkg.png" />$(_ 'Save configuration')</a>
pascal@627 824 <a class="button" href='$SCRIPT_NAME?admin=&action=listconf'>
al@707 825 <img src="$IMAGES/edit.png" />$(_ 'List configuration files')</a>
pascal@627 826 <a class="button" href='$SCRIPT_NAME?admin=&action=quickcheck'>
al@707 827 <img src="$IMAGES/recharge.png" />$(_ 'Quick check')</a>
pascal@627 828 <a class="button" href='$SCRIPT_NAME?admin=&action=fullcheck'>
al@707 829 <img src="$IMAGES/recharge.png" />$(_ 'Full check')</a>
pascal@627 830 </div>
pascal@627 831 EOT
pascal@627 832 case "$(GET action)" in
pascal@627 833 saveconf)
al@707 834 LOADING_MSG=$(_ 'Creating the package...')
pascal@627 835 loading_msg
pascal@627 836 echo "<pre>"
pascal@627 837 cd $HOME
pascal@627 838 tazpkg repack-config | filter_taztools_msgs
al@707 839 echo -n "$(_ 'Path:') "; ls $HOME/config-*.tazpkg
pascal@627 840 echo "</pre>" ;;
pascal@627 841 listconf)
al@707 842 echo "<h4>$(_ 'Configuration files')</h4>"
pascal@627 843 echo "<ul>"
pascal@627 844 tazpkg list-config | while read file; do
pascal@627 845 [ "${file:0:1}" == "/" ] || continue
pascal@627 846 if [ -e $file ]; then
pascal@627 847 echo "<li><a href=\"index.cgi?file=$file\">$file</a></li>"
pascal@627 848 else
pascal@627 849 echo "<li>$file</li>"
pascal@627 850 fi
pascal@627 851 done
pascal@627 852 echo "</ul>"
pascal@627 853 echo "</pre>" ;;
pascal@627 854 quickcheck)
al@707 855 LOADING_MSG=$(_ 'Checking packages consistency...')
pascal@627 856 loading_msg
pascal@627 857 echo "<pre>"
pascal@627 858 tazpkg check
pascal@627 859 echo "</pre>" ;;
pascal@627 860 fullcheck)
al@707 861 LOADING_MSG=$(_ 'Full packages check...')
pascal@627 862 loading_msg
pascal@627 863 echo "<pre>"
pascal@627 864 tazpkg check --full
pascal@627 865 echo "</pre>" ;;
pascal@627 866 esac
pascal@627 867 cat << EOT
al@707 868 <h3>$(_ 'Packages cache')</h3>
pascal@627 869
pascal@627 870 <div>
pascal@627 871 <form method="get" action="$SCRIPT_NAME">
pascal@627 872 <p>
al@707 873 $(_ 'Packages in the cache: %s (%s)' $cache_files $cache_size)
pascal@627 874 <input type="hidden" name="admin" value="clean" />
pascal@627 875 <input type="submit" value="Clean" />
pascal@627 876 </p>
pascal@627 877 </form>
pascal@627 878 </div>
pascal@627 879
al@707 880 <h3>$(_ 'Default mirror')</h3>
pascal@627 881
pascal@627 882 <pre>$(cat /var/lib/tazpkg/mirror)</pre>
pascal@627 883
al@707 884 <h3>$(_ 'Current mirror list')</h3>
pascal@627 885 EOT
al@700 886 for i in $PKGS_DB/mirrors $PKGS_DB/undigest/*/mirrors; do
pascal@627 887 [ -s $i ] || continue
pascal@627 888 echo '<div class="box">'
al@700 889 if [ $i != $PKGS_DB/mirrors ]; then
pascal@627 890 Repo_Name="$(repo_name $(dirname $i))"
al@707 891 echo "<h4>$(_ 'Repository: %s' $Repo_Name)</h4>"
pascal@627 892 fi
pascal@627 893 echo "<ul>"
pascal@627 894 list_mirrors $i
pascal@627 895 echo "</ul>"
pascal@627 896 cat << EOT
pascal@627 897 </div>
pascal@627 898 <form method="get" action="$SCRIPT_NAME">
pascal@627 899 <p>
pascal@627 900 <input type="hidden" name="admin" value="add-mirror" />
pascal@627 901 <input type="hidden" name="file" value="$i" />
pascal@627 902 <input type="text" name="mirror" size="60">
pascal@627 903 <input type="submit" value="Add mirror" />
pascal@627 904 </p>
pascal@627 905 </form>
pascal@627 906 EOT
pascal@627 907 done
al@707 908 echo "<h3>$(_ 'Private repositories')</h3>"
al@700 909 [ -n "$(ls $PKGS_DB/undigest 2> /dev/null)" ] && cat << EOT
pascal@627 910 <div class="box">
pascal@627 911 <ul>
pascal@627 912 $(list_repos)
pascal@627 913 </ul>
pascal@627 914 </div>
pascal@627 915 EOT
pascal@627 916 cat << EOT
pascal@627 917 <form method="get" action="$SCRIPT_NAME">
pascal@627 918 <p>
pascal@627 919 <input type="hidden" name="admin" value="add-repo" />
al@707 920 $(_ 'Name') <input type="text" name="repository" size="10">
al@707 921 $(_ 'mirror')
pascal@627 922 <input type="text" name="mirror" value="http://" size="50">
pascal@627 923 <input type="submit" value="Add repository" />
pascal@627 924 </p>
pascal@627 925 </form>
pascal@627 926
al@707 927 <h3>$(_ 'Link to another SliTaz installation')</h3>
pascal@627 928
al@707 929 <p>$(_ "This link points to the root of another SliTaz installation. \
pascal@627 930 You will be able to install packages using soft links to it.")</p>
pascal@627 931
pascal@627 932 <form method="get" action="$SCRIPT_NAME">
pascal@627 933 <p>
pascal@627 934 <input type="hidden" name="admin" value="add-link" />
pascal@627 935 <input type="text" name="link"
al@700 936 value="$(readlink $PKGS_DB/fslink 2> /dev/null)" size="50">
al@707 937 <input type="submit" name="admin" value="$(_ 'Set link')" />
al@707 938 <input type="submit" name="admin" value="$(_ 'Remove link')" />
pascal@627 939 </p>
pascal@627 940 </form>
pascal@627 941 EOT
pascal@627 942 version=$(cat /etc/slitaz-release)
pascal@627 943 cat << EOT
pascal@627 944
al@707 945 <h3 id="dvd">$(_ 'SliTaz packages DVD')</h3>
pascal@627 946
al@707 947 <p>$(_ "A bootable DVD image of all available packages for the %s version is \
al@707 948 generated every day. It also contains a copy of the website and can be used \
al@707 949 without an internet connection. This image can be installed on a DVD or a USB \
al@707 950 key." $version)</p>
pascal@627 951
pascal@627 952 <div>
pascal@627 953 <form method="post" action='$SCRIPT_NAME?admin&action=dvdimage#dvd'>
pascal@627 954 <p>
pascal@627 955 <a class="button"
pascal@627 956 href='http://mirror.slitaz.org/iso/$version/packages-$version.iso'>
al@707 957 <img src="$IMAGES/tazpkg.png" />$(_ 'Download DVD image')</a>
pascal@627 958 <a class="button" href='$SCRIPT_NAME?admin&action=dvdusbkey#dvd'>
al@707 959 <img src="$IMAGES/tazpkg.png" />$(_ 'Install from DVD/USB key')</a>
pascal@627 960 </p>
pascal@627 961 <div class="box">
al@707 962 $(_ 'Install from ISO image:')
pascal@627 963 <input type="text" name="dvdimage" size="40" value="/root/packages-$version.iso">
pascal@627 964 </div>
pascal@627 965 </form>
pascal@627 966 </div>
pascal@627 967 EOT
pascal@627 968 if [ "$(GET action)" == "dvdimage" ]; then
pascal@627 969 dev=$(POST dvdimage)
pascal@627 970 mkdir -p /mnt/packages 2> /dev/null
pascal@627 971 echo "<pre>"
pascal@627 972 mount -t iso9660 -o loop,ro $dev /mnt/packages &&
pascal@627 973 /mnt/packages/install.sh &&
al@707 974 _ '%s is installed on /mnt/packages' $dev
pascal@627 975 echo "</pre>"
pascal@627 976 fi
pascal@627 977 if [ "$(GET action)" == "dvdusbkey" ]; then
pascal@627 978 mkdir -p /mnt/packages 2> /dev/null
pascal@627 979 for tag in "LABEL=\"packages-$version\" TYPE=\"iso9660\"" \
pascal@627 980 "LABEL=\"sources-$version\" TYPE=\"iso9660\"" ; do
pascal@627 981 dev=$(blkid | grep "$tag" | cut -d: -f1)
pascal@627 982 [ -n "$dev" ] || continue
pascal@627 983 echo "<pre>"
pascal@627 984 mount -t iso9660 -o ro $dev /mnt/packages &&
pascal@627 985 /mnt/packages/install.sh &&
al@707 986 _ '%s is installed on /mnt/packages' $dev
pascal@627 987 echo "</pre>"
pascal@627 988 break
pascal@627 989 done
pascal@627 990 fi
pascal@627 991 ;;
pascal@627 992 *)
pascal@627 993 #
pascal@627 994 # Default to summary
pascal@627 995 #
pascal@627 996 search_form
pascal@627 997 sidebar
pascal@627 998 [ -n "$(GET block)" ] && tazpkg block $(GET block)
pascal@627 999 [ -n "$(GET unblock)" ] && tazpkg unblock $(GET unblock)
pascal@627 1000 cat << EOT
al@707 1001 <h2>$(_ 'Summary')</h2>
pascal@627 1002
pascal@627 1003 <div id="actions">
pascal@627 1004 <a class="button" href="$SCRIPT_NAME?list">
al@707 1005 <img src="$IMAGES/tazpkg.png" />$(_ 'My packages')</a>
pascal@627 1006 EOT
al@700 1007 fslink=$(readlink $PKGS_DB/fslink)
pascal@627 1008 [ -n "$fslink" -a -d "$fslink/$INSTALLED" ] &&
pascal@627 1009 cat << EOT
pascal@627 1010 <a class="button" href="$SCRIPT_NAME?linkable">
al@707 1011 <img src="$IMAGES/tazpkg.png" />$(_ 'Linkable packages')</a>
pascal@627 1012 EOT
pascal@627 1013 cat << EOT
pascal@627 1014 <a class="button" href="$SCRIPT_NAME?recharge">
al@707 1015 <img src="$IMAGES/recharge.png" />$(_ 'Recharge list')</a>
pascal@627 1016 <a class="button" href="$SCRIPT_NAME?up">
al@707 1017 <img src="$IMAGES/update.png" />$(_ 'Check upgrades')</a>
pascal@627 1018 <a class="button" href="$SCRIPT_NAME?admin">
al@707 1019 <img src="$IMAGES/edit.png" />$(_ 'Administration')</a>
pascal@627 1020 </div>
pascal@627 1021
pascal@627 1022 $(packages_summary)
pascal@627 1023
pascal@627 1024
al@707 1025 <h3>$(_ 'Latest log entries')</h3>
pascal@627 1026
pascal@627 1027 <pre>
al@707 1028 $(tail -n 5 /var/log/slitaz/tazpkg.log | fgrep "-" | \
al@707 1029 awk '{print $1, $2, $3, $4, $5, $6, $7}')
pascal@627 1030 </pre>
pascal@627 1031 EOT
pascal@627 1032 ;;
pascal@627 1033 esac
pascal@627 1034
pascal@627 1035 # xHTML 5 footer
al@633 1036 export TEXTDOMAIN='tazpkg'
pascal@627 1037 xhtml_footer
pascal@627 1038 exit 0