This commit is contained in:
2026-03-07 22:40:46 +01:00
parent 9566b8c36a
commit 706917ec7c
5 changed files with 18 additions and 5 deletions

View File

@@ -18,8 +18,7 @@ $module = 'pi_control';
$pdo = module_fn($module, 'pdo');
module_fn($module, 'ensure_schema');
$table = fn(string $name) => module_fn($module, 'table', $name);
$settingsReloadSec = (int)(getenv('PI_CONTROL_SETTINGS_RELOAD_SEC') !== false ? (int)getenv('PI_CONTROL_SETTINGS_RELOAD_SEC') : 30);
$settingsReloadSec = $settingsReloadSec > 0 ? $settingsReloadSec : 30;
$settingsReloadSec = 30;
$redis = null;
$queueName = 'pi_control:queue';
@@ -37,6 +36,9 @@ while (true) {
$queueName = (string)($settings['redis']['queue'] ?? ($settings['redis.queue'] ?? (getenv('PI_CONTROL_REDIS_QUEUE') ?: 'pi_control:queue')));
$defaultTimeout = (int)($settings['exec_default_timeout'] ?? (getenv('PI_CONTROL_EXEC_DEFAULT_TIMEOUT') !== false ? (int)getenv('PI_CONTROL_EXEC_DEFAULT_TIMEOUT') : 300));
$defaultTimeout = $defaultTimeout > 0 ? $defaultTimeout : 300;
$settingsReloadSec = (int)($settings['settings_reload_sec'] ?? (getenv('PI_CONTROL_SETTINGS_RELOAD_SEC') !== false ? (int)getenv('PI_CONTROL_SETTINGS_RELOAD_SEC') : 30));
$settingsReloadSec = $settingsReloadSec > 0 ? $settingsReloadSec : 30;
$strictHostKey = !empty($settings['terminal_strict_hostkey']) || getenv('PI_CONTROL_STRICT_HOSTKEY') === '1';
$redis = module_fn($module, 'redis');
$lastSettingsAt = time();
}

View File

@@ -34,6 +34,8 @@ USER="$(echo "${JSON}" | jq -r '.host.username')"
AUTH_TYPE="$(echo "${JSON}" | jq -r '.host.auth_type')"
KEY_PATH="$(echo "${JSON}" | jq -r '.host.key_path')"
PASSWORD="$(echo "${JSON}" | jq -r '.host.password')"
STRICT_HOSTKEY="$(echo "${JSON}" | jq -r '.strict_hostkey // false')"
TMUX_SESSION_JSON="$(echo "${JSON}" | jq -r '.tmux_session // ""')"
COMMAND="$(echo "${JSON}" | jq -r '.command // ""')"
if [[ -z "${COMMAND}" && -n "${ENC_COMMAND}" ]]; then
@@ -46,14 +48,17 @@ if [[ -z "${HOST}" || -z "${USER}" ]]; then
fi
SSH_OPTS=()
if [[ "${PI_CONTROL_STRICT_HOSTKEY:-}" == "1" ]]; then
if [[ "${STRICT_HOSTKEY}" == "true" || "${PI_CONTROL_STRICT_HOSTKEY:-}" == "1" ]]; then
SSH_OPTS=(-o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/root/.ssh/known_hosts)
else
SSH_OPTS=(-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null)
fi
SSH_TARGET="${USER}@${HOST}"
TMUX_SESSION="${PI_CONTROL_TMUX_SESSION:-nexus}"
TMUX_SESSION="${TMUX_SESSION_JSON:-}"
if [[ -z "${TMUX_SESSION}" ]]; then
TMUX_SESSION="${PI_CONTROL_TMUX_SESSION:-nexus}"
fi
if [[ -n "${COMMAND}" ]]; then
COMMAND_B64="$(printf '%s' "${COMMAND}" | base64)"
REMOTE_CMD="CMD_B64='${COMMAND_B64}'; CMD=\"\$(printf '%s' \"\$CMD_B64\" | base64 -d)\"; if command -v tmux >/dev/null 2>&1; then SESSION=\"${TMUX_SESSION}\"; tmux has-session -t \"\$SESSION\" 2>/dev/null || tmux new-session -d -s \"\$SESSION\"; tmux send-keys -t \"\$SESSION\" \"\$CMD\" C-m; exec tmux attach -t \"\$SESSION\"; else eval \"\$CMD\"; exec /bin/bash -il; fi"