summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-09 19:00:09 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-10-09 19:00:09 +0000
commitb6a5e2bd143cdd2fc610f79c87729d2e211da7ff (patch)
treeba36be3c5ccbea6153c2f4785fdbb9b0736db1ad /src/modules
parentc4d6ce8c5e1802e5b834d5845e31c3adf7700585 (diff)
Add server ports to ServerInstance->ports, enable SSL on them using OnHookIO
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11810 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/extra/m_sqlite3.cpp2
-rw-r--r--src/modules/extra/m_ssl_gnutls.cpp15
-rw-r--r--src/modules/extra/m_ssl_openssl.cpp12
-rw-r--r--src/modules/m_httpd.cpp3
-rw-r--r--src/modules/m_spanningtree/override_stats.cpp17
-rw-r--r--src/modules/m_spanningtree/treesocket1.cpp23
-rw-r--r--src/modules/m_spanningtree/utils.cpp20
-rw-r--r--src/modules/m_spanningtree/utils.h9
8 files changed, 43 insertions, 58 deletions
diff --git a/src/modules/extra/m_sqlite3.cpp b/src/modules/extra/m_sqlite3.cpp
index 680053bf1..cb4fb0b5e 100644
--- a/src/modules/extra/m_sqlite3.cpp
+++ b/src/modules/extra/m_sqlite3.cpp
@@ -74,7 +74,7 @@ class SQLiteListener : public ListenSocketBase
FileReader* index;
public:
- SQLiteListener(ModuleSQLite3* P, int port, const std::string &addr) : ListenSocketBase(port, addr), Parent(P)
+ SQLiteListener(ModuleSQLite3* P, int port, const std::string &addr) : ListenSocketBase(port, addr, "ITC", "none"), Parent(P)
{
uslen = sizeof(sock_us);
if (getsockname(this->fd,(sockaddr*)&sock_us,&uslen))
diff --git a/src/modules/extra/m_ssl_gnutls.cpp b/src/modules/extra/m_ssl_gnutls.cpp
index 3530b0e1f..fd572492a 100644
--- a/src/modules/extra/m_ssl_gnutls.cpp
+++ b/src/modules/extra/m_ssl_gnutls.cpp
@@ -122,8 +122,6 @@ class CommandStartTLS : public Command
class ModuleSSLGnuTLS : public Module
{
- std::set<ListenSocketBase*> listenports;
-
issl_session* sessions;
gnutls_certificate_credentials x509_cred;
@@ -171,21 +169,18 @@ class ModuleSSLGnuTLS : public Module
{
ConfigReader Conf;
- listenports.clear();
sslports.clear();
for (size_t i = 0; i < ServerInstance->ports.size(); i++)
{
ListenSocketBase* port = ServerInstance->ports[i];
- std::string desc = port->GetDescription();
- if (desc != "gnutls")
+ if (port->hook != "gnutls")
continue;
- listenports.insert(port);
- std::string portid = port->GetBindDesc();
-
+ const std::string& portid = port->GetBindDesc();
ServerInstance->Logs->Log("m_ssl_gnutls", DEFAULT, "m_ssl_gnutls.so: Enabling SSL for port %s", portid.c_str());
- if (port->GetIP() != "127.0.0.1")
+
+ if (port->type == "clients" && port->GetIP() != "127.0.0.1")
sslports.append(portid).append(";");
}
@@ -345,7 +340,7 @@ class ModuleSSLGnuTLS : public Module
void OnHookIO(StreamSocket* user, ListenSocketBase* lsb)
{
- if (!user->GetIOHook() && listenports.find(lsb) != listenports.end())
+ if (!user->GetIOHook() && lsb->hook == "gnutls")
{
/* Hook the user with our module */
user->AddIOHook(this);
diff --git a/src/modules/extra/m_ssl_openssl.cpp b/src/modules/extra/m_ssl_openssl.cpp
index 8af930aa9..a348726e7 100644
--- a/src/modules/extra/m_ssl_openssl.cpp
+++ b/src/modules/extra/m_ssl_openssl.cpp
@@ -81,8 +81,6 @@ static int OnVerify(int preverify_ok, X509_STORE_CTX *ctx)
class ModuleSSLOpenSSL : public Module
{
- std::set<ListenSocketBase*> listenports;
-
int inbufsize;
issl_session* sessions;
@@ -135,7 +133,7 @@ class ModuleSSLOpenSSL : public Module
void OnHookIO(StreamSocket* user, ListenSocketBase* lsb)
{
- if (!user->GetIOHook() && listenports.find(lsb) != listenports.end())
+ if (!user->GetIOHook() && lsb->hook == "openssl")
{
/* Hook the user with our module */
user->AddIOHook(this);
@@ -146,21 +144,17 @@ class ModuleSSLOpenSSL : public Module
{
ConfigReader Conf;
- listenports.clear();
sslports.clear();
for (size_t i = 0; i < ServerInstance->ports.size(); i++)
{
ListenSocketBase* port = ServerInstance->ports[i];
- std::string desc = port->GetDescription();
- if (desc != "openssl")
+ if (port->hook != "openssl")
continue;
- listenports.insert(port);
std::string portid = port->GetBindDesc();
-
ServerInstance->Logs->Log("m_ssl_openssl", DEFAULT, "m_ssl_openssl.so: Enabling SSL for port %s", portid.c_str());
- if (port->GetIP() != "127.0.0.1")
+ if (port->type == "clients" && port->GetIP() != "127.0.0.1")
sslports.append(portid).append(";");
}
diff --git a/src/modules/m_httpd.cpp b/src/modules/m_httpd.cpp
index 9d1acfbb9..88b635f6f 100644
--- a/src/modules/m_httpd.cpp
+++ b/src/modules/m_httpd.cpp
@@ -341,7 +341,8 @@ class HttpListener : public ListenSocketBase
FileReader* index;
public:
- HttpListener(FileReader *idx, int port, const std::string &addr) : ListenSocketBase(port, addr)
+ HttpListener(FileReader *idx, int port, const std::string &addr)
+ : ListenSocketBase(port, addr, "httpd", "plaintext")
{
this->index = idx;
}
diff --git a/src/modules/m_spanningtree/override_stats.cpp b/src/modules/m_spanningtree/override_stats.cpp
index 09d0a691d..f43aa8d3b 100644
--- a/src/modules/m_spanningtree/override_stats.cpp
+++ b/src/modules/m_spanningtree/override_stats.cpp
@@ -65,23 +65,6 @@ ModResult ModuleSpanningTree::OnStats(char statschar, User* user, string_list &r
}
return MOD_RES_DENY;
}
-
- if (statschar == 'p')
- {
- /* show all server ports, after showing client ports. -- w00t */
-
- for (unsigned int i = 0; i < Utils->Bindings.size(); i++)
- {
- std::string ip = Utils->Bindings[i]->GetIP();
- if (ip.empty())
- ip = "*";
-
- std::string transport(Utils->Bindings[i]->Hook);
-
- results.push_back(ServerInstance->Config->ServerName + " 249 "+user->nick+" :" + ip + ":" + ConvToStr(Utils->Bindings[i]->GetPort())+
- " (server, " + transport + ")");
- }
- }
return MOD_RES_PASSTHRU;
}
diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp
index 2c845bbd4..432ee2a09 100644
--- a/src/modules/m_spanningtree/treesocket1.cpp
+++ b/src/modules/m_spanningtree/treesocket1.cpp
@@ -38,9 +38,30 @@ TreeSocket::TreeSocket(SpanningTreeUtilities* Util, const std::string& shost, in
capab_phase = 0;
proto_version = 0;
LinkState = CONNECTING;
+ if (!hook.empty())
+ {
+ modulelist* ml = ServerInstance->Modules->FindInterface("BufferedSocketHook");
+ if (ml)
+ {
+ for(modulelist::iterator i = ml->begin(); i != ml->end(); ++i)
+ {
+ std::string name = (**i).ModuleSourceFile;
+ int a = name.rfind('_');
+ int b = name.rfind('.');
+ name = name.substr(a, b-a-1);
+ if (name == hook)
+ {
+ AddIOHook(*i);
+ goto found;
+ }
+ }
+ }
+ SetError("Could not find hook '" + hook + "' for connection to " + ServerName);
+ return;
+ }
+found:
DoConnect(shost, iport, maxtime, bindto);
Utils->timeoutlist[this] = std::pair<std::string, int>(ServerName, maxtime);
- // TODO AddIOHook using the given hook
SendCapabilities(1);
}
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index 3b70fce31..09333fdd2 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -153,9 +153,10 @@ SpanningTreeUtilities::SpanningTreeUtilities(ModuleSpanningTree* C) : Creator(C)
bool SpanningTreeUtilities::cull()
{
- for (unsigned int i = 0; i < Bindings.size(); i++)
+ for (unsigned int i = 0; i < ServerInstance->ports.size(); i++)
{
- Bindings[i]->cull();
+ if (ServerInstance->ports[i]->type == "servers")
+ ServerInstance->ports[i]->cull();
}
while (TreeRoot->ChildCount())
@@ -177,9 +178,10 @@ bool SpanningTreeUtilities::cull()
SpanningTreeUtilities::~SpanningTreeUtilities()
{
- for (unsigned int i = 0; i < Bindings.size(); i++)
+ for (unsigned int i = 0; i < ServerInstance->ports.size(); i++)
{
- delete Bindings[i];
+ if (ServerInstance->ports[i]->type == "servers")
+ delete ServerInstance->ports[i];
}
delete TreeRoot;
@@ -383,12 +385,6 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind)
if (rebind)
{
- for (unsigned int i = 0; i < Bindings.size(); i++)
- {
- delete Bindings[i];
- }
- Bindings.clear();
-
for (int j = 0; j < Conf->Enumerate("bind"); j++)
{
std::string Type = Conf->ReadValue("bind","type",j);
@@ -412,7 +408,7 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind)
continue;
}
- Bindings.push_back(listener);
+ ServerInstance->ports.push_back(listener);
}
}
}
@@ -448,7 +444,7 @@ void SpanningTreeUtilities::ReadConfiguration(bool rebind)
L->Fingerprint = Conf->ReadValue("link", "fingerprint", j);
L->HiddenFromStats = Conf->ReadFlag("link", "statshidden", j);
L->Timeout = Conf->ReadInteger("link", "timeout", j, true);
- L->Hook = Conf->ReadValue("link", "transport", j);
+ L->Hook = Conf->ReadValue("link", "ssl", j);
L->Bind = Conf->ReadValue("link", "bind", j);
L->Hidden = Conf->ReadFlag("link", "hidden", j);
diff --git a/src/modules/m_spanningtree/utils.h b/src/modules/m_spanningtree/utils.h
index 7c15b2839..48677e57d 100644
--- a/src/modules/m_spanningtree/utils.h
+++ b/src/modules/m_spanningtree/utils.h
@@ -45,13 +45,11 @@ class ServerSocketListener : public ListenSocketBase
SpanningTreeUtilities *Utils;
public:
- ServerSocketListener(SpanningTreeUtilities *u, int port, const std::string& addr, const std::string& hook)
- : ListenSocketBase(port, addr), Utils(u), Hook(hook)
+ ServerSocketListener(SpanningTreeUtilities *u, int port, const std::string& addr, const std::string& Hook)
+ : ListenSocketBase(port, addr, "servers", Hook), Utils(u)
{
}
- std::string Hook;
-
virtual void OnAcceptReady(int nfd);
};
@@ -85,9 +83,6 @@ class SpanningTreeUtilities : public classbase
*/
bool quiet_bursts;
- /** Socket bindings for listening sockets
- */
- std::vector<ServerSocketListener *> Bindings;
/* Number of seconds that a server can go without ping
* before opers are warned of high latency.
*/