Compare commits
6 Commits
0c39107be0
...
master
Author | SHA1 | Date | |
---|---|---|---|
bc48b2e6ce | |||
7a8971b50f | |||
b5e8641a24 | |||
01235b465e | |||
adbcc3492a | |||
2c1f147c67 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
|
testdata
|
14
Dockerfile
14
Dockerfile
@ -36,14 +36,18 @@ RUN mkdir -p /eressea/server && \
|
|||||||
FROM eressea-base as eressea
|
FROM eressea-base as eressea
|
||||||
ARG eressea_branch
|
ARG eressea_branch
|
||||||
COPY docker-assets/backup-eressea.patch /eressea/
|
COPY docker-assets/backup-eressea.patch /eressea/
|
||||||
|
COPY docker-assets/create-orders.patch /eressea/
|
||||||
|
COPY docker-assets/run-eressea.cron.patch /eressea/
|
||||||
RUN DEBIAN_FRONTEND="noninteractive" apt-get install -y \
|
RUN DEBIAN_FRONTEND="noninteractive" apt-get install -y \
|
||||||
cmake luarocks libxml2-dev liblua5.2-dev libtolua-dev libncurses5-dev libsqlite3-dev \
|
cmake luarocks libxml2-dev liblua5.2-dev libtolua-dev libncurses5-dev libsqlite3-dev \
|
||||||
libexpat1-dev && \
|
libiniparser-dev libcjson-dev libexpat1-dev && \
|
||||||
cd /eressea && \
|
cd /eressea && \
|
||||||
git clone -b $eressea_branch https://github.com/eressea/server.git git.eressea && \
|
git clone -b $eressea_branch https://github.com/eressea/server.git git.eressea && \
|
||||||
cd git.eressea && \
|
cd git.eressea && \
|
||||||
git submodule update --init && \
|
git submodule update --init && \
|
||||||
patch process/backup-eressea < /eressea/backup-eressea.patch && \
|
patch process/backup-eressea < /eressea/backup-eressea.patch && \
|
||||||
|
patch process/create-orders < /eressea/create-orders.patch && \
|
||||||
|
patch process/cron/run-eressea.cron < /eressea/run-eressea.cron.patch && \
|
||||||
s/cmake-init && \
|
s/cmake-init && \
|
||||||
s/build && \
|
s/build && \
|
||||||
ln -sf conf/eressea.ini && \
|
ln -sf conf/eressea.ini && \
|
||||||
@ -65,7 +69,7 @@ ENV PATH="${PATH}:/usr/games"
|
|||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y liblua5.2-0 libsqlite3-0 libncurses5 libreadline7 libexpat1 python python-pip mutt nano \
|
apt-get install -y liblua5.2-0 libsqlite3-0 libncurses5 libreadline7 libexpat1 python python-pip mutt nano \
|
||||||
logrotate pwgen zip luarocks fetchmail procmail php7.3 gettext php7.3-sqlite && \
|
logrotate pwgen zip luarocks fetchmail procmail php7.3 gettext php7.3-sqlite libiniparser1 libcjson1 && \
|
||||||
apt-get clean && \
|
apt-get clean && \
|
||||||
rm -rf /var/lib/apt/lists/* && \
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
pip install bcrypt j2cli && \
|
pip install bcrypt j2cli && \
|
||||||
@ -76,13 +80,16 @@ RUN apt-get update && \
|
|||||||
|
|
||||||
COPY docker-assets/template-config/ /eressea/template-config/
|
COPY docker-assets/template-config/ /eressea/template-config/
|
||||||
COPY docker-assets/lua-scripts/ /eressea/lua-scripts/
|
COPY docker-assets/lua-scripts/ /eressea/lua-scripts/
|
||||||
COPY docker-assets/run-eressea.sh /eressea/run-eressea.sh
|
|
||||||
COPY docker-assets/start.sh /eressea/start.sh
|
COPY docker-assets/start.sh /eressea/start.sh
|
||||||
COPY --from=eressea /eressea/server/ /eressea/server/
|
COPY --from=eressea /eressea/server/ /eressea/server/
|
||||||
|
COPY --from=eressea /eressea/git.eressea/build-x86_64-linux-gnu-gcc-Debug/tools/inifile /eressea/server/bin
|
||||||
|
COPY --from=eressea /eressea/git.eressea/build-x86_64-linux-gnu-gcc-Debug/tools/gethash /eressea/server/bin
|
||||||
|
COPY --from=eressea /eressea/git.eressea/build-x86_64-linux-gnu-gcc-Debug/tools/atoi36 /eressea/server/bin
|
||||||
COPY --from=eressea /eressea/server/etc/report-mail.de.txt /eressea/template-mail/report-mail.de.txt
|
COPY --from=eressea /eressea/server/etc/report-mail.de.txt /eressea/template-mail/report-mail.de.txt
|
||||||
COPY --from=eressea /eressea/server/etc/report-mail.en.txt /eressea/template-mail/report-mail.en.txt
|
COPY --from=eressea /eressea/server/etc/report-mail.en.txt /eressea/template-mail/report-mail.en.txt
|
||||||
COPY --from=eressea /eressea/git.eressea/scripts/tools /eressea/server/scripts/tools
|
COPY --from=eressea /eressea/git.eressea/scripts/tools /eressea/server/scripts/tools
|
||||||
COPY --from=eressea /eressea/git.eressea/s/preview /eressea/server/bin/
|
COPY --from=eressea /eressea/git.eressea/s/preview /eressea/server/bin/
|
||||||
|
COPY --from=eressea /eressea/git.eressea/process/cron/run-eressea.cron /eressea/run-eressea.sh
|
||||||
COPY --from=eressea /usr/games/echeck /usr/games/echeck
|
COPY --from=eressea /usr/games/echeck /usr/games/echeck
|
||||||
COPY --from=eressea /usr/share/locale/de/LC_MESSAGES/ /usr/share/locale/de/LC_MESSAGES/
|
COPY --from=eressea /usr/share/locale/de/LC_MESSAGES/ /usr/share/locale/de/LC_MESSAGES/
|
||||||
COPY --from=eressea /usr/share/games/echeck/ /usr/share/games/echeck/
|
COPY --from=eressea /usr/share/games/echeck/ /usr/share/games/echeck/
|
||||||
@ -92,3 +99,4 @@ VOLUME ["/data"]
|
|||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
ENTRYPOINT ["/eressea/start.sh"]
|
ENTRYPOINT ["/eressea/start.sh"]
|
||||||
CMD ["help"]
|
CMD ["help"]
|
||||||
|
|
||||||
|
34
Readme.md
34
Readme.md
@ -5,6 +5,10 @@ More details about Eressea find on
|
|||||||
- in [wiki](https://wiki.eressea.de/index.php/Hauptseite) you find the game rules and a lot of other information
|
- in [wiki](https://wiki.eressea.de/index.php/Hauptseite) you find the game rules and a lot of other information
|
||||||
- and finally the source code, which is hosted on [GitHub](https://github.com/eressea)
|
- and finally the source code, which is hosted on [GitHub](https://github.com/eressea)
|
||||||
|
|
||||||
|
The Dockerfile is available on
|
||||||
|
* [GitHub](https://github.com/jacsid/eressea_docker)
|
||||||
|
* [Private Repository](https://git.jacs-home.eu/juergen/eressea-docker)
|
||||||
|
|
||||||
## Volumes
|
## Volumes
|
||||||
By default, the image expects a single volume, located at `/data`. It will hold
|
By default, the image expects a single volume, located at `/data`. It will hold
|
||||||
* configuration files
|
* configuration files
|
||||||
@ -103,3 +107,33 @@ docker run -it --rm \
|
|||||||
-v /path/to/my/local/eressea/folder:/data \
|
-v /path/to/my/local/eressea/folder:/data \
|
||||||
jacsid/eressea run
|
jacsid/eressea run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Update Docker image
|
||||||
|
It's easy to update to the newest Docker image. Execute following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker image pull jacsid/eressea:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Afterwards start the above described commands as usual.
|
||||||
|
|
||||||
|
## Correction of game data
|
||||||
|
Sometimes there are bugs in the server program where you have to correct game data manually.
|
||||||
|
Find next some samples how to archive this.
|
||||||
|
### Sample session
|
||||||
|
Set hebs which can be found by units of a region where a specific unit is, to h2.
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo docker run -it --rm -v /path/to/my/local/eressea/folder:/data jacsid/eressea bash
|
||||||
|
|
||||||
|
./eressea
|
||||||
|
|
||||||
|
require 'config'
|
||||||
|
eressea.read_game('18.dat')
|
||||||
|
u = get_unit('xdyv')
|
||||||
|
r = u.region
|
||||||
|
r.herb = "h2"
|
||||||
|
eressea.write_game('18.dat')
|
||||||
|
|
||||||
|
print(u:show())
|
||||||
|
```
|
14
docker-assets/create-orders.patch
Normal file
14
docker-assets/create-orders.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
--- create-orders 2020-12-26 10:04:52.000000000 +0100
|
||||||
|
+++ create-orders copy 2020-12-26 10:06:56.000000000 +0100
|
||||||
|
@@ -14,9 +14,10 @@
|
||||||
|
echo "orders.dir.$TURN already exists"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
+mv orders.dir orders.dir.$TURN
|
||||||
|
rm -f "orders.$TURN"
|
||||||
|
|
||||||
|
-cd orders.dir || exit
|
||||||
|
+cd orders.dir.$TURN || exit
|
||||||
|
|
||||||
|
php ../../orders-php/cli.php -d "orders.db" export | tr -d '\r' > "../orders.$TURN"
|
||||||
|
|
27
docker-assets/run-eressea.cron.patch
Normal file
27
docker-assets/run-eressea.cron.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
--- ../git.eressea/process/cron/run-eressea.cron 2021-04-18 14:51:46.000000000 +0200
|
||||||
|
+++ run-eressea.cron 2021-04-18 15:26:24.000000000 +0200
|
||||||
|
@@ -1,6 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
+# this script is based on run-eressea.cron
|
||||||
|
+# differences to original
|
||||||
|
+# it is possible to run a turn with empty orders
|
||||||
|
+
|
||||||
|
GAME=$1
|
||||||
|
+ENABLE_EMPTY_ORDERS=$2
|
||||||
|
(
|
||||||
|
[ "$ENABLED" == "no" ] && exit
|
||||||
|
[ -z "$ERESSEA" ] && ERESSEA="$HOME/eressea"
|
||||||
|
@@ -28,8 +33,10 @@
|
||||||
|
|
||||||
|
"$BIN/create-orders" "$GAME" "$TURN"
|
||||||
|
if [ ! -s "$ERESSEA/game-$GAME/orders.$TURN" ]; then
|
||||||
|
- echo "server did not create orders for turn $TURN in game $GAME"
|
||||||
|
- exit 2
|
||||||
|
+ if [ "$ENABLE_EMPTY_ORDERS" != "yes" ]; then
|
||||||
|
+ echo "server did not create orders for turn $TURN in game $GAME"
|
||||||
|
+ exit 2
|
||||||
|
+ fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$BIN/backup-eressea" "$GAME" "$TURN"
|
@ -1,62 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# this script is based on run-eressea.cron
|
|
||||||
# differences to original
|
|
||||||
# it is possible to run a turn with empty orders
|
|
||||||
|
|
||||||
eval "$(luarocks path)"
|
|
||||||
GAME=$1
|
|
||||||
ENABLE_EMPTY_ORDERS=$2
|
|
||||||
(
|
|
||||||
[ "$ENABLED" == "no" ] && exit
|
|
||||||
[ -z "$ERESSEA" ] && ERESSEA="$HOME/eressea"
|
|
||||||
|
|
||||||
export ERESSEA
|
|
||||||
BIN="$ERESSEA/server/bin"
|
|
||||||
TURN=$(cat "$ERESSEA/game-$GAME/turn")
|
|
||||||
if [ ! -e "$ERESSEA/game-$GAME/data/$TURN.dat" ]; then
|
|
||||||
echo "data file $TURN is missing, cannot run turn for game $GAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
REPORTS="$ERESSEA/game-$GAME/reports"
|
|
||||||
if [ -d "$REPORTS" ]; then
|
|
||||||
rm -rf "$REPORTS"
|
|
||||||
fi
|
|
||||||
mkdir "$REPORTS"
|
|
||||||
|
|
||||||
cd "$ERESSEA/game-$GAME" || exit
|
|
||||||
|
|
||||||
if [ -d test ]; then
|
|
||||||
touch test/execute.lock
|
|
||||||
fi
|
|
||||||
|
|
||||||
"$BIN/create-orders" "$GAME" "$TURN"
|
|
||||||
if [ ! -s "$ERESSEA/game-$GAME/orders.$TURN" ]; then
|
|
||||||
if [ "$ENABLE_EMPTY_ORDERS" != "yes" ]; then
|
|
||||||
echo "server did not create orders for turn $TURN in game $GAME"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
"$BIN/backup-eressea" "$GAME" "$TURN"
|
|
||||||
rm -f execute.lock
|
|
||||||
"$BIN/run-turn" "$GAME" "$TURN"
|
|
||||||
touch execute.lock
|
|
||||||
|
|
||||||
if [ ! -s "$REPORTS/reports.txt" ]; then
|
|
||||||
echo "server did not create reports.txt in game $GAME"
|
|
||||||
exit 4
|
|
||||||
fi
|
|
||||||
"$BIN/backup-eressea" "$GAME" "$TURN"
|
|
||||||
let TURN=$TURN+1
|
|
||||||
if [ ! -s "$ERESSEA/game-$GAME/data/$TURN.dat" ]; then
|
|
||||||
echo "server did not create data for turn $TURN in game $GAME"
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
echo "sending reports for game $GAME, turn $TURN"
|
|
||||||
"$BIN/compress.sh" "$GAME" "$TURN"
|
|
||||||
"$BIN/sendreports.sh" "$GAME"
|
|
||||||
"$BIN/backup-eressea" "$GAME" "$TURN"
|
|
||||||
rm -f test/execute.lock
|
|
||||||
) | tee -a "$HOME/log/eressea.cron.log"
|
|
||||||
|
|
@ -61,7 +61,7 @@ cmd_bash() {
|
|||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
args=$(getopt --name shutdown -o hn -- "$@")
|
args=$(getopt --name bash -o hn -- "$@")
|
||||||
|
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
usage
|
usage
|
||||||
@ -93,7 +93,7 @@ cmd_startup() {
|
|||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
args=$(getopt --name shutdown -o h -- "$@")
|
args=$(getopt --name startup -o h -- "$@")
|
||||||
|
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
usage
|
usage
|
||||||
@ -134,6 +134,10 @@ cmd_startup() {
|
|||||||
ln -sf /data/config/report-mail.de.txt /eressea/server/etc/report-mail.txt
|
ln -sf /data/config/report-mail.de.txt /eressea/server/etc/report-mail.txt
|
||||||
|
|
||||||
cd /data/game-1
|
cd /data/game-1
|
||||||
|
|
||||||
|
eval `luarocks path`
|
||||||
|
export LUA_PATH="$LUA_PATH;/eressea/server/scripts/?.lua;./?/init.lua"
|
||||||
|
|
||||||
echo "Eressea environment setup complete"
|
echo "Eressea environment setup complete"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -377,7 +381,7 @@ cmd_map() {
|
|||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
args=$(getopt --name shutdown -o hnw:e:t:s -- "$@")
|
args=$(getopt --name map -o hnw:e:t:s -- "$@")
|
||||||
|
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
usage
|
usage
|
||||||
@ -433,7 +437,7 @@ cmd_addpwd() {
|
|||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
args=$(getopt --name shutdown -o hf -- "$@")
|
args=$(getopt --name addpwd -o hf -- "$@")
|
||||||
|
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
usage
|
usage
|
||||||
@ -485,7 +489,7 @@ cmd_mail() {
|
|||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
args=$(getopt --name shutdown -o hcf -- "$@")
|
args=$(getopt --name mail -o hcf -- "$@")
|
||||||
|
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
usage
|
usage
|
||||||
@ -532,7 +536,7 @@ cmd_run() {
|
|||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
args=$(getopt --name shutdown -o h -- "$@")
|
args=$(getopt --name run -o h -- "$@")
|
||||||
|
|
||||||
if [ $? != 0 ]; then
|
if [ $? != 0 ]; then
|
||||||
usage
|
usage
|
||||||
@ -556,7 +560,7 @@ cmd_run() {
|
|||||||
get_turn
|
get_turn
|
||||||
enable_empty_orders="no"
|
enable_empty_orders="no"
|
||||||
[ "$turn" == "0" ] && enable_empty_orders="yes"
|
[ "$turn" == "0" ] && enable_empty_orders="yes"
|
||||||
/eressea/run-eressea.sh 1
|
/eressea/run-eressea.sh 1 $enable_empty_orders
|
||||||
|
|
||||||
cmd_shutdown
|
cmd_shutdown
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,17 @@ ERESSEA=/data
|
|||||||
|
|
||||||
:0:server.lock
|
:0:server.lock
|
||||||
* ^Subject:.*{{game.mailcmd}} BEFEHLE
|
* ^Subject:.*{{game.mailcmd}} BEFEHLE
|
||||||
|
| grep -v '>From' | /data/server/bin/orders-accept 1 de
|
||||||
|
|
||||||
|
:0:server.lock
|
||||||
* ^Subject:.*{{game.mailcmd}} 1 BEFEHLE
|
* ^Subject:.*{{game.mailcmd}} 1 BEFEHLE
|
||||||
| grep -v '>From' | /data/server/bin/orders-accept 1 de
|
| grep -v '>From' | /data/server/bin/orders-accept 1 de
|
||||||
|
|
||||||
:0:server.lock
|
:0:server.lock
|
||||||
* ^Subject:.*{{game.mailcmd}} ORDERS
|
* ^Subject:.*{{game.mailcmd}} ORDERS
|
||||||
|
| grep -v '>From' | /data/server/bin/orders-accept 1 en
|
||||||
|
|
||||||
|
:0:server.lock
|
||||||
* ^Subject:.*{{game.mailcmd}} 1 ORDERS
|
* ^Subject:.*{{game.mailcmd}} 1 ORDERS
|
||||||
| grep -v '>From' | /data/server/bin/orders-accept 1 en
|
| grep -v '>From' | /data/server/bin/orders-accept 1 en
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user