Skip to content

Commit dffdbd2

Browse files
committed
add UE4SS Log Clipper
1 parent 06c3627 commit dffdbd2

File tree

4 files changed

+99
-47
lines changed

4 files changed

+99
-47
lines changed

dockerfile.native

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ RUN mkdir -p "$STEAMPATH" "$SRVPATH" && cd "$STEAMPATH" && \
1616

1717
ENV STARTENV=""
1818
ENV STARTCMD="./LinuxServer/PandemicServer.sh"
19-
ENV ENTRYPOINT_ARGS="native skip"
19+
ENV ENTRYPOINT_ARGS="native no no"
2020

2121
USER root
2222
CMD chown -R 5k:5k "$SRVPATH" && su 5k -c "entrypoint.sh $ENTRYPOINT_ARGS"

dockerfile.wine

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ RUN dpkg --add-architecture i386 && \
2424

2525
ENV STARTENV="WINEDLLOVERRIDES=dwmapi=native,builtin"
2626
ENV STARTCMD="wine ./WindowsServer/PandemicServer.exe"
27-
ENV ENTRYPOINT_ARGS="wine skip"
27+
ENV ENTRYPOINT_ARGS="wine no no"
28+
29+
ENV UE4SS_LOG_SRC_PATH="${SRVPATH}/WindowsServer/Pandemic/Binaries/Win64/ue4ss"
30+
ENV UE4SS_LOG_TO_PATH="${UE4SS_LOG_SRC_PATH}/logs"
2831

2932
CMD chown -R 5k:5k "$SRVPATH" && su 5k -c "entrypoint.sh $ENTRYPOINT_ARGS"

entrypoint.sh

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#!/bin/sh
22
set -eu
33

4+
# SteamCMD
5+
46
if [ -z "${1-}" ]; then
57
echo "entrypoint.sh: require arguments \$1."
68
exit 1
@@ -15,22 +17,51 @@ else
1517
exit 1
1618
fi
1719

20+
# Setup environments
21+
1822
cd "$SRVPATH"
1923

2024
if [ -n "$STARTENV" ]; then
2125
export $STARTENV
2226
fi
2327

24-
if [ -n "${2-}" ]; then
25-
if [ "${2-}" != "skip" ]; then
26-
echo "entrypoint.sh: invalid arguments \$2, leave undefined or use \"skip\"."
27-
exit 1
28-
fi
28+
# UE4SS Log Clipper
29+
30+
if [ -z "${2-}" ]; then
31+
echo "entrypoint.sh: require arguments \$2."
32+
exit 1
33+
fi
34+
35+
if [ "$2" != "yes" ] && [ "$2" != "no" ]; then
36+
echo "entrypoint.sh: invalid arguments \$2, use \"yes\" or \"no\"."
37+
exit 1
38+
fi
39+
40+
if [ "$2" = "yes" ]; then
41+
echo "entrypoint.sh: clipping UE4SS.log!"
42+
mkdir -p "$UE4SS_LOG_TO_PATH"
43+
cp "$UE4SS_LOG_SRC_PATH/UE4SS.log" "$UE4SS_LOG_TO_PATH/$(date +"%Y%m%dT%H%M%S%z").log"
44+
fi
2945

46+
# Log Checker
47+
48+
if [ -z "${3-}" ]; then
49+
echo "entrypoint.sh: require arguments \$3."
50+
exit 1
51+
fi
52+
53+
54+
if [ "$3" != "yes" ] && [ "$3" != "no" ]; then
55+
echo "entrypoint.sh: invalid arguments \$3, use \"yes\" or \"no\"."
56+
exit 1
57+
fi
58+
59+
if [ "$3" = "no" ]; then
3060
$STARTCMD $ARGS
3161
exit
3262
fi
3363

64+
3465
echo "entrypoint.sh: activate log checker!"
3566

3667
pipe=$(mktemp -u)

readme.md

Lines changed: 58 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -85,46 +85,55 @@ Add `-d` if you want it running on background
8585

8686
## Advanced
8787

88-
You have to create a volume for stoagre your server files, mount it on `${SRVPATH}` (see ENVs on below)
88+
You have to create a volume for stoagre your server files, mount it on `$SRVPATH` (see [ENVs](#envs))
8989

9090
### ENVs
9191

92-
| ENVs | Default Value | Description |
93-
|----------------- |--------------------------------------------------------------------------------------------------- |--------------------------------------------------------------------------------------- |
94-
| APPID | `884110` | Game server's steam appid |
95-
| STEAMPATH | `"/home/5k/Steam"` | Steamcmd path |
96-
| SRVPATH | `"${STEAMPATH}/steamapps/common/SCP Pandemic Dedicated Server"` | Game server path |
97-
| ARGS | `""` | The params you want sent to the server |
98-
| STARTENV | Native: `""`<br/>Wine: `"WINEDLLOVERRIDES=dwmapi=native,builtin"` | Start environments, **modify `WINEDLLOVERRIDES` may result in `UE4SS` not loading** |
99-
| STARTCMD | Native: `"./LinuxServer/PandemicServer.sh"`<br/>Wine: `"wine ./WindowsServer/PandemicServer.exe"` | Start command, used to start the server, a modify example: `"wine ./StartServer.bat"` |
100-
| ENTRYPOINT_ARGS | Native: `"native skip"`<br/>Wine: `"wine skip"` | Params for entrypoint.sh, see Entrypoint Params on below |
92+
| ENVs | Default Value | Description |
93+
|-------------------- |--------------------------------------------------------------------------------------------------- |--------------------------------------------------------------------------------------- |
94+
| APPID | `884110` | Game server's steam appid |
95+
| STEAMPATH | `"/home/5k/Steam"` | Steamcmd path |
96+
| SRVPATH | `"${STEAMPATH}/steamapps/common/SCP Pandemic Dedicated Server"` | Game server path |
97+
| ARGS | `""` | The params you want sent to the server |
98+
| STARTENV | Native: `""`<br/>Wine: `"WINEDLLOVERRIDES=dwmapi=native,builtin"` | Start environments, **modify `WINEDLLOVERRIDES` may result in `UE4SS` not loading** |
99+
| STARTCMD | Native: `"./LinuxServer/PandemicServer.sh"`<br/>Wine: `"wine ./WindowsServer/PandemicServer.exe"` | Start command, used to start the server, a modify example: `"wine ./StartServer.bat"` |
100+
| ENTRYPOINT_ARGS | Native: `"native no no"`<br/>Wine: `"wine no no"` | Params for entrypoint.sh, see [Entrypoint Params](#entrypoint-params) |
101+
| UE4SS_LOG_SRC_PATH | Native: undefined<br/>Wine: `"${SRVPATH}/WindowsServer/Pandemic/Binaries/Win64/ue4ss"` | Used by [UE4SS Log Clipper](#ue4ss-log-clipper) |
102+
| UE4SS_LOG_TO_PATH | Native: undefined<br/>Wine: `"${UE4SS_LOG_SRC_PATH}/logs"` | Used by [UE4SS Log Clipper](#ue4ss-log-clipper) |
101103

102104
### Entrypoint Params
103105

104-
| Params | Allowed value | Description |
105-
|-------- |-------------------------- |----------------------------------------------------------------------------------------- |
106-
| $1 | `native`, `wine`, `skip` | Used to set steamcmd's platform type, `skip` to skip the steamcmd |
107-
| $2 | `skip`, undefined | Used to should start Log Checker, `skip` to skip Log Checker, otherwise leave undefined |
106+
| Params | Allowed value | Description |
107+
|-------- |-------------------------- |------------------------------------------------------------------------------- |
108+
| $1 | `native`, `wine`, `skip` | Used to set steamcmd's platform type, `skip` to skip the steamcmd |
109+
| $2 | `yes`, `no` | Used to should start [UE4SS Log Clipper](#ue4ss-log-clipper), **Wine ONLY** |
110+
| $3 | `yes`, `no` | Used to should start [Log Checker](#log-checker) |
108111

109112
Example:
110113

111114
```sh
112-
-e ENTRYPOINT_ARGS="native"
115+
-e ENTRYPOINT_ARGS="native no yes"
113116
```
114117

115-
Use linux platform, start log checker
118+
Use linux platform, not start UE4SS Log Clipper, start Log Checker
116119

117120
```sh
118-
-e ENTRYPOINT_ARGS="wine skip"
121+
-e ENTRYPOINT_ARGS="wine yes no"
119122
```
120123

121-
Use windows platform, skip log checker
124+
Use windows platform, start UE4SS Log Clipper, not start Log Checker
122125

123126
```sh
124-
-e ENTRYPOINT_ARGS="skip skip"
127+
-e ENTRYPOINT_ARGS="skip no no"
125128
```
126129

127-
Skip steamcmd, skip log checker
130+
Skip steamcmd, not start UE4SS Log Clipper, not start Log Checker
131+
132+
### UE4SS Log Clipper
133+
134+
A simple script will clip `$UE4SS_LOG_SRC_PATH/UE4SS.log` to `$UE4SS_LOG_TO_PATH` everytime before server start running
135+
136+
The name format of the log: `$(date +"%Y%m%dT%H%M%S%z").log`
128137

129138
### Log Checker
130139

@@ -220,46 +229,55 @@ docker run --name scp5kserver -p 7777:7777/tcp -p 7777:7777/udp -p 27015:27015/t
220229

221230
## 高级
222231

223-
你需要创建一个volume存储你的服务器文件,并挂载在`${SRVPATH}`(参阅下方ENVs)
232+
你需要创建一个volume存储你的服务器文件,并挂载在`$SRVPATH`(参阅[ENVs](#envs-1))
224233

225234
### ENVs
226235

227-
| ENVs | 默认值 | 描述 |
228-
|----------------- |--------------------------------------------------------------------------------------------------- |-------------------------------------------------------- |
229-
| APPID | `884110` | 游戏服务器的steam appid |
230-
| STEAMPATH | `"/home/5k/Steam"` | steamcmd的路径 |
231-
| SRVPATH | `"${STEAMPATH}/steamapps/common/SCP Pandemic Dedicated Server"` | 游戏服务器的路径 |
232-
| ARGS | `""` | 你想发给服务器的参数 |
233-
| STARTENV | Native: `""`<br/>Wine: `"WINEDLLOVERRIDES=dwmapi=native,builtin"` | 环境变量,**修改`WINEDLLOVERRIDES`可能会导致`UE4SS`不加载** |
234-
| STARTCMD | Native: `"./LinuxServer/PandemicServer.sh"`<br/>Wine: `"wine ./WindowsServer/PandemicServer.exe"` | 用于启动服务器的指令,修改例: `"wine ./StartServer.bat"` |
235-
| ENTRYPOINT_ARGS | Native: `"native skip"`<br/>Wine: `"wine skip"` | entrypoint.sh的参数,详见下方Entrypoint Params |
236+
| ENVs | 默认值 | 描述 |
237+
|-------------------- |--------------------------------------------------------------------------------------------------- |------------------------------------------------------------------ |
238+
| APPID | `884110` | 游戏服务器的steam appid |
239+
| STEAMPATH | `"/home/5k/Steam"` | steamcmd的路径 |
240+
| SRVPATH | `"${STEAMPATH}/steamapps/common/SCP Pandemic Dedicated Server"` | 游戏服务器的路径 |
241+
| ARGS | `""` | 你想发给服务器的参数 |
242+
| STARTENV | Native: `""`<br/>Wine: `"WINEDLLOVERRIDES=dwmapi=native,builtin"` | 环境变量,**修改`WINEDLLOVERRIDES`可能会导致`UE4SS`不加载** |
243+
| STARTCMD | Native: `"./LinuxServer/PandemicServer.sh"`<br/>Wine: `"wine ./WindowsServer/PandemicServer.exe"` | 用于启动服务器的指令,修改例: `"wine ./StartServer.bat"` |
244+
| ENTRYPOINT_ARGS | Native: `"native no no"`<br/>Wine: `"wine no no"` | entrypoint.sh的参数,详见[Entrypoint Params](#entrypoint-params-1) |
245+
| UE4SS_LOG_SRC_PATH | Native: undefined<br/>Wine: `"${SRVPATH}/WindowsServer/Pandemic/Binaries/Win64/ue4ss"` | 被用于 [UE4SS Log Clipper](#ue4ss-log-clipper-1) |
246+
| UE4SS_LOG_TO_PATH | Native: undefined<br/>Wine: `"${UE4SS_LOG_SRC_PATH}/logs"` | 被用于 [UE4SS Log Clipper](#ue4ss-log-clipper-1) |
236247

237248
### Entrypoint Params
238249

239-
| Params | 合法值 | 描述 |
240-
|-------- |-------------------------- |--------------------------------------------------------------------- |
241-
| $1 | `native`, `wine`, `skip` | 用于设置steamcmd的平台类型,`skip`为跳过steamcmd |
242-
| $2 | `skip`, undefined | 用于启动Log Checker,`skip`为跳过Log Checker, 否则请保持未定义(undefined) |
250+
| Params | 合法值 | 描述 |
251+
|-------- |-------------------------- |------------------------------------------------------------------ |
252+
| $1 | `native`, `wine`, `skip` | 用于设置steamcmd的平台类型,`skip`为跳过steamcmd |
253+
| $2 | `yes`, `no` | 用于是否启用[UE4SS Log Clipper](#ue4ss-log-clipper-1)**仅限Wine** |
254+
| $3 | `yes`, `no` | 用于是否启用[Log Checker](#log-checker-1) |
243255

244256
示例:
245257

246258
```sh
247-
-e ENTRYPOINT_ARGS="native"
259+
-e ENTRYPOINT_ARGS="native no yes"
248260
```
249261

250-
使用linux平台,启动Log Checker
262+
使用linux平台,不启动UE4SS Log Clipper,启动Log Checker
251263

252264
```sh
253-
-e ENTRYPOINT_ARGS="wine skip"
265+
-e ENTRYPOINT_ARGS="wine yes no"
254266
```
255267

256-
使用windows平台,跳过Log Checker
268+
使用windows平台,启动UE4SS Log Clipper,不启动Log Checker
257269

258270
```sh
259-
-e ENTRYPOINT_ARGS="skip skip"
271+
-e ENTRYPOINT_ARGS="skip no no"
260272
```
261273

262-
跳过steamcmd,跳过Log Checker
274+
跳过steamcmd,不启动UE4SS Log Clipper,不启动Log Checker
275+
276+
### UE4SS Log Clipper
277+
278+
一个简单的脚本,会在每次服务器运行前复制`$UE4SS_LOG_SRC_PATH/UE4SS.log``$UE4SS_LOG_TO_PATH`
279+
280+
日志的命名格式: `$(date +"%Y%m%dT%H%M%S%z").log`
263281

264282
### Log Checker
265283

0 commit comments

Comments
 (0)