website/cgi-bin/form.cgi

51 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
source ./cgibashopts
echo "Content-type:text/html; charset=UTF-8\n\n"
echo ""
adminmails='aryak@vern.cc cobra@vern.cc neopenk@vern.cc'
echo '<link rel="stylesheet" href="/style.css">'
echo '<title>~vern admins</title>'
if [[ $FORM_username =~ ^([a-z_][a-z0-9_]{0,30})$ ]] && ! id $FORM_username &> /dev/null; then
echo "<br>Valid Username <b> $FORM_username </b><br>"
VALID_USERNAME=1
else
id $FORM_username &> /dev/null &&
echo "<br>Username already taken, try another one and resubmit the form<br>" ||
echo "<br>Invalid Username, please go back and resubmit the form<br>"
VALID_USERNAME=0
fi
if [[ "$FORM_email" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ ]]; then
VALID_EMAIL=1
echo "<br>Valid email address <b> $FORM_email</b><br>"
else
VALID_EMAIL=0
echo "<br>Invalid email address, please go back and resubmit the form<br>"
fi
if ! <<< "$FORM_ssh" ssh-keygen -l -f - &> /dev/null; then
echo "<br>Invalid SSH Key(s), please go back and resubmit the form<br>"
VALID_SSH=0
else
echo "<br>Valid SSH Key(s)<br>"
VALID_SSH=1
fi
echo "<br> Services requested: Tilde Email $FORM_git $FORM_fedi $FORM_matrix<br>"
set | grep ^FORM > /home/ak/test
sshurl=$(echo $FORM_ssh | curl -s -F'file=@-;' https://envs.sh)
if [[ $VALID_EMAIL == 1 ]] && [[ $VALID_USERNAME == 1 ]] && [[ $VALID_SSH == 1 ]]; then
echo "<br>Signup Request has been submitted. More information will be sent to $FORM_email after it is approved.<br>"
echo '<a href=/index.html>🔙 Go home</a>'
MAILNUM=$RANDOM
echo "Subject: New membership request from $FORM_username <$FORM_email>" > /tmp/membershipemail$MAILNUM
echo "Hello Administrators," >> /tmp/membershipemail$MAILNUM
echo "There has been a new membership request. Please look at the details below and decide if this is worth approving" >> /tmp/membershipemail$MAILNUM
echo "SSH Keys: $sshurl" >> /tmp/membershipemail$MAILNUM
echo "Services requested: $FORM_git $FORM_fedi $FORM_matrix" >> /tmp/membershipemail$MAILNUM
printf "\nReason for join request: \n $FORM_reason\n" >> /tmp/membershipemail$MAILNUM
cat /tmp/membershipemail$MAILNUM | s-nail -v -r "mememail@vern.cc" -s "$(head -n1 /tmp/membershipemail$MAILNUM | cut -c9-)" $adminmails &> /dev/null
else
echo '<h1> <a href=/signup>some details were wrong/missing. please check and redo the form</a> </h1>'
fi