Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }