summaryrefslogtreecommitdiffstats
path: root/shortdomains.sh
blob: 0a5764689de2e080d8bba23e89b8ecf0f8d1ff73 (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
#!/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
        tlds=(si no de it ru)
        availables=('No entries found' 'No whois information found' 'Status: free' 'Status:             AVAILABLE', 'No entries found for the selected source')
        denieds=('Query denied' 'limit exceeded' '55000000002' 'denied', 'You have exceeded allowed connection rate') ## idk about .it
        sleeps=(36 29 87 87 2) # delay between requests in seconds to prevent ban
        # 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 [ -n "$2" ] ; then
                availables=($2)
        else
                availables=(${availables[$index]})
        fi

        if [ -n "$3" ] ; then
                denieds=($3)
        else
                denieds=(${denieds[${index}]})
        fi

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

  ok=true
  if [ -n "$7" ] ; then
    list=`cat $7`
  else
    list=`echo {{a..z},{0..9}}{{a..z},{0..9}}`
  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"'  \---------> Sends out a sound alert when a free domain is found <---------/'"\e[0m"
fi


if [ $ok ] ; then
        tldcount=${#tlds[@]}
echo "---> Starting... Delay: "$spanje", 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"
       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