Beispiel #1
0
        public Task <ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
        {
            var identity = principal.Identity as ClaimsIdentity;

            if (identity.IsAuthenticated == false)
            {
                return(Task.FromResult <ClaimsPrincipal>(principal));
            }

            var emailClaim = principal.Claims.SingleOrDefault(x => x.Type == ClaimTypes.Email);

            if (emailClaim != null && !string.IsNullOrWhiteSpace(emailClaim.Value))
            {
                var adminUsers = ApplicationConfiguration.Get("super_admin_users").Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();

                if (adminUsers.Contains(emailClaim.Value))
                {
                    if (identity.HasClaim(x => x.Type == ClaimTypes.Role && x.Value == "superAdmin"))
                    {
                        return(Task.FromResult <ClaimsPrincipal>(principal));
                    }

                    identity.AddClaim(new Claim(ClaimTypes.Role, "superAdmin"));
                }
            }

            var user = GetUser(identity);

            var access = JsonConvert.SerializeObject(user.Access, Formatting.Indented);

            identity.AddClaim(new Claim("SecurityAccess", access));

            return(Task.FromResult <ClaimsPrincipal>(principal));
        }
Beispiel #2
0
 public Git(string workingDir)
 {
     this.workingDir = workingDir;
     this.email      = ApplicationConfiguration.Get("pandora_git_email");
     this.username   = ApplicationConfiguration.Get("pandora_git_username");
     this.password   = ApplicationConfiguration.Get("pandora_git_password");
     this.repo       = new Repository(workingDir);
 }
Beispiel #3
0
        public static void Clone(string sourceUrl, string workingDir)
        {
            var cloneOptions = new CloneOptions();

            cloneOptions.IsBare              = false;
            cloneOptions.Checkout            = true;
            cloneOptions.CredentialsProvider = new LibGit2Sharp.Handlers.CredentialsHandler((a, b, c) => new UsernamePasswordCredentials()
            {
                Username = ApplicationConfiguration.Get("pandora_git_username"),
                Password = ApplicationConfiguration.Get("pandora_git_password")
            });
            Repository.Clone(sourceUrl, workingDir, cloneOptions);
        }
Beispiel #4
0
        private static User GetUser()
        {
            var hostName = ApplicationConfiguration.Get("pandora_api_url");
            var url      = hostName + "/api/Users/" + ClaimsPrincipal.Current.Id();

            var restClient = new RestSharp.RestClient(url);

            var request = new RestSharp.RestRequest();

            request.Method        = RestSharp.Method.GET;
            request.RequestFormat = RestSharp.DataFormat.Json;
            request.AddHeader("Content-Type", "application/json;charset=utf-8");
            request.AddHeader("Authorization", "Bearer " + ClaimsPrincipal.Current.Token());

            var result = restClient.Execute(request);

            return(JsonConvert.DeserializeObject <User>(result.Content));
        }
Beispiel #5
0
        private static void UpdateUserAccess(User user, string projectName, string applicationName, string cluster, Access access)
        {
            user.Access.AddRule(new AccessRules()
            {
                Project = projectName, Application = applicationName, Cluster = cluster, Access = access
            });

            var hostName = ApplicationConfiguration.Get("pandora_api_url");
            var url      = hostName + "/api/Users/" + ClaimsPrincipal.Current.Id();

            var restClient = new RestSharp.RestClient(url);

            var editRequest = new RestSharp.RestRequest();

            editRequest.Method        = RestSharp.Method.PUT;
            editRequest.RequestFormat = RestSharp.DataFormat.Json;
            editRequest.AddHeader("Content-Type", "application/json;charset=utf-8");
            editRequest.AddHeader("Authorization", "Bearer " + ClaimsPrincipal.Current.Token());

            editRequest.AddBody(user);

            var editResult = restClient.Execute(editRequest);
        }
Beispiel #6
0
        public static async Task Run(ILoggerFactory loggerFactory)
        {
            var appConfig = ApplicationConfiguration.Get();
            var log       = loggerFactory.CreateLogger <Worker>();

            if (appConfig is null)
            {
                log.LogWarning("No configuration detected; creating default config.json");
                ApplicationConfiguration.CreateNewConfiguration();
                log.LogInformation("Edit osc.configLocations and osc.devices in accordance with your setup, and then restart TouchDCS");
                Console.ReadKey(true);
                return;
            }

            var oscSenders    = SetUpOscSenders(appConfig, loggerFactory);
            var biosUdpClient = SetUpBiosUdpClient(appConfig, loggerFactory.CreateLogger <BiosUdpClient>());

            var aircraftBiosConfigs = await AircraftBiosConfiguration.AllConfigurations(appConfig.DcsBios.AliasFileName,
                                                                                        loggerFactory.CreateLogger <AircraftBiosConfiguration>(), appConfig.DcsBios.ConfigLocations.ToArray());

            var translator = new BiosOscTranslator(oscSenders.ToList(), biosUdpClient, aircraftBiosConfigs,
                                                   appConfig.CommonModules ?? new HashSet <string>(), loggerFactory.CreateLogger <BiosOscTranslator>());

            var biosListener = new BiosListener(biosUdpClient, translator, loggerFactory.CreateLogger <BiosListener>());

            foreach (var config in aircraftBiosConfigs)
            {
                biosListener.RegisterConfiguration(config);
            }
            biosListener.Start();

            var _ = SetUpOscReceivers(appConfig, translator, loggerFactory);

            log.LogInformation("Ready!");

            await Task.Delay(-1);
        }
Beispiel #7
0
        public static TokenValidationParameters GetParameters()
        {
            var tvp = new TokenValidationParameters();

            tvp.ValidAudience            = ApplicationConfiguration.Get("audience");
            tvp.ValidIssuer              = ApplicationConfiguration.Get("issuer");
            tvp.ValidateIssuer           = true;
            tvp.ValidateAudience         = true;
            tvp.ValidateIssuerSigningKey = true;
            tvp.ValidateLifetime         = true;

            var keys  = new List <X509SecurityKey>();
            var certs = GetCertificates();

            foreach (var certificate in certs)
            {
                var key = new X509SecurityKey(certificate);
                keys.Add(key);
            }

            tvp.IssuerSigningKeyResolver = (a, b, c, d) => keys;

            return(tvp);
        }