forked from captainpotat0/Goliad
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlinux_goliad.sh
executable file
·349 lines (278 loc) · 12.5 KB
/
linux_goliad.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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
#! /bin/bash
# ---------------------------------------------------------------------------------------------
# Goliad OpenVPN Client
# Creation Date: 08/08/2021
#
# Description: OpenVPN client that pulls the most available and trust .ovpn configurations
# The configurations are pulled from vpngate.com mirrors that are updated daily
# The .ovpn configurations are pulled from vpngate.com mirrors as to not cause disturbance to
# vpngate's main servers meant for general single use connections
# I actually am not sure if the mirrors are supposed to be used this way, but...it seems like a more respectful way to go.
#
# Author: Jonathan Scott
#
# ---------------------------------------------------------------------------------------------
# Dependencies List
# ---------------------------------------------------------------------------------------------
# Openvpn
# Peco
#
# MacOS
# Make sure you have Homebrew installed first
# 1. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. brew install openvpn
# 3. brew install peco
# Linux
# Option 1: brew install openvpn (if you have Homebrew installed)
#
# Option 2: sudo apt install openvpn
#
# Option 3: sudo yum install -y openvpn
#
# Peco
# MacOS
# brew install peco
#
# Linux
# Option 1: brew install peco (if you have Homebrew installed)
# Option 2: sudo apt install peco
# Option 3: go get github.com/peco/peco/cmd/peco
# ---------------------------------------------------------------------------------------------
# ADDING SOME COLOR & EASY FORMATTING TO THE TERMINAL OUTPUT
# ---------------------------------------------------------------------------------------------
RED='\033[0;31m'
PURPLE='\033[0;35m'
YELLOW='\033[1;33m'
ORANGE='\033[0;33m'
CYAN='\033[1;36m'
NC='\033[0m' # No Color
# FUNCTION TO ADD 1 BLANK ROW JUST BY TYPING space
space(){
echo ""
}
# FUNCTION TO ADD 2 BLANK ROWS JUST BY TYPING double_space
double_space(){
echo ""
echo ""
}
# ---------------------------------------------------------------------------------------------
# PERSISTENT VARIABLES - DO NOT REMOVE!!!
# ---------------------------------------------------------------------------------------------
DIR="$(dirname "$(which "$0")")"
time_date=$(date +'%a-%h-%d-%Y-%I_%M_%S-%Z')
# This will allow ctrl c to end the specific option number
# without having to restart the full app
# trap ctrl-c and call ctrl_c()
trap ctrl_c INT
function ctrl_c() {
echo
echo "Ctrl-C Ended the Application"
# do the jobs
exit
}
pause(){
read -p "The selected process has completed. Press The 'Enter' Key, and select an option." fackEnterKey
}
double_space
zero="DOWNLOAD NEW OVPN CONFIGS - WARNING!!! THIS WILL TAKE A LONG TIME (10MIN) & DELETE EXISTING CONFIGS!!!"
zero() {
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
printf "%s\n${CYAN} ${zero} ${NC}"
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
double_space
trap ctrl_c INT
function ctrl_c() {
echo
echo "Ctrl-C Ended the Application"
# do the jobs
exit
}
method_0(){
echo "Be Patient!!! If you think the app is frozen its not, when its done you will know and it will go back to the Goliad Menu"
rm -rf CONNECTIONS
mkdir -p CONNECTIONS
cd CONNECTIONS || return
lynx -dump -listonly "https://www.vpngate.net/en/" | grep "fqdn" | awk -F ' ' '{print $2}' > /tmp/sub1.txt
while read LINE; do lynx -dump -listonly "${LINE}" ; done < /tmp/sub1.txt >/tmp/sub2.txt
cat /tmp/sub2.txt | grep ".ovpn" | awk -F ' ' '{print $2}' > /tmp/sub3.txt
while read LINE;do curl -O "${LINE}"; done</tmp/sub3.txt
cd -
# I am checking for new mirrored addresses so i can then download the .ovpn files
# These endpoints are updated every 24 hours, but there is no need to create a cronjob locally for this as it would take too many resources
# Each method automatically checks to see if there is a change with the mirrors
# If the mirrors have not changed then the download of new configurations will not happen
# This is important as we don't want to overload the servers with unnecessary queries
#Source For Mirrors: https://www.vpngate.net/en/sites.aspx
# I am saving a cleaned up Mirror
# Output looks like this after cleanup
# http://202.182.127.177:4218/en/,United States
# http://103.201.129.50:3260/en/,Japan
# http://185.222.220.35:34637/en/,Germany
# http://217.138.212.46:34663/en/,United_Kingdom
# http://161.202.144.236:56364/en/,United_States
# http://128.22.166.118:11212/en/,Japan
### I'm going to have to come back to this mirror check in V1.2
###
# mirror_check(){
# curl https://www.vpngate.net/en/sites.aspx | grep "target='_blank'>" | awk -F "target='_blank'" '{print $2}' | sed -e 's/\<\/a><\/span><\/strong> //g;s/<\/li>//g;s/Mirror location://g;s/)//g;s/>//g;s/( /,/' | sed 's/ /_/' | awk '{$1=$1};1'
# }
#
# mirror_check > mirrors.out
# mirror_check=$(cat mirrors.out | tr -d '?')
# MIRRORS="${DIR}"/MIRRORS
# CONNECTIONS="${DIR}"/CONNECTIONS
#
# rm -rf "${MIRRORS}"
# read_pull(){
# mkdir -p "${MIRRORS}";
# cd "${MIRRORS}"
#
# # Reading the delimiter from mirrors.out and creating directories for each country - version 2
# while IFS=$',' read -r a b
# do
# wget -A "*do_openvpn.aspx*" -r -np -nc -l1 -nd --no-check-certificate -e robots=off "${a}"
# cat * | grep 'public' | grep 'href="/common' | awk -F '<a href="' '{print "https://www.vpngate.net"$2}' | sed 's/">//g' >/tmp/dl.out
#
#
# done <../mirrors.out
# }
#
# read_pull
#
# mkdir -p "${CONNECTIONS}";
# cd "${CONNECTIONS}"
# wget -i /tmp/dl.out
#
# #renaming the files so they can work properly when loading in openvpn cli
# for f in "${CONNECTIONS}" ; do mv "$f" "$(echo "$f" | cut -d ';' -f6 | sed 's/%2F//g')";done
# # getting the most reliable connections
# curl https://www.vpngate.net/en/ | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" >/tmp/reliable.out
# mkdir reliable
# ls | ugrep -f /tmp/reliable.out >reliable.txt
# while read LINE; do mv "${LINE}" reliable; done < reliable.txt
}
method_0
pause
}
one="Connect To VPN"
one() {
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
printf "%s\n${CYAN} ${one} ${NC}"
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
double_space
trap ctrl_c INT
function ctrl_c() {
echo
echo "Ctrl-C Ended the Application"
# do the jobs
exit
}
method_1(){
echo "Select a VPN From The List"
sleep 2
goliad=$(ls -d -1 $PWD/CONNECTIONS/* | peco | xargs)
sudo openvpn --config "${goliad}" --auth-nocache
}
method_1
pause
}
two="Change Wi-Fi , Ethernet, or Bluetooth Mac Address"
two() {
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
printf "%s\n${CYAN} ${two} ${NC}"
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
double_space
trap ctrl_c INT
function ctrl_c() {
echo
echo "Ctrl-C Ended the Application"
# do the jobs
exit
}
method_2(){
macaddr=$(/home/linuxbrew/.linuxbrew/bin/spoof-mac list | peco | xargs | awk '/en/ {print $5}')
sudo -s /home/linuxbrew/.linuxbrew/bin/spoof-mac randomize "${macaddr}"
echo "Changing Selected MAC Address"
sleep 5
spoof-mac list
}
method_2
pause
}
three="Reset MAC Address To Original"
three() {
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
printf "%s\n${CYAN} ${three} ${NC}"
printf "%s\n${PURPLE}--------------------------------------------------------------${NC}"
double_space
trap ctrl_c INT
function ctrl_c() {
echo
echo "Ctrl-C Ended the Application"
# do the jobs
exit
}
method_3(){
macaddr=$(/home/linuxbrew/.linuxbrew/bin/spoof-mac list | peco | xargs | awk '/en/ {print $5}')
sudo -s /home/linuxbrew/.linuxbrew/bin/spoof-mac reset "${macaddr}"
echo "Changing Selected MAC Address Back To Original"
sleep 5
spoof-mac list
}
method_3
pause
}
##############################################
##############################################
show_menus() {
clear
printf "%s\n${PURPLE}########################################################################################################${NC}"
printf "%s\n${PURPLE}
██████ ██████ ██ ██ █████ ██████
██ ██ ██ ██ ██ ██ ██ ██ ██
██ ███ ██ ██ ██ ██ ███████ ██ ██
██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ██████ ███████ ██ ██ ██ ██████
${NC}"
printf "%s\n${PURPLE}--------------------------------------------------------------------------------------------------------${NC}"
printf "%s\n${PURPLE}-------------------------------------- Brought To You By: Jonathan Scott -------------------------------${NC}"
printf "%s\n${PURPLE}-------------------------------------- Updated On: 8/16/2021 --------------------------------------------${NC}"
printf "%s\n${PURPLE}-------------------------------------- Version 1.3 -----------------------------------------------------${NC}"
printf "%s\n${PURPLE}-------------------------------------- OpenVPN Client --------------------------------------------------${NC}"
printf "%s\n${PURPLE}########################################################################################################${NC}"
double_space
printf "%s\n${PURPLE}--------------------------------------------------------------------------------------------------------${NC}"
printf "%s\n${YELLOW} Goliad Menu ${NC}"
printf "%s\n${PURPLE}--------------------------------------------------------------------------------------------------------${NC}"
double_space
echo "0. ${zero}"
echo "1. ${one}"
echo "2. ${two}"
echo "3. ${three}"
echo "4. Exit"
}
# Read the user input
read_options(){
local choice
read -p "Enter choice [ 0 - 4 ] " choice
case ${choice} in
0) zero ;;
1) one ;;
2) two ;;
3) three ;;
4) exit 0;; #This will exit out of the application
*) printf "%s\n${RED}Error...Option Not Valid, Please Choose Another${NC}" && sleep 2
esac
}
# ----------------------------------------------
# Close The Pipes and Stop Transmitting Data
# ----------------------------------------------
trap '' SIGINT SIGQUIT SIGTSTP
# ----------------------------------------------
# Initialize While Loops For The Main Logic
# ----------------------------------------------
while true
do
show_menus
read_options
done