fix: read settings from directadmin plugin directory

This commit is contained in:
Marek Miklewicz
2026-06-30 18:51:52 +02:00
parent 42afc5853c
commit 227c16410c
7 changed files with 25 additions and 13 deletions
+2 -2
View File
@@ -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<string,string> */
private array $values;
+4
View File
@@ -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
+1 -1
View File
@@ -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
+5 -6
View File
@@ -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"
+8 -3
View File
@@ -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"
+1 -1
View File
@@ -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);
+4
View File
@@ -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 {