Beispiel #1
0
        /// <summary>
        /// SetScanAsync
        /// </summary>
        /// <param name="discoverer"></param>
        /// <returns></returns>
        public async Task <string> SetDiscoveryAsync(DiscovererInfo discoverer)
        {
            var           model = discoverer.DiscovererModel.DiscoveryConfig;
            DiscoveryMode discoveryMode;

            if (model == null)
            {
                model = new DiscoveryConfigApiModel();
            }

            if (discoverer.ScanStatus == true)
            {
                discoveryMode = DiscoveryMode.Fast;
            }
            else
            {
                discoveryMode = DiscoveryMode.Off;
            }

            try {
                await _registryService.SetDiscoveryModeAsync(discoverer.DiscovererModel.Id, discoveryMode, model);
            }
            catch (Exception exception) {
                var errorMessageTrace = string.Concat(exception.Message, exception.InnerException?.Message ?? "--", exception?.StackTrace ?? "--");
                _logger.Error(errorMessageTrace);
                return(errorMessageTrace);
            }
            return(null);
        }
Beispiel #2
0
        /// <summary>
        /// UpdateDiscovererAsync
        /// </summary>
        /// <param name="discoverer"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public async Task <string> UpdateDiscovererAsync(DiscovererInfo discoverer, DiscoveryConfigApiModel config)
        {
            var model = new DiscovererUpdateApiModel();

            model.DiscoveryConfig = discoverer.DiscovererModel.DiscoveryConfig;

            if (config.AddressRangesToScan != null)
            {
                model.DiscoveryConfig.AddressRangesToScan = config.AddressRangesToScan;
            }
            if (config.PortRangesToScan != null)
            {
                model.DiscoveryConfig.PortRangesToScan = config.PortRangesToScan;
            }
            if (config.ActivationFilter != null)
            {
                model.DiscoveryConfig.ActivationFilter = config.ActivationFilter;
            }
            if (config.MaxNetworkProbes != null && config.MaxNetworkProbes != 0)
            {
                model.DiscoveryConfig.MaxNetworkProbes = config.MaxNetworkProbes;
            }
            if (config.MaxPortProbes != null && config.MaxPortProbes != 0)
            {
                model.DiscoveryConfig.MaxPortProbes = config.MaxPortProbes;
            }
            if (config.NetworkProbeTimeoutMs != null && config.NetworkProbeTimeoutMs != 0)
            {
                model.DiscoveryConfig.NetworkProbeTimeoutMs = config.NetworkProbeTimeoutMs;
            }
            if (config.PortProbeTimeoutMs != null && config.PortProbeTimeoutMs != 0)
            {
                model.DiscoveryConfig.PortProbeTimeoutMs = config.PortProbeTimeoutMs;
            }
            if (config.IdleTimeBetweenScansSec != null && config.IdleTimeBetweenScansSec != 0)
            {
                model.DiscoveryConfig.IdleTimeBetweenScansSec = config.IdleTimeBetweenScansSec;
            }
            else
            {
                model.DiscoveryConfig.IdleTimeBetweenScansSec = _5MINUTES;
            }
            if (config.DiscoveryUrls != null)
            {
                model.DiscoveryConfig.DiscoveryUrls = config.DiscoveryUrls;
            }

            try {
                await _registryService.UpdateDiscovererAsync(discoverer.DiscovererModel.Id, model);
            }
            catch (Exception exception) {
                var errorMessageTrace = string.Concat(exception.Message, exception.InnerException?.Message ?? "--", exception?.StackTrace ?? "--");
                _logger.Error(errorMessageTrace);
                return(errorMessageTrace);
            }
            return(null);
        }
 public async Task SetDiscoveryModeAsync(string discovererId,
                                         [FromQuery][Required] IIoT.OpcUa.Api.Registry.Models.DiscoveryMode mode,
                                         [FromBody] DiscoveryConfigApiModel config)
 {
     var request = new DiscovererUpdateApiModel {
         Discovery       = mode,
         DiscoveryConfig = config
     };
     await _discoverers.UpdateDiscovererAsync(discovererId,
                                              request.ToServiceModel());
 }
Beispiel #4
0
        /// <summary>
        /// SetScanAsync
        /// </summary>
        /// <param name="discoverer"></param>
        /// <param name="ipMask"></param>
        /// <param name="portRange"></param>
        /// <param name="forceScan"></param>
        /// <returns></returns>
        public async Task SetScanAsync(DiscovererInfo discoverer, string ipMask, string portRange, bool forceScan)
        {
            var model = new DiscoveryConfigApiModel();

            DiscoveryMode discoveryMode;

            if (forceScan == true)
            {
                model.AddressRangesToScan = string.Empty;
                model.PortRangesToScan    = string.Empty;
            }
            else
            {
                if (discoverer.DiscovererModel.DiscoveryConfig != null)
                {
                    model = discoverer.DiscovererModel.DiscoveryConfig;
                }
            }

            if (discoverer.ScanStatus == true && forceScan == true)
            {
                discoveryMode = DiscoveryMode.Fast;

                if (ipMask != null)
                {
                    model.AddressRangesToScan = ipMask;
                }
                if (portRange != null)
                {
                    model.PortRangesToScan = portRange;
                }
                model.IdleTimeBetweenScansSec = _5MINUTES;
            }
            else
            {
                discoveryMode = DiscoveryMode.Off;
            }

            try {
                if (discoveryMode == DiscoveryMode.Off)
                {
                    await _registryService.SetDiscoveryModeAsync(discoverer.DiscovererModel.Id, discoveryMode, new DiscoveryConfigApiModel());
                }
                else
                {
                    await _registryService.SetDiscoveryModeAsync(discoverer.DiscovererModel.Id, discoveryMode, model);
                }
            }
            catch (Exception exception) {
                var errorMessageTrace = string.Concat(exception.Message, exception.InnerException?.Message ?? "--", exception?.StackTrace ?? "--");
                Trace.TraceError(errorMessageTrace);
            }
        }
        /// <inheritdoc/>
        public async Task SetDiscoveryModeAsync(string discovererId,
                                                DiscoveryMode mode, DiscoveryConfigApiModel config, CancellationToken ct)
        {
            if (string.IsNullOrEmpty(discovererId))
            {
                throw new ArgumentNullException(nameof(discovererId));
            }
            var uri = new UriBuilder($"{_serviceUri}/v2/discovery/{discovererId}")
            {
                Query = $"mode={mode}"
            };
            var request = _httpClient.NewRequest(uri.Uri, _resourceId);

            request.SetContent(config);
            var response = await _httpClient.PostAsync(request, ct).ConfigureAwait(false);

            response.Validate();
        }
Beispiel #6
0
 /// <summary>
 /// Convert back to service model
 /// </summary>
 /// <returns></returns>
 public static DiscoveryConfigModel ToServiceModel(
     this DiscoveryConfigApiModel model)
 {
     if (model == null)
     {
         return(null);
     }
     return(new DiscoveryConfigModel {
         AddressRangesToScan = model.AddressRangesToScan,
         NetworkProbeTimeout = model.NetworkProbeTimeout,
         MaxNetworkProbes = model.MaxNetworkProbes,
         PortRangesToScan = model.PortRangesToScan,
         PortProbeTimeout = model.PortProbeTimeout,
         MaxPortProbes = model.MaxPortProbes,
         MinPortProbesPercent = model.MinPortProbesPercent,
         IdleTimeBetweenScans = model.IdleTimeBetweenScans,
         ActivationFilter = model.ActivationFilter.ToServiceModel(),
         Locales = model.Locales,
         DiscoveryUrls = model.DiscoveryUrls,
     });
 }
Beispiel #7
0
 /// <summary>
 /// Convert back to service model
 /// </summary>
 /// <returns></returns>
 public static DiscoveryConfigModel ToServiceModel(
     this DiscoveryConfigApiModel model)
 {
     if (model == null)
     {
         return(null);
     }
     return(new DiscoveryConfigModel {
         AddressRangesToScan = model.AddressRangesToScan,
         NetworkProbeTimeout = model.NetworkProbeTimeoutMs == null ?
                               (TimeSpan?)null : TimeSpan.FromMilliseconds((double)model.NetworkProbeTimeoutMs),
         MaxNetworkProbes = model.MaxNetworkProbes,
         PortRangesToScan = model.PortRangesToScan,
         PortProbeTimeout = model.PortProbeTimeoutMs == null ?
                            (TimeSpan?)null : TimeSpan.FromMilliseconds((double)model.PortProbeTimeoutMs),
         MaxPortProbes = model.MaxPortProbes,
         MinPortProbesPercent = model.MinPortProbesPercent,
         IdleTimeBetweenScans = model.IdleTimeBetweenScansSec == null ?
                                (TimeSpan?)null : TimeSpan.FromSeconds((double)model.IdleTimeBetweenScansSec),
         ActivationFilter = model.ActivationFilter.ToServiceModel(),
         Locales = model.Locales,
         DiscoveryUrls = model.DiscoveryUrls
     });
 }
Beispiel #8
0
 /// <summary>
 /// Update an config
 /// </summary>
 /// <param name="config"></param>
 /// <param name="update"></param>
 public static DiscoveryConfigApiModel Patch(this DiscoveryConfigApiModel update,
                                             DiscoveryConfigApiModel config)
 {
     if (update == null)
     {
         return(config);
     }
     if (config == null)
     {
         config = new DiscoveryConfigApiModel();
     }
     config.ActivationFilter     = update.ActivationFilter;
     config.AddressRangesToScan  = update.AddressRangesToScan;
     config.DiscoveryUrls        = update.DiscoveryUrls;
     config.IdleTimeBetweenScans = update.IdleTimeBetweenScans;
     config.Locales              = update.Locales;
     config.MaxNetworkProbes     = update.MaxNetworkProbes;
     config.MaxPortProbes        = update.MaxPortProbes;
     config.MinPortProbesPercent = update.MinPortProbesPercent;
     config.NetworkProbeTimeout  = update.NetworkProbeTimeout;
     config.PortProbeTimeout     = update.PortProbeTimeout;
     config.PortRangesToScan     = update.PortRangesToScan;
     return(config);
 }