#!/bin/sh -e # # 2020 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) # # This file is part of cdist. # # cdist is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # cdist 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 General Public License for more details. # # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # # This explorer looks for lines matching the server parameter in dma's auth.conf # and reports the login and server fields (password is cksummed) auth_conf=$("${__type_explorer}/auth_conf") test -r "${auth_conf}" || exit 0 if test -f "${__object}/parameter/server" then server=$(cat "${__object}/parameter/server") else server=$__object_id fi awk -F'\n' -v server="${server}" ' function getvalue(path) { getline < path close(path) return $0 } BEGIN { DP = "[: \t]" # copied from dma/conf.c parameter_dir = ENVIRON["__object"] "/parameter/" host_param = getvalue(parameter_dir "server") if (!host_param) host_param = ENVIRON["__object_id"] login_param = getvalue(parameter_dir "login") passwd_param = getvalue(parameter_dir "password") state = "absent" } /^#/ || /^$/ { # skip comments and empty lines next } { # parse line login = substr($0, 1, index($0, "|") - 1) if (!login) { login = $0 } # if no "|" found host = substr($0, length(login) + 2) if (match(host, DP)) { passwd = substr(host, RSTART) host = substr(host, 1, RSTART - 1) } else { passwd = "" } } host == host_param && login == login_param { if (passwd == passwd_param) state = "present" else state = "different_password" } END { print state } ' "${auth_conf}"