From 2fc85bbcf522211774df5767beca16d12bca77cd Mon Sep 17 00:00:00 2001 From: AleaJactaEst Date: Mon, 9 Jul 2018 21:48:03 +0200 Subject: [PATCH] remove jessie builder/server, update script prepare_environment_container_64.sh --- builder/debian/jessie/i686/Dockerfile | 101 ---- .../debian/jessie/i686/build-under-docker.sh | 70 --- builder/debian/jessie/i686/build.sh | 300 ---------- builder/debian/jessie/x86_64/Dockerfile | 102 ---- .../jessie/x86_64/build-under-docker.sh | 69 --- builder/debian/jessie/x86_64/build.sh | 300 ---------- .../prepare_environment_container_64.sh | 27 +- .../common/servercontainer_init_apache.sh | 1 + .../servercontainer_init_create_account.sh | 1 - server/debian/jessie/i686/Dockerfile | 34 -- .../jessie/i686/Dockerfile.khanat.container | 33 -- .../jessie/i686/Dockerfile.khanat.image | 33 -- server/debian/jessie/i686/server-container.sh | 537 ------------------ server/debian/jessie/i686/server-image.sh | 443 --------------- server/debian/jessie/x86_64/Dockerfile | 34 -- .../jessie/x86_64/Dockerfile.khanat.container | 33 -- .../jessie/x86_64/Dockerfile.khanat.image | 33 -- .../debian/jessie/x86_64/server-container.sh | 537 ------------------ server/debian/jessie/x86_64/server-image.sh | 441 -------------- 19 files changed, 9 insertions(+), 3120 deletions(-) delete mode 100644 builder/debian/jessie/i686/Dockerfile delete mode 100755 builder/debian/jessie/i686/build-under-docker.sh delete mode 100755 builder/debian/jessie/i686/build.sh delete mode 100644 builder/debian/jessie/x86_64/Dockerfile delete mode 100755 builder/debian/jessie/x86_64/build-under-docker.sh delete mode 100755 builder/debian/jessie/x86_64/build.sh delete mode 100644 server/debian/jessie/i686/Dockerfile delete mode 100644 server/debian/jessie/i686/Dockerfile.khanat.container delete mode 100644 server/debian/jessie/i686/Dockerfile.khanat.image delete mode 100755 server/debian/jessie/i686/server-container.sh delete mode 100755 server/debian/jessie/i686/server-image.sh delete mode 100644 server/debian/jessie/x86_64/Dockerfile delete mode 100644 server/debian/jessie/x86_64/Dockerfile.khanat.container delete mode 100644 server/debian/jessie/x86_64/Dockerfile.khanat.image delete mode 100755 server/debian/jessie/x86_64/server-container.sh delete mode 100755 server/debian/jessie/x86_64/server-image.sh diff --git a/builder/debian/jessie/i686/Dockerfile b/builder/debian/jessie/i686/Dockerfile deleted file mode 100644 index 0eea5f3..0000000 --- a/builder/debian/jessie/i686/Dockerfile +++ /dev/null @@ -1,101 +0,0 @@ -# Dockerfile - Build environment to compile khanat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -FROM i386/debian:8 -MAINTAINER AleaJactaEst - -ENV HOSTNAME builder - -RUN apt-get update ; \ - apt-get dist-upgrade -y ; \ - DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server ; \ - apt-get install -y apache2 \ - php5 \ - libapache2-mod-php5 \ - php5-mysql \ - apache2-utils \ - php5-gd \ - php5-imagick \ - git \ - libcurl4-openssl-dev \ - libluabind-dev \ - libfreetype6-dev \ - libx11-dev \ - libgl1-mesa-dev \ - libxxf86vm-dev \ - libxrandr-dev \ - libxrender-dev \ - libopenal-dev \ - libogg-dev \ - libvorbis-dev \ - libxml2-dev \ - cmake \ - build-essential \ - libpng12-dev \ - libjpeg62-turbo-dev \ - rrdtool \ - bison \ - libxmu-dev \ - autoconf \ - automake \ - libmysqlclient-dev \ - libgif-dev \ - cpputest \ - libssl-dev \ - liblzma-dev \ - unzip \ - zlib1g-dev \ - libssh-dev \ - libboost-all-dev \ - libopenal-dev \ - libgl1-mesa-dev \ - libogg-dev \ - mercurial \ - wget \ - python3 \ - python3-setuptools - -## Build & Install cpptest -# Impossible to build release 1.1.0, 1.1.1, 1.1.2 -RUN apt-get install -y wget autogen autoconf automake libtool libtool-bin -RUN mkdir -p /opt/src -RUN wget -q https://github.com/cpptest/cpptest/archive/1.0.5.tar.gz -O /opt/src/cpptest.tar.gz -RUN rm -rf /opt/src/cpptest -RUN tar xvf /opt/src/cpptest.tar.gz -C /opt/src --strip 1 -RUN cd /opt/src/cpptest && ./autogen.sh && ./configure && make && make install - -## Build & Install squish -RUN mkdir -p /opt/src -RUN cd /opt/src; wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip -RUN cd /opt/src; unzip squish-1.11.zip -COPY builder/common/squish-limit.patch /opt/squish-limit.patch -RUN cd /opt/src/squish-1.11; patch -i /opt/squish-limit.patch -RUN cd /opt/src/squish-1.11; make -RUN cd /opt/src/squish-1.11; make install - -## Build & Install CURL - 7.46.0 -#RUN hg clone http://hg.kervala.net/packaging/ -#RUN mkdir -p packaging/curl/build -#RUN cd packaging/curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DBUILD_CURL_TESTS=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a .. -#RUN cd packaging/curl/build; make -#RUN cd packaging/curl/build; make install -RUN wget -q https://curl.haxx.se/download/curl-7.46.0.tar.gz -O /opt/src/curl.tar.gz -RUN mkdir -p /opt/src/curl/build -RUN tar xvf /opt/src/curl.tar.gz -C /opt/src/curl --strip 1 -RUN cd /opt/src/curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DBUILD_CURL_TESTS=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a .. -RUN cd /opt/src/curl/build; make -RUN cd /opt/src/curl/build; make install diff --git a/builder/debian/jessie/i686/build-under-docker.sh b/builder/debian/jessie/i686/build-under-docker.sh deleted file mode 100755 index 51254c4..0000000 --- a/builder/debian/jessie/i686/build-under-docker.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash -# Script to build Khaganat binary (executed in docker) -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -declare DIRBUILD="/opt/build/" -if [[ -n "$1" ]] -then - DIRBUILD="$1" -fi -declare LOGFILE="${DIRBUILD}/build.log" - -function chrashed() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - BUILD FAILED (code:$?)" >> $LOGFILE - exit 2 -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $1" - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $1" >> $LOGFILE -} - -trap chrashed EXIT - -msg_info "CREATE BUILD DIRECTORY" -mkdir -p ${DIRBUILD}/ || exit 2 - -if [[ -f ${DIRBUILD}/envi.sh ]] -then - msg_info "LOAD ENVIRONMENT" - source ${DIRBUILD}/envi.sh -fi - -msg_info "PREPARE BUILD" -# on 32bit, we need add option '-DWITH_SSE2=OFF' -cd ${DIRBUILD}; cmake -DWITH_NEL=ON \ - -DWITH_STATIC=ON \ - -DWITH_STATIC_DRIVERS=ON \ - -DWITH_STATIC_EXTERNAL=ON \ - -DWITH_SYMBOLS=ON \ - -DWITH_LUA52=ON \ - -DWITH_RYZOM_PATCH=ON \ - -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON \ - ${CMAKEOPTS} \ - /opt/code 1>>$LOGFILE 2>&1 || exit 2 - -msg_info "BUILD START" -cd ${DIRBUILD}; make $MAKEOPTS 1>>$LOGFILE 2>&1 || exit 2 - -msg_info "GENERATE PACKAGE" -cd ${DIRBUILD}; make package 1>>$LOGFILE 2>&1 || exit 2 - -trap '' EXIT -msg_info "BUILD END" diff --git a/builder/debian/jessie/i686/build.sh b/builder/debian/jessie/i686/build.sh deleted file mode 100755 index df2a9df..0000000 --- a/builder/debian/jessie/i686/build.sh +++ /dev/null @@ -1,300 +0,0 @@ -#!/bin/bash -# -# Script to build khaganat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -declare -i REMOVE=0 -declare -i IMAGE=0 -declare -i BUILD=1 -declare -i PACKAGE=0 -declare -i DEBUG=0 -declare JOBS="" -declare CMAKEOPTS="" -declare DOCKEROPTS="" -declare DIRBUILD="" -declare CLEANDOCKER=0 -declare -i CLEANIMAGENONE=0 -declare -i AUTODETEC=1 -declare DOCKERBUILDOPT="" - -declare IMAGEDOCKER="opennel/builder_debian_jessie_i686" -declare LOCALBUILDDIR="build/$IMAGEDOCKER" -declare LOCALSRC="debian/jessie/i686" -declare DIRPACKAGE="output/OpenNel_debian_jessie_i686/package" -declare PACKAGEBIN="$DIRPACKAGE/ryzomcore_jessie_i686.tar.gz" -declare PACKAGEREF="$DIRPACKAGE/khanat-ref-ressources.tar.gz" - - -usage() -{ -cat << EOF -usage:$0 [options] - script to build under docker - - Step: - 1) clean old build directory - 2) create image builder - 3) launch build under docker (launch script build-under-docker.sh) - 4) remove docker container with state exited and clean docker images NONE - -options: - -h, --help : Show this help - -d, --debug : Show debug message - -r, --remove : Remove old build repository - -f, --force-create-image : force to create docker image (use to build khanat) - default autodetec. - -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg. - -a OPTS, --add-opts-cmake=OPTS : Adding options on cmake command (before build) - -c, --clean-container : remove all container in state Exited - -w, --clean-images-none : Remove images docker (with name 'none') - -m OPTS, --add-opts-docker=OPTS : Adding options on docker command (when build) - --only-build-server : adding option to build only server - -p, --package : generate package - --code-source=[DIR] : localization source OpenNel code - -Example : - cd [root Khanat directory] - ./build.sh -c -r -m '-m 20g' - ./build.sh -c -r -j 4 -a '-DWITH_SYMBOLS=ON' -a '-DWITH_RYZOM_TOOLS=OFF' -a '-DWITH_NEL_TOOLS=OFF' -m '-m 20g' -d - -EOF -} - -function msg_debug() -{ - if [[ $DEBUG -ne 0 ]] - then - echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" - fi -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" -} - -function msg_error() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 -} - -# -# MAIN -# - -calldir="$(dirname $0)" -basedir=$(cd $calldir; pwd) -rootdir="$(dirname $(dirname $(dirname $(dirname ${basedir}))))" -codesource="$(dirname ${rootdir})/khanat-opennel-code" - -while test $# -gt 0 -do - case "$1" in - -h|--help) - usage - exit 1 - ;; - -d|--debug) - DEBUG=1 - shift - ;; - -c|--clean-container) - CLEANDOCKER=1 - shift - ;; - -r|--remove) - REMOVE=1 - shift - ;; - -f|--force-create-image) - IMAGE=1 - shift - ;; - -p|--package) - PACKAGE=1 - shift - ;; - -j) - shift - # search next argument is value or new argument - if [[ ${1:0:1} == "-" ]] - then - JOBS="-j" - else - JOBS="-j $1" - shift - fi - ;; - --jobs*) - if [[ ${1#*=} == "" ]] - then - JOBS="-j" - else - JOBS="-j ${1#*=}" - fi - shift - ;; - -a) - shift - CMAKEOPTS="$CMAKEOPTS $1" - shift - ;; - --add-opts-cmake=*) - CMAKEOPTS="$CMAKEOPTS ${1#*=}" - shift - ;; - -m) - shift - DOCKEROPTS="$DOCKEROPTS $1" - shift - ;; - --add-opts-docker=*) - DOCKEROPTS="$DOCKEROPTS ${1#*=}" - shift - ;; - --only-build-server) - CMAKEOPTS="$CMAKEOPTS -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF" - shift - ;; - -w|--clean-images-none) - CLEANIMAGENONE=1 - shift - ;; - --code-source=*) - codesource="${1#*=}" - shift - ;; - *) - msg_error "options '$1' not recognize" - usage - exit 1 - ;; - esac -done - -function chrashed() -{ - msg_error "BUILD FAILED (code:$?)" - exit 2 -} - -trap chrashed EXIT - -msg_debug "prg: $0" - -docker -v 1>/dev/null -if [[ $? -ne 0 ]] -then - echo "*** ERROR docker not installed" - exit 2 -fi - -if [[ $AUTODETEC -ne 0 ]] -then - if [[ $(docker images -f "reference=$IMAGEDOCKER" | wc -l) -lt 2 ]] - then - IMAGE=1 - fi -fi - -DIRBUILD="${rootdir}/${LOCALBUILDDIR}" - -msg_debug "calldir: $calldir" -msg_debug "basedir: $basedir" -msg_debug "rootdir: $rootdir" -msg_debug "codesource: $codesource" -msg_debug "JOBS: '$JOBS'" -msg_debug "CMAKEOPTS: '$CMAKEOPTS'" -msg_debug "DOCKEROPTS: '$DOCKEROPTS'" - -if [ ! -d "${codesource}/code" ] -then - msg_error "Missing OpenNel source (${codesource})" - exit 2 -fi - -mkdir -p "${DIRBUILD}" -if [[ $REMOVE -ne 0 ]] -then - msg_info "REMOVE OLD BUILD" - rm -rf ${DIRBUILD}/* || exit 2 -fi - -echo "$(date "+%Y/%m/%d %H:%M:%S") LAUNCH BUILD" > ${DIRBUILD}/build.log - -cat << EOF > ${DIRBUILD}/envi.sh -#!/bin/bash -export MAKEOPTS="$JOBS" -export CMAKEOPTS="$CMAKEOPTS" -EOF - -if [[ $IMAGE -ne 0 ]] -then - echo "$(date "+%Y/%m/%d %H:%M:%S") GENERATE DOCKER IMAGE" > ${DIRBUILD}/build.log - msg_info "GENERATE DOCKER IMAGE" - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t "${IMAGEDOCKER}" \ - --file "${basedir}/Dockerfile" || exit 2 -fi - -if [[ $BUILD -ne 0 ]] -then - msg_info "BUILD" - cd $rootdir; docker run -it \ - --hostname=builder \ - -u "$(id -u $USERNAME):$(id -g $USERNAME)" \ - -v ${rootdir}/builder:/opt/builder:ro \ - -v ${codesource}/code:/opt/code:ro \ - -v ${rootdir}/build:/opt/build \ - -v /etc/localtime:/etc/localtime:ro \ - ${DOCKEROPTS} \ - ${IMAGEDOCKER} \ - /opt/builder/${LOCALSRC}/build-under-docker.sh "/opt/${LOCALBUILDDIR}" || exit 2 -fi - -if [[ $PACKAGE -ne 0 ]] -then - msg_info "COPY PACKAGES" - mkdir -p "$rootdir/$DIRPACKAGE" - cd ${rootdir}; tar czf ${PACKAGEREF} \ - ${codesource}/code/ryzom/server/shard.screen.rc \ - ${codesource}/code/ryzom/common/* \ - ${codesource}/code/ryzom/client/* \ - ${codesource}/code/ryzom/server/* \ - ${codesource}/code/web/* || exit 2 - cp ${rootdir}/${LOCALBUILDDIR}/ryzomcore-0.12.0..tar.gz ${PACKAGEBIN} || exit 2 -fi - -if [[ $CLEANDOCKER -ne 0 ]] -then - msg_info "CLEAN CONTAINER" - docker rm --force `docker ps -qf 'status=exited' -f "ancestor=${IMAGEDOCKER}"` || exit 2 -fi - -if [[ $CLEANIMAGENONE -ne 0 ]] -then - msg_info "CLEAN IMAGE DOCKER 'NONE'" - listimages=( $(docker images --filter "dangling=true" --format "{{.ID}}") ) - - msg_debug "IMAGES NONE : ${listimages[@]}" - if [[ -n "${listimages[@]}" ]] - then - docker rmi --force "${listimages[@]}" || exit 2 - fi -fi - -trap '' EXIT -msg_info "END" diff --git a/builder/debian/jessie/x86_64/Dockerfile b/builder/debian/jessie/x86_64/Dockerfile deleted file mode 100644 index c9ebe12..0000000 --- a/builder/debian/jessie/x86_64/Dockerfile +++ /dev/null @@ -1,102 +0,0 @@ -# Dockerfile - Build environment to compile khanat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -FROM amd64/debian:8 -MAINTAINER AleaJactaEst - -ENV HOSTNAME builder - -RUN apt-get update ; \ - apt-get dist-upgrade -y ; \ - DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server ; \ - apt-get install -y apache2 \ - php5 \ - libapache2-mod-php5 \ - php5-mysql \ - apache2-utils \ - php5-gd \ - php5-imagick \ - git \ - libcurl4-openssl-dev \ - libluabind-dev \ - libfreetype6-dev \ - libx11-dev \ - libgl1-mesa-dev \ - libxxf86vm-dev \ - libxrandr-dev \ - libxrender-dev \ - libopenal-dev \ - libogg-dev \ - libvorbis-dev \ - libxml2-dev \ - cmake \ - build-essential \ - libpng12-dev \ - libjpeg62-turbo-dev \ - rrdtool \ - bison \ - libxmu-dev \ - autoconf \ - automake \ - libmysqlclient-dev \ - libgif-dev \ - cpputest \ - libssl-dev \ - liblzma-dev \ - unzip \ - zlib1g-dev \ - libssh-dev \ - libboost-all-dev \ - libopenal-dev \ - libgl1-mesa-dev \ - libogg-dev \ - mercurial \ - wget \ - python3 \ - python3-setuptools - -## Build & Install cpptest -# Impossible to build release 1.1.0, 1.1.1, 1.1.2 -RUN apt-get install -y wget autogen autoconf automake libtool libtool-bin -RUN mkdir -p /opt/src -RUN wget -q https://github.com/cpptest/cpptest/archive/1.0.5.tar.gz -O /opt/src/cpptest.tar.gz -RUN rm -rf /opt/src/cpptest -RUN tar xvf /opt/src/cpptest.tar.gz -C /opt/src --strip 1 -RUN cd /opt/src/cpptest && ./autogen.sh && ./configure && make && make install - -## Build & Install squish -RUN mkdir -p /opt/src -RUN cd /opt/src; wget -c https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/libsquish/squish-1.11.zip -RUN cd /opt/src; unzip squish-1.11.zip -COPY builder/common/squish-limit.patch /opt/squish-limit.patch -RUN cd /opt/src/squish-1.11; patch -i /opt/squish-limit.patch -RUN cd /opt/src/squish-1.11; make -RUN cd /opt/src/squish-1.11; make install - -## Build & Install CURL - 7.46.0 -#RUN hg clone http://hg.kervala.net/packaging/ -#RUN mkdir -p packaging/curl/build -#RUN cd packaging/curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DBUILD_CURL_TESTS=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a .. -#RUN cd packaging/curl/build; make -#RUN cd packaging/curl/build; make install -RUN wget -q https://curl.haxx.se/download/curl-7.46.0.tar.gz -O /opt/src/curl.tar.gz -RUN mkdir -p /opt/src/curl/build -RUN tar xvf /opt/src/curl.tar.gz -C /opt/src/curl --strip 1 -RUN cd /opt/src/curl/build; cmake -DCMAKE_BUILD_TYPE=Release -DCURL_ZLIB=ON -DBUILD_CURL_EXE=OFF -DBUILD_CURL_TESTS=OFF -DCURL_STATICLIB=ON -DHTTP_ONLY=ON -DENABLE_IPV6=ON -DCMAKE_USE_OPENSSL=ON -DOPENSSL_SSL_LIBRARIES=/usr/lib/libssl.a -DOPENSSL_CRYPTO_LIBRARIES=/usr/lib/libcrypto.a -DCMAKE_USE_LIBSSH2=OFF -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.a .. -RUN cd /opt/src/curl/build; make -RUN cd /opt/src/curl/build; make install diff --git a/builder/debian/jessie/x86_64/build-under-docker.sh b/builder/debian/jessie/x86_64/build-under-docker.sh deleted file mode 100755 index 20b3929..0000000 --- a/builder/debian/jessie/x86_64/build-under-docker.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -# Script to build Khaganat binary (executed in docker) -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -declare DIRBUILD="/opt/build/" -if [[ -n "$1" ]] -then - DIRBUILD="$1" -fi -declare LOGFILE="${DIRBUILD}/build.log" - -function chrashed() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - BUILD FAILED (code:$?)" >> $LOGFILE - exit 2 -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $1" - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $1" >> $LOGFILE -} - -trap chrashed EXIT - -msg_info "CREATE BUILD DIRECTORY" -mkdir -p ${DIRBUILD}/ || exit 2 - -if [[ -f ${DIRBUILD}/envi.sh ]] -then - msg_info "LOAD ENVIRONMENT" - source ${DIRBUILD}/envi.sh -fi - -msg_info "PREPARE BUILD" -cd ${DIRBUILD}; cmake -DWITH_NEL=ON \ - -DWITH_STATIC=ON \ - -DWITH_STATIC_DRIVERS=ON \ - -DWITH_STATIC_EXTERNAL=ON \ - -DWITH_SYMBOLS=ON \ - -DWITH_LUA52=ON \ - -DWITH_RYZOM_PATCH=ON \ - -DWITH_RYZOM_CUSTOM_PATCH_SERVER=ON \ - ${CMAKEOPTS} \ - /opt/code 1>>$LOGFILE 2>&1 || exit 2 - -msg_info "BUILD START" -cd ${DIRBUILD}; make $MAKEOPTS 1>>$LOGFILE 2>&1 || exit 2 - -msg_info "GENERATE PACKAGE" -cd ${DIRBUILD}; make package 1>>$LOGFILE 2>&1 || exit 2 - -trap '' EXIT -msg_info "BUILD END" diff --git a/builder/debian/jessie/x86_64/build.sh b/builder/debian/jessie/x86_64/build.sh deleted file mode 100755 index bb7ee16..0000000 --- a/builder/debian/jessie/x86_64/build.sh +++ /dev/null @@ -1,300 +0,0 @@ -#!/bin/bash -# -# Script to build khaganat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -declare -i REMOVE=0 -declare -i IMAGE=0 -declare -i BUILD=1 -declare -i PACKAGE=0 -declare -i DEBUG=0 -declare JOBS="" -declare CMAKEOPTS="" -declare DOCKEROPTS="" -declare DIRBUILD="" -declare CLEANDOCKER=0 -declare -i CLEANIMAGENONE=0 -declare -i AUTODETEC=1 -declare DOCKERBUILDOPT="" - -declare IMAGEDOCKER="opennel/builder_debian_jessie_x86_64" -declare LOCALBUILDDIR="build/$IMAGEDOCKER" -declare LOCALSRC="debian/jessie/x86_64" -declare DIRPACKAGE="output/OpenNel_debian_jessie_x86_64/package" -declare PACKAGEBIN="$DIRPACKAGE/ryzomcore_jessie_x86_64.tar.gz" -declare PACKAGEREF="$DIRPACKAGE/khanat-ref-ressources.tar.gz" - - -usage() -{ -cat << EOF -usage:$0 [options] - script to build under docker - - Step: - 1) clean old build directory - 2) create image builder - 3) launch build under docker (launch script build-under-docker.sh) - 4) remove docker container with state exited and clean docker images NONE - -options: - -h, --help : Show this help - -d, --debug : Show debug message - -r, --remove : Remove old build repository - -f, --force-create-image : force to create docker image (use to build khanat) - default autodetec. - -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg. - -a OPTS, --add-opts-cmake=OPTS : Adding options on cmake command (before build) - -c, --clean-container : remove all container in state Exited - -w, --clean-images-none : Remove images docker (with name 'none') - -m OPTS, --add-opts-docker=OPTS : Adding options on docker command (when build) - --only-build-server : adding option to build only server - -p, --package : generate package - --code-source=[DIR] : localization source OpenNel code - -Example : - cd [root Khanat directory] - ./build.sh -c -r -m '-m 20g' - ./build.sh -c -r -j 4 -a '-DWITH_SYMBOLS=ON' -a '-DWITH_RYZOM_TOOLS=OFF' -a '-DWITH_NEL_TOOLS=OFF' -m '-m 20g' -d - -EOF -} - -function msg_debug() -{ - if [[ $DEBUG -ne 0 ]] - then - echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" - fi -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" -} - -function msg_error() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 -} - -# -# MAIN -# - -calldir="$(dirname $0)" -basedir=$(cd $calldir; pwd) -rootdir="$(dirname $(dirname $(dirname $(dirname ${basedir}))))" -codesource="$(dirname ${rootdir})/khanat-opennel-code" - -while test $# -gt 0 -do - case "$1" in - -h|--help) - usage - exit 1 - ;; - -d|--debug) - DEBUG=1 - shift - ;; - -c|--clean-container) - CLEANDOCKER=1 - shift - ;; - -r|--remove) - REMOVE=1 - shift - ;; - -f|--force-create-image) - IMAGE=1 - shift - ;; - -p|--package) - PACKAGE=1 - shift - ;; - -j) - shift - # search next argument is value or new argument - if [[ ${1:0:1} == "-" ]] - then - JOBS="-j" - else - JOBS="-j $1" - shift - fi - ;; - --jobs*) - if [[ ${1#*=} == "" ]] - then - JOBS="-j" - else - JOBS="-j ${1#*=}" - fi - shift - ;; - -a) - shift - CMAKEOPTS="$CMAKEOPTS $1" - shift - ;; - --add-opts-cmake=*) - CMAKEOPTS="$CMAKEOPTS ${1#*=}" - shift - ;; - -m) - shift - DOCKEROPTS="$DOCKEROPTS $1" - shift - ;; - --add-opts-docker=*) - DOCKEROPTS="$DOCKEROPTS ${1#*=}" - shift - ;; - --only-build-server) - CMAKEOPTS="$CMAKEOPTS -DWITH_NEL_TESTS=OFF -DWITH_RYZOM_CLIENT=OFF -DWITH_DRIVER_OPENGL=OFF -DWITH_DRIVER_OPENAL=OFF -DWITH_NEL_SAMPLES=OFF -DWITH_SOUND=OFF" - shift - ;; - -w|--clean-images-none) - CLEANIMAGENONE=1 - shift - ;; - --code-source=*) - codesource="${1#*=}" - shift - ;; - *) - msg_error "options '$1' not recognize" - usage - exit 1 - ;; - esac -done - -function chrashed() -{ - msg_error "BUILD FAILED (code:$?)" - exit 2 -} - -trap chrashed EXIT - -msg_debug "prg: $0" - -docker -v 1>/dev/null -if [[ $? -ne 0 ]] -then - echo "*** ERROR docker not installed" - exit 2 -fi - -if [[ $AUTODETEC -ne 0 ]] -then - if [[ $(docker images -f "reference=$IMAGEDOCKER" | wc -l) -lt 2 ]] - then - IMAGE=1 - fi -fi - -DIRBUILD="${rootdir}/${LOCALBUILDDIR}" - -msg_debug "calldir: $calldir" -msg_debug "basedir: $basedir" -msg_debug "rootdir: $rootdir" -msg_debug "codesource: $codesource" -msg_debug "JOBS: '$JOBS'" -msg_debug "CMAKEOPTS: '$CMAKEOPTS'" -msg_debug "DOCKEROPTS: '$DOCKEROPTS'" - -if [ ! -d "${codesource}/code" ] -then - msg_error "Missing OpenNel source (${codesource})" - exit 2 -fi - -mkdir -p "${DIRBUILD}" -if [[ $REMOVE -ne 0 ]] -then - msg_info "REMOVE OLD BUILD" - rm -rf ${DIRBUILD}/* || exit 2 -fi - -echo "$(date "+%Y/%m/%d %H:%M:%S") LAUNCH BUILD" > ${DIRBUILD}/build.log - -cat << EOF > ${DIRBUILD}/envi.sh -#!/bin/bash -export MAKEOPTS="$JOBS" -export CMAKEOPTS="$CMAKEOPTS" -EOF - -if [[ $IMAGE -ne 0 ]] -then - echo "$(date "+%Y/%m/%d %H:%M:%S") GENERATE DOCKER IMAGE" > ${DIRBUILD}/build.log - msg_info "GENERATE DOCKER IMAGE" - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t "${IMAGEDOCKER}" \ - --file "${basedir}/Dockerfile" || exit 2 -fi - -if [[ $BUILD -ne 0 ]] -then - msg_info "BUILD" - cd $rootdir; docker run -it \ - --hostname=builder \ - -u "$(id -u $USERNAME):$(id -g $USERNAME)" \ - -v ${rootdir}/builder:/opt/builder:ro \ - -v ${codesource}/code:/opt/code:ro \ - -v ${rootdir}/build:/opt/build \ - -v /etc/localtime:/etc/localtime:ro \ - ${DOCKEROPTS} \ - ${IMAGEDOCKER} \ - /opt/builder/${LOCALSRC}/build-under-docker.sh "/opt/${LOCALBUILDDIR}" || exit 2 -fi - -if [[ $PACKAGE -ne 0 ]] -then - msg_info "COPY PACKAGES" - mkdir -p "$rootdir/$DIRPACKAGE" - cd ${rootdir}; tar czf ${PACKAGEREF} \ - ${codesource}/code/ryzom/server/shard.screen.rc \ - ${codesource}/code/ryzom/common/* \ - ${codesource}/code/ryzom/client/* \ - ${codesource}/code/ryzom/server/* \ - ${codesource}/code/web/* || exit 2 - cp ${rootdir}/${LOCALBUILDDIR}/ryzomcore-0.12.0..tar.gz ${PACKAGEBIN} || exit 2 -fi - -if [[ $CLEANDOCKER -ne 0 ]] -then - msg_info "CLEAN CONTAINER" - docker rm --force `docker ps -qf 'status=exited' -f "ancestor=${IMAGEDOCKER}"` || exit 2 -fi - -if [[ $CLEANIMAGENONE -ne 0 ]] -then - msg_info "CLEAN IMAGE DOCKER 'NONE'" - listimages=( $(docker images --filter "dangling=true" --format "{{.ID}}") ) - - msg_debug "IMAGES NONE : ${listimages[@]}" - if [[ -n "${listimages[@]}" ]] - then - docker rmi --force "${listimages[@]}" || exit 2 - fi -fi - -trap '' EXIT -msg_info "END" diff --git a/server/common/rootweb/prepare_environment_container_64.sh b/server/common/rootweb/prepare_environment_container_64.sh index 8e5b1a7..a443b47 100644 --- a/server/common/rootweb/prepare_environment_container_64.sh +++ b/server/common/rootweb/prepare_environment_container_64.sh @@ -1,33 +1,22 @@ #!/bin/bash - -declare IMAGEKHANATSERVER="opennel/servercontainer_debian_stretch_x86_64" - +# Script to download khanat docker package mkdir -p $HOME/Public - -echo "$(date "+%Y/%m/%d %H:%M:%S") Get ip address server khanat" -listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" -if [[ ${#listcontainer[@]} -eq 1 ]] -then - ipaddress=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" ${listcontainer[@]}) -fi - + +ipaddress="" + echo "$(date "+%Y/%m/%d %H:%M:%S") get client package" wget http://$ipaddress/client/smokey_linux64.tar.gz -O smokey_linux64.tar.gz - + echo "$(date "+%Y/%m/%d %H:%M:%S") clean old client" if [[ -d Khanat_Linux64 ]] then rm -rf Khanat_Linux64 || exit 2 fi - + echo "$(date "+%Y/%m/%d %H:%M:%S") install new client" -#7z x -y $SRCKHANATCLIENT || exit 2 -#7z x -y -oKhanat_Linux64 $SRCKHANATCLIENTDEBUG || exit 2 tar xvzf smokey_linux64.tar.gz || exit 2 - + echo "$(date "+%Y/%m/%d %H:%M:%S") configure client" -sed -i 's/lirria.khaganat.net/'$ipaddress'/g' Khanat_Linux64/client_default.cfg +sed -i 's/lirria.khaganat.net/'"$ipaddress"'/g' Khanat_Linux64/client_default.cfg echo -en "Client khanat installed & configured\nGo to Khanat_Linux64 directory and launch client\n" echo -en "(cd Khanat_Linux64;./khanat_client)\n" - - diff --git a/server/debian/common/servercontainer_init_apache.sh b/server/debian/common/servercontainer_init_apache.sh index b858c9c..dd76176 100755 --- a/server/debian/common/servercontainer_init_apache.sh +++ b/server/debian/common/servercontainer_init_apache.sh @@ -109,6 +109,7 @@ cat << EOF > /etc/apache2/sites-available/000-default.conf AddType text/html .php .phps AddHandler application/x-httpd-php .php AddHandler application/x-httpd-php-source .phps + AddHandler application/x-httpd-php .sh ServerName lirria.khaganat.net diff --git a/server/debian/common/servercontainer_init_create_account.sh b/server/debian/common/servercontainer_init_create_account.sh index 41512f4..60a9bdb 100755 --- a/server/debian/common/servercontainer_init_create_account.sh +++ b/server/debian/common/servercontainer_init_create_account.sh @@ -75,7 +75,6 @@ msg_debug "group : $(id -g -n gameserver)" create_dir_gameserver '/home/gameserver/ext' create_dir_gameserver '/home/gameserver/khanat' -create_dir_gameserver '/home/gameserver/khanat/rootweb' #################################### # End diff --git a/server/debian/jessie/i686/Dockerfile b/server/debian/jessie/i686/Dockerfile deleted file mode 100644 index 9f2abbe..0000000 --- a/server/debian/jessie/i686/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -# Dockerfile - Build image to prepare khanat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -FROM i386/debian:8 -MAINTAINER AleaJactaEst - -ENV HOSTNAME basic_server - -RUN apt-get update ; \ - apt-get dist-upgrade -y ; \ - apt-get install -y curl nano vim less bash-completion cron logrotate bsd-mailx ; \ - apt-get install -y openssh-server sudo net-tools ; \ - apt-get install -y lzma xdelta p7zip p7zip-full ; \ - DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server ; \ - apt-get install -y apache2 php5 libapache2-mod-php5 php5-mysql apache2-utils php5-gd php5-imagick rrdtool screen mcrypt php5-mcrypt python3 ; \ - DEBIAN_FRONTEND=noninteractive apt-get install -y phpmyadmin - - - diff --git a/server/debian/jessie/i686/Dockerfile.khanat.container b/server/debian/jessie/i686/Dockerfile.khanat.container deleted file mode 100644 index b2b7500..0000000 --- a/server/debian/jessie/i686/Dockerfile.khanat.container +++ /dev/null @@ -1,33 +0,0 @@ -# Dockerfile - Build for server debian -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -FROM opennel/server_generic_debian_jessie_i686 -MAINTAINER AleaJactaEst - -ENV HOSTNAME khanat_server - -COPY server/debian/common/servercontainer_function.sh /opt/ -COPY server/debian/common/servercontainer_init_* /opt/ - -COPY output/opennel_debian_jessie_i686/khanat_config.sh /opt/khanat_config.sh - -RUN /opt/servercontainer_init_create_account.sh -RUN /opt/servercontainer_init_mysql.sh -RUN /opt/servercontainer_init_apache.sh -RUN /opt/servercontainer_init_configure_envi.sh - diff --git a/server/debian/jessie/i686/Dockerfile.khanat.image b/server/debian/jessie/i686/Dockerfile.khanat.image deleted file mode 100644 index cae8488..0000000 --- a/server/debian/jessie/i686/Dockerfile.khanat.image +++ /dev/null @@ -1,33 +0,0 @@ -# Dockerfile - Build for server debian -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -FROM opennel/server_generic_debian_jessie_i686 -MAINTAINER AleaJactaEst - -ENV HOSTNAME khanat_server - -COPY todelete.sh /opt/khanat_config.sh -COPY server/debian/common/ /opt/ - -COPY output/extra/ryzomcore.tar.gz /opt/ -COPY output/extra/ryzom-ressources.tar.gz /opt/ -COPY output/extra/khanat-ressources.tar.gz /opt/ -COPY output/extra/khanat-client-data.tar.gz /opt/ - -RUN /opt/serverimage_init_khanat.sh - diff --git a/server/debian/jessie/i686/server-container.sh b/server/debian/jessie/i686/server-container.sh deleted file mode 100755 index c5911b1..0000000 --- a/server/debian/jessie/i686/server-container.sh +++ /dev/null @@ -1,537 +0,0 @@ -#!/bin/bash -# -# Script to start khanat server (with docker) -# All data are include on host -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - - -declare -i REMOVE=0 -declare -i IMAGE=1 -declare -i BASICSERVER=0 -declare -i KHANATSERVER=0 -declare -i CONFIGUREKHANATSERVER=0 -declare -i LAUNCHKHANAT=1 -declare -i UPDATEDATA=0 -declare -i DEBUG=0 -declare -i AUTODETEC=1 -declare -i STOPKHANAT=0 -declare -i CLEANCONTAINERKHANAT=0 -declare -i CONNECTSSHKHANAT=0 -declare -i KHANAT_CLIENT_VERSION=1 -declare -i SHOWIPKHANATSERVER=0 -declare METHODSTARTSERVER="--start-khanat-with-screen" -declare -i CLEANIMAGENONE=0 -declare DOCKERBUILDOPT="" - -declare IMAGEGENERICSERVER="opennel/server_generic_debian_jessie_i686" -declare IMAGEKHANATSERVER="opennel/servercontainer_debian_jessie_i686" -declare LOCALBUILDDIR="build/opennel/builder_debian_jessie_i686" -declare DIROUTPUT="output/opennel_debian_jessie_i686" -declare ROOTDATAKHANAT="$DIROUTPUT/gameserver" -declare DIRLOG="$ROOTDATAKHANAT/log" -declare DIRDATABASE="$ROOTDATAKHANAT/database" -declare ENVIFILE="$DIROUTPUT/khanat_config.sh" -declare DIRKHANAT="$ROOTDATAKHANAT/khanat" -declare KHANAT_RESSOURCES_DIR="" -declare KHANAT_CLIENT_DATA_DIR="" -declare OPENNEL_CODE_DIR="" -declare STEP_CONFIGURE_OK="$ROOTDATAKHANAT/khanat/step_configure.ok" -declare DIRCLIENT="Khanat_Linux32" -declare PACKAGECLIENT="smokey_linux32" - -usage() -{ -cat << EOF -usage:$0 [options] - script to build under docker - - Step: - 1) create image basic server - 2) create image khanat server - 3) configure khagant server - 4) launch khagant server - -options: - -h, --help : Show this help - -d, --debug : Show debug message - -r, --remove : Remove directory data khanat - -b, --force-basic : Force create/recreate image basic server - -k, --force-khanat : Force create/recreate image khanat server - -u, --update-data : generate a new patch (client & update server) - -g, --configure-khanat : Force configure khanat server - -n, --no-launch-khanat : Doesn't launch khanat server - -s, --stop-server : Stop server khanat - -c, --clean-container-khanat : Remove old server khanat (stopped) - -w, --clean-images-none : Remove images docker (with name 'none') - -i, --show-ip-khanat-server : show ip address for khanat server (launch under docker) - --option-docker-build=[STRING] : you can add option in "docker build" - --khanat-ressources-dir=[DIR] : localization khanat-ressources - --khanat-client-data-dir=[DIR] : localization khanat-client-data - --opennel-code-dir=[DIR] : localization opennel-code - --start-khanat-with-screen : start with screen - --start-khanat-with-khanat-log : start server khanat and show khanat log - --start-khanat-with-full-log : start server khanat and show full log - --start-khanat-with-watch-state : start server khanat and show state (loop) - --start-khanat-with-watch-state-nagios : start server khanat and show state [nagios format] (loop) - --start-khanat-with-bash-after : start server khanat and launch bash - --start-with-manager : start khanat with manager - --ssh : connect on khanat server (with ssh) [Exclusive action, can't execute other action] - --client-version=[INTEGER] : version client khanat (we need to communicate with our server) - -Example : - cd [root Khanat directory] - ./server.sh - ./server.sh -k - ./server.sh --ssh -EOF -} - -function msg_debug() -{ - if [[ $DEBUG -ne 0 ]] - then - echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" - fi -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" -} - -function msg_error() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 -} - -# -# MAIN -# - -#msg_info "START" - -calldir="$(dirname $0)" -basedir=$(cd $calldir; pwd) -rootdir="$(dirname $(dirname $(dirname $(dirname ${basedir}))))" -ressourcedir="$(dirname ${rootdir})/khanat-ressources" -dataclientdir="$(dirname ${rootdir})/khanat-client-data" - -while test $# -gt 0 -do - case "$1" in - -h|--help) - usage - exit 1 - ;; - -d|--debug) - DEBUG=1 - shift - ;; - --ssh) - CONNECTSSHKHANAT=1 - shift - ;; - -r|--remove) - REMOVE=1 - CONFIGUREKHANATSERVER=1 - shift - ;; - -c|--clean-container-khanat) - CLEANCONTAINERKHANAT=1 - shift - ;; - -s|--stop-server) - STOPKHANAT=1 - shift - ;; - -b|--force-basic) - BASICSERVER=1 - shift - ;; - -n|--no-launch-khanat) - LAUNCHKHANAT=0 - shift - ;; - -k|--force-khanat) - KHANATSERVER=1 - shift - ;; - -g|--configure-khanat) - CONFIGUREKHANATSERVER=1 - shift - ;; - -i|--show-ip-khanat-server) - SHOWIPKHANATSERVER=1 - shift - ;; - --start-khanat-with-screen) - METHODSTARTSERVER="--start-khanat-with-screen" - shift - ;; - --start-khanat-with-khanat-log) - METHODSTARTSERVER="--show-khanat-log" - shift - ;; - --start-khanat-with-full-log) - METHODSTARTSERVER="--show-all-log" - shift - ;; - --start-khanat-with-watch-state) - METHODSTARTSERVER="--show-status" - shift - ;; - --start-khanat-with-watch-state-nagios) - METHODSTARTSERVER="--show-status-nagios" - shift - ;; - --start-khanat-with-bash-after) - METHODSTARTSERVER="--bash-after-start" - shift - ;; - --start-with-manager) - METHODSTARTSERVER="--start-with-manager" - shift - ;; - --client-version*) - KHANAT_CLIENT_VERSION="${1#*=}" - shift - ;; - --khanat-ressources-dir=*) - KHANAT_RESSOURCES_DIR="${1#*=}" - shift - ;; - --khanat-client-data-dir=*) - KHANAT_CLIENT_DATA_DIR="${1#*=}" - shift - ;; - --opennel-code-dir=*) - OPENNEL_CODE_DIR="${1#*=}" - shift - ;; - -w|--clean-images-none) - CLEANIMAGENONE=1 - shift - ;; - -u|--update-data) - UPDATEDATA=1 - shift - ;; - --option-docker-build) - DOCKERBUILDOPT="$DOCKERBUILDOPT ${1#*=}" - shift - ;; - *) - msg_error "[$(basename $0):$LINENO] options '$1' not recognize" - usage - exit 1 - ;; - esac -done - -function chrashed() -{ - msg_error "[$(basename $0):$LINENO] BUILD FAILED (code:$?)" - exit 2 -} - -trap chrashed EXIT - -if [[ $SHOWIPKHANATSERVER -eq 0 ]] -then - msg_info "[$(basename $0):$LINENO] START" -fi - -msg_debug "[$(basename $0):$LINENO] prg: $0" - -docker -v 1>/dev/null -if [[ $? -ne 0 ]] -then - msg_error "[$(basename $0):$LINENO] docker not installed" - exit 2 -fi - -case "$(uname -m)" in - x86_64) - ;; - i686) - ;; - *) - msg_error "[$(basename $0):$LINENO] Unknown archi : $(uname -m)" - exit 2 - ;; -esac - -if [[ $REMOVE -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] REMOVE DATA KHANAT : $ROOTDATAKHANAT" - if [[ -n "$ROOTDATAKHANAT" ]] - then - rm -rf ${ROOTDATAKHANAT}/* || exit 2 - fi -fi - -msg_debug "[$(basename $0):$LINENO] Create directory on host ($ROOTDATAKHANAT)" -mkdir -p $ROOTDATAKHANAT || exit 2 -chmod g+s $ROOTDATAKHANAT - - -if [[ ($CONNECTSSHKHANAT -ne 0) || ($SHOWIPKHANATSERVER -ne 0) ]] -then - msg_debug "[$(basename $0):$LINENO] clean container" - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - if [[ ${#listcontainer[@]} -eq 1 ]] - then - ipaddress=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" ${listcontainer[@]}) - fi -fi - -if [[ $SHOWIPKHANATSERVER -ne 0 ]] -then - trap '' EXIT - echo "$ipaddress" - exit 0 -fi - -if [[ $CONNECTSSHKHANAT -ne 0 ]] -then - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no gameserver@$ipaddress - trap '' EXIT - msg_info "[$(basename $0):$LINENO] END SSH" - exit 0 -fi - -if [[ $AUTODETEC -ne 0 ]] -then - msg_debug "[$(basename $0):$LINENO] Autodetect state" - if [[ $(docker images -f "reference=$IMAGEGENERICSERVER" | wc -l) -lt 2 ]] - then - BASICSERVER=1 - fi - if [[ $(docker images -f "reference=$IMAGEKHANATSERVER" | wc -l) -lt 2 ]] - then - KHANATSERVER=1 - fi - if [[ -z "$KHANAT_RESSOURCES_DIR" ]] - then - KHANAT_RESSOURCES_DIR="$(dirname $rootdir)/khanat-ressources" - fi - if [[ -z "$KHANAT_CLIENT_DATA_DIR" ]] - then - KHANAT_CLIENT_DATA_DIR="$(dirname $rootdir)/khanat-client-data" - fi - if [[ -z "$OPENNEL_CODE_DIR" ]] - then - OPENNEL_CODE_DIR="$(dirname $rootdir)/khanat-opennel-code" - fi - if [[ ! (-f $rootdir/$STEP_CONFIGURE_OK) ]] - then - CONFIGUREKHANATSERVER=1 - fi -fi - -DIRBUILD="${rootdir}/${LOCALBUILDDIR}" - -msg_debug "[$(basename $0):$LINENO] calldir: $calldir" -msg_debug "[$(basename $0):$LINENO] basedir: $basedir" -msg_debug "[$(basename $0):$LINENO] rootdir: $rootdir" -msg_debug "[$(basename $0):$LINENO] ressourcedir: $ressourcedir" -msg_debug "[$(basename $0):$LINENO] generate basic image: $BASICSERVER" -msg_debug "[$(basename $0):$LINENO] localization khanat-ressources : ${KHANAT_RESSOURCES_DIR}" -msg_debug "[$(basename $0):$LINENO] localization khanat-client-data: ${KHANAT_CLIENT_DATA_DIR}" -msg_debug "[$(basename $0):$LINENO] localization opennel-code-client : ${OPENNEL_CODE_DIR}" -msg_debug "[$(basename $0):$LINENO] generate khanat image: $KHANATSERVER" -msg_debug "[$(basename $0):$LINENO] launch khanat: $LAUNCHKHANAT" -msg_debug "[$(basename $0):$LINENO] stop khanat: $STOPKHANAT" - -msg_info "[$(basename $0):$LINENO] check khanat-ressources" -if [[ ! -d ${KHANAT_RESSOURCES_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory khanat-ressources [${KHANAT_RESSOURCES_DIR}]" - cat << EOF -You need clone repo khanat-ressource. - -cd $(dirname ${KHANAT_RESSOURCES_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-ressources.git - -EOF - exit 2 -fi - - -msg_info "[$(basename $0):$LINENO] check khanat-client-data" -if [[ ! -d ${KHANAT_CLIENT_DATA_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory khanat-client-data [${KHANAT_CLIENT_DATA_DIR}]" - cat << EOF -You need clone repo khanat-client-data. - -cd $(dirname ${KHANAT_CLIENT_DATA_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-client-data.git - -EOF - exit 2 -fi - -if [[ ! -d ${OPENNEL_CODE_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory opennel-code [${OPENNEL_CODE_DIR}]" - cat << EOF -You need clone repo khanat-opennel-code. - -cd $(dirname ${KHANAT_RESSOURCES_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git - -EOF - exit 2 -fi -if [[ $STOPKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] STOP SERVER KHANAT" - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT UP : ${listcontainer[@]}" - if [[ -n "$listcontainer" ]] - then - docker stop "$listcontainer" || exit 2 - fi -fi - -if [[ $CLEANCONTAINERKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN CONTAINER KHANAT" - listcontainer=( $(docker ps -qf 'status=exited' -f 'ancestor='"${IMAGEKHANATSERVER}"'') ) - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT EXITED : ${listcontainer[@]}" - if [[ -n "${listcontainer[@]}" ]] - then - docker rm --force "${listcontainer[@]}" || exit 2 - fi -fi - -if [[ $CLEANIMAGENONE -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN IMAGE DOCKER 'NONE'" - listimages=( $(docker images --filter "dangling=true" --format "{{.ID}}") ) - - msg_debug "[$(basename $0):$LINENO] IMAGES NONE : ${listimages[@]}" - if [[ -n "${listimages[@]}" ]] - then - docker rmi --force "${listimages[@]}" || exit 2 - fi -fi - -if [[ $BASICSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE BASIC SERVER" - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEGENERICSERVER} \ - --file "${basedir}/Dockerfile" || exit 2 -fi - -if [[ $KHANATSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE KHANAT SERVER" - cat << EOF > $rootdir/${ENVIFILE} -#!/bin/bash -# Temporary file, use only to send some information on build docker -export KHANAT_CLIENT_VERSION=$KHANAT_CLIENT_VERSION -export UIDGAMESERVER=$(id -u) -export GIDGAMESERVER=$(id -g) -export DIRCLIENT="$DIRCLIENT" -export PACKAGECLIENT="$PACKAGECLIENT" -EOF - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEKHANATSERVER} \ - --file "${basedir}/Dockerfile.khanat.container" || exit 2 -fi - -if [[ $CONFIGUREKHANATSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CONFIGURE KHANAT SERVER" - mkdir -p $DIRLOG || exit 2 - mkdir -p $DIRDATABASE || exit 2 - msg_debug "[$(basename $0):$LINENO] command : cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_configure_auto.sh" - cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_configure_auto.sh || exit 2 -fi - -if [[ $UPDATEDATA -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] UPDATE KHANAT SERVER" - msg_debug "[$(basename $0):$LINENO] command: cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_update_auto.sh" - cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_update_auto.sh -fi - -if [[ $LAUNCHKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] START KHANAT SERVER" - cd $rootdir; docker run -it --hostname=khanat \ - -u "$(id -u $USERNAME):$(id -g $USERNAME)" \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_launch_auto.sh $METHODSTARTSERVER -d -fi - -trap '' EXIT -msg_info "[$(basename $0):$LINENO] END" diff --git a/server/debian/jessie/i686/server-image.sh b/server/debian/jessie/i686/server-image.sh deleted file mode 100755 index 7367511..0000000 --- a/server/debian/jessie/i686/server-image.sh +++ /dev/null @@ -1,443 +0,0 @@ -#!/bin/bash -# -# Script to start khanat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - - -declare -i IMAGE=1 -declare -i BASICSERVER=0 -declare -i KHANATSERVER=0 -declare -i KHANATRESSOURCES=0 -declare -i KHANATDATACLIENT=0 -declare -i RYZOMRESSOURCES=0 -declare -i LAUNCHKHANAT=1 -declare -i DEBUG=0 -declare -i AUTODETEC=1 -declare -i STOPKHANAT=0 -declare -i CLEANCONTAINERKHANAT=0 -declare -i CONNECTSSHKHANAT=0 -declare -i KHANAT_CLIENT_VERSION=1 -declare -i SHOWIPKHANATSERVER=0 -declare -i METHODSTARTSERVER=1 -declare -i CLEANIMAGENONE=0 -declare DOCKERBUILDOPT="" -declare OPENNEL_CODE_DIR="" - -declare IMAGEGENERICSERVER="opennel/server_generic_debian_jessie_i686" -declare IMAGEKHANATSERVER="opennel/serverimage_debian_jessie_i686" -declare LOCALBUILDDIR="build/opennel/builder_debian_jessie_i686" -declare DIRCLIENT="Khanat_Linux32" -declare PACKAGECLIENT="smokey_linux32" -declare DIROUTPUT="output/extra" - -usage() -{ -cat << EOF -usage:$0 [options] - script to build under docker - - Step: - 1) generate tar with khanat-ressources - 2) generate tar with ryzom-ressources - 3) create image basic server - 4) create image khanat server - 5) launch khanat server - -options: - -h, --help : Show this help - -d, --debug : Show debug message - -b, --force-basic : Force create/recreate image basic server - -t, --force-tar-ressources : Generate TAR.GZ for khanat-ressources (look directory ../khanat-ressources) - -q, --force-tar-client-data : Generate TAR.GZ for khanat-client-data (look directory ../khanat-client-data) - -z, --force-tar-ryzom-ressources : Generate TAR.GZ in data khanat-code - -k, --force-khanat : Force create/recreate image khanat server - -n, --no-launch-khanat : Doesn't launch khanat server - -s, --stop-server : Stop server khanat - -c, --clean-container-khanat : Remove old server khanat (stopped) - -w, --clean-images-none : Remove images docker (with name 'none') - -i, --show-ip-khanat-server : show ip address for khanat server (launch under docker) - --option-docker-build=[STRING] : you can add option in "docker build" - --opennel-code-dir=[DIR] : localization opennel-code - --start-khanat-with-screen : [default] start khanat with screen - --start-khanat-with-full-log : start server khanat and show full log - --start-khanat-with-watch-state : start server khanat and show state (loop) - --ssh : connect on khanat server (with ssh) [Exclusive action, can't execute other action] - --client-version=[INTEGER] : version client khanat (we need to communicate with our server) - -Example : - cd [root Khanat directory] - ./server.sh - ./server.sh -k - ./server.sh --ssh -EOF -} - -function msg_debug() -{ - if [[ $DEBUG -ne 0 ]] - then - echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" - fi -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" -} - -function msg_error() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 -} - -# -# MAIN -# - -#msg_info "START" - -calldir="$(dirname $0)" -basedir=$(cd $calldir; pwd) -rootdir="$(dirname $(dirname $(dirname $(dirname ${basedir}))))" -ressourcedir="$(dirname ${rootdir})/khanat-ressources" -dataclientdir="$(dirname ${rootdir})/khanat-client-data" - -while test $# -gt 0 -do - case "$1" in - -h|--help) - usage - exit 1 - ;; - -d|--debug) - DEBUG=1 - shift - ;; - --ssh) - CONNECTSSHKHANAT=1 - shift - ;; - -c|--clean-container-khanat) - CLEANCONTAINERKHANAT=1 - shift - ;; - -s|--stop-server) - STOPKHANAT=1 - shift - ;; - -b|--force-basic) - BASICSERVER=1 - shift - ;; - -n|--no-launch-khanat) - LAUNCHKHANAT=0 - shift - ;; - -t|--force-tar-ressources) - KHANATRESSOURCES=1 - shift - ;; - -q|--force-tar-client-data) - KHANATDATACLIENT=1 - shift - ;; - -z|--force-tar-ryzom-ressources) - RYZOMRESSOURCES=1 - shift - ;; - -k|--force-khanat) - KHANATSERVER=1 - shift - ;; - -i|--show-ip-khanat-server) - SHOWIPKHANATSERVER=1 - shift - ;; - --start-khanat-with-screen) - METHODSTARTSERVER=1 - shift - ;; - --start-khanat-with-full-log) - METHODSTARTSERVER=2 - shift - ;; - --start-khanat-with-watch-state) - METHODSTARTSERVER=3 - shift - ;; - --client-version*) - KHANAT_CLIENT_VERSION="${1#*=}" - shift - ;; - -w|--clean-images-none) - CLEANIMAGENONE=1 - shift - ;; - --option-docker-build) - DOCKERBUILDOPT="$DOCKERBUILDOPT ${1#*=}" - shift - ;; - --opennel-code-dir=*) - OPENNEL_CODE_DIR="${1#*=}" - shift - ;; - *) - msg_error "[$(basename $0):$LINENO] options '$1' not recognize" - usage - exit 1 - ;; - esac -done - -function chrashed() -{ - msg_error "[$(basename $0):$LINENO] BUILD FAILED (code:$?)" - exit 2 -} - -trap chrashed EXIT - -if [[ $SHOWIPKHANATSERVER -eq 0 ]] -then - msg_info "[$(basename $0):$LINENO] START" -fi - -msg_debug "[$(basename $0):$LINENO] prg: $0" - -extradir="${rootdir}/${DIROUTPUT}" -mkdir -p ${extradir} || exit 2 - - -docker -v 1>/dev/null -if [[ $? -ne 0 ]] -then - msg_error "[$(basename $0):$LINENO] docker not installed" - exit 2 -fi - -case "$(uname -m)" in - x86_64) - ;; - i686) - ;; - *) - msg_error "[$(basename $0):$LINENO] Unknown archi : $(uname -m)" - exit 2 - ;; -esac - -if [[ ($CONNECTSSHKHANAT -ne 0) || ($SHOWIPKHANATSERVER -ne 0) ]] -then - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - if [[ ${#listcontainer[@]} -eq 1 ]] - then - ipaddress=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" ${listcontainer[@]}) - fi -fi - -if [[ $SHOWIPKHANATSERVER -ne 0 ]] -then - trap '' EXIT - echo "$ipaddress" - exit 0 -fi - -if [[ $CONNECTSSHKHANAT -ne 0 ]] -then - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no gameserver@$ipaddress - trap '' EXIT - msg_info "[$(basename $0):$LINENO] END SSH" - exit 0 -fi - -if [[ $AUTODETEC -ne 0 ]] -then - if [[ $(docker images -f "reference=$IMAGEGENERICSERVER" | wc -l) -lt 2 ]] - then - BASICSERVER=1 - fi - if [[ ! -f ${extradir}/khanat-ressources.tar.gz ]] - then - KHANATRESSOURCES=1 - fi - if [[ ! -f ${extradir}/khanat-client-data.tar.gz ]] - then - KHANATDATACLIENT=1 - fi - if [[ ! -f ${extradir}/ryzom-ressources.tar.gz ]] - then - RYZOMRESSOURCES=1 - fi - if [[ $(docker images -f "reference=$IMAGEKHANATSERVER" | wc -l) -lt 2 ]] - then - KHANATSERVER=1 - fi - if [[ -z "$OPENNEL_CODE_DIR" ]] - then - OPENNEL_CODE_DIR="$(dirname $rootdir)/khanat-opennel-code" - fi - - if [[ -f ${extradir}/ryzomcore.tar.gz ]] - then - sumsrc=$(md5sum ${rootdir}/${LOCALBUILDDIR}/ryzomcore-0.12.0..tar.gz | awk '{print $1}') - sumdst=$(md5sum ${extradir}/ryzomcore.tar.gz | awk '{print $1}') - else - sumsrc=1 - sumdsr=2 - fi - msg_debug "[$(basename $0):$LINENO] ryzomcore checksum src:$sumsrc dst:$sumdst" - if [[ "$sumsrc" != "$sumdst" ]] - then - msg_debug "[$(basename $0):$LINENO] copy ryzomcore" - cp ${rootdir}/${LOCALBUILDDIR}/ryzomcore-0.12.0..tar.gz ${extradir}/ryzomcore.tar.gz || exit 2 - KHANATSERVER=1 - fi -fi - -DIRBUILD="${rootdir}/${LOCALBUILDDIR}" - -msg_debug "[$(basename $0):$LINENO] calldir: $calldir" -msg_debug "[$(basename $0):$LINENO] basedir: $basedir" -msg_debug "[$(basename $0):$LINENO] rootdir: $rootdir" -msg_debug "[$(basename $0):$LINENO] ressourcedir: $ressourcedir" -msg_debug "[$(basename $0):$LINENO] generate basic image: $BASICSERVER" -msg_debug "[$(basename $0):$LINENO] generate tar khanat ressources: $KHANATRESSOURCES" -msg_debug "[$(basename $0):$LINENO] generate tar khanat data client: $KHANATDATACLIENT" -msg_debug "[$(basename $0):$LINENO] generate tar ryzom ressources: $RYZOMRESSOURCES" -msg_debug "[$(basename $0):$LINENO] generate khanat image: $KHANATSERVER" -msg_debug "[$(basename $0):$LINENO] launch khanat: $LAUNCHKHANAT" -msg_debug "[$(basename $0):$LINENO] stop khanat: $STOPKHANAT" - -if [[ ! -d ${OPENNEL_CODE_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory opennel-code [${OPENNEL_CODE_DIR}]" - cat << EOF -You need clone repo khanat-opennel-code. - -cd $(dirname ${KHANAT_RESSOURCES_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git - -EOF - exit 2 -fi - -if [[ $KHANATRESSOURCES -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CREATE TAR with KHANAT Ressources" - if [[ ! -d ${ressourcedir} ]] - then - msg_error "[$(basename $0):$LINENO] Missing khanat-ressources directory ($ressourcedir)" - exit 2 - fi - (cd $ressourcedir; tar --exclude='.git' -czf ${extradir}/khanat-ressources.tar.gz .) || exit 2 -fi - -if [[ $KHANATDATACLIENT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CREATE TAR with KHANAT DATA CLIENT" - if [[ ! -d ${dataclientdir} ]] - then - msg_error "[$(basename $0):$LINENO] Missing khanat-client-data directory ($dataclientdir)" - exit 2 - fi - (cd $dataclientdir; tar --exclude='.git' -czf ${extradir}/khanat-client-data.tar.gz .) || exit 2 -fi - -if [[ $RYZOMRESSOURCES -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CREATE TAR with RYZOM Ressources" - if [[ ! -d ${ressourcedir} ]] - then - msg_error "[$(basename $0):$LINENO] Missing khanat-ressources directory ($ressourcedir)" - exit 2 - fi - cd ${OPENNEL_CODE_DIR}; tar czf ${extradir}/ryzom-ressources.tar.gz \ - code/ryzom/server/shard.screen.rc \ - code/ryzom/common/* \ - code/ryzom/client/* \ - code/ryzom/server/* \ - code/ryzom/tools/scripts/linux/* \ - code/web/* || exit 2 -fi - -if [[ $STOPKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] STOP SERVER KHANAT" - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT UP : ${listcontainer[@]}" - if [[ -n "$listcontainer" ]] - then - docker stop "$listcontainer" || exit 2 - fi -fi - -if [[ $CLEANCONTAINERKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN CONTAINER KHANAT" - listcontainer=( $(docker ps -qf 'status=exited' -f 'ancestor='"${IMAGEKHANATSERVER}"'') ) - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT EXITED : ${listcontainer[@]}" - if [[ -n "${listcontainer[@]}" ]] - then - docker rm --force "${listcontainer[@]}" || exit 2 - fi -fi - -if [[ $CLEANIMAGENONE -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN IMAGE DOCKER 'NONE'" - listimages=( $(docker images --filter "dangling=true" --format "{{.ID}}") ) - - msg_debug "[$(basename $0):$LINENO] IMAGES NONE : ${listimages[@]}" - if [[ -n "${listimages[@]}" ]] - then - docker rmi --force "${listimages[@]}" || exit 2 - fi -fi - -if [[ $BASICSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE BASIC SERVER" - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEGENERICSERVER} \ - --file "${basedir}/Dockerfile" || exit 2 -fi - -if [[ $KHANATSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE KHANAT SERVER" - cat << EOF > $rootdir/todelete.sh -#!/bin/bash -# Temporary file, use only to send some information on build docker -export KHANAT_CLIENT_VERSION=$KHANAT_CLIENT_VERSION -export DIRCLIENT="$DIRCLIENT" -export PACKAGECLIENT="$PACKAGECLIENT" -EOF - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEKHANATSERVER} \ - --file "${basedir}/Dockerfile.khanat.image" || exit 2 - rm $rootdir/todelete.sh -fi - -if [[ $LAUNCHKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] START KHANAT SERVER" - cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - ${IMAGEKHANATSERVER} /opt/serverimage_autostart.sh $METHODSTARTSERVER - clear -fi - -trap '' EXIT -msg_info "[$(basename $0):$LINENO] END" diff --git a/server/debian/jessie/x86_64/Dockerfile b/server/debian/jessie/x86_64/Dockerfile deleted file mode 100644 index 030055e..0000000 --- a/server/debian/jessie/x86_64/Dockerfile +++ /dev/null @@ -1,34 +0,0 @@ -# Dockerfile - Build image to prepare khanat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -FROM amd64/debian:8 -MAINTAINER AleaJactaEst - -ENV HOSTNAME basic_server - -RUN apt-get update ; \ - apt-get dist-upgrade -y ; \ - apt-get install -y curl nano vim less bash-completion cron logrotate bsd-mailx ; \ - apt-get install -y openssh-server sudo net-tools ; \ - apt-get install -y lzma xdelta p7zip p7zip-full ; \ - DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server ; \ - apt-get install -y apache2 php5 libapache2-mod-php5 php5-mysql apache2-utils php5-gd php5-imagick rrdtool screen mcrypt php5-mcrypt python3 ; \ - DEBIAN_FRONTEND=noninteractive apt-get install -y phpmyadmin - - - diff --git a/server/debian/jessie/x86_64/Dockerfile.khanat.container b/server/debian/jessie/x86_64/Dockerfile.khanat.container deleted file mode 100644 index 825f087..0000000 --- a/server/debian/jessie/x86_64/Dockerfile.khanat.container +++ /dev/null @@ -1,33 +0,0 @@ -# Dockerfile - Build for server debian -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -FROM opennel/server_generic_debian_jessie_x86_64 -MAINTAINER AleaJactaEst - -ENV HOSTNAME khanat_server - -COPY server/debian/common/servercontainer_function.sh /opt/ -COPY server/debian/common/servercontainer_init_* /opt/ - -COPY output/opennel_debian_jessie_x86_64/khanat_config.sh /opt/khanat_config.sh - -RUN /opt/servercontainer_init_create_account.sh -RUN /opt/servercontainer_init_mysql.sh -RUN /opt/servercontainer_init_apache.sh -RUN /opt/servercontainer_init_configure_envi.sh - diff --git a/server/debian/jessie/x86_64/Dockerfile.khanat.image b/server/debian/jessie/x86_64/Dockerfile.khanat.image deleted file mode 100644 index 57b4ff0..0000000 --- a/server/debian/jessie/x86_64/Dockerfile.khanat.image +++ /dev/null @@ -1,33 +0,0 @@ -# Dockerfile - Build for server debian -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# - -FROM opennel/server_generic_debian_jessie_x86_64 -MAINTAINER AleaJactaEst - -ENV HOSTNAME khanat_server - -COPY todelete.sh /opt/khanat_config.sh -COPY server/debian/common/ /opt/ - -COPY output/extra/ryzomcore.tar.gz /opt/ -COPY output/extra/ryzom-ressources.tar.gz /opt/ -COPY output/extra/khanat-ressources.tar.gz /opt/ -COPY output/extra/khanat-client-data.tar.gz /opt/ - -RUN /opt/serverimage_init_khanat.sh - diff --git a/server/debian/jessie/x86_64/server-container.sh b/server/debian/jessie/x86_64/server-container.sh deleted file mode 100755 index 49c5ea2..0000000 --- a/server/debian/jessie/x86_64/server-container.sh +++ /dev/null @@ -1,537 +0,0 @@ -#!/bin/bash -# -# Script to start khanat server (with docker) -# All data are include on host -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - - -declare -i REMOVE=0 -declare -i IMAGE=1 -declare -i BASICSERVER=0 -declare -i KHANATSERVER=0 -declare -i CONFIGUREKHANATSERVER=0 -declare -i LAUNCHKHANAT=1 -declare -i UPDATEDATA=0 -declare -i DEBUG=0 -declare -i AUTODETEC=1 -declare -i STOPKHANAT=0 -declare -i CLEANCONTAINERKHANAT=0 -declare -i CONNECTSSHKHANAT=0 -declare -i KHANAT_CLIENT_VERSION=1 -declare -i SHOWIPKHANATSERVER=0 -declare METHODSTARTSERVER="--start-khanat-with-screen" -declare -i CLEANIMAGENONE=0 -declare DOCKERBUILDOPT="" - -declare IMAGEGENERICSERVER="opennel/server_generic_debian_jessie_x86_64" -declare IMAGEKHANATSERVER="opennel/servercontainer_debian_jessie_x86_64" -declare LOCALBUILDDIR="build/opennel/builder_debian_jessie_x86_64" -declare DIROUTPUT="output/opennel_debian_jessie_x86_64" -declare ROOTDATAKHANAT="$DIROUTPUT/gameserver" -declare DIRLOG="$ROOTDATAKHANAT/log" -declare DIRDATABASE="$ROOTDATAKHANAT/database" -declare ENVIFILE="$DIROUTPUT/khanat_config.sh" -declare DIRKHANAT="$ROOTDATAKHANAT/khanat" -declare KHANAT_RESSOURCES_DIR="" -declare KHANAT_CLIENT_DATA_DIR="" -declare OPENNEL_CODE_DIR="" -declare STEP_CONFIGURE_OK="$ROOTDATAKHANAT/khanat/step_configure.ok" -declare DIRCLIENT="Khanat_Linux64" -declare PACKAGECLIENT="smokey_linux64" - -usage() -{ -cat << EOF -usage:$0 [options] - script to build under docker - - Step: - 1) create image basic server - 2) create image khanat server - 3) configure khagant server - 4) launch khagant server - -options: - -h, --help : Show this help - -d, --debug : Show debug message - -r, --remove : Remove directory data khanat - -b, --force-basic : Force create/recreate image basic server - -k, --force-khanat : Force create/recreate image khanat server - -u, --update-data : generate a new patch (client & update server) - -g, --configure-khanat : Force configure khanat server - -n, --no-launch-khanat : Doesn't launch khanat server - -s, --stop-server : Stop server khanat - -c, --clean-container-khanat : Remove old server khanat (stopped) - -w, --clean-images-none : Remove images docker (with name 'none') - -i, --show-ip-khanat-server : show ip address for khanat server (launch under docker) - --option-docker-build=[STRING] : you can add option in "docker build" - --khanat-ressources-dir=[DIR] : localization khanat-ressources - --khanat-client-data-dir=[DIR] : localization khanat-client-data - --opennel-code-dir=[DIR] : localization opennel-code - --start-khanat-with-screen : start with screen - --start-khanat-with-khanat-log : start server khanat and show khanat log - --start-khanat-with-full-log : start server khanat and show full log - --start-khanat-with-watch-state : start server khanat and show state (loop) - --start-khanat-with-watch-state-nagios : start server khanat and show state [nagios format] (loop) - --start-khanat-with-bash-after : start server khanat and launch bash - --start-with-manager : start khanat with manager - --ssh : connect on khanat server (with ssh) [Exclusive action, can't execute other action] - --client-version=[INTEGER] : version client khanat (we need to communicate with our server) - -Example : - cd [root Khanat directory] - ./server.sh - ./server.sh -k - ./server.sh --ssh -EOF -} - -function msg_debug() -{ - if [[ $DEBUG -ne 0 ]] - then - echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" - fi -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" -} - -function msg_error() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 -} - -# -# MAIN -# - -#msg_info "START" - -calldir="$(dirname $0)" -basedir=$(cd $calldir; pwd) -rootdir="$(dirname $(dirname $(dirname $(dirname ${basedir}))))" -ressourcedir="$(dirname ${rootdir})/khanat-ressources" -dataclientdir="$(dirname ${rootdir})/khanat-client-data" - -while test $# -gt 0 -do - case "$1" in - -h|--help) - usage - exit 1 - ;; - -d|--debug) - DEBUG=1 - shift - ;; - --ssh) - CONNECTSSHKHANAT=1 - shift - ;; - -r|--remove) - REMOVE=1 - CONFIGUREKHANATSERVER=1 - shift - ;; - -c|--clean-container-khanat) - CLEANCONTAINERKHANAT=1 - shift - ;; - -s|--stop-server) - STOPKHANAT=1 - shift - ;; - -b|--force-basic) - BASICSERVER=1 - shift - ;; - -n|--no-launch-khanat) - LAUNCHKHANAT=0 - shift - ;; - -k|--force-khanat) - KHANATSERVER=1 - shift - ;; - -g|--configure-khanat) - CONFIGUREKHANATSERVER=1 - shift - ;; - -i|--show-ip-khanat-server) - SHOWIPKHANATSERVER=1 - shift - ;; - --start-khanat-with-screen) - METHODSTARTSERVER="--start-khanat-with-screen" - shift - ;; - --start-khanat-with-khanat-log) - METHODSTARTSERVER="--show-khanat-log" - shift - ;; - --start-khanat-with-full-log) - METHODSTARTSERVER="--show-all-log" - shift - ;; - --start-khanat-with-watch-state) - METHODSTARTSERVER="--show-status" - shift - ;; - --start-khanat-with-watch-state-nagios) - METHODSTARTSERVER="--show-status-nagios" - shift - ;; - --start-khanat-with-bash-after) - METHODSTARTSERVER="--bash-after-start" - shift - ;; - --start-with-manager) - METHODSTARTSERVER="--start-with-manager" - shift - ;; - --client-version*) - KHANAT_CLIENT_VERSION="${1#*=}" - shift - ;; - --khanat-ressources-dir=*) - KHANAT_RESSOURCES_DIR="${1#*=}" - shift - ;; - --khanat-client-data-dir=*) - KHANAT_CLIENT_DATA_DIR="${1#*=}" - shift - ;; - --opennel-code-dir=*) - OPENNEL_CODE_DIR="${1#*=}" - shift - ;; - -w|--clean-images-none) - CLEANIMAGENONE=1 - shift - ;; - -u|--update-data) - UPDATEDATA=1 - shift - ;; - --option-docker-build) - DOCKERBUILDOPT="$DOCKERBUILDOPT ${1#*=}" - shift - ;; - *) - msg_error "[$(basename $0):$LINENO] options '$1' not recognize" - usage - exit 1 - ;; - esac -done - -function chrashed() -{ - msg_error "[$(basename $0):$LINENO] BUILD FAILED (code:$?)" - exit 2 -} - -trap chrashed EXIT - -if [[ $SHOWIPKHANATSERVER -eq 0 ]] -then - msg_info "[$(basename $0):$LINENO] START" -fi - -msg_debug "[$(basename $0):$LINENO] prg: $0" - -docker -v 1>/dev/null -if [[ $? -ne 0 ]] -then - msg_error "[$(basename $0):$LINENO] docker not installed" - exit 2 -fi - -case "$(uname -m)" in - x86_64) - ;; - i686) - ;; - *) - msg_error "[$(basename $0):$LINENO] Unknown archi : $(uname -m)" - exit 2 - ;; -esac - -if [[ $REMOVE -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] REMOVE DATA KHANAT : $ROOTDATAKHANAT" - if [[ -n "$ROOTDATAKHANAT" ]] - then - rm -rf ${ROOTDATAKHANAT}/* || exit 2 - fi -fi - -msg_debug "[$(basename $0):$LINENO] Create directory on host ($ROOTDATAKHANAT)" -mkdir -p $ROOTDATAKHANAT || exit 2 -chmod g+s $ROOTDATAKHANAT - - -if [[ ($CONNECTSSHKHANAT -ne 0) || ($SHOWIPKHANATSERVER -ne 0) ]] -then - msg_debug "[$(basename $0):$LINENO] clean container" - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - if [[ ${#listcontainer[@]} -eq 1 ]] - then - ipaddress=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" ${listcontainer[@]}) - fi -fi - -if [[ $SHOWIPKHANATSERVER -ne 0 ]] -then - trap '' EXIT - echo "$ipaddress" - exit 0 -fi - -if [[ $CONNECTSSHKHANAT -ne 0 ]] -then - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no gameserver@$ipaddress - trap '' EXIT - msg_info "[$(basename $0):$LINENO] END SSH" - exit 0 -fi - -if [[ $AUTODETEC -ne 0 ]] -then - msg_debug "[$(basename $0):$LINENO] Autodetect state" - if [[ $(docker images -f "reference=$IMAGEGENERICSERVER" | wc -l) -lt 2 ]] - then - BASICSERVER=1 - fi - if [[ $(docker images -f "reference=$IMAGEKHANATSERVER" | wc -l) -lt 2 ]] - then - KHANATSERVER=1 - fi - if [[ -z "$KHANAT_RESSOURCES_DIR" ]] - then - KHANAT_RESSOURCES_DIR="$(dirname $rootdir)/khanat-ressources" - fi - if [[ -z "$KHANAT_CLIENT_DATA_DIR" ]] - then - KHANAT_CLIENT_DATA_DIR="$(dirname $rootdir)/khanat-client-data" - fi - if [[ -z "$OPENNEL_CODE_DIR" ]] - then - OPENNEL_CODE_DIR="$(dirname $rootdir)/khanat-opennel-code" - fi - if [[ ! (-f $rootdir/$STEP_CONFIGURE_OK) ]] - then - CONFIGUREKHANATSERVER=1 - fi -fi - -DIRBUILD="${rootdir}/${LOCALBUILDDIR}" - -msg_debug "[$(basename $0):$LINENO] calldir: $calldir" -msg_debug "[$(basename $0):$LINENO] basedir: $basedir" -msg_debug "[$(basename $0):$LINENO] rootdir: $rootdir" -msg_debug "[$(basename $0):$LINENO] ressourcedir: $ressourcedir" -msg_debug "[$(basename $0):$LINENO] generate basic image: $BASICSERVER" -msg_debug "[$(basename $0):$LINENO] localization khanat-ressources : ${KHANAT_RESSOURCES_DIR}" -msg_debug "[$(basename $0):$LINENO] localization khanat-client-data: ${KHANAT_CLIENT_DATA_DIR}" -msg_debug "[$(basename $0):$LINENO] localization opennel-code-client : ${OPENNEL_CODE_DIR}" -msg_debug "[$(basename $0):$LINENO] generate khanat image: $KHANATSERVER" -msg_debug "[$(basename $0):$LINENO] launch khanat: $LAUNCHKHANAT" -msg_debug "stop khanat: $STOPKHANAT" - -msg_info "[$(basename $0):$LINENO] check khanat-ressources" -if [[ ! -d ${KHANAT_RESSOURCES_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory khanat-ressources [${KHANAT_RESSOURCES_DIR}]" - cat << EOF -You need clone repo khanat-ressource. - -cd $(dirname ${KHANAT_RESSOURCES_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-ressources.git - -EOF - exit 2 -fi - - -msg_info "[$(basename $0):$LINENO] check khanat-client-data" -if [[ ! -d ${KHANAT_CLIENT_DATA_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory khanat-client-data [${KHANAT_CLIENT_DATA_DIR}]" - cat << EOF -You need clone repo khanat-client-data. - -cd $(dirname ${KHANAT_CLIENT_DATA_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-client-data.git - -EOF - exit 2 -fi - -if [[ ! -d ${OPENNEL_CODE_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory opennel-code [${OPENNEL_CODE_DIR}]" - cat << EOF -You need clone repo khanat-opennel-code. - -cd $(dirname ${KHANAT_RESSOURCES_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git - -EOF - exit 2 -fi -if [[ $STOPKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] STOP SERVER KHANAT" - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT UP : ${listcontainer[@]}" - if [[ -n "$listcontainer" ]] - then - docker stop "$listcontainer" || exit 2 - fi -fi - -if [[ $CLEANCONTAINERKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN CONTAINER KHANAT" - listcontainer=( $(docker ps -qf 'status=exited' -f 'ancestor='"${IMAGEKHANATSERVER}"'') ) - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT EXITED : ${listcontainer[@]}" - if [[ -n "${listcontainer[@]}" ]] - then - docker rm --force "${listcontainer[@]}" || exit 2 - fi -fi - -if [[ $CLEANIMAGENONE -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN IMAGE DOCKER 'NONE'" - listimages=( $(docker images --filter "dangling=true" --format "{{.ID}}") ) - - msg_debug "[$(basename $0):$LINENO] IMAGES NONE : ${listimages[@]}" - if [[ -n "${listimages[@]}" ]] - then - docker rmi --force "${listimages[@]}" || exit 2 - fi -fi - -if [[ $BASICSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE BASIC SERVER" - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEGENERICSERVER} \ - --file "${basedir}/Dockerfile" || exit 2 -fi - -if [[ $KHANATSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE KHANAT SERVER" - cat << EOF > $rootdir/${ENVIFILE} -#!/bin/bash -# Temporary file, use only to send some information on build docker -export KHANAT_CLIENT_VERSION=$KHANAT_CLIENT_VERSION -export UIDGAMESERVER=$(id -u) -export GIDGAMESERVER=$(id -g) -export DIRCLIENT="$DIRCLIENT" -export PACKAGECLIENT="$PACKAGECLIENT" -EOF - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEKHANATSERVER} \ - --file "${basedir}/Dockerfile.khanat.container" || exit 2 -fi - -if [[ $CONFIGUREKHANATSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CONFIGURE KHANAT SERVER" - mkdir -p $DIRLOG || exit 2 - mkdir -p $DIRDATABASE || exit 2 - msg_debug "[$(basename $0):$LINENO] command : cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_configure_auto.sh" - cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_configure_auto.sh || exit 2 -fi - -if [[ $UPDATEDATA -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] UPDATE KHANAT SERVER" - msg_debug "[$(basename $0):$LINENO] command: cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_update_auto.sh" - cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_update_auto.sh -fi - -if [[ $LAUNCHKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] START KHANAT SERVER" - cd $rootdir; docker run -it --hostname=khanat \ - -u "$(id -u $USERNAME):$(id -g $USERNAME)" \ - -v /etc/localtime:/etc/localtime:ro \ - -v ${rootdir}/${LOCALBUILDDIR}/bin:/usr/local/bin:ro \ - -v ${OPENNEL_CODE_DIR}/code/web/:/home/gameserver/ext/khanatweb:ro \ - -v ${OPENNEL_CODE_DIR}/code/ryzom:/home/gameserver/ext/ryzom-ressources:ro \ - -v ${KHANAT_RESSOURCES_DIR}:/home/gameserver/ext/khanat-ressources:ro \ - -v ${KHANAT_CLIENT_DATA_DIR}:/home/gameserver/ext/khanat-client-data:ro \ - -v ${rootdir}/$DIRLOG:/home/gameserver/log:rw \ - -v ${rootdir}/$DIRDATABASE:/home/gameserver/database:rw \ - -v ${rootdir}/$DIRKHANAT:/home/gameserver/khanat:rw \ - -v ${rootdir}/server/debian/common/:/opt/ext:ro \ - ${IMAGEKHANATSERVER} /opt/ext/servercontainer_launch_auto.sh $METHODSTARTSERVER -d -fi - -trap '' EXIT -msg_info "[$(basename $0):$LINENO] END" diff --git a/server/debian/jessie/x86_64/server-image.sh b/server/debian/jessie/x86_64/server-image.sh deleted file mode 100755 index 0e55eb7..0000000 --- a/server/debian/jessie/x86_64/server-image.sh +++ /dev/null @@ -1,441 +0,0 @@ -#!/bin/bash -# -# Script to start khanat server -# -# Copyright (C) 2017 AleaJactaEst -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -declare -i IMAGE=1 -declare -i BASICSERVER=0 -declare -i KHANATSERVER=0 -declare -i KHANATRESSOURCES=0 -declare -i KHANATDATACLIENT=0 -declare -i RYZOMRESSOURCES=0 -declare -i LAUNCHKHANAT=1 -declare -i DEBUG=0 -declare -i AUTODETEC=1 -declare -i STOPKHANAT=0 -declare -i CLEANCONTAINERKHANAT=0 -declare -i CONNECTSSHKHANAT=0 -declare -i KHANAT_CLIENT_VERSION=1 -declare -i SHOWIPKHANATSERVER=0 -declare -i METHODSTARTSERVER=1 -declare -i CLEANIMAGENONE=0 -declare DOCKERBUILDOPT="" - -declare IMAGEGENERICSERVER="opennel/server_generic_debian_jessie_x86_64" -declare IMAGEKHANATSERVER="opennel/serverimage_debian_jessie_x86_64" -declare LOCALBUILDDIR="build/opennel/builder_debian_jessie_x86_64" -declare DIRCLIENT="Khanat_Linux64" -declare PACKAGECLIENT="smokey_linux64" -declare DIROUTPUT="output/extra" - -usage() -{ -cat << EOF -usage:$0 [options] - script to build under docker - - Step: - 1) generate tar with khanat-ressources - 2) generate tar with ryzom-ressources - 3) create image basic server - 4) create image khanat server - 5) launch khanat server - -options: - -h, --help : Show this help - -d, --debug : Show debug message - -b, --force-basic : Force create/recreate image basic server - -t, --force-tar-ressources : Generate TAR.GZ for khanat-ressources (look directory ../khanat-ressources) - -q, --force-tar-client-data : Generate TAR.GZ for khanat-client-data (look directory ../khanat-client-data) - -z, --force-tar-ryzom-ressources : Generate TAR.GZ in data khanat-code - -k, --force-khanat : Force create/recreate image khanat server - -n, --no-launch-khanat : Doesn't launch khanat server - -s, --stop-server : Stop server khanat - -c, --clean-container-khanat : Remove old server khanat (stopped) - -w, --clean-images-none : Remove images docker (with name 'none') - -i, --show-ip-khanat-server : show ip address for khanat server (launch under docker) - --option-docker-build=[STRING] : you can add option in "docker build" - --opennel-code-dir=[DIR] : localization opennel-code - --start-khanat-with-screen : [default] start khanat with screen - --start-khanat-with-full-log : start server khanat and show full log - --start-khanat-with-watch-state : start server khanat and show state (loop) - --ssh : connect on khanat server (with ssh) [Exclusive action, can't execute other action] - --client-version=[INTEGER] : version client khanat (we need to communicate with our server) - -Example : - cd [root Khanat directory] - ./server.sh - ./server.sh -k - ./server.sh --ssh -EOF -} - -function msg_debug() -{ - if [[ $DEBUG -ne 0 ]] - then - echo "$(date "+%Y/%m/%d %H:%M:%S") DEBUG - $*" - fi -} - -function msg_info() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") INFO - $*" -} - -function msg_error() -{ - echo "$(date "+%Y/%m/%d %H:%M:%S") ERROR - $*" >&2 -} - -# -# MAIN -# - -#msg_info "START" - -calldir="$(dirname $0)" -basedir=$(cd $calldir; pwd) -rootdir="$(dirname $(dirname $(dirname $(dirname ${basedir}))))" -ressourcedir="$(dirname ${rootdir})/khanat-ressources" -dataclientdir="$(dirname ${rootdir})/khanat-client-data" - -while test $# -gt 0 -do - case "$1" in - -h|--help) - usage - exit 1 - ;; - -d|--debug) - DEBUG=1 - shift - ;; - --ssh) - CONNECTSSHKHANAT=1 - shift - ;; - -c|--clean-container-khanat) - CLEANCONTAINERKHANAT=1 - shift - ;; - -s|--stop-server) - STOPKHANAT=1 - shift - ;; - -b|--force-basic) - BASICSERVER=1 - shift - ;; - -n|--no-launch-khanat) - LAUNCHKHANAT=0 - shift - ;; - -t|--force-tar-ressources) - KHANATRESSOURCES=1 - shift - ;; - -q|--force-tar-client-data) - KHANATDATACLIENT=1 - shift - ;; - -z|--force-tar-ryzom-ressources) - RYZOMRESSOURCES=1 - shift - ;; - -k|--force-khanat) - KHANATSERVER=1 - shift - ;; - -i|--show-ip-khanat-server) - SHOWIPKHANATSERVER=1 - shift - ;; - --start-khanat-with-screen) - METHODSTARTSERVER=1 - shift - ;; - --start-khanat-with-full-log) - METHODSTARTSERVER=2 - shift - ;; - --start-khanat-with-watch-state) - METHODSTARTSERVER=3 - shift - ;; - --client-version*) - KHANAT_CLIENT_VERSION="${1#*=}" - shift - ;; - -w|--clean-images-none) - CLEANIMAGENONE=1 - shift - ;; - --option-docker-build) - DOCKERBUILDOPT="$DOCKERBUILDOPT ${1#*=}" - shift - ;; - --opennel-code-dir=*) - OPENNEL_CODE_DIR="${1#*=}" - shift - ;; - *) - msg_error "options '$1' not recognize" - usage - exit 1 - ;; - esac -done - -function chrashed() -{ - msg_error "BUILD FAILED (code:$?)" - exit 2 -} - -trap chrashed EXIT - -if [[ $SHOWIPKHANATSERVER -eq 0 ]] -then - msg_info "[$(basename $0):$LINENO] START" -fi - -msg_debug "[$(basename $0):$LINENO] prg: $0" - -extradir="${rootdir}/${DIROUTPUT}" -mkdir -p ${extradir} || exit 2 - - -docker -v 1>/dev/null -if [[ $? -ne 0 ]] -then - msg_error "[$(basename $0):$LINENO] docker not installed" - exit 2 -fi - -case "$(uname -m)" in - x86_64) - ;; - i686) - ;; - *) - msg_error "[$(basename $0):$LINENO] Unknown archi : $(uname -m)" - exit 2 - ;; -esac - -if [[ ($CONNECTSSHKHANAT -ne 0) || ($SHOWIPKHANATSERVER -ne 0) ]] -then - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - if [[ ${#listcontainer[@]} -eq 1 ]] - then - ipaddress=$(docker inspect --format="{{ .NetworkSettings.IPAddress }}" ${listcontainer[@]}) - fi -fi - -if [[ $SHOWIPKHANATSERVER -ne 0 ]] -then - trap '' EXIT - echo "$ipaddress" - exit 0 -fi - -if [[ $CONNECTSSHKHANAT -ne 0 ]] -then - ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no gameserver@$ipaddress - trap '' EXIT - msg_info "[$(basename $0):$LINENO] END SSH" - exit 0 -fi - -if [[ $AUTODETEC -ne 0 ]] -then - if [[ $(docker images -f "reference=$IMAGEGENERICSERVER" | wc -l) -lt 2 ]] - then - BASICSERVER=1 - fi - if [[ ! -f ${extradir}/khanat-ressources.tar.gz ]] - then - KHANATRESSOURCES=1 - fi - if [[ ! -f ${extradir}/khanat-client-data.tar.gz ]] - then - KHANATDATACLIENT=1 - fi - if [[ ! -f ${extradir}/ryzom-ressources.tar.gz ]] - then - RYZOMRESSOURCES=1 - fi - if [[ $(docker images -f "reference=$IMAGEKHANATSERVER" | wc -l) -lt 2 ]] - then - KHANATSERVER=1 - fi - if [[ -z "$OPENNEL_CODE_DIR" ]] - then - OPENNEL_CODE_DIR="$(dirname $rootdir)/khanat-opennel-code" - fi - - if [[ -f ${extradir}/ryzomcore.tar.gz ]] - then - sumsrc=$(md5sum ${rootdir}/${LOCALBUILDDIR}/ryzomcore-0.12.0..tar.gz | awk '{print $1}') - sumdst=$(md5sum ${extradir}/ryzomcore.tar.gz | awk '{print $1}') - else - sumsrc=1 - sumdsr=2 - fi - msg_debug "[$(basename $0):$LINENO] ryzomcore checksum src:$sumsrc dst:$sumdst" - if [[ "$sumsrc" != "$sumdst" ]] - then - msg_debug "[$(basename $0):$LINENO] copy ryzomcore" - cp ${rootdir}/${LOCALBUILDDIR}/ryzomcore-0.12.0..tar.gz ${extradir}/ryzomcore.tar.gz || exit 2 - KHANATSERVER=1 - fi -fi - -DIRBUILD="${rootdir}/${LOCALBUILDDIR}" - -msg_debug "[$(basename $0):$LINENO] calldir: $calldir" -msg_debug "[$(basename $0):$LINENO] basedir: $basedir" -msg_debug "[$(basename $0):$LINENO] rootdir: $rootdir" -msg_debug "[$(basename $0):$LINENO] ressourcedir: $ressourcedir" -msg_debug "[$(basename $0):$LINENO] generate basic image: $BASICSERVER" -msg_debug "[$(basename $0):$LINENO] generate tar khanat ressources: $KHANATRESSOURCES" -msg_debug "[$(basename $0):$LINENO] generate tar khanat data client: $KHANATDATACLIENT" -msg_debug "[$(basename $0):$LINENO] generate tar ryzom ressources: $RYZOMRESSOURCES" -msg_debug "[$(basename $0):$LINENO] generate khanat image: $KHANATSERVER" -msg_debug "[$(basename $0):$LINENO] launch khanat: $LAUNCHKHANAT" -msg_debug "[$(basename $0):$LINENO] stop khanat: $STOPKHANAT" - -if [[ ! -d ${OPENNEL_CODE_DIR} ]] -then - msg_error "[$(basename $0):$LINENO] Missing directory opennel-code [${OPENNEL_CODE_DIR}]" - cat << EOF -You need clone repo khanat-opennel-code. - -cd $(dirname ${KHANAT_RESSOURCES_DIR}) -git clone https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git - -EOF - exit 2 -fi - -if [[ $KHANATRESSOURCES -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CREATE TAR with KHANAT Ressources" - if [[ ! -d ${ressourcedir} ]] - then - msg_error "[$(basename $0):$LINENO] Missing khanat-ressources directory ($ressourcedir)" - exit 2 - fi - (cd $ressourcedir; tar --exclude='.git' -czf ${extradir}/khanat-ressources.tar.gz .) || exit 2 -fi - -if [[ $KHANATDATACLIENT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CREATE TAR with KHANAT DATA CLIENT" - if [[ ! -d ${dataclientdir} ]] - then - msg_error "[$(basename $0):$LINENO] Missing khanat-client-data directory ($dataclientdir)" - exit 2 - fi - (cd $dataclientdir; tar --exclude='.git' -czf ${extradir}/khanat-client-data.tar.gz .) || exit 2 -fi - -if [[ $RYZOMRESSOURCES -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CREATE TAR with RYZOM Ressources" - if [[ ! -d ${ressourcedir} ]] - then - msg_error "[$(basename $0):$LINENO] Missing khanat-ressources directory ($ressourcedir)" - exit 2 - fi - cd ${OPENNEL_CODE_DIR}; tar czf ${extradir}/ryzom-ressources.tar.gz \ - code/ryzom/server/shard.screen.rc \ - code/ryzom/common/* \ - code/ryzom/client/* \ - code/ryzom/server/* \ - code/ryzom/tools/scripts/linux/* \ - code/web/* || exit 2 -fi - -if [[ $STOPKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] STOP SERVER KHANAT" - listcontainer="$(docker ps -qf 'status=running' -f 'ancestor='"${IMAGEKHANATSERVER}"'')" - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT UP : ${listcontainer[@]}" - if [[ -n "$listcontainer" ]] - then - docker stop "$listcontainer" || exit 2 - fi -fi - -if [[ $CLEANCONTAINERKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN CONTAINER KHANAT" - listcontainer=( $(docker ps -qf 'status=exited' -f 'ancestor='"${IMAGEKHANATSERVER}"'') ) - msg_debug "[$(basename $0):$LINENO] CONTAINER KHANAT EXITED : ${listcontainer[@]}" - if [[ -n "${listcontainer[@]}" ]] - then - docker rm --force "${listcontainer[@]}" || exit 2 - fi -fi - -if [[ $CLEANIMAGENONE -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] CLEAN IMAGE DOCKER 'NONE'" - listimages=( $(docker images --filter "dangling=true" --format "{{.ID}}") ) - - msg_debug "[$(basename $0):$LINENO] IMAGES NONE : ${listimages[@]}" - if [[ -n "${listimages[@]}" ]] - then - docker rmi --force "${listimages[@]}" || exit 2 - fi -fi - -if [[ $BASICSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE BASIC SERVER" - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEGENERICSERVER} \ - --file "${basedir}/Dockerfile" || exit 2 -fi - -if [[ $KHANATSERVER -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] GENERATE DOCKER IMAGE KHANAT SERVER" - cat << EOF > $rootdir/todelete.sh -#!/bin/bash -# Temporary file, use only to send some information on build docker -export KHANAT_CLIENT_VERSION=$KHANAT_CLIENT_VERSION -export DIRCLIENT="$DIRCLIENT" -export PACKAGECLIENT="$PACKAGECLIENT" -EOF - cd $rootdir; docker build . ${DOCKERBUILDOPT} -t ${IMAGEKHANATSERVER} \ - --file "${basedir}/Dockerfile.khanat.image" || exit 2 - rm $rootdir/todelete.sh -fi - -if [[ $LAUNCHKHANAT -ne 0 ]] -then - msg_info "[$(basename $0):$LINENO] START KHANAT SERVER" - cd $rootdir; docker run -it --hostname=khanat \ - -v /etc/localtime:/etc/localtime:ro \ - ${IMAGEKHANATSERVER} /opt/serverimage_autostart.sh $METHODSTARTSERVER - clear -fi - -trap '' EXIT -msg_info "[$(basename $0):$LINENO] END"