summaryrefslogtreecommitdiff
path: root/proto/server/func_handlerequest.go.sh
diff options
context:
space:
mode:
Diffstat (limited to 'proto/server/func_handlerequest.go.sh')
-rwxr-xr-xproto/server/func_handlerequest.go.sh120
1 files changed, 0 insertions, 120 deletions
diff --git a/proto/server/func_handlerequest.go.sh b/proto/server/func_handlerequest.go.sh
deleted file mode 100755
index ac61e76..0000000
--- a/proto/server/func_handlerequest.go.sh
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env bash
-# -*- Mode: Go -*-
-# Copyright (C) 2015 Luke Shumaker <lukeshu@sbcglobal.net>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 USA
-
-requests=$1
-printf '//'
-printf ' %q' "$0" "$@"
-printf '\n// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT\n\n'
-cat <<EOF | gofmt
-package nslcd_server
-
-import (
- "fmt"
- "io"
- "os"
- s "syscall"
-
- p "lukeshu.com/git/go/libnslcd.git/proto"
-)
-
-var sensitive = "<omitted-from-log>"
-
-// Handle a request to nslcd
-func HandleRequest(backend Backend, in io.Reader, out io.Writer, cred s.Ucred) (err error) {
- err = nil
- defer func() {
- if r := recover(); r != nil {
- switch r := r.(type) {
- case error:
- err = r
- default:
- panic(r)
- }
- }
- }()
- handleRequest(backend, in, out, cred)
- return
-}
-
-func handleRequest(backend Backend, in io.Reader, out io.Writer, cred s.Ucred) {
- var version int32
- p.Read(in, &version)
- if version != p.NSLCD_VERSION {
- panic(p.NslcdError(fmt.Sprintf("Version mismatch: server=%#08x client=%#08x", p.NSLCD_VERSION, version)))
- }
- var action int32
- p.Read(in, &action)
-
- ch := make(chan interface{})
- switch action {
-$(
-while read -r request; do
- cat <<EOT
- case p.NSLCD_ACTION_${request^^}:
- var req p.Request_${request}
- p.Read(in, &req)
- $(
- case "$request" in
- PAM_Authentication)
- echo '_req := req'
- echo '_req.Password = sensitive'
- echo 'fmt.Fprintf(os.Stderr, "Request: %#v\n", _req)'
- ;;
- PAM_PwMod)
- echo '_req := req'
- echo 'if len(_req.OldPassword) > 0 {'
- echo ' _req.OldPassword = sensitive'
- echo '}'
- echo '_req.NewPassword = sensitive'
- echo 'fmt.Fprintf(os.Stderr, "Request: %#v\n", _req)'
- ;;
- PAM_UserMod)
- echo '_req := req'
- echo '_req.Password = sensitive'
- echo 'fmt.Fprintf(os.Stderr, "Request: %#v\n", _req)'
- ;;
- *)
- echo 'fmt.Fprintf(os.Stderr, "Request: %#v\n", req)'
- ;;
- esac
- )
- _ch := backend.${request}(cred, req)
- go func() {
- defer close(ch)
- for obj := range _ch {
- ch <- obj
- }
- }()
-EOT
-done < "$requests"
-)
- default:
- close(ch)
- panic(p.NslcdError(fmt.Sprintf("Unknown request action: %#08x", action)))
- }
- p.Write(out, p.NSLCD_VERSION)
- p.Write(out, action)
-
- for result := range ch {
- p.Write(out, p.NSLCD_RESULT_BEGIN)
- p.Write(out, result)
- }
- p.Write(out, p.NSLCD_RESULT_END)
-}
-EOF