]> jfr.im git - irc/rizon/moo.git/commitdiff
dnsblstats
authorAdam <redacted>
Sun, 21 Feb 2016 04:38:00 +0000 (23:38 -0500)
committerAdam <redacted>
Sun, 21 Feb 2016 04:38:00 +0000 (23:38 -0500)
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/CommandDnsblStats.java
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/Comparators.java [deleted file]
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/DnsblInfo.java
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/Numeric219.java
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/Numeric227.java
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/StatsRequester.java
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/comparators/CountComparator.java [new file with mode: 0644]
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/comparators/ServerComparator.java [new file with mode: 0644]
dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/dnsblstats.java
moo/src/main/java/net/rizon/moo/Moo.java
pom.xml

index 38656e57fc733823f00ac22f3fb8657d00dd2b73..9c0d320d54d143b65771074a75bbf2e155196290 100644 (file)
@@ -1,30 +1,51 @@
 package net.rizon.moo.plugin.dnsblstats;
 
+import com.google.inject.Inject;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import net.rizon.moo.Command;
 import net.rizon.moo.CommandSource;
-import net.rizon.moo.Moo;
-import net.rizon.moo.Plugin;
-import net.rizon.moo.Server;
+import net.rizon.moo.conf.Config;
+import net.rizon.moo.irc.Protocol;
+import net.rizon.moo.irc.Server;
+import net.rizon.moo.irc.ServerManager;
+import net.rizon.moo.plugin.dnsblstats.comparators.CountComparator;
+import net.rizon.moo.plugin.dnsblstats.comparators.ServerComparator;
 
 class CommandDnsblStats extends Command
 {
-       private static HashSet<String> command_waiting_on = new HashSet<String>();
+       private static Set<String> command_waiting_on = new HashSet<>();
        private static CommandSource command_source;
        private static boolean do_server_counts;
        private static String do_server_name;
 
-       public CommandDnsblStats(Plugin pkg)
+       @Inject
+       private ServerManager serverManager;
+
+       @Inject
+       private Protocol protocol;
+
+       @Inject
+       private dnsblstats dnsblstats;
+
+       @Inject
+       private CountComparator countComparator;
+
+       @Inject
+       private ServerComparator serverComparator;
+
+       @Inject
+       public CommandDnsblStats(Config conf)
        {
-               super(pkg, "!DNSBLSTATS", "Views DNSBL counts");
+               super("!DNSBLSTATS", "Views DNSBL counts");
 
-               this.requiresChannel(Moo.conf.staff_channels);
-               this.requiresChannel(Moo.conf.oper_channels);
-               this.requiresChannel(Moo.conf.admin_channels);
+               this.requiresChannel(conf.staff_channels);
+               this.requiresChannel(conf.oper_channels);
+               this.requiresChannel(conf.admin_channels);
        }
 
        @Override
@@ -53,22 +74,22 @@ class CommandDnsblStats extends Command
                                do_server_name = params[2];
                }
 
-               for (Server s : Server.getServers())
+               for (Server s : serverManager.getServers())
                        if (s.isNormal() && !s.isHub())
                        {
-                               Moo.write("STATS", "B", s.getName());
+                               protocol.write("STATS", "B", s.getName());
                                command_waiting_on.add(s.getName());
                        }
        }
 
-       static void checkReply(String source)
+       void checkReply(String source)
        {
                command_waiting_on.remove(source);
                if (command_waiting_on.isEmpty() && command_source != null)
                {
                        if (CommandDnsblStats.do_server_name != null)
                        {
-                               Server s = Server.findServer(do_server_name);
+                               Server s = serverManager.findServer(do_server_name);
                                if (s == null)
                                        command_source.reply("No servers found for " + do_server_name);
                                else
@@ -80,8 +101,8 @@ class CommandDnsblStats extends Command
 
                                        String[] dnsbl_names = new String[info.hits.size()];
                                        info.hits.keySet().toArray(dnsbl_names);
-                                       dnsblCountComparator.counts = info.hits;
-                                       Arrays.sort(dnsbl_names, dnsblCountComparator.cmp);
+                                       countComparator.counts = info.hits;
+                                       Arrays.sort(dnsbl_names, countComparator);
 
                                        for (int i = dnsbl_names.length; i > 0; --i)
                                        {
@@ -98,13 +119,13 @@ class CommandDnsblStats extends Command
                        else if (CommandDnsblStats.do_server_counts)
                        {
                                long total = 0;
-                               for (Server s : Server.getServers())
+                               for (Server s : serverManager.getServers())
                                        total += dnsblstats.getDnsblInfoFor(s).getTotal();
 
                                command_source.reply("DNSBL counts by server (" + total + "):");
 
-                               Server servers[] = Server.getServers();
-                               Arrays.sort(servers, dnsblServerComparator.cmp);
+                               Server servers[] = serverManager.getServers();
+                               Arrays.sort(servers, serverComparator);
 
                                for (int i = servers.length; i > 0; --i)
                                {
@@ -124,7 +145,7 @@ class CommandDnsblStats extends Command
                        {
                                HashMap<String, Long> dnsbl_counts = new HashMap<String, Long>();
                                long total = 0;
-                               for (Server s : Server.getServers())
+                               for (Server s : serverManager.getServers())
                                {
                                        DnsblInfo info = dnsblstats.getDnsblInfoFor(s);
                                        total += info.getTotal();
@@ -144,8 +165,8 @@ class CommandDnsblStats extends Command
 
                                String[] dnsbl_names = new String[dnsbl_counts.size()];
                                dnsbl_counts.keySet().toArray(dnsbl_names);
-                               dnsblCountComparator.counts = dnsbl_counts;
-                               Arrays.sort(dnsbl_names, dnsblCountComparator.cmp);
+                               countComparator.counts = dnsbl_counts;
+                               Arrays.sort(dnsbl_names, countComparator);
 
                                for (int i = dnsbl_names.length; i > 0; --i)
                                {
diff --git a/dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/Comparators.java b/dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/Comparators.java
deleted file mode 100644 (file)
index 74e0935..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-package net.rizon.moo.plugin.dnsblstats;
-
-import java.util.Comparator;
-import java.util.HashMap;
-
-import net.rizon.moo.Server;
-
-class dnsblServerComparator implements Comparator<Server>
-{
-       public static dnsblServerComparator cmp = new dnsblServerComparator();
-
-       @Override
-       public int compare(Server arg0, Server arg1)
-       {
-               DnsblInfo i0 = dnsblstats.getDnsblInfoFor(arg0), i1 = dnsblstats.getDnsblInfoFor(arg1);
-               long val0 = i0 != null ? i0.getTotal() : 0, val1 = i1 != null ? i1.getTotal() : 0;
-               if (val0 < val1)
-                       return -1;
-               else if (val0 > val1)
-                       return 1;
-               else
-                       return 0;
-       }
-}
-
-class dnsblCountComparator implements Comparator<String>
-{
-       public static dnsblCountComparator cmp = new dnsblCountComparator();
-       public static HashMap<String, Long> counts = null;
-
-       @Override
-       public int compare(String arg0, String arg1)
-       {
-               long val0 = counts.get(arg0), val1 = counts.get(arg1);
-               if (val0 < val1)
-                       return -1;
-               else if (val0 > val1)
-                       return 1;
-               else
-                       return 0;
-       }
-}
index a19ec1b1d8d8ef06bfef23f082e17b77c767c570..392e94cd15293a2647b1c217bf801a6c5c7bfbd7 100644 (file)
@@ -1,10 +1,11 @@
 package net.rizon.moo.plugin.dnsblstats;
 
 import java.util.HashMap;
+import java.util.Map;
 
-class DnsblInfo
+public class DnsblInfo
 {
-       public HashMap<String, Long> hits = new HashMap<String, Long>();
+       public Map<String, Long> hits = new HashMap<>();
 
        public long getTotal()
        {
index 6930ca66fe61e1e86cc12f0d19d7a1a8ee7e8ff0..27f09b04b20082727137ab2efc3977bd702ecacc 100644 (file)
@@ -1,22 +1,30 @@
 package net.rizon.moo.plugin.dnsblstats;
 
+import com.google.inject.Inject;
 import net.rizon.moo.Message;
+import net.rizon.moo.io.IRCMessage;
 
 // End of stats
 class Numeric219 extends Message
 {
+       @Inject
+       private CommandDnsblStats stats;
+
+       @Inject
+       private StatsRequester requester;
+       
        Numeric219()
        {
                super("219");
        }
 
        @Override
-       public void run(String source, String[] message)
+       public void run(IRCMessage message)
        {
-               if (message[1].equals("B") == false)
+               if (message.getParams()[1].equals("B") == false)
                        return;
 
-               CommandDnsblStats.checkReply(source);
-               StatsRequester.checkWarn(source);
+               stats.checkReply(message.getSource());
+               requester.checkWarn(message.getSource());
        }
 }
index c8b5d1931d4c20378be467e9ede1db17172bcd39..4dcedb81b4d4568ef35d96368f4e7c2f88e34035 100644 (file)
@@ -1,14 +1,23 @@
 package net.rizon.moo.plugin.dnsblstats;
 
+import com.google.inject.Inject;
 import net.rizon.moo.Message;
-import net.rizon.moo.Server;
+import net.rizon.moo.io.IRCMessage;
+import net.rizon.moo.irc.Server;
+import net.rizon.moo.irc.ServerManager;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /* /stats b */
 class Numeric227 extends Message
 {
-       private static final Logger logger = LoggerFactory.getLogger(Numeric227.class);
+       @Inject
+       private static Logger logger;
+
+       @Inject
+       private ServerManager serverManager;
+
+       @Inject
+       private dnsblstats dnsblstats;
                
        public Numeric227()
        {
@@ -16,17 +25,17 @@ class Numeric227 extends Message
        }
 
        @Override
-       public void run(String source, String[] message)
+       public void run(IRCMessage message)
        {
-               if (message.length < 4)
+               if (message.getParams().length < 4)
                        return;
 
-               final String name = message[2];
+               final String name = message.getParams()[2];
                long count;
 
                try
                {
-                       count = Long.parseLong(message[3]);
+                       count = Long.parseLong(message.getParams()[3]);
                }
                catch (Exception ex)
                {
@@ -34,9 +43,12 @@ class Numeric227 extends Message
                        return;
                }
 
-               Server s = Server.findServer(source);
+               Server s = serverManager.findServer(message.getSource());
                if (s == null)
-                       s = new Server(source);
+               {
+                       s = new Server(message.getSource());
+                       serverManager.insertServer(s);
+               }
 
                DnsblInfo info = dnsblstats.getDnsblInfoFor(s);
                info.hits.put(name, count);
index e762c1755aaac2291abb7024a0f9b7f60302e877..e7b4f270ad6d9856db93c80b6da70d325292f959 100644 (file)
@@ -1,20 +1,37 @@
 package net.rizon.moo.plugin.dnsblstats;
 
-import java.util.Date;
+import com.google.inject.Inject;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import net.rizon.moo.conf.Config;
+import net.rizon.moo.irc.Protocol;
+import net.rizon.moo.irc.Server;
+import net.rizon.moo.irc.ServerManager;
 
-import net.rizon.moo.Moo;
-import net.rizon.moo.Server;
 
 class StatsRequester implements Runnable
 {
        private static boolean check_requested;
        private static boolean first_run = true;
-       private static HashSet<String> requested = new HashSet<String>(), check_waiting_on = new HashSet<String>();
+       private static Set<String> requested = new HashSet<>(), check_waiting_on = new HashSet<>();
        private static long before_total_count;
-       private static HashMap<String, Long> before_count = new HashMap<String, Long>();
+       private static Map<String, Long> before_count = new HashMap<>();
+
+       @Inject
+       private ServerManager serverManager;
+
+       @Inject
+       private Protocol protocol;
+
+       @Inject
+       private dnsblstats dnsblstats;
+
+       @Inject
+       private Config config;
 
        @Override
        public void run()
@@ -25,10 +42,10 @@ class StatsRequester implements Runnable
                before_total_count = 0;
                before_count.clear();
 
-               for (Server s : Server.getServers())
+               for (Server s : serverManager.getServers())
                        if (s.isNormal() && !s.isHub())
                        {
-                               Moo.write("STATS", "B", s.getName());
+                               protocol.write("STATS", "B", s.getName());
 
                                requested.add(s.getName());
                                check_waiting_on.add(s.getName());
@@ -42,7 +59,7 @@ class StatsRequester implements Runnable
        private static final long global_threshold = 50;
        private static final long server_threshold = 20;
 
-       static void checkWarn(String source)
+       void checkWarn(String source)
        {
                check_waiting_on.remove(source);
 
@@ -54,7 +71,7 @@ class StatsRequester implements Runnable
 
                for (String ss : requested)
                {
-                       Server s = Server.findServerAbsolute(ss);
+                       Server s = serverManager.findServerAbsolute(ss);
                        if (s != null && s.getSplit() == null && !s.isServices())
                        {
                                long count = dnsblstats.getDnsblInfoFor(s).getTotal();
@@ -71,7 +88,7 @@ class StatsRequester implements Runnable
 
                for (Iterator<String> it = before_count.keySet().iterator(); it.hasNext();)
                {
-                       Server s = Server.findServerAbsolute(it.next());
+                       Server s = serverManager.findServerAbsolute(it.next());
                        if (s == null)
                                continue;
 
@@ -89,7 +106,7 @@ class StatsRequester implements Runnable
                }
 
                if (!dnsbl_message.isEmpty() && !first_run)
-                       Moo.privmsgAll(Moo.conf.oper_channels, dnsbl_message);
+                       protocol.privmsgAll(config.oper_channels, dnsbl_message);
 
                first_run = false;
                check_requested = false;
diff --git a/dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/comparators/CountComparator.java b/dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/comparators/CountComparator.java
new file mode 100644 (file)
index 0000000..35d0633
--- /dev/null
@@ -0,0 +1,21 @@
+package net.rizon.moo.plugin.dnsblstats.comparators;
+
+import java.util.Comparator;
+import java.util.Map;
+
+public class CountComparator implements Comparator<String>
+{
+       public static Map<String, Long> counts = null;
+
+       @Override
+       public int compare(String arg0, String arg1)
+       {
+               long val0 = counts.get(arg0), val1 = counts.get(arg1);
+               if (val0 < val1)
+                       return -1;
+               else if (val0 > val1)
+                       return 1;
+               else
+                       return 0;
+       }
+}
\ No newline at end of file
diff --git a/dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/comparators/ServerComparator.java b/dnsblstats/src/main/java/net/rizon/moo/plugin/dnsblstats/comparators/ServerComparator.java
new file mode 100644 (file)
index 0000000..dda1a39
--- /dev/null
@@ -0,0 +1,26 @@
+package net.rizon.moo.plugin.dnsblstats.comparators;
+
+import com.google.inject.Inject;
+import java.util.Comparator;
+import net.rizon.moo.irc.Server;
+import net.rizon.moo.plugin.dnsblstats.DnsblInfo;
+import net.rizon.moo.plugin.dnsblstats.dnsblstats;
+
+public class ServerComparator implements Comparator<Server>
+{
+       @Inject
+       private dnsblstats dnsblstats;
+       
+       @Override
+       public int compare(Server arg0, Server arg1)
+       {
+               DnsblInfo i0 = dnsblstats.getDnsblInfoFor(arg0), i1 = dnsblstats.getDnsblInfoFor(arg1);
+               long val0 = i0 != null ? i0.getTotal() : 0, val1 = i1 != null ? i1.getTotal() : 0;
+               if (val0 < val1)
+                       return -1;
+               else if (val0 > val1)
+                       return 1;
+               else
+                       return 0;
+       }
+}
\ No newline at end of file
index 022dcf99a1217802e9282dc79aae596bc5064309..688570424eb15a5b61460a9228ba567d2a14032a 100644 (file)
@@ -1,27 +1,47 @@
 package net.rizon.moo.plugin.dnsblstats;
 
 import com.google.common.eventbus.Subscribe;
+import com.google.inject.Inject;
+import com.google.inject.multibindings.Multibinder;
 import io.netty.util.concurrent.ScheduledFuture;
+import java.util.Arrays;
+import java.util.EventListener;
 import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import net.rizon.moo.Command;
-import net.rizon.moo.Event;
 import net.rizon.moo.Message;
 import net.rizon.moo.Moo;
 import net.rizon.moo.Plugin;
-import net.rizon.moo.Server;
 import net.rizon.moo.events.OnConnect;
 import net.rizon.moo.events.OnServerDestroy;
 import net.rizon.moo.events.OnServerLink;
+import net.rizon.moo.irc.Protocol;
+import net.rizon.moo.irc.Server;
+import net.rizon.moo.irc.ServerManager;
+import net.rizon.moo.plugin.dnsblstats.comparators.CountComparator;
+import net.rizon.moo.plugin.dnsblstats.comparators.ServerComparator;
 
-public class dnsblstats extends Plugin
+public class dnsblstats extends Plugin implements EventListener
 {
-       private Command dnsbl;
-       private ScheduledFuture requester;
+       @Inject
+       private CommandDnsblStats dnsbl;
+
+       @Inject
+       private ServerManager serverManager;
+
+       @Inject
+       private Protocol protocol;
+
+       @Inject
+       private StatsRequester requester;
+       
+       private ScheduledFuture requesterFuture;
        private Message n219, n227;
 
-       static HashMap<Server, DnsblInfo> infos = new HashMap<Server, DnsblInfo>();
+       private Map<Server, DnsblInfo> infos = new HashMap<>();
 
        public dnsblstats()
        {
@@ -31,24 +51,16 @@ public class dnsblstats extends Plugin
        @Override
        public void start() throws Exception
        {
-               dnsbl = new CommandDnsblStats(this);
-               requester = Moo.scheduleWithFixedDelay(new StatsRequester(), 1, TimeUnit.MINUTES);
-               n219 = new Numeric219();
-               n227 = new Numeric227();
-               Moo.getEventBus().register(this);
+               requesterFuture = Moo.scheduleWithFixedDelay(requester, 1, TimeUnit.MINUTES);
        }
 
        @Override
        public void stop()
        {
-               dnsbl.remove();
-               requester.cancel(false);
-               n219.remove();
-               n227.remove();
-               Moo.getEventBus().unregister(this);
+               requesterFuture.cancel(false);
        }
 
-       static DnsblInfo getDnsblInfoFor(Server s)
+       public DnsblInfo getDnsblInfoFor(Server s)
        {
                DnsblInfo i = infos.get(s);
                if (i == null)
@@ -62,8 +74,8 @@ public class dnsblstats extends Plugin
        @Subscribe
        public void onConnect(OnConnect evt)
        {
-               for (Server s : Server.getServers())
-                       Moo.write("STATS", "B", s.getName());
+               for (Server s : serverManager.getServers())
+                       protocol.write("STATS", "B", s.getName());
        }
 
        @Subscribe
@@ -72,7 +84,7 @@ public class dnsblstats extends Plugin
                Server serv = evt.getServer();
                
                /* Be sure dnsbl stats are up to date, prevents long splits from tripping the dnsbl monitor */
-               Moo.write("STATS", "B", serv.getName());
+               protocol.write("STATS", "B", serv.getName());
        }
 
        @Subscribe
@@ -80,6 +92,32 @@ public class dnsblstats extends Plugin
        {
                Server serv = evt.getServer();
                
-               dnsblstats.infos.remove(serv);
+               infos.remove(serv);
+       }
+
+       @Override
+       public List<Command> getCommands()
+       {
+               return Arrays.<Command>asList(dnsbl);
+       }
+
+       @Override
+       protected void configure()
+       {
+               bind(dnsblstats.class).toInstance(this);
+
+               bind(StatsRequester.class);
+
+               bind(Numeric219.class);
+               bind(Numeric227.class);
+
+               bind(CountComparator.class);
+               bind(ServerComparator.class);
+
+               Multibinder<Command> commandBinder = Multibinder.newSetBinder(binder(), Command.class);
+               commandBinder.addBinding().to(CommandDnsblStats.class);
+
+               Multibinder<EventListener> eventListenerBinder = Multibinder.newSetBinder(binder(), EventListener.class);
+               eventListenerBinder.addBinding().toInstance(this);
        }
 }
index 406760403311e1ef099cd131e117e8efc34d6cb7..e4e0e9910a5d7ddae3a6c188057410124b9e76c5 100644 (file)
@@ -167,7 +167,7 @@ public class Moo
 
                logger.info("moo v{} starting up", Version.getFullVersion());
 
-               this.rebuildInjector();
+               buildInjector();
 
                eventManager.build();
 
@@ -237,11 +237,8 @@ public class Moo
                return moo.group.schedule(r, t, unit);
        }
 
-       public void rebuildInjector()
+       private void buildInjector()
        {
-               for (Plugin p : Plugin.getPlugins())
-                       p.stop();
-               
                List<Module> modules = new ArrayList<>();
 
                modules.add(new MooModule(this));
@@ -267,4 +264,12 @@ public class Moo
                                logger.warn("unable to start plugin " + p.getName(), ex);
                        }
        }
+
+       public void rebuildInjector()
+       {
+               for (Plugin p : Plugin.getPlugins())
+                       p.stop();
+
+               buildInjector();
+       }
 }
diff --git a/pom.xml b/pom.xml
index 9a7aa7705457f1d487f7e05284ce7a9076eaacfe..44158b4ddd91eca5d50ef441eb5608f51c941e9e 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
                <module>commits</module>
                <module>core</module>
                <module>dnsbl</module>
-<!--           <module>dnsblstats</module>-->
+               <module>dnsblstats</module>
                <module>fun</module>
 <!--           <module>grapher</module>
                <module>logging</module>