Initial commit

This commit is contained in:
Jan Schär 2022-07-15 11:59:26 +02:00
commit 295a111cec
89 changed files with 2897 additions and 0 deletions

20
tools/assign-user.sh Executable file
View file

@ -0,0 +1,20 @@
#!/bin/bash
machinename="$1"
username="$2"
machineusername=contestant
userline=$(grep "^$username;" usernames.csv)
if [ $? -ne 0 ]; then
echo "User $username not found"
exit 1
fi
fullname=$(echo "$userline" | cut "-d;" -f2)
# Set real name of machine user
ssh root@"$machinename" chfn --full-name "\"$fullname\"" $machineusername
# Install client certificate
scp "certs/$username.p12" "root@$machinename:/home/$machineusername/clientcert.p12"
ssh root@"$machinename" install-client-cert $machineusername

27
tools/backup-create.sh Executable file
View file

@ -0,0 +1,27 @@
#!/bin/bash
sleep_secs=120
do_backup() {
for hostlogin in $(cat hostlist); do
host=$(echo $hostlogin | cut "-d@" -f2)
echo $host
target=backups/$host/$(date --iso-8601=seconds)
mkdir -p $target
rsync --archive --verbose --prune-empty-dirs --exclude ".*" --exclude "/snap" --exclude "Screenshot from *" --max-size 200K $hostlogin:/home/contestant/ $target
chmod o+rx $target
done
}
if [ $1 == timer ]; then
while true; do
do_backup
echo
echo "Finished, next backup in $sleep_secs seconds."
echo
echo
sleep $sleep_secs
done
else
do_backup
fi

5
tools/contest-lock.json Normal file
View file

@ -0,0 +1,5 @@
{
"title": "SOI Finals 2023 · Day 1",
"message": "",
"startTime": "2023-05-05T12:00:00+02:00"
}

58
tools/create-certs.sh Executable file
View file

@ -0,0 +1,58 @@
#!/usr/bin/env bash
# install cfssl
set -e
usernames=$(cat usernames.csv | cut "-d;" -f1)
mkdir -p certs
cd certs
cat <<EOF > ca.json
{
"CN": "SOI Finals Root CA",
"key": {
"algo": "rsa",
"size": 2048
}
}
EOF
cfssl gencert -initca ca.json | cfssljson -bare ca
cat <<EOF >client-config.json
{
"signing": {
"default": {
"expiry": "438000h"
},
"profiles": {
"client": {
"usages": ["signing", "key encipherment", "digital signature", "client auth"],
"expiry": "438000h"
}
}
}
}
EOF
for username in $usernames; do
cat <<EOF >client-csr-$username.json
{
"CN": "$username",
"key": {
"algo": "rsa",
"size": 2048
}
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=client-config.json -profile=client client-csr-$username.json | cfssljson --bare $username-cert
openssl pkcs12 -export -in $username-cert.pem -inkey $username-cert-key.pem -out $username.p12 -passout pass:
done

19
tools/hostlist Normal file
View file

@ -0,0 +1,19 @@
root@contestant10
root@contestant11
root@contestant12
root@contestant13
root@contestant14
root@contestant15
root@contestant16
root@contestant17
root@contestant18
root@contestant19
root@contestant20
root@contestant21
root@contestant22
root@contestant23
root@contestant24
root@contestant25
root@contestant26
root@contestant27
root@contestant28

21
tools/hostlist-bern Normal file
View file

@ -0,0 +1,21 @@
root@amiet.soi
root@cezanne.soi
root@muenter.soi
root@yoshitoshi.soi
root@bruegel.soi
root@haring.soi
root@giger.soi
root@constable.soi
root@elgreco.soi
root@helnwein.soi
root@rubens.soi
root@escher.soi
root@tizian.soi
root@courbet.soi
root@rembrandt.soi
root@duerer.soi
root@macke.soi
root@chagall.soi
root@renoir.soi

1
tools/hostlist-test Normal file
View file

@ -0,0 +1 @@
root@test40

2
tools/usernames.csv Normal file
View file

@ -0,0 +1,2 @@
stofl;Mouse Stofl
binna1;Mouse Binna
1 stofl Mouse Stofl
2 binna1 Mouse Binna