/// <summary> /// Sets settings property of ApplicationFoundation type from application configuration file. /// </summary> /// <param name="settings">Settings for application</param> public static void SetApplicationSettings() { ApplicationSettings settings = new ApplicationSettings(); ApplicationConfigurationSection appConfig = ConfigurationManager.GetSection("applicationConfiguration") as ApplicationConfigurationSection; if (appConfig != null) { settings.ErrorPageUrl = appConfig.ErrorPageUrl; } ApplicationFoundation.Settings = settings; ConfigureExceptionHandling(); }
private void OverridePropertiesWithConfigSectionDefinitions() { ApplicationConfigurationSection configurationSection = GetConfigurationSection(); if (configurationSection == null) { return; } foreach (ApplicationEntityType entityType in _types) { IEnumerable <MetaDataConfigurationElement> configDefinitions = GetEntityConfigurationMeta( entityType.Type, configurationSection); MergeProperties(entityType.Properties, configDefinitions); } }
private IEnumerable <MetaDataConfigurationElement> GetEntityConfigurationMeta( Type type, ApplicationConfigurationSection section) { if (section != null) { var meta = (IEnumerable <MetaDataConfigurationElement>)section.MetaDefinition; var entities = (IEnumerable <EntityConfigurationElement>)section.Entities; EntityConfigurationElement definition = entities.SingleOrDefault(x => x.Type == type); if (definition != null) { meta = meta.Union(definition.MetaDefinition, new MetaDataConfigurationElementComparer()); } return(meta); } return(null); }
/// <summary> /// Start the daemon services /// </summary> protected void Start() { // Already running if (this.m_running) { return; } this.m_running = true; if (!this.m_cache.ContainsKey(typeof(IServiceManager))) { this.m_cache.Add(typeof(IServiceManager), this); } //ModelSettings.SourceProvider = new EntitySource.DummyEntitySource(); this.Starting?.Invoke(this, EventArgs.Empty); ApplicationConfigurationSection config = this.Configuration.GetSection <ApplicationConfigurationSection>(); var daemons = config.Services.OfType <IDaemonService>(); Tracer tracer = Tracer.GetTracer(typeof(ApplicationContext)); var nonChangeDaemons = daemons.Distinct().ToArray(); foreach (var d in nonChangeDaemons) { try { tracer.TraceInfo("Starting {0}", d.GetType().Name); if (!d.Start()) { tracer.TraceWarning("{0} reported unsuccessful startup", d.GetType().Name); } } catch (Exception e) { tracer.TraceError("Daemon {0} did not start up successully!: {1}", d, e); throw new TypeLoadException($"{d} failed startup: {e.Message}", e); } } this.GetService <IThreadPoolService>().QueueNonPooledWorkItem(o => { this.Started?.Invoke(this, EventArgs.Empty); }, null); }
/// <summary> /// Force stop /// </summary> public void Stop() { this.Stopping?.Invoke(this, EventArgs.Empty); ApplicationConfigurationSection config = this.Configuration.GetSection <ApplicationConfigurationSection>(); var daemons = config.Services.OfType <IDaemonService>(); Tracer tracer = Tracer.GetTracer(typeof(ApplicationContext)); foreach (var d in daemons) { tracer.TraceInfo("Stopping {0}", d.GetType().Name); if (!d.Stop()) { tracer.TraceWarning("{0} reported unsuccessful startup", d.GetType().Name); } } this.Stopped?.Invoke(this, EventArgs.Empty); this.m_running = false; }
/// <summary> /// Gets the service object of the specified type. /// </summary> /// <returns>The service.</returns> /// <param name="serviceType">Service type.</param> public object GetService(Type serviceType) { Object candidateService = null; if (!this.m_cache.TryGetValue(serviceType, out candidateService)) { ApplicationConfigurationSection appSection = this.Configuration.GetSection <ApplicationConfigurationSection> (); candidateService = appSection.Services.Find(o => serviceType.GetTypeInfo().IsAssignableFrom(o.GetType().GetTypeInfo())); if (candidateService != null) { lock (this.m_lockObject) if (!this.m_cache.ContainsKey(serviceType)) { this.m_cache.Add(serviceType, candidateService); } else { candidateService = this.m_cache[serviceType]; } } } return(candidateService); }
/// <summary> /// Get a bare bones configuration /// </summary> public static OpenIZConfiguration GetDefaultConfiguration() { // TODO: Bring up initial settings dialog and utility var retVal = new OpenIZConfiguration(); // Inital data source DataConfigurationSection dataSection = new DataConfigurationSection() { MainDataSourceConnectionStringName = "openIzData", MessageQueueConnectionStringName = "openIzQueue", ConnectionString = new System.Collections.Generic.List <ConnectionString>() { new ConnectionString() { Name = "openIzData", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.sqlite") }, new ConnectionString() { Name = "openIzSearch", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.ftsearch.sqlite") }, new ConnectionString() { Name = "openIzQueue", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "MessageQueue.sqlite") }, new ConnectionString() { Name = "openIzWarehouse", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.warehouse.sqlite") }, new ConnectionString() { Name = "openIzAudit", Value = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "OpenIZ.audit.sqlite") } } }; // Initial Applet configuration AppletConfigurationSection appletSection = new AppletConfigurationSection() { AppletDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "applets"), AppletGroupOrder = new System.Collections.Generic.List <string>() { "Patient Management", "Encounter Management", "Stock Management", "Administration" }, StartupAsset = "org.openiz.core", Security = new AppletSecurityConfiguration() { TrustedPublishers = new List <string>() { "84BD51F0584A1F708D604CF0B8074A68D3BEB973" } } }; // Initial applet style ApplicationConfigurationSection appSection = new ApplicationConfigurationSection() { Style = StyleSchemeType.Dark, UserPrefDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MINIMS", "userpref"), ServiceTypes = new List <string>() { typeof(LocalPolicyDecisionService).AssemblyQualifiedName, typeof(LocalPolicyInformationService).AssemblyQualifiedName, typeof(LocalPatientService).AssemblyQualifiedName, typeof(LocalPlaceService).AssemblyQualifiedName, typeof(LocalAlertService).AssemblyQualifiedName, typeof(LocalConceptService).AssemblyQualifiedName, typeof(LocalEntityRepositoryService).AssemblyQualifiedName, typeof(LocalOrganizationService).AssemblyQualifiedName, typeof(LocalRoleProviderService).AssemblyQualifiedName, typeof(LocalSecurityService).AssemblyQualifiedName, typeof(LocalMaterialService).AssemblyQualifiedName, typeof(LocalBatchService).AssemblyQualifiedName, typeof(LocalActService).AssemblyQualifiedName, typeof(SQLiteDatawarehouse).AssemblyQualifiedName, typeof(LocalProviderService).AssemblyQualifiedName, typeof(NetworkInformationService).AssemblyQualifiedName, typeof(CarePlanManagerService).AssemblyQualifiedName, typeof(BusinessRulesDaemonService).AssemblyQualifiedName, typeof(LocalEntitySource).AssemblyQualifiedName, typeof(MiniImsServer).AssemblyQualifiedName, typeof(MemoryCacheService).AssemblyQualifiedName, typeof(OpenIZThreadPool).AssemblyQualifiedName, typeof(SimpleCarePlanService).AssemblyQualifiedName, typeof(MemorySessionManagerService).AssemblyQualifiedName, typeof(AmiUpdateManager).AssemblyQualifiedName, typeof(AppletClinicalProtocolRepository).AssemblyQualifiedName, typeof(MemoryQueryPersistenceService).AssemblyQualifiedName, typeof(SimpleQueueFileProvider).AssemblyQualifiedName, typeof(SimplePatchService).AssemblyQualifiedName, typeof(SQLite.Net.Platform.Generic.SQLitePlatformGeneric).AssemblyQualifiedName, typeof(SearchIndexService).AssemblyQualifiedName, typeof(MiniAppletManagerService).AssemblyQualifiedName, typeof(MemoryTickleService).AssemblyQualifiedName, typeof(LocalTagPersistenceService).AssemblyQualifiedName, typeof(SQLiteReportDatasource).AssemblyQualifiedName, typeof(ReportExecutor).AssemblyQualifiedName, typeof(XamarinBackupService).AssemblyQualifiedName, typeof(AppletReportRepository).AssemblyQualifiedName }, Cache = new CacheConfiguration() { MaxAge = new TimeSpan(0, 5, 0).Ticks, MaxSize = 1000, MaxDirtyAge = new TimeSpan(0, 20, 0).Ticks, MaxPressureAge = new TimeSpan(0, 2, 0).Ticks } }; // Security configuration var wlan = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(o => o.NetworkInterfaceType == NetworkInterfaceType.Ethernet && o.Description.StartsWith("wlan")); String macAddress = Guid.NewGuid().ToString(); if (wlan != null) { macAddress = wlan.GetPhysicalAddress().ToString(); } //else SecurityConfigurationSection secSection = new SecurityConfigurationSection() { DeviceName = String.Format("MINI-IMS-{0}", macAddress).Replace(" ", ""), AuditRetention = new TimeSpan(30, 0, 0, 0, 0) }; // Device key var certificate = X509CertificateUtils.FindCertificate(X509FindType.FindBySubjectName, StoreLocation.LocalMachine, StoreName.My, String.Format("DN={0}.mobile.openiz.org", macAddress)); secSection.DeviceSecret = certificate?.Thumbprint; // Rest Client Configuration ServiceClientConfigurationSection serviceSection = new ServiceClientConfigurationSection() { RestClientType = typeof(RestClient) }; // Trace writer #if DEBUG DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new System.Collections.Generic.List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new LogTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new FileTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new ConsoleTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") } } }; #else DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new FileTraceWriter(System.Diagnostics.Tracing.EventLevel.LogAlways, "OpenIZ") } } }; #endif retVal.Sections.Add(appletSection); retVal.Sections.Add(dataSection); retVal.Sections.Add(diagSection); retVal.Sections.Add(appSection); retVal.Sections.Add(secSection); retVal.Sections.Add(serviceSection); retVal.Sections.Add(new SynchronizationConfigurationSection() { PollInterval = new TimeSpan(0, 5, 0) }); return(retVal); }
/// <summary> /// Remove a service provider /// </summary> public void RemoveServiceProvider(Type serviceType) { ApplicationConfigurationSection appSection = this.Configuration.GetSection <ApplicationConfigurationSection>(); appSection.Services.RemoveAll(o => o.GetType() == serviceType); }
/// <summary> /// Get all services /// </summary> public IEnumerable <object> GetServices() { ApplicationConfigurationSection appSection = this.Configuration.GetSection <ApplicationConfigurationSection>(); return(appSection.Services); }
/// <summary> /// Add service /// </summary> public void AddServiceProvider(Type serviceType) { ApplicationConfigurationSection appSection = this.Configuration.GetSection <ApplicationConfigurationSection>(); appSection.Services.Add(Activator.CreateInstance(serviceType)); }
/// <summary> /// Get a bare bones configuration /// </summary> public SanteDBConfiguration GetDefaultConfiguration() { // TODO: Bring up initial settings dialog and utility var retVal = new SanteDBConfiguration(); // Initial Applet configuration AppletConfigurationSection appletSection = new AppletConfigurationSection() { AppletDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SanteDB", this.m_instanceName, "applets"), StartupAsset = "org.santedb.uicore", Security = new AppletSecurityConfiguration() { AllowUnsignedApplets = true, TrustedPublishers = new List <string>() { "82C63E1E9B87578D0727E871D7613F2F0FAF683B", "4326A4421216AC254DA93DC61B93160B08925BB1" } } }; // Initial applet style ApplicationConfigurationSection appSection = new ApplicationConfigurationSection() { Style = StyleSchemeType.Dark, UserPrefDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SanteDB", this.m_instanceName, "userpref"), Cache = new CacheConfiguration() { MaxAge = new TimeSpan(0, 5, 0).Ticks, MaxSize = 1000, MaxDirtyAge = new TimeSpan(0, 20, 0).Ticks, MaxPressureAge = new TimeSpan(0, 2, 0).Ticks } }; // App service var appServiceSection = new ApplicationServiceContextConfigurationSection() { ThreadPoolSize = Environment.ProcessorCount * 16, ServiceProviders = new List <TypeReferenceConfiguration>() { new TypeReferenceConfiguration(typeof(AesSymmetricCrypographicProvider)), new TypeReferenceConfiguration(typeof(MemoryTickleService)), new TypeReferenceConfiguration(typeof(SHA256PasswordHasher)), new TypeReferenceConfiguration(typeof(SanteDB.Core.Security.DefaultPolicyDecisionService)), new TypeReferenceConfiguration(typeof(DataPolicyFilterService)), new TypeReferenceConfiguration(typeof(NetworkInformationService)), new TypeReferenceConfiguration(typeof(BusinessRulesDaemonService)), new TypeReferenceConfiguration(typeof(AgsService)), new TypeReferenceConfiguration(typeof(SanteDB.Caching.Memory.MemoryCacheService)), new TypeReferenceConfiguration(typeof(SanteDB.Caching.Memory.MemoryAdhocCacheService)), new TypeReferenceConfiguration(typeof(DefaultThreadPoolService)), new TypeReferenceConfiguration(typeof(SimpleCarePlanService)), new TypeReferenceConfiguration(typeof(MemorySessionManagerService)), new TypeReferenceConfiguration(typeof(AmiUpdateManager)), new TypeReferenceConfiguration(typeof(AppletClinicalProtocolRepository)), new TypeReferenceConfiguration(typeof(AppletLocalizationService)), new TypeReferenceConfiguration(typeof(MemoryQueryPersistenceService)), new TypeReferenceConfiguration(typeof(AuditDaemonService)), new TypeReferenceConfiguration(typeof(SimpleQueueFileProvider)), new TypeReferenceConfiguration(typeof(SimplePatchService)), new TypeReferenceConfiguration(typeof(DefaultBackupService)), new TypeReferenceConfiguration(typeof(DcAppletManagerService)), new TypeReferenceConfiguration(typeof(AppletBiRepository)), new TypeReferenceConfiguration(typeof(DefaultOperatingSystemInfoService)), new TypeReferenceConfiguration(typeof(AppletSubscriptionRepository)), new TypeReferenceConfiguration(typeof(AmiSecurityChallengeProvider)), new TypeReferenceConfiguration(typeof(InMemoryPivotProvider)), new TypeReferenceConfiguration(typeof(DefaultDataSigningService)), new TypeReferenceConfiguration(typeof(GenericConfigurationPushService)), new TypeReferenceConfiguration(typeof(QrBarcodeGenerator)), new TypeReferenceConfiguration(typeof(FileSystemDispatcherQueueService)) } }; // Security configuration SecurityConfigurationSection secSection = new SecurityConfigurationSection() { DeviceName = Environment.MachineName, AuditRetention = new TimeSpan(30, 0, 0, 0, 0), DomainAuthentication = DomainClientAuthentication.Inline }; // Device key //var certificate = X509CertificateUtils.FindCertificate(X509FindType.FindBySubjectName, StoreLocation.LocalMachine, StoreName.My, String.Format("DN={0}.mobile.santedb.org", macAddress)); //secSection.DeviceSecret = certificate?.Thumbprint; // Rest Client Configuration ServiceClientConfigurationSection serviceSection = new ServiceClientConfigurationSection() { RestClientType = typeof(RestClient) }; // Trace writer #if DEBUG DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new System.Collections.Generic.List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.Informational, InitializationData = "SanteDB", TraceWriter = typeof(LogTraceWriter) }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.Informational, InitializationData = "SanteDB", TraceWriter = typeof(FileTraceWriter) } } }; #else DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.Warning, InitializationData = "SanteDB", TraceWriter = typeof(FileTraceWriter) } } }; #endif retVal.Sections.Add(new FileSystemDispatcherQueueConfigurationSection() { QueuePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SanteDB", this.m_instanceName, "queue"), }); retVal.Sections.Add(appServiceSection); retVal.Sections.Add(appletSection); retVal.Sections.Add(diagSection); retVal.Sections.Add(appSection); retVal.Sections.Add(secSection); retVal.Sections.Add(serviceSection); retVal.Sections.Add(new AuditAccountabilityConfigurationSection() { AuditFilters = new List <AuditFilterConfiguration>() { // Audit any failure - No matter which event new AuditFilterConfiguration(null, null, SanteDB.Core.Auditing.OutcomeIndicator.EpicFail | SanteDB.Core.Auditing.OutcomeIndicator.MinorFail | SanteDB.Core.Auditing.OutcomeIndicator.SeriousFail, true, true), // Audit anything that creates, reads, or updates data new AuditFilterConfiguration(SanteDB.Core.Auditing.ActionType.Create | SanteDB.Core.Auditing.ActionType.Read | SanteDB.Core.Auditing.ActionType.Update | SanteDB.Core.Auditing.ActionType.Delete, null, null, true, true) } }); retVal.Sections.Add(new DcDataConfigurationSection() { MainDataSourceConnectionStringName = "santeDbData", MessageQueueConnectionStringName = "santeDbQueue" }); retVal.AddSection(AgsService.GetDefaultConfiguration()); retVal.Sections.Add(new SynchronizationConfigurationSection() { PollInterval = new TimeSpan(0, 5, 0), ForbiddenResouces = new List <SynchronizationForbidConfiguration>() { new SynchronizationForbidConfiguration(SynchronizationOperationType.All, "DeviceEntity"), new SynchronizationForbidConfiguration(SynchronizationOperationType.All, "ApplicationEntity"), new SynchronizationForbidConfiguration(SynchronizationOperationType.All, "Concept"), new SynchronizationForbidConfiguration(SynchronizationOperationType.All, "ConceptSet"), new SynchronizationForbidConfiguration(SynchronizationOperationType.All, "Place"), new SynchronizationForbidConfiguration(SynchronizationOperationType.All, "ReferenceTerm"), new SynchronizationForbidConfiguration(SynchronizationOperationType.All, "AssigningAuthority"), new SynchronizationForbidConfiguration(SynchronizationOperationType.Obsolete, "UserEntity") } }); foreach (var t in AppDomain.CurrentDomain.GetAssemblies() .Where(a => !a.IsDynamic) .SelectMany(a => { try { return(a.ExportedTypes); } catch (Exception) { return(Type.EmptyTypes); } }) .Where(t => typeof(IInitialConfigurationProvider).IsAssignableFrom(t) && !t.IsAbstract && !t.IsInterface)) { retVal = (Activator.CreateInstance(t) as IInitialConfigurationProvider).Provide(retVal); } return(retVal); }
/// <summary> /// Load the configuration file /// </summary> public SanteDBConfiguration Load() { if (!String.IsNullOrEmpty(this.m_configPath)) { using (var fs = File.OpenRead(this.m_configPath)) { return(SanteDBConfiguration.Load(fs)); } } else { var retVal = new SanteDBConfiguration(); // Inital data source DcDataConfigurationSection dataSection = new DcDataConfigurationSection() { MainDataSourceConnectionStringName = "santeDbData", MessageQueueConnectionStringName = "santeDbData", MailDataStore = "santeDbData", ConnectionString = new System.Collections.Generic.List <ConnectionString>() { new ConnectionString() { Name = "santeDbData", Value = $"dbfile={(String.IsNullOrEmpty(this.m_dataPath) ? "SanteDB.debug.sqlite" : this.m_dataPath )}", Provider = "sqlite" } } }; JavascriptRulesConfigurationSection jsConfiguration = new JavascriptRulesConfigurationSection() { DebugMode = true, WorkerInstances = 1 }; // Initial Applet configuration AppletConfigurationSection appletSection = new AppletConfigurationSection() { Security = new AppletSecurityConfiguration() { AllowUnsignedApplets = true, TrustedPublishers = new List <string>() { "82C63E1E9B87578D0727E871D7613F2F0FAF683B" } } }; // Initial applet style ApplicationConfigurationSection appSection = new ApplicationConfigurationSection() { Style = StyleSchemeType.Dark, UserPrefDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "SdbDebug", "userpref"), Cache = new CacheConfiguration() { MaxAge = new TimeSpan(0, 5, 0).Ticks, MaxSize = 1000, MaxDirtyAge = new TimeSpan(0, 20, 0).Ticks, MaxPressureAge = new TimeSpan(0, 2, 0).Ticks } }; // Application service section ApplicationServiceContextConfigurationSection appServiceSection = new ApplicationServiceContextConfigurationSection() { ThreadPoolSize = Environment.ProcessorCount, ServiceProviders = new List <TypeReferenceConfiguration>() { new TypeReferenceConfiguration(typeof(SanteDB.Core.Security.DefaultPolicyDecisionService)), new TypeReferenceConfiguration(typeof(SQLitePolicyInformationService)), new TypeReferenceConfiguration(typeof(LocalRepositoryFactoryService)), //typeof(LocalAlertService).AssemblyQualifiedName, new TypeReferenceConfiguration(typeof(LocalTagPersistenceService)), new TypeReferenceConfiguration(typeof(NetworkInformationService)), new TypeReferenceConfiguration(typeof(BusinessRulesDaemonService)), new TypeReferenceConfiguration(typeof(PersistenceEntitySource)), new TypeReferenceConfiguration(typeof(SanteDB.Caching.Memory.MemoryCacheService)), new TypeReferenceConfiguration(typeof(SanteDB.Core.Services.Impl.DefaultThreadPoolService)), new TypeReferenceConfiguration(typeof(MemorySessionManagerService)), new TypeReferenceConfiguration(typeof(AmiUpdateManager)), new TypeReferenceConfiguration(typeof(AppletClinicalProtocolRepository)), new TypeReferenceConfiguration(typeof(MemoryQueryPersistenceService)), new TypeReferenceConfiguration(typeof(SimpleQueueFileProvider)), new TypeReferenceConfiguration(typeof(SimpleCarePlanService)), new TypeReferenceConfiguration(typeof(SimplePatchService)), new TypeReferenceConfiguration(typeof(DebugAppletManagerService)), new TypeReferenceConfiguration(typeof(SQLiteConnectionManager)), new TypeReferenceConfiguration(typeof(SQLitePersistenceService)), new TypeReferenceConfiguration(typeof(SQLite.Net.Platform.SqlCipher.SQLitePlatformSqlCipher)) } }; // Security configuration SecurityConfigurationSection secSection = new SecurityConfigurationSection() { DeviceName = Environment.MachineName, AuditRetention = new TimeSpan(30, 0, 0, 0, 0) }; // Device key //var certificate = X509CertificateUtils.FindCertificate(X509FindType.FindBySubjectName, StoreLocation.LocalMachine, StoreName.My, String.Format("DN={0}.mobile.santedb.org", macAddress)); //secSection.DeviceSecret = certificate?.Thumbprint; // Rest Client Configuration ServiceClientConfigurationSection serviceSection = new ServiceClientConfigurationSection() { RestClientType = typeof(RestClient) }; // Trace writer DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new System.Collections.Generic.List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.Error, InitializationData = "SanteDB", TraceWriter = typeof(ConsoleTraceWriter) }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "SanteDB", TraceWriter = typeof(FileTraceWriter) } } }; retVal.Sections.Add(appServiceSection); retVal.Sections.Add(appletSection); retVal.Sections.Add(dataSection); retVal.Sections.Add(diagSection); retVal.Sections.Add(appSection); retVal.Sections.Add(secSection); retVal.Sections.Add(serviceSection); retVal.Sections.Add(jsConfiguration); retVal.Sections.Add(new SynchronizationConfigurationSection() { PollInterval = new TimeSpan(0, 5, 0) }); return(retVal); } }
/// <summary> /// Load the configuration file /// </summary> public void Load() { if (!String.IsNullOrEmpty(this.m_configPath)) { using (var fs = File.OpenRead(this.m_configPath)) { this.m_configuration = OpenIZConfiguration.Load(fs); } } else { this.m_configuration = new OpenIZConfiguration(); // Inital data source DataConfigurationSection dataSection = new DataConfigurationSection() { MainDataSourceConnectionStringName = "openIzData", MessageQueueConnectionStringName = "openIzData", ConnectionString = new System.Collections.Generic.List <ConnectionString>() { new ConnectionString() { Name = "openIzData", Value = String.IsNullOrEmpty(this.m_dataPath) ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Minims", "OpenIZ.sqlite") : this.m_dataPath } } }; // Initial Applet configuration AppletConfigurationSection appletSection = new AppletConfigurationSection() { Security = new AppletSecurityConfiguration() { AllowUnsignedApplets = true, TrustedPublishers = new List <string>() { "84BD51F0584A1F708D604CF0B8074A68D3BEB973" } } }; // Initial applet style ApplicationConfigurationSection appSection = new ApplicationConfigurationSection() { Style = StyleSchemeType.Dark, UserPrefDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "OizDebug", "userpref"), ServiceTypes = new List <string>() { typeof(LocalPolicyDecisionService).AssemblyQualifiedName, typeof(LocalPolicyInformationService).AssemblyQualifiedName, typeof(LocalPatientService).AssemblyQualifiedName, typeof(LocalPlaceService).AssemblyQualifiedName, //typeof(LocalAlertService).AssemblyQualifiedName, typeof(LocalConceptService).AssemblyQualifiedName, typeof(LocalEntityRepositoryService).AssemblyQualifiedName, typeof(LocalOrganizationService).AssemblyQualifiedName, typeof(LocalRoleProviderService).AssemblyQualifiedName, typeof(LocalSecurityService).AssemblyQualifiedName, typeof(LocalMaterialService).AssemblyQualifiedName, typeof(LocalBatchService).AssemblyQualifiedName, typeof(LocalActService).AssemblyQualifiedName, typeof(LocalProviderService).AssemblyQualifiedName, typeof(LocalTagPersistenceService).AssemblyQualifiedName, typeof(NetworkInformationService).AssemblyQualifiedName, typeof(BusinessRulesDaemonService).AssemblyQualifiedName, typeof(LocalEntitySource).AssemblyQualifiedName, typeof(MemoryCacheService).AssemblyQualifiedName, typeof(OpenIZThreadPool).AssemblyQualifiedName, typeof(MemorySessionManagerService).AssemblyQualifiedName, typeof(AmiUpdateManager).AssemblyQualifiedName, typeof(AppletClinicalProtocolRepository).AssemblyQualifiedName, typeof(MemoryQueryPersistenceService).AssemblyQualifiedName, typeof(SimpleQueueFileProvider).AssemblyQualifiedName, typeof(SimpleCarePlanService).AssemblyQualifiedName, typeof(SimplePatchService).AssemblyQualifiedName, typeof(DebugAppletManagerService).AssemblyQualifiedName, typeof(SQLiteConnectionManager).AssemblyQualifiedName, typeof(LocalPersistenceService).AssemblyQualifiedName }, Cache = new CacheConfiguration() { MaxAge = new TimeSpan(0, 5, 0).Ticks, MaxSize = 1000, MaxDirtyAge = new TimeSpan(0, 20, 0).Ticks, MaxPressureAge = new TimeSpan(0, 2, 0).Ticks } }; appSection.ServiceTypes.Add(typeof(SQLite.Net.Platform.Generic.SQLitePlatformGeneric).AssemblyQualifiedName); // Security configuration SecurityConfigurationSection secSection = new SecurityConfigurationSection() { DeviceName = Environment.MachineName, AuditRetention = new TimeSpan(30, 0, 0, 0, 0) }; // Device key //var certificate = X509CertificateUtils.FindCertificate(X509FindType.FindBySubjectName, StoreLocation.LocalMachine, StoreName.My, String.Format("DN={0}.mobile.openiz.org", macAddress)); //secSection.DeviceSecret = certificate?.Thumbprint; // Rest Client Configuration ServiceClientConfigurationSection serviceSection = new ServiceClientConfigurationSection() { RestClientType = typeof(RestClient) }; // Trace writer DiagnosticsConfigurationSection diagSection = new DiagnosticsConfigurationSection() { TraceWriter = new System.Collections.Generic.List <TraceWriterConfiguration>() { new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.Error, InitializationData = "OpenIZ", TraceWriter = new ConsoleTraceWriter(System.Diagnostics.Tracing.EventLevel.Warning, "OpenIZ") }, new TraceWriterConfiguration() { Filter = System.Diagnostics.Tracing.EventLevel.LogAlways, InitializationData = "OpenIZ", TraceWriter = new FileTraceWriter(System.Diagnostics.Tracing.EventLevel.Warning, "OpenIZ") } } }; this.m_configuration.Sections.Add(appletSection); this.m_configuration.Sections.Add(dataSection); this.m_configuration.Sections.Add(diagSection); this.m_configuration.Sections.Add(appSection); this.m_configuration.Sections.Add(secSection); this.m_configuration.Sections.Add(serviceSection); this.m_configuration.Sections.Add(new SynchronizationConfigurationSection() { PollInterval = new TimeSpan(0, 5, 0) }); } }
/// <summary> /// Service instance /// </summary> public void AddServiceProvider(Object serviceInstance) { ApplicationConfigurationSection appSection = this.Configuration.GetSection <ApplicationConfigurationSection>(); appSection.Services.Add(serviceInstance); }