]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ident.cpp
Converted more stuff to 'Implements' system
[user/henk/code/inspircd.git] / src / modules / m_ident.cpp
index fda3c9086795408d990857cf7227d1bcc5b5ac7c..c55c514998c5f3f1fd1c3ba467303f832a0ec212 100644 (file)
@@ -14,6 +14,8 @@
  * ---------------------------------------------------
  */
 
+using namespace std;
+
 #include <stdio.h>
 #include <string>
 #include <stdlib.h>
@@ -54,19 +56,20 @@ Server *Srv;
 class RFC1413
 {
  protected:
-       int fd;                 // file descriptor
-       userrec* u;             // user record that the lookup is associated with
-       sockaddr_in addr;       // address we're connecting to
-       in_addr addy;           // binary ip address
-       int state;              // state (this class operates on a state engine)
-       char ibuf[MAXBUF];      // input buffer
-       sockaddr_in sock_us;    // our port number
-       sockaddr_in sock_them;  // their port number
-       socklen_t uslen;        // length of our port number
-       socklen_t themlen;      // length of their port number
-       int nrecv;              // how many bytes we've received
-       time_t timeout_end;     // how long until the operation times out
-       bool timeout;           // true if we've timed out and should bail
+       int fd;                  // file descriptor
+       userrec* u;              // user record that the lookup is associated with
+       sockaddr_in addr;        // address we're connecting to
+       in_addr addy;            // binary ip address
+       int state;               // state (this class operates on a state engine)
+       char ibuf[MAXBUF];       // input buffer
+       sockaddr_in sock_us;     // our port number
+       sockaddr_in sock_them;   // their port number
+       socklen_t uslen;         // length of our port number
+       socklen_t themlen;       // length of their port number
+       int nrecv;               // how many bytes we've received
+       time_t timeout_end;      // how long until the operation times out
+       bool timeout;            // true if we've timed out and should bail
+       char ident_request[128]; // buffer used to make up the request string
  public:
 
        // The destructor makes damn sure the socket is freed :)
@@ -172,7 +175,8 @@ class RFC1413
                                        else
                                        {
                                                // send the request in the following format: theirsocket,oursocket
-                                               Write(this->fd,"%d,%d",ntohs(sock_them.sin_port),ntohs(sock_us.sin_port));
+                                               snprintf(ident_request,127,"%d,%d\r\n",ntohs(sock_them.sin_port),ntohs(sock_us.sin_port));
+                                               send(this->fd,ident_request,strlen(ident_request),0);
                                                Srv->Log(DEBUG,"Sent ident request, moving to state 2");
                                                state = IDENT_STATE_WAITDATA;
                                        }
@@ -233,6 +237,7 @@ class RFC1413
                                break;
                        }
                }
+               return true;
        }
 
        // returns true if the operation is completed,
@@ -258,13 +263,14 @@ class ModuleIdent : public Module
                delete Conf;
        }
 
-       ModuleIdent()
+       ModuleIdent(Server* Me)
+               : Module::Module(Me)
        {
-               Srv = new Server;
+               Srv = Me;
                ReadSettings();
        }
 
-       virtual void OnRehash()
+       virtual void OnRehash(std::string parameter)
        {
                ReadSettings();
        }
@@ -329,7 +335,6 @@ class ModuleIdent : public Module
        
        virtual ~ModuleIdent()
        {
-               delete Srv;
        }
        
        virtual Version GetVersion()
@@ -350,9 +355,9 @@ class ModuleIdentFactory : public ModuleFactory
        {
        }
        
-       virtual Module * CreateModule()
+       virtual Module * CreateModule(Server* Me)
        {
-               return new ModuleIdent;
+               return new ModuleIdent(Me);
        }
        
 };