public void Execute(AgentUpdateInfo agentUpdateInfo)
        {
            var fileName = Constants.AgentServiceReleasePackage;

            if (!File.Exists(fileName))
            {
                throw new ArgumentException(string.Format("Filename '{0}' does not exist.", fileName));
            }

            _logger.Log("Verifying checksum of downloaded agent version...");

            using (var fstream = new FileStream(fileName, FileMode.Open)) {
                var hash = new MD5CryptoServiceProvider().ComputeHash(fstream);

                var result = new StringBuilder();
                foreach (var b in hash)
                {
                    result.AppendFormat("{0:x2}", b);
                }

                var checksum = result.ToString().ToUpper();

                if (checksum != agentUpdateInfo.signature.ToUpper())
                {
                    throw new BadChecksumException(String.Format("Checksum verification failed. Incorrect checksum: {0}", checksum));
                }
            }

            _logger.Log("Checksum Validated.");
        }
Ejemplo n.º 2
0
        public void DoUpdate(AgentUpdateInfo agentUpdateInfo)
        {
            _agentUpdateInfo = agentUpdateInfo;
            _logger.Log(String.Format("Received from Agent the following data:\r\nURL:{0}\r\nCHECKSUM:{1}, will resume in a minute", _agentUpdateInfo.url, _agentUpdateInfo.signature));

            new Timer(TimerElapsed, null, 60000, 0);
        }
Ejemplo n.º 3
0
        public override void ScheduleUpdate(AgentUpdateInfo info, UUID fromSceneID)
        {
            AgentCircuit circuit;

            if (Circuits.TryGetValue(fromSceneID, out circuit))
            {
                circuit.ScheduleUpdate(info);
            }
        }
Ejemplo n.º 4
0
        public void SendAgentObjectToAgent(IAgent agent, IAgent targetAgent)
        {
            AgentUpdateInfo aui = agent.GetUpdateInfo(ID);

            if (aui != null)
            {
                targetAgent.ScheduleUpdate(aui, ID);
                targetAgent.SendMessageAlways(agent.GetAvatarAppearanceMsg(), ID);
            }
        }
Ejemplo n.º 5
0
        public void Execute(AgentUpdateInfo agentUpdateInfo)
        {
            _logger.Log("Installing a new version of Agent ...");

            _logger.Log("Unzipping agent zip...");
            UnzipNewAgentVersion();
            _logger.Log("Copying new agent files");
            Utility.CopyFiles(Constants.AgentServiceUnzipPath, SvcConfiguration.AgentPath, _logger);
            _logger.Log("Done copying agent files.");
        }
Ejemplo n.º 6
0
        public void SendAgentObjectToAllAgents(IAgent agent)
        {
            AgentUpdateInfo aui = agent.GetUpdateInfo(ID);

            if (aui != null)
            {
                foreach (IAgent a in Agents)
                {
                    a.ScheduleUpdate(aui, ID);
                }
            }
        }
        public void Execute(AgentUpdateInfo agentUpdateInfo)
        {
            _logger.Log("Downloading Agent ...");

            if (!Directory.Exists(SvcConfiguration.AgentVersionUpdatesPath))
            {
                Directory.CreateDirectory(SvcConfiguration.AgentVersionUpdatesPath);
            }

            var webClient = new WebClient();

            webClient.DownloadFile(agentUpdateInfo.url, Constants.AgentServiceReleasePackage);

            _logger.Log("Agent downloaded.");
        }
Ejemplo n.º 8
0
 public void ScheduleUpdate(AgentUpdateInfo agentinfo, bool isPhysicsOrigin = false)
 {
     foreach (IAgent a in Agents)
     {
         a.ScheduleUpdate(agentinfo, ID);
     }
     foreach (IAgentListener l in AgentListeners)
     {
         if (isPhysicsOrigin && l.IgnorePhysicsLocationUpdates)
         {
             continue;
         }
         l.ScheduleUpdate(agentinfo, ID);
     }
 }
Ejemplo n.º 9
0
 public NpcAgent(
     UGUIWithName npcID,
     AgentServiceList serviceList,
     UUID sceneID)
     : base(npcID.ID, npcID.HomeURI)
 {
     FirstName           = npcID.FirstName;
     LastName            = npcID.LastName;
     m_InventoryService  = serviceList.Get <InventoryServiceInterface>();
     m_ProfileService    = serviceList.Get <ProfileServiceInterface>();
     m_PresenceService   = serviceList.Get <IPresenceServiceInterface>();
     NpcPresenceService  = serviceList.Get <NpcPresenceServiceInterface>();
     m_UpdateInfo        = new AgentUpdateInfo(this, sceneID);
     OnAppearanceUpdate += HandleAppearanceUpdate;
 }
Ejemplo n.º 10
0
        public void Send(AgentUpdateInfo agentUpdateInfo)
        {
            IAgentUpdater agentUpdater;

            try {
                ConnectToRemotingHost(out agentUpdater);
                agentUpdater.DoUpdate(agentUpdateInfo);
            }
            catch (Exception ex) {
                throw new UnsuccessfulCommandExecutionException(
                          String.Format("UPDATE FAILED: {0}", ex.Message),
                          new ExecutableResult {
                    ExitCode = "1"
                });
            }
        }
Ejemplo n.º 11
0
        public void Execute(AgentUpdateInfo agentUpdateInfo)
        {
            _logger.Log("Starting Agent Service ...");
            var serviceController = new ServiceController(Constants.AgentServiceName);

            if (serviceController.Status == ServiceControllerStatus.Running)
            {
                _logger.Log("Agent service already started.");
                return;
            }

            serviceController.Start();
            serviceController.WaitForStatus(ServiceControllerStatus.Running);

            serviceController.Close();
            _logger.Log("Agent Service started and now running ...");
        }
Ejemplo n.º 12
0
 public void Execute(AgentUpdateInfo agentUpdateInfo)
 {
     _logger.Log("Cleaning temp files/folders ... ");
     if (Directory.Exists(Constants.AgentServiceBackupPath))
     {
         Directory.Delete(Constants.AgentServiceBackupPath, true);
     }
     if (File.Exists(Constants.AgentServiceReleasePackage))
     {
         File.Delete(Constants.AgentServiceReleasePackage);
     }
     if (Directory.Exists(Constants.AgentServiceUnzipPath))
     {
         Directory.Delete(Constants.AgentServiceUnzipPath, true);
     }
     _logger.Log("Cleaning Complete ...");
 }
        public void Execute(AgentUpdateInfo agentUpdateInfo)
        {
            _logger.Log("Stopping Agent Service ...");

            var serviceController = new ServiceController(Constants.AgentServiceName);

            if (serviceController.Status == ServiceControllerStatus.Stopped)
            {
                _logger.Log("Agent Service already stopped.");
                return;
            }

            if (!serviceController.CanStop)
            {
                throw new ApplicationException("Service {0} can't be stop at this time, please try again later");
            }

            serviceController.Stop();
            serviceController.WaitForStatus(ServiceControllerStatus.Stopped);

            serviceController.Close();

            _logger.Log("Agent Service successfully stopped.");
        }
Ejemplo n.º 14
0
 public void Execute(AgentUpdateInfo agentUpdateInfo)
 {
     Setup(Constants.AgentServiceBackupPath);
     Utility.CopyFiles(SvcConfiguration.AgentPath, Constants.AgentServiceBackupPath, _logger);
 }
Ejemplo n.º 15
0
 public abstract void ScheduleUpdate(AgentUpdateInfo info, UUID fromSceneID);
Ejemplo n.º 16
0
 public override void ScheduleUpdate(AgentUpdateInfo info, UUID fromSceneID)
 {
     /* ignored */
 }
Ejemplo n.º 17
0
 public Do(AgentUpdateInfo agentUpdateInfo)
 {
     _agentUpdateInfo = agentUpdateInfo;
     _listOfCommands  = new List <ICommand>();
 }
Ejemplo n.º 18
0
 void IAgentListener.ScheduleUpdate(AgentUpdateInfo info, UUID fromSceneID)
 {
     /* intentionally left empty */
 }