From 2ae80f79deffc78e5f077987b394bf452ed6f193 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 18 Apr 2022 14:56:42 +0200 Subject: Napravljen Filter za ml api ip adresu. Tako da samo ml moze da poziva odredjene api pozive na back-u. --- backend/api/api/Program.cs | 9 +++- backend/api/api/Services/MlApiCheckActionFilter.cs | 50 ++++++++++++++++++++++ backend/api/api/appsettings.json | 3 +- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 backend/api/api/Services/MlApiCheckActionFilter.cs (limited to 'backend') diff --git a/backend/api/api/Program.cs b/backend/api/api/Program.cs index 71509b38..56abc016 100644 --- a/backend/api/api/Program.cs +++ b/backend/api/api/Program.cs @@ -39,7 +39,14 @@ builder.Services.AddScoped(); builder.Services.AddHostedService(); builder.Services.AddHostedService(); - +//Ml Api Ip Filter +builder.Services.AddScoped(container => +{ + var loggerFactory = container.GetRequiredService(); + var logger=loggerFactory.CreateLogger(); + var MlIp = builder.Configuration.GetValue("AppSettings:MlIp"); + return new MlApiCheckActionFilter(MlIp, logger); +}); diff --git a/backend/api/api/Services/MlApiCheckActionFilter.cs b/backend/api/api/Services/MlApiCheckActionFilter.cs new file mode 100644 index 00000000..d1c020b0 --- /dev/null +++ b/backend/api/api/Services/MlApiCheckActionFilter.cs @@ -0,0 +1,50 @@ +using System.Net; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Filters; + +namespace api.Services +{ + public class MlApiCheckActionFilter:ActionFilterAttribute + { + private readonly ILogger _logger; + private readonly string _safelist; + + public MlApiCheckActionFilter(string safelist,ILogger logger) + { + _logger = logger; + _safelist = safelist; + } + public override void OnActionExecuting(ActionExecutingContext context) + { + var remoteIp = context.HttpContext.Connection.RemoteIpAddress; + _logger.LogDebug("Remote IpAddress: {RemoteIp}", remoteIp); + var ip = _safelist.Split(';'); + var badIp = true; + + if (remoteIp.IsIPv4MappedToIPv6) + { + remoteIp = remoteIp.MapToIPv4(); + } + + foreach (var address in ip) + { + var testIp = IPAddress.Parse(address); + + if (testIp.Equals(remoteIp)) + { + badIp = false; + break; + } + } + + if (badIp) + { + _logger.LogWarning("Forbidden Request from IP: {RemoteIp}", remoteIp); + context.Result = new StatusCodeResult(StatusCodes.Status403Forbidden); + return; + } + + base.OnActionExecuting(context); + } + } +} diff --git a/backend/api/api/appsettings.json b/backend/api/api/appsettings.json index e96549a8..c2310978 100644 --- a/backend/api/api/appsettings.json +++ b/backend/api/api/appsettings.json @@ -2,7 +2,8 @@ "AppSettings": { "JwtToken": "2mnttqPtRb4GIWHFtagm", "MlApi": "http://127.0.0.1:5543", - "FrontApi": "http://localhost:4200" + "FrontApi": "http://localhost:4200", + "MlIp":"127.0.0.1;::1" }, "Logging": { "LogLevel": { -- cgit v1.2.3 From 91d9f38c204d2482f2e93cc38c32cd10d59c7043 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 18 Apr 2022 14:59:58 +0200 Subject: Primenjen filter na kontroleru koji obavestava epohe. --- backend/api/api/Controllers/ModelController.cs | 1 + 1 file changed, 1 insertion(+) (limited to 'backend') diff --git a/backend/api/api/Controllers/ModelController.cs b/backend/api/api/Controllers/ModelController.cs index fe16507b..ce1759ca 100644 --- a/backend/api/api/Controllers/ModelController.cs +++ b/backend/api/api/Controllers/ModelController.cs @@ -78,6 +78,7 @@ namespace api.Controllers } [HttpPost("epoch")] + [ServiceFilter(typeof(MlApiCheckActionFilter))] public async Task> Epoch([FromBody] Epoch info) { -- cgit v1.2.3 From 3cca71cc5e4142a4194a0ea19baada36105ce742 Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 18 Apr 2022 17:25:53 +0200 Subject: Dodat ColumnEncoding klasa. I ColumnEncoding je dodat u ekperiment klasi. --- backend/api/api/Models/ColumnEncoding.cs | 8 ++++++++ backend/api/api/Models/Experiment.cs | 1 + 2 files changed, 9 insertions(+) create mode 100644 backend/api/api/Models/ColumnEncoding.cs (limited to 'backend') diff --git a/backend/api/api/Models/ColumnEncoding.cs b/backend/api/api/Models/ColumnEncoding.cs new file mode 100644 index 00000000..b5f61070 --- /dev/null +++ b/backend/api/api/Models/ColumnEncoding.cs @@ -0,0 +1,8 @@ +namespace api.Models +{ + public class ColumnEncoding + { + public string columnName { get; set; } + public string encoding { get; set; } + } +} diff --git a/backend/api/api/Models/Experiment.cs b/backend/api/api/Models/Experiment.cs index bf029116..f05c8ac9 100644 --- a/backend/api/api/Models/Experiment.cs +++ b/backend/api/api/Models/Experiment.cs @@ -21,6 +21,7 @@ namespace api.Models public float randomTestSetDistribution { get; set; } public string nullValues { get; set; } public NullValues[] nullValuesReplacers { get; set; } + public ColumnEncoding[] encodings { get; set; } } } -- cgit v1.2.3 From 983a9568a48199559f3e69b65e4426c6b6874d2a Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Mon, 18 Apr 2022 18:39:41 +0200 Subject: Izbrisan stari encoding. --- backend/api/api/Models/Experiment.cs | 1 - 1 file changed, 1 deletion(-) (limited to 'backend') diff --git a/backend/api/api/Models/Experiment.cs b/backend/api/api/Models/Experiment.cs index f05c8ac9..6f665c52 100644 --- a/backend/api/api/Models/Experiment.cs +++ b/backend/api/api/Models/Experiment.cs @@ -10,7 +10,6 @@ namespace api.Models public string _id { get; set; } public string name { get; set; } public string description { get; set; } - public string encoding { get; set; } public List ModelIds { get; set; } public string datasetId { get; set; } public string uploaderId { get; set; } -- cgit v1.2.3 From 3c2a0be2a169f16702ff9648dc65ef9efbae07fc Mon Sep 17 00:00:00 2001 From: Nevena Bojovic Date: Mon, 18 Apr 2022 21:27:40 +0200 Subject: Enkodiranje reseno. --- backend/microservice/api/newmlservice.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'backend') diff --git a/backend/microservice/api/newmlservice.py b/backend/microservice/api/newmlservice.py index 9951c25f..604e4d3c 100644 --- a/backend/microservice/api/newmlservice.py +++ b/backend/microservice/api/newmlservice.py @@ -155,11 +155,15 @@ def train(dataset, paramsModel,paramsExperiment,paramsDataset,callback): data.pop(col) # ### Enkodiranje - encoding=paramsExperiment["encoding"] + encodings=paramsExperiment["encodings"] datafront=dataset.copy() svekolone=datafront.columns kategorijskekolone=datafront.select_dtypes(include=['object']).columns - for kolona in svekolone: + for kolonaEncoding in encodings: + + kolona = kolonaEncoding["columnName"] + encoding = kolonaEncoding["encoding"] + if(kolona in kategorijskekolone): if(encoding=='label'): encoder=LabelEncoder() -- cgit v1.2.3