コード例 #1
0
        public static void Main(string[] args)
        {
            try {
                connections = new List <IrcConnection>();
                threads     = new List <Thread>();

                config = LumbricusConfiguration.GetConfig();

                logger.Info("Lumbricus v{0}", CoreAssembly.Version);
                logger.Info("==========={0}\n", new String('=', CoreAssembly.Version.ToString().Length));

                Initialise();

                while (threads.Count > 0)
                {
                    foreach (Thread thread in threads)
                    {
                        if (!thread.IsAlive)
                        {
                            threads.Remove(thread);
                        }
                    }
                    Thread.Sleep(1000);
                }

                LumbricusContext.Obliterate();

                logger.Info("All connections closed, threads finished. BAIBAI! :D");
            } catch (Exception e) {
                logger.Fatal(e);
            }
        }
コード例 #2
0
 public static void Initialise(LumbricusConfiguration config)
 {
     if (db == null)
     {
         logger.Debug("Initialising InfoContext");
         db = new IrcLogContext();
     }
     else
     {
         logger.Debug("Skipping database initialisation; already connected");
     }
 }
コード例 #3
0
 static BotBanPlugin()
 {
     logger.Trace("Registering bot ban plugin");
     LumbricusConfiguration.AddPlugin(new BotBanPlugin());
 }
コード例 #4
0
        public static void InitialisePlugins(LumbricusConfiguration config)
        {
            logger.Info("Initialising plugins");
            string pluginsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins");

            // Add the plugin initialiser
            AppDomain.CurrentDomain.AssemblyLoad += PluginInitializer;

            PluginConfigurationElement plugin = null;

            // TODO: This bit needs DRYing up.
            // TODO: TODO: And probably moving to somewhere in LumbricusShared?
            plugin = config.PluginConfigs.SingleOrDefault(x => x.Name == "AutoRejoinPlugin");
            if (plugin == null)
            {
                logger.Trace("Skipping core plugin `AutoRejoinPlugin` as it is not mentioned in the configuration");
            }
            else if (!plugin.Enabled)
            {
                logger.Trace("Skipping core plugin `AutoRejoinPlugin` as it's disabled in the configuration");
            }
            else
            {
                LumbricusConfiguration.AddPlugin(new AutoRejoinPlugin());
            }

            plugin = config.PluginConfigs.SingleOrDefault(x => x.Name == "HelpPlugin");
            if (plugin == null)
            {
                logger.Trace("Skipping core plugin `HelpPlugin` as it is not mentioned in the configuration");
            }
            else if (!plugin.Enabled)
            {
                logger.Trace("Skipping core plugin `HelpPlugin` as it's disabled in the configuration");
            }
            else
            {
                LumbricusConfiguration.AddPlugin(new HelpPlugin());
            }

            plugin = config.PluginConfigs.SingleOrDefault(x => x.Name == "SeenPlugin");
            if (plugin == null)
            {
                logger.Trace("Skipping core plugin `SeenPlugin` as it is not mentioned in the configuration");
            }
            else if (!plugin.Enabled)
            {
                logger.Trace("Skipping core plugin `SeenPlugin` as it's disabled in the configuration");
            }
            else
            {
                LumbricusConfiguration.AddPlugin(new SeenPlugin());
            }

            plugin = config.PluginConfigs.SingleOrDefault(x => x.Name == "TrackBanPlugin");
            if (plugin == null)
            {
                logger.Trace("Skipping core plugin `TrackBanPlugin` as it is not mentioned in the configuration");
            }
            else if (!plugin.Enabled)
            {
                logger.Trace("Skipping core plugin `TrackBanPlugin` as it's disabled in the configuration");
            }
            else
            {
                LumbricusConfiguration.AddPlugin(new TrackBanPlugin());
            }

            plugin = config.PluginConfigs.SingleOrDefault(x => x.Name == "TrackKickPlugin");
            if (plugin == null)
            {
                logger.Trace("Skipping core plugin `TrackKickPlugin` as it is not mentioned in the configuration");
            }
            else if (!plugin.Enabled)
            {
                logger.Trace("Skipping core plugin `TrackKickPlugin` as it's disabled in the configuration");
            }
            else
            {
                LumbricusConfiguration.AddPlugin(new TrackKickPlugin());
            }

            plugin = config.PluginConfigs.SingleOrDefault(x => x.Name == "TrackUserPlugin");
            if (plugin == null)
            {
                logger.Trace("Skipping core plugin `TrackUserPlugin` as it is not mentioned in the configuration");
            }
            else if (!plugin.Enabled)
            {
                logger.Trace("Skipping core plugin `TrackUserPlugin` as it's disabled in the configuration");
            }
            else
            {
                LumbricusConfiguration.AddPlugin(new TrackUserPlugin());
            }

            foreach (string dll in Directory.GetFiles(pluginsPath, "*.dll", SearchOption.TopDirectoryOnly))
            {
                try {
                    string pluginFileName = Path.GetFileNameWithoutExtension(dll);
                    plugin = config.PluginConfigs.SingleOrDefault(x => x.Name == pluginFileName);
                    if (plugin == null)
                    {
                        logger.Trace("Skipping assembly `{0}` as it is not mentioned in the configuration", dll);
                        continue;
                    }
                    if (!plugin.Enabled)
                    {
                        logger.Trace("Skipping assembly `{0}` as it is disabled in the configuration", dll);
                        continue;
                    }
                    Assembly loadedAssembly = Assembly.LoadFile(dll);
                    logger.Trace("Loaded plugin `{0}`", loadedAssembly.GetName());
                } catch (FileLoadException e) {
                    logger.Trace("Plugin file `{0}` has already been loaded? O.o", dll);
                    logger.Trace(e);
                } catch (BadImageFormatException e) {
                    logger.Trace("`{0}` is not a valid Lumbricus plugin file.", dll);
                    throw e;
                }
            }

            // Remove the plugin initialiser as it's no longer needed
            AppDomain.CurrentDomain.AssemblyLoad -= PluginInitializer;

            logger.Info("{0} plugins enabled", LumbricusConfiguration.Plugins.Count);
        }
コード例 #5
0
        public static void Main(string[] args)
        {
            if (args.Length < 3 || args.Length > 4)
            {
                DoUsage();
            }

            try {
                type = args[0].ToEnum <LogType>();
            } catch (Exception e) {
                logger.Error(e);
                DoUsage(string.Format("Invalid log type `{0}`", args[0]));
            }
            switch (type)
            {
            case LogType.znc:
                if (args.Length < 4)
                {
                    DoUsage("Date in YYYY-MM-DD format is required for ZNC logs.");
                }
                break;

            case LogType.irssi:
                break;

            default:
                DoUsage(string.Format("Invalid type `{0}`", type));
                break;
            }

            long channelId = Int64.Parse(args[1]);

            if (channelId < 1)
            {
                DoUsage(string.Format("Invalid channel id `{0}`; must be > 0", args[1]));
            }

            config = LumbricusConfiguration.GetConfig();
            LumbricusContext.Initialise(config);

            channel = Channel.Fetch(channelId);
            if (channel == null)
            {
                DoUsage(string.Format("Channel id `{0}` does not exist.", channelId));
            }
            server = channel.Server;
            if (server == null)
            {
                throw new Exception(string.Format("Channel `{0}` is linked to a server id which does not exist or is deleted.", channelId));
            }

            string filename = args[2];

            if (string.IsNullOrWhiteSpace(filename))
            {
                DoUsage(string.Format("Invalid filename `{0}`", args[2]));
            }
            else if (!File.Exists(filename))
            {
                DoUsage(string.Format("File `{0}` does not exist", filename));
            }

            date = null;
            if (args.Length == 4 && !string.IsNullOrWhiteSpace(args[3]))
            {
                try {
                    date = DateTime.Parse(args[3]);
                } catch (Exception e) {
                    logger.Error(e);
                    DoUsage(string.Format("Invalid date `{0}`", args[3]));
                }
            }

            int i = 0;

            foreach (string line in File.ReadLines(filename))
            {
                ProcessLine(line);

                if (i % 100 == 0)
                {
                    Console.Write(".");
                }
                i++;
            }

            logger.Info("Done.");
        }
コード例 #6
0
 static ControlPlugin()
 {
     logger.Trace("Registering control plugin");
     LumbricusConfiguration.AddPlugin(new ControlPlugin());
 }
コード例 #7
0
ファイル: InfoPlugin.cs プロジェクト: BenjaminNolan/lumbricus
 static InfoPlugin()
 {
     logger.Trace("Registering info plugin");
     LumbricusConfiguration.AddPlugin(new InfoPlugin());
 }
コード例 #8
0
 static SearchLogPlugin()
 {
     logger.Trace("Registering search log plugin");
     LumbricusConfiguration.AddPlugin(new SearchLogPlugin());
 }
コード例 #9
0
 static IrcLogPlugin()
 {
     logger.Trace("Registering IRC log plugin");
     LumbricusConfiguration.AddPlugin(new IrcLogPlugin());
 }
コード例 #10
0
 static MugshotsPlugin()
 {
     logger.Trace("Registering mugshots plugin");
     LumbricusConfiguration.AddPlugin(new MugshotsPlugin());
 }