# HG changeset patch # User Christophe Lincoln # Date 1489143198 -3600 # Node ID f6f730c0635d039a57e5f005bba72d1d341a16ab # Parent f9c2b5aeacbd77721c08ec2812631028d75b57c8 New way to handle bookmarks (more secure and integrated cmdline functions diff -r f9c2b5aeacbd -r f6f730c0635d .hgignore --- a/.hgignore Sun Feb 19 18:34:15 2017 +0000 +++ b/.hgignore Fri Mar 10 11:53:18 2017 +0100 @@ -1,1 +1,2 @@ -tazweb +tazweb$ +po/mo diff -r f9c2b5aeacbd -r f6f730c0635d Makefile --- a/Makefile Sun Feb 19 18:34:15 2017 +0000 +++ b/Makefile Fri Mar 10 11:53:18 2017 +0100 @@ -49,11 +49,11 @@ $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32/apps \ $(DESTDIR)$(PREFIX)/share/applications install -m 0755 $(PACKAGE) $(DESTDIR)$(PREFIX)/bin + install -m 0755 $(PACKAGE)-helper $(DESTDIR)$(PREFIX)/bin cp -d doc/* $(DESTDIR)$(DOCDIR)/$(PACKAGE) install -m 0644 data/tazweb.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32/apps install -m 0644 data/tazweb.desktop $(DESTDIR)$(PREFIX)/share/applications install -m 0644 data/bookmarks.txt $(DESTDIR)$(PREFIX)/share/tazweb - install -m 0755 data/bookmarks.cgi $(DESTDIR)/var/www/cgi-bin mkdir -p $(DESTDIR)$(PREFIX)/share/locale cp -a po/mo/* $(DESTDIR)$(PREFIX)/share/locale diff -r f9c2b5aeacbd -r f6f730c0635d data/bookmarks.cgi --- a/data/bookmarks.cgi Sun Feb 19 18:34:15 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -#!/bin/sh -# -# TazWeb Bookmarks CGI handler -# Copyright (C) 2014 SliTaz GNU/Linux - BSD License -# -. /usr/lib/slitaz/httphelper.sh - -script="$SCRIPT_NAME" -home="$(GET home)" -user="$(basename $home)" -config="/home/$user/.config/tazweb" -bookmarks="$config/bookmarks.txt" - -# Security check -case $REMOTE_ADDR in - 127.0.0.1|\[::ffff:127.0.0.1\]) ;; - *) header; echo "Security exit! Your IP: $REMOTE_ADDR"; exit 1 -esac - -# HTML 5 header with built-in minimal CSS -html_header() { - cat << EOT - - - - - TazWeb - Bookmarks - - - -
- -EOT -} - -# HTML 5 footer -html_footer() { - cat << EOT - -
- - - - - -EOT -} - -# Handle GET actions: continue or exit - -case " $(GET) " in - - *\ edit\ *) - header - html_header - cat << EOT -

Bookmarks Edit

-
- - - -

-
-EOT - html_footer && exit 0 ;; - - *\ save\ *) - sed "s/$(echo -en '\r') /\n/g" > ${bookmarks} << EOT -$(GET content) -EOT - ;; - - *\ raw\ *) - # View bookmarks file - header - html_header - echo '

Raw Bookmarks

' - echo "
"
-		IFS="|"
-		cat ${bookmarks} | cat ${bookmarks} | while read title url null
-		do
-			echo "$title | $url"
-		done
-		unset IFS
-		echo "
" - html_footer && exit 0 ;; - - *\ rm\ *) - # Remove a bookmark item and continue - url=$(GET rm) - [ "$url" ] || continue - sed -i s"#.*${url}.*##" ${bookmarks} - sed -i "/^$/"d ${bookmarks} ;; - -esac - -# Show all bookmarks -header -html_header -echo '

TazWeb Bookmarks

' -echo '' -html_footer - -exit 0 diff -r f9c2b5aeacbd -r f6f730c0635d src/main.c --- a/src/main.c Sun Feb 19 18:34:15 2017 +0000 +++ b/src/main.c Fri Mar 10 11:53:18 2017 +0100 @@ -19,7 +19,7 @@ #define HOME g_get_home_dir() #define CONFIG g_strdup_printf("%s/.config/tazweb", HOME) #define BMTXT g_strdup_printf("%s/bookmarks.txt", CONFIG) -#define BMURL "http://localhost/cgi-bin/bookmarks.cgi" +#define BMURL g_strdup_printf("%s/bookmarks.html", CONFIG) #define WEBHOME "file:///usr/share/webhome/index.html" #define SEARCH "http://duckduckgo.com/?q=%s&t=slitaz" @@ -154,7 +154,8 @@ static void go_bookmarks_cb(GtkWidget* widget, WebKitWebView* webview) { - uri = g_strdup_printf("%s?home=%s", BMURL, HOME); + system("tazweb-helper html_bookmarks"); + uri = g_strdup_printf("file://%s", BMURL); g_assert(uri); webkit_web_view_load_uri(webview, uri); } @@ -523,8 +524,8 @@ /* Get a default bookmarks.txt if missing */ if (! g_file_test(BMTXT, G_FILE_TEST_EXISTS)) { - system("install -m 0777 -d $HOME/.config/tazweb"); - system("install -m 0666 /usr/share/tazweb/bookmarks.txt \ + system("install -m 0700 -d $HOME/.config/tazweb"); + system("install -m 0600 /usr/share/tazweb/bookmarks.txt \ $HOME/.config/tazweb/bookmarks.txt"); } diff -r f9c2b5aeacbd -r f6f730c0635d tazweb-helper --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tazweb-helper Fri Mar 10 11:53:18 2017 +0100 @@ -0,0 +1,92 @@ +#!/bin/sh +# +# TazWeb Helper - Handle bookmarks (no libtaz, usable on any Linux distro) +# + +tazweb="$(pwd)/tazweb" +config="$HOME/.config/tazweb" +bm_txt="$config/bookmarks.txt" +bm_html="$config/bookmarks.html" + +help() { + cat << EOT + +$(gettext "Usage:") $(basename $0) [bookmarks] --option + +$(gettext "Options:") + --raw Show raw bookmarks.txt + +EOT +} + +# HTML 5 header with built-in minimal CSS +html_header() { + cat << EOT + + + + + TazWeb - Bookmarks + + + +
+

TazWeb Bookmarks

+
    +EOT +} + +# HTML 5 footer +html_footer() { + cat << EOT +
+
+
+ $(cat $bm_txt | wc -l) $(gettext "bookmarks") +
+ + +EOT +} + +# Generate bookmarks.html +html_bookmarks() { + html_header > ${bm_html} + IFS="|" + cat ${bm_txt} | while read title url null + do + cat >> ${bm_html} << EOT +
  • ${title}
  • +EOT + done + unset IFS + html_footer >> ${bm_html} + # Security fix from old cgi-bin bookmarks.cgi + chmod 0600 ${USER}.${USER} ${bm_txt} +} + +# +# Commands +# +case "$1" in + + -b|bookmarks) + if [ "$raw" ]; then + ${tazweb} file:///${config}/bookmarks.txt & + else + html_bookmarks + ${tazweb} file:///${config}/bookmarks.html & + fi ;; + + *_*) ${1} ;; + + *|-h|help) help ;; + +esac; exit 0