nginx - Database Update zum Anlegen einer Acceess list
PixelStarFish 於 5 月之前 修改了此頁面

---------------------------------------------------------------------------

Access List-ID prüfen oder erstellen (finale Version für NPM ≥2.11)

---------------------------------------------------------------------------

ACCESSLIST_ID=$(sqlite3 "$DB_PATH" "SELECT id FROM access_list WHERE name='$ACCESSLIST_NAME';")

if [ -z "$ACCESSLIST_ID" ]; then echo "🆕 Erstelle neue Access List: $ACCESSLIST_NAME" NOW=$(date +%s) OWNER_ID=$(sqlite3 "$DB_PATH" "SELECT id FROM user WHERE is_deleted=0 ORDER BY id ASC LIMIT 1;") if [ -z "$OWNER_ID" ]; then

OWNER_ID=1

fi sqlite3 "$DB_PATH" "INSERT INTO access_list (name, satisfy_any, created_on, modified_on, owner_user_id, meta) VALUES ('$ACCESSLIST_NAME', 1, $NOW, $NOW, $OWNER_ID, '{}');" ACCESSLIST_ID=$(sqlite3 "$DB_PATH" "SELECT id FROM access_list WHERE name='$ACCESSLIST_NAME';") else echo "ℹ️ Access List '$ACCESSLIST_NAME' existiert bereits (ID $ACCESSLIST_ID)" fi

---------------------------------------------------------------------------

bcrypt-Hash erzeugen

---------------------------------------------------------------------------

HASH=$(docker run --rm jc21/nginx-proxy-manager /usr/bin/htpasswd -nbB "$USERNAME" "$PASSWORD" \ | cut -d: -f2 | tr -d '\r')

---------------------------------------------------------------------------

Benutzer hinzufügen oder aktualisieren

---------------------------------------------------------------------------

if [ -n "$ACCESSLIST_ID" ]; then echo "👤 Füge Benutzer '$USERNAME' hinzu oder aktualisiere..." NOW=$(date +%s) EXISTING_USER=$(sqlite3 "$DB_PATH" "SELECT id FROM access_list_auth WHERE username='$USERNAME' AND access_list_id=$ACCESSLIST_ID;") if [ -n "$EXISTING_USER" ]; then

sqlite3 "$DB_PATH" "UPDATE access_list_auth SET password='$HASH', modified_on=$NOW WHERE id=$EXISTING_USER;"

else

sqlite3 "$DB_PATH" "INSERT INTO access_list_auth (access_list_id, username, password, created_on, modified_on, meta) VALUES ($ACCESSLIST_ID, '$USERNAME', '$HASH', $NOW, $NOW, '{}');"

fi else echo "❌ Konnte keine gültige AccessList-ID ermitteln!" exit 1 fi

---------------------------------------------------------------------------

Access Rule hinzufügen (allow all)

---------------------------------------------------------------------------

COUNT=$(sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM access_list_client WHERE access_list_id=$ACCESSLIST_ID;")

if [ "$COUNT" -eq 0 ]; then echo "🌐 Erstelle Default-Access-Regel (allow all)" NOW=$(date +%s) # Prüfen, ob Spalte 'policy' oder 'directive' existiert POLICY_COL=$(sqlite3 "$DB_PATH" "PRAGMA table_info(access_list_client);" | grep -c "policy") if [ "$POLICY_COL" -gt 0 ]; then

sqlite3 "$DB_PATH" "INSERT INTO access_list_client (access_list_id, address, policy, created_on, modified_on, meta) VALUES ($ACCESSLIST_ID, 'all', 'allow', $NOW, $NOW, '{}');"

else

sqlite3 "$DB_PATH" "INSERT INTO access_list_client (access_list_id, address, directive, created_on, modified_on, meta) VALUES ($ACCESSLIST_ID, 'all', 'allow', $NOW, $NOW, '{}');"

fi fi

---------------------------------------------------------------------------

Optional: Proxy-Host zuordnen

---------------------------------------------------------------------------

if [ -n "$PROXYHOST_ID" ]; then echo "🔗 Verknüpfe Access List mit Proxy Host ID $PROXYHOST_ID" sqlite3 "$DB_PATH" "INSERT INTO access_list_proxy_host (access_list_id, proxy_host_id) VALUES ($ACCESSLIST_ID, $PROXYHOST_ID);" fi