Пример #1
0
int __cdecl onContactSettingChanged(WPARAM wParam,LPARAM lParam) {

	HANDLE hContact = (HANDLE)wParam;
	DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam;
	if (!hContact || strcmp(cws->szSetting,"Status")) return 0;

	pUinKey ptr = getUinKey(hContact);
	int stat = getContactStatus(hContact);
	if (!ptr || stat == -1) return 0;

	if (stat == ID_STATUS_OFFLINE) { // go offline
		if (ptr->mode == MODE_NATIVE && cpp_keyx(ptr->cntx)) { // have active context
			cpp_delete_context(ptr->cntx); ptr->cntx=0; // reset context
			showPopupDC(hContact);	// show popup "Disabled"
			ShowStatusIconNotify(hContact); // change icon in CL
		}
		else if (ptr->mode == MODE_RSAAES && exp->rsa_get_state(ptr->cntx) == 7) {
			deleteRSAcntx(ptr);
			showPopupDC(hContact);	// show popup "Disabled"
			ShowStatusIconNotify(hContact); // change icon in CL
		}
	}
	else { // go not offline
		if (ptr->offlineKey) {
			cpp_reset_context(ptr->cntx);
			ptr->offlineKey = false;
		}
		ShowStatusIconNotify(hContact); // change icon in CL
	}
	return 0;
}
Пример #2
0
void __cdecl rsa_notify(HANDLE context, int state)
{
	pUinKey ptr = getUinCtx(context); if (!ptr) return;
	LPCSTR msg = NULL;

	Sent_NetLog("rsa_notify: 0x%x", state);

	switch (state) {
	case 1:
		showPopupEC(ptr->hContact);
		ShowStatusIconNotify(ptr->hContact);
		waitForExchange(ptr, 2); // досылаем сообщения из очереди
		return;

	case -1: // сессия разорвана по ошибке, неверный тип сообщения
		msg = sim501; break;
	case -2: // сессия разорвана по ошибке другой стороной
		msg = sim502; break;
	case -5: // ошибка декодирования AES сообщения
		msg = sim505; break;
	case -6: // ошибка декодирования RSA сообщения
		msg = sim506; break;
	case -7: // таймаут установки соединения (10 секунд)
		msg = sim507; break;
	case -8: // сессия разорвана по причине "disabled"
		msg = sim508; break;
	case -0x10: // сессия разорвана по ошибке
	case -0x21:
	case -0x22:
	case -0x23:
	case -0x24:
	case -0x32:
	case -0x33:
	case -0x34:
	case -0x40:
	case -0x50:
	case -0x60:
	{
		char buf[1024];
		mir_snprintf(buf, sim510, -state);
		showPopupDCmsg(ptr->hContact, buf);
		ShowStatusIconNotify(ptr->hContact);
		if (ptr->cntx) deleteRSAcntx(ptr);
		waitForExchange(ptr, 3); // досылаем нешифровано
	}
		return;

	case -3: // соединение разорвано вручную
	case -4: // соединение разорвано вручную другой стороной
		showPopupDC(ptr->hContact);
		ShowStatusIconNotify(ptr->hContact);
		if (ptr->cntx) deleteRSAcntx(ptr);
		waitForExchange(ptr, 3); // досылаем нешифровано
		return;

	default:
		return;
	}
	showPopupDCmsg(ptr->hContact, msg);
	ShowStatusIconNotify(ptr->hContact);
	if (ptr->cntx) deleteRSAcntx(ptr);
	waitForExchange(ptr, 3); // досылаем нешифровано
}
Пример #3
0
void __cdecl rsa_notify(HANDLE context, int state) {
    pUinKey ptr = getUinCtx(context);
    if(!ptr) return;
    LPCSTR msg=NULL;
#if defined(_DEBUG) || defined(NETLIB_LOG)
    Sent_NetLog("rsa_notify: 0x%x", state);
#endif
    switch( state ) {
    case 1: {
        showPopUpEC(ptr->hContact);
        ShowStatusIconNotify(ptr->hContact);
        waitForExchange(ptr,2); // досылаем сообщения из очереди
        return;
    }
    case -1: // сессия разорвана по ошибке, неверный тип сообщения
        msg=sim501;
        break;
    case -2: // сессия разорвана по ошибке другой стороной
        msg=sim502;
        break;
    case -5: // ошибка декодирования AES сообщения
        msg=sim505;
        break;
    case -6: // ошибка декодирования RSA сообщения
        msg=sim506;
        break;
    case -7: // таймаут установки соединения (10 секунд)
        msg=sim507;
        break;
    case -8: { // сессия разорвана по причине "disabled"
        msg=sim508;
//		ptr->status=ptr->tstatus=STATUS_DISABLED;
//		DBWriteContactSettingByte(ptr->hContact, szModuleName, "StatusID", ptr->status);
    }
    break;
    case -0x10: // сессия разорвана по ошибке
    case -0x21:
    case -0x22:
    case -0x23:
    case -0x24:
    case -0x32:
    case -0x33:
    case -0x34:
    case -0x40:
    case -0x50:
    case -0x60: {
        char buf[1024];
        sprintf(buf,sim510,-state);
        showPopUpDCmsg(ptr->hContact,buf);
        ShowStatusIconNotify(ptr->hContact);
        if(ptr->cntx) deleteRSAcntx(ptr);
        waitForExchange(ptr,3); // досылаем нешифровано
        return;
    }
    case -3: // соединение разорвано вручную
    case -4: { // соединение разорвано вручную другой стороной
        showPopUpDC(ptr->hContact);
        ShowStatusIconNotify(ptr->hContact);
        if(ptr->cntx) deleteRSAcntx(ptr);
        waitForExchange(ptr,3); // досылаем нешифровано
        return;
    }
    default:
        return;
    }
    showPopUpDCmsg(ptr->hContact,msg);
    ShowStatusIconNotify(ptr->hContact);
    if(ptr->cntx) deleteRSAcntx(ptr);
    waitForExchange(ptr,3); // досылаем нешифровано
}