Salmon/Salmon.Model/Monitor/Software.cs
2024-04-11 21:30:36 +02:00

72 lines
1.6 KiB
C#

using Salmon.Core.Cliff;
using System.Diagnostics;
using Salmon.Core;
namespace Salmon.Model.Monitor;
public class Software
: Element
{
[PersistentField]
public DateTime? LastStart { get; set; } = DateTime.Now;
[PersistentField]
public bool? Online { get; set;} = true;
[PersistentField]
public int? ProcessId { get; set; }
[PersistentField]
public string? ProcessArguments { get; set; }
[PersistentField]
public string? ProcessUser { get; set; }
[PersistentField]
public string? MachineName { get; set; }
[PersistentField]
public string? ExecutablePath { get; set; }
[PersistentField]
public string? WorkingPath { get; set; }
protected Software()
{
}
public Software(string identifier)
: base(identifier)
{
}
public static Software FromLocal()
{
var mypath = Environment.ProcessPath;
return FromLocal(Helper.CreateIdFrom(Helper.GetMachineId(), mypath));
}
public static Software FromLocal(string id)
{
var currentProcess = Process.GetCurrentProcess();
var processPath = Environment.ProcessPath;
var soft = new Software(id)
{
ShortName = System.AppDomain.CurrentDomain.FriendlyName,
LongName = $"{Environment.MachineName}:{processPath}",
MachineName = System.Environment.MachineName,
ProcessId = currentProcess.Id,
ExecutablePath = processPath,
WorkingPath = Directory.GetCurrentDirectory(),
LastStart = currentProcess.StartTime
};
return soft;
}
}