using System; using System.Collections.Generic; using System.IO; using S22.Xmpp; using S22.Xmpp.Client; using S22.Xmpp.Im; namespace RhinoReminds { public class ProgramSettings { public string AllowedDomain = "*"; public string Filepath = "./reminders.xml"; public string Jid = null; public string Password = null; } public static class Program { private static ProgramSettings settings = new ProgramSettings(); public static int Main(string[] args) { List extras = new List(); for (int i = 0; i < args.Length; i++) { if (!args[i].StartsWith("-")) { extras.Add(args[i]); continue; } switch (args[i]) { case "-h": case "--help": Console.WriteLine("--- RhinoReminds ---"); Console.WriteLine("> An XMPP reminder bot"); Console.WriteLine(" By Starbeamrainbowlabs"); Console.WriteLine(); Console.WriteLine("Usage:"); Console.WriteLine(" mono RhinoReminds.exe {options}"); Console.WriteLine(); Console.WriteLine("Options:"); Console.WriteLine(" -h --help Show this message"); Console.WriteLine($" -f --file Specify where to save reminders (default: {settings.Filepath})"); Console.WriteLine(" --domain {domain} Set the domain users are allowed to originate at. Defaults to any domain."); Console.WriteLine(); Console.WriteLine("Environment Variables:"); Console.WriteLine(" XMPP_JID The JID to login to"); Console.WriteLine(" XMPP_PASSWORD The password to login with"); return 0; case "--jid": settings.Jid = args[++i]; break; case "-d": case "--domain": settings.AllowedDomain = args[++i]; break; } } settings.Jid = Environment.GetEnvironmentVariable("XMPP_JID"); settings.Password = Environment.GetEnvironmentVariable("XMPP_PASSWORD"); Run(); return 0; } public static void Run() { ClientListener client = new ClientListener(settings.Jid, settings.Password) { ReminderFilePath = settings.Filepath }; client.AllowedDomains.Add(settings.AllowedDomain); client.Start().Wait(); } } }