summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-09-23 23:59:55 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-09-23 23:59:55 +0300
commit78f0ecedfbf15b6c093afc2d5ac159805fe9acda (patch)
tree457056963a01b2485be4f724df02d39c2a9e6f6a
parent538c201686084c9a8d575aec6d87faaeb1ffdf50 (diff)
basic file transfer hook
-rw-r--r--init.cpp6
-rw-r--r--new_gpg.rc3
-rw-r--r--options.cpp4
-rw-r--r--resource.h3
-rw-r--r--utilities.cpp25
5 files changed, 37 insertions, 4 deletions
diff --git a/init.cpp b/init.cpp
index 1b0ac9c..d0a6dff 100644
--- a/init.cpp
+++ b/init.cpp
@@ -17,7 +17,7 @@
#include "commonheaders.h"
//global variables
-bool bAppendTags = false, bDebugLog = false, bJabberAPI = false, bIsMiranda09 = false, bMetaContacts = false;
+bool bAppendTags = false, bDebugLog = false, bJabberAPI = false, bIsMiranda09 = false, bMetaContacts = false, bFileTransfers = false;
TCHAR *inopentag = NULL, *inclosetag = NULL, *outopentag = NULL, *outclosetag = NULL, *password = NULL;
list <JabberAccount*> Accounts;
@@ -89,6 +89,7 @@ void init_vars()
bDebugLog = DBGetContactSettingByte(NULL, szGPGModuleName, "bDebugLog", 0);
debuglog.init();
bJabberAPI = DBGetContactSettingByte(NULL, szGPGModuleName, "bJabberAPI", bIsMiranda09?1:0);
+ bFileTransfers = DBGetContactSettingByte(NULL, szGPGModuleName, "bFileTransfers", 1);
}
extern "C" int __declspec(dllexport) Load(PLUGINLINK *link)
@@ -150,6 +151,7 @@ static int OnModulesLoaded(WPARAM wParam,LPARAM lParam)
int onIconPressed(WPARAM wParam, LPARAM lParam);
int onExtraImageListRebuilding(WPARAM, LPARAM);
int onExtraImageApplying(WPARAM wParam, LPARAM);
+ int onProtoAck(WPARAM, LPARAM);
void InitIconLib();
void InitCheck();
@@ -190,6 +192,8 @@ static int OnModulesLoaded(WPARAM wParam,LPARAM lParam)
if(bJabberAPI && bIsMiranda09)
HookEvent(ME_PROTO_ACCLISTCHANGED, GetJabberInterface);
+ HookEvent(ME_PROTO_ACK, onProtoAck);
+
HookEvent(ME_CLIST_PREBUILDCONTACTMENU, OnPreBuildContactMenu);
HookEvent(ME_MSG_WINDOWEVENT, onWindowEvent);
diff --git a/new_gpg.rc b/new_gpg.rc
index ed93501..34a8e42 100644
--- a/new_gpg.rc
+++ b/new_gpg.rc
@@ -324,6 +324,7 @@ BEGIN
CONTROL "Use jabber api on Miranda IM >= 0.9 (recomended)",IDC_JABBER_API,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,175,181,10
LTEXT "Статический",IDC_CURRENT_KEY,97,196,116,8
+ CONTROL "Encrypt file transfers",IDC_FILE_TRANSFERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,185,137,10
END
IDD_OPT_GPG_BIN DIALOGEX 0, 0, 282, 214
@@ -334,7 +335,7 @@ BEGIN
PUSHBUTTON "Browse",IDC_SET_HOME_DIR,217,44,38,14
EDITTEXT IDC_BIN_PATH,7,17,195,14,ES_AUTOHSCROLL
EDITTEXT IDC_HOME_DIR,7,44,195,14,ES_AUTOHSCROLL
- LTEXT "GnuPG2 binary:",IDC_STATIC,10,7,147,8
+ LTEXT "GnuPG binary:",IDC_STATIC,10,7,147,8
LTEXT "Home directory:",IDC_STATIC,9,34,144,8
END
diff --git a/options.cpp b/options.cpp
index 6266c05..4412ea7 100644
--- a/options.cpp
+++ b/options.cpp
@@ -187,6 +187,7 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
}
if(bIsMiranda09)
CheckStateLoadDB(hwndDlg, IDC_JABBER_API, "bJabberAPI", 1);
+ CheckStateLoadDB(hwndDlg, IDC_FILE_TRANSFERS, "bFileTransfers", 1);
return TRUE;
}
@@ -384,11 +385,12 @@ static BOOL CALLBACK DlgProcGpgOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
case PSN_APPLY:
{
- extern bool bDebugLog, bJabberAPI;
+ extern bool bDebugLog, bJabberAPI, bFileTransfers;
bDebugLog = CheckStateStoreDB(hwndDlg, IDC_DEBUG_LOG, "bDebugLog");
if(bDebugLog)
debuglog.init();
bJabberAPI = CheckStateStoreDB(hwndDlg, IDC_JABBER_API, "bJabberAPI");
+ bFileTransfers = CheckStateStoreDB(hwndDlg, IDC_FILE_TRANSFERS, "bFileTransfers");
{
TCHAR tmp[512];
GetDlgItemText(hwndDlg, IDC_LOG_FILE_EDIT, tmp, 512);
diff --git a/resource.h b/resource.h
index a217a6e..3c850b3 100644
--- a/resource.h
+++ b/resource.h
@@ -67,6 +67,7 @@
#define IDC_CURRENT_KEY 1054
#define IDC_DEFAULT_PASSWORD 1055
#define IDC_KEYSERVER 1058
+#define IDC_FILE_TRANSFERS 1061
// Next default values for new objects
//
@@ -74,7 +75,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 114
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1061
+#define _APS_NEXT_CONTROL_VALUE 1062
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/utilities.cpp b/utilities.cpp
index dbff3b0..dc86ecf 100644
--- a/utilities.cpp
+++ b/utilities.cpp
@@ -270,6 +270,31 @@ int OnPreBuildContactMenu(WPARAM w, LPARAM l)
return 0;
}
+int onProtoAck(WPARAM w, LPARAM l)
+{
+ extern bool bFileTransfers;
+ bool isContactHaveKey(HANDLE);
+ ACKDATA *ack=(ACKDATA*)l;
+ if (ack->type!=ACKTYPE_FILE)
+ return 0;
+ if(!isContactHaveKey(ack->hContact))
+ return 0;
+ PROTOFILETRANSFERSTATUS *f = (PROTOFILETRANSFERSTATUS*) ack->lParam;
+ if (f && f->sending && !bFileTransfers)
+ return 0;
+ switch(ack->result)
+ {
+ case ACKRESULT_DENIED: case ACKRESULT_FAILED:
+ {
+ }
+ break;
+ case ACKRESULT_NEXTFILE: case ACKRESULT_SUCCESS:
+ {
+ }
+ break;
+ }
+ return 0;
+}
void storeOutput(HANDLE ahandle, string *output)
{