source: squid-ssl/trunk/fuentes/helpers/basic_auth/fake/fake.cc @ 5495

Last change on this file since 5495 was 5495, checked in by Juanma, 2 years ago

Initial release

File size: 3.5 KB
Line 
1/*
2 * Copyright (C) 1996-2015 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 * Copyright (c) 2009-2014, Treehouse Networks Ltd. New Zealand
11 * All rights reserved.
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 *
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
19 *
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
36 */
37
38/*
39 * Fake Basic Authentication program for Squid.
40 *
41 * This code gets the user details and returns OK.
42 * It is intended for testing use and as a base for further implementation.
43 */
44
45#include "squid.h"
46#include "helpers/defines.h"
47
48#include <cstring>
49
50/**
51 * options:
52 * -d enable debugging.
53 * -h interface help.
54 */
55char *program_name = NULL;
56
57static void
58usage(void)
59{
60    fprintf(stderr,
61            "Usage: %s [-d] [-v] [-h]\n"
62            " -d  enable debugging.\n"
63            " -h  this message\n\n",
64            program_name);
65}
66
67static void
68process_options(int argc, char *argv[])
69{
70    int opt;
71
72    opterr = 0;
73    while (-1 != (opt = getopt(argc, argv, "hd"))) {
74        switch (opt) {
75        case 'd':
76            debug_enabled = 1;
77            break;
78        case 'h':
79            usage();
80            exit(0);
81        default:
82            fprintf(stderr, "%s: FATAL: unknown option: -%c. Exiting\n", program_name, opt);
83            usage();
84            exit(1);
85        }
86    }
87}
88
89int
90main(int argc, char *argv[])
91{
92    char buf[HELPER_INPUT_BUFFER];
93    int buflen = 0;
94
95    setbuf(stdout, NULL);
96    setbuf(stderr, NULL);
97
98    program_name = argv[0];
99
100    process_options(argc, argv);
101
102    debug("%s " VERSION " " SQUID_BUILD_INFO " starting up...\n", program_name);
103
104    while (fgets(buf, HELPER_INPUT_BUFFER, stdin) != NULL) {
105        char *p;
106
107        if ((p = strchr(buf, '\n')) != NULL) {
108            *p = '\0';      /* strip \n */
109            buflen = p - buf;   /* length is known already */
110        } else
111            buflen = strlen(buf);   /* keep this so we only scan the buffer for \0 once per loop */
112
113        debug("Got %d bytes '%s' from Squid\n", buflen, buf);
114
115        /* send 'OK' result back to Squid */
116        SEND_OK("");
117    }
118    debug("%s " VERSION " " SQUID_BUILD_INFO " shutting down...\n", program_name);
119    exit(0);
120}
121
Note: See TracBrowser for help on using the repository browser.