tazpanel annotate pkgs.cgi @ rev 126

pkgs.cgi: first step to undigest support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Apr 16 00:05:28 2011 +0200 (2011-04-16)
parents 1d03158c5c3e
children 7855bd81abb7
rev   line source
pankso@7 1 #!/bin/sh
pankso@7 2 #
paul@52 3 # TazPKG CGI interface - Manage packages via a browser
pankso@7 4 #
paul@52 5 # This CGI interface intensively uses tazpkg to manage packages and have
paul@52 6 # its own code for some tasks. Please KISS, it is important and keep speed
pankso@7 7 # in mind. Thanks, Pankso.
pankso@7 8 #
pankso@112 9 # (C) 2011 SliTaz GNU/Linux - BSD License
pankso@7 10 #
pascal@79 11
pankso@17 12 . lib/libtazpanel
pankso@17 13 get_config
pascal@81 14 header
pankso@7 15
pankso@49 16 # xHTML 5 header with special side bar fo categories.
pankso@34 17 TITLE="- Packages"
pankso@41 18 xhtml_header | sed 's/id="content"/id="content-sidebar"/'
pankso@67 19
pankso@7 20
pankso@7 21 # We need packages information for list and search
pankso@7 22 parse_packages_desc() {
pankso@45 23 IFS="|"
pankso@45 24 cut -f 1,2,3,5 -d "|" | while read PACKAGE VERSION SHORT_DESC WEB_SITE
pankso@7 25 do
pankso@7 26 echo '<tr>'
pankso@46 27 if [ -d $INSTALLED/${PACKAGE% } ]; then
pankso@46 28 echo -e "<td><input type='checkbox' name='pkg' value='$PACKAGE'>\n
pankso@45 29 <a href='$SCRIPT_NAME?info=$PACKAGE'>
pankso@45 30 <img src='$IMAGES/tazpkg-installed.png'/>$PACKAGE</a></td>"
pankso@7 31 else
pankso@46 32 echo -e "<td><input type='checkbox' name='pkg' value='$PACKAGE'>\n
pascal@62 33 <a href='$SCRIPT_NAME?info=$PACKAGE'>
pascal@62 34 <img src='$IMAGES/tazpkg.png'/>$PACKAGE</a></td>"
pankso@7 35 fi
pankso@45 36 echo "<td>$VERSION</td>"
pankso@45 37 echo "<td class='desc'>$SHORT_DESC</td>"
pascal@122 38 echo "<td><a href='$WEB_SITE'><img src='$IMAGES/browser.png'/></a></td>"
pankso@7 39 echo '</tr>'
pankso@7 40 done
pankso@45 41 unset IFS
pankso@7 42 }
pankso@7 43
pankso@7 44 # Display a full summary of packages stats
pankso@7 45 packages_summary() {
pankso@37 46 gettext "Last recharge : "
pankso@37 47 stat=`stat -c %y $LOCALSTATE/packages.list | \
pankso@37 48 sed 's/\(:..\):.*/\1/' | awk '{print $1}'`
pankso@37 49 mtime=`find /var/lib/tazpkg/packages.list -mtime +10`
pankso@37 50 echo -n "$stat "
pankso@37 51 if [ "$mtime" ]; then
pankso@37 52 echo "(Older than 10 days)"
pankso@37 53 else
pankso@37 54 echo "(Not older than 10 days)"
pankso@37 55 fi
pankso@8 56 gettext "Installed packages : "
pankso@7 57 ls $INSTALLED | wc -l
pankso@8 58 gettext "Mirrored packages : "
pankso@7 59 cat $LOCALSTATE/packages.list | wc -l
pankso@49 60 gettext "Upgradeable packages : "
pankso@47 61 cat $LOCALSTATE/packages.up | wc -l
pankso@44 62 #gettext "Installed files : "
pankso@44 63 #cat $INSTALLED/*/files.list | wc -l
pankso@8 64 gettext "Blocked packages : "
pankso@8 65 cat $LOCALSTATE/blocked-packages.list | wc -l
pankso@7 66 }
pankso@7 67
pankso@10 68 # Parse mirrors list to be able to have an icon an remove link
pankso@10 69 list_mirrors() {
pankso@10 70 cat $LOCALSTATE/mirrors | while read line
pankso@10 71 do
pankso@10 72 cat << EOT
pankso@10 73 <li><a href="$SCRIPT_NAME?config=rm-mirror=$line"><img
pankso@10 74 src="$IMAGES/clear.png" /></a><a href="$line">$line</a></li>
pankso@10 75 EOT
pankso@10 76 done
pankso@10 77 }
pankso@10 78
pankso@7 79 #
pankso@7 80 # xHTML functions
pankso@7 81 #
pankso@7 82
pankso@17 83 # ENTER will search but user may search for a button, so put one.
pankso@9 84 search_form() {
pankso@9 85 cat << EOT
pankso@9 86 <div class="search">
pankso@17 87 <form method="get" action="$SCRIPT_NAME">
pankso@17 88 <p>
pankso@17 89 <input type="text" name="search" size="20">
pankso@17 90 <input type="submit" value="`gettext "Search"`">
pankso@80 91 <input class="radius" type="submit" name="files"
pankso@80 92 value="`gettext "files"`">
pankso@17 93 </p>
pankso@17 94 </form>
pankso@9 95 </div>
pankso@9 96 EOT
pankso@9 97 }
pankso@9 98
pankso@17 99 table_head() {
pankso@7 100 cat << EOT
pankso@7 101 <tr id="thead">
pankso@7 102 <td>`gettext "Name"`</td>
pankso@7 103 <td>`gettext "Version"`</td>
pankso@7 104 <td>`gettext "Description"`</td>
pankso@7 105 <td>`gettext "Web"`</td>
pankso@7 106 </tr>
pankso@7 107 EOT
pankso@7 108 }
pankso@7 109
pankso@41 110 sidebar() {
pascal@126 111 [ -n "$repo" ] || repo=public
pankso@7 112 cat << EOT
pankso@41 113 <div id="sidebar">
pankso@41 114 <h4>Categories</h4>
pascal@126 115 <a class="active_base-system" href="$SCRIPT_NAME?cat=base-system&repo=$repo">Base-system</a>
pascal@126 116 <a class="active_x-window" href="$SCRIPT_NAME?cat=x-window&repo=$repo">X window</a>
pascal@126 117 <a class="active_utilities" href="$SCRIPT_NAME?cat=utilities&repo=$repo">Utilities</a>
pascal@126 118 <a class="active_network" href="$SCRIPT_NAME?cat=network&repo=$repo">Network</a>
pascal@126 119 <a class="active_games" href="$SCRIPT_NAME?cat=games&repo=$repo">Games</a>
pascal@126 120 <a class="active_graphics" href="$SCRIPT_NAME?cat=graphics&repo=$repo">Graphics</a>
pascal@126 121 <a class="active_office" href="$SCRIPT_NAME?cat=office&repo=$repo">Office</a>
pascal@126 122 <a class="active_multimedia" href="$SCRIPT_NAME?cat=multimedia&repo=$repo">Multimedia</a>
pascal@126 123 <a class="active_development" href="$SCRIPT_NAME?cat=development&repo=$repo">Development</a>
pascal@126 124 <a class="active_system-tools" href="$SCRIPT_NAME?cat=system-tools&repo=$repo">System tools</a>
pascal@126 125 <a class="active_security" href="$SCRIPT_NAME?cat=security&repo=$repo">Security</a>
pascal@126 126 <a class="active_misc" href="$SCRIPT_NAME?cat=misc&repo=$repo">Misc</a>
pascal@126 127 <a class="active_meta" href="$SCRIPT_NAME?cat=meta&repo=$repo">Meta</a>
pascal@126 128 <a class="active_non-free" href="$SCRIPT_NAME?cat=non-free&repo=$repo">Non free</a>
pascal@126 129 <a class="active_all" href="$SCRIPT_NAME?cat=all&repo=$repo">All</a>
pankso@7 130 EOT
pascal@126 131
pascal@126 132 if [ -d $LOCALSTATE/undigest ]; then
pascal@126 133 [ -n "$category" ] || category="base-system"
pascal@126 134 cat << EOT
pascal@126 135 <p></p>
pascal@126 136 <h4>Repositories</h4>
pascal@126 137 <a class="repo_public" href="$SCRIPT_NAME?repo=public&cat=$category">Public</a>
pascal@126 138 EOT
pascal@126 139 for i in $(ls $LOCALSTATE/undigest); do
pascal@126 140 cat << EOT
pascal@126 141 <a class="repo_$i" href="$SCRIPT_NAME?repo=$i&cat=$category">$i</a>
pascal@126 142 EOT
pascal@126 143 done
pascal@126 144 cat << EOT
pascal@126 145 <a class="repo_any" href="$SCRIPT_NAME?repo=any&cat=$category">Any</a>
pascal@126 146 EOT
pascal@126 147 fi
pascal@126 148 echo "</div>"
pascal@126 149 }
pascal@126 150
pascal@126 151 repo_list() {
pascal@126 152 if [ -n "$(ls $LOCALSTATE/undigest/ 2> /dev/null)" ]; then
pascal@126 153 case "$repo" in
pascal@126 154 public) ;;
pascal@126 155 ""|any) for i in $LOCALSTATE/undigest/* ; do
pascal@126 156 echo "$i/$1"
pascal@126 157 done ;;
pascal@126 158 *) echo "$LOCALSTATE/undigest/$repo/$1"
pascal@126 159 return ;;
pascal@126 160 esac
pascal@126 161 fi
pascal@126 162 echo "$LOCALSTATE/$1"
pankso@7 163 }
pankso@7 164
pankso@45 165 #
pankso@45 166 # Commands
pankso@45 167 #
pankso@45 168
pascal@81 169 case " $(GET) " in
pascal@81 170 *\ list\ *)
pankso@45 171 #
pankso@45 172 # List installed packages. This is the default because parsing
pankso@45 173 # the full packages.desc can be long and take some resources
pankso@45 174 #
pankso@45 175 cd $INSTALLED
pankso@45 176 search_form
pankso@45 177 sidebar
pankso@45 178 LOADING_MSG="Listing packages..."
pankso@45 179 loading_msg
pankso@45 180 cat << EOT
pankso@45 181 <h2>`gettext "My packages"`</h2>
pankso@45 182 <form method='get' action='$SCRIPT_NAME'>
pankso@45 183 <div id="actions">
pankso@46 184 <div class="float-left">
pankso@46 185 `gettext "Selection:"`
pankso@46 186 <input type="submit" name="do" value="Remove" />
pankso@46 187 </div>
pankso@46 188 <div class="float-right">
pankso@46 189 `gettext "List:"`
pankso@46 190 <input type="submit" name="recharge" value="Recharge" />
pankso@47 191 <input type="submit" name="up" value="Upgrade" />
pankso@46 192 </div>
pankso@41 193 </div>
pankso@7 194 EOT
pankso@7 195 table_start
pankso@41 196 table_head
pankso@7 197 for pkg in *
pankso@7 198 do
pankso@7 199 . $pkg/receipt
pankso@7 200 echo '<tr>'
pankso@7 201 # Use default tazpkg icon since all packages displayed are
pankso@7 202 # installed
pascal@92 203 colorpkg=$pkg
pascal@92 204 grep -qs "^$pkg$" $LOCALSTATE/blocked-packages.list &&
pascal@92 205 colorpkg="<span style='color: red;'>$pkg</span>"
pankso@7 206 echo "<td class='pkg'>
pankso@7 207 <input type='checkbox' name='pkg' value=\"$pkg\" />
pankso@7 208 <a href='$SCRIPT_NAME?info=$pkg'><img
pascal@92 209 src='$IMAGES/tazpkg-installed.png'/>$colorpkg</a></td>"
pankso@7 210 echo "<td>$VERSION</td>"
pankso@7 211 echo "<td class='desc'>$SHORT_DESC</td>"
pascal@122 212 echo "<td><a href='$WEB_SITE'><img src='$IMAGES/browser.png'/></a></td>"
pankso@7 213 echo '</tr>'
pankso@7 214 done
pankso@7 215 table_end
pankso@7 216 echo '</form>' ;;
pascal@81 217 *\ cat\ *)
pankso@45 218 #
pankso@41 219 # List all available packages by category on mirror. Listing all
paul@52 220 # packages is too resource intensive and not useful.
pankso@45 221 #
pankso@9 222 cd $LOCALSTATE
pascal@126 223 repo=$(GET repo)
pascal@126 224 [ -n "$repo" ] || repo=Any
pascal@81 225 category=$(GET cat)
pascal@81 226 [ "$category" == "cat" ] && category="base-system"
pascal@93 227 grep_category=$category
pascal@93 228 [ "$grep_category" == "all" ] && grep_category=".*"
pankso@9 229 search_form
pascal@126 230 sidebar | sed "s/active_$category/active/;s/repo_$repo/active/"
pankso@45 231 LOADING_MSG="Listing packages..."
pankso@45 232 loading_msg
pankso@9 233 cat << EOT
pankso@41 234 <h2>`gettext "Category:"` $category</h2>
pankso@9 235 <form method='get' action='$SCRIPT_NAME'>
pankso@9 236 <div id="actions">
pankso@45 237 <div class="float-left">
pankso@45 238 `gettext "Selection:"`
pankso@45 239 <input type="submit" name="do" value="Install" />
pankso@45 240 <input type="submit" name="do" value="Remove" />
pascal@126 241 <input type="hidden" name="repo" value="$repo" />
pankso@45 242 </div>
pankso@45 243 <div class="float-right">
pankso@45 244 `gettext "List:"`
pankso@45 245 <input type="submit" name="recharge" value="Recharge" />
pankso@47 246 <input type="submit" name="up" value="Upgrade" />
pankso@45 247 <a class="button" href='$SCRIPT_NAME?list'>
pankso@45 248 <img src="$IMAGES/tazpkg.png" />`gettext "My packages"`</a>
pankso@45 249 </div>
pascal@126 250 </div>
pankso@9 251 EOT
pascal@126 252 for i in $(repo_list packages.desc); do
pascal@126 253 [ "$repo" != "public" -a -d $LOCALSTATE/undigest ] &&
pascal@126 254 echo "<h3>Repository: $(dirname $i)</h3>"
pascal@126 255 table_start
pascal@126 256 table_head
pascal@126 257 grep "| $grep_category |" $i | parse_packages_desc
pascal@126 258 table_end
pascal@126 259 done
pankso@7 260 echo '</form>' ;;
pascal@81 261 *\ search\ *)
pankso@45 262 #
pankso@63 263 # Search for packages. Here default is to search in packages.desc
pankso@63 264 # and so get result including packages names and descriptions
pankso@45 265 #
pascal@81 266 pkg=$(GET search)
pankso@9 267 cd $LOCALSTATE
pankso@9 268 search_form
pankso@41 269 sidebar
pankso@45 270 LOADING_MSG="Searching packages..."
pankso@45 271 loading_msg
pankso@7 272 cat << EOT
pankso@17 273 <h2>`gettext "Search packages"`</h2>
pankso@7 274 <form method="get" action="$SCRIPT_NAME">
pankso@9 275 <div id="actions">
pankso@45 276 <div class="float-left">
pankso@45 277 `gettext "Selection:"`
pankso@45 278 <input type="submit" name="do" value="Install" />
pankso@45 279 <input type="submit" name="do" value="Remove" />
pankso@45 280 <a href="`cat $PANEL/lib/checkbox.js`">`gettext "Toogle all"`</a>
pankso@45 281 </div>
pankso@45 282 <div class="float-right">
pankso@45 283 `gettext "List:"`
pankso@45 284 <input type="submit" name="recharge" value="Recharge" />
pankso@47 285 <input type="submit" name="up" value="Upgrade" />
pankso@45 286 <a class="button" href='$SCRIPT_NAME?list'>
pankso@45 287 <img src="$IMAGES/tazpkg.png" />`gettext "My packages"`</a>
pankso@45 288 </div>
pascal@126 289 </div>
pankso@7 290 EOT
pankso@7 291 table_start
pascal@79 292 if [ "$(GET files)" ]; then
pascal@79 293 cat <<EOT
pascal@79 294 <tr id="thead">
pascal@79 295 <td>`gettext "Package"`</td>
pascal@79 296 <td>`gettext "File"`</td>
pascal@79 297 </tr>
pascal@126 298 $(unlzma -c files.list.lzma undigest/*/files.list.lzma \
pascal@126 299 2>/dev/null | grep -Ei ": .*$(GET search)" | \
pascal@84 300 while read PACKAGE FILE; do
pascal@84 301 PACKAGE=${PACKAGE%:}
pascal@84 302 image=tazpkg-installed.png
pascal@84 303 [ -d $INSTALLED/$PACKAGE ] || image=tazpkg.png
pascal@84 304 echo "<tr>
pascal@85 305 <td><input type='checkbox' name='pkg' value='$PACKAGE'>
pascal@85 306 <a href='$SCRIPT_NAME?info=$PACKAGE'><img src='$IMAGES/$image' />$PACKAGE</a></td>
pascal@84 307 <td>$FILE</td>
pascal@84 308 </tr>"
pascal@84 309 done)
pascal@79 310 EOT
pascal@79 311 else
pascal@79 312 table_head
pascal@126 313 grep -is $pkg packages.desc undigest/*/packages.desc | \
pascal@126 314 parse_packages_desc
pascal@79 315 fi
pankso@7 316 table_end
pankso@7 317 echo '</form>' ;;
pascal@81 318 *\ recharge\ *)
pankso@45 319 #
pankso@7 320 # Let recharge the packages list
pankso@45 321 #
pankso@9 322 search_form
pankso@41 323 sidebar
pankso@45 324 LOADING_MSG="Recharging lists..."
pankso@45 325 loading_msg
pankso@8 326 cat << EOT
pankso@9 327 <h2>`gettext "Recharge"`</h2>
pankso@9 328 <form method='get' action='$SCRIPT_NAME'>
pankso@9 329 <div id="actions">
pankso@41 330 <div class="float-left">
pankso@41 331 <p>
pankso@45 332 `gettext "Recharge checks for new or updated packages"`
pankso@41 333 </p>
pankso@41 334 </div>
pankso@41 335 <div class="float-right">
pankso@41 336 <p>
pankso@47 337 <a class="button" href='$SCRIPT_NAME?up'>
pankso@45 338 `gettext "Check upgrade"`</a>
pankso@41 339 <a class="button" href='$SCRIPT_NAME?list'>
pankso@41 340 <img src="$IMAGES/tazpkg.png" />`gettext "My packages"`</a>
pankso@41 341 </p>
pankso@41 342 </div>
pankso@41 343 </div>
pankso@22 344 <pre>
pankso@8 345 EOT
pankso@94 346 gettext "Recharging packages list" | log
pascal@99 347 tazpkg recharge | filter_taztools_msgs
pankso@45 348 cat << EOT
pankso@45 349 </pre>
pankso@45 350 <p>
paul@52 351 `gettext "Packages lists are up-to-date. You should check for upgrades now."`
pankso@45 352 </p>
pankso@45 353 EOT
pankso@45 354 ;;
pascal@81 355 *\ up\ *)
pankso@45 356 #
pankso@45 357 # Ugrade packages
pankso@45 358 #
pankso@9 359 cd $LOCALSTATE
pankso@9 360 search_form
pankso@41 361 sidebar
paul@52 362 LOADING_MSG="Checking for upgrades..."
pankso@45 363 loading_msg
pankso@8 364 cat << EOT
paul@52 365 <h2>`gettext "Up packages"`</h2>
pankso@8 366 <form method="get" action="$SCRIPT_NAME">
pankso@9 367 <div id="actions">
pankso@47 368 <div class="float-left">
pankso@47 369 `gettext "Selection:"`
pankso@47 370 <input type="submit" name="do" value="Install" />
pankso@47 371 <input type="submit" name="do" value="Remove" />
pankso@47 372 <a href="`cat $PANEL/lib/checkbox.js`">`gettext "Toogle all"`</a>
pankso@47 373 </div>
pankso@47 374 <div class="float-right">
pankso@47 375 `gettext "List:"`
pankso@47 376 <input type="submit" name="recharge" value="Recharge" />
pankso@47 377 <a class="button" href='$SCRIPT_NAME?list'>
pankso@47 378 <img src="$IMAGES/tazpkg.png" />`gettext "My packages"`</a>
pankso@47 379 </div>
pankso@45 380 </div>
pankso@8 381 EOT
pankso@47 382 tazpkg up --check >/dev/null
pankso@8 383 table_start
pankso@17 384 table_head
pankso@47 385 for pkg in `cat packages.up`
pankso@8 386 do
pascal@126 387 grep -s "^$pkg |" $LOCALSTATE/packages.desc \
pascal@126 388 $LOCALSTATE/undisgest/*/packages.desc | \
pascal@126 389 parse_packages_desc
pankso@8 390 done
pankso@8 391 table_end
pankso@8 392 echo '</form>' ;;
pascal@81 393 *\ do\ *)
pankso@45 394 #
pankso@7 395 # Do an action on one or some packages
pankso@45 396 #
pascal@92 397 opt=""
pascal@81 398 pkgs=""
pankso@87 399 cmdline=`echo ${QUERY_STRING#do=} | sed s'/&/ /g'`
pankso@87 400 cmd=`echo ${cmdline} | awk '{print $1}'`
pankso@87 401 pkgs=`echo $cmdline | sed -e s'/+/ /g' -e s'/pkg=//g' -e s/$cmd//`
pascal@92 402 cmd=`echo $cmd | tr [A-Z] [a-z]`
pankso@87 403 case $cmd in
pascal@92 404 install)
pankso@41 405 cmd=get-install opt=--forced ;;
pankso@41 406 esac
pankso@9 407 search_form
pankso@41 408 sidebar
pankso@45 409 LOADING_MSG="${cmd}ing packages..."
pankso@45 410 loading_msg
pankso@9 411 cat << EOT
pankso@9 412 <h2>Tazpkg: $cmd</h2>
pankso@9 413 <form method="get" action="$SCRIPT_NAME">
pankso@9 414 <div id="actions">
pankso@41 415 <div class="float-left">
pankso@41 416 <p>
paul@52 417 `gettext "Performing tasks on packages"`
pankso@41 418 </p>
pankso@41 419 </div>
pankso@41 420 <div class="float-right">
pankso@41 421 <p>
pankso@41 422 <a class="button" href='$SCRIPT_NAME?list'>
pankso@41 423 <img src="$IMAGES/tazpkg.png" />`gettext "My packages"`</a>
pankso@41 424 </p>
pankso@41 425 </div>
pankso@41 426 </div>
pankso@9 427 EOT
pankso@45 428 echo '<div class="box">'
pankso@10 429 gettext "Executing $cmd for:$pkgs"
pankso@45 430 echo '</div>'
pankso@7 431 for pkg in $pkgs
pankso@7 432 do
pankso@10 433 echo '<pre>'
pascal@99 434 echo 'y' | tazpkg $cmd $pkg $opt 2>/dev/null | filter_taztools_msgs
pankso@7 435 echo '</pre>'
pankso@7 436 done ;;
pascal@81 437 *\ info\ *)
pankso@45 438 #
pankso@45 439 # Packages info
pankso@45 440 #
pascal@81 441 pkg=$(GET info)
pankso@9 442 search_form
pankso@41 443 sidebar
pascal@62 444 if [ -d $INSTALLED/$pkg ]; then
pascal@62 445 . $INSTALLED/$pkg/receipt
pascal@62 446 files=`cat $INSTALLED/$pkg/files.list | wc -l`
pankso@64 447 action=$(gettext "Remove")
pascal@62 448 else
pascal@62 449 cd $LOCALSTATE
pankso@64 450 LOADING_MSG=$(gettext "Getting package info...")
pankso@64 451 loading_msg
pascal@62 452 IFS='|'
pascal@126 453 set -- $(grep -s "^$pkg |" packages.desc \
pascal@126 454 undigest/*/packages.desc)
pascal@62 455 unset IFS
pascal@62 456 PACKAGE=$1
pascal@62 457 VERSION="$(echo $2)"
pascal@62 458 SHORT_DESC="$(echo $3)"
pascal@62 459 CATEGORY="$(echo $4)"
pascal@62 460 WEB_SITE="$(echo $5)"
pankso@64 461 action=$(gettext "Install")
pascal@62 462 fi
pankso@7 463 cat << EOT
pankso@41 464 <h2>`gettext "Package"` $PACKAGE</h2>
pankso@9 465 <div id="actions">
pankso@41 466 <div class="float-left">
pankso@41 467 <p>
pankso@64 468 <a class="button" href='$SCRIPT_NAME?do=$action&$pkg'>$action</a>
pascal@92 469 EOT
pascal@92 470 if [ -d $INSTALLED/$pkg ]; then
pascal@92 471 if grep -qs "^$pkg$" $LOCALSTATE/blocked-packages.list; then
pascal@92 472 block=$(gettext "Unblock")
pascal@92 473 else
pascal@92 474 block=$(gettext "Block")
pascal@92 475 fi
pascal@92 476 cat << EOT
pascal@92 477 <a class="button" href='$SCRIPT_NAME?do=$block&$pkg'>$block</a>
pascal@92 478 <a class="button" href='$SCRIPT_NAME?do=Repack&$pkg'>Repack</a>
pascal@92 479 EOT
pascal@92 480 fi
pascal@92 481 cat << EOT
pankso@41 482 </p>
pankso@41 483 </div>
pankso@41 484 <div class="float-right">
pankso@41 485 <p>
pankso@41 486 <a class="button" href='$SCRIPT_NAME?list'>
pankso@41 487 <img src="$IMAGES/tazpkg.png" />`gettext "My packages"`</a>
pankso@41 488 </p>
pankso@41 489 </div>
pankso@9 490 </div>
pankso@22 491 <pre>
pankso@7 492 Name : $PACKAGE
pankso@7 493 Version : $VERSION
pankso@7 494 Description : $SHORT_DESC
pankso@41 495 Category : $CATEGORY
pascal@62 496 EOT
pascal@62 497 if [ -d $INSTALLED/$pkg ]; then
pascal@62 498 cat << EOT
pankso@10 499 Maintainer : $MAINTAINER
pankso@7 500 Website : <a href="$WEB_SITE">$WEB_SITE</a>
pankso@7 501 Sizes : $PACKED_SIZE/$UNPACKED_SIZE
pascal@92 502 EOT
pascal@92 503 if [ -n "$DEPENDS" ]; then
pascal@92 504 echo -n "Depends : "
pascal@92 505 for i in $DEPENDS; do
pascal@92 506 echo -n "<a href="$SCRIPT_NAME?info=$i">$i</a> "
pascal@92 507 done
pascal@92 508 echo ""
pascal@92 509 fi
pascal@92 510 if [ -n "$SUGGESTED" ]; then
pascal@92 511 echo -n "Suggested : "
pascal@92 512 for i in $SUGGESTED; do
pascal@92 513 echo -n "<a href="$SCRIPT_NAME?info=$i">$i</a> "
pascal@92 514 done
pascal@92 515 echo ""
pascal@92 516 fi
pascal@92 517 [ -n "$TAGS" ] && echo "Tags : $TAGS"
pascal@92 518 cat << EOT
pankso@7 519 </pre>
pankso@7 520
pankso@41 521 <p>`gettext "Installed files:"` `cat $INSTALLED/$pkg/files.list | wc -l`</p>
pankso@7 522 <pre>
pankso@7 523 `cat $INSTALLED/$pkg/files.list`
pankso@7 524 </pre>
pankso@7 525 EOT
pascal@62 526 else
pascal@62 527 cat << EOT
pascal@62 528 Website : <a href="$WEB_SITE">$WEB_SITE</a>
pascal@126 529 Sizes : `grep -sA 3 ^$pkg$ packages.txt undigest/*/packages.txt | \
pascal@126 530 tail -n 1 | sed 's/ *//'`
pascal@62 531 </pre>
pascal@62 532
pascal@62 533 <p>`gettext "Installed files:"`</p>
pascal@62 534 <pre>
pascal@126 535 `unlzma -c files.list.lzma undigest/*/files.list.lzma 2> /dev/null | \
pascal@126 536 sed "/^$pkg: /!d;s/^$pkg: //"`
pascal@62 537 </pre>
pascal@62 538 EOT
pascal@62 539 fi
pankso@7 540 ;;
pankso@95 541 *\ admin\ * )
pankso@45 542 #
pankso@10 543 # Tazpkg configuration page
pankso@45 544 #
pankso@95 545 cmd=$(GET admin)
pankso@10 546 case "$cmd" in
pankso@10 547 clean)
pankso@10 548 rm -rf /var/cache/tazpkg/* ;;
pascal@81 549 add-mirror)
pankso@10 550 # Decode url
pascal@81 551 mirror=$(GET mirror)
pascal@81 552 case "$mirror" in
pascal@81 553 http://*|ftp://*)
pascal@81 554 echo "$mirror" >> $LOCALSTATE/mirrors ;;
pascal@81 555 esac ;;
pankso@10 556 rm-mirror=http://*|rm-mirror=ftp://*)
pascal@81 557 mirror=${cmd#rm-mirror=}
pankso@10 558 sed -i -e "s@$mirror@@" -e '/^$/d' $LOCALSTATE/mirrors ;;
pankso@10 559 esac
pankso@10 560 cache_files=`find /var/cache/tazpkg -name *.tazpkg | wc -l`
pankso@10 561 cache_size=`du -sh /var/cache/tazpkg`
pankso@41 562 sidebar
pankso@10 563 cat << EOT
pankso@95 564 <h2>$(gettext "Administration")</h2>
pankso@10 565 <div>
pankso@95 566 <p>$(gettext "Tazpkg administration and settings")</p>
pankso@10 567 </div>
pankso@95 568 <div id="actions">
pankso@95 569 <a class="button" href='$SCRIPT_NAME?admin=&action=saveconf'>
pankso@95 570 <img src="$IMAGES/tazpkg.png" />`gettext "Save configuration"`</a>
pankso@95 571 <a class="button" href='$SCRIPT_NAME?admin=&action=listconf'>
pankso@95 572 <img src="$IMAGES/edit.png" />`gettext "List configuration files"`</a>
pankso@95 573 <a class="button" href='$SCRIPT_NAME?admin=&action=quickcheck'>
pankso@95 574 <img src="$IMAGES/recharge.png" />`gettext "Quick check"`</a>
pankso@95 575 <a class="button" href='$SCRIPT_NAME?admin=&action=fullcheck'>
pankso@95 576 <img src="$IMAGES/recharge.png" />`gettext "Full check"`</a>
pankso@95 577 </div>
pankso@95 578 EOT
pankso@95 579 case "$(GET action)" in
pankso@95 580 saveconf)
pankso@95 581 LOADING_MSG=$(gettext "Creating the package...")
pankso@95 582 loading_msg
pankso@95 583 echo "<pre>"
pankso@95 584 cd $HOME
pascal@99 585 tazpkg repack-config | filter_taztools_msgs
pankso@95 586 gettext "Path : " && ls $HOME/config-*.tazpkg
pankso@95 587 echo "</pre>" ;;
pankso@95 588 listconf)
pankso@95 589 echo "<h4>`gettext "Configuration files"`</h4>"
pankso@95 590 echo "<ul>"
pascal@102 591 tazpkg list-config | while read file; do
pascal@102 592 [ "${file:0:1}" == "/" ] || continue
pascal@102 593 if [ -e $file ]; then
pascal@102 594 echo "<li><a href=\"index.cgi?file=$file\">$file</a></li>"
pascal@102 595 else
pascal@102 596 echo "<li>$file</li>"
pascal@102 597 fi
pascal@102 598 done
pankso@95 599 echo "</ul>"
pankso@95 600 echo "</pre>" ;;
pankso@95 601 quickcheck)
pankso@95 602 LOADING_MSG=$(gettext "Checking packages consitency...")
pankso@95 603 loading_msg
pankso@95 604 echo "<pre>"
pankso@95 605 tazpkg check
pankso@95 606 echo "</pre>" ;;
pankso@95 607 fullcheck)
pankso@95 608 LOADING_MSG=$(gettext "Full packages check...")
pankso@95 609 loading_msg
pankso@95 610 echo "<pre>"
pankso@95 611 tazpkg check --full
pankso@95 612 echo "</pre>" ;;
pankso@95 613 esac
pankso@95 614 cat << EOT
pankso@95 615 <h3>$(gettext "Packages cache")</h3>
pankso@10 616 <div>
pankso@10 617 <form method="get" action="$SCRIPT_NAME">
pankso@17 618 <p>
pankso@17 619 `gettext "Packages in the cache:"` $cache_files ($cache_size)
pankso@98 620 <input type="hidden" name="admin" value="clean" />
pankso@17 621 <input type="submit" value="Clean" />
pankso@17 622 </p>
pankso@10 623 </form>
pankso@10 624 </div>
pankso@17 625
pankso@10 626 <h3>`gettext "Current mirror list"`</h3>
pankso@10 627 <div class="box">
pankso@10 628 <ul>
pankso@10 629 `list_mirrors`
pankso@10 630 </ul>
pankso@10 631 </div>
pankso@10 632 <form method="get" action="$SCRIPT_NAME">
pankso@10 633 <p>
pankso@10 634 <input type="hidden" name="config" value="add-mirror" />
pankso@10 635 <input type="text" name="mirror" size="60">
pankso@10 636 <input type="submit" value="Add mirror" />
pankso@10 637 </p>
pankso@10 638 </form>
pankso@10 639 EOT
pascal@101 640 version=$(cat /etc/slitaz-release)
pascal@101 641 cat << EOT
pascal@101 642
pankso@111 643 <a name="dvd"></a>
pascal@101 644 <h3>`gettext "SliTaz packages DVD"`</h3>
pascal@101 645 <p>
pascal@101 646 $(gettext "A bootable DVD image of all available packages for \
pascal@101 647 the $version version is generated every day. It also contains a copy of \
pascal@101 648 the website and can be used without an internet connection. This image can be \
pascal@101 649 installed on a DVD or an USB key.")
pascal@101 650 </p>
pankso@111 651 <div>
pankso@111 652 <form method="post" action='$SCRIPT_NAME?admin&action=dvdimage#dvd'>
pankso@111 653 <p>
pankso@111 654 <a class="button"
pankso@111 655 href='http://mirror.slitaz.org/iso/$version/packages-$version.iso'>
pankso@111 656 <img src="$IMAGES/tazpkg.png" />$(gettext "Download DVD image")</a>
pankso@111 657 <a class="button" href='$SCRIPT_NAME?admin&action=dvdusbkey#dvd'>
pascal@123 658 <img src="$IMAGES/tazpkg.png" />$(gettext "Install from DVD/USB key")</a>
pankso@111 659 </p>
pankso@111 660 <div class="box">
pascal@123 661 $(gettext "Install from ISO image: ")
pankso@111 662 <input type="text" name="dvdimage" size="40" value="/root/packages-$version.iso">
pankso@111 663 </div>
pascal@101 664 </form>
pascal@101 665 </div>
pascal@101 666 EOT
pascal@101 667 if [ "$(GET action)" == "dvdimage" ]; then
pascal@101 668 dev=$(POST dvdimage)
pascal@101 669 mkdir -p /mnt/packages 2> /dev/null
pascal@101 670 echo "<pre>"
pascal@101 671 mount -t iso9660 -o loop,ro $dev /mnt/packages &&
pascal@101 672 /mnt/packages/install.sh &&
pascal@101 673 echo "$dev is installed on /mnt/packages"
pascal@101 674 echo "</pre>"
pascal@101 675 fi
pascal@101 676 if [ "$(GET action)" == "dvdusbkey" ]; then
pascal@101 677 mkdir -p /mnt/packages 2> /dev/null
pascal@101 678 for tag in "LABEL=\"packages-$version\" TYPE=\"iso9660\"" \
pascal@101 679 "LABEL=\"sources-$version\" TYPE=\"iso9660\"" ; do
pascal@101 680 dev=$(blkid | grep "$tag" | cut -d: -f1)
pascal@101 681 [ -n "$dev" ] || continue
pascal@101 682 echo "<pre>"
pascal@101 683 mount -t iso9660 -o ro $dev /mnt/packages &&
pascal@101 684 /mnt/packages/install.sh &&
pascal@101 685 echo "$dev is installed on /mnt/packages"
pascal@101 686 echo "</pre>"
pascal@101 687 break
pascal@101 688 done
pascal@101 689 fi
pankso@10 690 ;;
pankso@7 691 *)
pankso@14 692 #
pankso@7 693 # Default to summary
pankso@14 694 #
pankso@10 695 search_form
pankso@41 696 sidebar
pascal@92 697 [ -n "$(GET block)" ] && tazpkg block $(GET block)
pascal@92 698 [ -n "$(GET unblock)" ] && tazpkg unblock $(GET unblock)
pankso@7 699 cat << EOT
pankso@9 700 <h2>`gettext "Summary"`</h2>
pankso@9 701 <div id="actions">
pankso@45 702 <a class="button" href='$SCRIPT_NAME?list'>
pankso@45 703 <img src="$IMAGES/tazpkg.png" />`gettext "My packages"`</a>
pankso@45 704 <a class="button" href='$SCRIPT_NAME?recharge'>
pankso@45 705 <img src="$IMAGES/recharge.png" />`gettext "Recharge list"`</a>
pankso@47 706 <a class="button" href='$SCRIPT_NAME?up'>
pankso@45 707 <img src="$IMAGES/update.png" />`gettext "Check upgrade"`</a>
pankso@95 708 <a class="button" href='$SCRIPT_NAME?admin'>
pankso@95 709 <img src="$IMAGES/edit.png" />`gettext "Administration"`</a>
pankso@9 710 </div>
pankso@41 711 <pre class="pre-main">
pankso@7 712 `packages_summary`
pankso@7 713 </pre>
pankso@41 714
pankso@10 715 <h3>`gettext "Latest log entries"`</h3>
pankso@10 716 <pre>
pankso@45 717 `tail -n 5 /var/log/tazpkg.log | fgrep "-" | \
pankso@10 718 awk '{print $1, $2, $3, $4, $5, $6, $7}'`
pankso@10 719 </pre>
pankso@7 720 EOT
pankso@10 721 ;;
pankso@7 722 esac
pankso@7 723
pankso@7 724 # xHTML 5 footer
pankso@33 725 xhtml_footer
pankso@7 726 exit 0