Initial commit
This commit is contained in:
commit
295a111cec
89 changed files with 2897 additions and 0 deletions
20
tools/assign-user.sh
Executable file
20
tools/assign-user.sh
Executable 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
27
tools/backup-create.sh
Executable 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
5
tools/contest-lock.json
Normal 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
58
tools/create-certs.sh
Executable 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
19
tools/hostlist
Normal 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
21
tools/hostlist-bern
Normal 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
1
tools/hostlist-test
Normal file
|
|
@ -0,0 +1 @@
|
|||
root@test40
|
||||
2
tools/usernames.csv
Normal file
2
tools/usernames.csv
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
stofl;Mouse Stofl
|
||||
binna1;Mouse Binna
|
||||
|
Reference in a new issue