Example #1
0
        // *** constructor ***

        /// <summary>
        /// Creates a new instance of type Beacon
        /// </summary>
        /// <param name="logger">Logger for logging messages</param>
        /// <param name="cache">Cache storing beacon related data</param>
        /// <param name="configuration">OpenKit related configuration</param>
        /// <param name="clientIPAddress">The client's IP address</param>
        /// <param name="threadIdProvider">Provider for retrieving thread id</param>
        /// <param name="timingProvider">Provider for time related methods</param>
        public Beacon(ILogger logger, BeaconCache beaconCache, OpenKitConfiguration configuration, string clientIPAddress,
                      IThreadIDProvider threadIDProvider, ITimingProvider timingProvider)
        {
            this.logger         = logger;
            this.beaconCache    = beaconCache;
            this.sessionNumber  = configuration.NextSessionNumber;
            this.timingProvider = timingProvider;

            this.configuration    = configuration;
            this.threadIDProvider = threadIDProvider;
            this.sessionStartTime = timingProvider.ProvideTimestampInMilliseconds();

            if (InetAddressValidator.IsValidIP(clientIPAddress))
            {
                this.clientIPAddress = clientIPAddress;
            }
            else
            {
                this.clientIPAddress = string.Empty;
            }

            // store the current http configuration
            this.httpConfiguration = configuration.HTTPClientConfig;

            basicBeaconData = CreateBasicBeaconData();
        }
Example #2
0
        protected OpenKit(ILogger logger,
                          OpenKitConfiguration configuration,
                          IHTTPClientProvider httpClientProvider,
                          ITimingProvider timingProvider,
                          IThreadIDProvider threadIDProvider)
        {
            if (logger.IsInfoEnabled)
            {
                //TODO: Use proper version information (incl. the build number)
                logger.Info(configuration.OpenKitType + " " + GetType().Name + " " + OpenKitConstants.DEFAULT_APPLICATION_VERSION + " instantiated");
            }
            if (logger.IsDebugEnabled)
            {
                logger.Debug(
                    "applicationName=" + configuration.ApplicationName + ", applicationID=" + configuration.ApplicationID
                    + ", deviceID=" + configuration.DeviceID + ", endpointURL=" + configuration.EndpointURL
                    );
            }
            this.configuration    = configuration;
            this.logger           = logger;
            this.timingProvider   = timingProvider;
            this.threadIDProvider = threadIDProvider;

            beaconCache        = new BeaconCache(logger);
            beaconSender       = new BeaconSender(logger, configuration, httpClientProvider, timingProvider);
            beaconCacheEvictor = new BeaconCacheEvictor(logger, beaconCache, configuration.BeaconCacheConfig, timingProvider);
        }
        public override void HandlePacket(RadioPacket packet, BeaconFrame bp)
        {
            var signal  = packet[RadioTapType.DbmAntennaSignal];
            var ssidObj = bp.InformationElements.First(b => b.Id.ToString() == "ServiceSetIdentity");
            var ssid    = Encoding.UTF8.GetString(ssidObj.Value, 0, ssidObj.ValueLength).Trim();

            if (string.IsNullOrWhiteSpace(ssid))
            {
                return;
            }

            var dbs    = signal.ToString().Split(' ', StringSplitOptions.TrimEntries)[1];
            var db     = int.Parse(dbs);
            var output = $"{DateTime.Now},Beacon,{bp.SourceAddress},{ssid},{Helper.DbToPercent(db)}";

            if (BeaconCache.UpdateCache(bp.SourceAddress.ToString(), ssid, Helper.DbToPercentInt(db)))
            {
                var mac = new WiFiMac {
                    MAC = bp.SourceAddress.ToString()
                };
                var ap = new WiFiAccessPoint
                {
                    LastSeen        = DateTime.Now,
                    WiFiMac         = mac,
                    WiFiNetworkName = new WiFiNetworkName {
                        SSID = ssid
                    }
                };
                ApiQueue.QueueItem(ap);
                Log(output);
            }
        }
Example #4
0
        protected OpenKit(ILogger logger,
                          OpenKitConfiguration configuration,
                          IHTTPClientProvider httpClientProvider,
                          ITimingProvider timingProvider,
                          IThreadIDProvider threadIDProvider)
        {
            this.configuration    = configuration;
            this.logger           = logger;
            this.timingProvider   = timingProvider;
            this.threadIDProvider = threadIDProvider;

            beaconCache        = new BeaconCache();
            beaconSender       = new BeaconSender(configuration, httpClientProvider, timingProvider);
            beaconCacheEvictor = new BeaconCacheEvictor(logger, beaconCache, configuration.BeaconCacheConfig, timingProvider);
        }
Example #5
0
        /// <summary>
        /// Creates a new instance of type Beacon
        /// </summary>
        /// <param name="logger">Logger for logging messages</param>
        /// <param name="cache">Cache storing beacon related data</param>
        /// <param name="configuration">OpenKit related configuration</param>
        /// <param name="clientIPAddress">The client's IP address</param>
        /// <param name="threadIdProvider">Provider for retrieving thread id</param>
        /// <param name="timingProvider">Provider for time related methods</param>
        /// <param name="randomNumberGenerator">Random number generator</param>
        internal Beacon(ILogger logger, BeaconCache beaconCache, OpenKitConfiguration configuration, string clientIPAddress,
                        IThreadIDProvider threadIDProvider, ITimingProvider timingProvider, IPRNGenerator randomNumberGenerator)
        {
            this.logger         = logger;
            this.beaconCache    = beaconCache;
            BeaconConfiguration = configuration.BeaconConfig;

            if (beaconConfiguration.DataCollectionLevel == DataCollectionLevel.USER_BEHAVIOR)
            {
                SessionNumber = configuration.NextSessionNumber;
                DeviceID      = Truncate(configuration.DeviceID);
            }
            else
            {
                SessionNumber = 1;
                DeviceID      = randomNumberGenerator.NextLong(long.MaxValue)
                                .ToString(CultureInfo.InvariantCulture);
            }

            this.timingProvider = timingProvider;

            this.configuration         = configuration;
            this.threadIDProvider      = threadIDProvider;
            this.randomNumberGenerator = randomNumberGenerator;
            sessionStartTime           = timingProvider.ProvideTimestampInMilliseconds();

            if (InetAddressValidator.IsValidIP(clientIPAddress))
            {
                this.clientIPAddress = clientIPAddress;
            }
            else
            {
                this.clientIPAddress = string.Empty;
            }
            // store the current http configuration
            httpConfiguration = configuration.HTTPClientConfig;
            basicBeaconData   = CreateBasicBeaconData();
        }
Example #6
0
        // *** constructor ***

        /// <summary>
        /// Creates a new instance of type Beacon
        /// </summary>
        /// <param name="logger">Logger for logging messages</param>
        /// <param name="cache">Cache storing beacon related data</param>
        /// <param name="configuration">OpenKit related configuration</param>
        /// <param name="clientIPAddress">The client's IP address</param>
        /// <param name="threadIdProvider">Provider for retrieving thread id</param>
        /// <param name="timingProvider">Provider for time related methods</param>
        public Beacon(ILogger logger, BeaconCache beaconCache, OpenKitConfiguration configuration, string clientIPAddress,
                      IThreadIDProvider threadIDProvider, ITimingProvider timingProvider)
            : this(logger, beaconCache, configuration, clientIPAddress, threadIDProvider, timingProvider, new DefaultPRNGenerator())
        {
        }