diff options
Diffstat (limited to 'proto/server/func_handlerequest.go.sh')
-rwxr-xr-x | proto/server/func_handlerequest.go.sh | 120 |
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 |