
the acl.c code parsing a site-spec has been factored out into a new TU: hostspec. it was superior to the parsing code in upstream.c in that it properly deals with both ipv4 and ipv6. both upstream and acl now use the new code for parsing, and upstream also for checking for a match. acl.c still uses the old matching code as it has a lot of special case code for specifications containing a hostname, and in case such a spec is encountered, tries to do reverse name lookup to see if a numeric ip matches that spec. removing that code could break existing usecases, however since that was never implemented for upstream nobody will miss it there.
77 lines
2.2 KiB
C
77 lines
2.2 KiB
C
/* tinyproxy - A fast light-weight HTTP proxy
|
|
* Copyright (C) 1998 Steven Young <sdyoung@miranda.org>
|
|
* Copyright (C) 1999 Robert James Kaes <rjkaes@users.sourceforge.net>
|
|
* Copyright (C) 2009 Michael Adam <obnox@samba.org>
|
|
*
|
|
* This program 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 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program 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 this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
/*
|
|
* Routines for handling the list of upstream proxies.
|
|
*/
|
|
|
|
#ifndef _TINYPROXY_UPSTREAM_H_
|
|
#define _TINYPROXY_UPSTREAM_H_
|
|
|
|
#include "common.h"
|
|
#include "hostspec.h"
|
|
|
|
enum upstream_build_error {
|
|
UBE_SUCCESS = 0,
|
|
UBE_OOM,
|
|
UBE_USERLEN,
|
|
UBE_EDOMAIN,
|
|
UBE_INVHOST,
|
|
UBE_INVPARAMS,
|
|
UBE_NETMASK,
|
|
};
|
|
|
|
/*
|
|
* Even if upstream support is not compiled into tinyproxy, this
|
|
* structure still needs to be defined.
|
|
*/
|
|
typedef enum proxy_type {
|
|
PT_NONE = 0,
|
|
PT_HTTP,
|
|
PT_SOCKS4,
|
|
PT_SOCKS5
|
|
} proxy_type;
|
|
|
|
struct upstream {
|
|
struct upstream *next;
|
|
char *host;
|
|
union {
|
|
char *user;
|
|
char *authstr;
|
|
} ua;
|
|
char *pass;
|
|
int port;
|
|
struct hostspec target;
|
|
proxy_type type;
|
|
};
|
|
|
|
#ifdef UPSTREAM_SUPPORT
|
|
const char *proxy_type_name(proxy_type type);
|
|
extern enum upstream_build_error upstream_add (
|
|
const char *host, int port, char *domain,
|
|
const char *user, const char *pass,
|
|
proxy_type type, struct upstream **upstream_list);
|
|
extern struct upstream *upstream_get (char *host, struct upstream *up);
|
|
extern void free_upstream_list (struct upstream *up);
|
|
extern const char* upstream_build_error_string(enum upstream_build_error);
|
|
#endif /* UPSTREAM_SUPPORT */
|
|
|
|
#endif /* _TINYPROXY_UPSTREAM_H_ */
|