mirror of
https://github.com/itzg/docker-minecraft-server
synced 2024-09-20 06:01:57 +00:00
Use modified knockd to set a cooldown on port 19132 (#2003)
This commit is contained in:
parent
e43669d792
commit
e217ac503e
8 changed files with 19 additions and 8 deletions
|
@ -52,6 +52,11 @@ RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \
|
||||||
| tar -C /usr/share -zxf - \
|
| tar -C /usr/share -zxf - \
|
||||||
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin
|
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin
|
||||||
|
|
||||||
|
# Install modified knockd
|
||||||
|
ADD https://github.com/Metalcape/knock/releases/download/0.8.1/knock-0.8.1-${TARGETARCH}${TARGETVARIANT}.tar.gz /tmp/knock.tar.gz
|
||||||
|
RUN tar -xf /tmp/knock.tar.gz -C /usr/local/ && rm /tmp/knock.tar.gz
|
||||||
|
RUN find /usr/lib -name 'libpcap.so.0.8' -execdir cp '{}' libpcap.so.1 \;
|
||||||
|
|
||||||
VOLUME ["/data"]
|
VOLUME ["/data"]
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ apk add --no-cache -U \
|
||||||
rsync \
|
rsync \
|
||||||
nano \
|
nano \
|
||||||
sudo \
|
sudo \
|
||||||
knock \
|
|
||||||
tar \
|
tar \
|
||||||
zstd \
|
zstd \
|
||||||
nfs-utils
|
nfs-utils \
|
||||||
|
libpcap
|
||||||
|
|
|
@ -33,6 +33,6 @@ dnf install -y ImageMagick \
|
||||||
unzip \
|
unzip \
|
||||||
zstd \
|
zstd \
|
||||||
lbzip2 \
|
lbzip2 \
|
||||||
knock
|
libpcap
|
||||||
|
|
||||||
bash /build/ol/install-gosu.sh
|
bash /build/ol/install-gosu.sh
|
||||||
|
|
|
@ -23,7 +23,7 @@ apt-get install -y \
|
||||||
unzip \
|
unzip \
|
||||||
zstd \
|
zstd \
|
||||||
lbzip2 \
|
lbzip2 \
|
||||||
knockd \
|
nfs-common \
|
||||||
nfs-common
|
libpcap0.8
|
||||||
|
|
||||||
apt-get clean
|
apt-get clean
|
||||||
|
|
|
@ -45,7 +45,7 @@ if isTrue "${DEBUG_AUTOPAUSE}"; then
|
||||||
knockdArgs+=(-D)
|
knockdArgs+=(-D)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo /usr/sbin/knockd "${knockdArgs[@]}"
|
sudo /usr/local/sbin/knockd "${knockdArgs[@]}"
|
||||||
if [ $? -ne 0 ] ; then
|
if [ $? -ne 0 ] ; then
|
||||||
logAutopause "Failed to start knockd daemon."
|
logAutopause "Failed to start knockd daemon."
|
||||||
logAutopause "Probable cause: Unable to attach to interface \"$AUTOPAUSE_KNOCK_INTERFACE\"."
|
logAutopause "Probable cause: Unable to attach to interface \"$AUTOPAUSE_KNOCK_INTERFACE\"."
|
||||||
|
|
|
@ -13,3 +13,4 @@
|
||||||
[unpauseMCServer-bedrock]
|
[unpauseMCServer-bedrock]
|
||||||
sequence = 19132:udp
|
sequence = 19132:udp
|
||||||
command = /auto/resume.sh %IP%
|
command = /auto/resume.sh %IP%
|
||||||
|
seq_cooldown = 60
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
minecraft ALL=(ALL) NOPASSWD:/usr/bin/pkill
|
minecraft ALL=(ALL) NOPASSWD:/usr/bin/pkill
|
||||||
minecraft ALL=(ALL) NOPASSWD:/usr/sbin/knockd
|
minecraft ALL=(ALL) NOPASSWD:/usr/local/sbin/knockd
|
||||||
|
|
|
@ -84,4 +84,9 @@ elif [[ -z "$MAX_TICK_TIME" ]] ; then
|
||||||
export MAX_TICK_TIME
|
export MAX_TICK_TIME
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# seq_cooldown cannot be larger than AUTOPAUSE_TIMEOUT_KN, otherwise the server may
|
||||||
|
# become paused while knockd is still ignoring packets, preventing players from joining.
|
||||||
|
let COOLDOWN=$AUTOPAUSE_TIMEOUT_KN/2
|
||||||
|
sed -i "s/\(seq_cooldown *= *\).*/\1$COOLDOWN/" /tmp/knockd-config.cfg
|
||||||
|
|
||||||
/auto/autopause-daemon.sh &
|
/auto/autopause-daemon.sh &
|
||||||
|
|
Loading…
Reference in a new issue