summaryrefslogtreecommitdiff
path: root/protocols/JabberG/src/jabber_proto.h
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/JabberG/src/jabber_proto.h')
-rw-r--r--protocols/JabberG/src/jabber_proto.h92
1 files changed, 84 insertions, 8 deletions
diff --git a/protocols/JabberG/src/jabber_proto.h b/protocols/JabberG/src/jabber_proto.h
index 83d13b8797..3c6000f8d9 100644
--- a/protocols/JabberG/src/jabber_proto.h
+++ b/protocols/JabberG/src/jabber_proto.h
@@ -5,7 +5,7 @@ Jabber Protocol Plugin for Miranda NG
Copyright (c) 2002-04 Santithorn Bunchua
Copyright (c) 2005-12 George Hazan
Copyright (c) 2007 Maxim Mluhov
-Copyright (C) 2012-24 Miranda NG team
+Copyright (C) 2012-25 Miranda NG team
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -74,7 +74,73 @@ struct CChatMark
CMStringA szId, szFrom;
};
+// basic class - provides interface for various Jabber auth
+class TJabberAuth : public MZeroedObject
+{
+protected: bool bIsValid = true;
+ ptrA szName;
+ unsigned complete;
+ int priority;
+ ThreadData *info;
+public:
+ TJabberAuth(ThreadData *pInfo, const char *pszMech) :
+ info(pInfo),
+ szName(mir_strdup(pszMech))
+ {}
+
+ virtual ~TJabberAuth() {}
+
+ virtual char* getInitialRequest() { return nullptr; }
+ virtual char* getChallenge(const char*) { return nullptr; }
+ virtual bool validateLogin(const char*) { return true; }
+
+ __forceinline int getPriority() const {
+ return priority;
+ }
+
+ __forceinline const char *getName() const {
+ return szName;
+ }
+
+ __forceinline bool isValid() const {
+ return bIsValid;
+ }
+};
+
+class TUpgradeTask : public MZeroedObject
+{
+protected:
+ ptrA szName, szInitData;
+ ThreadData *info;
+ int priority;
+
+public:
+ TUpgradeTask(ThreadData *pInfo, const char *pszMech) :
+ info(pInfo),
+ szName(mir_strdup(pszMech))
+ {}
+
+ virtual ~TUpgradeTask() {}
+
+ __forceinline const char *getInitData() const {
+ return szInitData;
+ }
+
+ __forceinline const char *getName() const {
+ return szName;
+ }
+
+ __forceinline int getPriority() const {
+ return priority;
+ }
+
+ void setInitData(const char *pszData) {
+ szInitData = mir_strdup(pszData);
+ }
+
+ virtual bool perform(const TiXmlElement *src, TiXmlElement *dest) = 0;
+};
struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
{
@@ -385,7 +451,7 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
//---- jabber_adhoc.cpp --------------------------------------------------------------
- int __cdecl ContactMenuRunCommands(WPARAM wParam, LPARAM lParam);
+ INT_PTR __cdecl ContactMenuRunCommands(WPARAM wParam, LPARAM lParam);
HWND GetWindowFromIq(CJabberIqInfo *pInfo);
bool HandleAdhocCommandRequest(const TiXmlElement *iqNode, CJabberIqInfo *pInfo);
@@ -430,7 +496,7 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
INT_PTR __cdecl OnMenuHandleBookmarks(WPARAM wParam, LPARAM lParam);
- int AddEditBookmark(JABBER_LIST_ITEM *item);
+ int AddEditBookmark(JABBER_LIST_ITEM *item, MWindow hwndParent = 0);
//---- jabber_notes.c -----------------------------------------------------------------
@@ -533,7 +599,7 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
//---- jabber_file.cpp ---------------------------------------------------------------
- void FileProcessHttpDownload(MCONTACT, const char *jid, const char *pszUrl, const char *pszDescr);
+ void FileProcessHttpDownload(DB::EventInfo &dbei, const char *pszUrl, const char *pszDescr);
int FileReceiveParse(filetransfer *ft, char* buffer, int datalen);
int FileSendParse(HNETLIBCONN s, filetransfer *ft, char* buffer, int datalen);
@@ -726,8 +792,9 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
INT_PTR __cdecl OnMenuTransportLogin(WPARAM wParam, LPARAM lParam);
INT_PTR __cdecl OnMenuTransportResolve(WPARAM wParam, LPARAM lParam);
- void GlobalMenuInit(void);
- void GlobalMenuUninit(void);
+ static void GlobalMenuInit();
+ void MenuInit(void);
+ void MenuUninit(void);
void MenuUpdateSrmmIcon(JABBER_LIST_ITEM *item);
@@ -827,6 +894,15 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
void SearchDeleteFromRecent(const char *szAddr, bool deleteLastFromDB);
void SearchAddToRecent(const char *szAddr, HWND hwndDialog = nullptr);
+ //---- jabber_auth.cpp ---------------------------------------------------------------
+
+ OBJLIST<TJabberAuth> m_arAuthMechs;
+
+ OBJLIST<TUpgradeTask> m_arSaslUpgrade;
+ void OnProcessChannelBinding(const TiXmlElement *node);
+ bool OnProcessMechanism(const TiXmlElement *node, ThreadData *info);
+ void OnProcessUpgrade(const TiXmlElement *node, ThreadData *info);
+
//---- jabber_svc.c ------------------------------------------------------------------
void CheckMenuItems();
@@ -856,7 +932,6 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
ptrA m_szGroupDelimiter;
ptrW m_savedPassword;
- OBJLIST<class TJabberAuth> m_arAuthMechs;
bool m_hasSession, m_hasAuth, m_hasSasl2;
void __cdecl ServerThread(JABBER_CONN_DATA *info);
@@ -868,6 +943,8 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
void OnProcessError(const TiXmlElement *node, ThreadData *info);
void OnProcessSuccess(const TiXmlElement *node, ThreadData *info);
void OnProcessChallenge(const TiXmlElement *node, ThreadData *info);
+ void OnProcessContinue(const TiXmlElement *node, ThreadData *info);
+ void OnProcessTaskData(const TiXmlElement *node, ThreadData *info);
void OnProcessProceed(const TiXmlElement *node, ThreadData *info);
void OnProcessCompressed(const TiXmlElement *node, ThreadData *info);
//message processing helpers
@@ -884,7 +961,6 @@ struct CJabberProto : public PROTO<CJabberProto>, public IJabberInterface
void PerformRegistration(ThreadData *info);
void PerformIqAuth(ThreadData *info);
void PerformAuthentication(ThreadData *info);
- bool OnProcessMechanism(const TiXmlElement *node, ThreadData *info);
void OnProcessFeatures(const TiXmlElement *node, ThreadData *info);
void xmlStreamInitialize(char *which);