-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
165 lines (123 loc) · 4.44 KB
/
install.sh
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#!/bin/bash
GIT_URL="https://github.com/ivancolomer/api-reac-android/"
NGROK_KEY=""
TELEGRAM_KEY=""
read -p "NGROK_KEY: " NGROK_KEY
read -p "TELEGRAM_KEY: " TELEGRAM_KEY
# Initialize sudo access
sudo -v
sudo adduser --disabled-password --gecos "Full name,Room number,Work phone,Home" reac
sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi reac
sudo usermod --password $(openssl passwd -1 SemesterProject) reac
sudo su - reac
cd $HOME
mkdir onboot
cd $HOME/onboot
curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt-get -qq update && sudo apt-get -yq upgrade && sudo apt-get -yq dist-upgrade
sudo apt-get install -yq curl wget git libunwind8 gettext apt-transport-https mariadb-server openssh-server ufw zip jq
sudo apt-get install -yq nodejs
sudo apt-get install -yq npm
sudo apt-get install -yq node-semver
sudo npm install -g localtunnel
sudo wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip
sudo unzip ngrok-stable-linux-arm.zip
sudo rm ngrok-stable-linux-arm.zip
sudo chmod +x ngrok
./ngrok authtoken $NGROK_KEY
sudo tee "/etc/sudoers.d/010_pi-nopasswd" > /dev/null 2>&1 << EOM
pi ALL=(ALL) PASSWD: ALL
reac ALL=(ALL) PASSWD: ALL
reac ALL=(ALL) NOPASSWD: /usr/local/bin/lt*
EOM
sudo ufw allow 22
sudo ufw allow 3000
sudo ufw allow 8080
sudo ufw allow 8081
sudo ufw allow 8082
sudo ufw allow 8083
sudo ufw allow 8084
sudo ufw allow 8085
sudo ufw allow 8086
sudo ufw allow 8087
sudo ufw allow 8088
sudo ufw allow 8089
sudo ufw allow 5800
sudo ufw allow 5900
sudo ufw allow ssh
sudo ufw enable
sudo ufw status
sudo ufw limit ssh/tcp
sudo tee /tmp/my_script.conf > /dev/null <<EOT
[Unit]
Description=My Script Service
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=reac
WorkingDirectory=/home/reac
ExecStart=/home/reac/onboot/startup.sh
[Install]
WantedBy=multi-user.target
EOT
sudo env SYSTEMD_EDITOR="cp /tmp/my_script.conf" systemctl edit --force --full my_script.service
sudo systemctl enable my_script.service
sudo systemctl start my_script.service
sudo tee startup.sh > /dev/null <<EOT
#!/bin/bash
#CONSTANT_VARIABLES
HOME_DIR="/home/reac/onboot/"
TELEGRAM_API_KEY="$TELEGRAM_KEY"
EOT
sudo tee -a startup.sh > /dev/null <<'EOF'
CLIENTS=("719697313")
CLIENTS_JOINED=""
prepare_clients () {
for client in "${CLIENTS[@]}"; do
CLIENTS_JOINED="${CLIENTS_JOINED}-c ${client} "
done
CLIENTS_JOINED="${CLIENTS_JOINED:0:-1}"
}
send_telegram () {
if [ ${#CLIENTS_JOINED} -eq 0 ]; then
prepare_clients
fi
"$HOME_DIR"telegram -M -t $TELEGRAM_API_KEY $CLIENTS_JOINED "$1"
}
send_telegram "*Machine rebooted!*"$'\n\n'"Getting new IP address..."
pkill ngrok
pkill node
nohup "$HOME_DIR"ngrok tcp 22 > /dev/null &
pid=$!
while true; do
url=$(curl http://localhost:4040/api/tunnels | jq ".tunnels[0].public_url")
[[ ${#url} -le 6 ]] || break
sleep 1
done
parsed_url="${url:7:-1}"
send_telegram "${parsed_url%:*}"
send_telegram "${parsed_url#*:}"
wait $pid
EOF
sudo chmod +x startup.sh
[ ! -d "$HOME/.ssh" ] && sudo mkdir $HOME/.ssh
sudo tee -a $HOME/.ssh/authorized_keys > /dev/null <<'EOF'
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDoP3NfahrHlFy8yiBbM4CHr+CsrdNDLM1SiGU4uGbe1Y1ICKEag128l0pJAPTwncVrIT2+AGQRZ/rGyw0xDC2SR4B5NMNydOcEHgmu98QtvgroRQOQYjybGo/2nPU6edTnvlgZdFGF/GQAD60CBKmPpRuaUd+mBiOaq3ZFdY3Ip4OX09zS7VgtZxny9WLCYpkkgbbyUW0XkpJChYilrPtm5nUvPIca6LFrOs/fXARjU6MT/pALRvGi8cJWqcm33kgkigjyRjqsWXB3NNWhMnyaoVLpBrZgIpCy3PRwLePlD+qnBf4Gdruzq7TS4ayhjEJY08t86yYOQoXkznj9qd7T reac@raspberrypi
EOF
wget https://raw.githubusercontent.com/ivancolomer/api-reac-android/master/telegram
sudo chmod +x telegram
wget https://raw.githubusercontent.com/ivancolomer/api-reac-android/master/sshd_config
wget https://raw.githubusercontent.com/ivancolomer/api-reac-android/master/database.sql
sudo mysql_secure_installation
echo "Please enter root user MySQL password!"
echo "Note: password will be hidden when typing"
echo -n Password:
read -s password
echo ""
sudo mysql -uroot -p${password} -e "CREATE DATABASE reac /*\!40100 DEFAULT CHARACTER SET utf8 */;"
sudo mysql -uroot -p${password} -e "CREATE USER reac_user@localhost IDENTIFIED BY 'SemesterProject';"
sudo mysql -uroot -p${password} -e "GRANT ALL PRIVILEGES ON reac.* TO 'reac_user'@'localhost';"
sudo mysql -uroot -p${password} -e "FLUSH PRIVILEGES;"
sudo mysql -uroot -p${password} reac < database.sql
echo "FINISHED, remember to copy /etc/ssh/sshd_config and mv the downloaded here to there"