📦 chore(kresus): add Kresus addon files and configuration

 feat(kresus): add Dockerfile and build.yaml for building Kresus addon image
 feat(kresus): add config.yaml for Kresus addon configuration
 feat(kresus): add icon.png and logo.png for Kresus addon branding
 feat(kresus): add rootfs directory with necessary files for Kresus addon
 feat(kresus): add translations/en.yaml for English translations of Kresus addon

🐛 fix(kresus): fix finish script to handle service failure and restart
🐛 fix(kresus): fix run script to initialize data directory and generate Kresus salt

🔧 chore(kresus): update woob dependencies install method in Dockerfile
🔧 chore(kresus): update Kresus version to 0.6.2 in CHANGELOG.md

🔧 chore(kresus): update Kresus dependencies in DOCS.md
🔧 chore(kresus): update Kresus dependencies in README.md

🔧 chore(kresus): update Kresus dependencies in apparmor.txt
🔧 chore(kresus): update Kresus dependencies in requirements.txt
🔧 chore(kresus): update Kresus dependencies in start.sh

🔧 chore(kresus): update Kresus dependencies in translations/en.yaml

🔧 chore(kresus): update Kresus dependencies in build.yaml

🔧 chore(kresus): update Kresus dependencies in config.yaml

🔧 chore(kresus): update Kresus dependencies in icon.png

🔧 chore(kresus): update Kresus dependencies in logo.png

🔧 chore(kresus): update Kresus dependencies in rootfs/etc/kresus/config.ini

🔧 chore(kresus): update Kresus dependencies in rootfs/etc/services.d/kresus/finish

🔧 chore(kresus): update Kresus dependencies in rootfs/etc/services.d/kresus/run

🔧 chore(kresus): update Kresus dependencies in rootfs/requirements.txt

🔧 chore(kresus): update Kresus dependencies in rootfs/usr/libexec/kresus/start.sh

🔧 chore(kresus): update Kresus
This commit is contained in:
MrRaph_
2024-03-06 11:27:44 +01:00
parent ddeb64cef5
commit 4e23d7dd7f
15 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,270 @@
; Hi there! This is the configuration file for
; Kresus. Please make sure to read all the options before setting up
; Kresus for the first time.
;
[kresus]
; This is where Kresus stores additional data, as the latest bank
; scrapping modules. It should be writeable by the user which launches
; the Kresus executable.
; Can be removed; defaults to HOME_DIR/.kresus.
; Overriden by the KRESUS_DIR environment variable, if it's set.
; Example:
; datadir=/home/ben/.kresus
datadir=
; A user id obtained from using the "kresus create-user" command.
; This allows sharing a single database with several users. If your
; instance is only planned to host a single user, you can keep it
; disabled, and Kresus will know how to automatically generate a new
; user.
; Overriden by the KRESUS_USER_ID environment variable, if it's set.
; Example:
; userid=1
userid=
; This is the port that Kresus will run on. It is recommended not
; to expose it on port 80 directly but to use a reverse-proxy
; configuration like Nginx, Caddy or Apache.
; Can be removed; defaults to 9876.
; Overriden by the PORT environment variable, if it's set.
; Example:
; port=9876
port=
; The host on which the Kresus server will listen to.
; Can be removed; defaults to 127.0.0.1.
; Overriden by the HOST environment variable, if it's set.
; Example:
; host=127.0.0.1
host=
; The executable version of Python that is going to get used when
; interacting with Python scripts. This can be python or python3.
; Can be removed; defaults to python3.
; Overriden by the KRESUS_PYTHON_EXEC environment variable, if it's set.
; Example:
; python_exec=python3
python_exec=
; The directory prefix in the URL, if Kresus is to be served from a
; subdirectory. For instance, if your website is hosted at example.com
; and the url prefix is "money", then Kresus will be reachable at
; example.com/money. By default, it's '', meaning that Kresus has its own
; subdomain.
; Can be removed; defaults to "".
; Overriden by the KRESUS_URL_PREFIX environment variable, if it's set.
; Example:
; url_prefix=/money
url_prefix=
; A salt value used in encryption algorithms (used for instance to
; encrypt/decrypt exports). It should be a random string value with
; at least 16 characters if you decide to provide it.
; Overriden by the KRESUS_SALT environment variable, if it's set.
; Example:
; salt=gj4J89fkjf4h29aDi0f{}fu4389sejk`9osk`
salt=
; Set this to true if you want to use this instance only in demo
; mode, and to never allow users to link their personal accounts.
;
; WARNING! Switching this on and off may trigger data loss. Note that it
; is still possible to try Kresus in demo mode, even if this is not set
; to true. Setting this to true will *force* demo mode, and prevent users
; from leaving this mode.
; Can be removed; defaults to false.
; Overriden by the KRESUS_FORCE_DEMO_MODE environment variable, if it's set.
; Example:
; force_demo_mode=true
force_demo_mode=
; If set to a string, will enable HTTP Basic Auth, by splitting the
; string on a colon, i.e. "<username>:<passwd>"
; Overriden by the KRESUS_AUTH environment variable, if it's set.
; Example:
; auth=foo:bar
auth=
[woob]
; The directory in which Woob core is stored. If empty, indicates
; that woob is already in the PYTHON_PATH (e.g. installed at the global
; level)
; Overriden by the KRESUS_WOOB_DIR environment variable, if it's set.
; Example:
; srcdir=/home/ben/code/woob
srcdir=
; Path to a file containing a valid Woob's source list directory.
; If empty (the default), indicates that Kresus will generate its own
; source list file and will store it in
; KRESUS_DIR/woob-data/sources.list.
; Overriden by the KRESUS_WOOB_SOURCES_LIST environment variable, if it's set.
; Example:
; sources_list=/home/ben/code/woob/sources.list
sources_list=
[email]
; The transport method you want to use. Can be either:
; * "sendmail": relies on sendmail executable to be available on your
; system and only sendmail-specific parameters are used,
;
; * "smtp": you should provide proper SMTP credentials to use, in the
; dedicated configuration entries.
;
; If empty, no emails will be sent by Kresus.
; Overriden by the KRESUS_EMAIL_TRANSPORT environment variable, if it's set.
; Example:
; transport=smtp
transport=
; The path to the sendmail executable to use. If empty, indicates
; that the default sendmail executable will be used.
; Overriden by the KRESUS_EMAIL_SENDMAIL_BIN environment variable, if it's set.
; Example:
; sendmail_bin=/usr/bin/sendmail
sendmail_bin=
; The email address from which email alerts will be sent. Make sure
; that your domain DNS is correctly configured and that you've done
; what's needed to prevent email alerts from landing in the spam folder.
; Overriden by the KRESUS_EMAIL_FROM environment variable, if it's set.
; Example:
; from=kresus@domain.tld
from=
; The network address (ipv4, ipv6 or FQDN) of the SMTP server.
; Overriden by the KRESUS_EMAIL_HOST environment variable, if it's set.
; Example:
; host=mail.domain.tld
host=
; The port to which the SMTP server listens. Default values tend to
; be: 25 (server to server), or 587 (clients to server), or 465
; (nonstandard).
; Overriden by the KRESUS_EMAIL_PORT environment variable, if it's set.
; Example:
; port=465
port=
; The username used during authentication to the SMTP server. If
; empty, indicates an anonymous connection will be used.
; Overriden by the KRESUS_EMAIL_USER environment variable, if it's set.
; Example:
; user=login
user=
; The password used during authentication to the SMTP server. If
; empty, indicates no password will be used.
; Overriden by the KRESUS_EMAIL_PASSWORD environment variable, if it's set.
; Example:
; password=hunter2
password=
; If set to true, will force using a TLS connection. By default,
; emails are sent with STARTTLS, i.e. using TLS if available.
; Can be removed; defaults to false.
; Overriden by the KRESUS_EMAIL_FORCE_TLS environment variable, if it's set.
; Example:
; force_tls=false
force_tls=
; If set to false, will allow self-signed TLS certificates.
; Can be removed; defaults to true.
; Overriden by the KRESUS_EMAIL_REJECT_UNAUTHORIZED_TLS environment variable, if it's set.
; Example:
; reject_unauthorized_tls=true
reject_unauthorized_tls=
[notifications]
; The baseurl from which apprise-api will be called for
; notifications to be sent.
; See https://github.com/caronc/apprise-api#installation for
; installation
; Overriden by the KRESUS_APPRISE_API_BASE_URL environment variable, if it's set.
; Example:
; appriseApiBaseUrl=http://localhost:8000/
appriseApiBaseUrl=
[logs]
; The path to the log file to use. If empty, defaults to kresus.log
; in datadir.
; Overriden by the KRESUS_LOG_FILE environment variable, if it's set.
; Example:
; log_file=/var/log/kresus.log
log_file=
[db]
; Database type supported by Kresus, to choose among:
; - postgres
; - sqlite
;
; It must be set by the user. PostgreSQL is recommended and strongly supported; your experience with other databases might vary.
;
; Note using sqlite is *strongly discouraged* because it can't properly handle certain kinds of database migrations. It is only intended for development purposes.
; Overriden by the KRESUS_DB_TYPE environment variable, if it's set.
; Example:
; type=sqlite
type=
; Logging level for the SQL queries. Possible values are:
;
; - all: will log every SQL query, including queries causing errors.
; - error (default value): will only log SQL queries resulting in errors. This is useful for debugging purposes.
; - none: nothing will be logged.
; Can be removed; defaults to error.
; Overriden by the KRESUS_DB_LOG environment variable, if it's set.
; Example:
; log=error
log=
; Path to the sqlite database file. Make sure that the user running
; Kresus has the right permissions to write into this file. Required only for
; sqlite.
; Overriden by the KRESUS_DB_SQLITE_PATH environment variable, if it's set.
; Example:
; sqlite_path=/tmp/dev.sqlite
sqlite_path=
; Path to a directory containing a Unix socket to connect to the
; database, or host address of the database server. Required for postgres.
;
; If using a Unix socket, the socket file's name will be inferred from the
; standard postgres name and the port number.
; Can be removed; defaults to localhost for postgres.
; Overriden by the KRESUS_DB_HOST environment variable, if it's set.
; Example:
; host=localhost
host=
; Port of the database server. Required for postgres, even when
; using a Unix socket (the port is used to compute the socket's file name).
; Can be removed; defaults to 5432 for postgres.
; Overriden by the KRESUS_DB_PORT environment variable, if it's set.
; Example:
; port=5432
port=
; Username to connect to the database server. Required for postgres.
; Overriden by the KRESUS_DB_USERNAME environment variable, if it's set.
; Example:
; username=benjamin
username=
; Password to connect to the database server. Required for postgres.
; Overriden by the KRESUS_DB_PASSWORD environment variable, if it's set.
; Example:
; password=hunter2
password=
; Database name to use. Required for postgres.
; Can be removed; defaults to kresus.
; Overriden by the KRESUS_DB_NAME environment variable, if it's set.
; Example:
; name=kresus
name=

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bashio
# ==============================================================================
# Take down the S6 supervision tree when example fails
# s6-overlay docs: https://github.com/just-containers/s6-overlay
# ==============================================================================
declare APP_EXIT_CODE=${1}
if [[ "${APP_EXIT_CODE}" -ne 0 ]] && [[ "${APP_EXIT_CODE}" -ne 256 ]]; then
bashio::log.warning "Halt add-on with exit code ${APP_EXIT_CODE}"
echo "${APP_EXIT_CODE}" > /run/s6-linux-init-container-results/exitcode
exec /run/s6/basedir/bin/halt
fi
bashio::log.info "Service restart after closing"

View File

@@ -0,0 +1,25 @@
#!/usr/bin/with-contenv bashio
# ==============================================================================
# Init data directory
# ==============================================================================
if ! bashio::fs.directory_exists "${KRESUS_DIR}"; then
bashio::log.info "Create data directory \"${KRESUS_DIR}\""
mkdir "${KRESUS_DIR}"
chown "${KRESUS_USER}:${KRESUS_USER}" "${KRESUS_DIR}"
chmod 0700 "${KRESUS_DIR}"
fi
# ==============================================================================
# Generate Kresus salt once
# ==============================================================================
if ! bashio::fs.file_exists "/data/kresus_salt"; then
pwgen 32 1 > /data/kresus_salt
chown "${KRESUS_USER}:${KRESUS_USER}" /data/kresus_salt
chmod 400 /data/kresus_salt
fi
# ==============================================================================
# Start service as unprivileged user
# ==============================================================================
exec s6-setuidgid "${KRESUS_USER}" /usr/libexec/kresus/start.sh

View File

@@ -0,0 +1 @@
python-jose

View File

@@ -0,0 +1,55 @@
#!/usr/bin/with-contenv bashio
WOOB_DIR="/woob"
KRESUS_INI_FILE="/etc/kresus/config.ini"
# ==============================================================================
# Pull latest Woob version
# ==============================================================================
cd "${WOOB_DIR}" || bashio::exit.nok
bashio::log.info "Clear woob install"
rm -rf {,.[!.],..?}*
bashio::log.info "Add clean woob install"
wget -qO- https://gitlab.com/woob/woob/-/archive/master/woob-master.tar.gz | tar xz --strip-components=1
bashio::log.info "Updating Woob dependencies..."
pip3 install --no-cache-dir --prefix .py-deps .
PYTHONPATH=$(python3 -c "import sys, os; print(os.sep.join(['$(pwd)', '.py-deps', 'lib', f'python{sys.version_info.major}.{sys.version_info.minor}', 'site-packages']))")
export PYTHONPATH
bashio::log.info "Done updating Woob dependencies."
# ==============================================================================
# Set-up environment variables
# ==============================================================================
# Basic Kresus options
export PORT=9876
export HOST=0.0.0.0
export KRESUS_PYTHON_EXEC=python3
export KRESUS_WOOB_DIR="${WOOB_DIR}"
KRESUS_SALT="$(cat /data/kresus_salt)"
export KRESUS_SALT
# Kresus Basic auth
if bashio::config.has_value 'http_basicauth'; then
KRESUS_AUTH="$(bashio::config 'http_basicauth')"
export KRESUS_AUTH
fi
# Kresus database
export KRESUS_DB_TYPE="postgres"
KRESUS_DB_HOST="$(bashio::config 'postgres_hostname')"
KRESUS_DB_PORT="$(bashio::config 'postgres_port')"
KRESUS_DB_USERNAME="$(bashio::config 'postgres_user')"
KRESUS_DB_PASSWORD="$(bashio::config 'postgres_password')"
KRESUS_DB_NAME="$(bashio::config 'postgres_database')"
export KRESUS_DB_HOST KRESUS_DB_PORT KRESUS_DB_USERNAME \
KRESUS_DB_PASSWORD KRESUS_DB_NAME
# ==============================================================================
# Start Kresus
# ==============================================================================
kresus -c ${KRESUS_INI_FILE}