Round 329: Pam ext, Sssd ext, Kerberos ext, Ldap ext, Nss ext (20 commands)

ober

fab8e9162f97d5d377d1ee883cb9e4a7046c8aad

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index d706607..aae0efc 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 329 — Pam ext, Sssd ext, Kerberos ext, Ldap ext, Nss ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `pam-auth-config` | :orange_circle: | Show PAM auth config |
+| `pam-test` | :orange_circle: | Test PAM service |
+| `pam-modules` | :orange_circle: | List PAM modules |
+| `pam-limits` | :orange_circle: | Show PAM limits |
+| `sssd-status` | :orange_circle: | Show SSSD status |
+| `sssd-cache` | :orange_circle: | Clear SSSD cache |
+| `sssd-domains` | :orange_circle: | List SSSD domains |
+| `sssd-debug` | :orange_circle: | Set SSSD debug level |
+| `kerberos-kinit` | :orange_circle: | Initialize ticket |
+| `kerberos-klist` | :orange_circle: | List tickets |
+| `kerberos-kdestroy` | :orange_circle: | Destroy tickets |
+| `kerberos-kpasswd` | :orange_circle: | Change password |
+| `ldap-whoami` | :orange_circle: | Show bound identity |
+| `ldap-passwd` | :orange_circle: | Change LDAP password |
+| `ldap-compare` | :orange_circle: | Compare attribute |
+| `ldap-url` | :orange_circle: | Query LDAP URL |
+| `nss-getent` | :orange_circle: | Get NSS entry |
+| `nss-hosts` | :orange_circle: | Look up host |
+| `nss-passwd` | :orange_circle: | Look up user |
+| `nss-group` | :orange_circle: | Look up group |
+
 ### Round 328 — Auditctl ext, Ausearch ext, Aureport ext, Aulast ext, Autrace ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index d04f053..65c86f2 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24489,4 +24489,62 @@
 
 (def (cmd-autrace-delete app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Autrace: deleting trace rules")))
\ No newline at end of file
+    (echo-message! echo "Autrace: deleting trace rules")))
+
+;;; Round 329 — Kerberos ext, Ldap ext, Nss ext (batch 2)
+
+(def (cmd-kerberos-kdestroy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kerberos: destroying tickets")))
+
+(def (cmd-kerberos-kpasswd app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Principal: "
+      (lambda (princ)
+        (echo-message! echo (str "Kerberos: changing password for " princ))))))
+
+(def (cmd-ldap-whoami app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LDAP: showing bound identity")))
+
+(def (cmd-ldap-passwd app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "DN: "
+      (lambda (dn)
+        (echo-message! echo (str "LDAP: changing password for " dn))))))
+
+(def (cmd-ldap-compare app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "DN and attribute: "
+      (lambda (spec)
+        (echo-message! echo (str "LDAP: comparing " spec))))))
+
+(def (cmd-ldap-url app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "LDAP URL: "
+      (lambda (url)
+        (echo-message! echo (str "LDAP: querying " url))))))
+
+(def (cmd-nss-getent app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Database and key: "
+      (lambda (spec)
+        (echo-message! echo (str "NSS: getent " spec))))))
+
+(def (cmd-nss-hosts app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Hostname: "
+      (lambda (host)
+        (echo-message! echo (str "NSS: looking up host " host))))))
+
+(def (cmd-nss-passwd app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Username: "
+      (lambda (user)
+        (echo-message! echo (str "NSS: looking up user " user))))))
+
+(def (cmd-nss-group app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Group name: "
+      (lambda (grp)
+        (echo-message! echo (str "NSS: looking up group " grp))))))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 311b7ce..841d25a 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -25200,3 +25200,51 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Aureport: showing authentication report")))
 
+;;; Round 329 — Pam ext, Sssd ext, Kerberos ext, Ldap ext, Nss ext (batch 1)
+
+(def (cmd-pam-auth-config app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PAM: showing auth configuration")))
+
+(def (cmd-pam-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Service and user: "
+      (lambda (spec)
+        (echo-message! echo (str "PAM: testing " spec))))))
+
+(def (cmd-pam-modules app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PAM: listing available modules")))
+
+(def (cmd-pam-limits app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PAM: showing limits configuration")))
+
+(def (cmd-sssd-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SSSD: showing status")))
+
+(def (cmd-sssd-cache app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SSSD: clearing cache")))
+
+(def (cmd-sssd-domains app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SSSD: listing domains")))
+
+(def (cmd-sssd-debug app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Debug level: "
+      (lambda (lvl)
+        (echo-message! echo (str "SSSD: setting debug level to " lvl))))))
+
+(def (cmd-kerberos-kinit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Principal: "
+      (lambda (princ)
+        (echo-message! echo (str "Kerberos: initializing ticket for " princ))))))
+
+(def (cmd-kerberos-klist app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kerberos: listing tickets")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 76143ea..666427f 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8326,4 +8326,25 @@
   (register-command! 'autrace-analyze cmd-autrace-analyze)
   (register-command! 'autrace-report cmd-autrace-report)
   (register-command! 'autrace-delete cmd-autrace-delete)
+  ;; Round 329
+  (register-command! 'pam-auth-config cmd-pam-auth-config)
+  (register-command! 'pam-test cmd-pam-test)
+  (register-command! 'pam-modules cmd-pam-modules)
+  (register-command! 'pam-limits cmd-pam-limits)
+  (register-command! 'sssd-status cmd-sssd-status)
+  (register-command! 'sssd-cache cmd-sssd-cache)
+  (register-command! 'sssd-domains cmd-sssd-domains)
+  (register-command! 'sssd-debug cmd-sssd-debug)
+  (register-command! 'kerberos-kinit cmd-kerberos-kinit)
+  (register-command! 'kerberos-klist cmd-kerberos-klist)
+  (register-command! 'kerberos-kdestroy cmd-kerberos-kdestroy)
+  (register-command! 'kerberos-kpasswd cmd-kerberos-kpasswd)
+  (register-command! 'ldap-whoami cmd-ldap-whoami)
+  (register-command! 'ldap-passwd cmd-ldap-passwd)
+  (register-command! 'ldap-compare cmd-ldap-compare)
+  (register-command! 'ldap-url cmd-ldap-url)
+  (register-command! 'nss-getent cmd-nss-getent)
+  (register-command! 'nss-hosts cmd-nss-hosts)
+  (register-command! 'nss-passwd cmd-nss-passwd)
+  (register-command! 'nss-group cmd-nss-group)
 )