addon-traccar/traccar/rootfs/etc/cont-init.d/mysql.sh
HagenGro 4d447221bd
Update mysql.sh
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2021-11-07 11:05:19 +01:00

61 lines
2.3 KiB
Bash

#!/usr/bin/with-contenv bashio
# ==============================================================================
# Home Assistant Community Add-on: Traccar
# Pre-configures the MySQL clients, if the service is available
# ==============================================================================
readonly CONFIG="/etc/traccar/hassio.xml"
declare host
declare password
declare port
declare username
declare url
if bashio::fs.file_exists "/config/traccar.xml"; then
if xmlstarlet sel -t -v "/properties/entry[@key='database.driver']" \
"/config/traccar.xml" >/dev/null 2>&1;
then
exit 0
fi
fi
if bashio::services.available "mysql"; then
host=$(bashio::services "mysql" "host")
password=$(bashio::services "mysql" "password")
port=$(bashio::services "mysql" "port")
username=$(bashio::services "mysql" "username")
# Create database if not exists
echo "CREATE DATABASE IF NOT EXISTS traccar;" \
| mysql -h "${host}" -P "${port}" -u "${username}" -p"${password}"
# Update Traccar XML configuration for database
xmlstarlet ed -L -s /properties \
-t elem -n entry_placeholder -v "com.mysql.cj.jdbc.Driver" \
-i //entry_placeholder -t attr -n "key" -v "database.driver" \
-r //entry_placeholder -v entry \
"${CONFIG}"
url="jdbc:mysql://${host}:${port}/traccar?serverTimezone=UTC&useSSL=false&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=''"
xmlstarlet ed -L -s /properties \
-t elem -n entry_placeholder -v "${url}" \
-i //entry_placeholder -t attr -n "key" -v "database.url" \
-r //entry_placeholder -v entry \
"${CONFIG}"
xmlstarlet ed -L -s /properties \
-t elem -n entry_placeholder -v "${username}" \
-i //entry_placeholder -t attr -n "key" -v "database.user" \
-r //entry_placeholder -v entry \
"${CONFIG}"
xmlstarlet ed -L -s /properties \
-t elem -n entry_placeholder -v "${password}" \
-i //entry_placeholder -t attr -n "key" -v "database.password" \
-r //entry_placeholder -v entry \
"${CONFIG}"
else
bashio::log.warning "Traccar is using the internal H2 default database!"
bashio::log.warning "THIS IS NOT RECOMMENDED!!!"
bashio::log.warning "Please install the official MariaDB add-on, to ensure"
bashio::log.warning "you are using a solid database for Traccar."
fi