nis_support.cc
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9/*
10 * Written By Rabellino Sergio (rabellino@di.unito.it) For Solaris 2.x
11 */
12#include "squid.h"
13
14#include <cstdlib>
15#include <cstring>
16#if HAVE_SYSLOG_H
17#include <syslog.h>
18#endif
19#if HAVE_SYS_TYPES_H
20#include <sys/types.h>
21#endif
22#if HAVE_RPC_RPC_H
23#include <rpc/rpc.h>
24#endif
25
26#if _SQUID_FREEBSD_ && !defined(BOOL_DEFINED)
27// BUG: FreeBSD rpcsvc/yp_* headers try to redefine bool unless we match their non-standard hack.
28#define BOOL_DEFINED
29#endif
30
31#if HAVE_RPCSVC_YPCLNT_H
32#include <rpcsvc/ypclnt.h>
33#endif
34#if HAVE_RPCSVC_YP_PROT_H
35#include <rpcsvc/yp_prot.h>
36#endif
37
39
40#define NO_YPERR 0 /* There is no error */
41
42char *
43get_nis_password(char *user, char *nisdomain, char *nismap)
44{
45 static char *val = nullptr;
46 char *password = nullptr;
47 int vallen, res;
48
49#ifdef DEBUG
50 printf("Domain is set to %s\n", nisdomain);
51 printf("YP Map is set to %s\n", nismap);
52#endif
53
54 /* Free last entry */
55 if (val) {
56 free(val);
57 val = nullptr;
58 }
59
60 /* Get NIS entry */
61 res = yp_match(nisdomain, nismap, user, strlen(user), &val, &vallen);
62
63 switch (res) {
64 case NO_YPERR:
65 /* username = */
66 (void) strtok(val, ":");
67 password = strtok(nullptr, ",:");
68 return password;
69 case YPERR_YPBIND:
70 syslog(LOG_ERR, "Squid Authentication through ypbind failure: can't communicate with ypbind");
71 return nullptr;
72 case YPERR_KEY: /* No such key in map */
73 return nullptr;
74 default:
75 return nullptr;
76 }
77}
78
char * get_nis_password(char *user, char *nisdomain, char *nismap)
Definition: nis_support.cc:43
#define NO_YPERR
Definition: nis_support.cc:40

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors