File: //var/packages/AIConsole/scripts/pkg_utils
#!/bin/bash
PKG_NAME="AIConsole"
PKG_DIR="/var/packages/${PKG_NAME}"
PKG_ETC_DIR="${PKG_DIR}/etc"
PKG_TARGET_DIR="${PKG_DIR}/target"
PKG_VAR_DIR="${PKG_DIR}/var"
PKG_SHARE_DIR="${PKG_DIR}/share"
PKG_UI_DIR="${PKG_TARGET_DIR}/ui"
PKG_PROMPTS_DIR="${PKG_SHARE_DIR}/prompts"
PKG_SCRIPTS_DIR="${PKG_DIR}/scripts"
DB_MIGRATION_DIR="${PKG_SCRIPTS_DIR}/migrations"
DB_SQL_DIR="${PKG_SCRIPTS_DIR}/sql"
TOOL_DIR="${PKG_TARGET_DIR}/tool"
KEY_DIR="${PKG_SHARE_DIR}/key"
SETTING_DIR="${PKG_SHARE_DIR}/etc"
IMAGE_DIR="${PKG_SHARE_DIR}/image"
LOG_IMAGE_DIR="${IMAGE_DIR}/log"
COMPLETION_IMAGE_DIR="${IMAGE_DIR}/completion"
PRESIDIO_ANALYZER_DIR="${PKG_SHARE_DIR}/presidio-analyzer"
DEID_CONFIG_DIR="${PKG_SHARE_DIR}/deid"
USER_NAME="AIConsole"
GROUP_NAME="AIConsole"
DB_USER="AIConsole"
DB_NAME="aiconsole"
DB_STRING="user=${DB_USER} host=/var/run/postgresql database=${DB_NAME}"
PSQL="/usr/bin/psql"
CHMOD_BIN="/bin/chmod"
RM_BIN="/bin/rm"
MV_BIN="/bin/mv"
MKDIR_BIN="/bin/mkdir"
SU_BIN="/bin/su"
CHOWN_BIN="/bin/chown"
MakeDir()
{
$MKDIR_BIN -p "$1"
}
ChangeOwnToPackage()
{
$CHOWN_BIN ${USER_NAME}:${GROUP_NAME} "$1"
}
Control()
{
if [ "failed" == "$(/bin/systemctl is-failed "${!#}")" ];then
/bin/systemctl reset-failed "${!#}"
fi
/usr/syno/bin/synosystemctl $*
}
Status()
{
/usr/bin/systemctl status "$1" | grep running > /dev/null
return $?
}
MigrateTables()
{
# `ALL_HOSTS` is required by the migration script `20240627005330_init.sql`.
# We set it to a dummy value for the migration to succeed.
$SU_BIN "${DB_USER}" -s /bin/sh -c "ALL_HOSTS='00000000-0000-0000-0000-000000000000' ${TOOL_DIR}/goose up -migration_dir ${DB_MIGRATION_DIR} -db_string \"${DB_STRING}\""
}
UpdatePresidioSettingTable()
{
local langs=("$@")
local in_clause
in_clause=$(printf "'%s'," "${langs[@]}")
in_clause="(${in_clause%,})"
$SU_BIN "$DB_USER" -s /bin/sh -c "$PSQL $DB_NAME -c \"UPDATE presidio_setting SET status=1 WHERE lang IN ${in_clause};\""
}
MigrateEntitiesFromPresidioJSON()
{
local src="${PKG_SHARE_DIR}/etc/presidio.json"
local dst="${DEID_CONFIG_DIR}/deid-config.json"
if [ -f "$src" ]; then
entities=$(jq -r '.entities[]?' "$src")
languages=($(jq -r '.languages[]?' "$src"))
recognizers=()
for entity in $entities; do
case "$entity" in
CRYPTO)
recognizers+=("BITCOIN_ADDRESS")
;;
DATE_TIME)
recognizers+=("DATE")
;;
ES_NIE|ES_NIF)
recognizers+=("ES_NIF")
;;
PERSON)
UpdatePresidioSettingTable "${languages[@]}"
;;
*)
recognizers+=("$entity")
;;
esac
done
if [ "${#recognizers[@]}" -ne 0 ]; then
recognizers_json=$(printf '%s\n' "${recognizers[@]}" | jq -R . | jq -cs '[.[] | {entity: ., custom: false, enabled: true}]')
echo -n "{\"recognizers\":${recognizers_json}}" > "$dst"
fi
fi
if [ ! -f "$dst" ]; then
echo '{"recognizers":[]}' > "$dst"
fi
ChangeOwnToPackage "$dst"
rm -f "${PKG_SHARE_DIR}/etc/presidio.json" "${PKG_SHARE_DIR}/etc/presidio.old.json"
}