summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-11-18 10:25:12 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-11-18 10:25:12 +0000
commit380852d1a7393ee7ca0ae9f45751ab1fb307f0d0 (patch)
treed45f19f904ffd09489b6a8a621ecd3d477c250ad /src/modules
parent12ec2bc108e0f0219792cbbe78a6ce7d86818fe3 (diff)
First part of stuff for remote includes (this doesnt work yet)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8601 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_remoteinclude.cpp116
1 files changed, 0 insertions, 116 deletions
diff --git a/src/modules/m_remoteinclude.cpp b/src/modules/m_remoteinclude.cpp
deleted file mode 100644
index aa5370c5c..000000000
--- a/src/modules/m_remoteinclude.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
- *
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
- *
- * This program is free but copyrighted software; see
- * the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-#include "inspircd.h"
-#include "httpclient.h"
-
-/* $ModDesc: The base module for remote includes */
-
-class ModuleRemoteInclude : public Module
-{
- std::map<std::string, std::stringstream*> assoc;
-
- public:
- ModuleRemoteInclude(InspIRCd* Me)
- : Module(Me)
- {
- ServerInstance->Modules->Attach(I_OnDownloadFile, this);
- ServerInstance->Modules->Attach(I_OnRequest, this);
- }
-
- virtual ~ModuleRemoteInclude()
- {
- }
-
- virtual Version GetVersion()
- {
- // this method instantiates a class of type Version, and returns
- // the modules version information using it.
-
- return Version(1,1,0,1,VF_VENDOR,API_VERSION);
- }
-
- char* OnRequest(Request* req)
- {
- if (!strcmp(req->GetId(), HTTP_CLIENT_RESPONSE))
- {
- HTTPClientResponse* resp = (HTTPClientResponse*)req;
- ServerInstance->Log(DEBUG, "Got http file for %s", resp->GetURL().c_str());
-
- std::map<std::string, std::stringstream*>::iterator n = assoc.find(resp->GetURL());
-
- if (n == assoc.end())
- ServerInstance->Config->Complete(resp->GetURL(), true);
-
- std::string responsestr;
- if (resp->GetResponse(responsestr) == 200)
- {
- *(n->second) << resp->GetData();
-
- ServerInstance->Log(DEBUG, "Got data: %s", resp->GetData().c_str());
-
- ServerInstance->Log(DEBUG, "Flag file complete without error");
- ServerInstance->Config->Complete(resp->GetURL(), false);
- }
- else
- ServerInstance->Config->Complete(resp->GetURL(), true);
-
- /* Erase from our association map, but dont delete the pointer.
- * the core will want to access this pointer for the file data.
- */
- assoc.erase(n);
- }
- else if (!strcmp(req->GetId(), HTTP_CLIENT_ERROR))
- {
- HTTPClientError* resp = (HTTPClientError*)req;
-
- ServerInstance->Log(DEBUG, "Got http error when accessing %s", resp->GetURL().c_str());
- ServerInstance->Config->Complete(resp->GetURL(), true);
-
- std::map<std::string, std::stringstream*>::iterator n = assoc.find(resp->GetURL());
-
- if (n != assoc.end())
- assoc.erase(n);
- }
- return NULL;
- }
-
- int OnDownloadFile(const std::string &name, std::istream* &filedata)
- {
- if (name.substr(0, 7) == "http://")
- {
- Module* target = ServerInstance->Modules->Find("m_http_client.so");
- if (target)
- {
- ServerInstance->Log(DEBUG,"Claiming schema http://, making fetch request for %s", name.c_str());
-
- HTTPClientRequest* req = new HTTPClientRequest(ServerInstance, this, target, name);
- req->Send();
-
- /* XXX: We should delete req when the request is complete */
-
- assoc[name] = new std::stringstream();
- delete filedata;
- filedata = assoc[name];
-
- return true;
- }
- }
-
- return false;
- }
-};
-
-
-MODULE_INIT(ModuleRemoteInclude)
-