]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Apparently people ask for these... *coughpointlesscough*
authorom <om@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 29 Jan 2006 17:34:30 +0000 (17:34 +0000)
committerom <om@e03df62e-2008-0410-955e-edbf42e46eb7>
Sun, 29 Jan 2006 17:34:30 +0000 (17:34 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2968 e03df62e-2008-0410-955e-edbf42e46eb7

src/modules/m_chgident.cpp [new file with mode: 0644]
src/modules/m_setident.cpp [new file with mode: 0644]

diff --git a/src/modules/m_chgident.cpp b/src/modules/m_chgident.cpp
new file mode 100644 (file)
index 0000000..b437736
--- /dev/null
@@ -0,0 +1,93 @@
+#include <string>
+#include "users.h"
+#include "modules.h"
+#include "helperfuncs.h"
+
+/* $ModDesc: Provides support for the CHGIDENT command */
+
+Server *Srv;
+
+
+class cmd_chgident : public command_t
+{
+ public:
+       cmd_chgident() : command_t("CHGIDENT", 'o', 2)
+       {
+               this->source = "m_chgident.so";
+       }
+       
+       void Handle(char **parameters, int pcnt, userrec *user)
+       {
+               userrec* dest = Srv->FindNick(std::string(parameters[0]));
+               
+               if(dest)
+               {
+                       for(unsigned int x = 0; x < strlen(parameters[1]); x++)
+                       {
+                               if(((parameters[1][x] >= 'A') && (parameters[1][x] <= '}')) || strchr(".-0123456789", parameters[1][x]))
+                                       continue;
+                       
+                               WriteServ(user->fd, "NOTICE %s :*** Invalid characters in ident", user->nick);
+                               return;
+                       }
+               
+                       WriteOpers("%s used CHGIDENT to change %s's host from '%s' to '%s'", user->nick, dest->nick, dest->ident, parameters[1]);
+                       strlcpy(dest->ident, parameters[1], IDENTMAX+2);
+               }
+               else
+               {
+                       WriteServ(user->fd, "401 %s %s :No such nick/channel", user->nick, parameters[0]);
+               }
+       }
+};
+
+
+class ModuleChgIdent : public Module
+{
+       cmd_chgident* mycommand;
+       
+public:
+       ModuleChgIdent(Server* Me) : Module::Module(Me)
+       {
+               Srv = Me;
+               mycommand = new cmd_chgident();
+               Srv->AddCommand(mycommand);
+       }
+       
+       virtual ~ModuleChgIdent()
+       {
+       }
+       
+       virtual Version GetVersion()
+       {
+               return Version(1,0,0,0,0);
+       }
+       
+};
+
+// stuff down here is the module-factory stuff. For basic modules you can ignore this.
+
+class ModuleChgIdentFactory : public ModuleFactory
+{
+ public:
+       ModuleChgIdentFactory()
+       {
+       }
+       
+       ~ModuleChgIdentFactory()
+       {
+       }
+       
+       virtual Module * CreateModule(Server* Me)
+       {
+               return new ModuleChgIdent(Me);
+       }
+       
+};
+
+
+extern "C" void * init_module( void )
+{
+       return new ModuleChgIdentFactory;
+}
+
diff --git a/src/modules/m_setident.cpp b/src/modules/m_setident.cpp
new file mode 100644 (file)
index 0000000..b4dac72
--- /dev/null
@@ -0,0 +1,82 @@
+#include "users.h"
+#include "modules.h"
+#include "helperfuncs.h"
+
+/* $ModDesc: Provides support for the SETIDENT command */
+
+Server *Srv;
+
+class cmd_setident : public command_t
+{
+ public:
+       cmd_setident() : command_t("SETIDENT", 'o', 1)
+       {
+               this->source = "m_setident.so";
+       }
+
+       void Handle(char **parameters, int pcnt, userrec *user)
+       {
+               for(unsigned int x = 0; x < strlen(parameters[0]); x++)
+               {
+                       if(((parameters[0][x] >= 'A') && (parameters[0][x] <= '}')) || strchr(".-0123456789", parameters[0][x]))
+                               continue;
+                       
+                       WriteServ(user->fd, "NOTICE %s :*** Invalid characters in ident", user->nick);
+                       return;
+               }
+               
+               WriteOpers("%s used SETIDENT to change their ident from '%s' to '%s'", user->nick, user->ident, parameters[0]);
+               strlcpy(user->ident, parameters[0], IDENTMAX+2);
+       }
+};
+
+
+class ModuleSetIdent : public Module
+{
+       cmd_setident*   mycommand;
+       
+ public:
+       ModuleSetIdent(Server* Me) : Module::Module(Me)
+       {
+               Srv = Me;
+               mycommand = new cmd_setident();
+               Srv->AddCommand(mycommand);
+       }
+       
+       virtual ~ModuleSetIdent()
+       {
+       }
+       
+       virtual Version GetVersion()
+       {
+               return Version(1,0,0,0,0);
+       }
+       
+};
+
+// stuff down here is the module-factory stuff. For basic modules you can ignore this.
+
+class ModuleSetIdentFactory : public ModuleFactory
+{
+ public:
+       ModuleSetIdentFactory()
+       {
+       }
+       
+       ~ModuleSetIdentFactory()
+       {
+       }
+       
+       virtual Module * CreateModule(Server* Me)
+       {
+               return new ModuleSetIdent(Me);
+       }
+       
+};
+
+
+extern "C" void * init_module( void )
+{
+       return new ModuleSetIdentFactory;
+}
+