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); } }
public static void Initialise(LumbricusConfiguration config) { if (db == null) { logger.Debug("Initialising InfoContext"); db = new IrcLogContext(); } else { logger.Debug("Skipping database initialisation; already connected"); } }
static BotBanPlugin() { logger.Trace("Registering bot ban plugin"); LumbricusConfiguration.AddPlugin(new BotBanPlugin()); }
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); }
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."); }
static ControlPlugin() { logger.Trace("Registering control plugin"); LumbricusConfiguration.AddPlugin(new ControlPlugin()); }
static InfoPlugin() { logger.Trace("Registering info plugin"); LumbricusConfiguration.AddPlugin(new InfoPlugin()); }
static SearchLogPlugin() { logger.Trace("Registering search log plugin"); LumbricusConfiguration.AddPlugin(new SearchLogPlugin()); }
static IrcLogPlugin() { logger.Trace("Registering IRC log plugin"); LumbricusConfiguration.AddPlugin(new IrcLogPlugin()); }
static MugshotsPlugin() { logger.Trace("Registering mugshots plugin"); LumbricusConfiguration.AddPlugin(new MugshotsPlugin()); }