diff --git a/exec/lib/Settings.php b/exec/lib/Settings.php index ae1ac15..f4cfe9c 100644 --- a/exec/lib/Settings.php +++ b/exec/lib/Settings.php @@ -4,12 +4,12 @@ declare(strict_types=1); final class Settings { public const BASE_DIR = '/usr/local/hitme_plugins/mail-login'; - public const CONFIG_DIR = self::BASE_DIR . '/config'; + public const PLUGIN_DIR = '/usr/local/directadmin/plugins/mail-login'; public const SECRET_DIR = self::BASE_DIR . '/secrets'; public const LOG_DIR = self::BASE_DIR . '/logs'; public const STATE_DIR = self::BASE_DIR . '/state'; public const AUDIT_LOG = self::LOG_DIR . '/audit.log'; - public const EXTERNAL_SETTINGS = self::CONFIG_DIR . '/plugin-settings.conf'; + public const EXTERNAL_SETTINGS = self::PLUGIN_DIR . '/plugin-settings.conf'; /** @var array */ private array $values; diff --git a/plugin-settings.conf b/plugin-settings.conf index fdfbb54..2a95388 100644 --- a/plugin-settings.conf +++ b/plugin-settings.conf @@ -1,3 +1,7 @@ +# Ten plik jest runtime configuration pluginu. +# Plugin czyta ustawienia bezpośrednio z: +# /usr/local/directadmin/plugins/mail-login/plugin-settings.conf + # Czy plugin jest domyślnie dostępny dla wszystkich użytkowników. DEFAULT_ENABLE=true diff --git a/plugin.conf b/plugin.conf index 1f8d4cf..c4a8f32 100644 --- a/plugin.conf +++ b/plugin.conf @@ -2,7 +2,7 @@ name=mail-login id=mail-login type=user author=HITME.PL -version=1.0.6 +version=1.0.7 active=no installed=no user_run_as=root diff --git a/scripts/install.sh b/scripts/install.sh index 57e84cc..16706e0 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -4,15 +4,14 @@ set -eu BASE_DIR="/usr/local/hitme_plugins/mail-login" PLUGIN_DIR="/usr/local/directadmin/plugins/mail-login" -mkdir -p "$BASE_DIR/config" "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state/rate-limit" -chmod 700 "$BASE_DIR/config" "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state" "$BASE_DIR/state/rate-limit" +mkdir -p "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state/rate-limit" +chmod 700 "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state" "$BASE_DIR/state/rate-limit" -if [ ! -f "$BASE_DIR/config/plugin-settings.conf" ]; then - cp "$PLUGIN_DIR/plugin-settings.conf" "$BASE_DIR/config/plugin-settings.conf" - chmod 600 "$BASE_DIR/config/plugin-settings.conf" +if [ -f "$PLUGIN_DIR/plugin-settings.conf" ]; then + chmod 600 "$PLUGIN_DIR/plugin-settings.conf" fi touch "$BASE_DIR/logs/audit.log" chmod 600 "$BASE_DIR/logs/audit.log" -echo "mail-login installed" +echo "mail-login installed; configuration is read from $PLUGIN_DIR/plugin-settings.conf" diff --git a/scripts/update.sh b/scripts/update.sh index 598ffec..a924a8a 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -2,9 +2,14 @@ set -eu BASE_DIR="/usr/local/hitme_plugins/mail-login" -mkdir -p "$BASE_DIR/config" "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state/rate-limit" -chmod 700 "$BASE_DIR/config" "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state" "$BASE_DIR/state/rate-limit" +PLUGIN_DIR="/usr/local/directadmin/plugins/mail-login" + +mkdir -p "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state/rate-limit" +chmod 700 "$BASE_DIR/secrets" "$BASE_DIR/logs" "$BASE_DIR/state" "$BASE_DIR/state/rate-limit" +if [ -f "$PLUGIN_DIR/plugin-settings.conf" ]; then + chmod 600 "$PLUGIN_DIR/plugin-settings.conf" +fi touch "$BASE_DIR/logs/audit.log" chmod 600 "$BASE_DIR/logs/audit.log" -echo "mail-login updated; external configuration preserved" +echo "mail-login updated; configuration is read from $PLUGIN_DIR/plugin-settings.conf" diff --git a/tests/package_contents_test.php b/tests/package_contents_test.php index 3f539d5..03a10c3 100644 --- a/tests/package_contents_test.php +++ b/tests/package_contents_test.php @@ -8,7 +8,7 @@ test('plugin metadata and packaging docs match project rules', function (): void assert_contains('name=mail-login', $conf); assert_contains('id=mail-login', $conf); assert_contains('type=user', $conf); - assert_contains('version=1.0.6', $conf); + assert_contains('version=1.0.7', $conf); assert_contains('user_run_as=root', $conf); assert_contains('/Users/marek/GPT/ChatGPT/da_plugins/mail-login/src', $packing); assert_contains('/Users/marek/GPT/ChatGPT/da_plugins/mail-login/archives/X.Y.Z/mail-login.tar.gz', $packing); diff --git a/tests/settings_test.php b/tests/settings_test.php index 301b286..519109d 100644 --- a/tests/settings_test.php +++ b/tests/settings_test.php @@ -15,6 +15,10 @@ test('settings expose secure defaults from plugin-settings.conf', function (): v assert_same('https://mx1.mojserwer.pl:2222', $settings->targetBaseUrl()); }); +test('settings runtime file is the directadmin plugin settings file', function (): void { + assert_same('/usr/local/directadmin/plugins/mail-login/plugin-settings.conf', Settings::EXTERNAL_SETTINGS); +}); + test('settings reject login key ttl outside production range', function (): void { foreach (['4', '301', 'abc'] as $ttl) { try {