// 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(); } }
//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(); } } }
public override bool IsSatisfied(PiSpyDataLog dataLog) { return !(this.Policies.All(m => m.IsSatisfied(dataLog)));// && this.PolicyGroups.All(m => m.IsSatisfied(dataLog))); }
public override bool IsSatisfied(PiSpyDataLog dataLog) { return ((PiSpyDataLog)dataLog).TimeReceived <= DateTime.Now.AddMinutes(-MinutesDisconnected); }
public override bool IsSatisfied(PiSpyDataLog dataLog) { return this.Policies.Count(m => m.IsSatisfied(dataLog)) == 1;// ^ this.PolicyGroups.Count(m => m.IsSatisfied(dataLog)) == 1; }
// 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; }
public virtual bool IsSatisfied(PiSpyDataLog dataLog) { return this.PolicyGroups.All(m => m.IsSatisfied(dataLog)); }
public override bool IsSatisfied(PiSpyDataLog dataLog) { return this.Policies.Any(m => m.IsSatisfied(dataLog));// || this.PolicyGroups.Any(m => m.IsSatisfied(dataLog)); }
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; } }
public override bool IsSatisfied(PiSpyDataLog dataLog) { return !(this.Policies.Any(m => m.IsSatisfied(dataLog))); }
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; } } }