Пример #1
0
        public SetRuleResponse NewRule(SetRuleRequest dtoRule)
        {
            ToastHelper.PopToast("New rule");

            Rule domainRule;

            if (dtoRule.WindowsRequst != null)
            {
                domainRule = dtoRule.WindowsRequst;
            }
            else if (dtoRule.GenericRequest != null)
            {
                domainRule = (Rule)(new WindowsRuleAdapter(dtoRule.GenericRequest).NativeType);
            }
            else
            {
                return(new SetRuleResponse()
                {
                    Success = false
                });
            }

            FirewallHelper.NewRule(domainRule);
            return(new SetRuleResponse()
            {
                Success = true
            });
        }
Пример #2
0
        public async Task UpdateRule(string host, string ruleName, SetRuleRequest rule)
        {
            using (var handler = getHandler())
            {
                using (var client = new HttpClient(handler))
                {
                    // Configure client
                    UriBuilder uriBuilder = new UriBuilder(HTTPS_SCHEME, host, PORT_NUMBER);
                    client.BaseAddress = uriBuilder.Uri;

                    // Configure content
                    var encodedName = Uri.EscapeUriString(ruleName);
                    var json        = JsonConvert.SerializeObject(rule);
                    var content     = new StringContent(json);
                    content.Headers.ContentType = new MediaTypeHeaderValue(CONTENT_TYPE);

                    // Make request
                    var response = await client.PutAsync($"{RULES_ENDPOINT}/{encodedName}", content);

                    if (!response.IsSuccessStatusCode)
                    {
                        throw new Exception();
                    }
                }
            }
        }
Пример #3
0
        public void UpdateRule(string id, SetRuleRequest rule)
        {
            Linux.Models.Rule newEntry = null;

            if (rule.GenericRequest != null)
            {
                newEntry = (Linux.Models.Rule)(new LinuxRuleAdapter(rule.GenericRequest).NativeType);
            }
            else if (rule.UfwRequest != null)
            {
                newEntry = rule.UfwRequest;
            }

            FirewallHelper.UpdateRule(newEntry);
        }
Пример #4
0
        public async Task <IActionResult> CrossDeviceRule(Agent.Generic.Models.Rule rule)
        {
            var f    = Request.Form;
            var devs = f["Device"];

            try
            {
                rule.LocalPort     = rule.LocalPort ?? Agent.Generic.Models.Rule.ANY_PORT;
                rule.RemoteAddress = System.Net.IPAddress.Parse(rule.RemoteAddress).ToString();
            }
            catch (FormatException)
            {
                rule.RemoteAddress = Agent.Generic.Models.Rule.ANY_IP_ADDRESS;
            }

            // TODO: Add to UI
            if (rule.Direction == Agent.Generic.Models.Direction.In)
            {
                rule.RemotePort   = Agent.Generic.Models.Rule.ANY_PORT;
                rule.LocalAddress = Agent.Generic.Models.Rule.ANY_IP_ADDRESS;
            }
            else
            {
                rule.RemotePort = rule.LocalPort;

                rule.LocalPort    = Agent.Generic.Models.Rule.ANY_PORT;
                rule.LocalAddress = Agent.Generic.Models.Rule.ANY_IP_ADDRESS;
            }

            var dtoRule = new SetRuleRequest();

            dtoRule.GenericRequest = rule;

            var client = new AgentApiClient();

            var tasks = new List <Task>(devs.Count);

            foreach (var device in devs)
            {
                var d = deviceRepo.GetDevice(device);
                tasks.Add(client.NewRule(d.Address, dtoRule));
            }

            await Task.WhenAll(tasks);

            return(RedirectToAction("Index"));
        }
Пример #5
0
        public void UpdateRule(string name, SetRuleRequest dtoRule)
        {
            ToastHelper.PopToast("Update rule");

            Rule domainRule;

            if (dtoRule.WindowsRequst != null)
            {
                domainRule = dtoRule.WindowsRequst;
            }
            else if (dtoRule.GenericRequest != null)
            {
                domainRule = (Rule)(new WindowsRuleAdapter(dtoRule.GenericRequest).NativeType);
            }
            else
            {
                // TODO: This is inconsistent with NewRule
                return;
            }

            FirewallHelper.UpdateRule(name, domainRule);
        }
Пример #6
0
        public SetRuleResponse NewRule(SetRuleRequest rule)
        {
            ToastHelper.PopToast("New rule");

            Linux.Models.Rule newEntry = null;

            if (rule.GenericRequest != null)
            {
                newEntry = (Linux.Models.Rule)(new LinuxRuleAdapter(rule.GenericRequest).NativeType);
            }
            else if (rule.UfwRequest != null)
            {
                newEntry = rule.UfwRequest;
            }

            //var st = Mapper.Map<FirewallAPI.Rule>(newEntry);
            FirewallHelper.NewRule(newEntry);
            return(new SetRuleResponse()
            {
                Success = true
            });
        }
Пример #7
0
        public async Task <IActionResult> Create(string id, Agent.Generic.Models.Rule rule)
        {
            var device = repo.GetDevice(id);

            try
            {
                rule.LocalPort     = rule.LocalPort ?? Agent.Generic.Models.Rule.ANY_PORT;
                rule.RemoteAddress = System.Net.IPAddress.Parse(rule.RemoteAddress).ToString();
            }
            catch (FormatException)
            {
                rule.RemoteAddress = Agent.Generic.Models.Rule.ANY_IP_ADDRESS;
            }

            // TODO: Add to UI
            if (rule.Direction == Agent.Generic.Models.Direction.In)
            {
                rule.RemotePort   = Agent.Generic.Models.Rule.ANY_PORT;
                rule.LocalAddress = Agent.Generic.Models.Rule.ANY_IP_ADDRESS;
            }
            else
            {
                rule.RemotePort = rule.LocalPort;

                rule.LocalPort    = Agent.Generic.Models.Rule.ANY_PORT;
                rule.LocalAddress = Agent.Generic.Models.Rule.ANY_IP_ADDRESS;
            }

            var dtoRule = new SetRuleRequest();

            dtoRule.GenericRequest = rule;

            var client = new AgentApiClient();
            await client.NewRule(device.Address, dtoRule);

            return(RedirectToAction("Index"));
        }
Пример #8
0
 public void Put([FromRoute] string id, [FromBody] SetRuleRequest rule)
 {
     Program.Callbacks.UpdateRule(id, rule);
 }
Пример #9
0
 public SetRuleResponse Post([FromBody] SetRuleRequest rule)
 {
     return(Program.Callbacks.NewRule(rule));
 }