@@ -21,6 +21,9 @@ test "${TH_NO_CONFIG}" == 1
21
21
CONFIG=$?
22
22
CONFIG_FILE=${TH_CONFIG_FILE:-/ etc/ thehive/ application.conf}
23
23
CORTEX_KEYS=${TH_CORTEX_KEYS}
24
+ MIGRATE=${TH_MIGRATE:- 0}
25
+ CLONER=${TH_CLONER:- 0}
26
+
24
27
function usage {
25
28
cat << - _EOF_
26
29
Available options:
@@ -42,16 +45,18 @@ function usage {
42
45
--cortex-port <port> | define port to connect to Cortex (default: 9001)
43
46
--cortex-hostname <host>,<host>,... | resolve this hostname to find Cortex instances
44
47
--cortex-keys <key>,<key>,... | define Cortex key
48
+ migrate <param> <param> ... | run migration tool
49
+ cloner <param> <param> ... | run cloner tool
45
50
_EOF_
46
51
exit 1
47
52
}
48
53
49
54
50
55
STOP=0
51
- while test $# -gt 0 -o " ${STOP} " = 1
56
+ while test $# -gt 0 -a " ${STOP} " = 0
52
57
do
53
58
case " $1 " in
54
- " --config-file" ) shift ; CONFIG_FILE=$1 ;;
59
+ " --config-file" ) shift ; CONFIG_FILE=$1 ;;
55
60
" --no-config" ) CONFIG=0 ;;
56
61
" --no-config-secret" ) CONFIG_SECRET=0 ;;
57
62
" --secret" ) shift ; SECRET=$1 ;;
70
75
" --cortex-port" ) shift ; CORTEX_PORT=$1 ;;
71
76
" --cortex-hostnames" ) shift ; CORTEX_HOSTNAMES=$1 ;;
72
77
" --cortex-keys" ) shift ; CORTEX_KEYS=$1 ;;
73
- " --" ) STOP=1;;
74
- * ) usage
78
+ " --" ) STOP=1 ;;
79
+ " migrate" ) MIGRATE=1; STOP=1 ;;
80
+ " cloner" ) CLONER=1; STOP=1 ;;
81
+ * ) echo param is -" $1 " -; usage
75
82
esac
76
83
shift
77
84
done
78
85
86
+ if test " ${MIGRATE} " = 1
87
+ then
88
+ bin/migrate " $@ "
89
+ exit $?
90
+ fi
91
+
92
+ if test " ${CLONER} " = 1
93
+ then
94
+ bin/cloner " $@ "
95
+ exit $?
96
+ fi
97
+
79
98
if test " ${CONFIG} " = 1
80
99
then
81
100
CONFIG_FILE=$( mktemp --tmpdir thehive-XXXXXX.conf)
84
103
if test -z " ${SECRET} "
85
104
then
86
105
SECRET=$( dd if=/dev/urandom bs=1024 count=1 | tr -dc ' a-zA-Z0-9' | fold -w 64 | head -n 1)
87
- test " ${SHOW_SECRET} " = 1 && echo Using secret: ${SECRET}
106
+ test " ${SHOW_SECRET} " = 1 && echo " Using secret: ${SECRET} "
88
107
fi
89
- echo " play.http.secret.key = \" ${SECRET} \" " >> ${CONFIG_FILE}
108
+ echo " play.http.secret.key = \" ${SECRET} \" " >> " ${CONFIG_FILE} "
90
109
fi
91
110
92
111
if test " ${CONFIG_DB} " = 1
@@ -95,75 +114,78 @@ then
95
114
declare -a CQL
96
115
for C in " ${CQL_HOSTS[@]} "
97
116
do
98
- CQL+=($( getent ahostsv4 " $C " | awk ' { print $1 }' | sort -u) )
117
+ for IP in $( getent ahostsv4 " $C " | awk ' { print $1 }' | sort -u)
118
+ do
119
+ CQL+=(" $IP " )
120
+ done
99
121
done
100
- echo " db.janusgraph {" >> ${CONFIG_FILE}
122
+ echo " db.janusgraph {" >> " ${CONFIG_FILE} "
101
123
if test " ${# CQL[@]} " = 0
102
124
then
103
125
echo " Local database in ${BDB_DIRECTORY} is be used"
104
126
mkdir -p " ${BDB_DIRECTORY} "
105
- echo " storage.backend = berkeleyje" >> ${CONFIG_FILE}
106
- echo " storage.directory = \" ${BDB_DIRECTORY} \" " >> ${CONFIG_FILE}
107
- echo " berkeleyje.freeDisk = 1" >> ${CONFIG_FILE}
127
+ echo " storage.backend = berkeleyje" >> " ${CONFIG_FILE} "
128
+ echo " storage.directory = \" ${BDB_DIRECTORY} \" " >> " ${CONFIG_FILE} "
129
+ echo " berkeleyje.freeDisk = 1" >> " ${CONFIG_FILE} "
108
130
if test -e " ${BDB_DIRECTORY} "
109
131
then
110
132
test -w " ${BDB_DIRECTORY} " || echo " WARNING the directory used to store database ($BDB_DIRECTORY ) is not writable"
111
133
else
112
134
mkdir -p " ${BDB_DIRECTORY} " || echo " WARNING the directory used to store database ($BDB_DIRECTORY ) is not writable"
113
135
fi
114
136
else
115
- echo " Using cassandra address = ${CQL[@ ]} "
116
- echo " storage.backend = cql" >> ${CONFIG_FILE}
137
+ echo " Using cassandra address = ${CQL[* ]} "
138
+ echo " storage.backend = cql" >> " ${CONFIG_FILE} "
117
139
if [[ -n $CQL_USERNAME && -n $CQL_PASSWORD ]]
118
140
then
119
- echo " storage.username = \" ${CQL_USERNAME} \" " >> ${CONFIG_FILE}
120
- echo " storage.password = \" ${CQL_PASSWORD} \" " >> ${CONFIG_FILE}
121
- printf " Using ${CQL_USERNAME} as cassandra username and ${CQL_PASSWORD} as its password\n "
141
+ echo " storage.username = \" ${CQL_USERNAME} \" " >> " ${CONFIG_FILE} "
142
+ echo " storage.password = \" ${CQL_PASSWORD} \" " >> " ${CONFIG_FILE} "
143
+ echo " Using ${CQL_USERNAME} as cassandra username and ${CQL_PASSWORD} as its password"
122
144
fi
123
- echo " storage.cql.cluster-name = thp" >> ${CONFIG_FILE}
124
- echo " storage.cql.keyspace = thehive" >> ${CONFIG_FILE}
125
- echo " storage.hostname = [" >> ${CONFIG_FILE}
126
- printf ' %s\n' " ${CQL_HOSTS[@]} " >> ${CONFIG_FILE}
127
- echo " ]" >> ${CONFIG_FILE}
145
+ echo " storage.cql.cluster-name = thp" >> " ${CONFIG_FILE} "
146
+ echo " storage.cql.keyspace = thehive" >> " ${CONFIG_FILE} "
147
+ echo " storage.hostname = [" >> " ${CONFIG_FILE} "
148
+ printf ' %s\n' " ${CQL_HOSTS[@]} " >> " ${CONFIG_FILE} "
149
+ echo " ]" >> " ${CONFIG_FILE} "
128
150
echo " Waiting until Cassandra DB is up"
129
151
sleep 30 # Sleep until cassandra Db is up
130
152
fi
131
- echo " index.search.backend = lucene" >> ${CONFIG_FILE}
132
- echo " index.search.directory = \" ${INDEX_DIRECTORY} \" " >> ${CONFIG_FILE}
153
+ echo " index.search.backend = lucene" >> " ${CONFIG_FILE} "
154
+ echo " index.search.directory = \" ${INDEX_DIRECTORY} \" " >> " ${CONFIG_FILE} "
133
155
if test -e " ${INDEX_DIRECTORY} "
134
156
then
135
157
test -w " ${INDEX_DIRECTORY} " || echo " WARNING the directory used to store index ($INDEX_DIRECTORY ) is not writable"
136
158
else
137
159
mkdir -p " ${INDEX_DIRECTORY} " || echo " WARNING the directory used to store index ($INDEX_DIRECTORY ) is not writable"
138
160
fi
139
- echo " }" >> ${CONFIG_FILE}
161
+ echo " }" >> " ${CONFIG_FILE} "
140
162
fi
141
163
142
164
if test " ${CONFIG_STORAGE} " = 1
143
165
then
144
- echo " storage {" >> ${CONFIG_FILE}
166
+ echo " storage {" >> " ${CONFIG_FILE} "
145
167
if test -n " ${HDFS_URL} "
146
168
then
147
169
echo " Using HDFS ${HDFS_URL} "
148
- echo " provider: hdfs" >> ${CONFIG_FILE}
149
- echo " hdfs {" >> ${CONFIG_FILE}
150
- echo " root: \" ${HDFS_URL} \" " >> ${CONFIG_FILE}
151
- echo " location: " /thehive" " >> ${CONFIG_FILE}
152
- echo " username: thehive" >> ${CONFIG_FILE}
153
- echo " }" >> ${CONFIG_FILE}
170
+ echo " provider: hdfs" >> " ${CONFIG_FILE} "
171
+ echo " hdfs {" >> " ${CONFIG_FILE} "
172
+ echo " root: \" ${HDFS_URL} \" " >> " ${CONFIG_FILE} "
173
+ echo " location: \ " /thehive\ "" >> " ${CONFIG_FILE} "
174
+ echo " username: thehive" >> " ${CONFIG_FILE} "
175
+ echo " }" >> " ${CONFIG_FILE} "
154
176
else
155
177
echo " Using local storage in ${STORAGE_DIRECTORY} "
156
178
mkdir -p " ${STORAGE_DIRECTORY} "
157
- echo " provider: localfs" >> ${CONFIG_FILE}
158
- echo " localfs.directory: \" ${STORAGE_DIRECTORY} \" " >> ${CONFIG_FILE}
179
+ echo " provider: localfs" >> " ${CONFIG_FILE} "
180
+ echo " localfs.directory: \" ${STORAGE_DIRECTORY} \" " >> " ${CONFIG_FILE} "
159
181
if test -e " ${STORAGE_DIRECTORY} "
160
182
then
161
183
test -w " ${STORAGE_DIRECTORY} " || echo " WARNING the directory used to store files ($STORAGE_DIRECTORY ) is not writable"
162
184
else
163
185
mkdir -p " ${STORAGE_DIRECTORY} " || echo " WARNING the directory used to store files ($STORAGE_DIRECTORY ) is not writable"
164
186
fi
165
187
fi
166
- echo " }" >> ${CONFIG_FILE}
188
+ echo " }" >> " ${CONFIG_FILE} "
167
189
fi
168
190
169
191
if test " ${CONFIG_CORTEX} " = 1
@@ -177,34 +199,34 @@ then
177
199
done
178
200
if test ${# CORTEX_URLS[@]} -gt 0
179
201
then
180
- echo " play.modules.enabled += org.thp.thehive.connector.cortex.CortexModule" >> ${CONFIG_FILE}
181
- echo " cortex.servers = [" >> ${CONFIG_FILE}
202
+ echo " play.modules.enabled += org.thp.thehive.connector.cortex.CortexModule" >> " ${CONFIG_FILE} "
203
+ echo " cortex.servers = [" >> " ${CONFIG_FILE} "
182
204
I=0
183
- for C in ${CORTEX_URLS[@]}
205
+ for C in " ${CORTEX_URLS[@]} "
184
206
do
185
207
echo " Add Cortex cortex${I} : ${C} "
186
- echo " {" >> ${CONFIG_FILE}
187
- echo " name = cortex${I} " >> ${CONFIG_FILE}
188
- echo " url = \" $C \" " >> ${CONFIG_FILE}
189
- echo auth { >> ${CONFIG_FILE}
190
- echo " type = \" bearer\" " >> ${CONFIG_FILE}
191
- echo " key = \" ${CK[$I]} \" " >> ${CONFIG_FILE}
192
- echo " }" >> ${CONFIG_FILE}
193
- echo " }" >> ${CONFIG_FILE}
194
- I=$(( ${I} + 1 ))
208
+ echo " {" >> " ${CONFIG_FILE} "
209
+ echo " name = cortex${I} " >> " ${CONFIG_FILE} "
210
+ echo " url = \" $C \" " >> " ${CONFIG_FILE} "
211
+ echo " auth {" >> " ${CONFIG_FILE} "
212
+ echo " type = \" bearer\" " >> " ${CONFIG_FILE} "
213
+ echo " key = \" ${CK[$I]} \" " >> " ${CONFIG_FILE} "
214
+ echo " }" >> " ${CONFIG_FILE} "
215
+ echo " }" >> " ${CONFIG_FILE} "
216
+ I=$(( I + 1 ))
195
217
done
196
- echo " ]" >> ${CONFIG_FILE}
218
+ echo " ]" >> " ${CONFIG_FILE} "
197
219
fi
198
220
fi
199
221
200
- echo " include file(\" /etc/thehive/application.conf\" )" >> ${CONFIG_FILE}
222
+ echo " include file(\" /etc/thehive/application.conf\" )" >> " ${CONFIG_FILE} "
201
223
fi
202
224
203
225
bin/thehive \
204
- -Dconfig.file=${CONFIG_FILE} \
226
+ -Dconfig.file=" ${CONFIG_FILE} " \
205
227
-Dlogger.file=/etc/thehive/logback.xml \
206
228
-Dpidfile.path=/dev/null \
207
- $@
229
+ " $@ "
208
230
PID=$!
209
231
trap ' kill -SIGTERM "${PID}"; wait "${PID}"; exit 143' SIGTERM SIGINT
210
232
wait ${PID}
0 commit comments