diff options
Diffstat (limited to 'imap4d/imap4d.h')
-rw-r--r-- | imap4d/imap4d.h | 85 |
1 files changed, 44 insertions, 41 deletions
diff --git a/imap4d/imap4d.h b/imap4d/imap4d.h index 93fde1b19..783192462 100644 --- a/imap4d/imap4d.h +++ b/imap4d/imap4d.h @@ -1,5 +1,5 @@ /* GNU Mailutils -- a suite of utilities for electronic mail - Copyright (C) 1999-2019 Free Software Foundation, Inc. + Copyright (C) 1999-2024 Free Software Foundation, Inc. GNU Mailutils is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -114,10 +114,13 @@ extern "C" { #endif +#define PORT_IMAP4 143 +#define PORT_IMAP4S 993 + typedef struct imap4d_tokbuf *imap4d_tokbuf_t; struct imap4d_session; - + struct imap4d_command { const char *name; @@ -146,7 +149,7 @@ struct imap4d_command #define RESP_BYE 3 #define RESP_NONE 4 #define RESP_PREAUTH 5 - + /* Error values. */ #define OK 0 #define ERR_NO_MEM 1 @@ -168,9 +171,9 @@ struct imap4d_command /* IMAP4D capability names */ #define IMAP_CAPA_STARTTLS "STARTTLS" #define IMAP_CAPA_LOGINDISABLED "LOGINDISABLED" -#define IMAP_CAPA_XTLSREQUIRED "XTLSREQUIRED" +#define IMAP_CAPA_XTLSREQUIRED "XTLSREQUIRED" -/* Preauth types */ +/* Preauth types */ enum imap4d_preauth { preauth_none, @@ -201,16 +204,16 @@ struct imap4d_srv_config enum tls_mode tls_mode; struct mu_tls_config tls_conf; }; - + extern struct imap4d_command imap4d_command_table[]; extern mu_mailbox_t mbox; -extern char *real_homedir; +extern char *real_homedir; extern int state; extern size_t children; extern int is_virtual; -extern struct mu_auth_data *auth_data; +extern struct mu_auth_data *auth_data; extern const char *program_version; - + extern int login_disabled; extern enum imap4d_preauth preauth_mode; extern char *preauth_program; @@ -221,16 +224,15 @@ extern int ident_encrypt_only; extern unsigned int idle_timeout; extern int imap4d_transcript; extern mu_list_t imap4d_id_list; -extern int imap4d_argc; +extern int imap4d_argc; extern char **imap4d_argv; extern jmp_buf child_jmp; extern struct mu_tls_config global_tls_conf; - +extern int global_tls_mode; + extern int test_mode; extern int silent_expunge; -int tls_available; - /* Input functions */ extern mu_stream_t iostream; extern int io_untagged_response (int, const char *, ...) MU_PRINTFLIKE(2,3); @@ -241,16 +243,15 @@ extern int io_send_astring (const char *); extern int io_send_literal (const char *); extern int io_copy_out (mu_stream_t str, size_t size); extern int io_completion_response (struct imap4d_command *, int, - const char *, ...) MU_PRINTFLIKE(3,4); + const char *, ...) MU_PRINTFLIKE(3,4); extern int io_stream_completion_response (mu_stream_t str, struct imap4d_command *command, - int rc, + int rc, const char *format, ...) - MU_PRINTFLIKE(4,5); + MU_PRINTFLIKE(4,5); void io_getline (char **pbuf, size_t *psize, size_t *pnbytes); void io_setio (int, int, struct mu_tls_config *); void io_flush (void); -int io_wait_input (int); void io_enable_crlf (int); imap4d_tokbuf_t imap4d_tokbuf_init (void); @@ -260,7 +261,7 @@ char *imap4d_tokbuf_getarg (imap4d_tokbuf_t tok, int n); void imap4d_readline (imap4d_tokbuf_t tok); imap4d_tokbuf_t imap4d_tokbuf_from_string (char *str); - + #define IMAP4_ARG_TAG 0 #define IMAP4_ARG_COMMAND 1 #define IMAP4_ARG_1 2 @@ -285,7 +286,7 @@ struct imap4d_parsebuf }; typedef struct imap4d_parsebuf *imap4d_parsebuf_t; - + void imap4d_parsebuf_exit (imap4d_parsebuf_t pb, char *text); char *imap4d_parsebuf_peek (imap4d_parsebuf_t pb); char *imap4d_parsebuf_next (imap4d_parsebuf_t pb, int req); @@ -345,6 +346,7 @@ extern int imap4d_select_status (void); extern int imap4d_starttls (struct imap4d_session *, struct imap4d_command *, imap4d_tokbuf_t); int starttls_init (mu_m_server_t msrv); +int starttls_server_check (struct imap4d_srv_config *cfg, char const *srvid); void tls_encryption_on (struct imap4d_session *); extern int imap4d_status (struct imap4d_session *, struct imap4d_command *, imap4d_tokbuf_t); @@ -370,10 +372,10 @@ extern int imap4d_idle (struct imap4d_session *, struct imap4d_command *, imap4d_tokbuf_t); extern int imap4d_id (struct imap4d_session *, struct imap4d_command *, imap4d_tokbuf_t); - + extern int imap4d_check_home_dir (const char *dir, uid_t uid, gid_t gid); -/* Shared between fetch and store */ +/* Shared between fetch and store */ extern void fetch_flags0 (const char *prefix, mu_message_t msg, int isuid); /* Permissions for creating intermediate directories. @@ -381,16 +383,16 @@ extern void fetch_flags0 (const char *prefix, mu_message_t msg, int isuid); #define MKDIR_PERMISSIONS 0700 int make_interdir (const char *name, int delim, int perms); -/* Synchronisation on simultaneous access. */ +/* Synchronization on simultaneous access. */ extern int imap4d_sync (void); extern void imap4d_sync_invalidate (void); extern int imap4d_sync_flags (size_t); extern size_t uid_to_msgno (size_t); extern void imap4d_set_observer (mu_mailbox_t mbox); - + /* Signal handling. */ -extern RETSIGTYPE imap4d_master_signal (int); -extern RETSIGTYPE imap4d_child_signal (int); +extern void imap4d_master_signal (int); +extern void imap4d_child_signal (int); extern int imap4d_bye (int); extern int imap4d_bye_command (int, struct imap4d_command *); void imap4d_enter_critical (void); @@ -417,17 +419,21 @@ struct namespace void namespace_init (void); struct namespace *namespace_lookup (char const *name); -char *namespace_translate_name (char const *name, +char *namespace_translate_name (char const *name, struct namespace_prefix const **pfx); char *namespace_get_name (char const *name, mu_record_t *rec, int *mode); +char *namespace_decode_delim (struct namespace_prefix const *pfx, + char const *src); +char *namespace_encode_delim (struct namespace_prefix const *pfx, + char const *src); void translate_delim (char *dst, char const *src, int dst_delim, int src_delim); int imap4d_session_setup (char *username); int imap4d_session_setup0 (void); -void imap4d_child_signal_setup (RETSIGTYPE (*handler) (int signo)); - +void imap4d_child_signal_setup (void (*handler) (int signo)); + /* Capability functions */ extern void imap4d_capability_add (const char *str); extern void imap4d_capability_remove (const char *str); @@ -438,14 +444,14 @@ extern void imap4d_capability_init (void); extern int util_start (char *); extern int util_getstate (void); extern int util_do_command (struct imap4d_session *, imap4d_tokbuf_t); -extern struct imap4d_command *util_getcommand (char *, - struct imap4d_command []); +extern struct imap4d_command *util_getcommand (char *, + struct imap4d_command []); enum datetime_parse_mode /* how to parse date/time strings */ { datetime_default, /* default mode */ datetime_date_only, /* return only date part, ignore time and TZ */ - datetime_time_only /* return only time and TZ, ignore date */ + datetime_time_only /* return only time and TZ, ignore date */ }; extern int util_parse_internal_date (char *date, time_t *timep, @@ -460,16 +466,13 @@ void util_print_flags (mu_attribute_t attr); int util_attribute_matches_flag (mu_attribute_t attr, const char *item); int util_uidvalidity (mu_mailbox_t smbox, unsigned long *uidvp); - -void util_bye (void); + +void util_bye (void); void util_chdir (const char *homedir); int is_atom (const char *s); int util_isdelim (const char *str); int util_trim_nl (char *s, size_t len); -void unistr_downcase (char const *input, char **output); -int unistr_is_substring (char const *haystack, char const *needle); - int set_xscript_level (int xlev); void xscript_declare_client_payload (size_t len); @@ -492,17 +495,17 @@ enum imap4d_auth_result imap4d_auth_resp = MU_ERR_USER1, imap4d_auth_fail = MU_ERR_USER2 }; - + typedef enum imap4d_auth_result - (*imap4d_auth_handler_fp) (struct imap4d_auth *); - + (*imap4d_auth_handler_fp) (struct imap4d_auth *); + extern void auth_add (char *name, imap4d_auth_handler_fp handler); extern void auth_remove (char *name); -#ifdef WITH_GSSAPI +#ifdef WITH_GSSAPI extern void auth_gssapi_init (void); #else -# define auth_gssapi_init() +# define auth_gssapi_init() #endif #ifdef WITH_GSASL |