diff options
Diffstat (limited to 'coin/provisioning/common/shared/testserver')
18 files changed, 179 insertions, 11 deletions
diff --git a/coin/provisioning/common/shared/testserver/.gitattributes b/coin/provisioning/common/shared/testserver/.gitattributes new file mode 100644 index 00000000..fcadb2cf --- /dev/null +++ b/coin/provisioning/common/shared/testserver/.gitattributes @@ -0,0 +1 @@ +* text eol=lf diff --git a/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile new file mode 100644 index 00000000..dff9fe43 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="apache2 libcgi-session-perl avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 80 443 diff --git a/coin/provisioning/common/shared/testserver/californium/Dockerfile b/coin/provisioning/common/shared/testserver/californium/Dockerfile new file mode 100644 index 00000000..90722510 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/californium/Dockerfile @@ -0,0 +1,15 @@ +FROM ubuntu:18.04 + +RUN apt-get update && apt-get -y install git maven default-jdk avahi-daemon + +RUN mkdir -p /root/src/ + +# Get californium-based CoAP test server +WORKDIR /root/src +RUN git clone https://github.com/selart/californium.git +WORKDIR /root/src/californium +RUN mvn clean install -q -DskipTests + +WORKDIR / + +EXPOSE 5683/udp 5684/udp diff --git a/coin/provisioning/common/shared/testserver/cyrus/Dockerfile b/coin/provisioning/common/shared/testserver/cyrus/Dockerfile new file mode 100644 index 00000000..55486175 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/cyrus/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:16.04 +ARG packages="cyrus-imapd avahi-daemon" +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages && dpkg -l $packages +EXPOSE 143 993 diff --git a/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile new file mode 100644 index 00000000..2e525ec6 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="cyrus-imapd avahi-daemon" +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages && dpkg -l $packages +EXPOSE 143 993 diff --git a/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile new file mode 100644 index 00000000..f48794af --- /dev/null +++ b/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="dante-server avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 1080-1081 diff --git a/coin/provisioning/common/shared/testserver/docker_images.sh b/coin/provisioning/common/shared/testserver/docker_images.sh new file mode 100755 index 00000000..e98183d8 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/docker_images.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +############################################################################# +## +## Copyright (C) 2019 The Qt Company Ltd. +## Contact: http://www.qt.io/licensing/ +## +## This file is part of the provisioning scripts of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL21$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see http://www.qt.io/terms-conditions. For further +## information use the contact form at http://www.qt.io/contact-us. +## +## GNU Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 or version 3 as published by the Free +## Software Foundation and appearing in the file LICENSE.LGPLv21 and +## LICENSE.LGPLv3 included in the packaging of this file. Please review the +## following information to ensure the GNU Lesser General Public License +## requirements will be met: https://www.gnu.org/licenses/lgpl.html and +## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## As a special exception, The Qt Company gives you certain additional +## rights. These rights are described in The Qt Company LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## $QT_END_LICENSE$ +## +############################################################################# + +set -ex + +[ -x "$(command -v realpath)" ] && FILE=$(realpath ${BASH_SOURCE[0]}) || FILE=${BASH_SOURCE[0]} +case $FILE in + */*) SERVER_PATH="${FILE%/*}" ;; + *) SERVER_PATH="." ;; +esac + +# Sort files by their SHA-1, and then return the accumulated result +sha1tree () { + # For example, macOS doesn't install sha1sum by default. In such case, it uses shasum instead. + [ -x "$(command -v sha1sum)" ] || SHASUM=shasum + + find "$@" -type f -print0 | \ + xargs -0 ${SHASUM-sha1sum} | cut -d ' ' -f 1 | \ + sort | ${SHASUM-sha1sum} | cut -d ' ' -f 1 +} + +# Using SHA-1 of each server context as the tag of docker images. A tag labels a +# specific image version. It is used by docker compose file (docker-compose.yml) +# to launch the corresponding docker containers. If one of the server contexts +# (./apache2, ./danted, ...) gets changes, all the related compose files in +# qtbase should be updated as well. + +source "$SERVER_PATH/settings.sh" + +for server in $testserver +do + context="$SERVER_PATH/$server" + docker build -t qt-test-server-$server:$(sha1tree $context) $context +done + +docker images diff --git a/coin/provisioning/common/shared/testserver/docker_machine.sh b/coin/provisioning/common/shared/testserver/docker_machine.sh index 601056a4..8d791074 100755 --- a/coin/provisioning/common/shared/testserver/docker_machine.sh +++ b/coin/provisioning/common/shared/testserver/docker_machine.sh @@ -2,7 +2,7 @@ ############################################################################# ## -## Copyright (C) 2018 The Qt Company Ltd. +## Copyright (C) 2019 The Qt Company Ltd. ## Contact: http://www.qt.io/licensing/ ## ## This file is part of the provisioning scripts of the Qt Toolkit. @@ -40,8 +40,11 @@ TestMachine='qt-test-server' # Deploy docker virtual machine (Boot2Docker) into VirtualBox only if it doesn't exist if [ -z $(docker-machine ls -q --filter "name=$TestMachine") ] then - docker-machine create -d virtualbox $TestMachine + docker-machine create $@ $TestMachine docker-machine ip $TestMachine +else + # Otherwise, start the docker machine and update with new TLS certificates. + docker-machine start $TestMachine && docker-machine regenerate-certs -f $TestMachine fi # Switch the docker engine to $TestMachine diff --git a/coin/provisioning/common/shared/testserver/testserver_util.sh b/coin/provisioning/common/shared/testserver/docker_testserver.sh index c42fb5e0..3a7c87e8 100644..100755 --- a/coin/provisioning/common/shared/testserver/testserver_util.sh +++ b/coin/provisioning/common/shared/testserver/docker_testserver.sh @@ -1,6 +1,8 @@ +#!/usr/bin/env bash + ############################################################################# ## -## Copyright (C) 2018 The Qt Company Ltd. +## Copyright (C) 2019 The Qt Company Ltd. ## Contact: http://www.qt.io/licensing/ ## ## This file is part of the provisioning scripts of the Qt Toolkit. @@ -33,9 +35,23 @@ set -ex -# Sort files by their SHA-1, and then return the accumulated result -sha1tree () { - find "$@" -type f -print0 | \ - xargs -0 shasum | cut -d ' ' -f 1 | \ - sort | shasum | cut -d ' ' -f 1 -} +[ -x "$(command -v realpath)" ] && FILE=$(realpath ${BASH_SOURCE[0]}) || FILE=${BASH_SOURCE[0]} +case $FILE in + */*) SERVER_PATH="${FILE%/*}" ;; + *) SERVER_PATH="." ;; +esac + +# Create docker virtual machine (Boot2docker) +case $1 in + VMX) source "$SERVER_PATH/docker_machine.sh" "-d virtualbox" ;; + Hyper-V) + # The Hyper-v has been enabled in Windows 10. Disable checking the hardware virtualization. + source "$SERVER_PATH/docker_machine.sh" "-d virtualbox --virtualbox-no-vtx-check" ;; + *) ;; +esac + +# Display system-wide information of docker-engine +docker info + +# Create images +$SERVER_PATH/docker_images.sh diff --git a/coin/provisioning/common/shared/testserver/echo/Dockerfile b/coin/provisioning/common/shared/testserver/echo/Dockerfile new file mode 100644 index 00000000..653ca714 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/echo/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:16.04 +ARG packages="xinetd avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 7 7/UDP 13 diff --git a/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile new file mode 100644 index 00000000..37f488cb --- /dev/null +++ b/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="xinetd avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 7 7/UDP 13 diff --git a/coin/provisioning/common/shared/testserver/freecoap/Dockerfile b/coin/provisioning/common/shared/testserver/freecoap/Dockerfile new file mode 100644 index 00000000..2c665bd5 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/freecoap/Dockerfile @@ -0,0 +1,20 @@ +FROM ubuntu:18.04 + +RUN apt-get update && apt-get -y install git avahi-daemon autoconf automake libtool make libgnutls28-dev + +RUN mkdir -p /root/src/ + +# Get FreeCoAP test server +WORKDIR /root/src +RUN git clone https://github.com/keith-cullen/FreeCoAP.git +WORKDIR /root/src/FreeCoAP +RUN autoreconf --install +RUN ./configure +RUN make +RUN make install +WORKDIR /root/src/FreeCoAP/sample/time_server +RUN make + +WORKDIR / + +EXPOSE 5685/udp diff --git a/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile new file mode 100644 index 00000000..0e7146ba --- /dev/null +++ b/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="ftp-proxy avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 2121 diff --git a/coin/provisioning/common/shared/testserver/iptables/Dockerfile b/coin/provisioning/common/shared/testserver/iptables/Dockerfile new file mode 100644 index 00000000..cbee61d4 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/iptables/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:16.04 +ARG packages="iptables avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 1357 diff --git a/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile new file mode 100644 index 00000000..5865e9c8 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="iptables avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 1357 diff --git a/coin/provisioning/common/shared/testserver/settings.sh b/coin/provisioning/common/shared/testserver/settings.sh index 041661f2..27832773 100644 --- a/coin/provisioning/common/shared/testserver/settings.sh +++ b/coin/provisioning/common/shared/testserver/settings.sh @@ -1,6 +1,6 @@ ############################################################################# ## -## Copyright (C) 2018 The Qt Company Ltd. +## Copyright (C) 2019 The Qt Company Ltd. ## Contact: http://www.qt.io/licensing/ ## ## This file is part of the provisioning scripts of the Qt Toolkit. @@ -34,4 +34,5 @@ set -ex # A list of test servers to be provisioned -testserver='apache2 squid vsftpd ftp-proxy danted' +testserver='apache2 squid vsftpd ftp-proxy danted echo cyrus iptables californium freecoap' +testserver="$testserver apache2_18.04 squid_18.04 vsftpd_18.04 ftp-proxy_18.04 danted_18.04 echo_18.04 cyrus_18.04 iptables_18.04" diff --git a/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile new file mode 100644 index 00000000..208feec7 --- /dev/null +++ b/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="squid avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 3128-3130 diff --git a/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile new file mode 100644 index 00000000..843472fd --- /dev/null +++ b/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:18.04 +ARG packages="vsftpd avahi-daemon" +RUN apt-get update && apt-get install -y $packages && dpkg -l $packages +EXPOSE 20-21 |