summaryrefslogtreecommitdiffstats
path: root/shortdomains.sh
blob: 1c0e53d6f370737aeaad7813714513e0136c1d50 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/bash
if [[ $5 == true ]]; then
whoisdatadir="whoisdata"
mkdir -p $whoisdatadir
fi

trap ctrl_c INT

function ctrl_c() {
        echo -e "\e[91m---> Terminating ...\e[0m"
        exit
}

#LOOK FOR WHOIS COMMAND
if ! whois_loc="$(type -p "whois")" || [ -z "$whois_loc" ]; then
  echo "\e[31m---> Whois is missing, trying to install it with APT.
  \e[31m---> You need sudo and APT.\e[0m"
  sudo apt-get install whois
fi

if [ -n "$1" ] ; then
	# .si domain: slovenia cctld, arnes registry, 100 queries per hour or ban
	# .no domain: norwegian, uninett norid registry, 3000 queries per day wait till midnight
	# .de domain: germany, no data of registry, 1000 queries per day or ban
	# .it domain: italy, no data of registry, no data of requests per time amount
	oneltr=(0 0 1 0 0 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 0 1)
	tlds=(si no de it ru co uk me us ca pw fr cc cn be nl tn eu su cz dk ro lt at se hu nu)
	availables=('No entries found' 'No whois information found' 'Status: free' 'Status:             AVAILABLE' 'No entries found for the selected source' 'No Data Found' 'No whois information found.' 'NOT FOUND' 'No Data Found' 'Not found' 'DOMAIN NOT FOUND' 'No entries found' 'No whois information found.' 'No whois information found.' 'Status: AVAILABLE' '.nl is free' 'NO OBJECT FOUND!' 'Status: AVAILABLE' 'No entries found for the selected source(s).' '%ERROR:101: no entries found' 'Not found:' 'No entries found for the selected source(s).' 'Status:     available' 'nothing found' ' not found.' 'No match' 'not found')
	denieds=('Query denied' 'limit exceeded' '55000000002' 'denied', 'You have exceeded allowed connection rate' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'denied' 'You have exceeded allowed connection rate' 'denied' 'denied' 'denied' 'denied' 'Quota exceeded' 'denied' 'denied' 'denied') # ne vem za: it co me us ca pw fr cc cn be nl tn eu cz dk ro lt se hu nu
	sleeps=(36 29 87 87 2 87 87 87 87 87 60 87 87 87 87 173 173 1 2 173 87 173 1 87 1 87 1) # idk about: me it uk us ca fr cc cn be tn cz dk at hu
	# add your domains, you get the point
	spanje=${sleeps[0]} # max sleep of sleeps will be the sleep (-;
if [[ $1 == 'all' ]]; then
        for n in "${sleeps[@]}" ; do
	        ((n > spanje)) && spanje=$n
        done
	# everything is already set!
else

                for i in "${!tlds[@]}"; do
                        if [[ "${tlds[$i]}" = "$1" ]]; then
                                index=$i;
                        fi
                done



     if [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ] ; then
	if [ -z $index ] ; then
		echo -e "\e[91m$---> Terminating: no whois response values stored for this domain. Input them as arguments.\e[0m"
              	exit
	fi
     fi
	if [ ${#2} -ge 1 ] ; then
		availables=$2
	else
		availables=${availables[$index]}
		echo $availables
	fi

	if [ ${#3} -ge 1 ] ; then
		denieds=$3
	else
		denieds=${denieds[${index}]}
	fi

	if [ ${#4} -ge 1 ] ; then
		spanje=$4
	else
		spanje=${sleeps[$index]}
	fi
	tlds=($1)
fi

  ok=true
  if [ -n "$7" ] ; then
    list=`cat $7`
  else
		if [[ $8 == true ]]; then
	    list=`echo {{a..z},{0..9}}`
			newtlds=()
			tldcount=${#tlds[@]}
			for (( iter=0; iter<$tldcount; iter++));
			do
				if [[ ${oneltr[iter]} == 1 ]]; then
					newtlds+=(${tlds[iter]})
					newavailables+=(${availables[iter]})
					newdenieds+=(${denieds[iter]})
				fi
			done
			tlds=("${newtlds[@]}")
			availables=("${newavailables[@]}")
			denieds=("${newdenieds[@]}")
		else
  	  list=`echo {{a..z},{0..9}}{{a..z},{0..9}}`
		fi
  fi
else
  echo -e "\e[93m"'  /----------------------> Short domain finder Beta <-----------------------\'
  echo -e "\e[93m"' /------------------> 2019 Anton Sijanec, github/AstiriL <-------------------\'
  echo -e "\e[93m"'/--------> Checks all short domain names for availability using WhoIs <-------\'
  echo -e "\e[93m"'\---> Usage: ./shortdomains.sh <TLD|all> [notfound-str] [querydenied-str] <---/'
  echo -e "\e[93m"' \---> [delayseconds-int] [save-whois-bool] [show-whois-bool] [list-path] <--/'
  echo -e "\e[93m"'  \-----------------> [search-one-letter-domains-bool=false] <--------------/'
  echo -e "\e[93m"'   \--------> Sends out a sound alert when a free domain is found <--------/'"\e[0m"
fi


if [ $ok ] ; then
	tldcount=${#tlds[@]}
	for (( i=0; i<$tldcount; i++ ));
	do
		mv freedomains.${tlds[$i]} freedomains.${tlds[$i]}.old > /dev/null &> /dev/null
		echo "---> moved freedomains.${tlds[$i]} to freedomains.${tlds[$i]}.old"
	done
	echo "---> Starting... Delay: "$spanje s", TLDs: "$tldcount"."
	for domain in $list # do for every 2 character possibility
	do
		sleep $spanje
		for (( i=0; i<$tldcount; i++ )); # do for every tld
		do
			VAL=`whois $domain.${tlds[$i]}`
			while [[ $VAL == *${denieds[$i]}* ]]
			do
				echo -e "\e[95m$domain.${tlds[$i]} DENIED\e[0m"
				if [[ $5 == true ]]; then
					echo $VAL > "$whoisdatadir/$domain.${tlds[$i]}"
				fi
				sleep $spanje
				VAL=`whois $domain.${tlds[$i]}`
			done
			if [[ $5 == true ]]; then
				echo $VAL > "$whoisdatadir/$domain.${tlds[$i]}"
			fi
			if [[ $6 == true ]]; then
				echo $VAL
			fi
			if [[ $VAL == *${availables[$i]}* ]]
			then
				echo -e "\e[92m$domain.${tlds[$i]} FREE\e[0m\007"
				echo "$domain.${tlds[$i]}" >> freedomains.${tlds[$i]}
			else
				echo -e "\e[91m$domain.${tlds[$i]} TAKEN\e[0m"
			fi
		done
	done
	echo -e "\e[39m"
fi