Compare commits

..

20 Commits

Author SHA1 Message Date
Deon George
32c5348864 Fixed timezone for Mystic 2019-06-21 17:15:22 +10:00
Deon George
a614fcadf9 Version update for .gitlab-ci 2019-04-07 23:37:19 +10:00
Deon George
739f9a75bc Update to 1.12A43 added ZeroTier 2019-04-07 23:03:49 +10:00
Deon George
219697e2d1 Added temp paths to avoid cross device issues 2019-02-16 21:48:16 +11:00
Deon George
c8c5cbcd6c Change version 2019-02-03 11:43:25 +11:00
Deon George
f16644ac15 Change gitlab-ci tag 2019-02-03 11:29:46 +11:00
Deon George
dbd8bc3a99 Update to 1.12A42 2019-02-03 11:24:41 +11:00
Deon George
48cf62dd15 Fix trigger for armv7l 2018-09-14 21:32:05 +10:00
Deon George
cf18917a39 Added custom scripts in data 2018-09-14 21:17:16 +10:00
Deon George
bde5de7730 Showing msg on first install about data dir 2018-09-13 23:35:11 +10:00
Deon George
03851190a2 Moved build trigger token to a variable 2018-09-03 10:15:15 +10:00
Deon George
99dbc6b4b6 Added curl as a pre-req 2018-09-03 09:50:26 +10:00
Deon George
cb74c9599b Moved trigger to build 2018-09-03 09:43:01 +10:00
Deon George
abe95e8fd8 Updated trigger-build-ci to include runner tags 2018-09-03 09:36:28 +10:00
Deon George
f22ef035cc Minor tweeking 2018-09-03 09:28:02 +10:00
Deon George
25fb0567df Added tempdirs to data path 2018-09-02 23:27:38 +10:00
Deon George
b0f48263aa Updated apt url, trigger rebuild 2018-08-30 13:22:10 +10:00
Deon George
3f4890970a Added Python to the base image 2018-08-30 00:33:58 +10:00
Deon George
fa04bef3de Updated libcl to stretch compile 2018-08-27 20:07:49 +10:00
Deon George
3e961b585e Update to stretch 2018-08-27 00:30:33 +10:00
9 changed files with 189 additions and 47 deletions

View File

@ -1,3 +1,4 @@
cleaninstall/ cleaninstall/
.git/ .git/
Makefile Makefile
devel/

View File

@ -5,7 +5,7 @@ stages:
- build - build
variables: variables:
VERSION: 1.12a39-${CI_COMMIT_REF_NAME} VERSION: 1.12a43-${CI_COMMIT_REF_NAME}
CACHETAG: build-${CI_COMMIT_REF_NAME} CACHETAG: build-${CI_COMMIT_REF_NAME}
DOCKER_HOST: tcp://docker:2375 DOCKER_HOST: tcp://docker:2375
@ -13,6 +13,7 @@ services:
- docker:dind - docker:dind
before_script: before_script:
- apk add curl
- docker info - docker info
- docker version - docker version
- echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin - echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin
@ -25,7 +26,7 @@ test:
- docker build -t ${CI_REGISTRY_IMAGE}:${VERSION} . - docker build -t ${CI_REGISTRY_IMAGE}:${VERSION} .
- docker images - docker images
tags: tags:
- docker - docker-armv7l
only: only:
- debug - debug
@ -33,11 +34,13 @@ build:
stage: build stage: build
script: script:
- if [ -f init ]; then chmod 500 init; fi - if [ -f init ]; then chmod 500 init; fi
# docker pull ${CI_REGISTRY_IMAGE}:${CACHETAG} || true - docker pull ${CI_REGISTRY_IMAGE}:${CACHETAG} || true
- docker build --cache-from ${CI_REGISTRY_IMAGE}:${CACHETAG} -t ${CI_REGISTRY_IMAGE}:${VERSION} -t ${CI_REGISTRY_IMAGE}:${CACHETAG} . - docker build --cache-from ${CI_REGISTRY_IMAGE}:${CACHETAG} -t ${CI_REGISTRY_IMAGE}:${VERSION} -t ${CI_REGISTRY_IMAGE}:${CACHETAG} .
- docker push ${CI_REGISTRY_IMAGE}:${VERSION} - docker push ${CI_REGISTRY_IMAGE}:${VERSION}
# docker push ${CI_REGISTRY_IMAGE}:${CACHETAG} - docker push ${CI_REGISTRY_IMAGE}:${CACHETAG}
- if [ -n "${TRIGGER_PIPELINE}" ]; then curl -sSX POST -F token=${TRIGGER_PIPELINE} -F ref=armv7l-extras http://dev.leenooks.net/api/v4/projects/45/trigger/pipeline > /dev/null; fi
tags: tags:
- docker - docker
- armv7l
only: only:
- /^x86_64-.*/ - armv7l

View File

@ -1,26 +1,52 @@
# NAME leenooks/mysticbbs # NAME leenooks/mysticbbs
# VERSION 1.12a39-x86_64-extras # VERSION 1.12a43
FROM registry.leenooks.net/leenooks/mysticbbs:1.12a39-x86_64 FROM debian:stretch-slim
## Add Mystic Mods MAINTAINER Deon George <deon@leenooks.net>
# Game DBLup - Double-Up! v1.0
RUN SOURCE_URL=http://yum.leenooks.net/bbs/MysticBBS/mods && FILE=DBLUP10.ZIP && \
cd /tmp && \
curl -O ${SOURCE_URL}/${FILE} && \
unzip ${FILE} && \
cd /mystic/ && \
mv /tmp/sysop.txt docs/mod-dblup-1.0-sysop.txt && \
mv /tmp/doubleup.mps scripts/ && cd scripts && ./mplc doubleup.mps && \
rm -rf /tmp/**
# Utility BLAM - BBS List Admin Manager v2.1 # Pre-requisites
RUN SOURCE_URL=http://yum.leenooks.net/bbs/MysticBBS/mods && FILE=GYBLAM21.ZIP && \ # + Base application requires unzip zip curl libhunspell-dev libpython2.7
cd /tmp && \ RUN apt-get update \
curl -O ${SOURCE_URL}/${FILE} && \ && apt-get install -yqq unzip zip curl libhunspell-dev libpython2.7 patch \
unzip ${FILE} && \ && rm -rf /var/lib/apt/lists/* /tmp/*
cd /mystic/ && \
mv /tmp/sysop.txt docs/mod-blam-2.1-sysop.txt && \ # Add in Leenooks' apt repository
mv /tmp/gy-blam.ini docs/mod-blam-2.1-gy-blam.ini && \ RUN curl -s http://apt.leenooks.net/setup.sh | sh
mv /tmp/gy-blam.mps scripts/ && cd scripts && ./mplc gy-blam.mps && \
rm -rf /tmp/** # For SSH connections
RUN apt-get update \
&& apt-get install --allow-unauthenticated -yqq libcl \
&& rm -rf /var/lib/apt/lists/* /tmp/*
RUN ln -sf /usr/share/zoneinfo/Australia/Melbourne /etc/localtime && echo 'Australia/Melbourne' > /etc/timezone
WORKDIR /mystic
ENV mysticbbs /mystic/data
EXPOSE 22 23 24554
ADD mystic.tar.gz /
VOLUME ["/mystic/data"]
# Enable custom scripts to live in the data dir
RUN ln -sf ../data/scripts /mystic/scripts/custom
# Fix temp locations
RUN ln -s data/tempftn /mystic/tempftn && ln -s data/tempmis /mystic/tempmis && ln -s data/temputil /mystic/temputil
# Add ZeroTier
RUN apt-get update \
&& apt-get install -yqq gnupg1 \
&& rm -rf /var/lib/apt/lists/* /tmp/*
RUN echo "deb http://download.zerotier.com/debian/stretch stretch main" > /etc/apt/sources.list.d/zerotier.list
COPY zt-gpg-key /tmp/
RUN apt-key add /tmp/zt-gpg-key
RUN apt-get update \
&& apt-get install -yq zerotier-one \
&& rm -rf /var/lib/apt/lists/* /tmp/*
VOLUME [ "/var/lib/zerotier-one" ]
COPY init /sbin/init
ENTRYPOINT [ "/sbin/init" ]
CMD [ "start" ]

View File

@ -19,7 +19,7 @@ To use this container:
1. Docker pull it from my registry. (Actually you can skip this step, but its worth doing it anyway!) 1. Docker pull it from my registry. (Actually you can skip this step, but its worth doing it anyway!)
docker pull registry.leenooks.net/leenooks/mysticbbs:1.12a39-x86_64 docker pull registry.leenooks.net/leenooks/mysticbbs:1.12a39-armv7l
2. Create a directory to hold your BBS data. (I use */srv/docker/mystic*). 2. Create a directory to hold your BBS data. (I use */srv/docker/mystic*).
@ -27,7 +27,7 @@ To use this container:
3. Start the container. 3. Start the container.
docker run -itd -v /srv/mystic/data:/mystic/data -p 10022:22 -p 10023:23 -p 24554:24554 registry.leenooks.net/leenooks/mysticbbs:1.12a39-x86_64 docker run -itd -v /srv/mystic/data:/mystic/data -p 10022:22 -p 10023:23 -p 24554:24554 registry.leenooks.net/leenooks/mysticbbs:1.12a39-armv7l
Explanation of these parameters: Explanation of these parameters:
@ -63,16 +63,5 @@ If you want to monitor your container, or stop it, attach to the console with:
You can also run this in a swarm (I do)! You can also run this in a swarm (I do)!
---- ----
## Info on the Images ## Extras Container
There is an "extras" container with some additional MysticBBS mods pre-installed. You'll find info on that in the [armv7l-extras](https://dev.leenooks.net/leenooks/mysticbbs/blob/armv7l-extras/README.md#info-on-the-images) branch.
### leenooks/mysticbbs:1.12a39-armv7l (Branch: armv7l)
This image is a clean install of Mystic BBS v1.12a39. It is ready for you to configure and personalise.
### leenooks/mysticbbs:1.12a39-armv7l-extras (Branch: armv7l-extras)
This image is based on the above image, with the follow additional games/tools installed. You'll need to refer to the documentation in the docs/ directory (inside the container) for details on how to configure these mods. The docs are named `mod-<NAME OF MOD>-...`
| Category | Name | Description |
| :- | :- | :- |
| Game | Double Up | Double Up! for Mystic V1.0 by Darryl Perry |
| Utility | BLAM | BBS List Admin Manager for Mystic v2.0 by Darryl Perry |

View File

@ -2,4 +2,3 @@ data
mystic mystic
mods mods
*.zip *.zip
*.rar

View File

@ -2,7 +2,7 @@
set -e set -e
MYSTIC_SOURCE=${1:-mys112a39_l64.rar} MYSTIC_SOURCE=${1:-mys112a42_pi.zip}
[ "$1" ] && shift [ "$1" ] && shift
SPELL_SOURCE=${1:-mystic_spellcheck_v2.zip} SPELL_SOURCE=${1:-mystic_spellcheck_v2.zip}
[ "$1" ] && shift [ "$1" ] && shift
@ -24,8 +24,9 @@ else
# 2) Create a new directory for it and unzip the App into it # 2) Create a new directory for it and unzip the App into it
[ -d ${CLEAN_INSTALL_DIR} ] && echo "ERROR: Directory [${CLEAN_INSTALL_DIR}] already exists!" && exit 1 [ -d ${CLEAN_INSTALL_DIR} ] && echo "ERROR: Directory [${CLEAN_INSTALL_DIR}] already exists!" && exit 1
mkdir ${CLEAN_INSTALL_DIR}; cd ${CLEAN_INSTALL_DIR}; unrar x ../${MYSTIC_SOURCE}; cd .. unzip ${MYSTIC_SOURCE} -d ${CLEAN_INSTALL_DIR}
[ $? -gt 0 ] && echo "ERROR: Unrar failed?" && exit 1 chmod +x ${CLEAN_INSTALL_DIR}/install
[ $? -gt 0 ] && echo "ERROR: Unzip failed?" && exit 1
# 3) Run docker with -v mapping the unzip files to an arbitrary directory -v unzipfiles:/install # 3) Run docker with -v mapping the unzip files to an arbitrary directory -v unzipfiles:/install
# ** @TODO Request upstream to default QWK and Echo DIRs to named dir as well during installation # ** @TODO Request upstream to default QWK and Echo DIRs to named dir as well during installation
@ -62,6 +63,9 @@ else
# Clean up data dir # Clean up data dir
find data -type f -exec chmod 644 {} \; find data -type f -exec chmod 644 {} \;
# Create our temp dirs
mkdir data/tempftn data/tempmis data/temputil
# Finished # Finished
mv data ../.. mv data ../..
cd ../.. cd ../..

70
init
View File

@ -2,6 +2,7 @@
set -e set -e
NAME="Mystic BBS" NAME="Mystic BBS"
VERSION="A43"
INIT=mis INIT=mis
function stop { function stop {
@ -14,7 +15,74 @@ export PATH=$PATH:/mystic
if [ "$1" == "start" ]; then if [ "$1" == "start" ]; then
# First time install - expand out our data directory # First time install - expand out our data directory
[ $(find data|wc -l) -le 1 ] && tar xzf data.tar.gz if [ $(find data|wc -l) -le 1 ]; then
echo "** First time install, deploying sample setup"
tar xzf data.tar.gz
echo ${VERSION} > .version
# We need to upgrade
else
OLD_VERSION=$(cat data/.version)
echo "** Upgrading [${OLD_VERSION}]"
case ${OLD_VERSION} in
A39)
echo "Processing data/default.txt"
set -x
[ ! -d data/upgrade/${VERSION}/${OLD_VERSION} ] && mkdir -p data/upgrade/${VERSION}/${OLD_VERSION}
cd data/upgrade/${VERSION}/${OLD_VERSION}
[ -d data ] && rm -rf data
tar xzf /mystic/data.tar.gz
cd /mystic/data
diff -u data/default.txt upgrade/${VERSION}/${OLD_VERSION}/data/data/default.txt > upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch && echo $?
if [ -s upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch ]; then
patch -p 0 < upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch
echo "! Check upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch for an strings that may have been overwritten..."
else
rm -f upgrade/${VERSION}/${OLD_VERSION}/default.txt.patch
fi
for i in msg_index.ini msg_index.ans msg_index_help.ans; do
cp upgrade/${VERSION}/${OLD_VERSION}/data/text/$i text/
done
cp upgrade/${VERSION}/${OLD_VERSION}/data/data/cfgroot4.ans data/
../upgrade
cd ../scripts
./mplc -all
cd ../data
rm -rf upgrade/${VERSION}/${OLD_VERSION}/data
echo A42 > .version
;;
A42)
set -x
[ ! -d data/upgrade/${VERSION}/${OLD_VERSION} ] && mkdir -p data/upgrade/${VERSION}/${OLD_VERSION}
cd data/upgrade/${VERSION}/${OLD_VERSION}
[ -d data ] && rm -rf data
tar xzf /mystic/data.tar.gz
cd /mystic/data
for i in text/userchat.ans text/userchat.ini; do
cp upgrade/${VERSION}/${OLD_VERSION}/data/$i ./$i
done
diff -ur text/ upgrade/${VERSION}/${OLD_VERSION}/data/text/ > upgrade/${VERSION}/${OLD_VERSION}/text.patch || true
rm -rf upgrade/${VERSION}/${OLD_VERSION}/data
echo A43 > .version
;;
A43) echo "Already up to date!" ;;
*) echo "!! Dont know how to upgrade" && exit 1
esac
fi
if [ -x /usr/sbin/zerotier-one -a -n "${ENABLE_ZT}" ]; then
echo "** Starting ZeroTier"
mkdir /dev/net && mknod /dev/net/tun -m 666 c 10 200
/usr/sbin/zerotier-one -d
fi
# OK, start # OK, start
exec ${INIT} server exec ${INIT} server

BIN
mystic.tar.gz Normal file

Binary file not shown.

52
zt-gpg-key Normal file
View File

@ -0,0 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: GPGTools - https://gpgtools.org
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
=JgAv
-----END PGP PUBLIC KEY BLOCK-----