From 7ca61f073f215214bcd997408a8a4b4b0c37705e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Wed, 18 Oct 2017 10:56:40 +0200 Subject: Add surf configuration --- local/bin/surf-menu | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 local/bin/surf-menu (limited to 'local') diff --git a/local/bin/surf-menu b/local/bin/surf-menu new file mode 100755 index 0000000..bd13e6b --- /dev/null +++ b/local/bin/surf-menu @@ -0,0 +1,43 @@ +#!/bin/sh +set -e + +BOOKMARDS=~/notes/bookmarks.md + +# Note: Bookmarks starts with '* ' +sed -n 's/\* //p' "$BOOKMARDS" | dmenu -p 'surf' | while read L; do + if echo "$L" | grep -qE '^\?'; then # We do search on duckduckgo + + surf "https://duckduckgo.com/?q=${L#?}&t=surf&kk=-1&ia=web" + + else # We follow address + + LPROTOCOL="$(echo "$L" | sed -n 's#^\([^:]*\)://.*#\1#p')" + LHOST="$(echo "$L" | sed -n 's#^[^:]*://##;s#^\([^/]\+\)/\?.*#\1#p')" + LPATH="$(echo "$L" | sed 's#^[^:]*://##;s#^[^/]\+/\?##')" + + # Try to lookup if it's an real address + # Note: This is hack because of youtube, nslookup return No answer but + # exists with 0. So I am checking if it returned more than one address + # (one address is for dns server). + if [ "$(nslookup "$LHOST" | grep 'Address:' | wc -l)" -le 1 ]; then # It's a real address + if nslookup "$LHOST.cz" >/dev/null; then # we can expand it with cz + LHOST="$LHOST.cz" + elif nslookup "$LHOST.com" >/dev/null; then # we can expand it with com + LHOST="$LHOST.com" + fi + # TODO what to do when we can't expand it? + fi + # Decide on protocol (if connection to 443 is not possible then use http otherwise https) + if [ -z "$LPROTOCOL" ]; then # We already have protocol (given explicitly) + if nc -z -w1 "$LHOST" 443 2>/dev/null; then + LPROTOCOL="https" + else + LPROTOCOL="http" + fi + fi + + surf "$LPROTOCOL://$LHOST/$LPATH" & # run backgrounded + + fi + +done -- cgit v1.2.3