/// <summary> /// Initializes a new instance of the <see cref="SanteDB.DisconnectedClient.Http.RestClient"/> class. /// </summary> public RestClient(ServiceClientDescriptionConfiguration config) : base(config) { this.m_configurationSection = ApplicationContext.Current?.Configuration?.GetSection <ServiceClientConfigurationSection>(); this.m_tracer = Tracer.GetTracer(this.GetType()); // Find the specified certificate if (config.Binding.Security?.ClientCertificate != null) { this.ClientCertificates = new X509Certificate2Collection(); var cert = X509CertificateUtils.FindCertificate(config.Binding.Security.ClientCertificate.FindType, config.Binding.Security.ClientCertificate.StoreLocation, config.Binding.Security.ClientCertificate.StoreName, config.Binding.Security.ClientCertificate.FindValue); if (cert == null) { throw new SecurityException(String.Format("Certificate described by {0} could not be found in {1}/{2}", config.Binding.Security.ClientCertificate.FindValue, config.Binding.Security.ClientCertificate.StoreLocation, config.Binding.Security.ClientCertificate.StoreName)); } this.ClientCertificates.Add(cert); } }
public bool JoinRealm(String realmUri, String deviceName) { this.m_tracer.TraceInfo("Joining {0}", realmUri); // Demand policy try { if (AndroidApplicationContext.Current.ConfigurationManager.IsConfigured) { new PolicyPermission(PermissionState.Unrestricted, PolicyIdentifiers.UnrestrictedAdministration).Demand(); } // Configure the stuff to the appropriate realm info var serviceClientSection = AndroidApplicationContext.Current.Configuration.GetSection <ServiceClientConfigurationSection>(); if (serviceClientSection == null) { serviceClientSection = new ServiceClientConfigurationSection() { RestClientType = typeof(RestClient) }; AndroidApplicationContext.Current.Configuration.Sections.Add(serviceClientSection); } else { serviceClientSection.Client.Clear(); } // TODO: Actually contact the AMI for this information ApplicationContext.Current.Configuration.GetSection <SecurityConfigurationSection>().DeviceName = deviceName; ApplicationContext.Current.Configuration.GetSection <SecurityConfigurationSection>().Domain = realmUri; ApplicationContext.Current.Configuration.GetSection <SecurityConfigurationSection>().TokenAlgorithms = new System.Collections.Generic.List <string>() { "RS256", "HS256" }; ApplicationContext.Current.Configuration.GetSection <SecurityConfigurationSection>().TokenType = "urn:ietf:params:oauth:token-type:jwt"; String imsiUri = String.Format("http://{0}:8080/imsi", realmUri), oauthUri = String.Format("http://{0}:8080/auth", realmUri), amiUri = String.Format("http://{0}:8080/ami", realmUri); // Parse IMSI URI serviceClientSection.Client.Add(new ServiceClientDescription() { Binding = new ServiceClientBinding() { Security = new ServiceClientSecurity() { AuthRealm = realmUri, Mode = SecurityScheme.Bearer, CredentialProvider = new TokenCredentialProvider(), PreemptiveAuthentication = true }, Optimize = true }, Endpoint = new System.Collections.Generic.List <ServiceClientEndpoint>() { new ServiceClientEndpoint() { Address = imsiUri } }, Name = "imsi" }); // Parse ACS URI serviceClientSection.Client.Add(new ServiceClientDescription() { Binding = new ServiceClientBinding() { Security = new ServiceClientSecurity() { AuthRealm = realmUri, Mode = SecurityScheme.Bearer, CredentialProvider = new TokenCredentialProvider(), PreemptiveAuthentication = true }, Optimize = false }, Endpoint = new System.Collections.Generic.List <ServiceClientEndpoint>() { new ServiceClientEndpoint() { Address = amiUri } }, Name = "ami" }); // Parse ACS URI serviceClientSection.Client.Add(new ServiceClientDescription() { Binding = new ServiceClientBinding() { Security = new ServiceClientSecurity() { AuthRealm = realmUri, Mode = SecurityScheme.Basic, CredentialProvider = new OAuth2CredentialProvider() }, Optimize = false }, Endpoint = new System.Collections.Generic.List <ServiceClientEndpoint>() { new ServiceClientEndpoint() { Address = oauthUri } }, Name = "acs" }); } catch (PolicyViolationException e) { // TODO: Login permission } catch (Exception e) { this.m_tracer.TraceError("Error joining context: {0}", e); } return(true); }
/// <summary> /// Initializes a new instance of the <see cref="SanteDB.DisconnectedClient.Http.RestClient"/> class. /// </summary> public RestClient() : base() { this.m_tracer = Tracer.GetTracer(this.GetType()); this.m_configurationSection = ApplicationContext.Current?.Configuration?.GetSection <ServiceClientConfigurationSection>(); }
/// <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> /// 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) }); } }