summaryrefslogtreecommitdiff
path: root/plugins/SecureIM/src/commonheaders.cpp
blob: b042f486f6a4cbf7de9d0f32ba528f2e9eed0a9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include "commonheaders.h"

HINSTANCE g_hIconInst;

char TEMP[MAX_PATH];
int  TEMP_SIZE = 0;

HANDLE   g_hEvent[2], g_hCLIcon, g_hFolders = nullptr;
HGENMENU g_hMenu[15];

int iService = 0;
int iHook = 0;

HICON g_hICO[ICO_CNT], g_hPOP[POP_CNT], g_hIEC[1 + IEC_CNT*MODE_CNT] = {};
HANDLE g_IEC[1 + IEC_CNT*MODE_CNT];

int iBmpDepth;
BOOL bPopupExists = false;
BOOL bPGPloaded = false, bPGPkeyrings = false, bUseKeyrings = false, bPGPprivkey = false;
BOOL bGPGloaded = false, bGPGkeyrings = false, bSavePass = false;
BOOL bSFT, bSOM, bASI, bMCD, bSCM, bDGP, bAIP, bNOL, bAAK, bMCM;
BYTE bPGP, bGPG;
mir_cs localQueueMutex;

LPSTR myDBGetStringDecode(MCONTACT hContact, const char *szModule, const char *szSetting)
{
	char *val = db_get_sa(hContact, szModule, szSetting);
	if (!val) return nullptr;
	size_t len = mir_strlen(val) + 64;
	char *buf = (LPSTR)mir_alloc(len);
	strncpy(buf, val, len); mir_free(val);
	return buf;
}

int myDBWriteStringEncode(MCONTACT hContact, const char *szModule, const char *szSetting, const char *val)
{
	int len = (int)mir_strlen(val) + 64;
	char *buf = (LPSTR)alloca(len);
	strncpy(buf, val, len);
	int ret = db_set_s(hContact, szModule, szSetting, buf);
	return ret;
}

void GetFlags()
{
	bSFT = db_get_b(0, MODULENAME, "sft", 0);
	bSOM = db_get_b(0, MODULENAME, "som", 0);
	bASI = db_get_b(0, MODULENAME, "asi", 0);
	bMCD = db_get_b(0, MODULENAME, "mcd", 0);
	bSCM = db_get_b(0, MODULENAME, "scm", 0);
	bDGP = db_get_b(0, MODULENAME, "dgp", 0);
	bAIP = db_get_b(0, MODULENAME, "aip", 0);
	bNOL = db_get_b(0, MODULENAME, "nol", 0);
	bAAK = db_get_b(0, MODULENAME, "aak", 0);
	bMCM = db_get_b(0, MODULENAME, "mcm", 0);
}

void SetFlags()
{
	db_set_b(0, MODULENAME, "sft", bSFT);
	db_set_b(0, MODULENAME, "som", bSOM);
	db_set_b(0, MODULENAME, "asi", bASI);
	db_set_b(0, MODULENAME, "mcd", bMCD);
	db_set_b(0, MODULENAME, "scm", bSCM);
	db_set_b(0, MODULENAME, "dgp", bDGP);
	db_set_b(0, MODULENAME, "aip", bAIP);
	db_set_b(0, MODULENAME, "nol", bNOL);
	db_set_b(0, MODULENAME, "aak", bAAK);
	db_set_b(0, MODULENAME, "mcm", bMCM);
}

int msgbox(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
{
	LPWSTR lpwText = mir_a2u(lpText);
	LPWSTR lpwCaption = mir_a2u(lpCaption);
	int r = MessageBoxW(hWnd, TranslateW(lpwText), TranslateW(lpwCaption), uType);
	mir_free(lpwCaption);
	mir_free(lpwText);
	return r;
}

void CopyToClipboard(HWND hwnd, LPSTR msg)
{
	HGLOBAL hglbCopy = GlobalAlloc(GMEM_MOVEABLE, mir_strlen(msg) + 1);
	LPSTR lpstrCopy = (LPSTR)GlobalLock(hglbCopy);
	mir_strcpy(lpstrCopy, msg);
	GlobalUnlock(hglbCopy);

	if(OpenClipboard(nullptr)) {
		EmptyClipboard();
		SetClipboardData(CF_TEXT, hglbCopy);
		CloseClipboard();
	}
}

HNETLIBUSER hNetlibUser;

void InitNetlib()
{
	NETLIBUSER nl_user = {};
	nl_user.szSettingsModule = (LPSTR)MODULENAME;
	nl_user.szDescriptiveName.a = (LPSTR)MODULENAME;
	nl_user.flags = NUF_NOOPTIONS;

	hNetlibUser = Netlib_RegisterUser(&nl_user);
}

void DeinitNetlib()
{
	Netlib_CloseHandle(hNetlibUser);
}

int Sent_NetLog(const char *fmt, ...)
{
	va_list va;
	char szText[1024];

	va_start(va, fmt);
	mir_vsnprintf(szText, sizeof(szText), fmt, va);
	va_end(va);
	return Netlib_Log(hNetlibUser, szText);
}