Skip to content

Commit 043437c

Browse files
oivindohostefano
authored andcommitted
Move settings and mysql env vars around
1 parent 7e595ff commit 043437c

File tree

4 files changed

+77
-80
lines changed

4 files changed

+77
-80
lines changed

core/files/configure_misp.sh

Lines changed: 3 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
source /rest_client.sh
44
source /utilities.sh
55

6-
MYSQLCMD="mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -P $MYSQL_PORT -h $MYSQL_HOST -r -N $MYSQL_DATABASE"
7-
86
# We now use envsubst for safe variable substitution with pseudo-json objects for env var enforcement
97
# envsubst won't evaluate anything like $() or conditional variable expansion so lets do that here
108
export PYTHON_BIN="$(which python3)"
@@ -210,10 +208,10 @@ init_user() {
210208
# Create the main user if it is not there already
211209
sudo -u www-data /var/www/MISP/app/Console/cake user init -q > /dev/null 2>&1
212210

213-
echo "UPDATE $MYSQL_DATABASE.users SET email = \"${ADMIN_EMAIL}\" WHERE id = 1;" | ${MYSQLCMD}
211+
echo "UPDATE $MYSQL_DATABASE.users SET email = \"${ADMIN_EMAIL}\" WHERE id = 1;" | ${MYSQL_CMD}
214212

215213
if [ ! -z "$ADMIN_ORG" ]; then
216-
echo "UPDATE $MYSQL_DATABASE.organisations SET name = \"${ADMIN_ORG}\" where id = 1;" | ${MYSQLCMD}
214+
echo "UPDATE $MYSQL_DATABASE.organisations SET name = \"${ADMIN_ORG}\" where id = 1;" | ${MYSQL_CMD}
217215
fi
218216

219217
if [ -n "$ADMIN_KEY" ]; then
@@ -243,7 +241,7 @@ init_user() {
243241
else
244242
echo "... setting admin password skipped"
245243
fi
246-
echo "UPDATE $MYSQL_DATABASE.users SET change_pw = 0 WHERE id = 1;" | ${MYSQLCMD}
244+
echo "UPDATE $MYSQL_DATABASE.users SET change_pw = 0 WHERE id = 1;" | ${MYSQL_CMD}
247245
}
248246

249247
apply_critical_fixes() {
@@ -280,76 +278,6 @@ apply_optional_fixes() {
280278
# fi
281279
#}
282280

283-
# Kludgy alternative to using cake Admin getSetting.
284-
setting_is_set_alt() {
285-
local setting="$1"
286-
local config_json=$(echo '<?php require_once "/var/www/MISP/app/Config/config.php"; echo json_encode($config, JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); ?>'|/usr/bin/php)
287-
local db_settings_enabled=$(jq -e 'getpath(("MISP.system_setting_db" | split("."))) // false' <<< $config_json)
288-
local setting_in_config_file=$(jq -e 'getpath(("'"$setting"'" | split("."))) != null' <<< $config_json)
289-
if $setting_in_config_file; then
290-
return 0
291-
elif $db_settings_enabled; then
292-
local setting_in_db=$(echo "SELECT EXISTS(SELECT 1 FROM $MYSQL_DATABASE.system_settings WHERE setting = \"${setting}\");" | ${MYSQLCMD})
293-
if [[ $setting_in_db -eq 1 ]]; then
294-
return 0
295-
fi
296-
fi
297-
return 1
298-
}
299-
300-
set_default_settings() {
301-
local settings_json="$1"
302-
local description="$2"
303-
304-
for setting in $(jq -r 'keys[]' <<< $settings_json); do
305-
local default_value="$(jq -r '."'"$setting"'"["default_value"]' <<< $settings_json)"
306-
local command_args="$(jq -r '."'"$setting"'"["command_args"] // ""' <<< $settings_json)"
307-
308-
set_safe_default "$setting" "$default_value" "$description" "$command_args"
309-
done
310-
}
311-
312-
enforce_env_settings() {
313-
local settings_json="$1"
314-
local description="$2"
315-
for setting in $(jq -r 'keys[]' <<< $settings_json); do
316-
local default_value="$(jq -r '."'"$setting"'"["default_value"]' <<< $settings_json)"
317-
local command_args="$(jq -r '."'"$setting"'"["command_args"] // ""' <<< $settings_json)"
318-
echo "Enforcing $description setting '$setting' to env var or default value '$default_value'..."
319-
sudo -u www-data /var/www/MISP/app/Console/cake Admin setSetting -q $command_args "$setting" "$default_value"
320-
done
321-
}
322-
323-
set_safe_default() {
324-
local setting="$1"
325-
local default_value="$2"
326-
local description="$3"
327-
local command_args="$4"
328-
329-
if ! setting_is_set_alt "$setting"; then
330-
echo "Updating unset $description setting '$setting' to '$default_value'..."
331-
sudo -u www-data /var/www/MISP/app/Console/cake Admin setSetting -q $command_args "$setting" "$default_value"
332-
fi
333-
}
334-
335-
init_settings() {
336-
local description="$1"
337-
local enforced="/etc/misp-docker/${description}.envars.json"
338-
local defaults="/etc/misp-docker/${description}.defaults.json"
339-
340-
if [[ -e "$enforced" ]]; then
341-
echo "... enforcing env var settings"
342-
local settings_json="$(envsubst < $enforced)"
343-
enforce_env_settings "$settings_json" "$description"
344-
fi
345-
346-
if [[ -e "$defaults" ]]; then
347-
echo "... checking for unset default settings"
348-
local settings_json="$(cat $defaults)"
349-
set_default_settings "$settings_json" "$description"
350-
fi
351-
}
352-
353281
update_components() {
354282
UPDATE_SUDO_CMD="sudo -u www-data"
355283
if [ ! -z "${DB_ALREADY_INITIALISED}" ]; then

core/files/entrypoint.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export MYSQL_PORT=${MYSQL_PORT:-3306}
1212
export MYSQL_USER=${MYSQL_USER:-misp}
1313
export MYSQL_PASSWORD=${MYSQL_PASSWORD:-example}
1414
export MYSQL_DATABASE=${MYSQL_DATABASE:-misp}
15+
export MYSQL_CMD="mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -P $MYSQL_PORT -h $MYSQL_HOST -r -N $MYSQL_DATABASE"
1516
export REDIS_HOST=${REDIS_HOST:-redis}
1617
export REDIS_PORT=${REDIS_PORT:-6379}
1718
export REDIS_PASSWORD=${REDIS_PASSWORD:-redispassword}

core/files/entrypoint_nginx.sh

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,17 @@ term_proc() {
88

99
trap term_proc SIGTERM
1010

11-
MYSQLCMD="mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -P $MYSQL_PORT -h $MYSQL_HOST -r -N $MYSQL_DATABASE"
12-
1311
init_mysql(){
1412
# Test when MySQL is ready....
1513
# wait for Database come ready
1614
isDBup () {
17-
echo "SHOW STATUS" | $MYSQLCMD 1>/dev/null
15+
echo "SHOW STATUS" | $MYSQL_CMD 1>/dev/null
1816
echo $?
1917
}
2018

2119
isDBinitDone () {
2220
# Table attributes has existed since at least v2.1
23-
echo "DESCRIBE attributes" | $MYSQLCMD 1>/dev/null
21+
echo "DESCRIBE attributes" | $MYSQL_CMD 1>/dev/null
2422
echo $?
2523
}
2624

@@ -40,7 +38,7 @@ init_mysql(){
4038
export DB_ALREADY_INITIALISED=true
4139
else
4240
echo "... database has not been initialized, importing MySQL scheme..."
43-
$MYSQLCMD < /var/www/MISP/INSTALL/MYSQL.sql
41+
$MYSQL_CMD < /var/www/MISP/INSTALL/MYSQL.sql
4442
fi
4543
}
4644

core/files/utilities.sh

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,73 @@ check_env_vars() {
1616
exit 1
1717
fi
1818
}
19+
20+
# Kludgy alternative to using cake Admin getSetting.
21+
setting_is_set_alt() {
22+
local setting="$1"
23+
local config_json=$(echo '<?php require_once "/var/www/MISP/app/Config/config.php"; echo json_encode($config, JSON_THROW_ON_ERROR | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); ?>'|/usr/bin/php)
24+
local db_settings_enabled=$(jq -e 'getpath(("MISP.system_setting_db" | split("."))) // false' <<< $config_json)
25+
local setting_in_config_file=$(jq -e 'getpath(("'"$setting"'" | split("."))) != null' <<< $config_json)
26+
if $setting_in_config_file; then
27+
return 0
28+
elif $db_settings_enabled; then
29+
local setting_in_db=$(echo "SELECT EXISTS(SELECT 1 FROM $MYSQL_DATABASE.system_settings WHERE setting = \"${setting}\");" | ${MYSQL_CMD})
30+
if [[ $setting_in_db -eq 1 ]]; then
31+
return 0
32+
fi
33+
fi
34+
return 1
35+
}
36+
37+
set_default_settings() {
38+
local settings_json="$1"
39+
local description="$2"
40+
41+
for setting in $(jq -r 'keys[]' <<< $settings_json); do
42+
local default_value="$(jq -r '."'"$setting"'"["default_value"]' <<< $settings_json)"
43+
local command_args="$(jq -r '."'"$setting"'"["command_args"] // ""' <<< $settings_json)"
44+
45+
set_safe_default "$setting" "$default_value" "$description" "$command_args"
46+
done
47+
}
48+
49+
enforce_env_settings() {
50+
local settings_json="$1"
51+
local description="$2"
52+
for setting in $(jq -r 'keys[]' <<< $settings_json); do
53+
local default_value="$(jq -r '."'"$setting"'"["default_value"]' <<< $settings_json)"
54+
local command_args="$(jq -r '."'"$setting"'"["command_args"] // ""' <<< $settings_json)"
55+
echo "Enforcing $description setting '$setting' to env var or default value '$default_value'..."
56+
sudo -u www-data /var/www/MISP/app/Console/cake Admin setSetting -q $command_args "$setting" "$default_value"
57+
done
58+
}
59+
60+
set_safe_default() {
61+
local setting="$1"
62+
local default_value="$2"
63+
local description="$3"
64+
local command_args="$4"
65+
66+
if ! setting_is_set_alt "$setting"; then
67+
echo "Updating unset $description setting '$setting' to '$default_value'..."
68+
sudo -u www-data /var/www/MISP/app/Console/cake Admin setSetting -q $command_args "$setting" "$default_value"
69+
fi
70+
}
71+
72+
init_settings() {
73+
local description="$1"
74+
local enforced="/etc/misp-docker/${description}.envars.json"
75+
local defaults="/etc/misp-docker/${description}.defaults.json"
76+
77+
if [[ -e "$enforced" ]]; then
78+
echo "... enforcing env var settings"
79+
local settings_json="$(envsubst < $enforced)"
80+
enforce_env_settings "$settings_json" "$description"
81+
fi
82+
83+
if [[ -e "$defaults" ]]; then
84+
echo "... checking for unset default settings"
85+
local settings_json="$(cat $defaults)"
86+
set_default_settings "$settings_json" "$description"
87+
fi
88+
}

0 commit comments

Comments
 (0)