diff --git a/.gitignore b/.gitignore
index 00088284371fc31d8ad8f8ad6b6d17b024a9b96d..004559f1a8436ac3605b613797ee11aa0d93a66a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -333,3 +333,5 @@ ASALocalRun/
/Clients/MQTTClient/.vscode
/IoTSharp/ClientApp.rar
/IoTSharp/ClientApp/package-lock.json
+/IoTSharp/healthchecksdb
+/IoTSharp/healthchecksdb-shm
diff --git a/IoTSharp.Edge.ModBus/IoTSharp.Edge.ModBus.csproj b/IoTSharp.Edge.ModBus/IoTSharp.Edge.ModBus.csproj
index 31662aae506063536bba6867f71ab9d251d2409d..dc749373783afcb8bf871db5743e542185ded30e 100644
--- a/IoTSharp.Edge.ModBus/IoTSharp.Edge.ModBus.csproj
+++ b/IoTSharp.Edge.ModBus/IoTSharp.Edge.ModBus.csproj
@@ -36,8 +36,6 @@
-
-
diff --git a/IoTSharp.Edges.sln b/IoTSharp.Edges.sln
index 914261fb227b23882617c377b7215e6b71b3d5d3..93dae2892589cd703f38059901cb67037a13df92 100644
--- a/IoTSharp.Edges.sln
+++ b/IoTSharp.Edges.sln
@@ -22,10 +22,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IoTSharp.EdgeSdk.MQTT", "Io
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IoTSharp.Edge.ModBus", "IoTSharp.Edge.ModBus\IoTSharp.Edge.ModBus.csproj", "{9267A0CE-ECBC-41E4-AD83-927117FD625E}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IoTSharp.Extensions", "IoTSharp.Extensions\IoTSharp.Extensions.csproj", "{551E62E3-51DA-4C1D-8DBB-7346A29EE817}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IoTSharp.Extensions.AspNetCore", "IoTSharp.Extensions.AspNetCore\IoTSharp.Extensions.AspNetCore.csproj", "{AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -146,46 +142,6 @@ Global
{9267A0CE-ECBC-41E4-AD83-927117FD625E}.Release|x64.Build.0 = Release|Any CPU
{9267A0CE-ECBC-41E4-AD83-927117FD625E}.Release|x86.ActiveCfg = Release|Any CPU
{9267A0CE-ECBC-41E4-AD83-927117FD625E}.Release|x86.Build.0 = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|ARM.Build.0 = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|ARM64.Build.0 = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|x64.ActiveCfg = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|x64.Build.0 = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|x86.ActiveCfg = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Debug|x86.Build.0 = Debug|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|Any CPU.Build.0 = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|ARM.ActiveCfg = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|ARM.Build.0 = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|ARM64.ActiveCfg = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|ARM64.Build.0 = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|x64.ActiveCfg = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|x64.Build.0 = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|x86.ActiveCfg = Release|Any CPU
- {551E62E3-51DA-4C1D-8DBB-7346A29EE817}.Release|x86.Build.0 = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|ARM.Build.0 = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|ARM64.Build.0 = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|x64.Build.0 = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Debug|x86.Build.0 = Debug|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|Any CPU.Build.0 = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|ARM.ActiveCfg = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|ARM.Build.0 = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|ARM64.ActiveCfg = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|ARM64.Build.0 = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|x64.ActiveCfg = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|x64.Build.0 = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|x86.ActiveCfg = Release|Any CPU
- {AC80DA58-F40E-4B3C-8271-A25F65FEB0CB}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/IoTSharp.Releases/GithubRelease.cs b/IoTSharp.Releases/GithubRelease.cs
deleted file mode 100644
index a8f29c4aa3ca77d61354d1a3c18bec8a356128f7..0000000000000000000000000000000000000000
--- a/IoTSharp.Releases/GithubRelease.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace IoTSharp.Releases
-{
- public class GithubRelease
- {
- public string url { get; set; }
- public string html_url { get; set; }
- public string assets_url { get; set; }
- public string upload_url { get; set; }
- public string tarball_url { get; set; }
- public string zipball_url { get; set; }
- public string id { get; set; }
- public string tag_name { get; set; }
- public string name { get; set; }
- public string body { get; set; }
-
- public ICollection assets { get; set; }
-
- }
-
- public class GithubReleaseAsset
- {
- public string url { get; set; }
- public string browser_download_url { get; set; }
- public string id { get; set; }
- public string name { get; set; }
- public string label { get; set; }
- public string state { get; set; }
- public string content_type { get; set; }
- public long size { get; set; }
- public int download_count { get; set; }
- }
-}
diff --git a/IoTSharp.Releases/IoTSharp.Releases.csproj b/IoTSharp.Releases/IoTSharp.Releases.csproj
deleted file mode 100644
index 38e2ad1fbf617eee8f829d3a8b94bdcde2403267..0000000000000000000000000000000000000000
--- a/IoTSharp.Releases/IoTSharp.Releases.csproj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- netstandard2.1;net46
- true
-
- https://github.com/maikebing/GithubReleasesDownloader
- https://github.com/maikebing/GithubReleasesDownloader
- mwhitis;IoTSharp;maikebing
- mwhitis;IoTSharp;maikebing
- Github;Releases;Downloader;IoTSharp
-
-
-
-
-
-
-
diff --git a/IoTSharp.Releases/LinkHeaderParser.cs b/IoTSharp.Releases/LinkHeaderParser.cs
deleted file mode 100644
index 0bf55853c6884592befea38fe4989232bbcbbebe..0000000000000000000000000000000000000000
--- a/IoTSharp.Releases/LinkHeaderParser.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace IoTSharp.Releases
-{
- public class LinkHeaderParser
- {
-/*
- ; rel="next",
- ; rel="last"
-*/
-
- public string GetNextPageFromHeader(string headerText)
- {
- if (string.IsNullOrWhiteSpace(headerText))
- {
- return string.Empty;
- }
-
- var links = headerText.Split(',');
-
- foreach (var link in links.Where(link => link.Contains("rel=\"next\"")))
- {
- return link.Split(';')[0].Replace("<","").Replace(">","").Trim();
- }
-
- return string.Empty;
- }
- }
-}
diff --git a/IoTSharp.Releases/ReleaseDownloader.cs b/IoTSharp.Releases/ReleaseDownloader.cs
deleted file mode 100644
index 1362e08aa8c2b970b3be19cf2cdf6dd65423928b..0000000000000000000000000000000000000000
--- a/IoTSharp.Releases/ReleaseDownloader.cs
+++ /dev/null
@@ -1,173 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Net.Mime;
-using System.Text;
-using System.Threading.Tasks;
-using Newtonsoft.Json;
-
-namespace IoTSharp.Releases
-{
- public class ReleaseDownloader
- {
- private readonly string _baseUri;
-
- private readonly string _accessToken;
-
- private readonly string _userAgent;
-
- private readonly string _releaseUri;
-
- private string _user;
- private string _repo;
- private string _token;
-
-
- public ReleaseDownloader(string _url, string accessToken)
- {
- var uri = new Uri(_url);
- _baseUri = $"{ GetBaseUri(uri)}/repos/{GetUserFromUri(uri)}/{GetRepoFromUri(uri)}";
- _accessToken = accessToken;
- _userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3829.0 Safari/537.36 Edg/77.0.197.1"; ;
- _releaseUri = GetReleaseUri();
- }
-
- private static string GetUserFromUri(Uri uri)
- {
- return !uri.LocalPath.Contains("/") ? string.Empty : uri.Segments[1].TrimEnd('/');
- }
-
- private static string GetRepoFromUri(Uri uri)
- {
- return !uri.LocalPath.Contains("/") ? string.Empty : uri.Segments[2].TrimEnd('/');
- }
-
- private static string GetBaseUri(Uri uri)
- {
- return uri.Host.Equals("github.com", StringComparison.OrdinalIgnoreCase) ? "https://api.github.com" : $"{uri.Scheme}://{uri.Host}/api/v3";
- }
-
-
- public ICollection GetDataForAllReleases()
- {
- var requestingUri = GetAccessTokenUri(_releaseUri);
- return DownloadReleases(requestingUri);
- }
-
- public ICollection DownloadReleases(string requestingUri)
- {
-
- Console.WriteLine("Requesting: {0}", requestingUri);
- var request = (HttpWebRequest)WebRequest.Create(new Uri(requestingUri));
- request.UserAgent = _userAgent;
-
- var response = request.GetResponse();
- Console.WriteLine(((HttpWebResponse)response).StatusDescription);
- // Get the stream containing content returned by the server.
-
- var responseFromServer = ReadResponseFromServer(response);
-
- var releases = JsonConvert.DeserializeObject>(responseFromServer);
-
- var parser = new LinkHeaderParser();
-
- var linkHeader = response.Headers["Link"];
-
- var nextUrl = parser.GetNextPageFromHeader(linkHeader);
-
- if (!string.IsNullOrEmpty(nextUrl))
- {
- releases.AddRange(DownloadReleases(nextUrl));
- }
-
- // Clean up the streams and the response.
- response.Close();
- return releases;
- }
-
- private string GetReleaseUri()
- {
- var releaseUri = $"{_baseUri}/releases";
- return releaseUri;
- }
-
- private static string ReadResponseFromServer(WebResponse response)
- {
- using (var dataStream = response.GetResponseStream())
- {
- // Open the stream using a StreamReader for easy access.
- using (var reader = new StreamReader(dataStream))
- {
- // Read the content.
- return reader.ReadToEnd();
- }
- }
- }
-
- private string GetAssetsUriForId(string id)
- {
- var assetUri = $"{_releaseUri}/assets/{id}";
- return assetUri;
- }
-
- private string GetAccessTokenUri(string uri)
- {
- return _accessToken == string.Empty ? uri : uri += $"?access_token={_accessToken}";
- }
-
- public bool DownloadAsset(string id, string path)
- {
- WebResponse response = GetAssetResponse(id);
- GetBinaryResponseFromResponse(path,response);
- return true;
- }
- public bool DownloadAsset(string id, out byte[] assetdata)
- {
- WebResponse response = GetAssetResponse(id);
- assetdata = GetBinaryResponseFromResponse(response);
- return true;
- }
-
- private WebResponse GetAssetResponse(string id)
- {
- var assetUri = GetAccessTokenUri(GetAssetsUriForId(id));
-
- var request = (HttpWebRequest)WebRequest.Create(new Uri(assetUri));
- request.Accept = "application/octet-stream";
- request.UserAgent = "mwhitis";
-
- var response = request.GetResponse();
- return response;
- }
-
- private static byte[] GetBinaryResponseFromResponse( WebResponse response)
- {
- byte[] result = null;
- long received = 0;
- byte[] buffer = new byte[1024];
- using (var ms = new MemoryStream() )
- {
- using (var input = response.GetResponseStream())
- {
- int size = input.Read(buffer, 0, buffer.Length);
- while (size > 0)
- {
- ms.Write(buffer, 0, size);
- received += size;
-
- size = input.Read(buffer, 0, buffer.Length);
- }
- }
-
- result = ms.ToArray();
- }
- return result;
- }
- private static void GetBinaryResponseFromResponse(string path, WebResponse response)
- {
- System.IO.File.WriteAllBytes(path, GetBinaryResponseFromResponse(response));
- }
- }
-}
diff --git a/IoTSharp/Data/ApplicationDBInitializer.cs b/IoTSharp/Data/ApplicationDBInitializer.cs
index 31146d720b7346e24393080372d646b829ad496d..dc248449287fea1f2853a6aaca90ee41fd5545e4 100644
--- a/IoTSharp/Data/ApplicationDBInitializer.cs
+++ b/IoTSharp/Data/ApplicationDBInitializer.cs
@@ -93,6 +93,10 @@ namespace IoTSharp.Data
await _signInManager.UserManager.AddToRoleAsync(user, nameof(UserRole.SystemAdmin));
}
+ else
+ {
+ throw new Exception(string.Join(',', result.Errors.ToList().Select(ie => $"code={ie.Code},msg={ie.Description}")));
+ }
}
var rship = new Relationship
{
diff --git a/IoTSharp/Dockerfile b/IoTSharp/Dockerfile
index ca55d7f89f1e774130a14500b6ce9af8382ddf15..44b98b3d9e9ff8ad4657a5d250a7121fb60762e1 100644
--- a/IoTSharp/Dockerfile
+++ b/IoTSharp/Dockerfile
@@ -2,7 +2,7 @@
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
-EXPOSE 80
+EXPOSE 2927
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
diff --git a/IoTSharp/IoTSharp.csproj b/IoTSharp/IoTSharp.csproj
index 840476d0f259375b542a5720db87a8b80dc5d9d4..842e141f3a82806f5770e872dfa2f5cfdfdb7272 100644
--- a/IoTSharp/IoTSharp.csproj
+++ b/IoTSharp/IoTSharp.csproj
@@ -83,6 +83,7 @@
+
True
diff --git a/IoTSharp/appsettings.Development.json b/IoTSharp/appsettings.Development.json
index cdef4c9d6f0e7dac9321723fc6b2c8c2d2f54476..1ca29d6462c083a06d053334f7e049df43a71aed 100644
--- a/IoTSharp/appsettings.Development.json
+++ b/IoTSharp/appsettings.Development.json
@@ -7,7 +7,7 @@
}
},
"ConnectionStrings": {
- "IoTSharp": "Server=localhost;Database=IoTSharp;Username=postgres;Password=future;"
+ "IoTSharp": "Server=host.docker.internal;Database=IoTSharp;Username=postgres;Password=future;"
},
"JwtKey": "kissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissmekissme",
"JwtExpireHours": 24,