| ... | ... |
@@ -0,0 +1,118 @@ |
| 1 |
+#!/bin/bash |
|
| 2 |
+ |
|
| 3 |
+# Temporary files |
|
| 4 |
+BASE=$(basename $0 .sh) |
|
| 5 |
+TEMPHTML="$BASE.html" |
|
| 6 |
+TEMPTXT="$BASE.txt" |
|
| 7 |
+TEMPJSON="$BASE.json" |
|
| 8 |
+TEMPCOOKIE="$BASE.cookie" |
|
| 9 |
+TEMPCSV="$BASE.csv" |
|
| 10 |
+RCFILE="$HOME/.$BASE""rc" |
|
| 11 |
+LOG_ENABLED=1 |
|
| 12 |
+LOGFILE="$PWD/$BASE.log" |
|
| 13 |
+ |
|
| 14 |
+# Colors in scripts |
|
| 15 |
+GREEN="\\033[1;32m" |
|
| 16 |
+RED="\\033[1;31m" |
|
| 17 |
+MAGENTA="\\033[1;35m" |
|
| 18 |
+BLUE="\\033[1;34m" |
|
| 19 |
+WHITE="\\033[0;02m" |
|
| 20 |
+LIGHTGREY="\\033[1;08m" |
|
| 21 |
+YELLOW="\\033[1;33m" |
|
| 22 |
+CYAN="\\033[1;36m" |
|
| 23 |
+NORMAL="\\033[0;39m" |
|
| 24 |
+ |
|
| 25 |
+function log() {
|
|
| 26 |
+ if [ 1 -eq $LOG_ENABLED ] |
|
| 27 |
+ then |
|
| 28 |
+ DATELOG=$(date) |
|
| 29 |
+ echo -e "$@" |
|
| 30 |
+ echo -e "$DATELOG $(hostname) $(basename $0): $@" >> $LOGFILE |
|
| 31 |
+ fi |
|
| 32 |
+} |
|
| 33 |
+ |
|
| 34 |
+# Die |
|
| 35 |
+function die() |
|
| 36 |
+{
|
|
| 37 |
+ RETCODE=$1 |
|
| 38 |
+ if [ "" == "$1" ] |
|
| 39 |
+ then |
|
| 40 |
+ RETCODE=255 |
|
| 41 |
+ fi |
|
| 42 |
+ echo " FAILED" |
|
| 43 |
+ exit $RETCODE |
|
| 44 |
+} |
|
| 45 |
+ |
|
| 46 |
+# Minimal RC management |
|
| 47 |
+function readrc() |
|
| 48 |
+{
|
|
| 49 |
+ echo "+- Reading credentials from $RCFILE" |
|
| 50 |
+ USER=$(grep "user=" $RCFILE | awk -F'=' '{print $2}')
|
|
| 51 |
+ PASSWD=$(grep "password=" $RCFILE | awk -F'=' '{print $2}')
|
|
| 52 |
+} |
|
| 53 |
+ |
|
| 54 |
+# Clean Exit |
|
| 55 |
+function clean_temp_files() |
|
| 56 |
+{
|
|
| 57 |
+ log "Exiting." |
|
| 58 |
+ rm -f $TEMPHTML $TEMPJSON $TEMPCOOKIE $TEMPCSV |
|
| 59 |
+} |
|
| 60 |
+ |
|
| 61 |
+ |
|
| 62 |
+urldecode() {
|
|
| 63 |
+ # urldecode <string> |
|
| 64 |
+ |
|
| 65 |
+ local url_encoded="${1//+/ }"
|
|
| 66 |
+ printf '%b' "${url_encoded//%/\\x}"
|
|
| 67 |
+} |
|
| 68 |
+urlencode() {
|
|
| 69 |
+ local string="${1}"
|
|
| 70 |
+ local strlen=${#string}
|
|
| 71 |
+ local encoded="" |
|
| 72 |
+ local pos c o |
|
| 73 |
+ |
|
| 74 |
+ for (( pos=0 ; pos<strlen ; pos++ )); do |
|
| 75 |
+ c=${string:$pos:1}
|
|
| 76 |
+ case "$c" in |
|
| 77 |
+ [-_.~a-zA-Z0-9] ) o="${c}" ;;
|
|
| 78 |
+ * ) printf -v o '%%%02x' "'$c" |
|
| 79 |
+ esac |
|
| 80 |
+ encoded+="${o}"
|
|
| 81 |
+ done |
|
| 82 |
+ echo "${encoded}" # You can either set a return variable (FASTER)
|
|
| 83 |
+ REPLY="${encoded}" #+or echo the result (EASIER)... or both... :p
|
|
| 84 |
+} |
|
| 85 |
+ |
|
| 86 |
+:> $LOGFILE |
|
| 87 |
+trap clean_temp_files EXIT |
|
| 88 |
+ |
|
| 89 |
+if [ ! -e $RCFILE ] |
|
| 90 |
+then |
|
| 91 |
+ echo "+- Credentials file does not exist" |
|
| 92 |
+ read -e -p " +- Username : " TEMP |
|
| 93 |
+ USER=$TEMP |
|
| 94 |
+ TEMP="" |
|
| 95 |
+ read -e -s -p " +- Password : " TEMP |
|
| 96 |
+ PASSWD=$TEMP |
|
| 97 |
+ |
|
| 98 |
+ # Make the file unreadable by others *BEFORE* putting password. |
|
| 99 |
+ touch $RCFILE |
|
| 100 |
+ chmod go-r $RCFILE |
|
| 101 |
+ |
|
| 102 |
+ echo "user=$USER">$RCFILE |
|
| 103 |
+ echo "password=$PASSWD" >> $RCFILE |
|
| 104 |
+ echo "" |
|
| 105 |
+else |
|
| 106 |
+ readrc |
|
| 107 |
+fi |
|
| 108 |
+``` |
|
| 109 |
+ |
|
| 110 |
+ |
|
| 111 |
+DATE_START_ALL=$(date +%s) |
|
| 112 |
+log "############################################################" |
|
| 113 |
+log "Started @ $DATE_START_ALL" |
|
| 114 |
+``` |
|
| 115 |
+ |
|
| 116 |
+echo http://url/q?=$(rawurlencode "$args") |
|
| 117 |
+ |
|
| 118 |
+ |