예제 #1
0
 static Program()
 {
     StandardOut.ModConsole();
     Debug.Assert(IntPtr.Size == 8);
     Debug.Assert(Environment.Is64BitProcess);
     Logger.Log(Flags.Info, "Architecture: x64");
     Logger.Log(Flags.Info, "Byte order: {0}", BitConverter.IsLittleEndian ? "Little Endian" : "Big Endian");
 }
예제 #2
0
 private void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
 {
     if (e.Data != null)
     {
         StandardOut.Add(e.Data);
         log.Repo(action, repo, e.Data);
     }
 }
예제 #3
0
 protected override void StdOut(string message)
 {
     Console.WriteLine(message); // Write to console for the test output
     StandardOut.Add(message);
 }
예제 #4
0
 public void ConsoleDirectWriteLine(string value)
 {
     StandardOut.WriteLine(value);
 }
 private void CurrentRuntimeExecution_StandardOutputAvailable(object sender, string e)
 {
     StandardOut?.Invoke(this, e);
 }
예제 #6
0
파일: ServerCore.cs 프로젝트: habb0/IHI
        internal BootResult Boot(string configPath)
        {
            try
            {
                _textEncoding = Encoding.UTF8; // TODO: Move this to an external config.

                #region Standard Out

                _standardOut = new StandardOut();
                _standardOut.PrintNotice("Text Encoding => Set to " + _textEncoding.EncodingName);
                _standardOut.PrintNotice("Standard Out => Ready");

                #endregion

                _config = new XmlConfig(configPath);

                bool mainInstallRequired = PreInstall(); // Register the main installation if required.

                #region Load Plugins

                _standardOut.PrintNotice("Plugin Manager => Loading plugins...");
                _pluginManager = new PluginManager();

                XmlNodeList pluginNodes = GetConfig().GetInternalDocument().SelectNodes("/config/plugins/plugin");
                foreach (XmlNode pluginNode in pluginNodes)
                {
                    GetPluginManager().LoadPluginAtPath(
                        Path.Combine(
                            Directory.GetCurrentDirectory(),
                            "plugins",
                            pluginNode.Attributes["filename"].InnerText));
                }
                _standardOut.PrintNotice("Plugin Manager => Plugins loaded!");

                #endregion

                CoreManager.InstallerCore.Run();

                if (mainInstallRequired)
                    SaveConfigInstallation();

                #region Config

                _standardOut.PrintNotice("Config File => Loaded");
                _standardOut.SetImportance(
                    (StandardOutImportance)
                    _config.ValueAsByte("/config/standardout/importance", (byte) StandardOutImportance.Debug));

                #endregion

                #region Database

                _standardOut.PrintNotice("MySQL => Preparing database connection settings...");

                try
                {
                    MySqlConnectionStringBuilder connectionString = new MySqlConnectionStringBuilder
                                                                        {
                                                                            Server =
                                                                                _config.ValueAsString(
                                                                                    "/config/mysql/host"),
                                                                            Port =
                                                                                _config.ValueAsUint(
                                                                                    "/config/mysql/port", 3306),
                                                                            UserID =
                                                                                _config.ValueAsString(
                                                                                    "/config/mysql/user"),
                                                                            Password =
                                                                                _config.ValueAsString(
                                                                                    "/config/mysql/password"),
                                                                            Database =
                                                                                _config.ValueAsString(
                                                                                    "/config/mysql/database"),
                                                                            Pooling = true,
                                                                            MinimumPoolSize =
                                                                                _config.ValueAsUint(
                                                                                    "/config/mysql/minpoolsize", 1),
                                                                            MaximumPoolSize =
                                                                                _config.ValueAsUint(
                                                                                    "/config/mysql/maxpoolsize", 25)
                                                                        };

                    PrepareSessionFactory(connectionString.ConnectionString);

                    _standardOut.PrintNotice("MySQL => Testing connection...");

                    using (ISession db = GetDatabaseSession())
                    {
                        if (!db.IsConnected)
                            throw new Exception("Unknown cause");
                    }
                }
                catch (Exception ex)
                {
                    _standardOut.PrintError("MySQL => Connection failed!");
                    throw;
                }
                _standardOut.PrintNotice("MySQL => Connected!");

                #endregion

                #region Distributors

                _standardOut.PrintNotice("Habbo Distributor => Constructing...");
                _habboDistributor = new HabboDistributor();
                _standardOut.PrintNotice("Habbo Distributor => Ready");

                #endregion

                #region Figure Factory

                _standardOut.PrintNotice("Habbo Figure Factory => Constructing...");
                _habboFigureFactory = new HabboFigureFactory();
                _standardOut.PrintNotice("Habbo Figure Factory => Ready");

                #endregion

                // TODO: Download Requirements

                #region Permissions

                _standardOut.PrintNotice("Permission Manager => Constructing...");
                _permissionManager = new PermissionManager();
                _standardOut.PrintNotice("Permission Manager => Ready");

                #endregion

                // TODO: Write Dynamic Client Files
                // TODO: Authenticate with IHINet

                #region Network

                _standardOut.PrintNotice("Connection Manager => Starting...");
                _connectionManager = new IonTcpConnectionManager(_config.ValueAsString("/config/network/host"),
                                                                 _config.ValueAsInt("/config/network/port", 14478));
                _connectionManager.GetListener().Start();
                _standardOut.PrintNotice("Connection Manager => Ready!");

                _standardOut.PrintNotice("Web Admin => Starting...");
                _webAdminManager = new WebAdminManager(_config.ValueAsUshort("/config/webadmin/port", 14480));
                _standardOut.PrintNotice("Web Admin => Ready!");

                #endregion

                #region Start Plugins

                PluginManager pluginManager = GetPluginManager();
                _standardOut.PrintNotice("Plugin Manager => Starting plugins...");

                foreach (Plugin plugin in pluginManager.GetLoadedPlugins())
                {
                    pluginManager.StartPlugin(plugin);
                }
                _standardOut.PrintNotice("Plugin Manager => Plugins started!");

                #endregion

                _standardOut.PrintImportant("IHI is now functional!");

                return BootResult.AllClear;
            }
            catch (Exception e)
            {
                _standardOut.PrintException(e);

                if (e is MappingException)
                    return BootResult.MySQLMappingFailure;

                return BootResult.UnknownFailure;
            }
        }
예제 #7
0
        public override void OnChannelData(ISshChannelMessage p)
        {
            var msg = (SshChannelData)p;

            StandardOut.Write(msg.Data, 0, msg.Data.Length);
        }