checker: add a base number for challenges
This commit is contained in:
parent
bd64e70ba3
commit
7adbd4402a
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue