From 08050758de2f654d4bc13f7e5e87437e9c404e1d Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Fri, 2 Nov 2007 14:15:44 +0000 Subject: [PATCH] include: Add imnact.idl and imnxport.idl. --- .gitignore | 2 + include/Makefile.in | 2 + include/imnact.idl | 299 ++++++++++++++++++ include/imnxport.idl | 699 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1002 insertions(+) create mode 100644 include/imnact.idl create mode 100644 include/imnxport.idl diff --git a/.gitignore b/.gitignore index 95fa523dad4..bc6401b6310 100644 --- a/.gitignore +++ b/.gitignore @@ -577,6 +577,8 @@ include/hlink.h include/htiframe.h include/iads.h include/icftypes.h +include/imnact.h +include/imnxport.h include/indexsrv.h include/mediaobj.h include/mimeinfo.h diff --git a/include/Makefile.in b/include/Makefile.in index 9835f09f016..4522d2b1488 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -24,6 +24,8 @@ IDL_H_SRCS = \ htiframe.idl \ iads.idl \ icftypes.idl \ + imnact.idl \ + imnxport.idl \ indexsrv.idl \ mediaobj.idl \ mimeinfo.idl \ diff --git a/include/imnact.idl b/include/imnact.idl new file mode 100644 index 00000000000..ee2460acd64 --- /dev/null +++ b/include/imnact.idl @@ -0,0 +1,299 @@ +/* + * Copyright 2006 Robert Shearman for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "objidl.idl"; + +interface IImnAccount; + +cpp_quote("#ifndef HR_E") +cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)") +cpp_quote("#endif") +cpp_quote("#ifndef HR_S") +cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)") +cpp_quote("#endif") + +typedef enum tagSMTPAUTHTYPE +{ + SMTP_AUTH_NONE, + SMTP_AUTH_SICILY, + SMTP_AUTH_USE_POP3ORIMAP_SETTINGS, + SMTP_AUTH_USE_SMTP_SETTINGS, +} SMTPAUTHTYPE; + +const SHORT CCHMAX_ORG_NAME = 256; +const SHORT CCHMAX_DISPLAY_NAME = 256; +const SHORT CCHMAX_ACCOUNT_NAME = 256; +const SHORT CCHMAX_SERVER_NAME = 256; +const SHORT CCHMAX_PASSWORD = 256; +const SHORT CCHMAX_USERNAME = 256; +const SHORT CCHMAX_EMAIL_ADDRESS = 256; +const SHORT CCHMAX_CONNECTOID = 256; +const SHORT CCHMAX_SEARCH_BASE = 256; +const SHORT CCHMAX_ROOT_FOLDER = 256; +const SHORT CCHMAX_SIGNATURE = 16; +const SHORT CCHMAX_SERVICE = 256; + +[ + object, + uuid(0A06BD31-166F-11D0-81B9-00C04FD85AB4), + pointer_default(unique) +] +interface IImnAdviseAccount : IUnknown +{ + typedef enum + { + ACCT_NEWS, + ACCT_MAIL, + ACCT_DIR_SERV, + ACCT_LAST + } ACCTTYPE; + + typedef struct tagAccountContext + { + ACCTTYPE AcctType; + LPSTR pszAccountID; + LPSTR pszOldName; + DWORD dwServerType; + } ACTX; + + HRESULT AdviseAccount( + [in] DWORD dwAdviseType, + [in] ACTX *pAcctCtx); +} + +[ + object, + uuid(8D0AED11-1638-11D0-81B9-00C04FD85AB4), + pointer_default(unique) +] +interface IImnAdviseMigrateServer : IUnknown +{ + HRESULT MigrateServer( + [in] DWORD dwSrvType, + [in] IImnAccount *pAccount); +} + +[ + object, + uuid(FD465483-1384-11D0-ABBD-0020AFDFD10A), + pointer_default(unique) +] +interface IImnEnumAccounts : IUnknown +{ + HRESULT GetCount( + [out] ULONG *pcItems); + + HRESULT SortByAccountName(); + + HRESULT GetNext( + [out] IImnAccount **ppAccount); + + HRESULT Reset(); +} + +[ + object, + uuid(FD465481-1384-11D0-ABBD-0020AFDFD10A), + pointer_default(unique) +] +interface IImnAccountManager : IUnknown +{ + typedef struct tagACCTLISTINFO + { + DWORD cbSize; + ACCTTYPE AcctTypeInit; + DWORD dwAcctFlags; + DWORD dwFlags; + } ACCTLISTINFO; + + HRESULT Init( + [in] IImnAdviseMigrateServer *pAdviseMigrateServer); + + HRESULT CreateAccountObject( + [in] ACCTTYPE AcctType, + [out] IImnAccount **ppAccount); + + HRESULT Enumerate( + [in] DWORD dwSrvTypes, + [out] IImnEnumAccounts **ppEnumAccounts); + + HRESULT GetAccountCount( + [in] ACCTTYPE AcctType, + [out] ULONG *pcServers); + + HRESULT FindAccount( + [in] DWORD dwPropTag, + [in] LPCSTR pszSearchData, + [out] IImnAccount **ppAccount); + + HRESULT GetDefaultAccountName( + [in] ACCTTYPE AcctType, + [in,ref] LPSTR pszAccount, + [in] ULONG cchMax); + + HRESULT ProcessNotification( + [in] UINT uMsg, + [in] WPARAM wParam, + [in] LPARAM lParam); + + HRESULT ValidateDefaultSendAccount(); + + HRESULT AccountListDialog( + [in] HWND hwnd, + [in] ACCTLISTINFO *pinfo); + + HRESULT Advise( + [in] IImnAdviseAccount *pAdviseAccount, + [out] DWORD *pdwConnection); + + HRESULT Unadvise( + [in] DWORD dwConnection); + + HRESULT GetUniqueAccountName( + [in] LPSTR szName, + [in] UINT cch); + + HRESULT InitEx( + [in] IImnAdviseMigrateServer *pAdviseMigrateServer, + [in] DWORD dwFlags); +} + +[ + object, + uuid(C43DFC6F-62BB-11D2-A727-00C04F79E7C8), + pointer_default(unique) +] +interface IImnAccountManager2 : IImnAccountManager +{ + HRESULT InitUser( + [in] IImnAdviseMigrateServer *pAdviseMigrateServer, + [in] REFGUID rguidID, + [in] DWORD dwFlags); + + HRESULT GetIncompleteAccount( + [in] ACCTTYPE AcctType, + [in,ref] LPSTR pszAccountId, + [in] ULONG cchMax); + + HRESULT SetIncompleteAccount( + [in] ACCTTYPE AcctType, + [in] LPCSTR pszAccountId); +} + +[ + object, + uuid(FD465484-1384-11D0-ABBD-0020AFDFD10A), + pointer_default(unique) +] +interface IPropertyContainer : IUnknown +{ + typedef enum + { + TYPE_ERROR = 1000, + TYPE_DWORD, + TYPE_LONG, + TYPE_WORD, + TYPE_SHORT, + TYPE_BYTE, + TYPE_CHAR, + TYPE_FILETIME, + TYPE_STRING, + TYPE_BINARY, + TYPE_FLAGS, + TYPE_STREAM, + TYPE_WSTRING, + TYPE_BOOL, + TYPE_PASS, + TYPE_LAST + } PROPTYPE; + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef GetProp") +cpp_quote("#undef SetProp") +cpp_quote("#endif") + + HRESULT GetProp( + [in] DWORD dwPropTag, + [in,size_is(*pcb),ref] BYTE *pb, + [in] ULONG *pcb); + + HRESULT GetPropDw( + [in] DWORD dwPropTag, + [out] DWORD *pdw); + + HRESULT GetPropSz( + [in] DWORD dwPropTag, + [in,ref] LPSTR psz, + [in] ULONG cchMax); + + HRESULT SetProp( + [in] DWORD dwPropTag, + [in,size_is(cb)] BYTE *pb, + [in] ULONG cb); + + HRESULT SetPropDw( + [in] DWORD dwPropTag, + [in] DWORD dw); + + HRESULT SetPropSz( + [in] DWORD dwPropTag, + [in] LPSTR psz); +} + +[ + object, + uuid(FD465482-1384-11D0-ABBD-0020AFDFD10A), + pointer_default(unique) +] +interface IImnAccount : IPropertyContainer +{ + HRESULT Exist(); + + HRESULT SetAsDefault(); + + HRESULT Delete(); + + HRESULT SaveChanges(); + + HRESULT GetAccountType( + [out] ACCTTYPE *pAcctType); + + HRESULT GetServerTypes( + [out] DWORD *pdwSrvTypes); + + HRESULT ShowProperties( + [in] HWND hwnd, + [in] DWORD dwFlags); + + HRESULT ValidateProperty( + [in] DWORD dwPropTag, + [in,size_is(cb)] BYTE *pb, + [in] ULONG cb); + + HRESULT DoWizard( + [in] HWND hwnd, + [in] DWORD dwFlags); + + HRESULT DoImportWizard( + [in] HWND hwnd, + [in] CLSID clsid, + [in] DWORD dwFlags); +} + +cpp_quote("HRESULT WINAPI HrCreateAccountManager(IImnAccountManager **ppAccountManager);") +cpp_quote("HRESULT WINAPI ValidEmailAddress(LPSTR lpAddress);") diff --git a/include/imnxport.idl b/include/imnxport.idl new file mode 100644 index 00000000000..50f3e4e08ce --- /dev/null +++ b/include/imnxport.idl @@ -0,0 +1,699 @@ +/* + * Copyright 2006 Robert Shearman for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "imnact.idl"; + +interface IInternetTransport; +interface ISMTPTransport; +interface IPOP3Transport; + +/* CLSIDs */ + +cpp_quote("DEFINE_GUID(CLSID_IInternetMessageUrl, 0xca30cc91, 0xb1b3, 0x11d0, 0x85, 0xd0, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") +cpp_quote("DEFINE_GUID(CLSID_ISMTPTransport, 0xfd853ce6, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") +cpp_quote("DEFINE_GUID(CLSID_IPOP3Transport, 0xfd853ce7, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") +cpp_quote("DEFINE_GUID(CLSID_INNTPTransport, 0xfd853ce8, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") +cpp_quote("DEFINE_GUID(CLSID_IRASTransport, 0xfd853ce9, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") +cpp_quote("DEFINE_GUID(CLSID_IRangeList, 0xfd853cea, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") +cpp_quote("DEFINE_GUID(CLSID_IIMAPTransport, 0xfd853ceb, 0x7f86, 0x11d0, 0x82, 0x52, 0x00, 0xc0, 0x4f, 0xd8, 0x5a, 0xb4);") +cpp_quote("DEFINE_GUID(CLSID_IHTTPMailTransport, 0x5a580c11, 0xe5eb, 0x11d1, 0xa8, 0x6e, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);") +cpp_quote("DEFINE_GUID(CLSID_IPropFindRequest, 0xbb847b8a, 0x054a, 0x11d2, 0xa8, 0x94, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);") +cpp_quote("DEFINE_GUID(CLSID_IPropPatchRequest, 0xea678830, 0x235d, 0x11d2, 0xa8, 0xb6, 0x00, 0x00, 0xf8, 0x08, 0x4f, 0x96);") + +/* Error Codes */ + +cpp_quote("#ifndef HR_E") +cpp_quote("#define HR_E(n) MAKE_SCODE(SEVERITY_ERROR, FACILITY_INTERNET, n)") +cpp_quote("#endif") +cpp_quote("#ifndef HR_S") +cpp_quote("#define HR_S(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_INTERNET, n)") +cpp_quote("#endif") + +/* General Error Codes */ +cpp_quote("#define IXP_E_LOAD_SICILY_FAILED HR_E(0xCC00)") +cpp_quote("#define IXP_E_INVALID_CERT_CN HR_E(0xCC01)") +cpp_quote("#define IXP_E_INVALID_CERT_DATE HR_E(0xCC02)") +cpp_quote("#define IXP_E_ALREADY_CONNECTED HR_E(0xCC03)") +cpp_quote("#define IXP_E_CONN HR_E(0xCC04)") +cpp_quote("#define IXP_E_NOT_CONNECTED HR_E(0xCC05)") +cpp_quote("#define IXP_E_CONN_SEND HR_E(0xCC06)") +cpp_quote("#define IXP_E_WOULD_BLOCK HR_E(0xCC07)") +cpp_quote("#define IXP_E_INVALID_STATE HR_E(0xCC08)") +cpp_quote("#define IXP_E_CONN_RECV HR_E(0xCC09)") +cpp_quote("#define IXP_E_INCOMPLETE HR_E(0xCC0A)") +cpp_quote("#define IXP_E_BUSY HR_E(0xCC0B)") +cpp_quote("#define IXP_E_NOT_INIT HR_E(0xCC0C)") +cpp_quote("#define IXP_E_CANT_FIND_HOST HR_E(0xCC0D)") +cpp_quote("#define IXP_E_FAILED_TO_CONNECT HR_E(0xCC0E)") +cpp_quote("#define IXP_E_CONNECTION_DROPPED HR_E(0xCC0F)") +cpp_quote("#define IXP_E_INVALID_ADDRESS HR_E(0xCC10)") +cpp_quote("#define IXP_E_INVALID_ADDRESS_LIST HR_E(0xCC11)") +cpp_quote("#define IXP_E_SOCKET_READ_ERROR HR_E(0xCC12)") +cpp_quote("#define IXP_E_SOCKET_WRITE_ERROR HR_E(0xCC13)") +cpp_quote("#define IXP_E_SCOKET_INIT_ERROR HR_E(0xCC14)") +cpp_quote("#define IXP_E_SOCKET_CONNECT_ERROR HR_E(0xCC15)") +cpp_quote("#define IXP_E_INVALID_ACCOUNT HR_E(0xCC16)") +cpp_quote("#define IXP_E_USER_CANCEL HR_E(0xCC17)") +cpp_quote("#define IXP_E_SICILY_LOGON_FAILED HR_E(0xCC18)") +cpp_quote("#define IXP_E_TIMEOUT HR_E(0xCC19)") +cpp_quote("#define IXP_E_SECURE_CONNECT_FAILED HR_E(0xCC1A)") + +/* SMTP Failure Statuses */ +cpp_quote("#define IXP_E_SMTP_RESPONSE_ERROR HR_E(0xCC60)") +cpp_quote("#define IXP_E_SMTP_UNKNOWN_RESPONSE_CODE HR_E(0xCC61)") +cpp_quote("#define IXP_E_SMTP_500_SYNTAX_ERROR HR_E(0xCC62)") +cpp_quote("#define IXP_E_SMTP_501_PARAM_SYNTAX HR_E(0xCC63)") +cpp_quote("#define IXP_E_SMTP_502_COMMAND_NOTIMPL HR_E(0xCC64)") +cpp_quote("#define IXP_E_SMTP_503_COMMAND_SEQ HR_E(0xCC65)") +cpp_quote("#define IXP_E_SMTP_504_COMMAND_PARAM_NOTIMPL HR_E(0xCC66)") +cpp_quote("#define IXP_E_SMTP_421_NOT_AVAILABLE HR_E(0xCC67)") +cpp_quote("#define IXP_E_SMTP_450_MAILBOX_BUSY HR_E(0xCC68)") +cpp_quote("#define IXP_E_SMTP_550_MAILBOX_NOT_FOUND HR_E(0xCC69)") +cpp_quote("#define IXP_E_SMTP_451_ERROR_PROCESSING HR_E(0xCC6A)") +cpp_quote("#define IXP_E_SMTP_551_USER_NOT_LOCAL HR_E(0xCC6B)") +cpp_quote("#define IXP_E_SMTP_452_NO_SYSTEM_STORAGE HR_E(0xCC6C)") +cpp_quote("#define IXP_E_SMTP_552_STORAGE_OVERFLOW HR_E(0xCC6D)") +cpp_quote("#define IXP_E_SMTP_553_MAILBOX_NAME_SYNTAX HR_E(0xCC6E)") +cpp_quote("#define IXP_E_SMTP_554_TRANSACT_FAILED HR_E(0xCC6F)") + +/* SMTP Success Statuses */ +cpp_quote("#define IXP_E_SMTP_211_SYSTEM_STATUS HR_S(0xCC70)") +cpp_quote("#define IXP_E_SMTP_214_HELP_MESSAGE HR_S(0xCC71)") +cpp_quote("#define IXP_E_SMTP_220_READY HR_S(0xCC72)") +cpp_quote("#define IXP_E_SMTP_221_CLOSING HR_S(0xCC73)") +cpp_quote("#define IXP_E_SMTP_250_MAIL_ACTION_OKAY HR_S(0xCC74)") +cpp_quote("#define IXP_E_SMTP_251_FORWARDING_MAIL HR_S(0xCC75)") +cpp_quote("#define IXP_E_SMTP_354_START_MAIL_INPUT HR_S(0xCC76)") +cpp_quote("#define IXP_E_SMTP_CONTINUE HR_S(0xCC77)") +cpp_quote("#define IXP_E_SMTP_334_AUTH_READY_RESPONSE HR_S(0xCC78)") +cpp_quote("#define IXP_E_SMTP_245_AUTH_SUCCESS HR_S(0xCC79)") + +/* More SMTP Failure Statuses */ +cpp_quote("#define IXP_E_SMTP_REJECTED_SENDER HR_E(0xCC78)") +cpp_quote("#define IXP_E_SMTP_REJECTED_RECIPIENTS HR_E(0xCC79)") +cpp_quote("#define IXP_E_SMTP_NO_SENDER HR_E(0xCC7A)") +cpp_quote("#define IXP_E_SMTP_NO_RECIPIENTS HR_E(0xCC7B)") +cpp_quote("#define IXP_E_SMTP_530_STARTTLS_REQUIRED HR_E(0xCC7C)") +cpp_quote("#define IXP_E_SMTP_NO_STARTTLS_SUPPORT HR_E(0xCC7D)") +cpp_quote("#define IXP_E_SMTP_NO_DSN_SUPPORT HR_E(0xCC7E)") +cpp_quote("#define IXP_E_SMTP_454_STARTTLS_FAILED HR_E(0xCC7F)") + +const SHORT CCHMAX_DOMAIN = 256; +const SHORT CCHMAX_PHONE_NUMBER = 128; + +const DWORD DEFAULT_IMAP_PORT = 143; +const DWORD DEFAULT_POP3_PORT = 110; +const DWORD DEFAULT_SMTP_PORT = 25; +const DWORD DEFAULT_NNTP_PORT = 119; + +typedef enum tagINETADDRTYPE +{ + ADDR_TO, + ADDR_FROM, + ADDR_DSN_NEVER = 16, + ADDR_DSN_SUCCESS = 32, + ADDR_DSN_FAILURE = 64, + ADDR_DSN_DELAY = 128 +} INETADDRTYPE; + +const DWORD ADDR_TOFROM_MASK = 0x1; +const DWORD ADDR_DSN_MASK = 0xf0; + +typedef enum tagDSNRET +{ + DSNRET_DEFAULT, + DSNRET_HDRS, + DSNRET_FULL, +} DSNRET; + +typedef struct tagINETADDR +{ + INETADDRTYPE addrtype; + CHAR szEmail[CCHMAX_EMAIL_ADDRESS]; +} INETADDR, *LPINETADDR; + +typedef struct tagINETADDRLIST +{ + ULONG cAddress; + LPINETADDR prgAddress; +} INETADDRLIST, *LPINETADDRLIST; + +typedef enum tagRASCONNTYPE +{ + RAS_CONNECT_LAN, + RAS_CONNECT_MANUAL, + RAS_CONNECT_RAS +} RASCONNTYPE; + +typedef enum tagHTTPMAILPROPTYPE +{ + HTTPMAIL_PROP_INVALID, + HTTPMAIL_PROP_ADBAR, + HTTPMAIL_PROP_CONTACTS, + HTTPMAIL_PROP_INBOX, + HTTPMAIL_PROP_OUTBOX, + HTTPMAIL_PROP_SENDMSG, + HTTPMAIL_PROP_SENTITEMS, + HTTPMAIL_PROP_DELETEDITEMS, + HTTPMAIL_PROP_DRAFTS, + HTTPMAIL_PROP_MSGFOLDERROOT, + HTTPMAIL_PROP_SIG, + HTTPMAIL_PROP_LAST +} HTTPMAILPROPTYPE; + +typedef enum tagHTTPMAILSPECIALFOLDER +{ + HTTPMAIL_SF_NONE, + HTTPMAIL_SF_UNRECOGNIZED, + HTTPMAIL_SF_INBOX, + HTTPMAIL_SF_DELETEDITEMS, + HTTPMAIL_SF_DRAFTS, + HTTPMAIL_SF_OUTBOX, + HTTPMAIL_SF_SENTITEMS, + HTTPMAIL_SF_CONTACTS, + HTTPMAIL_SF_CALENDAR, + HTTPMAIL_SF_MSNPROMO, + HTTPMAIL_SF_LAST +} HTTPMAILSPECIALFOLDER; + +typedef enum tagHTTPMAILCONTACTTYPE +{ + HTTPMAIL_CT_CONTACT, + HTTPMAIL_CT_GROUP, + HTTPMAIL_CT_LAST +} HTTPMAILCONTACTTYPE; + +const DWORD DAVNAMESPACE_UNKNOWN = 0xFFFFFFFF; +const DWORD DAVNAMESPACE_DAV = 0; +const DWORD DAVNAMESPACE_HOTMAIL = 1; +const DWORD DAVNAMESPACE_HTTPMAIL = 2; +const DWORD DAVNAMESPACE_MAIL = 3; +const DWORD DAVNAMESPACE_CONTACTS = 4; + +cpp_quote("#define ISF_SMTP_USEIPFORHELO 0x01") +cpp_quote("#define ISF_ALWAYSPROMPTFORPASSWORD 0x02") +/* for SMTP - send EHLO and use STARTTLS if available: */ +cpp_quote("#define ISF_SSLONSAMEPORT 0x04") +cpp_quote("#define ISF_QUERYDSNSUPPORT 0x08") +/* for SMTP - send EHLO and use AUTH if available: */ +cpp_quote("#define ISF_QUERYAUTHSUPPORT 0x10") + +typedef struct INETSERVER +{ + CHAR szAccount[CCHMAX_ACCOUNT_NAME]; + CHAR szUserName[CCHMAX_USERNAME]; + CHAR szPassword[CCHMAX_PASSWORD]; + CHAR szServerName[CCHMAX_SERVER_NAME]; + CHAR szConnectoid[CCHMAX_CONNECTOID]; + RASCONNTYPE rasconntype; + DWORD dwPort; + BOOL fSSL; + BOOL fTrySicily; + DWORD dwTimeout; + DWORD dwFlags; +} INETSERVER, *LPINETSERVER; + +typedef enum tagIXPTYPE +{ + IXP_NNTP, + IXP_SMTP, + IXP_POP3, + IXP_IMAP, + IXP_RAS, + IXP_HTTPMail +} IXPTYPE; + +typedef enum tagIXPSTATUS +{ + IXP_FINDINGHOST, + IXP_CONNECTING, + IXP_SECURING, + IXP_CONNECTED, + IXP_AUTHORIZING, + IXP_AUTHRETRY, + IXP_AUTHORIZED, + IXP_DISCONNECTING, + IXP_DISCONNECTED, + IXP_LAST +} IXPSTATUS; + +const DWORD DEPTH_INFINITY = 0xFFFFFFFE; + +typedef DWORD MEMBERINFOFLAGS; + +const MEMBERINFOFLAGS HTTP_MEMBERINFO_COMMONPROPS = 0x0; +const MEMBERINFOFLAGS HTTP_MEMBERINFO_FOLDERPROPS = 0x1; +const MEMBERINFOFLAGS HTTP_MEMBERINFO_MESSAGEPROPS = 0x2; +const MEMBERINFOFLAGS HTTP_MEMBERINFO_ALLPROPS = HTTP_MEMBERINFO_FOLDERPROPS | HTTP_MEMBERINFO_MESSAGEPROPS; + +typedef DWORD IMAP_MSGFLAGS; + +const IMAP_MSGFLAGS IMAP_MSG_NOFLAGS = 0x00; +const IMAP_MSGFLAGS IMAP_MSG_ANSWERED = 0x01; +const IMAP_MSGFLAGS IMAP_MSG_FLAGGED = 0x02; +const IMAP_MSGFLAGS IMAP_MSG_DELETED = 0x04; +const IMAP_MSGFLAGS IMAP_MSG_SEEN = 0x08; +const IMAP_MSGFLAGS IMAP_MSG_DRAFT = 0x10; +const IMAP_MSGFLAGS IMAP_MSG_ALLFLAGS = 0x1f; + +[ + object, + uuid(CA30F3FF-C9AC-11D1-9A3A-00C04FA309D4), + local +] +interface ITransportCallbackService : IUnknown +{ + HRESULT GetParentWindow( + [in] DWORD dwReserved, + [out] HWND *phwndParent); + + HRESULT GetAccount( + [out] LPDWORD pdwServerType, + [out] IImnAccount **ppAccount); +} + +[ + object, + uuid(0DF2C7E1-3435-11D0-81D0-00C04FD85AB4), + local +] +interface ITransportCallback : IUnknown +{ + typedef struct tagIXPRESULT + { + HRESULT hrResult; + LPSTR pszResponse; + UINT uiServerError; + HRESULT hrServerError; + DWORD dwSocketError; + LPSTR pszProblem; + } IXPRESULT, *LPIXPRESULT; + + typedef enum tagCMDTYPE + { + CMD_SEND, + CMD_RESP + } CMDTYPE; + + HRESULT OnTimeout( + [in,out] DWORD *pdwTimeout, + [in] IInternetTransport *pTransport); + + HRESULT OnLogonPrompt( + [in,out] LPINETSERVER pInetServer, + [in] IInternetTransport *pTransport); + + INT OnPrompt( + [in] HRESULT hrError, + [in] LPCSTR pszText, + [in] LPCSTR pszCaption, + [in] UINT uType, + [in] IInternetTransport *pTransport); + + HRESULT OnStatus( + [in] IXPSTATUS ixpstatus, + [in] IInternetTransport *pTransport); + + HRESULT OnError( + [in] IXPSTATUS ixpstatus, + [in] LPIXPRESULT pResult, + [in] IInternetTransport *pTransport); + + HRESULT OnCommand( + [in] CMDTYPE cmdtype, + [in] LPSTR pszLine, + [in] HRESULT hrResponse, + [in] IInternetTransport *pTransport); +} + +[ + object, + uuid(1F636C01-364E-11D0-81D3-00C04FD85AB4), + local +] +interface IInternetTransport : IUnknown +{ + const boolean iitAUTHENTICATE = TRUE; + const boolean iitDONT_AUTHENTICATe = FALSE; + const boolean iitENABLE_ONCOMMAND = TRUE; + const boolean iitDISABLE_ONCOMMAND = FALSE; + + typedef enum tagIXPISSTATE + { + IXP_IS_CONNECTED, + IXP_IS_BUSY, + IXP_IS_READY, + IXP_IS_AUTHENTICATED + } IXPISSTATE; + + HRESULT GetServerInfo( + [in,out] LPINETSERVER pInetServer); + + IXPTYPE GetIXPType(); + + HRESULT IsState( + [in] IXPISSTATE isstate); + + HRESULT InetServerFromAccount( + [in] IImnAccount *pAccount, + [in,out] LPINETSERVER pInetServer); + + HRESULT Connect( + [in] LPINETSERVER pInetServer, + [in] boolean fAuthenticate, + [in] boolean fCommandLogging); + + HRESULT HandsOffCallback(); + + HRESULT Disconnect(); + + HRESULT DropConnection(); + + HRESULT GetStatus( + [out] IXPSTATUS *pCurrentStatus); +} + +[ + object, + uuid(1F636C02-364E-11D0-81D3-00C04FD85AB4), + local +] +interface ISMTPCallback : ITransportCallback +{ + typedef enum tagSMTPCOMMAND + { + SMTP_NONE, + SMTP_BANNER, + SMTP_CONNECTED, + SMTP_SEND_MESSAGE, + SMTP_AUTH, + SMTP_EHLO, + SMTP_HELO, + SMTP_MAIL, + SMTP_RCPT, + SMTP_RSET, + SMTP_QUIT, + SMTP_DATA, + SMTP_DOT, + SMTP_SEND_STREAM, + SMTP_CUSTOM + } SMTPCOMMAND; + + typedef struct tagSMTPSTREAM + { + DWORD cbIncrement; + DWORD cbCurrent; + DWORD cbTotal; + } SMTPSTREAM, *LPSMTPSTREAM; + + typedef struct tagSMTPRESPONSE + { + SMTPCOMMAND command; + BOOL fDone; + IXPRESULT rIxpResult; + ISMTPTransport *pTransport; + + [switch_type(SMTPCOMMAND), switch_is(command)] + union + { + [case(SMTP_SEND_STREAM)] SMTPSTREAM rStreamInfo; + [default]; + }; + } SMTPRESPONSE, *LPSMTPRESPONSE; + + HRESULT OnResponse( + [in] LPSMTPRESPONSE pResponse); +} + +[ + object, + uuid(0DF2C7E2-3435-11D0-81D0-00C04FD85AB4), + local +] +interface ISMTPTransport : IInternetTransport +{ + typedef struct tagSMTPMESSAGE + { + ULONG cbSize; + LPSTREAM pstmMsg; + INETADDRLIST rAddressList; + } SMTPMESSAGE, *LPSMTPMESSAGE; + + HRESULT InitNew( + [in] LPSTR pszLogFilePath, + [in] ISMTPCallback *pCallback); + +cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") +cpp_quote("#undef SendMessage") +cpp_quote("#endif") + + HRESULT SendMessage( + [in] LPSMTPMESSAGE pMessage); + + HRESULT CommandMAIL( + [in] LPSTR pszEmailFrom); + + HRESULT CommandRCPT( + [in] LPSTR pszEmailTo); + + HRESULT CommandEHLO(); + + HRESULT CommandHELO(); + + HRESULT CommandAUTH( + [in] LPSTR pszAuthType); + + HRESULT CommandQUIT(); + + HRESULT CommandRSET(); + + HRESULT CommandDATA(); + + HRESULT CommandDOT(); + + HRESULT SendDataStream( + [in] IStream *pStream, + [in] ULONG cbSize); +} + +[ + object, + uuid(0DF2C7EC-3435-11D0-81D0-00C04FD85AB4), + local +] +interface ISMTPTransport2 : ISMTPTransport +{ + typedef struct tagSMTPMESSAGE2 + { + SMTPMESSAGE smtpMsg; + LPSTR pszDSNENVID; + DSNRET dsnRet; + DWORD dwReserved; + DWORD dwReserved2; + } SMTPMESSAGE2, *LPSMTPMESSAGE2; + + HRESULT SetWindow(); + + HRESULT ResetWindow(); + + HRESULT SendMessage2( + [in] LPSMTPMESSAGE2 pMessage); + + HRESULT CommandRCPT2( + [in] LPSTR pszEmailTo, + [in] INETADDRTYPE atDSN); +} + +/* FIXME: IDAVNamespaceArbiter, IPropPatchRequest, IPropFindRequest, IPropFindMultiResponse, IPropFindResponse, IHTTPMailCallback, IHTTPMailTransport */ + +[ + object, + uuid(0DF2C7E3-3435-11D0-81D0-00C04FD85AB4), + local +] +interface IPOP3Callback : ITransportCallback +{ + typedef enum tagPOP3COMMAND + { + POP3_NONE, + POP3_BANNER, + POP3_CONNECTED, + POP3_USER, + POP3_PASS, + POP3_AUTH, + POP3_UIDL, + POP3_STAT, + POP3_LIST, + POP3_DELE, + POP3_RETR, + POP3_TOP, + POP3_NOOP, + POP3_QUIT, + POP3_RSET, + POP3_CUSTOM + } POP3COMMAND; + + typedef struct tagPOP3RETR + { + BOOL fHeader; + BOOL fBody; + DWORD dwPopId; + DWORD cbSoFar; + LPSTR pszLines; + ULONG cbLines; + } POP3RETR, *LPPOP3RETR; + + typedef struct tagPOP3TOP + { + BOOL fHeader; + BOOL fBody; + DWORD dwPopId; + DWORD cPreviewLines; + DWORD cbSoFar; + LPSTR pszLines; + ULONG cbLines; + } POP3TOP, *LPPOP3TOP; + + typedef struct tagPOP3LIST + { + DWORD dwPopId; + DWORD cbSize; + } POP3LIST, *LPPOP3LIST; + + typedef struct tagPOP3UIDL + { + DWORD dwPopId; + LPSTR pszUidl; + } POP3UIDL, *LPPOP3UIDL; + + typedef struct tagPOP3STAT + { + DWORD cMessages; + DWORD cbMessages; + } POP3STAT, *LPPOP3STAT; + + typedef struct tagPOP3RESPONSE + { + POP3COMMAND command; + BOOL fDone; + IXPRESULT rIxpResult; + IPOP3Transport *pTransport; + BOOL fValidInfo; + [switch_type(POP3COMMAND), switch_is(command)] + union + { + [case(POP3_UIDL)] POP3UIDL rUidlInfo; + [case(POP3_STAT)] POP3STAT rStatInfo; + [case(POP3_LIST)] POP3LIST rListInfo; + [case(POP3_DELE)] DWORD dwPopId; + [case(POP3_RETR)] POP3RETR rRetrInfo; + [case(POP3_TOP)] POP3TOP rTopInfo; + [default]; + }; + } POP3RESPONSE, *LPPOP3RESPONSE; + + HRESULT OnResponse( + [in] LPPOP3RESPONSE pResponse); +} + +[ + object, + uuid(0DF2C7E4-3435-11D0-81D0-00C04FD85AB4), + local +] +interface IPOP3Transport : IInternetTransport +{ + typedef enum tagPOP3CMDTYPE + { + POP3CMD_GET_POPID, + POP3CMD_GET_MARKED, + POP3CMD_GET_ALL + } POP3CMDTYPE; + + typedef enum tagPOP3MARKTYPE + { + POP3_MARK_FOR_TOP = 0x01, + POP3_MARK_FOR_RETR = 0x02, + POP3_MARK_FOR_DELE = 0x04, + POP3_MARK_FOR_UIDL = 0x08, + POP3_MARK_FOR_LIST = 0x10 + } POP3MARKTYPE; + + HRESULT InitNew( + [in] LPSTR pszLogFilePath, + [in] IPOP3Callback *pCallback); + + HRESULT MarkItem( + [in] POP3MARKTYPE marktype, + [in] DWORD dwPopId, + [in] boolean fMarked); + + HRESULT CommandAUTH( + [in] LPSTR pszAuthType); + + HRESULT CommandUSER( + [in] LPSTR pszUserName); + + HRESULT CommandPASS( + [in] LPSTR pszPassword); + + HRESULT CommandLIST( + [in] POP3CMDTYPE cmdtype, + [in] DWORD dwPopId); + + HRESULT CommandTOP( + [in] POP3CMDTYPE cmdtype, + [in] DWORD dwPopId, + [in] DWORD cPreviewLines); + + HRESULT CommandQUIT(); + + HRESULT CommandSTAT(); + + HRESULT CommandNOOP(); + + HRESULT CommandRSET(); + + HRESULT CommandUIDL( + [in] POP3CMDTYPE cmdtype, + [in] DWORD dwPopId); + + HRESULT CommandDELE( + [in] POP3CMDTYPE cmdtype, + [in] DWORD dwPopId); + + HRESULT CommandRETR( + [in] POP3CMDTYPE cmdtype, + [in] DWORD dwPopId); +} + +/* FIXME: INNTPCallback, INNTPTransport */ + +/* FIXME: IRangeList */ + +/* FIXME: IIMAPCallback, IIMAPTransport */ + +#if 0 +cpp_quote("HRESULT WINAPI CreateRASTransport(IRASTransport **ppTransport);") +cpp_quote("HRESULT WINAPI CreateNNTPTransport(INNTPTransport **ppTransport);") +cpp_quote("HRESULT WINAPI CreateIMAPTransport(IIMAPTransport **ppTransport);") +cpp_quote("HRESULT WINAPI CreateIMAPTransport2(IIMAPTransport2 **ppTransport);") +cpp_quote("HRESULT WINAPI CreateRangeList(IRangeList **ppRangeList);") +#endif +cpp_quote("HRESULT WINAPI CreateSMTPTransport(ISMTPTransport **ppTransport);") +cpp_quote("HRESULT WINAPI CreatePOP3Transport(IPOP3Transport **ppTransport);")