public async Task SetRulesRequest(string host, SetRulesRequest rules) { 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 json = JsonConvert.SerializeObject(rules); var content = new StringContent(json); content.Headers.ContentType = new MediaTypeHeaderValue(CONTENT_TYPE); // Make request var response = await client.PutAsync(RULES_ENDPOINT, content); if (!response.IsSuccessStatusCode) { throw new Exception(); } } } }
public SetRulesResponse UpdateRules(SetRulesRequest rules) { ToastHelper.PopToast("Update rules"); var rulesToApply = rules.GenericRequest; if (rulesToApply.Count <= 0) { return(new SetRulesResponse() { Success = false }); } List <Rule> domainRules = rulesToApply.Select(x => (Rule)(new WindowsRuleAdapter(x).NativeType)).ToList(); foreach (var rule in domainRules) { FirewallHelper.NewRule(rule); } return(new SetRulesResponse() { Success = true }); }
public async Task <IActionResult> ApplyTo(string id) { var policy = policyRepo.GetPolicy(id); if (policy.Rules.Count <= 0) { return(RedirectToAction("Index")); } var f = Request.Form; var devs = f["Device"]; var rulesRequest = new SetRulesRequest(); var client = new AgentApiClient(); var tasks = new List <Task>(devs.Count); rulesRequest.GenericRequest = Mapper.Map <List <Selly.Agent.Generic.Models.Rule> >(policy.Rules.ToList()); foreach (var device in devs) { var d = deviceRepo.GetDevice(device); tasks.Add(client.SetRulesRequest(d.Address, rulesRequest)); } await Task.WhenAll(tasks); return(RedirectToAction("Index")); }
public SetRulesResponse Put([FromBody] SetRulesRequest value) { return(Program.Callbacks.UpdateRules(value)); }