basic_nis_auth.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 * Adapted By Rabellino Sergio (rabellino@di.unito.it) For Solaris 2.x
11 * From NCSA Authentication module
12 */
13
14#include "squid.h"
16#include "hash.h"
17#include "rfc1738.h"
18#include "util.h"
19
20#include <cstdlib>
21#include <cstring>
22#if HAVE_UNISTD_H
23#include <unistd.h>
24#endif
25#if HAVE_SYS_TYPES_H
26#include <sys/types.h>
27#endif
28#if HAVE_SYS_STAT_H
29#include <sys/stat.h>
30#endif
31#if HAVE_CRYPT_H
32#include <crypt.h>
33#endif
34
35int
36main(int argc, char **argv)
37{
38 char buf[256];
39 char *nisdomain;
40 char *nismap;
41 char *user, *passwd, *p;
42 char *nispasswd;
43
44 setbuf(stdout, nullptr);
45
46 if (argc != 3) {
47 fprintf(stderr, "Usage: basic_nis_auth <domainname> <nis map for password>\n");
48 fprintf(stderr, "\n");
49 fprintf(stderr, "Example basic_nis_auth mydomain.com passwd.byname\n");
50 exit(EXIT_FAILURE);
51 }
52 nisdomain = argv[1];
53 nismap = argv[2];
54
55 while (fgets(buf, 256, stdin) != nullptr) {
56 if ((p = strchr(buf, '\n')) != nullptr)
57 *p = '\0'; /* strip \n */
58
59 if ((user = strtok(buf, " ")) == nullptr) {
60 printf("ERR\n");
61 continue;
62 }
63 if ((passwd = strtok(nullptr, "")) == nullptr) {
64 printf("ERR\n");
65 continue;
66 }
67
68 rfc1738_unescape(user);
69 rfc1738_unescape(passwd);
70
71 nispasswd = get_nis_password(user, nisdomain, nismap);
72
73 if (!nispasswd) {
74 /* User does not exist */
75 printf("ERR No such user\n");
76 continue;
77 }
78
79#if HAVE_CRYPT
80 char *crypted = nullptr;
81 if ((crypted = crypt(passwd, nispasswd)) && strcmp(nispasswd, crypted) == 0) {
82 /* All ok !, thanks... */
83 printf("OK\n");
84 } else {
85 /* Password incorrect */
86 printf("ERR Wrong password\n");
87 }
88#else
89 /* Password incorrect */
90 printf("BH message=\"Missing crypto capability\"\n");
91#endif
92 }
93 return EXIT_SUCCESS;
94}
95
int main(int argc, char **argv)
char * crypt(const char *wort, const char *salt)
Definition: encrypt.c:240
char * get_nis_password(char *user, char *nisdomain, char *nismap)
Definition: nis_support.cc:43
void rfc1738_unescape(char *url)
Definition: rfc1738.c:146

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors