mirror of
https://github.com/mainflux/mainflux.git
synced 2025-05-12 19:29:30 +08:00

* NOISSUE- Add OPC-UA adapter Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * NOISSUE - Add opc-adapter PoC, docker and vendor Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Convert OPC messages to SenML Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Add gopcua package Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * lora-adapter typo Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Add OPC Reader Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Typo fix Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Typo fix Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Update copyright headers Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix reviews Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix reviews Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Add opc config Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Add all opc envars in the config Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Config typo Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Add route map Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Use opcua package instead of opc Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix OPCUA typo Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Rm MQTT sub Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Move interefaces to root Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Fix revieews and typo Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Update Gopkg.toml Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com> * Add all envars into .env Signed-off-by: Manuel Imperiale <manuel.imperiale@gmail.com>
36 lines
925 B
Go
36 lines
925 B
Go
// Copyright 2018-2019 opcua authors. All rights reserved.
|
|
// Use of this source code is governed by a MIT-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
package uacp
|
|
|
|
import (
|
|
"net"
|
|
"strings"
|
|
|
|
"github.com/gopcua/opcua/errors"
|
|
)
|
|
|
|
// ResolveEndpoint returns network type, address, and error splitted from EndpointURL.
|
|
//
|
|
// Expected format of input is "opc.tcp://<addr[:port]/path/to/somewhere"
|
|
func ResolveEndpoint(endpoint string) (network string, addr *net.TCPAddr, err error) {
|
|
elems := strings.Split(endpoint, "/")
|
|
if elems[0] != "opc.tcp:" {
|
|
return "", nil, errors.Errorf("invalid endpoint %s", endpoint)
|
|
}
|
|
|
|
addrString := elems[2]
|
|
if !strings.Contains(addrString, ":") {
|
|
addrString += ":4840"
|
|
}
|
|
|
|
network = "tcp"
|
|
addr, err = net.ResolveTCPAddr(network, addrString)
|
|
switch err.(type) {
|
|
case *net.DNSError:
|
|
return "", nil, errors.Errorf("could not resolve address %s", addrString)
|
|
}
|
|
return
|
|
}
|