public static bool DoSyncSimpleTasks() { try { Network net; net = Utilities.ConnectNetwork(0); if (net == null) { return(false); } Status.UpdateMessage(0, "Checking Simple Tasks"); Int64 Aside = -1; SimpleTaskDataSigned st = null; do { st = net.GetSimpleTaskSigned(); if (st == null) { break; } if (ApplicationCertificate.Verify(st) == false) { FoxEventLog.WriteEventLog("One or more Simple Tasks are tampered - no tasks will be processed.", System.Diagnostics.EventLogEntryType.Error); break; } if (Aside != -1) { if (Aside == st.STask.ID) { break; } } Int64 AID; if (ProcessSimpleTask(net, st.STask, out AID) == false) { break; } if (AID != -1) { Aside = AID; } } while (st != null); net.CloseConnection(); } catch (Exception ee) { Debug.WriteLine(ee.ToString()); FoxEventLog.WriteEventLog("Servere error while running Simple Tasks: " + ee.ToString(), EventLogEntryType.Error); } Status.UpdateMessage(0); return(true); }
public static bool Verify(SimpleTaskDataSigned data) { bool SignedOK = false; foreach (FilesystemCertificateData cer in FilesystemData.LoadedCertificates) { if (Certificates.Verify(data, cer.Certificate) == true) { SignedOK = true; break; } } return(SignedOK); }
public RESTStatus GetSTaskSigned(SQLLib sql, object dummy, NetworkConnectionInfo ni) { if (ni.HasAcl(ACLFlags.ComputerLogin) == false) { ni.Error = "Access denied"; ni.ErrorID = ErrorFlags.AccessDenied; return(RESTStatus.Denied); } SimpleTask SimpleTask; lock (ni.sqllock) { SqlDataReader dr = sql.ExecSQLReader("select top 1 * from SimpleTasks WHERE MachineID=@id AND GETUTCDATE()>isnull(execafter,'2010-01-01') ORDER BY ID asc", new SQLParam("@id", ni.Username)); if (dr.HasRows == false) { dr.Close(); return(RESTStatus.NoContent); } SimpleTask = new SimpleTask(); while (dr.Read()) { sql.LoadIntoClass(dr, SimpleTask); } dr.Close(); } STaskDataSigned = new SimpleTaskDataSigned(); STaskDataSigned.STask = SimpleTask; if (Certificates.Sign(STaskDataSigned, SettingsManager.Settings.UseCertificate) == false) { FoxEventLog.WriteEventLog("Cannot sign STask Data with Certificate " + SettingsManager.Settings.UseCertificate, System.Diagnostics.EventLogEntryType.Warning); ni.Error = "Cannot sign STask Data with Certificate " + SettingsManager.Settings.UseCertificate; ni.ErrorID = ErrorFlags.CannotSign; return(RESTStatus.ServerError); } return(RESTStatus.Success); }