# HG changeset patch # User Aleksej Bobylev # Date 1440965044 -10800 # Node ID 34508d2309a6becf533b5c1eb0d63b70b1d8db37 # Parent a53b0b636b9890502239c04b3264d2cbf307e03c hosts.cgi: move state files (again) to /var/lib (previous /var/run is tmpfs); show diff after list update diff -r a53b0b636b98 -r 34508d2309a6 hosts.cgi --- a/hosts.cgi Sun Aug 30 18:52:48 2015 +0200 +++ b/hosts.cgi Sun Aug 30 23:04:04 2015 +0300 @@ -26,7 +26,7 @@ # now hosts='host1 host2 ... hostn' # Folder to save downloaded and installed hosts lists -HOSTSDIR='/var/run/tazpanel/hosts' +HOSTSDIR='/var/lib/tazpanel/hosts' mkdir -p "$HOSTSDIR" @@ -70,7 +70,7 @@ awk -vl="$list" '$1=="0.0.0.0"||$1=="127.0.0.1"{printf "0.0.0.0 %s #%s\n", $2, l}' "$file" | fgrep -v localhost >> /etc/hosts # Clean the list echo -n > "$file" - touch "$file.up" + touch "$file.checked" # Remove the duplicate entries hostsnew=$(mktemp) @@ -90,7 +90,7 @@ # Input: list=code letter sed -i "/#$list$/d" /etc/hosts file="$HOSTSDIR/$list" - rm "$file" "$file.up" "$file.avail" + rm "$file" "$file.checked" "$file.avail" } @@ -130,6 +130,8 @@ echo "

$(_ 'Installing the "%s"...' "$name") " instlist echo "$(_ 'Done')

" + # Don't show diff because it's huge + rm "$HOSTSDIR/diff" ;; *\ uplist\ *) @@ -138,8 +140,30 @@ list="$(GET uplist)" getlistspec "$list" echo "

$(_ 'Updating the "%s"...' "$name") " + + old_sublist=$(mktemp) + # Note, old sublist already sorted. Only hostnames here + awk -vlist="#$list" '$3 == list {print $2}' /etc/hosts > "$old_sublist" + remlist; instlist + + new_sublist=$(mktemp) + awk -vlist="#$list" '$3 == list {print $2}' /etc/hosts > "$new_sublist" + + # The diff: just '+' and '-', no header, no context + diff -dU0 "$old_sublist" "$new_sublist" | sed '1,2d;/^@/d' > "$HOSTSDIR/diff" + echo "$(_ 'Done')

" + + # Show diff + if [ -s "$HOSTSDIR/diff" ]; then + echo '
'
+			cat "$HOSTSDIR/diff" | syntax_highlighter diff
+			echo '
' + fi + + # Clean + rm "$old_sublist" "$new_sublist" "$HOSTSDIR/diff" ;; *\ remlist\ *) @@ -247,9 +271,9 @@ [ ! -f "$HOSTSDIR/$letter" ] && touch "$HOSTSDIR/$letter" # Check for upgrades (once a day) - if [ -f "$HOSTSDIR/$letter.up" ]; then + if [ -f "$HOSTSDIR/$letter.checked" ]; then # Update checked previously - if [ "$(($(date -u +%s) - 86400))" -gt "$(date -ur "$HOSTSDIR/$letter.up" +%s)" ]; then + if [ "$(($(date -u +%s) - 86400))" -gt "$(date -ur "$HOSTSDIR/$letter.checked" +%s)" ]; then # Update checked more than one day (86400 seconds) ago check='yes' else @@ -271,7 +295,7 @@ # Update not available rm "$HOSTSDIR/$letter.avail" 2>/dev/null fi - touch "$HOSTSDIR/$letter.up" + touch "$HOSTSDIR/$letter.checked" fi if [ -f "$HOSTSDIR/$letter.avail" ]; then