static void Main(string[] args) { bool help = false; bool screens = false; string user = null, pass = null; string chatUrl = null, scriptUrl = null; string sessionPath = null; // http://geekswithblogs.net/robz/archive/2009/11/22/command-line-parsing-with-mono.options.aspx OptionSet options = new OptionSet() .Add("?|h|help", "Print this message", option => help = option != null) .Add("u=|user=|username="******"Required: StackExchange username or email", option => user = option) .Add("p=|pass=|password="******"Required: StackExchange password", option => pass = option) .Add("c=|chat-url=", "Required: Chatroom URL", option => chatUrl = option) .Add("b=|bot-script=|script-url=", "Required: The URL of a bot script", option => scriptUrl = option) .Add("s|screens|screenshot", "Display screenshots at checkpoints", option => screens = option != null) .Add("session-path=", "Path to browser session (profile), where settings are saved", option => sessionPath = option); #if DEBUG string[] lines = File.ReadAllLines("account.txt"); user = lines[0]; pass = lines[1]; chatUrl = "http://chat.stackexchange.com/rooms/118/root-access"; scriptUrl = "https://raw.github.com/allquixotic/SO-ChatBot/master/master.js"; screens = true; sessionPath = "session"; #else try { options.Parse(args); } catch (OptionException) { ShowHelp(options, "Error - usage is:"); } if (help) { ShowHelp(options, "Usage:"); } if (user == null) { ShowHelp(options, "Error: A username is required"); } if (pass == null) { ShowHelp(options, "Error: A password is required"); } if (chatUrl == null) { ShowHelp(options, "Error: A chat URL is required"); } if (scriptUrl == null) { ShowHelp(options, "Error: A bot script is required"); } if (sessionPath == null) { sessionPath = "session"; } #endif try { WebConfig config = new WebConfig(); WebCore.Initialize(config); WebPreferences prefs = new WebPreferences(); prefs.LoadImagesAutomatically = true; prefs.RemoteFonts = false; prefs.WebAudio = false; prefs.Dart = false; prefs.CanScriptsCloseWindows = false; prefs.CanScriptsOpenWindows = false; prefs.WebSecurity = false; prefs.Javascript = true; prefs.LocalStorage = true; prefs.Databases = false; // ? aweSession = WebCore.CreateWebSession(sessionPath, prefs); aweSession.ClearCookies(); aweView = WebCore.CreateWebView(1024, 768, aweSession); aweView.ResponsiveChanged += aweView_ResponsiveChanged; aweView.Crashed += aweView_Crashed; aweView.ConsoleMessage += aweView_ConsoleMessage; eView.WebView = aweView; eView.AutoScreenshot = true; eView.ScreenshotsEnabled = screens; go(user, pass, scriptUrl, chatUrl); } finally { if (aweView != null && aweView.IsResponsive) aweView.Dispose(); WebCore.Shutdown(); } }
static void Main(string[] args) { bool help = false; bool screens = false; string user = null, pass = null; string chatUrl = null, scriptUrl = null; string sessionPath = null; // http://geekswithblogs.net/robz/archive/2009/11/22/command-line-parsing-with-mono.options.aspx OptionSet options = new OptionSet() .Add("?|h|help", "Print this message", option => help = option != null) .Add("u=|user=|username="******"Required: StackExchange username or email", option => user = option) .Add("p=|pass=|password="******"Required: StackExchange password", option => pass = option) .Add("c=|chat-url=", "Required: Chatroom URL", option => chatUrl = option) .Add("b=|bot-script=|script-url=", "Required: The URL of a bot script", option => scriptUrl = option) .Add("s|screens|screenshot", "Display screenshots at checkpoints", option => screens = option != null) .Add("session-path=", "Path to browser session (profile), where settings are saved", option => sessionPath = option); #if DEBUG string[] lines = File.ReadAllLines("account.txt"); user = lines[0]; pass = lines[1]; chatUrl = "http://chat.stackexchange.com/rooms/118/root-access"; scriptUrl = "https://raw.github.com/allquixotic/SO-ChatBot/master/master.js"; screens = true; sessionPath = "session"; #else try { options.Parse(args); } catch (OptionException) { ShowHelp(options, "Error - usage is:"); } if (help) { ShowHelp(options, "Usage:"); } if (user == null) { ShowHelp(options, "Error: A username is required"); } if (pass == null) { ShowHelp(options, "Error: A password is required"); } if (chatUrl == null) { ShowHelp(options, "Error: A chat URL is required"); } if (scriptUrl == null) { ShowHelp(options, "Error: A bot script is required"); } if (sessionPath == null) { sessionPath = "session"; } #endif try { WebConfig config = new WebConfig(); WebCore.Initialize(config); WebPreferences prefs = new WebPreferences(); prefs.LoadImagesAutomatically = true; prefs.RemoteFonts = false; prefs.WebAudio = false; prefs.Dart = false; prefs.CanScriptsCloseWindows = false; prefs.CanScriptsOpenWindows = false; prefs.WebSecurity = false; prefs.Javascript = true; prefs.LocalStorage = true; prefs.Databases = false; // ? aweSession = WebCore.CreateWebSession(sessionPath, prefs); aweSession.ClearCookies(); aweView = WebCore.CreateWebView(1024, 768, aweSession); aweView.ResponsiveChanged += aweView_ResponsiveChanged; aweView.Crashed += aweView_Crashed; aweView.ConsoleMessage += aweView_ConsoleMessage; eView.WebView = aweView; eView.AutoScreenshot = true; eView.ScreenshotsEnabled = screens; go(user, pass, scriptUrl, chatUrl); } finally { if (aweView != null && aweView.IsResponsive) { aweView.Dispose(); } WebCore.Shutdown(); } }