slitaz-pizza annotate web/pizza.cgi @ rev 129
Remove ashism ==
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Tue Feb 26 08:25:57 2019 +0100 (2019-02-26) |
parents | 5cede24bc0fc |
children | b03531b3e96b |
rev | line source |
---|---|
pankso@7 | 1 #!/bin/sh |
pankso@7 | 2 # |
paul@9 | 3 # SliTaz Pizza CGI/web interface - Let's have a pizza :-) |
pankso@7 | 4 # Please KISS, it is important and keep speed in mind. Thanks, Pankso. |
pankso@7 | 5 # |
pankso@7 | 6 |
pankso@7 | 7 # Output a RSS feed of latest build isos. |
pascal@129 | 8 if [ "$QUERY_STRING" = "rss" ]; then |
pankso@7 | 9 . /etc/slitaz/pizza.conf |
pankso@7 | 10 pubdate=$(date "+%a, %d %b %Y %X") |
pankso@7 | 11 cat << EOT |
pankso@7 | 12 Content-Type: text/xml |
pankso@7 | 13 |
pankso@7 | 14 <?xml version="1.0" encoding="utf-8" ?> |
pankso@7 | 15 <rss version="2.0"> |
pankso@7 | 16 <channel> |
pankso@7 | 17 <title>SliTaz Pizza</title> |
pankso@7 | 18 <description>The SliTaz Pizza cooker feed</description> |
pankso@7 | 19 <link>$PIZZA_URL</link> |
pankso@7 | 20 <lastBuildDate>$pubdate GMT</lastBuildDate> |
pankso@7 | 21 <pubDate>$pubdate GMT</pubDate> |
pankso@7 | 22 EOT |
pankso@7 | 23 for rss in $(ls -1t $PIZZA/chroot${SLITAZ}/xml/*.xml | head -n 12) |
pankso@7 | 24 do |
pankso@7 | 25 cat $rss |
pankso@7 | 26 done |
pankso@7 | 27 cat << EOT |
pankso@7 | 28 </channel> |
pankso@7 | 29 </rss> |
pankso@7 | 30 EOT |
pankso@7 | 31 exit 0 |
pankso@7 | 32 fi |
pankso@7 | 33 |
pankso@7 | 34 # Content negotiation for Gettext |
pankso@7 | 35 IFS="," |
pankso@7 | 36 for lang in $HTTP_ACCEPT_LANGUAGE |
pankso@7 | 37 do |
pankso@7 | 38 lang=${lang%;*} lang=${lang# } lang=${lang%-*} |
pankso@7 | 39 case "$lang" in |
pankso@124 | 40 de) lang="de_DE" && break ;; |
pankso@124 | 41 el) lang="el_GR" && break ;; |
pankso@105 | 42 en) lang="C" && break ;; |
pankso@105 | 43 fr) lang="fr_FR" && break ;; |
pankso@105 | 44 pt) lang="pt_BR" && break ;; |
pankso@105 | 45 ru) lang="ru_RU" && break ;; |
pankso@105 | 46 sv) lang="sv_SE" && break ;; |
pankso@105 | 47 pl) lang="pl_PL" && break ;; |
pankso@7 | 48 esac |
pankso@7 | 49 done |
pankso@7 | 50 unset IFS |
pankso@7 | 51 export LANG=$lang LC_ALL=$lang |
pankso@7 | 52 |
pankso@7 | 53 # Internationalization: $(gettext "") |
pankso@7 | 54 . /usr/bin/gettext.sh |
pankso@7 | 55 TEXTDOMAIN='pizza' |
pankso@7 | 56 export TEXTDOMAIN |
pankso@7 | 57 |
pankso@7 | 58 . lib/libpizza |
pankso@7 | 59 |
pankso@7 | 60 # |
pankso@7 | 61 # Commands |
pankso@7 | 62 # |
pankso@7 | 63 |
pankso@7 | 64 case " $(GET) " in |
pankso@7 | 65 *\ start\ *) |
pankso@7 | 66 # |
pankso@7 | 67 # First step |
pankso@7 | 68 # |
pankso@7 | 69 date=$(date "+%Y%m%d") |
pankso@7 | 70 id=$date-$$ |
pankso@7 | 71 cat << EOT |
pankso@7 | 72 <h2>$(gettext "First step")</h2> |
pankso@7 | 73 <p> |
al@108 | 74 $(gettext "Choose your distribution name and the one you want to use as \ |
al@108 | 75 base. We need your mail to notify you when your SliTaz Flavor is built \ |
al@108 | 76 and if anything goes wrong.") |
pankso@7 | 77 </p> |
pankso@7 | 78 <form method="get" action="pkgs.cgi" name="pizza" onsubmit="return checkForm();"> |
pankso@7 | 79 <table> |
pankso@7 | 80 <tbody> |
pankso@7 | 81 <tr> |
pankso@7 | 82 <td>$(gettext "Flavor name")</td> |
erjo@77 | 83 <td><input type="text" name="flavor" size="40" maxlength="25" /></td> |
pankso@7 | 84 </tr> |
pankso@7 | 85 <tr> |
pankso@7 | 86 <td>$(gettext "Short description")</td> |
erjo@66 | 87 <td><input type="text" name="desc" size="40" maxlength="60" /></td> |
pankso@7 | 88 </tr> |
pankso@7 | 89 <tr> |
pankso@7 | 90 <td>$(gettext "Email")</td> |
pankso@7 | 91 <td><input type="text" name="mail" size="40" /></td> |
pankso@7 | 92 </tr> |
pankso@7 | 93 <tr> |
pankso@7 | 94 <td>$(gettext "Based on")</td> |
pankso@7 | 95 <td> |
pankso@7 | 96 <select name="skel"> |
pankso@7 | 97 <option value="base"> |
pankso@7 | 98 Base - $(gettext "Text mode system")</option> |
pankso@7 | 99 <option value="justx"> |
al@119 | 100 Justx - $(gettext "X without GTK or Qt")</option> |
pankso@7 | 101 <option value="gtkonly"> |
pankso@7 | 102 Gtkonly - $(gettext "Clean GTK desktop")</option> |
pankso@7 | 103 <option value="core"> |
pankso@7 | 104 Core - $(gettext "Default SliTaz desktop")</option> |
pankso@7 | 105 </select> |
pankso@7 | 106 </td> |
pankso@7 | 107 </tr> |
pankso@7 | 108 </tbody> |
pankso@7 | 109 </table> |
pankso@7 | 110 <pre> |
pankso@7 | 111 Uniq ID : $id |
pankso@7 | 112 </pre> |
pankso@7 | 113 <div class="next"> |
pankso@7 | 114 <input type="hidden" name="id" value="$id" /> |
al@108 | 115 <input type="submit" value="$(gettext 'Continue')"> |
pankso@7 | 116 </div> |
pankso@7 | 117 </form> |
pankso@7 | 118 EOT |
pankso@7 | 119 ;; |
pankso@7 | 120 *\ gen\ *) |
pankso@7 | 121 # |
pankso@7 | 122 # Generate step |
pankso@7 | 123 # |
pankso@7 | 124 id="$(GET id)" |
pankso@7 | 125 . $tmpdir/slitaz-$id/receipt |
pankso@7 | 126 addfiles=$(find $tmpdir/slitaz-$id/addfiles -type f | wc -l) |
pankso@7 | 127 [ "$addfiles" ] || addfiles=0 |
pankso@7 | 128 packages=$(cat $tmpdir/slitaz-$id/packages.list | wc -l) |
pankso@7 | 129 cat << EOT |
pankso@7 | 130 <h2>$(gettext "Generate")</h2> |
pankso@7 | 131 <p> |
al@108 | 132 $(gettext "Last chance to stop process or start over. Next step will pack \ |
al@108 | 133 your flavor and add it to the build queue. Here you can also add a note to \ |
al@108 | 134 your receipt flavor, this will be displayed on your flavor ID page and \ |
pankso@23 | 135 can be used to give more info to other users and SliTaz developers.") |
pankso@7 | 136 </p> |
pankso@23 | 137 |
pankso@7 | 138 <pre> |
pankso@7 | 139 Uniq ID : $id |
pankso@7 | 140 Flavor : $FLAVOR |
pankso@7 | 141 Short desc : $SHORT_DESC |
pankso@7 | 142 Maintainer : $MAINTAINER |
pankso@7 | 143 Packages : $packages |
pankso@7 | 144 Addfiles : $addfiles |
pankso@7 | 145 </pre> |
pankso@7 | 146 <form method="get" action="./"> |
pankso@7 | 147 <div class="box"> |
pankso@7 | 148 Note: |
pankso@7 | 149 <input type="text" name="note" style="width: 720px;" /> |
pankso@7 | 150 </div> |
pankso@7 | 151 <div class="next"> |
al@108 | 152 <input type="submit" name="cancel" value="$(gettext 'Cancel')"> |
pankso@7 | 153 <input type="hidden" name="addfiles" value="$addfiles" /> |
pankso@7 | 154 <input type="hidden" name="id" value="$id" /> |
al@108 | 155 <input type="submit" name="pack" value="$(gettext 'Build flavor')"> |
pankso@7 | 156 </div> |
pankso@7 | 157 </form> |
pankso@7 | 158 EOT |
pankso@7 | 159 ;; |
pankso@7 | 160 *\ cancel\ *) |
pankso@7 | 161 id="$(GET id)" |
al@108 | 162 echo "<p>$(eval_gettext 'Removing temporary files for: $id')</p>" |
pankso@7 | 163 [ -d "$tmpdir/slitaz-$id" ] && rm -rf $tmpdir/slitaz-$id/ |
pankso@7 | 164 cat << EOT |
pankso@7 | 165 <form method="get" action="./"> |
al@108 | 166 <input type="submit" name="start" value="$(gettext 'Start over')"> |
pankso@7 | 167 </form> |
pankso@7 | 168 EOT |
pankso@7 | 169 ;; |
pankso@7 | 170 *\ pack\ *) |
pankso@7 | 171 # |
pankso@7 | 172 # Pack distro step |
pankso@7 | 173 # |
pankso@7 | 174 id="$(GET id)" |
pankso@7 | 175 receipt="$tmpdir/slitaz-$id/receipt" |
pankso@7 | 176 addfiles="$(GET addfiles)" |
pankso@7 | 177 log="$tmpdir/slitaz-$id/distro.log" |
pankso@7 | 178 note="$(GET note)" |
pankso@7 | 179 inqueue=$(ls $queue | wc -l) |
pankso@7 | 180 . $receipt |
pankso@7 | 181 cat << EOT |
al@108 | 182 <h2>$(gettext 'Packing: $FLAVOR')</h2> |
pankso@7 | 183 <pre> |
pankso@7 | 184 EOT |
pankso@7 | 185 if ! fgrep ADDFILES $receipt; then |
pankso@7 | 186 echo "ADDFILES=\"$addfiles\"" >> $receipt |
pankso@7 | 187 fi |
pankso@7 | 188 if ! fgrep NOTE $receipt; then |
pascal@91 | 189 echo "NOTE=\"$note\"" | \ |
pascal@92 | 190 sed 's/\\/\\\\/g;s/\$/\\$/g;s/`/\\`/g' >> $receipt |
pankso@7 | 191 fi |
pankso@7 | 192 |
pankso@7 | 193 # The rootcd README |
al@108 | 194 gettext "Creating SliTaz CD-ROM README..." |
pankso@7 | 195 date=$(date '+%Y-%m-%d %H:%M') |
pankso@7 | 196 mkdir -p $tmpdir/slitaz-$id/rootcd |
pankso@7 | 197 cp $DATA/README.distro $tmpdir/slitaz-$id/rootcd/README |
pankso@7 | 198 sed -i s"/_DATE_/$date/" $tmpdir/slitaz-$id/rootcd/README |
pankso@7 | 199 status |
pankso@7 | 200 |
al@108 | 201 gettext "Creating flavor tarball..." |
pankso@7 | 202 cd $tmpdir && tar cjf $FLAVOR.tar.bz2 slitaz-$id |
pankso@7 | 203 mkdir -p $public/slitaz-$id |
pankso@7 | 204 mv $FLAVOR.tar.bz2 $public/slitaz-$id |
pankso@7 | 205 status |
pankso@7 | 206 |
pankso@7 | 207 # Keep a public receipt copy and move everything from tmp to queue. |
pankso@7 | 208 echo "Flavor packed : $(date '+%Y-%m-%d %H:%M')" | tee -a $log |
al@108 | 209 gettext "Moving $id to Pizza build queue..." |
pankso@7 | 210 mv -f $tmpdir/slitaz-$id/distro.log $public/slitaz-$id |
pankso@7 | 211 cp -f $tmpdir/slitaz-$id/receipt $public/slitaz-$id |
pankso@7 | 212 mv $tmpdir/slitaz-$id $queue |
pankso@7 | 213 status |
pankso@7 | 214 |
pascal@129 | 215 if [ "$inqueue" = "1" ]; then |
pankso@7 | 216 gettext "Your ISO will be built on next Pizza Bot run" |
pankso@7 | 217 else |
al@108 | 218 eval_ngettext \ |
al@108 | 219 'There is $inqueue flavor in queue' \ |
al@108 | 220 'There are $inqueue flavors in queue' $inqueue |
pankso@7 | 221 fi |
pankso@7 | 222 echo "" |
pankso@10 | 223 echo "New flavor added to queue: <a href='?id=$id'>$id</a> ($FLAVOR)" | log |
pankso@7 | 224 cat << EOT |
pankso@7 | 225 </pre> |
pankso@7 | 226 <div> |
pankso@7 | 227 <img src="images/archive.png" alt="[ tarball ]" /> |
al@108 | 228 $(gettext "Download tarball:") |
pankso@7 | 229 <a href="public/slitaz-$id/$FLAVOR.tar.bz2">$FLAVOR.tar.bz2</a> |
pankso@7 | 230 - Browse <a href="public/slitaz-$id/">the flavor</a> |
pankso@7 | 231 </div> |
pankso@7 | 232 <div class="next"> |
pankso@7 | 233 <form method="get" action="./"> |
pankso@7 | 234 <input type="hidden" name="id" value="$id" /> |
al@108 | 235 <input type="submit" value="$(gettext 'Status')"> |
pankso@7 | 236 </form> |
pankso@7 | 237 </div> |
pankso@7 | 238 EOT |
pankso@7 | 239 ;; |
pankso@7 | 240 *\ id\ *) |
pankso@7 | 241 # |
pankso@7 | 242 # ID Status page |
pankso@7 | 243 # |
pankso@7 | 244 id="$(GET id)" |
pankso@7 | 245 [ -f "$queue/slitaz-$id/receipt" ] && . $queue/slitaz-$id/receipt |
pankso@7 | 246 [ -f "public/slitaz-$id/receipt" ] && . public/slitaz-$id/receipt |
pankso@7 | 247 log="$public/slitaz-$id/distro.log" |
pankso@7 | 248 if [ ! -d "public/slitaz-$id" ]; then |
al@108 | 249 gettext "Sorry, can't find flavor ID: $id" |
pankso@7 | 250 cat lib/footer.html && exit 0 |
pankso@7 | 251 fi |
pankso@7 | 252 if [ -f "$public/slitaz-$id/$FLAVOR.iso" ]; then |
pankso@7 | 253 dir="public/slitaz-$id" |
pankso@7 | 254 list="$dir/packages.list" |
pankso@7 | 255 iso="$dir/$FLAVOR.iso" |
al@108 | 256 msg="$(gettext 'Download ISO:') <a href=\"$dir/$FLAVOR.iso\">$FLAVOR.iso</a> |
al@108 | 257 [ <a href=\"$dir/$FLAVOR.md5\">md5</a> ]" |
pankso@7 | 258 else |
pankso@7 | 259 list="$queue/slitaz-$id/packages.list" |
al@108 | 260 msg="$(gettext 'Flavor is building or still in the build queue')" |
pankso@7 | 261 fi |
pankso@7 | 262 pkgslist=$(cat $list | wc -l) |
pankso@7 | 263 pkgsinst=$(cat $installed | wc -l) |
pankso@7 | 264 [ "$pkgsinst" ] || pkgsinst=0 |
pankso@7 | 265 [ "$ISO_SIZE" ] || ISO_SIZE="N/A" |
pankso@7 | 266 [ "$ROOTFS_SIZE" ] || ROOTFS_SIZE="N/A" |
pankso@7 | 267 cat << EOT |
al@108 | 268 <h2>$(gettext 'Status for: $FLAVOR')</h2> |
pankso@14 | 269 <div> |
pankso@14 | 270 $(get_gravatar $MAINTAINER) $(gettext "Flavor description:") $SHORT_DESC |
pankso@14 | 271 </div> |
pankso@7 | 272 <pre> |
pankso@7 | 273 Uniq ID : $id |
pankso@7 | 274 Flavor : $FLAVOR |
pankso@7 | 275 Packages : $pkgslist in list - $pkgsinst installed |
pankso@7 | 276 Rootfs size : $ROOTFS_SIZE |
pankso@7 | 277 ISO size : $ISO_SIZE |
pankso@7 | 278 </pre> |
pankso@7 | 279 |
pankso@7 | 280 <div> |
pankso@7 | 281 <img src="images/iso.png" alt="[ iso ]" /> $(echo $msg) |
pankso@7 | 282 </div> |
pankso@7 | 283 <div> |
pankso@7 | 284 <img src="images/archive.png" alt="[ tarball ]" /> |
pankso@7 | 285 $(gettext "Download tarball:") |
pankso@7 | 286 <a href="public/slitaz-$id/$FLAVOR.tar.bz2">$FLAVOR.tar.bz2</a> |
pankso@7 | 287 EOT |
pankso@7 | 288 if [ -f "$public/slitaz-$id/$FLAVOR.flavor" ]; then |
pankso@7 | 289 cat << EOT |
pankso@7 | 290 - Flavor file: <a href="public/slitaz-$id/$FLAVOR.flavor">$FLAVOR.flavor</a> |
pankso@7 | 291 EOT |
pankso@7 | 292 fi |
pankso@7 | 293 cat << EOT |
pankso@7 | 294 - Browse <a href="public/slitaz-$id/">the flavor</a> |
pankso@7 | 295 </div> |
pankso@7 | 296 EOT |
pankso@7 | 297 if [ "$NOTE" ]; then |
pankso@7 | 298 echo "<div class="note">$NOTE</div>" |
pankso@7 | 299 fi |
pankso@7 | 300 if [ -f "$log" ]; then |
pankso@7 | 301 echo '<h2>Distro log</h2>' |
pankso@7 | 302 echo '<pre>' |
pankso@7 | 303 fgrep 'Build time' $log |
pankso@7 | 304 cat $log | highlighter log |
pankso@7 | 305 echo '</pre>' |
pankso@7 | 306 fi ;; |
pankso@126 | 307 *\ helper\ *) |
al@108 | 308 echo "<h2>$(gettext 'Help')</h2>" |
pankso@42 | 309 cat /usr/share/doc/pizza/help.en.html |
pankso@40 | 310 cat /usr/share/doc/pizza/faq.en.html |
pankso@43 | 311 echo '<h3>README</h3>' |
pankso@7 | 312 echo '<pre>' |
pankso@7 | 313 cat /usr/share/doc/pizza/README |
pankso@7 | 314 echo '</pre>' ;; |
pankso@7 | 315 *\ info\ *) |
pankso@7 | 316 # English only :-) |
pankso@7 | 317 if mount | fgrep -q slitaz/public; then |
pankso@7 | 318 mounted="Public is mounted" |
pankso@7 | 319 else |
paul@122 | 320 mounted="WARNING: Public is not mounted" |
pankso@7 | 321 fi |
al@108 | 322 echo '<h2><img src="images/monitor.png" alt="(i)" />Pizza Info</h2>' |
pankso@7 | 323 echo '<pre>' |
pankso@7 | 324 [ "$mounted" ] && echo "$mounted" |
pankso@7 | 325 echo -n "Public flavors : " && ls -1 public | wc -l |
pankso@7 | 326 echo -n "Public size : " && du -sh public | awk '{print $1}' |
pankso@7 | 327 echo -n "Tmp size : " && du -sh $tmpdir | awk '{print $1}' |
pankso@7 | 328 echo '</pre>' ;; |
pankso@16 | 329 *\ activity\ *) |
pankso@16 | 330 cat << EOT |
pankso@16 | 331 <h2><img src="images/monitor.png" alt="" />$(gettext "Activity")</h2> |
pankso@16 | 332 |
pankso@16 | 333 <pre> |
pankso@16 | 334 $(tac $activity | highlighter activity) |
pankso@16 | 335 </pre> |
pankso@16 | 336 |
pankso@16 | 337 EOT |
pankso@16 | 338 ;; |
pankso@7 | 339 *) |
pankso@7 | 340 # |
pankso@7 | 341 # Main page |
pankso@7 | 342 # |
pankso@7 | 343 inqueue=$(ls $queue | wc -l) |
pankso@7 | 344 builds=$(cat $builds) |
pankso@7 | 345 pubiso=$(ls -1 public | wc -l) |
pankso@7 | 346 [ "$builds" ] || builds=0 |
pankso@7 | 347 cat << EOT |
pankso@7 | 348 <h2>$(gettext "Welcome")</h2> |
pankso@16 | 349 <form method="get" action="./"> |
pankso@7 | 350 <p> |
al@108 | 351 $(gettext "SliTaz Pizza lets you create your own SliTaz ISO flavor \ |
al@108 | 352 online. The ISO image can be burnt on a cdrom or installed on USB media. \ |
al@108 | 353 Please read the SliTaz Pizza <a href=\"?help\">Help</a> before starting \ |
pankso@23 | 354 a new flavor.") |
pankso@7 | 355 </p> |
pankso@7 | 356 <pre> |
erjo@71 | 357 Flavors: $inqueue in queue - $builds builds - $pubiso <a href="/public">public</a> |
pankso@7 | 358 </pre> |
pankso@7 | 359 |
pankso@7 | 360 <div class="start"> |
al@108 | 361 <input type="submit" name="start" value="$(gettext 'Create a new flavor')"> |
pankso@7 | 362 </div> |
pankso@7 | 363 |
pankso@7 | 364 EOT |
al@108 | 365 echo "<h2>$(gettext 'Latest builds')</h2>" |
pankso@7 | 366 echo '<pre>' |
pankso@19 | 367 for flavor in $(ls -1t public | head -n 5) |
pankso@7 | 368 do |
pankso@7 | 369 if [ -f "public/$flavor/receipt" ]; then |
pankso@7 | 370 . ./public/$flavor/receipt |
pankso@7 | 371 [ -f "public/$flavor/$FLAVOR.iso" ] && \ |
pankso@7 | 372 cat << EOT |
pankso@17 | 373 $(get_gravatar $MAINTAINER 24) <a href="?id=$ID">$VERSION</a> : \ |
pankso@16 | 374 <a href="public/$flavor/$FLAVOR.iso">$FLAVOR.iso</a> ($ISO_SIZE) |
pankso@7 | 375 EOT |
pankso@7 | 376 fi |
pankso@7 | 377 done |
pankso@16 | 378 echo '</pre>' |
pankso@16 | 379 cat << EOT |
pankso@16 | 380 <h2>$(gettext "Activity")</h2> |
pankso@16 | 381 <pre> |
pankso@16 | 382 $(tac $activity | head -n 12 | highlighter activity) |
pankso@16 | 383 </pre> |
al@108 | 384 <input type="submit" name="activity" value="$(gettext 'More activity')"> |
pankso@16 | 385 </form> |
pankso@16 | 386 EOT |
pankso@16 | 387 ;; |
pankso@7 | 388 esac |
pankso@7 | 389 |
pankso@7 | 390 # HTML footer. |
pankso@7 | 391 cat lib/footer.html |
pankso@7 | 392 |
pankso@7 | 393 exit 0 |