示例#1
0
        public static void BuildPrivateKey()
        {
            var    path = MyHostingEnvironment.MapPath(_rsaPath);
            string privateKey;

            RsaUtil.CreateKey(out privateKey);
            System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path));
            System.IO.File.WriteAllText(path, privateKey);

            RsaUtil.GetParams(privateKey, out string modulus, out string exponent);
            _exponent   = exponent;
            _modulus    = modulus;
            _privateKey = privateKey;
            //_timeout = DateTime.Now.AddSeconds(60);
        }
示例#2
0
        public override void WriteLog(string type, string content)
        {
            var Time     = DateTime.Now;
            var filePath = new StringBuilder(File_Name);

            filePath.Replace("{time}", (Time.Ticks / 1000).ToString());
            filePath.Replace("{yyyy}", Time.Year.ToString());
            filePath.Replace("{yy}", (Time.Year % 100).ToString("D2"));
            filePath.Replace("{MM}", Time.Month.ToString("D2"));
            filePath.Replace("{dd}", Time.Day.ToString("D2"));
            filePath.Replace("{HH}", Time.Hour.ToString("D2"));
            filePath.Replace("{hh}", Time.Hour.ToString("D2"));
            filePath.Replace("{mm}", Time.Minute.ToString("D2"));
            filePath.Replace("{ss}", Time.Second.ToString("D2"));
            filePath.Replace("{type}", type);

            var file = MyHostingEnvironment.MapPath(filePath.ToString());

            file = Path.GetFullPath(file);
            Directory.CreateDirectory(Path.GetDirectoryName(file));
            fileLoggerQueue.EnqueueMessage(file, content);
        }
示例#3
0
        private static void GetPrivateKey()
        {
            if (_privateKey == null /*|| _timeout == null || _timeout.Value < DateTime.Now*/)
            {
                var    path = MyHostingEnvironment.MapPath(_rsaPath);
                string privateKey;
                if (System.IO.File.Exists(path) == false)
                {
                    RsaUtil.CreateKey(out privateKey);
                    System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path));
                    System.IO.File.WriteAllText(path, privateKey);
                }
                else
                {
                    privateKey = System.IO.File.ReadAllText(path);
                }

                RsaUtil.GetParams(privateKey, out string modulus, out string exponent);
                _exponent   = exponent;
                _modulus    = modulus;
                _privateKey = privateKey;
                //_timeout = DateTime.Now.AddSeconds(60);
            }
        }
示例#4
0
 /// <summary>
 /// 获取文件绝对路径
 /// </summary>
 /// <param name="path"></param>
 /// <returns></returns>
 protected string MapWebRootPath(string path)
 {
     return(MyHostingEnvironment.MapWebRootPath(path));
 }
        /// <inheritdoc />
        public override void Load(IServiceCollection services)
        {
            var configurationBuilderEnvironment = new ConfigurationBuilder()
                                                  .SetBasePath(_basePath)
                                                  .AddEnvironmentVariables();
            var configEnvironment = configurationBuilderEnvironment.Build();
            var environmentName   = configEnvironment["ASPNETCORE_ENVIRONMENT"];
            IHostingEnvironment hostingEnvironment = new MyHostingEnvironment()
            {
                ApplicationName = "GenericSecurityTokenService",
                EnvironmentName = environmentName
            };

            services.AddSingleton <IHostingEnvironment>(hostingEnvironment);

            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(_basePath)
                                       .AddJsonFile("config.json")
                                       .AddJsonFile($"appsettings.IdentityResources.json")
                                       .AddJsonFile($"appsettings.ApiResources.json")
                                       .AddJsonFile($"appsettings.keyVault.json")
                                       .AddJsonFile($"appsettings.graphql.json")
                                       .AddJsonFile($"appsettings.Clients.json");

            if (hostingEnvironment.IsDevelopment())
            {
                configurationBuilder.AddUserSecrets <CoreAppModule>();
            }
            configurationBuilder.AddEnvironmentVariables();
            Configuration = configurationBuilder.Build();

            services.AddSingleton <IConfiguration>(Configuration);

            bool useRedis    = Convert.ToBoolean(Configuration["appOptions:redis:useRedis"]);
            bool useKeyVault = Convert.ToBoolean(Configuration["appOptions:keyVault:useKeyVault"]);

            services.AddSingleton <HttpClient>();

            services.AddSingleton <IAuthorityFunction, CoreAuthorityFunction>();
            services.AddSingleton <IIdentityFunction, CoreIdentityFunction>();
            services.AddSingleton <IGraphQLFunction, CoreGraphQLFunction>();


            services.AddSingleton(typeof(ILogger <>), typeof(Logger <>));
            services.AddTransient <ILoggerFactory, LoggerFactory>();

            var clients           = Configuration.LoadClientsFromSettings();
            var apiResources      = Configuration.LoadApiResourcesFromSettings();
            var identityResources = Configuration.LoadIdentityResourcesFromSettings();

            var builder = services
                          .AddIdentityServer(options => { options.InputLengthRestrictions.RefreshToken = 256; })
                          .AddInMemoryIdentityResources(identityResources)
                          .AddInMemoryApiResources(apiResources)
                          .AddInMemoryClientsExtra(clients)
                          .AddIdentityServer4Extras()
                          .AddProfileServiceManager()
                          .AddArbitraryOwnerResourceExtensionGrant()
                          .AddArbitraryIdentityExtensionGrant()
                          .AddArbitraryNoSubjectExtensionGrant();

            builder.AddInMemoryPersistedGrantStoreExtra();

            if (useKeyVault)
            {
                builder.AddKeyVaultTokenCreateService();
                services.AddKeyVaultTokenCreateServiceTypes();
                services.AddKeyVaultTokenCreateServiceConfiguration(Configuration);
            }
            else
            {
                builder.AddDeveloperSigningCredential();
            }


            // my replacement services.
            builder.AddRefreshTokenRevokationGeneratorWorkAround();
            builder.AddNoSecretRefreshClientSecretValidator();
            builder.AddInMemoryClientStoreExtra(); // redis extra needs IClientStoreExtra
            builder.SwapOutTokenResponseGenerator();
            builder.SwapOutDefaultTokenService();
            builder.SwapOutScopeValidator();

            // My Types
            services.AddArbitraryNoSubjectExtentionGrantTypes();
            services.AddArbitraryResourceOwnerExtentionGrantTypes();
            services.AddArbitraryIdentityExtentionGrantTypes();
            services.AddIdentityModelExtrasTypes();
            services.AddIdentityServer4ExtraTypes();
            services.AddRefreshTokenRevokationGeneratorWorkAroundTypes();

            builder.AddProtectedRefreshTokenKeyObfuscator();

            var endpoints = builder.Services
                            .Where(service => service.ServiceType == typeof(Endpoint))
                            .Select(item => (Endpoint)item.ImplementationInstance)
                            .ToList();

            // endpoints.ForEach(item =>item.Path.Value.r = $"api/Authority/{item.Path.Value}");
            endpoints.ForEach(item => item.Path = item.Path.Value.Replace("connect", "api/Authority/connect"));
            endpoints.ForEach(item => item.Path = item.Path.Value.Replace(".well-known/openid-configuration", "api/Authority/.well-known/openid-configuration"));//

            services.AddMemoryCache();
            services.AddSingleton <IFunctionHttpContextAccessor, MyHttpContextAccessor>();
            services.AddSingleton <IHttpContextAccessor>(s => s.GetService <IFunctionHttpContextAccessor>());
            services.AddSingleton <IMyContextAccessor, MyContextAccessor>();
            services.AddSingleton <ITokenValidator, TokenValidator>();

            builder.Services.TryAddSingleton <IGraphQLFieldAuthority, InMemoryGraphQLFieldAuthority>();
            services.AddGraphQLCoreTypes();
            services.AddGraphQLCoreExtensionGrantsTypes();



            services.RegisterP7CoreConfigurationServices(Configuration);
            services.RegisterGraphQLCoreConfigurationServices(Configuration);
        }
#pragma warning disable CA1810 // Initialize reference type static fields inline
    private static void Setup()
#pragma warning restore CA1810 // Initialize reference type static fields inline
    {
        var functionPath = Path.Combine(new FileInfo(typeof(FhirFunctionsProxy).Assembly.Location).Directory.FullName, "..");

        var configRoot = new ConfigurationBuilder()
                         .SetBasePath(functionPath)
                         .AddJsonFile("appsettings.json")
                         .AddEnvironmentVariables()
                         .Build();

        IFileProvider fileProvider = new PhysicalFileProvider(functionPath);

        var hostingEnvironment = new MyHostingEnvironment()
        {
            ContentRootPath         = functionPath,
            WebRootPath             = functionPath,
            ContentRootFileProvider = fileProvider,
            WebRootFileProvider     = fileProvider,
        };

        hostingEnvironment.WebRootFileProvider = hostingEnvironment.ContentRootFileProvider;

        /* Add required services into DI container */
        services = new ServiceCollection();
        var listener = new DiagnosticListener("Microsoft.AspNetCore");

        services.AddSingleton <DiagnosticSource>(listener);

        // services.AddSingleton<ObjectPoolProvider>(new DefaultObjectPoolProvider());
        // services.AddSingleton<IHostEnvironment>(hostingEnvironment);
        services.AddSingleton <IWebHostEnvironment>(hostingEnvironment);
        services.AddSingleton <IConfiguration>(configRoot);
        services.AddSingleton(listener);

        // services.AddSingleton<IConfiguration>(configRoot);

        /* Instantiate standard ASP.NET Core Startup class */
        startup = new Startup(configRoot);

        /* Add web app services into DI container */
        startup.ConfigureServices(services);

        /* Initialize DI container */
        serviceProvider = services.BuildServiceProvider();

        /* Initialize Application builder */
        appBuilder = new ApplicationBuilder(serviceProvider, new FeatureCollection());

        // appBuilder.UsePathBase(new PathString("/api"));

        appBuilder.UseRouting();

        appBuilder.UseFhirRequestContext();

        /* Configure the HTTP request pipeline */
        startup.Configure(appBuilder);

        /* Build request handling function */
        requestHandler = appBuilder.Build();

        foreach (var startable in serviceProvider.GetServices <IStartable>())
        {
            startable.Start();
        }

        foreach (var initializable in serviceProvider.GetServices <IRequireInitializationOnFirstRequest>())
        {
            initializable.EnsureInitialized().GetAwaiter().GetResult();
        }
    }
示例#7
0
        public async Task <IActionResult> GetOutTableInfo(SqlSearchDto dto)
        {
            var list = await _sqlOnlineApplication.GetTableShowColumns(AdminDto.Id, dto.SqlConnId, dto.Database);

            List <StructureModel> models = new List <StructureModel>();

            if (list != null)
            {
                Dictionary <string, StructureModel> dict = new Dictionary <string, StructureModel>();
                foreach (var item in list)
                {
                    StructureModel model;
                    var            key = item.SchemaName + "." + item.Name;
                    if (dict.TryGetValue(key, out model) == false)
                    {
                        model = new StructureModel();
                        if (string.IsNullOrEmpty(item.SchemaName) || item.SchemaName == "dbo" || item.SchemaName == "public")
                        {
                            model.Name = item.Name;
                        }
                        else
                        {
                            model.Name = key;
                        }
                        model.Comment = item.Comment;
                        if (item.TableType.Trim() == "t" || item.TableType == "BASE TABLE" ||
                            item.TableType.Equals("table", StringComparison.OrdinalIgnoreCase) ||
                            item.TableType.Trim().Equals("u", StringComparison.OrdinalIgnoreCase)
                            )
                        {
                            model.Type = "t";
                        }
                        else
                        {
                            model.Type = "v";
                        }
                        dict[key] = model;
                        models.Add(model);
                    }
                    model.Items.Add(new StructureItemModel(item));
                }
            }
            var           filePath      = MyHostingEnvironment.MapWebRootPath("/_/outTableInfo/index.html");
            var           html          = System.IO.File.ReadAllText(filePath);
            StringBuilder stringBuilder = new StringBuilder(html);

            stringBuilder.Replace("[[DatabaseName]]", dto.Database);
            stringBuilder.Replace("[[data]]", Newtonsoft.Json.JsonConvert.SerializeObject(models));

            using (var archive = ZipArchive.Create()) {
                var folderPath = MyHostingEnvironment.MapWebRootPath("/_/outTableInfo/");
                archive.AddEntry("css/dbs.css", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, "css/dbs.css")).OpenRead(), true);
                archive.AddEntry("css/global.css", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, "css/global.css")).OpenRead(), true);
                archive.AddEntry("img/dbs/bg.gif", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, "img/dbs/bg.gif")).OpenRead(), true);
                archive.AddEntry("img/dbs/icon-proc.gif", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, "img/dbs/icon-proc.gif")).OpenRead(), true);
                archive.AddEntry("img/dbs/icon-table.gif", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, "img/dbs/icon-table.gif")).OpenRead(), true);
                archive.AddEntry("img/dbs/icon-view.gif", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, "img/dbs/icon-view.gif")).OpenRead(), true);

                archive.AddEntry(@"js\layer\skin\default\icon.png", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\layer\skin\default\icon.png")).OpenRead(), true);
                archive.AddEntry(@"js\layer\skin\default\icon-ext.png", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\layer\skin\default\icon-ext.png")).OpenRead(), true);

                archive.AddEntry(@"js\layer\skin\default\layer.css", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\layer\skin\default\layer.css")).OpenRead(), true);
                archive.AddEntry(@"js\layer\skin\default\loading-0.gif", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\layer\skin\default\loading-0.gif")).OpenRead(), true);
                archive.AddEntry(@"js\layer\skin\default\loading-1.gif", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\layer\skin\default\loading-1.gif")).OpenRead(), true);
                archive.AddEntry(@"js\layer\skin\default\loading-2.gif", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\layer\skin\default\loading-2.gif")).OpenRead(), true);


                archive.AddEntry(@"js\layer\layer.js", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\layer\layer.js")).OpenRead(), true);
                archive.AddEntry(@"js\clipboard.js", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\clipboard.js")).OpenRead(), true);
                archive.AddEntry(@"js\doT.min.js", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\doT.min.js")).OpenRead(), true);
                archive.AddEntry(@"js\jquery.min.js", new System.IO.FileInfo(System.IO.Path.Combine(folderPath, @"js\jquery.min.js")).OpenRead(), true);

                archive.AddEntry(@"index.html", new System.IO.MemoryStream(Encoding.UTF8.GetBytes(stringBuilder.ToString())), true);

                using (var ms = new System.IO.MemoryStream()) {
                    archive.SaveTo(ms);
                    return(File(ms.ToArray(), "application/zip", dto.Database + "_tableInfo.zip"));
                }
            }
        }