aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSonja Galovic <galovicsonja@gmail.com>2022-04-18 22:07:08 +0200
committerSonja Galovic <galovicsonja@gmail.com>2022-04-18 22:07:08 +0200
commit65c96badd13e7d81f80e0e0d5095b263cc51a75b (patch)
tree7a5060acc8f823ca9bf53145fa4207c2116ac7fe
parent6c0ba41002e53bd6b314d0cc961866acbbb07c9a (diff)
parent3c2a0be2a169f16702ff9648dc65ef9efbae07fc (diff)
Merge branch 'dev' of http://gitlab.pmf.kg.ac.rs/igrannonica/neuronstellar into dev
-rw-r--r--backend/api/api/Controllers/ModelController.cs1
-rw-r--r--backend/api/api/Models/ColumnEncoding.cs8
-rw-r--r--backend/api/api/Models/Experiment.cs2
-rw-r--r--backend/api/api/Program.cs9
-rw-r--r--backend/api/api/Services/MlApiCheckActionFilter.cs50
-rw-r--r--backend/api/api/appsettings.json3
-rw-r--r--backend/microservice/api/newmlservice.py8
7 files changed, 76 insertions, 5 deletions
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<ActionResult<string>> Epoch([FromBody] Epoch info)
{
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..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<string> ModelIds { get; set; }
public string datasetId { get; set; }
public string uploaderId { get; set; }
@@ -21,6 +20,7 @@ namespace api.Models
public float randomTestSetDistribution { get; set; }
public string nullValues { get; set; }
public NullValues[] nullValuesReplacers { get; set; }
+ public ColumnEncoding[] encodings { get; set; }
}
}
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<IExperimentService, ExperimentService>();
builder.Services.AddHostedService<TempFileService>();
builder.Services.AddHostedService<FillAnEmptyDb>();
-
+//Ml Api Ip Filter
+builder.Services.AddScoped<MlApiCheckActionFilter>(container =>
+{
+ var loggerFactory = container.GetRequiredService<ILoggerFactory>();
+ var logger=loggerFactory.CreateLogger<MlApiCheckActionFilter>();
+ var MlIp = builder.Configuration.GetValue<string>("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": {
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()