Author: Johnny Mnemonic <johnny@themnemonic.org>
- Copyright (C) 1997 - 2002 Pekka Riikonen
+ Copyright (C) 1997 - 2002 Johnny Mnemonic
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
#ifndef SERVERCONFIG_H
#define SERVERCONFIG_H
-typedef struct SilcServerConfigSectionCipherStruct {
+typedef struct SilcServerConfigCipherStruct {
char *name;
char *module;
- uint32 key_length;
- uint32 block_length;
- struct SilcServerConfigSectionCipherStruct *next;
-} SilcServerConfigSectionCipher;
+ SilcUInt32 key_length;
+ SilcUInt32 block_length;
+ struct SilcServerConfigCipherStruct *next;
+} SilcServerConfigCipher;
-typedef struct SilcServerConfigSectionHashStruct {
+typedef struct SilcServerConfigHashStruct {
char *name;
char *module;
- uint32 block_length;
- uint32 digest_length;
- struct SilcServerConfigSectionHashStruct *next;
-} SilcServerConfigSectionHash;
+ SilcUInt32 block_length;
+ SilcUInt32 digest_length;
+ struct SilcServerConfigHashStruct *next;
+} SilcServerConfigHash;
-typedef struct SilcServerConfigSectionHmacStruct {
+typedef struct SilcServerConfigHmacStruct {
char *name;
char *hash;
- uint32 mac_length;
- struct SilcServerConfigSectionHmacStruct *next;
-} SilcServerConfigSectionHmac;
+ SilcUInt32 mac_length;
+ struct SilcServerConfigHmacStruct *next;
+} SilcServerConfigHmac;
-typedef struct SilcServerConfigSectionPkcsStruct {
+typedef struct SilcServerConfigPkcsStruct {
char *name;
- struct SilcServerConfigSectionPkcsStruct *next;
-} SilcServerConfigSectionPkcs;
+ struct SilcServerConfigPkcsStruct *next;
+} SilcServerConfigPkcs;
-typedef struct SilcServerConfigSectionServerInfoStruct {
+typedef struct SilcServerConfigServerInfoStruct {
char *server_name;
char *server_ip;
- uint16 port;
+ SilcUInt16 port;
char *server_type; /* E.g. "Test Server" */
char *location; /* geographic location */
char *admin; /* admin full name */
SilcPrivateKey private_key;
char *motd_file; /* path to text motd file (reading only) */
char *pid_file; /* path to the pid file (for reading and writing) */
-} SilcServerConfigSectionServerInfo;
+} SilcServerConfigServerInfo;
-typedef struct SilcServerConfigSectionLoggingStruct {
+typedef struct SilcServerConfigLoggingStruct {
char *file;
- uint32 maxsize;
-} SilcServerConfigSectionLogging;
-
-/* Holds all configured connection classes */
-/* typedef struct SilcServerConfigSectionClassStruct {
- uint32 class;
- uint32 ping_freq;
- uint32 connect_freq;
- uint32 max_links;
- struct SilcServerConfigSectionClassStruct *next;
-} SilcServerConfigSectionClass; */
+ SilcUInt32 maxsize;
+} SilcServerConfigLogging;
+
+/* Connection parameters */
+typedef struct SilcServerConfigConnParams {
+ char *name;
+ SilcUInt32 connections_max;
+ SilcUInt32 connections_max_per_host;
+ SilcUInt32 keepalive_secs;
+ SilcUInt32 reconnect_count;
+ SilcUInt32 reconnect_interval;
+ SilcUInt32 reconnect_interval_max;
+ bool reconnect_keep_trying;
+ SilcUInt32 key_exchange_rekey;
+ bool key_exchange_pfs;
+ struct SilcServerConfigConnParams *next;
+} SilcServerConfigConnParams;
/* Holds all client authentication data from config file */
-typedef struct SilcServerConfigSectionClientStruct {
+typedef struct SilcServerConfigClientStruct {
char *host;
- SilcAuthMethod auth_meth;
- void *auth_data;
- uint32 auth_data_len;
- uint16 port;
- uint32 class;
- struct SilcServerConfigSectionClientStruct *next;
-} SilcServerConfigSectionClient;
+ unsigned char *passphrase;
+ SilcUInt32 passphrase_len;
+ void *publickey;
+ SilcServerConfigConnParams *param;
+ struct SilcServerConfigClientStruct *next;
+} SilcServerConfigClient;
/* Holds all server's administrators authentication data from config file */
-typedef struct SilcServerConfigSectionAdminStruct {
+typedef struct SilcServerConfigAdminStruct {
char *host;
char *user;
char *nick;
- SilcAuthMethod auth_meth;
- void *auth_data;
- uint32 auth_data_len;
- struct SilcServerConfigSectionAdminStruct *next;
-} SilcServerConfigSectionAdmin;
+ unsigned char *passphrase;
+ SilcUInt32 passphrase_len;
+ void *publickey;
+ struct SilcServerConfigAdminStruct *next;
+} SilcServerConfigAdmin;
/* Holds all configured denied connections from config file */
-typedef struct SilcServerConfigSectionDenyStruct {
+typedef struct SilcServerConfigDenyStruct {
char *host;
- uint16 port;
char *reason;
- struct SilcServerConfigSectionDenyStruct *next;
-} SilcServerConfigSectionDeny;
+ struct SilcServerConfigDenyStruct *next;
+} SilcServerConfigDeny;
/* Holds all configured server connections from config file */
-typedef struct SilcServerConfigSectionServerStruct {
+typedef struct SilcServerConfigServerStruct {
char *host;
- SilcAuthMethod auth_meth;
- void *auth_data;
- uint32 auth_data_len;
- uint16 port;
+ unsigned char *passphrase;
+ SilcUInt32 passphrase_len;
+ void *publickey;
char *version;
- uint32 class;
+ SilcServerConfigConnParams *param;
bool backup_router;
- struct SilcServerConfigSectionServerStruct *next;
-} SilcServerConfigSectionServer;
+ struct SilcServerConfigServerStruct *next;
+} SilcServerConfigServer;
/* Holds all configured router connections from config file */
-typedef struct SilcServerConfigSectionRouterStruct {
+typedef struct SilcServerConfigRouterStruct {
char *host;
- SilcAuthMethod auth_meth;
- void *auth_data;
- uint32 auth_data_len;
- uint16 port;
+ unsigned char *passphrase;
+ SilcUInt32 passphrase_len;
+ void *publickey;
+ SilcUInt16 port;
char *version;
- uint32 class;
+ SilcServerConfigConnParams *param;
bool initiator;
bool backup_router;
char *backup_replace_ip;
- uint16 backup_replace_port;
+ SilcUInt16 backup_replace_port;
bool backup_local;
- struct SilcServerConfigSectionRouterStruct *next;
-} SilcServerConfigSectionRouter;
+ struct SilcServerConfigRouterStruct *next;
+} SilcServerConfigRouter;
/* define the SilcServerConfig object */
typedef struct {
void *tmp;
- char *module_path;
- SilcServerConfigSectionCipher *cipher;
- SilcServerConfigSectionHash *hash;
- SilcServerConfigSectionHmac *hmac;
- SilcServerConfigSectionPkcs *pkcs;
- SilcServerConfigSectionLogging *logging_info;
- SilcServerConfigSectionLogging *logging_warnings;
- SilcServerConfigSectionLogging *logging_errors;
- SilcServerConfigSectionLogging *logging_fatals;
- SilcServerConfigSectionServerInfo *server_info;
-/*SilcServerConfigSectionClass *conn_class; */
- SilcServerConfigSectionClient *clients;
- SilcServerConfigSectionAdmin *admins;
- SilcServerConfigSectionDeny *denied;
- SilcServerConfigSectionServer *servers;
- SilcServerConfigSectionRouter *routers;
+ /* The General section */
+ char *module_path;
+ bool prefer_passphrase_auth;
+ bool require_reverse_lookup;
+ SilcUInt32 channel_rekey_secs;
+ SilcUInt32 key_exchange_timeout;
+ SilcUInt32 conn_auth_timeout;
+ SilcServerConfigConnParams param;
+
+ /* Other configuration sections */
+ SilcServerConfigCipher *cipher;
+ SilcServerConfigHash *hash;
+ SilcServerConfigHmac *hmac;
+ SilcServerConfigPkcs *pkcs;
+ SilcServerConfigLogging *logging_info;
+ SilcServerConfigLogging *logging_warnings;
+ SilcServerConfigLogging *logging_errors;
+ SilcServerConfigLogging *logging_fatals;
+ SilcServerConfigServerInfo *server_info;
+ SilcServerConfigConnParams *conn_params;
+ SilcServerConfigClient *clients;
+ SilcServerConfigAdmin *admins;
+ SilcServerConfigDeny *denied;
+ SilcServerConfigServer *servers;
+ SilcServerConfigRouter *routers;
} *SilcServerConfig;
/* Prototypes */
-/* basic config operations */
+/* Basic config operations */
SilcServerConfig silc_server_config_alloc(char *filename);
void silc_server_config_destroy(SilcServerConfig config);
-/* algorithm registering and reset functions */
+/* Algorithm registering and reset functions */
bool silc_server_config_register_ciphers(SilcServer server);
bool silc_server_config_register_hashfuncs(SilcServer server);
bool silc_server_config_register_hmacs(SilcServer server);
bool silc_server_config_register_pkcs(SilcServer server);
-void silc_server_config_setlogfiles(SilcServerConfig config, SilcSchedule sked);
-
-/* run-time config access functions */
-SilcServerConfigSectionClient *
-silc_server_config_find_client(SilcServerConfig config, char *host, int port);
-
-SilcServerConfigSectionAdmin *
-silc_server_config_find_admin(SilcServerConfig config,
- char *host, char *user, char *nick);
-
-SilcServerConfigSectionDeny *
-silc_server_config_find_denied(SilcServerConfig config,
- char *host, uint16 port);
-
-/* Prototypes - OLD */
-SilcServerConfigSectionServer *
-silc_server_config_find_server_conn(SilcServerConfig config,
- char *host, int port);
-SilcServerConfigSectionRouter *
-silc_server_config_find_router_conn(SilcServerConfig config,
- char *host, int port);
-bool silc_server_config_is_primary_route(SilcServerConfig config);
-SilcServerConfigSectionRouter *
-silc_server_config_get_primary_router(SilcServerConfig config);
+void silc_server_config_setlogfiles(SilcServer server);
+
+/* Run-time config access functions */
+SilcServerConfigClient *
+silc_server_config_find_client(SilcServer server, char *host);
+SilcServerConfigAdmin *
+silc_server_config_find_admin(SilcServer server, char *host, char *user,
+ char *nick);
+SilcServerConfigDeny *
+silc_server_config_find_denied(SilcServer server, char *host);
+SilcServerConfigServer *
+silc_server_config_find_server_conn(SilcServer server, char *host);
+SilcServerConfigRouter *
+silc_server_config_find_router_conn(SilcServer server, char *host, int port);
+bool silc_server_config_is_primary_route(SilcServer server);
+SilcServerConfigRouter *
+silc_server_config_get_primary_router(SilcServer server);
+bool silc_server_config_set_defaults(SilcServer server);
#endif /* !SERVERCONFIG_H */