+};
+
+class ModuleSafeList : public Module
+{
+ private:
+ Server *Srv;
+ ListTimer* MyTimer;
+ public:
+ ModuleSafeList(Server* Me) : Module::Module(Me)
+ {
+ Srv = Me;
+
+ MyTimer = new ListTimer(1,Srv);
+ Srv->AddTimer(MyTimer);
+ }
+
+ virtual ~ModuleSafeList()
+ {
+ }
+
+ virtual Version GetVersion()
+ {
+ return Version(1,0,0,0,VF_VENDOR);
+ }
+
+ void Implements(char* List)
+ {
+ List[I_OnPreCommand] = List[I_OnCleanup] = List[I_OnUserQuit] = List[I_On005Numeric] = 1;
+ }
+
+ /*
+ * OnPreCommand()
+ * Intercept the LIST command.
+ */
+ virtual int OnPreCommand(const std::string &command, char **parameters, int pcnt, userrec *user, bool validated)
+ {
+ /* If the command doesnt appear to be valid, we dont want to mess with it. */
+ if (!validated)
+ return 0;