checker: add a base number for challenges

This commit is contained in:
nemunaire 2020-04-02 16:05:37 +02:00
parent bd64e70ba3
commit 7adbd4402a
2 changed files with 56 additions and 6 deletions

View File

@ -13,6 +13,8 @@ import (
"git.nemunai.re/lectures/adlin/libadlin"
)
var baseChallenge = 100
// ICMP
func check_ping(ip string, cb func(pkt *ping.Packet)) (err error) {
@ -88,8 +90,8 @@ func studentsChecker() {
// Check HTTP
if err := check_http(stdIP); err == nil {
if _, err := std.UnlockNewChallenge(100, ""); err != nil {
if _, err := std.UpdateUnlockedChallenge(100, ""); err != nil {
if _, err := std.UnlockNewChallenge(baseChallenge+0, ""); err != nil {
if _, err := std.UpdateUnlockedChallenge(baseChallenge+0, ""); err != nil {
log.Printf("Unable to register challenge for %s: %s\n", std.Login, err.Error())
}
}
@ -97,8 +99,8 @@ func studentsChecker() {
// Check HTTPs
if err := check_https(std.MyAssociatedDomain(), stdIP); err == nil {
if _, err := std.UnlockNewChallenge(101, ""); err != nil {
if _, err := std.UpdateUnlockedChallenge(101, ""); err != nil {
if _, err := std.UnlockNewChallenge(baseChallenge+1, ""); err != nil {
if _, err := std.UpdateUnlockedChallenge(baseChallenge+1, ""); err != nil {
log.Printf("Unable to register challenge for %s: %s\n", std.Login, err.Error())
}
}
@ -106,8 +108,8 @@ func studentsChecker() {
// Check DNS
if err := check_dns(std.MyDelegatedDomain(), stdIP); err == nil {
if _, err := std.UnlockNewChallenge(102, ""); err != nil {
if _, err := std.UpdateUnlockedChallenge(102, ""); err != nil {
if _, err := std.UnlockNewChallenge(baseChallenge+2, ""); err != nil {
if _, err := std.UpdateUnlockedChallenge(baseChallenge+2, ""); err != nil {
log.Printf("Unable to register challenge for %s: %s\n", std.Login, err.Error())
}
}

48
checker/main.go Normal file
View File

@ -0,0 +1,48 @@
package main
import (
"flag"
"log"
"os"
"os/signal"
"syscall"
"time"
"git.nemunai.re/lectures/adlin/libadlin"
)
func main() {
var dsn = flag.String("dsn", adlin.DSNGenerator(), "DSN to connect to the MySQL server")
flag.IntVar(&baseChallenge, "basechallenge", baseChallenge, "Base number for current challenges")
flag.Parse()
// Initialize contents
log.Println("Opening database...")
if err := adlin.DBInit(*dsn); err != nil {
log.Fatal("Cannot open the database: ", err)
}
defer adlin.DBClose()
log.Println("Creating database...")
if err := adlin.DBCreate(); err != nil {
log.Fatal("Cannot create database: ", err)
}
// Prepare graceful shutdown
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt, syscall.SIGTERM)
ticker := time.NewTicker(30 * time.Second)
defer ticker.Stop()
// Launch checker
for {
select {
case <-interrupt:
break
case <-ticker.C:
studentsChecker()
}
}
}