diff options
author | 2022-07-01 12:12:46 -0700 | |
---|---|---|
committer | 2022-07-01 12:12:46 -0700 | |
commit | 6fb33c7d84a6e9fefe03ec6b0af77a01eaf1d421 (patch) | |
tree | 37c75ac925f3f0dc2fde772ee73bc0306c5fd1d3 | |
parent | Votify: editor fail (diff) | |
download | elections-6fb33c7d84a6e9fefe03ec6b0af77a01eaf1d421.tar.gz elections-6fb33c7d84a6e9fefe03ec6b0af77a01eaf1d421.tar.bz2 elections-6fb33c7d84a6e9fefe03ec6b0af77a01eaf1d421.zip |
infra-schedule-countify-collect: new tool to schedule countify --collect
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rw-r--r-- | README.md | 20 | ||||
-rwxr-xr-x | infra-schedule-countify-collect | 44 |
2 files changed, 62 insertions, 2 deletions
@@ -85,8 +85,24 @@ Trustees. Just wait. `election-stats-count` runs every 30 minutes by cronjob, and prints status files into the home directories of election officials: `voter-turnout-${election_name}`. -4. Close of election: ---------------------- +4.a. Automated "Close of election" +---------------------------------- +Before the end of the election, run the script to schedule automated +`countify --collect`: +``` +$ sudo su +# cd /etc/elections +# ./infra-schedule-countify-collect ${election_name} +```` + +The job can be verified with: +``` +# atq +# at -c $JOB_ID +``` + +4.b. Manual "Close of election" +------------------------------- This is the only step where the infra contact is absolutely required. The infra contact must run `countify --collect ${election_name}` as root, which will write the master ballot & confirmation stub file to all officials: diff --git a/infra-schedule-countify-collect b/infra-schedule-countify-collect new file mode 100755 index 0000000..f44f343 --- /dev/null +++ b/infra-schedule-countify-collect @@ -0,0 +1,44 @@ +#!/bin/bash +# This will schedule an at(1) job to run for countify --collect +# Any special ballots must be in place before the end of the election. +# Infra needs to run this script, and it will schedule the rest, so infra does +# NOT need to be on hand at the end closing time. +election_name=$1 + +UID=$(id -u) +if test $UID -ne 0; then + echo "You must be root to run this" 1>&2 + exit 1 +fi + +# Find the dir, validate +for d in /etc/elections/$election_name ./$election_name ; do + files=( start stop voters ballot officials ) + good=1 + for f in ${files[@]}; do + test -e $d/${f}-$election_name || good=0 + done + if test $good -eq 1 ; then + export election_dir=$d + break + fi + unset good +done + +if test -z "$election_dir" ; then + echo "Could not find election $election_name in /etc/elections" 1>&2 + exit 1 +fi + +stopfile=$election_dir/stop-$election_name +t=$(date -u +%Y%m%d%H%M.%S -d @$(<$stopfile) ) + +cd /etc/elections +unset MAIL PWD SSH_CLIENT SSH_CONNECTION SSH_TTY + +at -t $t <<-EOF +#!/bin/sh +# This was scheduled by $SUDO_USER at $(date -uR) +cd /etc/elections +./countify --collect ${election_name} +EOF |