Destroy SSL connection properly.
[cascardo/rnetproxy.git] / usermap.c
1 /*
2 ** Copyright (C) 2006 Thadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
3 ** Copyright (C) 2009 Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
4 **  
5 ** This program is free software; you can redistribute it and/or modify
6 ** it under the terms of the GNU General Public License as published by
7 ** the Free Software Foundation; either version 2 of the License, or
8 ** (at your option) any later version.
9 **  
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 ** GNU General Public License for more details.
14 **  
15 ** You should have received a copy of the GNU General Public License
16 ** along with this program; if not, write to the Free Software
17 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 **  
19 */
20
21 #include <string.h>
22 #include <depot.h>
23 #include "usermap.h"
24
25 int
26 usermap_perm (char *user)
27 {
28   static DEPOT* allow_dp = NULL;
29   static DEPOT* deny_dp = NULL;
30   char* allow = NULL;
31   char* deny = NULL;
32   if (allow_dp == NULL)
33     {
34       allow_dp = dpopen ("/var/lib/popproxy/allow.db", DP_OREADER, 0);
35     }
36   if (deny_dp == NULL)
37     {
38       deny_dp = dpopen ("/var/lib/popproxy/deny.db", DP_OREADER, 0);
39     }
40   if (allow_dp)
41     allow = dpget (allow_dp, user, -1, 0, -1, NULL);
42   if (deny_dp)
43     deny = dpget (deny_dp, user, -1, 0, -1, NULL);
44   if (allow && deny)
45     {
46       free (allow);
47       free (deny);
48       return ACCESS_DENY;
49     }
50   if (allow)
51     {
52       free (allow);
53       return ACCESS_ALLOW;
54     }
55   if (deny)
56     {
57       free (deny);
58       return ACCESS_DENY;
59     }
60   if (!allow_dp)
61     return ACCESS_ALLOW;
62   return ACCESS_DENY;
63 }