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