network-check.sh
1 #!/bin/bash 2 3 ############## 4 # ASSERTIONS # 5 ############## 6 7 #check to see if the device is connected to the network 8 ip route get 1 2>/dev/null || exit 1 9 10 ############# 11 # VARIABLES # 12 ############# 13 14 ip_current=$(ip route get 1 | awk '{print $7}') 15 interface_current=$(ip route get 1 | awk '{print $5}') 16 network_current="$(ip route | grep $interface_current | grep -v default | awk '{print $1}')" 17 ronin_data_dir=$1 18 ronin_username=$2 19 20 ############# 21 # FUNCTIONS # 22 ############# 23 24 _backup_network_info(){ 25 echo -e "ip=${ip_current}\nnetwork=${network_current}\n" > "${ronin_data_dir}/ip.txt" 26 chown "${ronin_username}:${ronin_username}" "${ronin_data_dir}"/ip.txt 27 } 28 29 _set_uwf_rules() { 30 ufw allow from "${network_current}" to any port "80" >/dev/null 31 ufw allow from "${network_current}" to any port "22" >/dev/null 32 ufw allow from "${network_current}" to any port "50002" >/dev/null 33 ufw reload 34 } 35 36 ############### 37 # PREPARATION # 38 ############### 39 40 # First time run 41 if [ ! -f "${ronin_data_dir}"/ip.txt ]; then 42 _set_uwf_rules 43 _backup_network_info 44 exit 45 fi 46 47 # Failure state 48 if ! ufw status | head -n 1 | grep "Status: active" >/dev/null; then 49 echo "UFW found to be inactive!" 50 exit 1 51 fi 52 53 # Redundancy check 54 . "${ronin_data_dir}"/ip.txt 55 # shellcheck disable=SC2154 56 if [ "${network}" = "${network_current}" ]; then 57 echo "No changes found since last run." 58 exit 59 fi 60 61 ################# 62 # THE PROCEDURE # 63 ################# 64 65 # Uncomment if you want rules from previous network to be removed 66 #while ufw status | grep "${network}"; do 67 # ufw status numbered | grep "${network}" | head -n 1 | sed -E 's/\[\s*([0-9]+)\].*/\1/' | xargs -n 1 ufw --force delete 68 #done 69 _set_uwf_rules 70 71 # Saving the state is the last step on purpose, in case the procedure gets killed for whatever reason before every alteration is completed. 72 _backup_network_info 73 74 echo "Completed updating network settings"