diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-11-18 10:41:25 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-11-18 10:41:25 +0000 |
commit | 85ea4dbed5c6085910e7373200a73189c0243616 (patch) | |
tree | e65ddbf28187c8065f42b100b1bd359688d695b6 /src/modules | |
parent | 380852d1a7393ee7ca0ae9f45751ab1fb307f0d0 (diff) |
Half complete test framework
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8602 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_remoteinclude_http.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/modules/m_remoteinclude_http.cpp b/src/modules/m_remoteinclude_http.cpp new file mode 100644 index 000000000..1aa2ba7b4 --- /dev/null +++ b/src/modules/m_remoteinclude_http.cpp @@ -0,0 +1,86 @@ +/* +------------------------------------+ + * | 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" + +/* $ModDesc: Remote includes HTTP scheme */ + +using irc::sockets::OpenTCPSocket; + +class ModuleRemoteIncludeHttp : public Module +{ + public: + + ModuleRemoteIncludeHttp(InspIRCd* Me) + : Module(Me) + { + // The constructor just makes a copy of the server class + + + Implementation eventlist[] = { I_OnDownloadFile }; + ServerInstance->Modules->Attach(eventlist, this, 1); + } + + virtual ~ModuleRemoteIncludeHttp() + { + } + + virtual int OnDownloadFile(const std::string &filename, std::istream* &filedata) + { + ServerInstance->Log(DEBUG,"OnDownloadFile in m_remoteinclude_http"); + int sockfd, portno, n; + struct sockaddr_in serv_addr; + struct hostent *server; + char buffer[65536]; + + portno = 80; + server = gethostbyname("neuron.brainbox.winbot.co.uk"); + + sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd < 0) + return 0; + + if (server == NULL) + return 0; + + memset(&serv_addr, sizeof(serv_addr), 0); + + serv_addr.sin_family = AF_INET; + + memcpy(server->h_addr, &serv_addr.sin_addr.s_addr, server->h_length); + serv_addr.sin_port = htons(portno); + + if (connect(sockfd, (const sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) + return 0; + + n = send(sockfd, "GET / HTTP/1.0\r\n", 16, 0); + if (n < 0) + return 0; + + n = read(sockfd,buffer,255); + + if (n < 1) + return 0; + + return 1; + } + + virtual Version GetVersion() + { + return Version(1,1,0,1,VF_VENDOR,API_VERSION); + } +}; + + +MODULE_INIT(ModuleRemoteIncludeHttp) + |