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