From afed11419088f8133657a6dee808687c0211d488 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 17:53:25 +0100 Subject: [PATCH 01/13] login-validator: Fix not reloading issue --- pkg/login-validator/cmd/main.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/login-validator/cmd/main.go b/pkg/login-validator/cmd/main.go index 3d399e5..b13c5a6 100644 --- a/pkg/login-validator/cmd/main.go +++ b/pkg/login-validator/cmd/main.go @@ -100,7 +100,7 @@ func main() { log.Println("Registering handlers...") mux := http.NewServeMux() - mux.Handle("/login", lc) + mux.Handle("/login", &lc) mux.HandleFunc("/logout", logout) mux.HandleFunc("/passwd", passwd) http.HandleFunc("/", mux.ServeHTTP) @@ -119,6 +119,8 @@ mloop: log.Println("Reloading students files...") if lc.students, err = readStudentsList(studentsFile); err != nil { log.Println("Error during students.csv reload:", err) + } else { + log.Printf("Students reloaded: %d students allowed to login", len(lc.students)) } case syscall.SIGTERM, syscall.SIGINT: break mloop From 3055d4d02aa2ee583fba3aaf69b01e9bf0361fcd Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 17:54:39 +0100 Subject: [PATCH 02/13] server: Update login-validator image --- server.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.yml b/server.yml index 0793a7e..a89af80 100644 --- a/server.yml +++ b/server.yml @@ -153,7 +153,7 @@ services: command: ["/bin/arp-spoofer", "-iface=br-ext", "-ip-spoof=172.17.0.15"] - name: login-validator - image: nemunaire/adlin-login-validator:a74d2aa0973c54ee79fb71211327f67e60537192 + image: nemunaire/adlin-login-validator:277f96ed66533497364804a551c91f1ffeafd40d # command: ["/bin/login-validator", "-bind=:8081", "-auth=ldap", "-ldaphost=auth.cri.epita.net", "-ldapport=636", "-ldaptls", "-ldapbase=dc=epita,dc=net"] command: ["/bin/login-validator", "-bind=:8081", "-auth=krb5", "-krb5realm=CRI.EPITA.FR"] # command: ["/bin/login-validator", "-bind=:8081", "-auth=fwd", "-fwduri=https://adlin.nemunai.re/auth"] From 77acf552714386281be10056e9b155fadce01aab Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 18:58:13 +0100 Subject: [PATCH 03/13] login-app: Able to change keymap --- pkg/login-app/Dockerfile | 4 +++ pkg/login-app/cmd/dialog-login.go | 3 ++ pkg/login-app/cmd/dialog-settings.go | 42 ++++++++++++++++++++++++++++ pkg/login-app/cmd/dialog-uefi.go | 2 +- 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 pkg/login-app/cmd/dialog-settings.go diff --git a/pkg/login-app/Dockerfile b/pkg/login-app/Dockerfile index e4c60e6..9172908 100644 --- a/pkg/login-app/Dockerfile +++ b/pkg/login-app/Dockerfile @@ -11,6 +11,8 @@ ADD cmd ./ RUN go build -v -ldflags="-s -w" -tags netgo -o login-app +RUN apk add --no-cache kbd + FROM alpine:3.17 MAINTAINER Pierre-Olivier Mercier @@ -21,5 +23,7 @@ COPY --from=gobuild /go/src/login-app/login-app /bin/login-app COPY --from=gobuild /usr/share/udhcpc/default.script /usr/share/udhcpc/default.script COPY --from=gobuild /etc/terminfo/l/linux /etc/terminfo/l/linux COPY --from=gobuild /usr/share/terminfo/l/linux /usr/share/terminfo/l/linux +COPY --from=gobuild /usr/bin/loadkeys /usr/bin/loadkeys +COPY --from=gobuild /usr/share/keymaps/xkb/fr.map.gz /usr/share/keymaps/xkb/us.map.gz /usr/share/keymaps/xkb/fr-bepo.map.gz /usr/share/keymaps/xkb/us-colemak.map.gz /usr/share/keymaps/xkb/ ENTRYPOINT ["/bin/login-app"] diff --git a/pkg/login-app/cmd/dialog-login.go b/pkg/login-app/cmd/dialog-login.go index d6138c1..c4747bd 100644 --- a/pkg/login-app/cmd/dialog-login.go +++ b/pkg/login-app/cmd/dialog-login.go @@ -14,6 +14,9 @@ func CreateLoginDialog(app *tview.Application, next func(username, password stri form.GetFormItemByLabel("Login").(*tview.InputField).GetText(), form.GetFormItemByLabel("Password").(*tview.InputField).GetText(), ) + }). + AddButton("Settings...", func() { + goToSettings(app) }) form.SetBorder(true).SetTitle(" SRS Adlin - Login ") diff --git a/pkg/login-app/cmd/dialog-settings.go b/pkg/login-app/cmd/dialog-settings.go new file mode 100644 index 0000000..54bc619 --- /dev/null +++ b/pkg/login-app/cmd/dialog-settings.go @@ -0,0 +1,42 @@ +package main + +import ( + "os/exec" + + "github.com/rivo/tview" +) + +var LastKeymap = 0 + +func goToSettings(app *tview.Application) { + var form *tview.Form + form = tview.NewForm(). + AddDropDown("Keymap", []string{"QWERTY us", "AZERTY fr", "BÉPO", "Colemak us"}, LastKeymap, nil). + AddButton(" Save config ", func() { + if kbmap, _ := form.GetFormItemByLabel("Keymap").(*tview.DropDown).GetCurrentOption(); LastKeymap != kbmap { + file := "/usr/share/keymaps/xkb/" + + switch kbmap { + case 1: + file += "fr.map.gz" + case 2: + file += "fr-bepo.map.gz" + case 3: + file += "us-colemak.map.gz" + default: + file += "us.map.gz" + } + + exec.Command("/usr/bin/loadkeys", file).Run() + LastKeymap = kbmap + } + askLogin(app) + }) + form.GetFormItemByLabel("Keymap").(*tview.DropDown).SetFieldWidth(25) + form.SetBorder(true).SetTitle(" SRS Adlin - Settings ") + + app.SetRoot(modal(form, 25, 7), true) + app.SetFocus(form) + + return +} diff --git a/pkg/login-app/cmd/dialog-uefi.go b/pkg/login-app/cmd/dialog-uefi.go index 3ec4528..9d97e25 100644 --- a/pkg/login-app/cmd/dialog-uefi.go +++ b/pkg/login-app/cmd/dialog-uefi.go @@ -6,7 +6,7 @@ import ( func CreateUEFIDialog(app *tview.Application, next func()) { modal := tview.NewModal(). - SetText("Not UEFI boot\nYou should reboot, enter UEFI Setup (F2) and disable Legacy boot"). + SetText("This machine does not boot in UEFI mode!\nYou should reboot now, enter UEFI Setup (F2) and disable Legacy boot. Or choose another machine, that boot in UEFI."). AddButtons([]string{"Reboot", "Ignore"}). SetDoneFunc(func(buttonIndex int, buttonLabel string) { if buttonLabel == "Reboot" { From b648abd6aeafa4f042c711d3836640c507e7cad9 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 19:12:40 +0100 Subject: [PATCH 04/13] Prefer alpine stable --- pkg/challenge/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/challenge/Dockerfile b/pkg/challenge/Dockerfile index df82476..7d000f9 100644 --- a/pkg/challenge/Dockerfile +++ b/pkg/challenge/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:edge AS mirror +FROM alpine:3.17 AS mirror RUN mkdir -p /out/etc/apk/ && \ cp /etc/apk/repositories /out/etc/apk/ && \ From f1378460af82a0c4aa576bd9b75484f9faeeb8e3 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 19:15:36 +0100 Subject: [PATCH 05/13] login: Update login-app image --- login.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/login.yml b/login.yml index 4281c04..eaa47bb 100644 --- a/login.yml +++ b/login.yml @@ -1,6 +1,6 @@ init: - busybox - - nemunaire/adlin-login-app:4862e66e6cbd283342632117f6be0bcf88db3d17 + - nemunaire/adlin-login-app:8b08f3038128bacbbc939fc7a7a460723d80c3d4 files: - path: /etc/ssl/certs/ISRG_Root_X1.pem From 79186867785b12f3c2a57ffc9ef2f9ddbd786ca2 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 19:15:50 +0100 Subject: [PATCH 06/13] challenge: Update challenge image --- challenge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge.yml b/challenge.yml index f112706..bfe9761 100644 --- a/challenge.yml +++ b/challenge.yml @@ -1,5 +1,5 @@ init: - - nemunaire/challenge:64dfdf00665351139e74647ab57b12008a7ac87b + - nemunaire/challenge:5bbab9f96b87b4d85745d05899e029723e6b2217 - nemunaire/adlin-shadow-up:b368191dfd79645f3eca099a00bef8dfcdb7a2e9 files: From 66e6697b4c7075a84ec4571abef5a1249de06729 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 19:31:45 +0100 Subject: [PATCH 07/13] challenge: busybox applets are already installed. This fix overriding of good tools --- pkg/challenge/init | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/challenge/init b/pkg/challenge/init index 73fa17d..5036537 100755 --- a/pkg/challenge/init +++ b/pkg/challenge/init @@ -3,7 +3,6 @@ mount -t proc proc /proc mount -t sysfs sysfs /sys -/bin/busybox --install -s ln -sf ssmtp /usr/sbin/sendmail mdev -s From a35291186804eb89ce102c04baa856fd8fc27bb9 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 19:33:00 +0100 Subject: [PATCH 08/13] challenge: Update challenge image --- challenge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge.yml b/challenge.yml index bfe9761..22abb8c 100644 --- a/challenge.yml +++ b/challenge.yml @@ -1,5 +1,5 @@ init: - - nemunaire/challenge:5bbab9f96b87b4d85745d05899e029723e6b2217 + - nemunaire/challenge:ccb988ea72b7b65e6ffa272528049a8fb2298850 - nemunaire/adlin-shadow-up:b368191dfd79645f3eca099a00bef8dfcdb7a2e9 files: From cdcf87f8794988055ee0c2b5b32b51688e491e0a Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 20:03:49 +0100 Subject: [PATCH 09/13] shadow-up: Don't polute everithing... --- pkg/challenge/init | 6 +++--- pkg/shadow-up/Dockerfile | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/challenge/init b/pkg/challenge/init index 5036537..960a92d 100755 --- a/pkg/challenge/init +++ b/pkg/challenge/init @@ -3,6 +3,9 @@ mount -t proc proc /proc mount -t sysfs sysfs /sys +rm /dev/null; mknod -m 0666 /dev/null c 1 3 +rm /dev/zero; mknod -m 0666 /dev/zero c 1 5 + ln -sf ssmtp /usr/sbin/sendmail mdev -s @@ -63,9 +66,6 @@ done /usr/bin/setsid /bin/shadow-up > /dev/null 2> /var/log/sup.log & # Prepare bonus 2 -rm /dev/null; mknod -m 0666 /dev/null c 1 3 -rm /dev/zero; mknod -m 0666 /dev/zero c 1 5 - mkdir -p /mnt for l in a b c d e f g h i j k l m n o p q r s t u v w x y z zz; do diff --git a/pkg/shadow-up/Dockerfile b/pkg/shadow-up/Dockerfile index 5814f81..7856e0f 100644 --- a/pkg/shadow-up/Dockerfile +++ b/pkg/shadow-up/Dockerfile @@ -12,7 +12,7 @@ ADD cmd ./ RUN go build -v -ldflags="-s -w" -tags netgo -o shadow-up -FROM alpine:3.17 +FROM scratch MAINTAINER Pierre-Olivier Mercier COPY --from=gobuild /go/src/shadow-up/shadow-up /bin/shadow-up From 3af10973f3886b779ba5656b0787c081cc1ceaf4 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 20:06:17 +0100 Subject: [PATCH 10/13] Update challenge images --- challenge.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/challenge.yml b/challenge.yml index 22abb8c..34a3e3e 100644 --- a/challenge.yml +++ b/challenge.yml @@ -1,6 +1,6 @@ init: - - nemunaire/challenge:ccb988ea72b7b65e6ffa272528049a8fb2298850 - - nemunaire/adlin-shadow-up:b368191dfd79645f3eca099a00bef8dfcdb7a2e9 + - nemunaire/challenge:1e2a63d30a2817dcec192624b418832c8d18e0da + - nemunaire/adlin-shadow-up:c5e6c7f7afff788f6429a0ad1a7be982a47d5410 files: - path: etc/motd From ff9e5d22fac2d38aedd40d2cd53561e28386a3c4 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 20:09:30 +0100 Subject: [PATCH 11/13] challenge: Include less to have colors in man pages --- pkg/challenge/Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/challenge/Dockerfile b/pkg/challenge/Dockerfile index 7d000f9..0c7752c 100644 --- a/pkg/challenge/Dockerfile +++ b/pkg/challenge/Dockerfile @@ -34,6 +34,7 @@ RUN apk add --no-cache --initdb -p /out \ kbd-bkeymaps \ kbd-doc \ kbd-vlock \ + less \ losetup \ mandoc \ man-pages \ From 67abbb5b858ff2f4149d549a5e2009ff9c62a062 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 20:10:44 +0100 Subject: [PATCH 12/13] Update challenge image --- challenge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge.yml b/challenge.yml index 34a3e3e..41feb47 100644 --- a/challenge.yml +++ b/challenge.yml @@ -1,5 +1,5 @@ init: - - nemunaire/challenge:1e2a63d30a2817dcec192624b418832c8d18e0da + - nemunaire/challenge:83269c87e08c786a8f865882bc34bd38f8d8b120 - nemunaire/adlin-shadow-up:c5e6c7f7afff788f6429a0ad1a7be982a47d5410 files: From b18ea19e032f49724b2d1da872d4883bab9f8bf9 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 20 Feb 2023 20:17:21 +0100 Subject: [PATCH 13/13] challenge: Inclure a fake history and a basic profile --- challenge.yml | 19 +++++++++++++++++++ subject/adlin.6.md | 12 ++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/challenge.yml b/challenge.yml index 41feb47..293d931 100644 --- a/challenge.yml +++ b/challenge.yml @@ -72,6 +72,25 @@ files: - path: init source: pkg/challenge/init mode: "0755" + - path: root/.ash_history + contents: | + cat my_ip + ip a + man 6 adlin + mode: "0644" + - path: etc/profile.d/cmd-colors.sh + contents: | + alias ip="ip -c" + alias ls="ls -c" + + export LESS_TERMCAP_mb=$(printf "\e[1;37m") + export LESS_TERMCAP_md=$(printf "\e[1;36m") + export LESS_TERMCAP_me=$(printf "\e[0m") + export LESS_TERMCAP_se=$(printf "\e[0m") + export LESS_TERMCAP_so=$(printf "\e[1;47;30m") + export LESS_TERMCAP_ue=$(printf "\e[0m") + export LESS_TERMCAP_us=$(printf "\e[1;32m") + mode: "0644" - path: sbin/fakelogin contents: | #!/bin/sh diff --git a/subject/adlin.6.md b/subject/adlin.6.md index 9279b6a..6c5b7dc 100644 --- a/subject/adlin.6.md +++ b/subject/adlin.6.md @@ -201,27 +201,27 @@ aux prochains TP. # HISTORIQUE -2023 - Sixième édition du cours à destination des SRS 2024. +*2023* - Sixième édition du cours à destination des SRS 2024. Immersion encore plus grande dans le SI ? -2022 - Cinquième édition du cours à destination des SRS 2023. +*2022* - Cinquième édition du cours à destination des SRS 2023. Travail sur le réalisme des exercices. -2021 - Quatrième édition du cours à destination des SRS 2022. +*2021* - Quatrième édition du cours à destination des SRS 2022. Introduction de références à Matrix. -2020 - Troisième édition du cours à destination des SRS 2021. +*2020* - Troisième édition du cours à destination des SRS 2021. Des étudiants avec involontairement de bonnes idées d'exercices supplémentaires. -2019 - Deuxième édition du cours à destination des SRS 2020. +*2019* - Deuxième édition du cours à destination des SRS 2020. Le chaos s'est un peu trop invité. -2018 - Première édition du cours à destination des SRS 2019. +*2018* - Première édition du cours à destination des SRS 2019. Oops la salle machine...