Example #1
0
        // public string Secret { get; set; } // we need a secret string to prevent people from registering other users' pispies
        public void CheckPolicies(PiSpyDataLog log)
        {
            foreach (var policy in Policies.Where(m => m.IsSatisfied(log) && m.PolicyActionId != null))
            {
                //policy.PolicyAction.Execute(); // can't put this here. has to go through website

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://pispy.cloudapp.net/Policies/TriggerPolicy/" + policy.Id); // PoliciesController, TriggerPolicy action
                request.Timeout = 20000; // 20 seconds
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                response.Close();
            }
        }
Example #2
0
        //private static string connectionString = "Server=tcp:pjukket8nr.database.windows.net,1433;Database=skyspidb;User ID=misterjeff@pjukket8nr;Password=j1mmyj@ck@ss;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;";
        //private static string connectionString = "Server=tcp:rnjlhjaseg.database.windows.net,1433;Database=Database;User ID=Klayton@rnjlhjaseg;Password=Liv3Lif3;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;";
        public static void AddDataLog(PiSpyDataLog log)
        {
            using (SqlConnection cn = new SqlConnection(connectionString))
            {
                using (SqlCommand cmd = new SqlCommand("INSERT INTO PiSpyDataLogs(TimeStamp, IpAddress, Temperature, Humidity, PiSpySerialNumber, TimeReceived) VALUES (@TimeStamp, @IpAddress, @Temperature, @Humidity, @PiSpySerialNumber, @TimeReceived);", cn))
                {
                    cmd.Parameters.Add("@TimeStamp", SqlDbType.DateTime).Value = log.TimeStamp;
                    cmd.Parameters.Add("@IpAddress", SqlDbType.NVarChar).Value = log.IpAddress;
                    cmd.Parameters.Add("@Temperature", SqlDbType.Float).Value = log.Temperature;
                    cmd.Parameters.Add("@Humidity", SqlDbType.Float).Value = log.Humidity;
                    cmd.Parameters.Add("@PiSpySerialNumber", SqlDbType.NVarChar).Value = log.PiSpySerialNumber;
                    cmd.Parameters.Add("@TimeReceived", SqlDbType.DateTime).Value = log.TimeReceived;

                    cn.Open();
                    cmd.ExecuteNonQuery();
                }
            }
        }
Example #3
0
 public override bool IsSatisfied(PiSpyDataLog dataLog)
 {
     return !(this.Policies.All(m => m.IsSatisfied(dataLog)));// && this.PolicyGroups.All(m => m.IsSatisfied(dataLog)));
 }
Example #4
0
 public override bool IsSatisfied(PiSpyDataLog dataLog)
 {
     return ((PiSpyDataLog)dataLog).TimeReceived <= DateTime.Now.AddMinutes(-MinutesDisconnected);
 }
Example #5
0
 public override bool IsSatisfied(PiSpyDataLog dataLog)
 {
     return this.Policies.Count(m => m.IsSatisfied(dataLog)) == 1;// ^ this.PolicyGroups.Count(m => m.IsSatisfied(dataLog)) == 1;
 }
Example #6
0
        // disregard the dataLog for this override
        public override bool IsSatisfied(PiSpyDataLog dataLog)
        {
            if (DateTime.Now.AddHours(-5).AddSeconds(15) >= TriggerTime) // -5 hours for time difference, +15 seconds to account for the time it takes for SendGrid to send a message
            {
                Triggered = true;
                return true;
            }

            return false;
        }
Example #7
0
 public virtual bool IsSatisfied(PiSpyDataLog dataLog)
 {
     return this.PolicyGroups.All(m => m.IsSatisfied(dataLog));
 }
Example #8
0
 public override bool IsSatisfied(PiSpyDataLog dataLog)
 {
     return this.Policies.Any(m => m.IsSatisfied(dataLog));// || this.PolicyGroups.Any(m => m.IsSatisfied(dataLog));
 }
Example #9
0
        public override bool IsSatisfied(PiSpyDataLog dataLog)
        {
            if (dataLog == null)
            {
                throw new ArgumentNullException("dataLog");
            }

            var testVariable = NumericPolicyType.Name == "Temperature" ? dataLog.TemperatureFahrenheit : dataLog.Humidity;

            switch (this.ComparisonOperator.Operator)
            {
                case "==": return testVariable == Value;
                case "<=": return testVariable <= Value;
                case "<": return testVariable < Value;
                case ">=": return testVariable >= Value;
                case ">": return testVariable > Value;
                default: return testVariable != Value;
            }
        }
Example #10
0
 public override bool IsSatisfied(PiSpyDataLog dataLog)
 {
     return !(this.Policies.Any(m => m.IsSatisfied(dataLog)));
 }
Example #11
0
        private static void StartServer(object clientParameter)
        {
            TcpClient client = (TcpClient)clientParameter;
            NetworkStream networkStream = client.GetStream();
            string ip = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString();

            while (client.Connected)
            {
                try
                {
                    try
                    {
                        string message = TcpStreamReader.Read(networkStream);
                        PiSpyDataLog log = new PiSpyDataLog(message, ip);

                        //PolicyEngine.CheckLog(log); // can't put this here, unfortunately. Instead, scheduled checker in other thread on webserver.

                        SqlHelper.AddDataLog(log);
                    }
                    catch { } // in the case that we receive invalid data, do nothing, but stay connected.

                    //var messageBytes = Encoding.ASCII.GetBytes(message);
                    //networkStream.Write(messageBytes, 0, messageBytes.Length);
                }
                catch // if we disconnect, stop looping
                {
                    break;
                }
            }
        }