Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
pwn3.tar.gz
server
client
postgres-data
postgres-data
PwnAdventure3_Windows.zip
**/windowsclient
15 changes: 15 additions & 0 deletions Dockerfile.ubuntu-latest
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM ubuntu:latest

ENV PWN3=/opt/pwn3

RUN echo "deb http://security.ubuntu.com/ubuntu xenial-security main" >> /etc/apt/sources.list \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y nano vim postgresql libssl1.0.0 \
&& apt-get clean \
&& rm -rf /var/lib/apt \
&& adduser pwn3 --system --shell /bin/bash --group

EXPOSE 5432

ADD --chown=pwn3 server/MasterServer/initdb.sql $PWN3/initdb.sql
ADD --chown=pwn3 setup $PWN3/setup
47 changes: 47 additions & 0 deletions docker-compose.ubuntu-latest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
version: '3.2'
services:
master:
build:
context: .
dockerfile: ./Dockerfile.ubuntu-latest
image: pwn3server-ubuntulatest
hostname: master.pwn3
networks:
default:
aliases:
- "master.pwn3"
ports:
- "3333:3333"
volumes:
- type: bind
source: "./server"
target: "/opt/pwn3/server"
- type: bind
source: "./client"
target: "/opt/pwn3/client"
- type: bind
source: "./postgres-data"
target: "/opt/pwn3/postgres-data"
command: "/opt/pwn3/setup/masterserver.sh"
game:
build:
context: .
dockerfile: ./Dockerfile.ubuntu-latest
image: pwn3server-ubuntulatest
hostname: game.pwn3
networks:
default:
aliases:
- "master.pwn3"
ports:
- "3000-3010:3000-3010"
volumes:
- type: bind
source: "./server"
target: "/opt/pwn3/server"
- type: bind
source: "./client"
target: "/opt/pwn3/client"
command: "/opt/pwn3/setup/gameserver.sh"
depends_on:
- master
14 changes: 7 additions & 7 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
version: '3.2'
services:
init:
build: .
image: pwn3server
master:
build:
context: .
dockerfile: ./Dockerfile
image: pwn3server
hostname: master.pwn3
networks:
Expand All @@ -23,9 +23,10 @@ services:
source: "./postgres-data"
target: "/opt/pwn3/postgres-data"
command: "/opt/pwn3/setup/masterserver.sh"
depends_on:
- init
game:
build:
context: .
dockerfile: ./Dockerfile
image: pwn3server
hostname: game.pwn3
networks:
Expand All @@ -43,5 +44,4 @@ services:
target: "/opt/pwn3/client"
command: "/opt/pwn3/setup/gameserver.sh"
depends_on:
- init
- master
- master
10 changes: 9 additions & 1 deletion setup/masterserver.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,19 @@ _term() {
exit 0
}

echo "Setup process kill trap"
trap _term SIGTERM SIGKILL

echo "Start postgresql service"
service postgresql start

echo "Sleep 10"
sleep 10

echo "Setup postgresql using template $PWN3/setup/postgres_init.sql"
su postgres -c "psql -f $PWN3/setup/postgres_init.sql -d template1"

echo "Cleanup previous logs"
# clean up
su pwn3 -c "rm /opt/pwn3/client/PwnAdventure3_Data/PwnAdventure3/PwnAdventure3/Saved/Logs/*"

Expand All @@ -36,12 +41,15 @@ else
su pwn3 -c "cd /opt/pwn3/server/MasterServer/ && ./MasterServer --create-admin-team Admin"
fi

echo "Cleanup previous server creds using $PWN3/setup/postgres_cleanup.sql"
# cleanup all previous/old server master creds
su pwn3 -c "psql master -f $PWN3/setup/postgres_cleanup.sql"

echo "Setup new server creds"
# get new master server creds
su pwn3 -c "cd /opt/pwn3/server/MasterServer/ && ./MasterServer --create-server-account > /opt/pwn3/server/creds"

echo "Write new server creds to server.ini"
# write the new creds to the server.ini
USER=$(cat /opt/pwn3/server/creds | grep 'Username:' | cut -d ":" -f 2- | xargs)
PW=$(cat /opt/pwn3/server/creds | grep 'Password:' | cut -d ":" -f 2- | xargs)
Expand All @@ -58,7 +66,7 @@ Password=$PW
Instances=5
EOL


echo "Run the server"
# run the server
su pwn3 -c "cd /opt/pwn3/server/MasterServer/ && ./MasterServer" &

Expand Down