X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=apps%2Fsilcd%2Fserverconfig.h;h=0c424a43b21ad1bfc9e328cbcda091b4ab909466;hp=1d33597d8528ab6ea5829be365a9af10d3f8a984;hb=e5d8d3db6caa344b3d419b884556c21b15e7d123;hpb=3ef234937ec402fb77006783624375ef61ffa65d diff --git a/apps/silcd/serverconfig.h b/apps/silcd/serverconfig.h index 1d33597d..0c424a43 100644 --- a/apps/silcd/serverconfig.h +++ b/apps/silcd/serverconfig.h @@ -25,19 +25,25 @@ typedef struct SilcServerConfigSectionAlgStruct { char *alg_name; char *sim_name; - unsigned int block_len; - unsigned int key_len; + uint32 block_len; + uint32 key_len; struct SilcServerConfigSectionAlgStruct *next; struct SilcServerConfigSectionAlgStruct *prev; #define SILC_CONFIG_SERVER_MODNAME "builtin" } SilcServerConfigSectionAlg; +/* Holds server keys from config file */ +typedef struct { + SilcPublicKey public_key; + SilcPrivateKey private_key; +} SilcServerConfigSectionServerKeys; + /* Holds server information from config file */ typedef struct { char *server_name; char *server_ip; char *location; - unsigned short port; + uint16 port; } SilcServerConfigSectionServerInfo; /* Holds server's administrative information from config file */ @@ -50,9 +56,9 @@ typedef struct { /* Holds all the ports the server is listenning on */ typedef struct SilcServerConfigSectionListenPortStruct { - char *host; - char *remote_ip; - unsigned short port; + char *local_ip; + char *listener_ip; + uint16 port; struct SilcServerConfigSectionListenPortStruct *next; struct SilcServerConfigSectionListenPortStruct *prev; } SilcServerConfigSectionListenPort; @@ -60,15 +66,15 @@ typedef struct SilcServerConfigSectionListenPortStruct { /* Holds server's execution identity, or the user and group which to change from root when server starts */ typedef struct { - char *user; - char *group; + char *user; + char *group; } SilcServerConfigSectionIdentity; /* Holds all the configured log files. */ typedef struct SilcServerConfigSectionLoggingStruct { char *logtype; char *filename; - unsigned int maxsize; + uint32 maxsize; struct SilcServerConfigSectionLoggingStruct *next; struct SilcServerConfigSectionLoggingStruct *prev; @@ -76,15 +82,15 @@ typedef struct SilcServerConfigSectionLoggingStruct { #define SILC_CONFIG_SERVER_LF_INFO "infologfile" #define SILC_CONFIG_SERVER_LF_WARNING "warninglogfile" #define SILC_CONFIG_SERVER_LF_ERROR "errorlogfile" -#define SILC_CONFIG_SERVER_LF_FATAL "fatalogfile" +#define SILC_CONFIG_SERVER_LF_FATAL "fatallogfile" } SilcServerConfigSectionLogging; /* Holds all configured connection classes */ typedef struct SilcServerConfigSectionConnectionClassStruct { - unsigned int class; - unsigned int ping_freq; - unsigned int connect_freq; - unsigned int max_links; + uint32 class; + uint32 ping_freq; + uint32 connect_freq; + uint32 max_links; struct SilcServerConfigSectionConnectionClassStruct *next; struct SilcServerConfigSectionConnectionClassStruct *prev; } SilcServerConfigSectionConnectionClass; @@ -95,10 +101,11 @@ typedef struct SilcServerConfigSectionConnectionClassStruct { /* Holds all client authentication data from config file */ typedef struct SilcServerConfigSectionClientConnectionStruct { char *host; - int auth_meth; - char *auth_data; - unsigned short port; - unsigned int class; + SilcAuthMethod auth_meth; + void *auth_data; + uint32 auth_data_len; + uint16 port; + uint32 class; struct SilcServerConfigSectionClientConnectionStruct *next; struct SilcServerConfigSectionClientConnectionStruct *prev; } SilcServerConfigSectionClientConnection; @@ -106,10 +113,11 @@ typedef struct SilcServerConfigSectionClientConnectionStruct { /* Hols all server's administrators authentication data from config file */ typedef struct SilcServerConfigSectionAdminConnectionStruct { char *host; - int auth_meth; - char *auth_data; + char *username; char *nickname; - unsigned int class; + SilcAuthMethod auth_meth; + void *auth_data; + uint32 auth_data_len; struct SilcServerConfigSectionAdminConnectionStruct *next; struct SilcServerConfigSectionAdminConnectionStruct *prev; } SilcServerConfigSectionAdminConnection; @@ -117,30 +125,28 @@ typedef struct SilcServerConfigSectionAdminConnectionStruct { /* Holds all configured server/router connections from config file */ typedef struct SilcServerConfigSectionServerConnectionStruct { char *host; - int auth_meth; - char *auth_data; - unsigned short port; + SilcAuthMethod auth_meth; + void *auth_data; + uint32 auth_data_len; + uint16 port; char *version; - unsigned int class; - int initiator; + uint32 class; + bool initiator; + bool backup_router; + bool backup_local; struct SilcServerConfigSectionServerConnectionStruct *next; struct SilcServerConfigSectionServerConnectionStruct *prev; } SilcServerConfigSectionServerConnection; /* Holds all configured denied connections from config file */ -typedef struct { +typedef struct SilcServerConfigSectionDenyConnectionStruct { char *host; - char *time; char *comment; - unsigned short port; + uint16 port; + struct SilcServerConfigSectionDenyConnectionStruct *next; + struct SilcServerConfigSectionDenyConnectionStruct *prev; } SilcServerConfigSectionDenyConnection; -/* Holds all client redirections from config file */ -typedef struct { - char *host; - unsigned short port; -} SilcServerConfigSectionRedirectClient; - /* Holds motd file */ typedef struct { char *motd_file; @@ -165,6 +171,7 @@ typedef struct { SilcServerConfigSectionAlg *pkcs; SilcServerConfigSectionAlg *hash_func; SilcServerConfigSectionAlg *hmac; + SilcServerConfigSectionServerKeys *server_keys; SilcServerConfigSectionServerInfo *server_info; SilcServerConfigSectionAdminInfo *admin_info; SilcServerConfigSectionListenPort *listen_port; @@ -176,7 +183,6 @@ typedef struct { SilcServerConfigSectionServerConnection *routers; SilcServerConfigSectionAdminConnection *admins; SilcServerConfigSectionDenyConnection *denied; - SilcServerConfigSectionRedirectClient *redirect; SilcServerConfigSectionMotd *motd; } SilcServerConfigObject; @@ -189,6 +195,7 @@ typedef enum { SILC_CONFIG_SERVER_SECTION_TYPE_PKCS, SILC_CONFIG_SERVER_SECTION_TYPE_HASH_FUNCTION, SILC_CONFIG_SERVER_SECTION_TYPE_HMAC, + SILC_CONFIG_SERVER_SECTION_TYPE_SERVER_KEYS, SILC_CONFIG_SERVER_SECTION_TYPE_SERVER_INFO, SILC_CONFIG_SERVER_SECTION_TYPE_ADMIN_INFO, SILC_CONFIG_SERVER_SECTION_TYPE_LISTEN_PORT, @@ -200,7 +207,6 @@ typedef enum { SILC_CONFIG_SERVER_SECTION_TYPE_ROUTER_CONNECTION, SILC_CONFIG_SERVER_SECTION_TYPE_ADMIN_CONNECTION, SILC_CONFIG_SERVER_SECTION_TYPE_DENY_CONNECTION, - SILC_CONFIG_SERVER_SECTION_TYPE_REDIRECT_CLIENT, SILC_CONFIG_SERVER_SECTION_TYPE_MOTD, } SilcServerConfigSectionType; @@ -208,7 +214,7 @@ typedef enum { typedef struct { const char *section; SilcServerConfigSectionType type; - unsigned int maxfields; + int maxfields; } SilcServerConfigSection; /* LIst of all possible config sections in SILC server. */ @@ -218,7 +224,7 @@ extern SilcServerConfigSection silc_server_config_sections[]; from a file to this structure before parsing it further. */ typedef struct SilcServerConfigParseStruct { SilcBuffer line; - unsigned int linenum; + int linenum; SilcServerConfigSection *section; struct SilcServerConfigParseStruct *next; struct SilcServerConfigParseStruct *prev; @@ -251,12 +257,12 @@ int silc_server_config_parse(SilcServerConfig config, SilcBuffer buffer, SilcServerConfigParse *return_config); int silc_server_config_parse_lines(SilcServerConfig config, SilcServerConfigParse parse_config); -int silc_server_config_check_sections(unsigned int checkmask); +int silc_server_config_check_sections(uint32 checkmask); void silc_server_config_setlogfiles(SilcServerConfig config); -void silc_server_config_register_ciphers(SilcServerConfig config); -void silc_server_config_register_pkcs(SilcServerConfig config); -void silc_server_config_register_hashfuncs(SilcServerConfig config); -void silc_server_config_register_hmacs(SilcServerConfig config); +bool silc_server_config_register_ciphers(SilcServerConfig config); +bool silc_server_config_register_pkcs(SilcServerConfig config); +bool silc_server_config_register_hashfuncs(SilcServerConfig config); +bool silc_server_config_register_hmacs(SilcServerConfig config); SilcServerConfigSectionClientConnection * silc_server_config_find_client_conn(SilcServerConfig config, char *host, int port); @@ -266,6 +272,14 @@ silc_server_config_find_server_conn(SilcServerConfig config, SilcServerConfigSectionServerConnection * silc_server_config_find_router_conn(SilcServerConfig config, char *host, int port); -void silc_server_config_print(); +bool silc_server_config_is_primary_route(SilcServerConfig config); +SilcServerConfigSectionServerConnection * +silc_server_config_get_primary_router(SilcServerConfig config); +SilcServerConfigSectionAdminConnection * +silc_server_config_find_admin(SilcServerConfig config, + char *host, char *username, char *nickname); +SilcServerConfigSectionDenyConnection * +silc_server_config_denied_conn(SilcServerConfig config, char *host, + int port); #endif