The SILC Project

source navigation ]
identifier search ]
freetext search ]
file search ]

silc/silcd/serverconfig.h

  1 /*
  2 
  3   serverconfig.h
  4 
  5   Author: Giovanni Giacobbi <giovanni@giacobbi.net>
  6 
  7   Copyright (C) 1997 - 2002 Pekka Riikonen
  8 
  9   This program is free software; you can redistribute it and/or modify
 10   it under the terms of the GNU General Public License as published by
 11   the Free Software Foundation; either version 2 of the License, or
 12   (at your option) any later version.
 13 
 14   This program is distributed in the hope that it will be useful,
 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 17   GNU General Public License for more details.
 18 
 19 */
 20 
 21 #ifndef SERVERCONFIG_H
 22 #define SERVERCONFIG_H
 23 
 24 typedef struct SilcServerConfigCipherStruct {
 25   char *name;
 26   char *module;
 27   SilcUInt32 key_length;
 28   SilcUInt32 block_length;
 29   struct SilcServerConfigCipherStruct *next;
 30 } SilcServerConfigCipher;
 31 
 32 typedef struct SilcServerConfigHashStruct {
 33   char *name;
 34   char *module;
 35   SilcUInt32 block_length;
 36   SilcUInt32 digest_length;
 37   struct SilcServerConfigHashStruct *next;
 38 } SilcServerConfigHash;
 39 
 40 typedef struct SilcServerConfigHmacStruct {
 41   char *name;
 42   char *hash;
 43   SilcUInt32 mac_length;
 44   struct SilcServerConfigHmacStruct *next;
 45 } SilcServerConfigHmac;
 46 
 47 typedef struct SilcServerConfigPkcsStruct {
 48   char *name;
 49   struct SilcServerConfigPkcsStruct *next;
 50 } SilcServerConfigPkcs;
 51 
 52 typedef struct SilcServerConfigServerInfoInterfaceStruct {
 53   char *server_ip;
 54   SilcUInt16 port;
 55   struct SilcServerConfigServerInfoInterfaceStruct *next;
 56 } SilcServerConfigServerInfoInterface;
 57 
 58 typedef struct SilcServerConfigServerInfoStruct {
 59   char *server_name;
 60   SilcServerConfigServerInfoInterface *primary;
 61   SilcServerConfigServerInfoInterface *secondary;
 62   char *server_type;    /* E.g. "Test Server" */
 63   char *location;       /* geographic location */
 64   char *admin;          /* admin full name */
 65   char *email;          /* admin's email address */
 66   char *user;           /* userid the server should be runned at */
 67   char *group;          /* ditto, but about groupid */
 68   SilcPublicKey public_key;
 69   SilcPrivateKey private_key;
 70   char *motd_file;      /* path to text motd file (reading only) */
 71   char *pid_file;       /* path to the pid file (for reading and writing) */
 72 } SilcServerConfigServerInfo;
 73 
 74 typedef struct SilcServerConfigLoggingStruct {
 75   char *file;
 76   SilcUInt32 maxsize;
 77 } SilcServerConfigLogging;
 78 
 79 /* Connection parameters */
 80 typedef struct SilcServerConfigConnParams {
 81   struct SilcServerConfigConnParams *next;
 82   char *name;
 83   char *version_protocol;
 84   char *version_software;
 85   char *version_software_vendor;
 86   SilcUInt32 connections_max;
 87   SilcUInt32 connections_max_per_host;
 88   SilcUInt32 keepalive_secs;
 89   SilcUInt32 reconnect_count;
 90   SilcUInt32 reconnect_interval;
 91   SilcUInt32 reconnect_interval_max;
 92   SilcUInt32 key_exchange_rekey;
 93   SilcUInt32 qos_rate_limit;
 94   SilcUInt32 qos_bytes_limit;
 95   SilcUInt32 qos_limit_sec;
 96   SilcUInt32 qos_limit_usec;
 97   unsigned int key_exchange_pfs      : 1;
 98   unsigned int reconnect_keep_trying : 1;
 99   unsigned int anonymous             : 1;
100   unsigned int qos                   : 1;
101 } SilcServerConfigConnParams;
102 
103 /* Holds all client authentication data from config file */
104 typedef struct SilcServerConfigClientStruct {
105   char *host;
106   unsigned char *passphrase;
107   SilcUInt32 passphrase_len;
108   SilcHashTable publickeys;
109   SilcServerConfigConnParams *param;
110   struct SilcServerConfigClientStruct *next;
111 } SilcServerConfigClient;
112 
113 /* Holds all server's administrators authentication data from config file */
114 typedef struct SilcServerConfigAdminStruct {
115   char *host;
116   char *user;
117   char *nick;
118   unsigned char *passphrase;
119   SilcUInt32 passphrase_len;
120   SilcHashTable publickeys;
121   struct SilcServerConfigAdminStruct *next;
122 } SilcServerConfigAdmin;
123 
124 /* Holds all configured denied connections from config file */
125 typedef struct SilcServerConfigDenyStruct {
126   char *host;
127   char *reason;
128   struct SilcServerConfigDenyStruct *next;
129 } SilcServerConfigDeny;
130 
131 /* Holds all configured server connections from config file */
132 typedef struct SilcServerConfigServerStruct {
133   char *host;
134   unsigned char *passphrase;
135   SilcUInt32 passphrase_len;
136   SilcHashTable publickeys;
137   SilcServerConfigConnParams *param;
138   bool backup_router;
139   struct SilcServerConfigServerStruct *next;
140 } SilcServerConfigServer;
141 
142 /* Holds all configured router connections from config file */
143 typedef struct SilcServerConfigRouterStruct {
144   char *host;
145   unsigned char *passphrase;
146   SilcUInt32 passphrase_len;
147   SilcHashTable publickeys;
148   SilcUInt16 port;
149   SilcServerConfigConnParams *param;
150   bool initiator;
151   bool backup_router;
152   char *backup_replace_ip;
153   SilcUInt16 backup_replace_port;
154   bool backup_local;
155   struct SilcServerConfigRouterStruct *next;
156 } SilcServerConfigRouter;
157 
158 /* define the SilcServerConfig object */
159 typedef struct {
160   void *tmp;
161 
162   /* Reference count (when this reaches zero, config object is destroyed) */
163   SilcInt32 refcount;
164 
165   /* The General section */
166   char *module_path;
167   bool prefer_passphrase_auth;
168   bool require_reverse_lookup;
169   SilcUInt32 channel_rekey_secs;
170   SilcUInt32 key_exchange_timeout;
171   SilcUInt32 conn_auth_timeout;
172   SilcServerConfigConnParams param;
173   bool detach_disabled;
174   SilcUInt32 detach_timeout;
175   bool logging_timestamp;
176   bool logging_quick;
177   long logging_flushdelay;
178   char *debug_string;
179 
180   /* Other configuration sections */
181   SilcServerConfigCipher *cipher;
182   SilcServerConfigHash *hash;
183   SilcServerConfigHmac *hmac;
184   SilcServerConfigPkcs *pkcs;
185   SilcServerConfigLogging *logging_info;
186   SilcServerConfigLogging *logging_warnings;
187   SilcServerConfigLogging *logging_errors;
188   SilcServerConfigLogging *logging_fatals;
189   SilcServerConfigServerInfo *server_info;
190   SilcServerConfigConnParams *conn_params;
191   SilcServerConfigClient *clients;
192   SilcServerConfigAdmin *admins;
193   SilcServerConfigDeny *denied;
194   SilcServerConfigServer *servers;
195   SilcServerConfigRouter *routers;
196 } *SilcServerConfig;
197 
198 typedef struct {
199   SilcServerConfig config;
200   void *ref_ptr;
201 } SilcServerConfigRef;
202 
203 /* Prototypes */
204 
205 /* Basic config operations */
206 SilcServerConfig silc_server_config_alloc(const char *filename);
207 void silc_server_config_destroy(SilcServerConfig config);
208 void silc_server_config_ref(SilcServerConfigRef *ref, SilcServerConfig config,
209                             void *ref_ptr);
210 void silc_server_config_unref(SilcServerConfigRef *ref);
211 
212 /* Algorithm registering and reset functions */
213 bool silc_server_config_register_ciphers(SilcServer server);
214 bool silc_server_config_register_hashfuncs(SilcServer server);
215 bool silc_server_config_register_hmacs(SilcServer server);
216 bool silc_server_config_register_pkcs(SilcServer server);
217 void silc_server_config_setlogfiles(SilcServer server);
218 
219 /* Run-time config access functions */
220 SilcServerConfigClient *
221 silc_server_config_find_client(SilcServer server, char *host);
222 SilcServerConfigAdmin *
223 silc_server_config_find_admin(SilcServer server, char *host, char *user,
224                               char *nick);
225 SilcServerConfigDeny *
226 silc_server_config_find_denied(SilcServer server, char *host);
227 SilcServerConfigServer *
228 silc_server_config_find_server_conn(SilcServer server, char *host);
229 SilcServerConfigRouter *
230 silc_server_config_find_router_conn(SilcServer server, char *host, int port);
231 SilcServerConfigRouter *
232 silc_server_config_find_backup_conn(SilcServer server, char *host);
233 bool silc_server_config_is_primary_route(SilcServer server);
234 SilcServerConfigRouter *
235 silc_server_config_get_primary_router(SilcServer server);
236 SilcServerConfigRouter *
237 silc_server_config_get_backup_router(SilcServer server);
238 
239 #endif  /* !SERVERCONFIG_H */
240 

This page was automatically generated by the LXR engine.
Free-text search provided by Glimpse