File: access.c

package info (click to toggle)
ffproxy 1.6-12
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 884 kB
  • sloc: ansic: 2,310; asm: 578; sh: 425; makefile: 91
file content (58 lines) | stat: -rw-r--r-- 1,541 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
 * ffproxy (c) 2002, 2003 Niklas Olmes <niklas@noxa.de>
 * http://faith.eu.org
 * 
 * $Id: access.c,v 2.0 2004/06/08 06:39:51 niklas Exp $
 * 
 * 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., 675
 * Mass Ave, Cambridge, MA 02139, USA.
 */

#include <stdio.h>
#include <string.h>

#include "req.h"
#include "dbs.h"
#include "print.h"
#include "dns.h"
#include "regex.h"
#include "access.h"

int
check_access(const struct clinfo * host)
{
	int             i;

	if (*host->ip != '\0') {
		i = 0;
		while (a_ip[i] != NULL)
			if (do_regex(host->ip, a_ip[i++]) == 0)
				return 0;

		if (*host->name != '\0') {
			i = 0;
			while (a_host[i] != NULL)
				if (do_regex(host->name, a_host[i++]) == 0)
					return 0;
		}
		i = 0;
		while (a_dyndns[i] != NULL)
			if (strcmp(host->ip, resolve_to_a(a_dyndns[i++])) == 0)
				return 0;
	}

	DEBUG(("check_access() => done, no access.  IP (%s) Host (%s)", host->ip, host->name));

	return 1;
}