tazpkg annotate pkgs.cgi @ rev 692

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