Add new iptables handle task
[rahunas] / src / rh-config.h
1 /**
2  * RahuNAS configuration header
3  * Author: Suriya Soutmun <darksolar@gmail.com>
4  * Date:   2008-11-26
5  */
6 #ifndef __RH_CONFIG_H 
7 #define __RH_CONFIG_H 
8
9 #include "../lcfg/lcfg_static.h"
10 #include "rh-server.h"
11
12 #define DEFAULT_LOG RAHUNAS_LOG_DIR "rahunas.log"
13 #define VSERVER_ID 99
14 #define IDLE_TIMEOUT 600
15 #define POLLING 60 
16 #define BANDWIDTH_SHAPE 0
17
18 #define XMLSERVICE_HOST "localhost"
19 #define XMLSERVICE_PORT 80
20 #define XMLSERVICE_URL  "/rahunas_service/xmlrpc_service.php"
21
22 #define CONFIG_FILE RAHUNAS_CONF_DIR "rahunas.conf"
23 #define DEFAULT_PID RAHUNAS_RUN_DIR "rahunasd.pid"
24 #define DB_NAME "rahunas"
25
26 struct rahunas_main_config {
27   char *conf_dir;
28   char *log_file;
29   char *dhcp;
30   int  bandwidth_shape;
31   int  bittorrent_download_max;
32   int  bittorrent_upload_max;
33   int  polling_interval;
34 };
35
36 struct rahunas_vserver_config {
37   char *vserver_name;
38   int  vserver_id;
39   char *dev_external;
40   char *dev_internal;
41   char *vlan;
42   char *vlan_raw_dev_external;
43   char *vlan_raw_dev_internal;
44   char *bridge;
45   char *masquerade;
46   char *ignore_mac;
47   char *vserver_ip;
48   char *vserver_fqdn;
49   char *vserver_ports_allow;
50   char *vserver_ports_intercept;
51   char *clients;
52   char *excluded;
53   int  idle_timeout;
54   char *dns;
55   char *ssh;
56   char *proxy;
57   char *proxy_host;
58   char *proxy_port;
59   char *bittorrent;
60   char *bittorrent_allow;
61   char *radius_host;
62   char *radius_secret;
63   char *radius_encrypt;
64   char *radius_auth_port;
65   char *radius_account_port;
66   char *nas_identifier;
67   char *nas_port;
68   char *nas_login_title;
69   char *nas_default_redirect;
70   char *nas_default_language;
71   char *nas_weblogin_template;
72 };
73
74 union rahunas_config {
75   struct rahunas_main_config rh_main;
76   struct rahunas_vserver_config rh_vserver;
77 };
78
79 enum config_type {
80   MAIN,
81   VSERVER
82 };
83
84 int get_config(const char *cfg_file, union rahunas_config *config);
85 int get_value(const char *cfg_file, const char *key, void **data, size_t *len);
86 int get_vservers_config(const char *conf_dir, struct main_server *server);
87 int cleanup_vserver_config(struct rahunas_vserver_config *config);
88 int cleanup_mainserver_config(struct rahunas_main_config *config);
89 enum lcfg_status rahunas_visitor(const char *key, void *data, size_t size, 
90                                  void *user_data);
91 #endif // __RH_CONFIG_H