tazweb annotate data/bookmarks.cgi @ rev 149

Fix user bookmarks on first run
author Christophe Lincoln <pankso@slitaz.org>
date Sun Apr 13 02:30:09 2014 +0200 (2014-04-13)
parents c2ec2ff2e813
children e40064ab71b4
rev   line source
pankso@141 1 #!/bin/sh
pankso@141 2 #
pankso@141 3 # TazWeb Bookmarks CGI handler
pankso@141 4 # Copyright (C) 2014 SliTaz GNU/Linux - BSD License
pankso@141 5 #
pankso@141 6 . /usr/lib/slitaz/httphelper.sh
pankso@141 7
pankso@141 8 script="$SCRIPT_NAME"
pankso@141 9 home="$(GET home)"
pankso@141 10 user="$(basename $home)"
pankso@141 11 config="/home/$user/.config/tazweb"
pankso@141 12 bookmarks="$config/bookmarks.txt"
pankso@141 13
pankso@141 14 # Security check
pankso@141 15 if [ "$REMOTE_ADDR" != "127.0.0.1" ]; then
pankso@141 16 echo "Security exit" && exit 1
pankso@141 17 fi
pankso@141 18
pankso@141 19 # HTML 5 header with built-in minimal CSS
pankso@141 20 html_header() {
pankso@141 21 cat << EOT
pankso@141 22 <!DOCTYPE html>
pankso@141 23 <html lang="en">
pankso@141 24 <head>
pankso@141 25 <meta charset="utf-8" />
pankso@141 26 <title>TazWeb - Bookmarks</title>
pankso@141 27 <style type="text/css">
pankso@141 28 body { margin: 2% 10%; } .rm { color: #666; } ul { padding: 0; }
pankso@141 29 .rm:hover { text-decoration: none; color: #B70000; }
pankso@141 30 h1 { color: #666; border-bottom: 4px solid #666; }
pankso@141 31 a { text-decoration: none; } a:hover { text-decoration: underline; }
pankso@141 32 li { list-style-type: none; color: #666; line-height: 1.4em; padding: 0; }
pankso@141 33 footer { font-size: 80%; border-top: 2px solid #666; padding: 5px 0; }
pankso@149 34 textarea { width: 100%; height: 240px; font-size: 98%; }
pankso@141 35 </style>
pankso@141 36 </head>
pankso@141 37 <body>
pankso@141 38 <section id="content">
pankso@141 39
pankso@141 40 EOT
pankso@141 41 }
pankso@141 42
pankso@141 43 # HTML 5 footer
pankso@141 44 html_footer() {
pankso@141 45 cat << EOT
pankso@141 46
pankso@141 47 </section>
pankso@141 48
pankso@141 49 <footer>
pankso@149 50 <a href="$script?home=$home">Bookmarks</a>
pankso@149 51 - <a href="$script?raw&amp;home=$home">Raw</a>
pankso@149 52 - <a href="$script?edit&amp;home=$home">Edit</a>
pankso@141 53 </footer>
pankso@141 54
pankso@141 55 </body>
pankso@141 56 </html>
pankso@141 57 EOT
pankso@141 58 }
pankso@141 59
pankso@141 60 # Handle GET actions: continue or exit
pankso@141 61
pankso@141 62 case " $(GET) " in
pankso@149 63
pankso@149 64 *\ edit\ *)
pankso@149 65 header
pankso@149 66 html_header
pankso@149 67 cat << EOT
pankso@149 68 <h1>Bookmarks Edit</h1>
pankso@149 69 <form method="get" action="$script" name="edit">
pankso@149 70 <input type="hidden" name="save" />
pankso@149 71 <input type="hidden" name="home" value="$home" />
pankso@149 72 <textarea name="content">$(cat "$bookmarks")</textarea>
pankso@149 73 <p><input type="submit" value="$(gettext "Save bookmarks")" /></p>
pankso@149 74 </form>
pankso@149 75 EOT
pankso@149 76 html_footer && exit 0 ;;
pankso@149 77
pankso@149 78 *\ save\ *)
pankso@149 79 sed "s/$(echo -en '\r') /\n/g" > ${bookmarks} << EOT
pankso@149 80 $(GET content)
pankso@149 81 EOT
pankso@149 82 ;;
pankso@149 83
pankso@141 84 *\ raw\ *)
pankso@141 85 # View bookmarks file
pankso@141 86 header
pankso@141 87 html_header
pankso@149 88 echo '<h1>Raw Bookmarks</h1>'
pankso@149 89 echo "<pre>"
pankso@149 90 IFS="|"
pankso@149 91 cat ${bookmarks} | cat ${bookmarks} | while read title url null
pankso@149 92 do
pankso@149 93 echo "$title | <a href='$url'>$url</a>"
pankso@149 94 done
pankso@149 95 unset IFS
pankso@141 96 echo "</pre>"
pankso@141 97 html_footer && exit 0 ;;
pankso@149 98
pankso@141 99 *\ rm\ *)
paul@144 100 # Remove a bookmark item and continue
pankso@141 101 url=$(GET rm)
pankso@141 102 [ "$url" ] || continue
pankso@141 103 sed -i s"#.*${url}.*##" ${bookmarks}
pankso@141 104 sed -i "/^$/"d ${bookmarks} ;;
pankso@149 105
pankso@141 106 esac
pankso@141 107
pankso@141 108 # Show all bookmarks
pankso@141 109 header
pankso@141 110 html_header
pankso@141 111 echo '<h1>TazWeb Bookmarks</h1>'
pankso@141 112 echo '<ul>'
pankso@141 113 IFS="|"
pankso@141 114 cat ${bookmarks} | while read title url null
pankso@141 115 do
pankso@141 116 cat << EOT
pankso@141 117 <li><a class="rm" href="?rm=$url&amp;home=$home">&otimes;<a/>
pankso@141 118 <a href="${url}">${title}<a/></li>
pankso@141 119 EOT
pankso@141 120 done
pankso@141 121 unset IFS
pankso@141 122 echo '</ul>'
pankso@141 123 html_footer
pankso@141 124
pankso@141 125 exit 0