Skip to content

Commit e4c3bd1

Browse files
committed
feat: agregar gestión de claves SSH y configuración de puertos en scripts de servidor
1 parent 5536a5f commit e4c3bd1

13 files changed

+171
-31
lines changed

docker-compose.dev.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,18 @@ services:
99
- dev_data:/data
1010
environment:
1111
- LGSM_PASSWORD=${LGSM_PASSWORD}
12-
- SSH_KEY=${SSH_KEY}
1312
- SSH_PORT=${SSH_PORT}
13+
- SSH_KEY=${SSH_KEY}
14+
1415
- KF2_GAME_PORT=${KF2_GAME_PORT:-7777}
1516
- KF2_QUERY_PORT=${KF2_QUERY_PORT:-27015}
16-
- KF2_WEBADMIN=${KF2_WEBADMIN:-false}
1717
- KF2_WEBADMIN_PORT=${KF2_WEBADMIN_PORT:-8080}
1818
- KF2_STEAM_PORT=${KF2_STEAM_PORT:-20560}
1919
- KF2_NTP_PORT=${KF2_NTP_PORT:-123}
20+
21+
- KF2_WEBADMIN=${KF2_WEBADMIN:-false}
22+
- KF2_ADMIN_PASSWORD=${KF2_ADMIN_PASSWORD}
23+
- KF2_MULTI_ADMIN=${KF2_MULTI_ADMIN:-false}
2024
ports:
2125
- "${SSH_PORT:-22}:${SSH_PORT:-22}/tcp"
2226
- "${KF2_GAME_PORT:-7777}:${KF2_GAME_PORT:-7777}/udp"

docker-compose.host.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ services:
88
- kf2_data:/data
99
environment:
1010
- LGSM_PASSWORD=${LGSM_PASSWORD}
11-
- SSH_KEY=${SSH_KEY}
1211
- SSH_PORT=${SSH_PORT}
12+
- SSH_KEY=${SSH_KEY}
13+
1314
- KF2_GAME_PORT=${KF2_GAME_PORT:-7777}
1415
- KF2_QUERY_PORT=${KF2_QUERY_PORT:-27015}
15-
- KF2_WEBADMIN=${KF2_WEBADMIN:-false}
1616
- KF2_WEBADMIN_PORT=${KF2_WEBADMIN_PORT:-8080}
1717
- KF2_STEAM_PORT=${KF2_STEAM_PORT:-20560}
1818
- KF2_NTP_PORT=${KF2_NTP_PORT:-123}
1919

20+
- KF2_WEBADMIN=${KF2_WEBADMIN:-false}
21+
- KF2_ADMIN_PASSWORD=${KF2_ADMIN_PASSWORD}
22+
2023
volumes:
2124
kf2_data:
2225
name: kf2_data

docker-compose.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@ services:
77
- kf2_data:/data
88
environment:
99
- LGSM_PASSWORD=${LGSM_PASSWORD}
10-
- SSH_KEY=${SSH_KEY}
1110
- SSH_PORT=${SSH_PORT}
11+
- SSH_KEY=${SSH_KEY}
12+
1213
- KF2_GAME_PORT=${KF2_GAME_PORT:-7777}
1314
- KF2_QUERY_PORT=${KF2_QUERY_PORT:-27015}
14-
- KF2_WEBADMIN=${KF2_WEBADMIN:-false}
1515
- KF2_WEBADMIN_PORT=${KF2_WEBADMIN_PORT:-8080}
1616
- KF2_STEAM_PORT=${KF2_STEAM_PORT:-20560}
1717
- KF2_NTP_PORT=${KF2_NTP_PORT:-123}
18+
19+
- KF2_WEBADMIN=${KF2_WEBADMIN:-false}
20+
- KF2_ADMIN_PASSWORD=${KF2_ADMIN_PASSWORD}
1821
ports:
1922
- "${SSH_PORT:-22}:${SSH_PORT:-22}/tcp"
2023
- "${KF2_GAME_PORT:-7777}:${KF2_GAME_PORT:-7777}/udp"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Script: post-install-config.sh
2+
# Script: KF2-post-install-config.sh
33
# Description: Executes server configuration scripts after KF2 installation
44
# Location: /app/docker-scripts/ (executed during container startup)
55

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Script: ssh.sh
2+
# Script: SSH-config.sh
33
# Description: Configures the SSH service in the container, generates host keys (RSA, ECDSA, and ED25519),
44
# and updates the SSH configuration to use a persistent directory ($HOME/ssh). It also enables or disables
55
# password authentication based on the LGSM_PASSWORD variable.
@@ -36,14 +36,14 @@ current_auth=$(grep -E '^[# ]*PasswordAuthentication[ ]+(yes|no)' /etc/ssh/sshd_
3636
if [ -n "$current_auth" ]; then
3737
if [ "$current_auth" != "$desired_auth" ]; then
3838
sed -i "/^[# ]*PasswordAuthentication[ ]\+/c\PasswordAuthentication ${desired_auth}" /etc/ssh/sshd_config
39-
echo "[ssh.sh] PasswordAuthentication cambiado: $current_auth$desired_auth"
39+
echo "[SSH-config.sh] PasswordAuthentication cambiado: $current_auth$desired_auth"
4040
ssh_config_changed=1
4141
else
42-
echo "[ssh.sh] PasswordAuthentication ya configurado en $desired_auth, sin cambios."
42+
echo "[SSH-config.sh] PasswordAuthentication ya configurado en $desired_auth, sin cambios."
4343
fi
4444
else
4545
echo "PasswordAuthentication ${desired_auth}" >> /etc/ssh/sshd_config
46-
echo "[ssh.sh] PasswordAuthentication agregado: $desired_auth"
46+
echo "[SSH-config.sh] PasswordAuthentication agregado: $desired_auth"
4747
ssh_config_changed=1
4848
fi
4949

@@ -53,18 +53,18 @@ if [ -n "${SSH_PORT}" ]; then
5353
if [ -n "$current_port" ]; then
5454
if [ "$current_port" != "$SSH_PORT" ]; then
5555
sed -i "/^[# ]*Port[ ]\+/c\Port ${SSH_PORT}" /etc/ssh/sshd_config
56-
echo "[ssh.sh] Puerto SSH cambiado: $current_port$SSH_PORT"
56+
echo "[SSH-config.sh] Puerto SSH cambiado: $current_port$SSH_PORT"
5757
ssh_config_changed=1
5858
else
59-
echo "[ssh.sh] Puerto SSH ya configurado en $SSH_PORT, sin cambios."
59+
echo "[SSH-config.sh] Puerto SSH ya configurado en $SSH_PORT, sin cambios."
6060
fi
6161
else
6262
echo "Port ${SSH_PORT}" >> /etc/ssh/sshd_config
63-
echo "[ssh.sh] Puerto SSH agregado: $SSH_PORT"
63+
echo "[SSH-config.sh] Puerto SSH agregado: $SSH_PORT"
6464
ssh_config_changed=1
6565
fi
6666
else
67-
echo "[ssh.sh] SSH_PORT no definido, usando configuración por defecto."
67+
echo "[SSH-config.sh] SSH_PORT no definido, usando configuración por defecto."
6868
fi
6969

7070
# Recargar/reiniciar solo si hubo cambios

entrypoint.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export KF2_WEBADMIN_PORT=${KF2_WEBADMIN_PORT}
5959
export KF2_WEBADMIN=${KF2_WEBADMIN}
6060
export KF2_STEAM_PORT=${KF2_STEAM_PORT}
6161
export KF2_NTP_PORT=${KF2_NTP_PORT}
62+
export KF2_ADMIN_PASSWORD=${KF2_ADMIN_PASSWORD}
6263

6364
cd /app || exit
6465

example.env

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# =============================================================================
2-
# DOCKER KF2 COMPETITIVE CONTAINER CONFIGURATION
2+
# DOCKER KF2 CONTAINER CONFIGURATION
33
# =============================================================================
44
# IMPORTANT: This file contains sensitive credentials.
55
# - Copy this file to .env: cp example.env .env
@@ -39,14 +39,26 @@ KF2_QUERY_PORT=27015
3939
# Default: 8080 (TCP)
4040
KF2_WEBADMIN_PORT=8080
4141

42-
# Web Admin enabled - Enable/disable the web administration panel
43-
# Default: false (true/false)
44-
KF2_WEBADMIN=false
45-
4642
# Steam networking port - Used by Steam for server communication
4743
# Default: 20560 (UDP)
4844
KF2_STEAM_PORT=20560
4945

5046
# NTP port - Only needed for Weekly Outbreak mode (time synchronization)
5147
# Default: 123 (UDP)
52-
KF2_NTP_PORT=123
48+
KF2_NTP_PORT=123
49+
50+
# -----------------------------------------------------------------------------
51+
# KILLING FLOOR 2 ADMIN CONFIGURATION
52+
# -----------------------------------------------------------------------------
53+
54+
# Web Admin enabled - Enable/disable the web administration panel
55+
# Default: false (true/false)
56+
KF2_WEBADMIN=false
57+
58+
# Admin password for the KF2 WebAdmin (leave blank for no admin password)
59+
# Default: (blank)
60+
KF2_ADMIN_PASSWORD=
61+
62+
# Multi admin support for WebAdmin (true/false)
63+
# Default: false
64+
KF2_MULTI_ADMIN=false
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/bash
2-
# Script: manage-bashrc.sh
2+
# Script: BASH-manager.sh
33
# Descripción: Gestiona la existencia y permisos de .bashrc para el usuario linuxgsm
44

55

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
2+
#!/bin/bash
3+
# Script: KF2-admin-manager.sh
4+
# Descripción: Gestiona el valor de AdminPassword en LinuxServer-KFGame.ini según la variable KF2_ADMIN_PASSWORD
5+
# y la opción de multi-admin en KFWebAdmin.ini según KF2_MULTI_ADMIN
6+
7+
CONFIG_FILE="$HOME/serverfiles/KFGame/Config/kf2server/LinuxServer-KFGame.ini"
8+
WEBADMIN_INI="$HOME/serverfiles/KFGame/Config/kf2server/KFWebAdmin.ini"
9+
10+
if [ ! -f "$CONFIG_FILE" ]; then
11+
echo "❌ No se encontró $CONFIG_FILE"
12+
exit 1
13+
fi
14+
15+
ADMIN_PASSWORD="${KF2_ADMIN_PASSWORD}"
16+
MULTI_ADMIN="${KF2_MULTI_ADMIN}"
17+
18+
if [ "$MULTI_ADMIN" = "false" ]; then
19+
if [ -f "$HOME/serverfiles/KFGame/Config/kf2server/KFMultiAdmin.ini" ]; then
20+
rm -f "$HOME/serverfiles/KFGame/Config/kf2server/KFMultiAdmin.ini"
21+
echo "[KF2-admin-manager.sh] Archivo KFMultiAdmin.ini eliminado porque KF2_MULTI_ADMIN=false."
22+
fi
23+
fi
24+
25+
# --- Multi Admin WebAdmin ---
26+
if [ -f "$WEBADMIN_INI" ]; then
27+
if [ "$MULTI_ADMIN" = "true" ]; then
28+
# Si la línea ya existe en la sección, no hacer nada
29+
if ! awk '/\[WebAdmin.WebAdmin\]/{f=1} /\[/{if($0!="[WebAdmin.WebAdmin]")f=0} f && /AuthenticationClass=WebAdmin.MultiWebAdminAuth/{found=1} END{exit !found}' "$WEBADMIN_INI"; then
30+
# Agregar la línea al final de la sección [WebAdmin.WebAdmin]
31+
awk '
32+
BEGIN{added=0}
33+
/^\[WebAdmin.WebAdmin\]/{print;in_section=1;next}
34+
/^\[/{if(in_section&&!added){print "AuthenticationClass=WebAdmin.MultiWebAdminAuth";added=1}in_section=0}
35+
{print}
36+
END{if(in_section&&!added)print "AuthenticationClass=WebAdmin.MultiWebAdminAuth"}
37+
' "$WEBADMIN_INI" > "$WEBADMIN_INI.tmp" && mv "$WEBADMIN_INI.tmp" "$WEBADMIN_INI"
38+
echo "[KF2-admin-manager.sh] Multi admin habilitado en $WEBADMIN_INI"
39+
else
40+
echo "[KF2-admin-manager.sh] Multi admin ya estaba habilitado en $WEBADMIN_INI"
41+
fi
42+
else
43+
# Eliminar la línea si existe en la sección
44+
awk '
45+
BEGIN{in_section=0}
46+
/^\[WebAdmin.WebAdmin\]$/{in_section=1;print;next}
47+
/^\[/{if(in_section){in_section=0}}
48+
{if(!(in_section && $0=="AuthenticationClass=WebAdmin.MultiWebAdminAuth"))print}
49+
' "$WEBADMIN_INI" > "$WEBADMIN_INI.tmp" && mv "$WEBADMIN_INI.tmp" "$WEBADMIN_INI"
50+
echo "[KF2-admin-manager.sh] Multi admin deshabilitado (o ya no estaba) en $WEBADMIN_INI"
51+
fi
52+
else
53+
echo "⚠️ No se encontró $WEBADMIN_INI, se omite gestión de multi admin."
54+
fi
55+
56+
57+
# Si la variable está vacía, dejar AdminPassword vacío
58+
if [ -z "$ADMIN_PASSWORD" ]; then
59+
sed -i 's/^AdminPassword=.*/AdminPassword=/' "$CONFIG_FILE"
60+
echo "[KF2-admin-manager.sh] AdminPassword eliminado (vacío) en $CONFIG_FILE"
61+
else
62+
# Si existe la línea, modificarla; si no, agregarla
63+
if grep -q '^AdminPassword=' "$CONFIG_FILE"; then
64+
sed -i "s/^AdminPassword=.*/AdminPassword=${ADMIN_PASSWORD}/" "$CONFIG_FILE"
65+
echo "[KF2-admin-manager.sh] AdminPassword actualizado en $CONFIG_FILE"
66+
else
67+
echo "AdminPassword=${ADMIN_PASSWORD}" >> "$CONFIG_FILE"
68+
echo "[KF2-admin-manager.sh] AdminPassword agregado en $CONFIG_FILE"
69+
fi
70+
fi

server-scripts/KF2-current-fix.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
# Script: KF2-current-fix.sh
3+
# Corrige el cierre de la etiqueta <a> en current.html para cumplir con XHTML 1.1
4+
5+
CURRENT_FILE="$HOME/serverfiles/KFGame/Web/ServerAdmin/current.html"
6+
7+
TH_LINE_INCORRECTA='<th><a href="<%page.fulluri%>?sortby=perk&amp;reverse=<%reverse.perk%>" class="sortable <%sorted.perk%>">Perk</th>'
8+
TH_LINE_CORRECTA='<th><a href="<%page.fulluri%>?sortby=perk&amp;reverse=<%reverse.perk%>" class="sortable <%sorted.perk%>">Perk</a></th>'
9+
10+
if [ -f "$CURRENT_FILE" ]; then
11+
if grep -Fq "$TH_LINE_INCORRECTA" "$CURRENT_FILE"; then
12+
if ! grep -Fq "$TH_LINE_CORRECTA" "$CURRENT_FILE"; then
13+
sed -i "s|$TH_LINE_INCORRECTA|$TH_LINE_CORRECTA|g" "$CURRENT_FILE"
14+
echo "[KF2-current-fix.sh] Corrección aplicada en $CURRENT_FILE"
15+
else
16+
echo "[KF2-current-fix.sh] Ya corregido previamente en $CURRENT_FILE"
17+
fi
18+
else
19+
echo "[KF2-current-fix.sh] No se requiere corrección en $CURRENT_FILE"
20+
fi
21+
else
22+
echo "[KF2-current-fix.sh] No se encontró $CURRENT_FILE"
23+
fi

0 commit comments

Comments
 (0)