... | ... |
@@ -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 |
+ |