#include "ssl.h"
#ifdef WINDOWS
-#pragma comment(lib, "libeay32MTd")
-#pragma comment(lib, "ssleay32MTd")
-#undef MAX_DESCRIPTORS
-#define MAX_DESCRIPTORS 10000
+# pragma comment(lib, "libcrypto.lib")
+# pragma comment(lib, "libssl.lib")
+# pragma comment(lib, "user32.lib")
+# pragma comment(lib, "advapi32.lib")
+# pragma comment(lib, "libgcc.lib")
+# pragma comment(lib, "libmingwex.lib")
+# pragma comment(lib, "gdi32.lib")
+# undef MAX_DESCRIPTORS
+# define MAX_DESCRIPTORS 10000
#endif
/* $ModDesc: Provides SSL support for clients */
void OnRehash(User* user)
{
- ConfigReader Conf;
-
sslports.clear();
- for (size_t i = 0; i < ServerInstance->ports.size(); i++)
+ ConfigTag* Conf = ServerInstance->Config->ConfValue("openssl");
+
+ if (Conf->getBool("showports", true))
{
- ListenSocket* port = ServerInstance->ports[i];
- if (port->bind_tag->getString("ssl") != "openssl")
- continue;
-
- std::string portid = port->bind_desc;
- ServerInstance->Logs->Log("m_ssl_openssl", DEFAULT, "m_ssl_openssl.so: Enabling SSL for port %s", portid.c_str());
- if (port->bind_tag->getString("type", "clients") == "clients" && port->bind_addr != "127.0.0.1")
- sslports.append(portid).append(";");
- }
+ for (size_t i = 0; i < ServerInstance->ports.size(); i++)
+ {
+ ListenSocket* port = ServerInstance->ports[i];
+ if (port->bind_tag->getString("ssl") != "openssl")
+ continue;
+
+ std::string portid = port->bind_desc;
+ ServerInstance->Logs->Log("m_ssl_openssl", DEFAULT, "m_ssl_openssl.so: Enabling SSL for port %s", portid.c_str());
+ if (port->bind_tag->getString("type", "clients") == "clients" && port->bind_addr != "127.0.0.1")
+ sslports.append(portid).append(";");
+ }
- if (!sslports.empty())
- sslports.erase(sslports.end() - 1);
+ if (!sslports.empty())
+ sslports.erase(sslports.end() - 1);
+ }
}
void OnModuleRehash(User* user, const std::string ¶m)
{
if (sessions[user->eh.GetFd()].sess)
{
- SSLCertSubmission(user, this, ServerInstance->Modules->Find("m_sslinfo.so"), sessions[user->eh.GetFd()].cert);
-
if (!sessions[user->eh.GetFd()].cert->fingerprint.empty())
user->WriteServ("NOTICE %s :*** You are connected using SSL fingerprint %s",
user->nick.c_str(), sessions[user->eh.GetFd()].cert->fingerprint.c_str());
if (ret > 0)
{
recvq.append(buffer, ret);
+ if (session->data_to_write)
+ ServerInstance->SE->ChangeEventMask(user, FD_WANT_POLL_READ | FD_WANT_SINGLE_WRITE);
return 1;
}
else if (ret == 0)
}
else if (err == SSL_ERROR_WANT_READ)
{
- ServerInstance->SE->ChangeEventMask(user, FD_WANT_POLL_READ | FD_WANT_NO_WRITE);
+ ServerInstance->SE->ChangeEventMask(user, FD_WANT_POLL_READ);
return 0;
}
else