From 8091df1285c1b9f78e612cb49a00f343f5b355a8 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Tue, 17 Aug 2010 21:04:39 +0300 Subject: modified: commonheaders.h modified: main.cpp modified: utilities.cpp --- utilities.cpp | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) (limited to 'utilities.cpp') diff --git a/utilities.cpp b/utilities.cpp index 85deb5c..b0a9131 100644 --- a/utilities.cpp +++ b/utilities.cpp @@ -332,9 +332,10 @@ int GetJabberInterface(WPARAM w, LPARAM l) //get interface for all jabber accoun static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pUserData) { HXML local_node = node; - for(int n = 0; n < xi.getChildCount(node); n++) + for(int n = 0; n <= xi.getChildCount(node); n++) { LPCTSTR str = xi.getText(local_node); + LPCTSTR nodename = xi.getName(local_node); if(str) { if(_tcsstr(str, _T("-----BEGIN PGP MESSAGE-----")) && _tcsstr(str, _T("-----END PGP MESSAGE-----"))) @@ -359,6 +360,86 @@ static JABBER_HANDLER_FUNC SendHandler(IJabberInterface *ji, HXML node, void *pU wstring::size_type p2 = data.find(_T("-----END PGP MESSAGE-----")); HXML encrypted_data = xi.addChild(node, _T("x"), data.substr(p1, p2-p1).c_str()); xi.addAttr(encrypted_data, _T("xmlns"), _T("jabber:x:encrypted")); + return FALSE; + } + } + if(nodename) + { + if(_tcsstr(nodename, _T("status"))) + { + TCHAR *path_c = UniGetContactSettingUtf(NULL, szGPGModuleName, "szHomePath", _T("")); + wstring path_out = path_c; + mir_free(path_c); + path_out += _T("\\prescense_text"); + wfstream f(path_out.c_str(), std::ios::out); + char *tmp = mir_utf8encodeW(str); + f< 0) + { + cmd += _T("--passphrase \""); + cmd += tmp; + cmd += _T("\" "); + } + else if(password) + { + cmd += _T("--passphrase \""); + cmd += password; + cmd += _T("\" "); + } + mir_free(tmp); + } + cmd += _T("--default-key "); + path_c = UniGetContactSettingUtf(NULL, szGPGModuleName, "KeyID", _T("")); + cmd += path_c; + mir_free(path_c); + cmd += _T(" --batch --yes -a -s \""); + cmd += path_out; + cmd += _T("\" "); + if(pxExecute(&cmd, "", &out, &code) == pxNotFound) + { + MessageBox(0, _T("Set path to gpg.exe first!"), _T("Warning"), MB_OK); + } + DeleteFile(path_out.c_str()); + path_out += _T(".asc"); + f.open(path_out.c_str(), std::ios::in); + wstring data; + while(!f.eof() && f.is_open()) + { + TCHAR tmp[128]; + f.getline(tmp, 128); + data.append(tmp); + data.append(_T("\n")); + } + DeleteFile(path_out.c_str()); + wstring::size_type p1 = data.find(_T("-----BEGIN PGP MESSAGE-----")) + _tcslen(_T("-----BEGIN PGP MESSAGE-----")); + if(data.find(_T("Version: "), p1) != wstring::npos) + { + p1 = data.find(_T("Version: "), p1); + p1 = data.find(_T("\n"), p1); + if(data.find(_T("Version: "), p1) != wstring::npos) + { + p1 = data.find(_T("Version: "), p1); + p1 = data.find(_T("\n"), p1)+2; + } + else + p1 += 2; + } + else + p1+=2; + wstring::size_type p2 = data.find(_T("-----END PGP MESSAGE-----")); + HXML encrypted_data = xi.addChild(node, _T("x"), data.substr(p1, p2-p1).c_str()); + xi.addAttr(encrypted_data, _T("xmlns"), _T("jabber:x:signed")); + return FALSE; + } } } local_node = xi.getChild(node, n); -- cgit v1.2.3