Beispiel #1
0
        public AppCtrlEvent[] GetAppCtrlEvents(Client client)
        {
            lock (client.SyncAccess)
            {
                int lastId = 0;
                if (client.AppCtrlEvents != null && client.AppCtrlEvents.Length != 0)
                {
                    lastId = client.AppCtrlEvents[0].EventID;
                }
                else
                {
                    client.AppCtrlEvents = new AppCtrlEvent[0];
                }

                AppCtrlEvent[] newAppEvents = server.GetAppCtrlEvents(client, lastId);
                if (newAppEvents == null || newAppEvents.Length == 0)
                {
                    return(client.AppCtrlEvents);
                }

                AppCtrlEvent[] oldAppEvents   = client.AppCtrlEvents;
                int            finalLen       = oldAppEvents.Length + newAppEvents.Length;
                AppCtrlEvent[] finalAppEvents = new AppCtrlEvent[finalLen];

                Array.Copy(newAppEvents, 0, finalAppEvents, 0, newAppEvents.Length);
                Array.Copy(oldAppEvents, 0, finalAppEvents, newAppEvents.Length, oldAppEvents.Length);

                client.AppCtrlEvents = finalAppEvents;
                return(finalAppEvents);
            }
        }
Beispiel #2
0
        public AppCtrlEvent[] GetAppCtrlEvents(Client client, int lastID)
        {
            soc.SendDWORD(client.Socket, (int)IceServerCommand.GetAppCtrlEvents);
            soc.SendDWORD(client.Socket, lastID);

            IceServerCommandResult cmdResult = (IceServerCommandResult)soc.RecvDWORD(client.Socket);

            if (cmdResult != IceServerCommandResult.Success)
            {
                throw new Exception("Failed to get AppCtrl Events for client " + client.Name);
            }

            int len = soc.RecvDWORD(client.Socket);

            if (len == 0)
            {
                return(new AppCtrlEvent[0]);
            }

            AppCtrlEvent[] appEvents = new AppCtrlEvent[len];

            for (int i = 0; i < len; i++)
            {
                appEvents[i] = new AppCtrlEvent();

                appEvents[i].EventID       = soc.RecvDWORD(client.Socket);
                appEvents[i].ProcessPath   = soc.RecvString(client.Socket);
                appEvents[i].PID           = soc.RecvDWORD(client.Socket);
                appEvents[i].ParentPath    = soc.RecvString(client.Socket);
                appEvents[i].ParentPID     = soc.RecvDWORD(client.Socket);
                appEvents[i].Verdict       = (IceScanVerdict)soc.RecvDWORD(client.Socket);
                appEvents[i].MatchedRuleID = soc.RecvDWORD(client.Socket);
                appEvents[i].EventTime     = soc.RecvDWORD(client.Socket);
            }

            return(appEvents);
        }