73 lines
1.6 KiB
Bash
Executable File
73 lines
1.6 KiB
Bash
Executable File
#!/bin/sh /etc/rc.common
|
|
|
|
START=13
|
|
ENGINES_CNF=/var/etc/ssl/engines.cnf
|
|
ENGINES_DIR=%ENGINES_DIR%
|
|
MODULES_DIR=/usr/lib/ossl-modules
|
|
PROVIDERS_CNF=/var/etc/ssl/providers.cnf
|
|
|
|
#1: cnf file
|
|
write_cnf_header() {
|
|
mkdir -p "$(dirname "$1")" && \
|
|
echo "# This file is automatically generated from /etc/config/openssl." >"$1" || {
|
|
echo "Error writing to $1."
|
|
return 1
|
|
}
|
|
}
|
|
|
|
|
|
#1: module name
|
|
#2: output cnf file
|
|
#3: module.so
|
|
enable_module() {
|
|
local builtin enabled force
|
|
|
|
config_get_bool builtin "$1" builtin 0
|
|
config_get_bool enabled "$1" enabled 1
|
|
config_get_bool force "$1" force 0
|
|
|
|
if [ "$enabled" = 0 ]; then
|
|
[ "$builtin" = 0 ] && return 1
|
|
echo "Engine $1 is built into the libcrypto library and can't be disabled through UCI."
|
|
echo "If the engine was not built-in, remove 'config builtin' from /etc/config/openssl."
|
|
elif [ "$force" = 1 ]; then
|
|
printf "[Forced] "
|
|
elif ! grep -q "\\[ *$1_sect *]" /etc/ssl/modules.cnf.d/*; then
|
|
echo "$1: Could not find section [$1] in config files."
|
|
return 1
|
|
elif [ "$builtin" = 1 ]; then
|
|
printf "[Builtin] "
|
|
elif [ ! -f "$3" ];then
|
|
echo "Skipping $1: $3 not found."
|
|
return 1
|
|
fi
|
|
echo "Enabling $1"
|
|
echo "$1=$1_sect" >>"$2"
|
|
}
|
|
|
|
config_engine() {
|
|
enable_module "$1" "$ENGINES_CNF" \
|
|
"${ENGINES_DIR}/${1}.so"
|
|
}
|
|
|
|
config_provider() {
|
|
enable_module "$1" "$PROVIDERS_CNF" \
|
|
"${MODULES_DIR}/${1}.so"
|
|
}
|
|
|
|
start() {
|
|
local ret=0
|
|
|
|
config_load openssl
|
|
|
|
echo Generating engines.cnf
|
|
write_cnf_header "${ENGINES_CNF}" && \
|
|
config_foreach config_engine engine || ret=$?
|
|
|
|
echo Generating providers.cnf
|
|
write_cnf_header "${PROVIDERS_CNF}" && \
|
|
config_foreach config_provider provider || ret=$?
|
|
|
|
return $ret
|
|
}
|