Subversion Repositories ALCASAR

Rev

Details | Last modification | View Log

Rev Author Line No. Line
3216 rexy 1
#!/bin/bash
2
 
3
#######################################
4
## Update script for Tor entry point ##
5
##      By Sylvain Harand & Rexy     ##
6
##                                   ##
7
#######################################
8
 
9
# Note: The dan.me site only allow to fetch one every 15 minutes by IP adresses.
10
# Trying to fetch more may result in a definitive ban.
11
 
12
# File paths
13
input_file='TorNodesTmp.txt'
14
output_file_IPV4='TorNodesIPV4.txt'
15
output_file_IPV6='TorNodesIPV6.txt'
16
 
17
# Récupération de la liste des noeuds TOR et stockage dans le fichier temporaire depuis le site dan.me
18
curl https://www.dan.me.uk/tornodes > $input_file
19
 
20
# extraction des données situées entre les balises spécifiques
21
tor_nodes=$(sed -n '/<!-- __BEGIN_TOR_NODE_LIST__ \/\/-->/, /<!-- __END_TOR_NODE_LIST__ \/\/-->/p' "$input_file" | sed '1d;$d')
22
 
23
# RAZ des fichiers de sortie
24
> "$output_file_IPV4"
25
> "$output_file_IPV6"
26
 
27
# IPV4 Ptn
28
PTN='^\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\)$'
29
 
30
# Pour chaque ligne de la variable temporaire
31
echo "$tor_nodes" | while IFS= read -r line; do
32
    # Suppression des balises HTML
33
    clean_line=$(echo "$line" | sed -e 's/<br>//g')
34
    # Extraction du 5e champ pour vérifier s'il contient "G" (Tag pour noeud de Garde (entrée)
35
    fifth_field=$(echo "$clean_line" | cut -d '|' -f 5)
36
     if [[ "$fifth_field" == *"G"* ]]; then
37
        # Extraction de l'@IP (1er champ)
38
        ip_address=$(echo "$clean_line" | cut -d '|' -f 1)
39
        # Aihuillage en fonction du type @IP
40
        if [[ $(expr "$ip_address" : "$PTN") -gt 0 ]]
41
            then echo "$ip_address" >> "$output_file_IPV4"
42
            else echo "$ip_address" >> "$output_file_IPV6"
43
        fi
44
        echo -n "#"
45
    fi
46
done
47
echo
48
echo -n "Removing duplicate IPV4 entries - Please wait..."
49
uniq "$output_file_IPV4" > "$input_file"; cat "$input_file" > "$output_file_IPV4"
50
echo "Nb_IP_V4 = `wc -l $output_file_IPV4`"
51
echo -n "Removing duplicate IPV6 entries - Please wait..."
52
uniq "$output_file_IPV6" > "$input_file"; cat "$input_file" > "$output_file_IPV6"
53
echo "Nb_IP_V6 = `wc -l $output_file_IPV6`"
54
rm "$input_file"