diff --git a/Controllers/BrowserController.cs b/Controllers/BrowserController.cs index d1d5f0f..11eb668 100644 --- a/Controllers/BrowserController.cs +++ b/Controllers/BrowserController.cs @@ -61,6 +61,12 @@ public ActionResult Index() [HttpPost] public ActionResult UserPassword(string endpointUrl) { + if (string.IsNullOrEmpty(endpointUrl) || !endpointUrl.StartsWith("opc.tcp://")) + { + _session.StatusMessage = "Please provide a valid OPC UA endpoint URL in the format opc.tcp://ipaddress:port"; + return View("Index", _session); + } + _session.EndpointUrl = endpointUrl; HttpContext.Session.SetString("EndpointUrl", endpointUrl); @@ -74,8 +80,7 @@ public ActionResult ConnectAsync(string username, string password) _session.EndpointUrl = HttpContext.Session.GetString("EndpointUrl"); _session.UserName = username; _session.Password = password; - _session.StatusMessage = "Connected to: " + _session.EndpointUrl; - + return View("Browse", _session); } @@ -172,7 +177,7 @@ public async Task GenerateCSV() return View("Browse", _session); } } - + [HttpPost] public async Task PushCert() { @@ -181,7 +186,7 @@ public async Task PushCert() try { await _client.GDSServerPush(_session.EndpointUrl, _session.UserName, _session.Password).ConfigureAwait(false); - + _session.StatusMessage = "New certificate and trust list pushed successfully to server!"; } catch (Exception ex) diff --git a/Pages/UABrowser.razor b/Pages/UABrowser.razor index 7eb6498..1a810fa 100644 --- a/Pages/UABrowser.razor +++ b/Pages/UABrowser.razor @@ -69,12 +69,28 @@ private string NodeValue { get; set; } = string.Empty; private bool NodeNotPublishable { get; set; } = true; - protected override void OnInitialized() + protected async override void OnInitialized() { - UANodes.Add(new UANode() { + StatusMessage = "Connecting to " + EndpointUrl + "..."; + await InvokeAsync(StateHasChanged).ConfigureAwait(false); + + UANode root = new() + { Text = "Root", NodeId = ObjectIds.ObjectsFolder.ToString() - }); + }; + + root.Children = await GetChildrenAsync(root).ConfigureAwait(false); + if (root.Children == null) + { + StatusMessage = "Could not connect to server " + EndpointUrl + "!"; + } + else + { + UANodes.Add(root); + StatusMessage = "Connected to " + EndpointUrl + "."; + await InvokeAsync(StateHasChanged).ConfigureAwait(false); + } } private async Task OnNodeExpand(UANode expendedNode) @@ -143,7 +159,7 @@ { StatusMessage = ex.Message; - return new List(); + return null; } }