-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathexr_env.sh
More file actions
executable file
·288 lines (267 loc) · 10.7 KB
/
exr_env.sh
File metadata and controls
executable file
·288 lines (267 loc) · 10.7 KB
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
#!/bin/bash
BRANCH="master"
############################################################
# Check Package Manager #
############################################################
APT_CMD=$(which apt)
APT_GET_CMD=$(which apt-get)
if grep -q "/" <<< "$APT_CMD"; then
PKM="apt"
elif grep -q "/" <<< "$APT_GET_CMD"; then
PKM="apt-get"
else
printf "%s\n\033[91;1mCan't use this script without apt or apt-get\n\033[0m"
exit 1;
fi
############################################################
# Install OS dependencies #
############################################################
# function installosdependencies() {
# sudo $PKM update -y
# sudo $PKM install -y libz-dev libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext cmake gcc grep curl
# }
############################################################
# Uninstall Docker #
############################################################
# function uninstalldocker() {
# DOCKER=$(which docker)
# if grep -q "/" <<< "$DOCKER"; then
# printf "%s\033[93;1mDocker found\033[0m"
# printf "%s\n\033[93;1mThis script will stop all running docker containers\033[0m"
# printf "%s\n\033[93;1mthen remove the currently installed version of docker.\033[0m"
# printf "%s\n\033[93;1mDo you wish to continue? Press \033[92;1my \033[93;1mor \033[92;1mn\033[0m"
# echo ""
# read -p "" -n 1 -r
# if [[ $REPLY =~ ^[Yy]$ ]]; then
# for i in $(docker ps -q); do
# printf "%s\033[93;1mStopping container $i\033[0m"
# docker stop $i;
# done
# docker system prune -f && docker volume prune -f && docker network prune -f
# else
# printf "%s\n\033[91;1mStopping this script\n\033[0m"
# exit 1;
# fi
# fi
# sudo systemctl stop docker.service
# sudo systemctl stop docker.socket
# sudo systemctl stop containerd
# sudo $PKM purge -y containerd.io docker-engine docker docker.io docker-ce docker-ce-cli docker-ce-rootless-extras docker-scan-plugin docker-compose
# sudo $PKM autoremove -y --purge -y containerd.io docker-engine docker docker.io docker-ce docker-ce-cli docker-ce-rootless-extras docker-scan-plugin docker-compose
# sudo rm -rf /var/lib/docker /etc/docker
# sudo rm /etc/apparmor.d/docker
# sudo rm -rf /var/run/docker.sock
# sudo rm /usr/bin/docker-compose
# sudo rm /usr/local/bin/docker-compose
# sudo rm /usr/share/keyrings/docker-archive-keyring.gpg
# }
############################################################
# Install Docker #
############################################################
# function installdocker() {
# # Install requirements
# sudo $PKM update -y
# sudo $PKM upgrade -y
# sudo $PKM install -y \
# apt-transport-https \
# ca-certificates \
# curl \
# gnupg-agent \
# lsb-release \
# software-properties-common
# # Add Docker’s official GPG key
# curl curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# sudo $PKM-key fingerprint 0EBFCD88
# # Set up the stable repository
# sudo printf \
# "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
# $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# # Install Docker Engine
# sudo $PKM update -y
# sudo $PKM install -y docker-ce docker-ce-cli containerd.io
# }
############################################################
# Install Docker Compose #
############################################################
# function installdockercompose() {
# # Find newest version
# VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')
# DESTINATION=/usr/bin/docker-compose
# # Download to DESTINATION
# sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
# # Add permissions
# sudo chmod 755 $DESTINATION
# }
############################################################
# Docker as non-root user #
############################################################
# function dockergroup() {
# sudo groupadd docker
# sudo usermod -aG docker $USER
# }
############################################################
# Install python #
############################################################
# function installpython() {
# sudo $PKM update -y
# sudo $PKM install -y python3 python3-pip
# }
############################################################
# Install python requirements #
############################################################
function installpythonrequirements() {
pip3 install -r requirements.txt
# Fix prompt_toolkit/styles/from_dict.py lib if it's broken
pkgs=$(python3 -m site | awk -F"'" '/site-packages/{print $2; exit}')
echo "Searching $pkgs for broken lib file..."
broken_lib=${pkgs}/prompt_toolkit/styles/from_dict.py
if grep -q "from collections import Mapping" ${broken_lib}; then
echo "prompt_toolkit/styles/from_dict.py contains broken lib ref; fixing it..."
cp ${broken_lib} ${broken_lib}.bak
awk '/from collections import Mapping/{gsub(/collections/, "collections.abc")};{print}' ${broken_lib}.bak > ${broken_lib}
else
echo "prompt_toolkit/styles/from_dict.py doesn't exist or isn't broken; skipping fixing it..."
fi
}
############################################################
# Install git #
############################################################
# function installgit() {
# sudo $PKM update -y
# sudo $PKM install -y git
# }
############################################################
# Update repo #
############################################################
function updaterepo() {
git stash
git pull
}
############################################################
# python3 builder.py --args #
############################################################
function builder() {
local d="$@"
python3 builder.py $d
}
############################################################
# Check Docker Engine #
############################################################
function checkdocker() {
dockerversion="20.10.13"
DOCKER=$(which docker)
if grep -q "/" <<< "$DOCKER"; then
printf "%s\n\033[92;1mDocker found\033[0m"
DOCKER_VERSION=$(docker --version | awk '{print $3}')
DOCKER_VERSION={{$DOCKER_VERSION::-1}}
if [ "$(printf '%s\n' "$dockerversion" "$DOCKER_VERSION" | sort --version-sort | head -n1)" = "$dockerversion" ]; then
printf "%s\n\033[92;1mGreater than or equal to ${dockerversion}\033[0m"
else
printf "%s\n\033[91;1mLess than ${dockerversion}. You have to upgrade\033[0m"
fi
else
printf "%s\n\033[91;1mDocker not found\033[0m"
fi
}
############################################################
# Check Docker Compose #
############################################################
function checkdockercompose() {
composeversion="2.3.3"
COMPOSE=$(which docker-compose)
if grep -q "/" <<< "$COMPOSE"; then
printf "%s\n\033[92;1mDocker Compose found\033[0m"
COMPOSE_VERSION=$(docker-compose --version | awk -F'v' '{print $3}')
if [ "$(printf '%s\n' "$composeversion" "$COMPOSE_VERSION" | sort --version-sort | head -n1)" = "$composeversion" ]; then
printf "%s\n\033[92;1mGreater than or equal to ${composeversion}\033[0m"
else
printf "%s\n\033[91;1mLess than ${composeversion}. You have to upgrade\033[0m"
fi
else
printf "%s\n\033[91;1mDocker Compose not found\033[0m"
fi
}
############################################################
# Repo version #
############################################################
function branch_status() {
printf "%s\033[94;1mChecking Docker Engine && Docker Compose\033[0m"
checkdocker
checkdockercompose
printf "%s\n\033[94;1mChecking repo version\033[0m\n"
git fetch
local version=$(git --no-pager log --oneline -1)
local a=$BRANCH b="origin/$BRANCH"
local base=$( git merge-base $a $b )
local aref=$( git rev-parse $a )
local bref=$( git rev-parse $b )
if [[ $aref == "$bref" ]]; then
printf "%s\033[94;1m$version \033[92;1mup-to-date\033[0m\n"
elif [[ $aref == "$base" ]]; then
printf "%s\033[94;1m$version \033[92;1mbehind\033[0m\n"
elif [[ $bref == "$base" ]]; then
printf "%s\033[94;1m$version \033[92;1mahead\033[0m\n"
else
printf "%s\033[94;1m$version \033[92;1mdiverged\033[0m\n"
fi
}
############################################################
# Help #
############################################################
Help()
{
# Display Help
printf "%s\n\033[94;1mEnterprise \033[96;1mXRouter Proxy \033[94;1mEnvironment\033[0m"
printf "%s\n\033[92;1mPowered by Blocknet.co"
printf '%s\n'
printf "%s\n\033[97;1moptions:"
printf "%s\n\033[93;1m-h | --help \033[97;1mPrint this Help."
# printf "%s\n\033[93;1m-o | --osdep \033[97;1mInstall OS dependencies."
printf "%s\n\033[93;1m-u | --update \033[97;1mUpdate local repo."
# printf "%s\n\033[93;1m-g | --git \033[97;1mInstall git."
# printf "%s\n\033[93;1m-d | --docker \033[97;1mUninstall and Install docker and docker-compose."
# printf "%s\n\033[93;1m-p | --python \033[97;1mInstall python3, python3-pip and requirements."
printf "%s\n\033[93;1m-b | --builder \033[97;1mCall builder.py with args."
printf "%s\n\033[93;1m-v | --version \033[97;1mPrint software version and exit."
printf '%s\n\033[0m'
}
############################################################
############################################################
# Main program #
############################################################
############################################################
############################################################
# Process the input options. Add options as needed. #
############################################################
# Get the options
VALID_ARGS=$(getopt -o huvb: --long help,update,version,builder: -- "$@")
if [[ $? -ne 0 ]]; then
exit 1;
fi
eval set -- "$VALID_ARGS"
while [ : ]; do
case "$1" in
-h | --help)
Help
shift
;;
-u| --update)
printf "%s\n\033[92;1mUpdating local repo\n\033[0m"
updaterepo
installpythonrequirements
shift
;;
-v | --version)
branch_status
shift
;;
-b | --builder)
printf "%s\n\033[92;1mpython3 builder.py $2 \n\033[0m"
builder $2
shift 2
;;
--) shift;
break
;;
esac
done