- ISHRequest* ISR = (ISHRequest*)request;
- if (strcmp("IS_NAME", request->GetId()) == 0)
- {
- return "openssl";
- }
- else if (strcmp("IS_HOOK", request->GetId()) == 0)
- {
- const char* ret = "OK";
- try
- {
- ret = ISR->Sock->AddIOHook((Module*)this) ? "OK" : NULL;
- }
- catch (ModuleException &e)
- {
- return NULL;
- }
-
- return ret;
- }
- else if (strcmp("IS_UNHOOK", request->GetId()) == 0)
- {
- return ISR->Sock->DelIOHook() ? "OK" : NULL;
- }
- else if (strcmp("IS_HSDONE", request->GetId()) == 0)
- {
- if (ISR->Sock->GetFd() < 0)
- return "OK";
-
- issl_session* session = &sessions[ISR->Sock->GetFd()];
- return (session->status == ISSL_HANDSHAKING) ? NULL : "OK";
- }
- else if (strcmp("IS_ATTACH", request->GetId()) == 0)
- {
- issl_session* session = &sessions[ISR->Sock->GetFd()];
- if (session->sess)
- {
- VerifyCertificate(session, (BufferedSocket*)ISR->Sock);
- return "OK";
- }
- }
- else if (strcmp("GET_FP", request->GetId()) == 0)
- {
- if (ISR->Sock->GetFd() > -1)
- {
- issl_session* session = &sessions[ISR->Sock->GetFd()];
- if (session->sess)
- {
- Extensible* ext = ISR->Sock;
- ssl_cert* certinfo;
- if (ext->GetExt("ssl_cert",certinfo))
- return certinfo->GetFingerprint().c_str();
- }
- }
- }
- return NULL;