-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtorbot.sh
198 lines (164 loc) · 5.61 KB
/
torbot.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
#!/bin/sh
#############################################################################
# Version 0.2-DEVELOPMENT (10-08-2019)
#############################################################################
#############################################################################
# Torbot - a Tor relay manager for FreeBSD
# Copyright (C) 2019 Nozel/Sebas Veeke.
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 3 as published
# by the Free Software Foundation.
#
# You should have received a copy of the GNU General Public License along
# with this program. If not, see <https://www.gnu.org/licenses/>.
#
# Contact:
# > e-mail [email protected]
# > GitHub nozel-org
#############################################################################
#############################################################################
# VARIABLES
#############################################################################
# torbot version
TORBOT_VERSION='0.2'
# torbot directories
TORBOT_DATABASE_DIR='/var/db/tor/torbot'
TOR_RELAY_CONFIG_DIR='/usr/local/etc/tor'
TOR_RELAY_DATA_DIR='/var/db/tor'
#############################################################################
# ARGUMENTS
#############################################################################
# save amount of arguments for validity check
ARGUMENTS="${#}"
# populate validation variables with zero
ARGUMENT_OPTION='0'
ARGUMENT_FEATURE='0'
# populate argument variables based on used arguments
while test -n "$1"; do
case "$1" in
# options
--version)
ARGUMENT_VERSION='1'
ARGUMENT_OPTION='1'
shift
;;
--help|-help|help|--h|-h)
ARGUMENT_HELP='1'
ARGUMENT_OPTION='1'
shift
;;
# features
--create-tor-relay)
ARGUMENT_CREATE='1'
ARGUMENT_FEATURE='1'
shift
;;
# other
*)
ARGUMENT_NONE='1'
shift
;;
esac
done
#############################################################################
# ERROR FUNCTIONS
#############################################################################
error_invalid_option() {
echo 'torbot: invalid option'
echo "Use 'torbot --help' for a list of valid arguments."
exit 1
}
error_wrong_number_of_arguments() {
echo 'torbot: wrong number of arguments'
echo "Use 'torbot --help' for a list of valid arguments."
exit 1
}
error_not_yet_implemented() {
echo 'torbot: this feature has not been implemented yet.'
exit 1
}
error_os_not_supported() {
echo 'torbot: operating system is not supported.'
exit 1
}
error_not_available() {
echo 'torbot: option or method is not available without the torbot configuration file.'
exit 1
}
error_no_feature_and_method() {
echo 'torbot: feature requires a method and vice versa'
echo "Use 'torbot --help' for a list of valid arguments."
exit 1
}
error_options_cannot_be_combined() {
echo 'torbot: options cannot be used with features or methods'
echo "Use 'torbot --help' for a list of valid arguments."
exit 1
}
error_no_root_privileges() {
echo 'torbot: you need to be root to perform this command'
echo "use 'sudo torbot', 'sudo -s' or run torbot as root user."
exit 1
}
error_no_internet_connection() {
echo 'torbot: access to the internet is required.'
exit 1
}
error_type_yes_or_no() {
echo "torbot: type yes or no and press enter to continue."
}
#############################################################################
# REQUIREMENT FUNCTIONS
#############################################################################
#############################################################################
# MANAGEMENT FUNCTIONS
#############################################################################
torbot_version() {
echo "Torbot ${torbot_VERSION}"
echo "Copyright (C) 2019 Nozel."
echo
echo "This program is free software: you can redistribute it and/or modify it"
echo "under the terms of the GNU General Public License version 3 as published"
echo "by the Free Software Foundation."
echo
echo "Written by Sebas Veeke"
}
torbot_help() {
echo "Usage:"
echo " torbot [feature]..."
echo
echo "Features:"
echo " -o, --overview Show server overview"
echo
echo "Options:"
echo " --install Installs Torbot on the system and unlocks all features"
echo " --upgrade Upgrade Torbot to the latest stable version"
echo " --uninstall Uninstalls Torbot from the system"
echo " --help Display this help and exit"
echo " --version Display version information and exit"
}
#############################################################################
# FEATURE FUNCTIONS
#############################################################################
torbot_create() {
echo 'test'
}
#############################################################################
# MAIN FUNCTION
#############################################################################
torbot_main() {
# options
if [ "${ARGUMENT_VERSION}" == '1' ]; then
torbot_version
elif [ "${ARGUMENT_HELP}" == '1' ]; then
torbot_help
elif [ "${ARGUMENT_CREATE}" == '1' ]; then
torbot_create
fi
}
#############################################################################
# CALL MAIN FUNCTION
#############################################################################
# call main function
torbot_main