public static void Main(string[] args) { Debuger.Loger = new DefaultLoger(); string json = string.Empty; if (args.Length > 0) { var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, args[0]); json = File.ReadAllText(file, new UTF8Encoding(false)); Debuger.Log(json); } else { json = "{" + "\"ListenPort\":1700," + "\"Host\":\"127.0.0.1\"," + "\"ServicePort\":2000," + "\"ServiceHost\":\"127.0.0.1\"" + "\"LoginServerHost\":\"127.0.0.1\"," + "\"LoginServerPort\":\"1800\"," + "\"DBHost\":\"127.0.0.1\"," + "\"DBName\":\"game_db\"," + "\"DBUser\":\"root\"," + "\"DBPwd\":\"54249636\"," + "\"ServerID\":\"1\"," + "\"ConfigPath\":\"../../../../\"" + "\"Log\":true" + "\"EnableGM\":true" + "}"; } var config = JsonReader.Read(json); app = new Appliaction(config); app.Start(); var runner = new Thread(Runner); runner.IsBackground = false; runner.Start(); var u = new UnixExitSignal(); u.Exit += (s, e) => { Debuger.Log("App will Exit!"); app.Stop(); }; while (app.IsRunning) { Thread.Sleep(100); } }
public static void Main(string[] args) { Debuger.Loger = new DefaultLoger(); var json = string.Empty; if (args.Length > 0) { var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, args[0]); json = File.ReadAllText(file, new UTF8Encoding(false)); Debuger.Log(json); } else { json = "{" + "\"Port\":2001," + //端口 "\"LoginServerProt\":\"1800\"," + "\"LoginServerHost\":\"127.0.0.1\"," + "\"ServiceHost\":\"127.0.0.1\"," + "\"ConfigRoot\":\"../../../../\"" + "\"MaxBattle\":10000" + "\"Log\":true" + "}"; } MEvent.Reset(); var config = JsonReader.Read(json); app = new Appliaction(config); app.Start(); var thread = new Thread(Runer); thread.IsBackground = true; thread.Start(); var u = new UnixExitSignal(); u.Exit += (s, e) => { MEvent.Set(); Debuger.Log("App will exit"); app.Stop();// = false; }; MEvent.WaitOne(); if (thread.IsAlive) { thread.Join(); } Debuger.Log("Appliaction had exited!"); }
public static void Main(string[] args) { NetProtoTool.EnableLog = true; Debuger.Loger = new DefaultLoger(); string json; if (args.Length > 0) { var file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, args[0]); json = File.ReadAllText(file, new UTF8Encoding(false)); Debuger.Log(json); } else { json = "{" + "\"ListenPort\":1900," + "\"ServicePort\":1800," + "\"DBHost\":\"127.0.0.1\"," + "\"DBName\":\"game_account_db\"," + "\"DBUser\":\"root\"," + "\"DBPwd\":\"54249636\"," + "\"Log\":true" + "}"; } var config = JsonReader.Read(json); app = new Appliaction(config); app.Start(); var thread = new Thread(Runer); thread.IsBackground = false; thread.Start(); var u = new UnixExitSignal(); u.Exit += (s, e) => { Debuger.Log("App will exit"); app.Stop();// = false; }; while (app.IsRunning) { Thread.Sleep(100); #if MONO #endif } //thread.Join(); }
public static void Main(string[] args) { // F**k that, it's impossible to make Mono accept certificates from OGame, at least I'm too stupid to do it apparently. if (IsRunningOnMono()) { System.Net.ServicePointManager.ServerCertificateValidationCallback += delegate { return(true); }; } if (!File.Exists("config.json")) { Console.WriteLine("Please copy config.template.json to config.json and fill it out"); return; } IExitSignal onExitSignal = null; if (IsRunningOnMono()) { onExitSignal = new UnixExitSignal(); } else { onExitSignal = new WindowsExitSignal(); } Config config = JsonConvert.DeserializeObject <Config>(File.ReadAllText("config.json")); Logger.Instance.MinimumLogLevel = config.LogLevel; Logger.Instance.IncludeTimestamp = config.LogIncludeTimestamp; Logger.Instance.Log(LogLevel.Info, $"Loaded settings, user: {config.Username}, server: {config.Server}"); // Setup OGameStringProvider stringProvider = OGameStringProvider.Load(@"Resources/strings-en.json"); CultureInfo clientServerCulture = CultureInfo.GetCultureInfo("da-DK"); var commander = new CommandBase.Commander(); // Processing OGameClient client = new OGameClient(config.Server, stringProvider, config.Username, config.Password, commander); client.Settings.ServerUtcOffset = TimeSpan.FromHours(1); client.Settings.Galaxies = 8; client.Settings.Systems = 499; client.ServerCulture = clientServerCulture; Logger.Instance.Log(LogLevel.Debug, "Prepared OGameClient"); // Savers client.RegisterSaver(new GalaxyPageSaver()); client.RegisterSaver(new EspionageReportSaver()); client.RegisterSaver(new GalaxyPageDebrisSaver()); client.RegisterSaver(new MessageSaver()); client.RegisterSaver(new PlayerPlanetSaver()); client.RegisterSaver(new GalaxyActivitySaver()); client.RegisterSaver(new HostileAttackEmailSender(config.HostileWarning.From, config.HostileWarning.To, config.HostileWarning.Server, config.HostileWarning.Login, config.HostileWarning.Password)); // Injects client.RegisterInject(new CommandsInject()); client.RegisterInject(new CargosForTransportInject()); client.RegisterInject(new PlanetExclusiveInject(client)); client.RegisterInject(new CommonInject()); client.RegisterInject(new BuildQueueInject()); client.RegisterInject(new CustomPlanetOrderInject(config.CustomOrder)); client.RegisterInject(new EventListTotalsInject()); // UA stuff client.RegisterDefaultHeader("Accept-Language", "en-GB,en;q=0.8,da;q=0.6"); client.RegisterDefaultHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); client.RegisterDefaultHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36"); Logger.Instance.Log(LogLevel.Debug, "Prepared user agent"); // Show details foreach (IInterventionHandler item in client.GetIntervention()) { Logger.Instance.Log(LogLevel.Info, $"Loaded Intervention Handler: {item.GetType().FullName}"); } foreach (BaseParser item in client.GetParsers()) { Logger.Instance.Log(LogLevel.Info, $"Loaded Parser: {item.GetType().FullName}"); } foreach (SaverBase item in client.GetSavers()) { Logger.Instance.Log(LogLevel.Info, $"Loaded Saver: {item.GetType().FullName}"); } // Start proxy OgameClientProxy proxy = new OgameClientProxy(config.ListenAddress, config.ListenPort, client); proxy.SubstituteRoot = new Uri($"https://{config.Server}"); proxy.Start(); Logger.Instance.Log(LogLevel.Success, $"Prepared reverse proxy, visit: {proxy.ListenPrefix}"); // Kick-off client.IssueRequest(client.RequestBuilder.GetPage(Objects.Types.PageType.Overview)); // Example job ApiImporterJob job1 = new ApiImporterJob(client, new DirectoryInfo("temp")); job1.Start(); AuctionMonitor monitor = new AuctionMonitor(client); client.RegisterInject(new AuctionStatusInject(monitor)); monitor.Start(); SessionKeepAliveJob job3 = new SessionKeepAliveJob(client, config.SessionKeepaliveMode); if (config.SessionKeepaliveMode == SessionKeepAliveMode.Single) { job3.PlanetId = config.SessionKeepalivePlanet; } job3.Start(); commander.Start(); Action <int> recallAction = (fleet) => { RecallFleetCommand recall = new RecallFleetCommand() { FleetId = fleet }; recall.Run(); }; if (config.FleetToRecall > 0) { recallAction(config.FleetToRecall); Thread.Sleep(5000); return; } if (config.SystemsToScan?.Count > 0) { SystemScanner sysScanner = new SystemScanner(config.SystemsToScan.Select(z => SystemCoordinate.Parse(z))); sysScanner.Start(); } SetupProxyCommands(client, config, proxy); onExitSignal.Exit += (sender, eventArgs) => { client.SaveCookies(); }; Console.TreatControlCAsInput = true; Console.ReadKey(true); client.SaveCookies(); }
/// <summary> /// メイン関数 /// </summary> /// <param name="args"></param> static void Main(string[] args) { DateTime dateTime = DateTime.Now; //bool loop = true; //while(loop){ Thread.Sleep(1); } // ファイル名の作成 string fileName = string.Format("{0}.log", dateTime.ToString("yyyyMMddHHmmss")); using (StreamWriter writer = new StreamWriter(fileName)) { using (UnixExitSignal sig = new UnixExitSignal()) { // ログコールバックの作成 GCHandle hLogCallback = GCHandle.Alloc(new MrsLogOutputCallback((level, msg) => { string time_stamp = mrs.DateTime.Now().ToString(); string log = string.Format("[{0}] {1}", time_stamp, msg); mrs_console_log(level, log); writer.WriteLine(log); }), GCHandleType.Normal); if (!hLogCallback.IsAllocated) { Console.WriteLine("Fail: alloc to delegate."); return; } // 強制終了対応 sig.SetSignal((obj, e) => { SignalEventArgs sig_args = e as SignalEventArgs; MRS_LOG_DEBUG("サーバーの停止: {0}", sig_args.SignalEnums); s_bIsRun = false; Thread.Sleep(10); }, (Int32)Signal.SIGINT); sig.SetSignal((obj, e) => { SignalEventArgs sig_args = e as SignalEventArgs; MRS_LOG_DEBUG("サーバーの停止: {0}", sig_args.SignalEnums); s_bIsRun = false; Thread.Sleep(10); }, (Int32)Signal.SIGTERM); sig.SetSignal((obj, e) => { SignalEventArgs sig_args = e as SignalEventArgs; MRS_LOG_DEBUG("サーバーの停止: {0}", sig_args.SignalEnums); s_bIsRun = false; Thread.Sleep(10); }, (Int32)Signal.SIGQUIT); sig.SetSignal((obj, e) => { SignalEventArgs sig_args = e as SignalEventArgs; MRS_LOG_DEBUG("サーバーの停止: {0}", sig_args.SignalEnums); s_bIsRun = false; Thread.Sleep(10); }, (Int32)Signal.SIGHUP); // ログコールバックの登録 mrs_set_log_callback(hLogCallback.Target as MrsLogOutputCallback); // mrsの初期化 mrs_initialize(); MRS_LOG_DEBUG("サーバーの開始"); try { while (s_bIsRun) { // mrsの更新 mrs_update(); // sleep mrs_sleep(m_nSleepMsec); } } finally { MRS_LOG_DEBUG("サーバーの終了"); // mrsの終了処理 mrs_finalize(); // ログコールバックの解放 hLogCallback.Free(); } } } }