Пример #1
0
        private BaseProvider GetDatabaseProviderInstance(IHostConfig configuration)
        {
            var defaultDatabaseConfig = configuration.Database.Default;

            Type providerType = Type.GetType(defaultDatabaseConfig.ProviderType);

            if (providerType == null)
            {
                throw new InvalidConfigurationException("Could not locate Database Provider :" +
                                                        defaultDatabaseConfig.ProviderType);
            }

            if (!providerType.ImplementsClass <BaseProvider>())
            {
                throw new InvalidConfigurationException("Database Provider does not implement BaseProvider:" +
                                                        defaultDatabaseConfig.ProviderType);
            }

            var instance = Activator.CreateInstance(providerType, defaultDatabaseConfig);

            var baseProvider = instance as BaseProvider;

            if (baseProvider != null)
            {
                baseProvider.Init();
                return(baseProvider);
            }
            throw new InvalidOperationException("Type : " + providerType + " does not inherit from BaseProvider");
        }
Пример #2
0
        internal static HostContext CreateFrom(string configFilePath, ContextSettings settings)
        {
            if (string.IsNullOrEmpty(configFilePath))
            {
                throw new ArgumentNullException("configFilePath");
            }

            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            // No change in config file, so dont need to re load it
            if (!string.IsNullOrEmpty(_configFilePath) && _configFilePath.Equals(configFilePath))
            {
                return(_current);
            }

            if (!File.Exists(configFilePath))
            {
                throw new ConfigurationErrorsException("Could not find config file: " + configFilePath);
            }

            _config         = File.ReadAllText(configFilePath).FromJsonToObject <HostConfig>();
            _configFilePath = configFilePath;
            _current        = new HostContext(_config, settings);
            return(_current);
        }
Пример #3
0
        /// <summary>
        /// 初始化服务总线(使用WCF服务)
        /// </summary>
        public static void InitializeRemoteBus()
        {
            bizbus = new RemoteBizBus();
            RemoteBizBus     rbizbus    = bizbus as RemoteBizBus;
            string           configuri  = AppSettingConfig.getRemoteUriPath() + "Config";
            string           configPath = AppSettingConfig.getLocalConfigPath();
            BasicHttpBinding bhb        = new BasicHttpBinding("BasicHttpBinding_Service");
            EndpointAddress  epa        = new EndpointAddress(configuri);
            IHostConfig      hostconfig = ChannelFactory <IHostConfig> .CreateChannel(bhb, epa);

            XmlDocument doc = new XmlDocument();

            if (string.IsNullOrEmpty(configPath))
            {
                string configstring = hostconfig.GetConfigString();
                doc.LoadXml(configstring);
            }
            //else
            //{
            //    string file = AppDomain.CurrentDomain.BaseDirectory + @"\namespace DrectSoft.FrameWork.Config";
            //    doc.Load(file);
            //}

            List <ServicePackageInfo> packages = ConfigLoader.GetPackageList(doc.DocumentElement);

            rbizbus.packages = packages;
        }
Пример #4
0
 public SharpWsServerAdapter(IHostConfig config)
 {
     _wsServer = new WebSocketServer($"ws://0.0.0.0:{config.GetServerPort().ToString()}")
     {
         KeepClean             = true,
         AuthenticationSchemes = AuthenticationSchemes.Basic, // 用基本验证字段承载签名信息,因为传输的并非原始密码,所以虽然是基本验证但不存在安全问题
         UserCredentialsFinder = id => {
             string base64String = id.Name;
             if (!AppRoot.TryGetUser(base64String, out WsUserName wsUserName, out UserData userData, out string _))
             {
                 return(null);
             }
             var password = HashUtil.Sha1(base64String + AppRoot.GetUserPassword(wsUserName, userData));
             // 经验证username对于基本验证来说没有用
             return(new NetworkCredential(userData.LoginName, password, domain: null, roles: wsUserName.ClientType.GetName()));
         }
     };
     //_wsServer.Log.Level = WebSocketSharp.LogLevel.Debug;
     _wsServer.Log.File   = Path.Combine(HomePath.HomeLogsDirFullName, NTKeyword.WebSocketSharpMinerStudioLogFileName);
     _wsServer.Log.Output = (data, path) => {
         Console.WriteLine(data.Message);
         if (path != null && path.Length > 0)
         {
             using (var writer = new StreamWriter(path, true))
                 using (var syncWriter = TextWriter.Synchronized(writer)) {
                     syncWriter.WriteLine(data.ToString());
                 }
         }
     };
     _wsServer.AddWebSocketService <MinerClientSharpWsSessionAdapter>(AppRoot.MinerClientPath);
     _wsServer.AddWebSocketService <MinerStudioSharpWsSessionAdapter>(AppRoot.MinerStudioPath);
     MinerClientWsSessions = new SharpWsSessionsAdapter(_wsServer.WebSocketServices[AppRoot.MinerClientPath].Sessions);
     MinerStudioWsSessions = new SharpWsSessionsAdapter(_wsServer.WebSocketServices[AppRoot.MinerStudioPath].Sessions);
 }
Пример #5
0
        private CurrentHostContext(IHostConfig configuration, ContextSettings settings)
        {
            Audit      = configuration.Runtime.Audit;
            Config     = configuration;
            UserTokens = new List <string>();

            var logger      = LogFactory.CreateInstance(configuration.Runtime.LogInfo);
            var commandArgs = new CommandArgs(configuration.Runtime.Parameters);
            var cache       = CacheFactory.Create(configuration.Caching);

            cache.ItemRemoved += (sender, args) =>
            {
                Log.Debug("Item removed from cache: " + args.CacheKey + " Reason : " + args.RemoveReason);
                if (args.Value is AuthenticationOutput)
                {
                    // User has been removed from cache. Login expired
                    UserTokens.Remove(args.CacheKey);
                }
            };

            CurrentContext.CreateDefault(logger, commandArgs, cache);

            //override the passwords if encrypted
            if (configuration.Certificate.Encryption != null)
            {
                var certificate = configuration.Certificate.Encryption.GetX509Certificate();
                if (certificate != null)
                {
                    DecryptPasswords(configuration, certificate);
                }
            }

            CommandFactory = settings.CommandFactory;
            Provider       = GetDatabaseProviderInstance(configuration);
        }
Пример #6
0
 public AkkaAddressFactory(IHostConfig host, string protocol = "tcp")
 {
     _base  = new StringBuilder(BuildBaseURL(host, protocol));
     _paths = new List <string>()
     {
         "user"
     };
 }
Пример #7
0
 public MainViewModel(hostlog.ILogDog log, IHostConfig hostConfig, List <IProtocal> protocals)
 {
     _repo       = new RedisHelper(0);
     _hostConfig = hostConfig;
     _protocals  = protocals;
     _log        = log;
     MenuItems   = new ObservableCollection <HamburgerMenuItem>();
 }
Пример #8
0
 public DataFusionPlatformPlugin(IPluginHost host) : base(host)
 {
     _hostConfig = host.GetService <IHostConfig>();
     _container  = TinyIoCContainer.Current;
     _log        = RegisterLogDog(_hostConfig.MinePluginConfig.MineName);
     _log.Info($"{_hostConfig.MinePluginConfig.MineName}开始载入...");
     _container.Register <IHostConfig>(_hostConfig);
     _container.Register <ILogDog>(_log);
     _container.Register <MainViewModel>().AsSingleton();
     _container.Register <Repo>().AsSingleton();
     _waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
 }
Пример #9
0
        internal static AzureContext CreateFrom(Stream configStream, ContextSettings settings)
        {
            if (configStream == null)
                throw new ArgumentNullException("configStream");

            if (settings == null)
                throw new ArgumentNullException("settings");

            _config = configStream.ReadToEnd().FromJsonToObject<HostConfig>();
            _current = new AzureContext(_config, settings);
            return _current;
        }
Пример #10
0
        public static IContext CreateDefault(IHostConfig configuration, ContextSettings settings)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            return(_defaultContext ?? (_defaultContext = new CurrentHostContext(configuration, settings)));
        }
Пример #11
0
        public static HostConfig From(IHostConfig s)
        {
            if (s is HostConfig settings)
            {
                return(settings);
            }

            return(new HostConfig
            {
                Hostname = s.Hostname,
                Id = s.Id,
                Name = s.Name,
                Port = s.Port
            });
        }
Пример #12
0
        internal static AzureContext CreateFrom(string configFilePath, ContextSettings settings)
        {
            if (string.IsNullOrEmpty(configFilePath))
                throw new ArgumentNullException("configFilePath");

            if (settings == null)
                throw new ArgumentNullException("settings");

            if (!File.Exists(configFilePath))
                throw new ConfigurationErrorsException("Could not find config file: " + configFilePath);

            _config = File.ReadAllText(configFilePath).FromJsonToObject<HostConfig>();
            _current = new AzureContext(_config, settings);
            return _current;
        }
Пример #13
0
        internal static AzureContext CreateFrom(Stream configStream, ContextSettings settings)
        {
            if (configStream == null)
            {
                throw new ArgumentNullException("configStream");
            }

            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            _config  = configStream.ReadToEnd().FromJsonToObject <HostConfig>();
            _current = new AzureContext(_config, settings);
            return(_current);
        }
Пример #14
0
        void IStartupTask.Run(IHostConfig config)
        {
            storageAddress = new EndpointAddress($"{config.EndpointName}.subscriptions");

            if (!MsmqUtilities.QueueExists(storageAddress)) return;

            subscriptions.Clear();

            GetQueue();

            foreach (var message in storageQueue.GetAllMessages())
            {
                var item = message.Body as MsmqSubscriptionStorageItem;
                if (item == null) continue;
                subscriptions.Add(item);
            }
        }
Пример #15
0
        public static void RunStartupTasks(IHostConfig config)
        {
            var startupTasks = StartupTaskResolver.GetStartupTasks();
            foreach (var task in startupTasks)
            {
                var taskName = task.GetType().Name;

                try
                {
                    log.Verbose($"Running task {taskName}");
                    task.Run(config);
                }
                catch (Exception ex)
                {
                    log.Error($"Failed to run startup task: {taskName}", ex);
                }
            }
        }
Пример #16
0
        internal static HostContext CreateFrom(string configFilePath, ContextSettings settings)
        {
            if (string.IsNullOrEmpty(configFilePath))
                throw new ArgumentNullException("configFilePath");

            if (settings == null)
                throw new ArgumentNullException("settings");

            // No change in config file, so dont need to re load it
            if (!string.IsNullOrEmpty(_configFilePath) && _configFilePath.Equals(configFilePath))
                return _current;

            if (!File.Exists(configFilePath))
                throw new ConfigurationErrorsException("Could not find config file: " + configFilePath);

            _config = File.ReadAllText(configFilePath).FromJsonToObject<HostConfig>();
            _configFilePath = configFilePath;
            _current = new HostContext(_config, settings);
            return _current;
        }
Пример #17
0
        private static void DecryptPasswords(IHostConfig configuration, X509Certificate2 certificate)
        {
            var encryptionMetadata = new Dictionary <string, object> {
                { "privatekey", certificate.PrivateKey }
            };
            var encryptionEngine = EncryptionEngine.Get <RSAEncryptionEngine>();

            if (configuration.Database.Default.IsEncrypted)
            {
                configuration.Database.Default.Password =
                    encryptionEngine.Decrypt(configuration.Database.Default.Password, string.Empty, encryptionMetadata);
                ;
            }

            if (configuration.Runtime.SuperUser.IsEncrypted)
            {
                configuration.Runtime.SuperUser.Password =
                    encryptionEngine.Decrypt(configuration.Runtime.SuperUser.Password, string.Empty, encryptionMetadata);
            }
        }
Пример #18
0
        internal static AzureContext CreateFrom(string configFilePath, ContextSettings settings)
        {
            if (string.IsNullOrEmpty(configFilePath))
            {
                throw new ArgumentNullException("configFilePath");
            }

            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            if (!File.Exists(configFilePath))
            {
                throw new ConfigurationErrorsException("Could not find config file: " + configFilePath);
            }

            _config  = File.ReadAllText(configFilePath).FromJsonToObject <HostConfig>();
            _current = new AzureContext(_config, settings);
            return(_current);
        }
Пример #19
0
 public SharpWsServer(IHostConfig config)
 {
     _wsServer = new WebSocketServer($"ws://0.0.0.0:{config.GetServerPort().ToString()}")
     {
         KeepClean             = true,
         AuthenticationSchemes = AuthenticationSchemes.Basic, // 用基本验证字段承载签名信息,因为传输的并非原始密码,所以虽然是基本验证但不存在安全问题
         UserCredentialsFinder = id => {
             string base64String = id.Name;
             if (!WsRoot.TryGetUser(base64String, out WsUserName wsUserName, out UserData userData, out string _))
             {
                 return(null);
             }
             string password = WsCommonService.GetUserPassword(wsUserName, userData);
             password = HashUtil.Sha1(base64String + password);
             // 经验证username对于基本验证来说没有用
             return(new NetworkCredential(userData.LoginName, password, domain: null, roles: wsUserName.ClientType.GetName()));
         }
     };
     _wsServer.AddWebSocketService <MinerClientSharpWsSessionAdapter>(WsRoot.MinerClientPath);
     _wsServer.AddWebSocketService <MinerStudioSharpWsSessionAdapter>(WsRoot.MinerStudioPath);
     MinerClientWsSessionsAdapter = new SharpWsSessionsAdapter(_wsServer.WebSocketServices[WsRoot.MinerClientPath].Sessions);
     MinerStudioWsSessionsAdapter = new SharpWsSessionsAdapter(_wsServer.WebSocketServices[WsRoot.MinerStudioPath].Sessions);
 }
Пример #20
0
 public WorkerHost(IHostConfig config)
 {
     _configureCommonContainer();
     _container.RegisterInstance(config);
 }
Пример #21
0
 public WatcherConfigProxy(IHostConfig config)
 {
     _config = config;
 }
Пример #22
0
 protected UrlBuilderBase(IHostConfig hostConfig)
 {
     _hostConfig = hostConfig ?? throw new ArgumentNullException(nameof(hostConfig));
 }
Пример #23
0
 internal static AzureContext CreateFrom(IHostConfig config, ContextSettings settings)
 {
     _config  = config;
     _current = new AzureContext(_config, settings);
     return(_current);
 }
Пример #24
0
 public DatabaseViewModel()
 {
     _hostConfig = TinyIoCContainer.Current.Resolve <IHostConfig>();
     _repo       = TinyIoCContainer.Current.Resolve <Repo>();
 }
Пример #25
0
 public Repo(IHostConfig hostConfig)
 {
     _redis = new RedisHelper(0);
 }
Пример #26
0
        private CurrentHostContext(IHostConfig configuration, ContextSettings settings)
        {
            Audit = configuration.Runtime.Audit;
            Config = configuration;
            UserTokens = new List<string>();

            var logger = LogFactory.CreateInstance(configuration.Runtime.LogInfo);
            var commandArgs = new CommandArgs(configuration.Runtime.Parameters);
            var cache = CacheFactory.Create(configuration.Caching);
            cache.ItemRemoved += (sender, args) =>
            {
                Log.Debug("Item removed from cache: " + args.CacheKey + " Reason : " + args.RemoveReason);
                if (args.Value is AuthenticationOutput)
                {
                    // User has been removed from cache. Login expired
                    UserTokens.Remove(args.CacheKey);
                }
            };

            CurrentContext.CreateDefault(logger, commandArgs, cache);

            //override the passwords if encrypted
            if (configuration.Certificate.Encryption != null)
            {
                var certificate = configuration.Certificate.Encryption.GetX509Certificate();
                if (certificate != null)
                {
                    DecryptPasswords(configuration, certificate);
                }
            }

            CommandFactory = settings.CommandFactory;
            Provider = GetDatabaseProviderInstance(configuration);
        }
Пример #27
0
 internal static AzureContext CreateFrom(IHostConfig config, ContextSettings settings)
 {
     _config = config;
     _current = new AzureContext(_config, settings);
     return _current;
 }
Пример #28
0
 public RIPActor(ILogService logService, IHostConfig host)
 {
     _log       = logService.ForContext <RIPActor>();
     _hostActor = Context.ActorSelection(AkkaAddressFactory.BuildTcp(host, "RIP"));
     ConfigureReceivers();
 }
Пример #29
0
 public ProtocalViewModel()
 {
     _repo       = TinyIoCContainer.Current.Resolve <Repo>();
     _hostConfig = TinyIoCContainer.Current.Resolve <IHostConfig>();
 }
Пример #30
0
 private static string BuildBaseURL(IHostConfig host, string protocol)
 => $"akka.{protocol}://{host.Id}@{host.Hostname}:{host.Port}";
Пример #31
0
 private AzureContext(IHostConfig configuration, ContextSettings settings)
 {
     CurrentHostContext.CreateDefault(configuration, settings);
 }
Пример #32
0
        public static IContext CreateDefault(IHostConfig configuration, ContextSettings settings)
        {
            if (configuration == null)
                throw new ArgumentNullException("configuration");

            if (settings == null)
                throw new ArgumentNullException("settings");

            return _defaultContext ?? (_defaultContext = new CurrentHostContext(configuration, settings));
        }
Пример #33
0
        private static void DecryptPasswords(IHostConfig configuration, X509Certificate2 certificate)
        {
            var encryptionMetadata = new Dictionary<string, object> {{"privatekey", certificate.PrivateKey}};
            var encryptionEngine = EncryptionEngine.Get<RSAEncryptionEngine>();
            if (configuration.Database.Default.IsEncrypted)
            {
                configuration.Database.Default.Password =
                    encryptionEngine.Decrypt(configuration.Database.Default.Password, string.Empty, encryptionMetadata);
                ;
            }

            if (configuration.Runtime.SuperUser.IsEncrypted)
            {
                configuration.Runtime.SuperUser.Password =
                    encryptionEngine.Decrypt(configuration.Runtime.SuperUser.Password, string.Empty, encryptionMetadata);
            }
        }
Пример #34
0
        private BaseProvider GetDatabaseProviderInstance(IHostConfig configuration)
        {
            var defaultDatabaseConfig = configuration.Database.Default;

            Type providerType = Type.GetType(defaultDatabaseConfig.ProviderType);

            if (providerType == null)
                throw new InvalidConfigurationException("Could not locate Database Provider :" +
                                                        defaultDatabaseConfig.ProviderType);

            if (!providerType.ImplementsClass<BaseProvider>())
                throw new InvalidConfigurationException("Database Provider does not implement BaseProvider:" +
                                                        defaultDatabaseConfig.ProviderType);

            var instance = Activator.CreateInstance(providerType, defaultDatabaseConfig);

            var baseProvider = instance as BaseProvider;
            if (baseProvider != null)
            {
                baseProvider.Init();
                return baseProvider;
            }
            throw new InvalidOperationException("Type : " + providerType + " does not inherit from BaseProvider");
        }
Пример #35
0
 private HostContext(IHostConfig configuration, ContextSettings settings)
 {
     CurrentHostContext.CreateDefault(configuration, settings);
 }
Пример #36
0
 public static string BuildTcp(IHostConfig host, params string[] paths)
 => new AkkaAddressFactory(host, "tcp")
 .AddPath(paths)
 .Build();