public override void Initialize(IHostContext hostContext) { base.Initialize(hostContext); var currentAssemblyLocation = System.Reflection.Assembly.GetEntryAssembly().Location; Trace.Info("currentAssemblyLocation: {0}", currentAssemblyLocation); _binPath = HostContext.GetDirectory(WellKnownDirectory.Bin); Trace.Info("binPath: {0}", _binPath); RootFolder = HostContext.GetDirectory(WellKnownDirectory.Root); Trace.Info("RootFolder: {0}", RootFolder); _configFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Runner); Trace.Info("ConfigFilePath: {0}", _configFilePath); _credFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Credentials); Trace.Info("CredFilePath: {0}", _credFilePath); _migratedCredFilePath = hostContext.GetConfigFile(WellKnownConfigFile.MigratedCredentials); Trace.Info("MigratedCredFilePath: {0}", _migratedCredFilePath); _serviceConfigFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Service); Trace.Info("ServiceConfigFilePath: {0}", _serviceConfigFilePath); }
public override void Initialize(IHostContext hostContext) { base.Initialize(hostContext); var currentAssemblyLocation = System.Reflection.Assembly.GetEntryAssembly().Location; Trace.Info("currentAssemblyLocation: {0}", currentAssemblyLocation); _binPath = HostContext.GetDirectory(WellKnownDirectory.Bin); Trace.Info("binPath: {0}", _binPath); RootFolder = HostContext.GetDirectory(WellKnownDirectory.Root); Trace.Info("RootFolder: {0}", RootFolder); _configFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Agent); Trace.Info("ConfigFilePath: {0}", _configFilePath); _credFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Credentials); Trace.Info("CredFilePath: {0}", _credFilePath); _serviceConfigFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Service); Trace.Info("ServiceConfigFilePath: {0}", _serviceConfigFilePath); _autoLogonSettingsFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Autologon); Trace.Info("AutoLogonSettingsFilePath: {0}", _autoLogonSettingsFilePath); _runtimeOptionsFilePath = hostContext.GetConfigFile(WellKnownConfigFile.Options); Trace.Info("RuntimeOptionsFilePath: {0}", _runtimeOptionsFilePath); }
void IAgentService.Initialize(IHostContext context) { base.Initialize(context); _context = context; _keyFile = context.GetConfigFile(WellKnownConfigFile.RSACredentials); }
public override void Initialize(IHostContext hostContext) { base.Initialize(hostContext); _credStoreFile = hostContext.GetConfigFile(WellKnownConfigFile.CredentialStore); if (File.Exists(_credStoreFile)) { _credStore = IOUtil.LoadObject <Dictionary <string, string> >(_credStoreFile); } else { _credStore = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); } }
public override void Initialize(IHostContext hostContext) { base.Initialize(hostContext); _credStoreFile = hostContext.GetConfigFile(WellKnownConfigFile.CredentialStore); if (File.Exists(_credStoreFile)) { _credStore = IOUtil.LoadObject <Dictionary <string, Credential> >(_credStoreFile); } else { _credStore = new Dictionary <string, Credential>(StringComparer.OrdinalIgnoreCase); } string machineId; if (File.Exists("/etc/machine-id")) { // try use machine-id as encryption key // this helps avoid accidental information disclosure, but isn't intended for true security machineId = File.ReadAllLines("/etc/machine-id").FirstOrDefault(); Trace.Info($"machine-id length {machineId?.Length ?? 0}."); // machine-id doesn't exist or machine-id is not 256 bits if (string.IsNullOrEmpty(machineId) || machineId.Length != 32) { Trace.Warning("Can not get valid machine id from '/etc/machine-id'."); machineId = "5f767374735f6167656e745f63726564"; //_vsts_agent_cred } } else { // /etc/machine-id not exist Trace.Warning("/etc/machine-id doesn't exist."); machineId = "5f767374735f6167656e745f63726564"; //_vsts_agent_cred } List <byte> keyBuilder = new List <byte>(); foreach (var c in machineId) { keyBuilder.Add(Convert.ToByte(c)); } _symmetricKey = keyBuilder.ToArray(); }
public override void Initialize(IHostContext hostContext) { base.Initialize(hostContext); _securityUtil = WhichUtil.Which("security", true, Trace); _agentCredStoreKeyChain = hostContext.GetConfigFile(WellKnownConfigFile.CredentialStore); // Create osx key chain if it doesn't exists. if (!File.Exists(_agentCredStoreKeyChain)) { List <string> securityOut = new List <string>(); List <string> securityError = new List <string>(); object outputLock = new object(); using (var p = HostContext.CreateService <IProcessInvoker>()) { p.OutputDataReceived += delegate(object sender, ProcessDataReceivedEventArgs stdout) { if (!string.IsNullOrEmpty(stdout.Data)) { lock (outputLock) { securityOut.Add(stdout.Data); } } }; p.ErrorDataReceived += delegate(object sender, ProcessDataReceivedEventArgs stderr) { if (!string.IsNullOrEmpty(stderr.Data)) { lock (outputLock) { securityError.Add(stderr.Data); } } }; // make sure the 'security' has access to the key so we won't get prompt at runtime. int exitCode = p.ExecuteAsync(workingDirectory: HostContext.GetDirectory(WellKnownDirectory.Root), fileName: _securityUtil, arguments: $"create-keychain -p {_osxAgentCredStoreKeyChainPassword} \"{_agentCredStoreKeyChain}\"", environment: null, cancellationToken: CancellationToken.None).GetAwaiter().GetResult(); if (exitCode == 0) { Trace.Info($"Successfully create-keychain for {_agentCredStoreKeyChain}"); } else { if (securityOut.Count > 0) { Trace.Error(string.Join(Environment.NewLine, securityOut)); } if (securityError.Count > 0) { Trace.Error(string.Join(Environment.NewLine, securityError)); } throw new InvalidOperationException($"'security create-keychain' failed with exit code {exitCode}."); } } } else { // Try unlock and lock the keychain, make sure it's still in good stage UnlockKeyChain(); LockKeyChain(); } }