diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-12-16 19:52:45 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2004-12-16 19:52:45 +0000 |
commit | 736488c0aedfb197e6dd889704223253f08b0bdb (patch) | |
tree | 5da2fbb7e1611b645d87a207b94836cd5a18f6b4 /src | |
parent | 2c4cb78ec4ce8c9340085613f99a3df3bbfe475f (diff) | |
download | anubis-736488c0aedfb197e6dd889704223253f08b0bdb.tar.gz anubis-736488c0aedfb197e6dd889704223253f08b0bdb.tar.bz2 |
Updated
Diffstat (limited to 'src')
-rw-r--r-- | src/gsasl_srv.c | 11 | ||||
-rw-r--r-- | src/headers.h | 6 | ||||
-rw-r--r-- | src/rcfile.c | 54 |
3 files changed, 65 insertions, 6 deletions
diff --git a/src/gsasl_srv.c b/src/gsasl_srv.c index 010d7f7..bffc374 100644 --- a/src/gsasl_srv.c +++ b/src/gsasl_srv.c @@ -32,7 +32,7 @@ static ANUBIS_LIST *anubis_mech_list; /* Converts the auth method list from a textual representation to a ANUBIS_LIST of string values */ -static ANUBIS_LIST * +ANUBIS_LIST * auth_method_list (char *input) { char *p; @@ -84,8 +84,8 @@ anubis_set_mech_list (ANUBIS_LIST * list) /* Capability list handling */ -static int -name_cmp (void *item, void *data) +int +anubis_name_cmp (void *item, void *data) { return strcmp (item, data); } @@ -107,7 +107,8 @@ auth_gsasl_capa_init () { size_t size = strlen (listmech); ANUBIS_LIST *mech = auth_method_list (listmech); - ANUBIS_LIST *p = list_intersect (mech, anubis_mech_list, name_cmp); + ANUBIS_LIST *p = list_intersect (mech, anubis_mech_list, + anubis_name_cmp); auth_list_to_string (p, listmech, size); list_destroy (&p, NULL, NULL); list_destroy (&mech, anubis_free_list_item, NULL); @@ -236,7 +237,7 @@ cb_validate (Gsasl_session_ctx * ctx, if (usr->smtp_authid == NULL && anubis_get_db_record (authentication_id, usr) != ANUBIS_DB_SUCCESS) return GSASL_AUTHENTICATION_ERROR; - + if (usr->smtp_authid == NULL || strcmp (usr->smtp_authid, authentication_id) || strcmp (usr->smtp_passwd, password)) diff --git a/src/headers.h b/src/headers.h index 86d4a28..da75a72 100644 --- a/src/headers.h +++ b/src/headers.h @@ -389,7 +389,7 @@ char *exec_argv (int *, char *, char **, char *, char *, int); void cleanup_children (void); /* esmtp.c */ -void esmtp_auth (NET_STREAM, char *); +int esmtp_auth (NET_STREAM *, char *); /* misc.c */ int anubis_free_list_item (void *item, void *data); @@ -574,6 +574,10 @@ void anubis_set_mech_list (ANUBIS_LIST * list); void install_gsasl_stream (Gsasl_session_ctx * sess_ctx, NET_STREAM * stream); #endif +/* gsasl_srv.c */ +int anubis_name_cmp (void *item, void *data); +ANUBIS_LIST *auth_method_list (char *input); + /* xdatabase.c */ int xdatabase (char *command); void xdatabase_capability (char *reply, size_t reply_size); diff --git a/src/rcfile.c b/src/rcfile.c index bcfc377..918c586 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -245,6 +245,15 @@ process_rcfile (int method) #define KW_READ_ENTIRE_BODY 16 #define KW_LOCAL_DOMAIN 17 #define KW_MODE 18 +#define KW_ESMTP_ANONYMOUS_TOKEN 19 +#define KW_ESMTP_AUTH_ID 20 +#define KW_ESMTP_AUTHZ_ID 21 +#define KW_ESMTP_PASSWORD 22 +#define KW_ESMTP_SERVICE 23 +#define KW_ESMTP_HOSTNAME 24 +#define KW_ESMTP_GENERIC_SERVICE 25 +#define KW_ESMTP_PASSCODE 26 +#define KW_ESMTP_REALM 27 char ** list_to_argv (ANUBIS_LIST * list) @@ -401,6 +410,42 @@ control_parser (int method, int key, ANUBIS_LIST * arglist, } break; + case KW_ESMTP_ANONYMOUS_TOKEN: + anon_token = strdup (arg); + break; + + case KW_ESMTP_AUTH_ID: + authentication_id = strdup (arg); + break; + + case KW_ESMTP_AUTHZ_ID: + authorization_id = strdup (arg); + break; + + case KW_ESMTP_PASSWORD: + auth_password = strdup (arg); + break; + + case KW_ESMTP_SERVICE: + auth_service = strdup (arg); + break; + + case KW_ESMTP_HOSTNAME: + auth_hostname = strdup (arg); + break; + + case KW_ESMTP_GENERIC_SERVICE: + generic_service_name = strdup (arg); + break; + + case KW_ESMTP_PASSCODE: + auth_passcode = strdup (arg); + break; + + case KW_ESMTP_REALM: + auth_realm = strdup (arg); + break; + case KW_LOCAL_DOMAIN: anubis_domain = strdup (arg); break; @@ -507,6 +552,15 @@ struct rc_kwdef control_kw[] = { { "local-mta", KW_LOCAL_MTA }, { "tracefile", KW_TRACEFILE }, { "esmtp-auth", KW_ESMTP_AUTH, KWF_HIDDEN }, + { "esmtp-anonymous-token", KW_ESMTP_ANONYMOUS_TOKEN, KWF_HIDDEN }, + { "esmtp-auth-id", KW_ESMTP_AUTH_ID, KWF_HIDDEN }, + { "esmtp-authz-id", KW_ESMTP_AUTHZ_ID, KWF_HIDDEN }, + { "esmtp-password", KW_ESMTP_PASSWORD, KWF_HIDDEN }, + { "esmtp-service", KW_ESMTP_SERVICE, KWF_HIDDEN }, + { "esmtp-hostname", KW_ESMTP_HOSTNAME, KWF_HIDDEN }, + { "esmtp-generic-service", KW_ESMTP_SERVICE, KWF_HIDDEN }, + { "esmtp-passcode", KW_ESMTP_PASSCODE, KWF_HIDDEN }, + { "esmtp-realm", KW_ESMTP_REALM, KWF_HIDDEN }, #ifdef USE_SOCKS_PROXY { "socks-proxy", KW_SOCKS_PROXY }, { "socks-v4", KW_SOCKS_V4 }, |