Initial commit
This commit is contained in:
parent
50bec6cf70
commit
0b81cb4dd0
4
.gitignore
vendored
4
.gitignore
vendored
@ -412,3 +412,7 @@ FodyWeavers.xsd
|
|||||||
# Built Visual Studio Code Extensions
|
# Built Visual Studio Code Extensions
|
||||||
*.vsix
|
*.vsix
|
||||||
|
|
||||||
|
|
||||||
|
# do not include built images in git
|
||||||
|
images
|
||||||
|
|
||||||
|
|||||||
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[submodule "mocha-php"]
|
||||||
|
path = mocha-php
|
||||||
|
url = git@gitea.azcona-becker.net:mochapowered/mocha-php
|
||||||
|
[submodule "mocha-common"]
|
||||||
|
path = mocha-common
|
||||||
|
url = git@gitea.azcona-becker.net:mochapowered/mocha-common
|
||||||
184
carafe
Executable file
184
carafe
Executable file
@ -0,0 +1,184 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# usage: ./mocha-carafe new BASE
|
||||||
|
if [ "$1" == "new" ]; then
|
||||||
|
|
||||||
|
if [ "$USER" != "root" ]; then
|
||||||
|
echo "must be run as root"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
BASE=$2
|
||||||
|
BASEPATH=images/$BASE/$BASE
|
||||||
|
FLAVOR=noble
|
||||||
|
|
||||||
|
if [ ! -d "images" ]; then
|
||||||
|
mkdir "images"
|
||||||
|
fi
|
||||||
|
if [ ! -d "images/$BASE" ]; then
|
||||||
|
mkdir "images/$BASE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$BASEPATH" ]; then
|
||||||
|
|
||||||
|
debootstrap $FLAVOR "$BASEPATH"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$BASEPATH" ]; then
|
||||||
|
echo "base path not found: $BASEPATH"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "deb http://archive.ubuntu.com/ubuntu noble main universe
|
||||||
|
deb http://archive.ubuntu.com/ubuntu noble-updates main universe
|
||||||
|
deb http://archive.ubuntu.com/ubuntu noble-backports main universe
|
||||||
|
deb http://archive.ubuntu.com/ubuntu noble-security main universe" > $BASEPATH/etc/apt/sources.list
|
||||||
|
|
||||||
|
if [ ! -d "$BASEPATH/usr/lib/mocha/carafe" ]; then
|
||||||
|
mkdir -p "$BASEPATH/usr/lib/mocha/carafe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$BASEPATH/usr/share/mocha/system" ]; then
|
||||||
|
mkdir -p "$BASEPATH/usr/share/mocha/system"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp -r libexec/mocha/carafe $BASEPATH/usr/lib/mocha
|
||||||
|
cp -r fs/* $BASEPATH/
|
||||||
|
|
||||||
|
if [ ! -d "$BASEPATH/usr/lib/mocha/oms" ]; then
|
||||||
|
mkdir -p $BASEPATH/usr/lib/mocha/oms
|
||||||
|
fi
|
||||||
|
|
||||||
|
./copy-oms $BASEPATH/usr/lib/mocha/oms
|
||||||
|
cp ./mocha-common/mocha-common/output/*.mcl $BASEPATH/usr/share/mocha/system
|
||||||
|
|
||||||
|
if [ ! -d "$BASEPATH/var/mocha/uploads" ]; then
|
||||||
|
mkdir -p "$BASEPATH/var/mocha/uploads"
|
||||||
|
fi
|
||||||
|
cp ./mocha-php/mocha-php/src/mocha-php/images/logo.svg $BASEPATH/var/mocha/uploads/c4f31b1aaede4e919fa0511537f098a5.svg
|
||||||
|
|
||||||
|
chroot $BASEPATH /usr/lib/mocha/carafe/preinstall.sh
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "preinstall failed, try running 'chroot \$BASEPATH /usr/lib/mocha/carafe/preinstall.sh' again"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Listen 443" > $BASEPATH/etc/apache2/ports.conf
|
||||||
|
cp site.conf $BASEPATH/etc/apache2/sites-available/000-default.conf
|
||||||
|
cp certs/localhost.crt certs/localhost.key $BASEPATH/etc/ssl/certs
|
||||||
|
|
||||||
|
cp -r mocha-php/mocha-php/src/mocha-php/* $BASEPATH/var/www/html
|
||||||
|
cp mocha-php/mocha-php/src/mocha-php/.htaccess $BASEPATH/var/www/html
|
||||||
|
|
||||||
|
rm -rf $BASEPATH/var/www/html/lib/phast
|
||||||
|
cp -r mocha-php/phast/lib/phast/server $BASEPATH/var/www/html/lib/phast
|
||||||
|
|
||||||
|
# mocha etc
|
||||||
|
if [ ! -d $BASEPATH/etc/mocha/include ]; then
|
||||||
|
mkdir -p $BASEPATH/etc/mocha/include
|
||||||
|
fi
|
||||||
|
cp mocha-php/mocha-php/src/mocha-php/include/Configuration.inc.php.template $BASEPATH/etc/mocha/include/Configuration.inc.php.template
|
||||||
|
|
||||||
|
# mocha libexec
|
||||||
|
if [ ! -d $BASEPATH/usr/lib/mocha ]; then
|
||||||
|
mkdir -p $BASEPATH/usr/lib/mocha
|
||||||
|
fi
|
||||||
|
cp libexec/mocha/mocha-* $BASEPATH/usr/lib/mocha
|
||||||
|
cp libexec/mocha/mocha $BASEPATH/usr/bin
|
||||||
|
chmod a+x $BASEPATH/usr/lib/mocha/*
|
||||||
|
chmod a+x $BASEPATH/usr/bin/mocha
|
||||||
|
|
||||||
|
if [ -d $BASEPATH/var/www/html/index.html ]; then
|
||||||
|
rm $BASEPATH/var/www/html/index.html
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ! FIXME: we don't want to run this in chroot, we need to run it in lxc!
|
||||||
|
chroot $BASEPATH /usr/lib/mocha/carafe/postinstall.sh
|
||||||
|
|
||||||
|
echo "architecture: \"x86_64\"
|
||||||
|
creation_date: $(date +%s) # To get current date in Unix time, use \`date +%s\` command
|
||||||
|
properties:
|
||||||
|
architecture: \"x86_64\"
|
||||||
|
description: \"Ubuntu Noble with Apache2 and PHP (20171227)\"
|
||||||
|
os: \"ubuntu\"
|
||||||
|
release: \"noble\"" > images/$BASE/metadata.yaml
|
||||||
|
|
||||||
|
tar -cvzf images/$BASE/metadata.tar.gz -C images/$BASE metadata.yaml
|
||||||
|
rm images/$BASE/metadata.yaml
|
||||||
|
|
||||||
|
if [ ! -f images/$BASE/$BASE.tar.gz ]; then
|
||||||
|
|
||||||
|
tar -cvzf images/$BASE/$BASE.tar.gz -C $BASEPATH .
|
||||||
|
# rm -rf $BASEPATH
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "$BASE.tar.gz already exists; not overwriting"
|
||||||
|
fi
|
||||||
|
|
||||||
|
EXISTS=$(lxc image list | grep $BASE )
|
||||||
|
if [ "$EXISTS" == "" ]; then
|
||||||
|
|
||||||
|
lxc image import images/$BASE/metadata.tar.gz images/$BASE/$BASE.tar.gz --alias $BASE
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "not importing image; already exists as $BASE"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
SUV_ID=$(hexdump -vn8 -e'2/4 "%08x" 1 "\n"' /dev/urandom)
|
||||||
|
CONTAINER_NAME=i-0$SUV_ID
|
||||||
|
lxc init $BASE $CONTAINER_NAME
|
||||||
|
|
||||||
|
echo "Instance name is: $CONTAINER_NAME"
|
||||||
|
|
||||||
|
lxc start $CONTAINER_NAME
|
||||||
|
lxc shell $CONTAINER_NAME -- bash -c "echo \"$CONTAINER_NAME\" > /etc/mocha/container"
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
CONTAINER_IP=$(lxc exec $CONTAINER_NAME ip addr | grep 'scope global' | sed -e 's/ inet6 //' -e 's/\/64 scope global dynamic mngtmpaddr//')
|
||||||
|
lxc shell $CONTAINER_NAME mocha up
|
||||||
|
|
||||||
|
SUV_DOMAINNAME=".privatesuv.com"
|
||||||
|
echo "enter sudo password to add entry to /etc/hosts if desired"
|
||||||
|
echo "$CONTAINER_IP $CONTAINER_NAME$SUV_DOMAINNAME" | sudo tee -a /etc/hosts
|
||||||
|
|
||||||
|
elif [ "$1" == "list" ]; then
|
||||||
|
|
||||||
|
lxc list
|
||||||
|
|
||||||
|
elif [ "$1" == "up" ]; then
|
||||||
|
|
||||||
|
lxc start "$2"
|
||||||
|
|
||||||
|
elif [ "$1" == "shell" ]; then
|
||||||
|
|
||||||
|
lxc shell "$2"
|
||||||
|
|
||||||
|
elif [ "$1" == "reset" ]; then
|
||||||
|
|
||||||
|
BASE="$2"
|
||||||
|
|
||||||
|
echo "deleting compiled files..."
|
||||||
|
rm images/$BASE/*.gz
|
||||||
|
|
||||||
|
echo "removing the image..."
|
||||||
|
lxc image delete $BASE
|
||||||
|
|
||||||
|
elif [ "$1" == "destroy" ]; then
|
||||||
|
|
||||||
|
./carafe reset $2
|
||||||
|
rm -rf images/$2
|
||||||
|
|
||||||
|
# elif [ "$1" == "build" ]; then
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "usage: mocha carafe new BASE"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
29
certs/localhost.crt
Normal file
29
certs/localhost.crt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIE7zCCA9egAwIBAgIURvpBSseeEDIKEO0c1VBMWkLexMQwDQYJKoZIhvcNAQEL
|
||||||
|
BQAwgZkxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJGTDEQMA4GA1UEBwwHT3JsYW5k
|
||||||
|
bzEfMB0GA1UECgwWTUJTIEJ1c2luZXNzIFNvbHV0aW9uczEkMCIGA1UEAwwbTUJT
|
||||||
|
IEludGVybmFsIERldmVsb3BtZW50IENBMSQwIgYJKoZIhvcNAQkBFhVzdXBwb3J0
|
||||||
|
QHRldHJvbmljYS5jb20wHhcNMjMxMTA3MTI0MjMyWhcNMjUxMTA2MTI0MjMyWjBo
|
||||||
|
MQswCQYDVQQGEwJVUzELMAkGA1UECAwCRkwxEDAOBgNVBAcMB09ybGFuZG8xHzAd
|
||||||
|
BgNVBAoMFk1CUyBCdXNpbmVzcyBTb2x1dGlvbnMxGTAXBgNVBAMMECoucHJpdmF0
|
||||||
|
ZXN1di5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCB79lGqz1t
|
||||||
|
wC5KDJ6TMsJk6/BK7vQiyT3umuut2RPhwkMHfihz+zfxaYo4C7KHkSoCPT4v3u1y
|
||||||
|
MONJfiev8E+/ZzHlPNYhxs/Su1iSavJQHPvKzKMSkvjbMQFX/Cqzp/A2NL5EkmYv
|
||||||
|
HrFd9WiV2azp5knQ8hLWdvWR8gUHJZK0FocKA6qbQNQ3G/McOsEsaUZtjCcb1oJw
|
||||||
|
fKt4G8i2Iv0aMMTOJfCQYhrpuGuX8qkcD1gR9imb8qhthiLw54LwcrtQcIVEwFAG
|
||||||
|
YyDPVRsw6xvLYHchRkx+DvRdgy/UKMha9tq/3lzF9Fm1/3cnelEsKe7W51ZGkU+3
|
||||||
|
apVqNovaYZ+ty1rRxMe/tj4XtHaOLTioG/UMT7AL0LK3darEAS29n8UdT+xORBsU
|
||||||
|
7iENL112ZcY4yrzCDzUz1Ys0NJAl9a4p6kW33lu0idRTq75xwOYoKhX69Kff0bF8
|
||||||
|
dAAebxZSYcIF9/uKHpKW31zK8ac9d1bHYnkL8Ej2yA6Ps98tYLDUecC3dbYk+k2I
|
||||||
|
igz2BN2UhyEonb5DUz6dSlR+RR3kB884ycMrBi9FNEhjBhm5+iOHs1nAh1Hzm/IJ
|
||||||
|
Koiw49XyWZIxNYWkcqq9h4wQEQIiZ/3S1FeJWxj+vt+tZKAhDc71V5kSHHJXCh3X
|
||||||
|
EIqXLZYKXPAG0uST+H8VY5bXahKW/A60UQIDAQABo18wXTAbBgNVHREEFDASghAq
|
||||||
|
LnByaXZhdGVzdXYuY29tMB0GA1UdDgQWBBSCn5UhCbR7QG5M5RgZXI4y4LoFSDAf
|
||||||
|
BgNVHSMEGDAWgBSkDws8lTr7dn6nUzawl/gS5J2i3DANBgkqhkiG9w0BAQsFAAOC
|
||||||
|
AQEAPozqKZadO7QR4HxdU2KNuBlfbvZ62KS2UoiISnUS/cHEejkSdU6RaWN1wVv4
|
||||||
|
rimBhhVX+vkIBcd4OiaRTxFBQpgkyTxI7L+B/fKTmwUP3KEl2GSiWFwmAcRQjn4u
|
||||||
|
tNuABnn7d7UTl9NCR/n3981A1gl6cIAjv6XBEuDWCCTSCVWgWDBlpG2OA0Fp5+GL
|
||||||
|
J4Jl7xfjpiFAdOllVi/Cd63DiQmv6Fxuc2wBeugatLYCM8Mu6WOJ8+SvbJ57zYec
|
||||||
|
1oWftLmRr5WxpgGrbDMcAwwD74OXlTOuNX/Jx7uX2Y4Qlqysl7gHJtztlTQCO+23
|
||||||
|
RRiyHDf6iKxeh2S16xnVi2vtWw==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
52
certs/localhost.key
Normal file
52
certs/localhost.key
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
Hn/DMWon80lSV4Ds8yHgx6W7Y/c=
|
||||||
|
-----END PRIVATE KEY-----
|
||||||
2
copy-oms
Executable file
2
copy-oms
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
cp -r ../mocha-dotnet/mocha-dotnet/src/app/Mocha.Oms.Server/bin/Debug/net8.0/* $1
|
||||||
|
|
||||||
11
fs/usr/lib/systemd/system/firstrun.service
Normal file
11
fs/usr/lib/systemd/system/firstrun.service
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=First Run
|
||||||
|
After=network.target remote-fs.target nss-lookup.target
|
||||||
|
Documentation=https://support.mochapowered.com/oms-dotnet/1.3/
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/sbin/firstrun
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
18
fs/usr/lib/systemd/system/mocha-oms.service
Normal file
18
fs/usr/lib/systemd/system/mocha-oms.service
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=The Mocha OMS Server
|
||||||
|
After=network.target remote-fs.target nss-lookup.target
|
||||||
|
Documentation=https://support.mochapowered.com/oms-dotnet/1.3/
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=forking
|
||||||
|
Environment=MOCHAOMS_STARTED_BY_SYSTEMD=true
|
||||||
|
ExecStart=/usr/sbin/mochactl start-oms
|
||||||
|
ExecStop=/usr/sbin/mochactl stop-oms
|
||||||
|
ExecReload=/usr/sbin/mochactl reload-oms
|
||||||
|
KillMode=mixed
|
||||||
|
PrivateTmp=true
|
||||||
|
Restart=on-abort
|
||||||
|
OOMPolicy=continue
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
6
fs/usr/sbin/firstrun
Executable file
6
fs/usr/sbin/firstrun
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
/usr/lib/mocha/carafe/firstrun.sh
|
||||||
|
systemctl disable firstrun
|
||||||
|
|
||||||
|
|
||||||
10
fs/usr/sbin/mochactl
Executable file
10
fs/usr/sbin/mochactl
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
EXECPATH="/usr/lib/mocha/oms"
|
||||||
|
EXECFILE="Mocha.Oms.Server"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
"start-oms")
|
||||||
|
exec $EXECPATH/$EXECFILE &
|
||||||
|
esac
|
||||||
|
|
||||||
21
libexec/mocha/carafe/firstrun.sh
Executable file
21
libexec/mocha/carafe/firstrun.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
rm /var/www/html/index.html
|
||||||
|
|
||||||
|
# set up mocha user accounts
|
||||||
|
addgroup webmasters
|
||||||
|
|
||||||
|
PASS1=$(pwgen 16 1)
|
||||||
|
useradd -p $(openssl passwd -6 $PASS1) webmaster
|
||||||
|
|
||||||
|
PASS2=$(pwgen 16 1)
|
||||||
|
useradd -p $(openssl passwd -6 $PASS2) zqadmin
|
||||||
|
|
||||||
|
echo "webmaster: $PASS1
|
||||||
|
zqadmin: $PASS2" > /etc/mocha/passwd
|
||||||
|
|
||||||
|
chown --recursive zqadmin /etc/mocha /usr/lib/mocha /usr/share/mocha /var/mocha
|
||||||
|
chgrp --recursive zqadmin /etc/mocha /usr/lib/mocha /usr/share/mocha /var/mocha
|
||||||
|
|
||||||
|
chown --recursive webmaster /var/www /var/mocha/uploads
|
||||||
|
chgrp --recursive webmasters /var/www /var/mocha/uploads
|
||||||
3
libexec/mocha/carafe/postinstall.sh
Normal file
3
libexec/mocha/carafe/postinstall.sh
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
systemctl enable firstrun
|
||||||
|
|
||||||
24
libexec/mocha/carafe/preinstall.sh
Executable file
24
libexec/mocha/carafe/preinstall.sh
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
PACKAGE_LIST="apache2 php pwgen php-xml php-mbstring php-curl php-mysql mariadb-server dotnet-sdk-8.0"
|
||||||
|
|
||||||
|
ENABLE_NANO=1
|
||||||
|
if [ $ENABLE_NANO -eq 1 ]; then
|
||||||
|
PACKAGE_LIST+=" nano"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ENABLE_SSH=1
|
||||||
|
if [ $ENABLE_SSH -eq 1 ]; then
|
||||||
|
PACKAGE_LIST+=" openssh-server"
|
||||||
|
fi
|
||||||
|
|
||||||
|
apt update
|
||||||
|
apt install -y $PACKAGE_LIST
|
||||||
|
|
||||||
|
# enable apache modules
|
||||||
|
a2enmod rewrite ssl
|
||||||
|
|
||||||
|
# link service
|
||||||
|
ln -s /usr/lib/systemd/system/mocha-oms.service /etc/systemd/system/multi-user.target.wants/mocha-oms.service
|
||||||
|
systemctl enable mocha-oms
|
||||||
|
|
||||||
21
libexec/mocha/mocha
Normal file
21
libexec/mocha/mocha
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
|
||||||
|
if [ -f "/usr/lib/mocha/mocha-$1" ]; then
|
||||||
|
|
||||||
|
MOCHA_COMMAND=$1
|
||||||
|
shift
|
||||||
|
exec "/usr/lib/mocha/mocha-$MOCHA_COMMAND" ${1+"$@"}
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "mocha: '$1' is not a mocha command. See 'mocha --help'."
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "usage: mocha $(echo /usr/lib/mocha/mocha-* | sed -e 's/\/usr\/lib\/mocha\/mocha\-//g' -e 's/ /|/g')"
|
||||||
|
|
||||||
|
fi
|
||||||
19
libexec/mocha/mocha-clean
Normal file
19
libexec/mocha/mocha-clean
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ "$1" != "-y" ]; then
|
||||||
|
|
||||||
|
echo "ARE YOU SURE you wish to CLEAN this SUV?"
|
||||||
|
echo "This will DESTROY all data and rebuild from a clean master image."
|
||||||
|
echo ""
|
||||||
|
echo -n "Type YES to confirm: > "
|
||||||
|
read CONFIRMYES
|
||||||
|
if [ "$CONFIRMYES" != "YES" ]; then
|
||||||
|
echo ""
|
||||||
|
echo "OK, not doing anything"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm /etc/mocha/*
|
||||||
|
mocha up
|
||||||
110
libexec/mocha/mocha-up
Executable file
110
libexec/mocha/mocha-up
Executable file
@ -0,0 +1,110 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
FIRSTRUN=0
|
||||||
|
|
||||||
|
if [ -f "/etc/mocha/container" ]; then
|
||||||
|
MOCHA_CONTAINER=$(cat /etc/mocha/container)
|
||||||
|
else
|
||||||
|
MOCHA_CONTAINER=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "/etc/mocha/username" ]; then
|
||||||
|
MOCHA_USERNAME=$(cat /etc/mocha/username)
|
||||||
|
MOCHA_PASSWORD=$(cat /etc/mocha/userpass)
|
||||||
|
else
|
||||||
|
# we are running for the first time (or we are transient)
|
||||||
|
HTML_HOME=/var/www/html
|
||||||
|
|
||||||
|
# reset the configuration file
|
||||||
|
cp /etc/mocha/include/Configuration.inc.php.template $HTML_HOME/include/Configuration.inc.php
|
||||||
|
|
||||||
|
# generate a not-very-secure but easily-rememberable password for zq-developer
|
||||||
|
MOCHA_USERNAME="zq-developer"
|
||||||
|
MOCHA_PASSWORD=$(pwgen -N 1)
|
||||||
|
|
||||||
|
if [ ! $? -eq 0 ]; then
|
||||||
|
echo ""
|
||||||
|
echo "could not generate a secure password, you may need to (re-)install pwgen"
|
||||||
|
echo ""
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $MOCHA_USERNAME > /etc/mocha/username
|
||||||
|
echo $MOCHA_PASSWORD > /etc/mocha/userpass
|
||||||
|
|
||||||
|
MOCHA_DB_DATABASENAME="mocha_suv"
|
||||||
|
MOCHA_DB_USERNAME="mocha_suv"
|
||||||
|
|
||||||
|
# also generate a slightly more secure machine password for the mariadb database...
|
||||||
|
MOCHA_DB_PASSWORD=$(pwgen -s 32 -N 1)
|
||||||
|
# ... and add it to the configuration file
|
||||||
|
sed -i -e "s/@@MOCHA_DB_DATABASENAME@@/$MOCHA_DB_DATABASENAME/" -e "s/@@MOCHA_DB_USERNAME@@/$MOCHA_DB_USERNAME/" -e "s/@@MOCHA_DB_PASSWORD@@/$MOCHA_DB_PASSWORD/" $HTML_HOME/include/Configuration.inc.php
|
||||||
|
|
||||||
|
# ... and also add it to our local configuration
|
||||||
|
echo $MOCHA_DB_DATABASENAME > /etc/mocha/dbname
|
||||||
|
echo $MOCHA_DB_USERNAME > /etc/mocha/dbuser
|
||||||
|
echo $MOCHA_DB_PASSWORD > /etc/mocha/dbpass
|
||||||
|
|
||||||
|
# don't forget to make a backup
|
||||||
|
cp $HTML_HOME/include/Configuration.inc.php $HTML_HOME/include/Configuration.inc.php.bak
|
||||||
|
|
||||||
|
# create the MySQL database and user with the previously generated password
|
||||||
|
mysql -e "DROP DATABASE IF EXISTS $MOCHA_DB_DATABASENAME; DROP USER IF EXISTS $MOCHA_DB_USERNAME;"
|
||||||
|
mysql -e "CREATE DATABASE $MOCHA_DB_DATABASENAME; CREATE USER $MOCHA_DB_USERNAME IDENTIFIED BY '$MOCHA_DB_PASSWORD'; GRANT ALL ON $MOCHA_DB_DATABASENAME.* TO '$MOCHA_DB_USERNAME'@'%';"
|
||||||
|
|
||||||
|
# install mocha using the `mocha oms` command
|
||||||
|
mocha oms install
|
||||||
|
mocha oms install library /usr/share/mocha/libraries
|
||||||
|
|
||||||
|
mocha oms tenant select super
|
||||||
|
|
||||||
|
# set the new user name and password for the initial mocha user
|
||||||
|
mocha oms user set-password "$MOCHA_USERNAME" "$MOCHA_PASSWORD"
|
||||||
|
|
||||||
|
mocha oms tenant release
|
||||||
|
|
||||||
|
# record the initial start time for the SUV
|
||||||
|
echo $(date "+%Y-%m-%dT%H:%M:%S") > /etc/mocha/suvstart
|
||||||
|
chmod a+r /etc/mocha/suvstart
|
||||||
|
|
||||||
|
FIRSTRUN=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "******************************************"
|
||||||
|
echo ""
|
||||||
|
echo "Thank you for provisioning your Mocha SUV!"
|
||||||
|
echo "You can log in with the following details:"
|
||||||
|
echo ""
|
||||||
|
if [ "$MOCHA_CONTAINER" != "" ]; then
|
||||||
|
echo "Container: $MOCHA_CONTAINER"
|
||||||
|
fi
|
||||||
|
echo "User name: $MOCHA_USERNAME"
|
||||||
|
echo "Password: $MOCHA_PASSWORD"
|
||||||
|
echo ""
|
||||||
|
echo "Your domain and IP address information is:"
|
||||||
|
echo ""
|
||||||
|
echo " $MOCHA_CONTAINER.privatesuv.com"
|
||||||
|
# ip addr show dev enp0s8 | grep inet
|
||||||
|
ip addr | grep 'scope global'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
SHOW_ADDITIONAL_LOGINS=0
|
||||||
|
if [ $SHOW_ADDITIONAL_LOGINS -eq 1 ]; then
|
||||||
|
if [ -f /etc/mocha/passwd ]; then
|
||||||
|
|
||||||
|
echo "Additional login information is as follows:"
|
||||||
|
echo ""
|
||||||
|
cat /etc/mocha/passwd
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "******************************************"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ $FIRSTRUN -eq 1 ]; then
|
||||||
|
# register the SUV for automatic shutdown in 10 hours
|
||||||
|
/usr/lib/mocha/spot_register_for_shutdown 600
|
||||||
|
fi
|
||||||
3
libexec/mocha/spot_register_for_shutdown
Normal file
3
libexec/mocha/spot_register_for_shutdown
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
echo "!!! This Spot Instance will automatically terminate in $1 minutes !!!"
|
||||||
|
shutdown -P +$1
|
||||||
1
mocha-common
Submodule
1
mocha-common
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 65c6b698a3dd1215ccd51de45ea3349f231bbf70
|
||||||
1
mocha-php
Submodule
1
mocha-php
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 368d3e576f6be77aa17571da90f056fa2f5e9354
|
||||||
37
site.conf
Normal file
37
site.conf
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<VirtualHost *:443>
|
||||||
|
# The ServerName directive sets the request scheme, hostname and port that
|
||||||
|
# the server uses to identify itself. This is used when creating
|
||||||
|
# redirection URLs. In the context of virtual hosts, the ServerName
|
||||||
|
# specifies what hostname must appear in the request's Host: header to
|
||||||
|
# match this virtual host. For the default virtual host (this file) this
|
||||||
|
# value is not decisive as it is used as a last resort host regardless.
|
||||||
|
# However, you must set it for any further virtual host explicitly.
|
||||||
|
#ServerName www.example.com
|
||||||
|
|
||||||
|
ServerAdmin webmaster@localhost
|
||||||
|
DocumentRoot /var/www/html
|
||||||
|
|
||||||
|
<Directory /var/www/>
|
||||||
|
AllowOverride All
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
SSLEngine on
|
||||||
|
SSLCertificateFile /etc/ssl/certs/localhost.crt
|
||||||
|
SSLCertificateKeyFile /etc/ssl/certs/localhost.key
|
||||||
|
|
||||||
|
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
|
||||||
|
# error, crit, alert, emerg.
|
||||||
|
# It is also possible to configure the loglevel for particular
|
||||||
|
# modules, e.g.
|
||||||
|
#LogLevel info ssl:warn
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
|
||||||
|
# For most configuration files from conf-available/, which are
|
||||||
|
# enabled or disabled at a global level, it is possible to
|
||||||
|
# include a line for only one particular virtual host. For example the
|
||||||
|
# following line enables the CGI configuration for this host only
|
||||||
|
# after it has been globally disabled with "a2disconf".
|
||||||
|
#Include conf-available/serve-cgi-bin.conf
|
||||||
|
</VirtualHost>
|
||||||
Loading…
x
Reference in New Issue
Block a user