public void CalculateTest(double firstValue, double secondValue, double expected) { var calculator = new LogX(); var actualResult = calculator.Calculate(firstValue, secondValue); Assert.AreEqual(expected, actualResult); }
public static WindowsImpersonationContext targetRepositoryImpersonationContext = null;//SQLsecure 3.1 (Tushar)--Supporting windows auth for repository connection #region Helpers private static void startup() { // Initialize diagnostic logging. LogX.Initialize(); logX = new LogX("Idera.SQLsecure.UI.Console.Program"); logX.loggerX.Info("Console started at ", DateTime.Now.ToString()); }
public static string GetDiskSerialNumber() { var rd = ""; try { rd = HardwareInfo.GetDiskVolume(); } catch (Exception ex) { LogX.Error(ex); } return(rd); }
public static string GetMAC() { var rd = ""; try { rd = HardwareInfo.GetMacAddress(); } catch (Exception ex) { LogX.Error(ex); } return(rd); }
/// <summary> /// 获取系统内存大小 /// </summary> /// <returns>内存大小(单位M)</returns> public static int GetPhisicalMemory() { try { var memInfo = new HardwareInfo.MEMORYSTATUSEX(); memInfo.dwLength = (uint)Marshal.SizeOf(typeof(HardwareInfo.MEMORYSTATUSEX)); HardwareInfo.GlobalMemoryStatusEx(ref memInfo); var tm = memInfo.ullTotalPhys / 1024 / 1024; return((int)tm); } catch (Exception ex) { LogX.Error(ex); } try { var searcher = new ManagementObjectSearcher(); searcher.Query = new SelectQuery("Win32_PhysicalMemory ", "", new string[] { "Capacity" }); var collection = searcher.Get(); var em = collection.GetEnumerator(); long capacity = 0; while (em.MoveNext()) { var baseObj = em.Current; if (baseObj.Properties["Capacity"].Value != null) { try { capacity += long.Parse(baseObj.Properties["Capacity"].Value.ToString()); } catch { return(0); } } } return((int)(capacity / 1024 / 1024)); } catch (Exception ex) { LogX.Error(ex); } return(0); }
private static void startup(Utility.ProgramArgs programArgs, string args) { // Initialize diagnostic logging. if (programArgs.Valid) { LogX.Initialize(programArgs.TargetInstance.Replace(@"\", "$")); } else { LogX.Initialize(); } logX = new LogX("Idera.SQLsecure.Collector.Program"); // Log to event log that data loader is starting. AppLog.WriteAppEventInfo(SQLsecureEvent.DlInfoStartMsg, SQLsecureCat.DlStartCat, DateTime.Now.ToString(), args); logX.loggerX.Info("Collector started with parameters: ", args); }
/// <summary> 深拷贝数据 </summary> /// <typeparam name="T"> 数据源类型 </typeparam> /// <param name="data"> 数据源 </param> /// <returns> 拷贝后的新数据 默认返回 default(T) </returns> public static T DeepClone <T>(this T data) where T : class { if (data != null) { using (var memStream = new MemoryStream()) { try { new BinaryFormatter().Serialize(memStream, data); return(new BinaryFormatter().Deserialize(memStream) as T); } catch (Exception ex) { LogX.Error(ex); } } } return(default(T)); }
public static string GetIp() { string ip = string.Empty; try { ip = System.Net.Dns.GetHostAddresses(System.Net.Dns.GetHostName())[0].ToString(); //http://jira.op.ksyun.com/browse/YLYUN-5996?filter=12785 //在 System.Net.IPAddress.get_Address() //在 Yuanbo.ChssClient.InPatient.Model.YiZhuModelBaseVM.SetLock(Nullable`1 sdlx, Nullable`1 mxmodel) 位置 D:\Work\GitProject\HaaS\Yuanbo.ChssClient.InPatient\Model\YiZhuModelBaseVM.cs:行号 279 //在 Yuanbo.ChssClient.InPatient.ViewModel.HS.LinShiYiZhuVM.Query() 位置 D:\Work\GitProject\HaaS\Yuanbo.ChssClient.InPatient\ViewModel\HS\LinShiYiZhuVM.cs:行号 336 //在 Yuanbo.ChssClient.InPatient.ViewModel.HS.LinShiYiZhuVM.Load() 位置 D:\Work\GitProject\HaaS\Yuanbo.ChssClient.InPatient\ViewModel\HS\LinShiYiZhuVM.cs:行号 321 //ip = new System.Net.IPAddress(System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList[0].Address).ToString(); } catch (Exception ex) { LogX.Error(ex); } return(ip); }
static void Main(string[] args) { //for manual run (for developers) /*args = new string[4]; * args[0] = "-TargetInstance"; * args[1] = "SS_SQL_SECURE\\MSSQLSERVER2012"; * args[2] = "-Repository"; * args[3] = "SS_SQL_SECURE\\MSSQLSERVER2014";*/ string targetName = string.Empty; bool isOK = true; bool needToWriteFailedSnapshot = false; System.Diagnostics.Stopwatch swTotal = new System.Diagnostics.Stopwatch(); swTotal.Start(); try { // Initialize the data loader utility. string argsString = Utility.ProgramArgs.ArgsToString(args); // Parse the command line arguments. Utility.ProgramArgs programArgs = new Utility.ProgramArgs(args); if (string.IsNullOrEmpty(programArgs.EncryptedPassword)) { startup(programArgs, argsString); using (logX.m_logX.DebugCall()) { if (programArgs.Valid) { targetName = programArgs.TargetInstance; // Initialize and validate the repository. m_Repository = new Repository(programArgs.Repository, programArgs.RepositoryUser, programArgs.RepositoryPassword); if (m_Repository.IsValid) { // Check license. if (m_Repository.IsLicenseOk()) { Sql.Database.CreateApplicationActivityEventInRepository( m_Repository.ConnectionString, programArgs.TargetInstance, 0, Collector.Constants. ActivityType_Info, Collector.Constants. ActivityEvent_Start, "Starting snapshot collection for " + programArgs.TargetInstance); // Check if the target instance is registered in the Repository. if (m_Repository.IsTargetRegistered(programArgs.TargetInstance)) { // Retrieve target instance credentials from the repository. string server, sqlLogin, sqlPassword, sqlAuthTypeString, serverLogin, serverPassword, serverTypeString; int? port; ServerType serverType = ServerType.OnPremise; AuthType authType = AuthType.Null; if (m_Repository.GetTargetCredentials(programArgs.TargetInstance, out server, out port, out sqlLogin, out sqlPassword, out sqlAuthTypeString, out serverLogin, out serverPassword, out serverTypeString)) { serverType = Helper.ConvertSQLTypeStringToEnum(serverTypeString); authType = (AuthType)Enum.Parse(typeof(AuthType), sqlAuthTypeString); m_targetUserName = serverLogin; m_targetUserPassword = serverPassword; // SQLSecure 3.1 (Biresh Kumar Mishra) - Add Support for Azure VM if (serverType == ServerType.SQLServerOnAzureVM) { m_SQLServerOnAzureVM_FullName = server; if (server.IndexOf(".") != -1) { m_SQLServerOnAzureVM_DomainName = server.Substring(server.IndexOf(".") + 1); server = server.Substring(0, server.IndexOf(".")); } } if (string.IsNullOrEmpty(serverLogin)) { // Only issue warning for this case Sql.Database.CreateApplicationActivityEventInRepository(m_Repository.ConnectionString, targetName, 0, Collector.Constants.ActivityType_Warning, Collector.Constants.ActivityEvent_Start, string.Format("No credentials specified for Operating System and Active Directory, using SQLsecure Collector user {0}", WindowsIdentity.GetCurrent().Name)); } if (string.IsNullOrEmpty(sqlLogin)) { throw new Exception("No credentials specified for collecting SQL Server security."); } if (serverType == ServerType.OnPremise) { GetIdentitiesForImpersonation(sqlLogin, sqlPassword, authType, serverLogin, serverPassword); } else if (serverType == ServerType.AzureSQLDatabase && authType == AuthType.W) { //AuthenticationResult authenticationResult= AzureDatabase.GetConnectionToken(serverLogin, serverPassword); } //SQLsecure 3.1 (Tushar)--Support for Azure VM. else if (serverType == ServerType.SQLServerOnAzureVM) { GetIdentitiesForImpersonation(sqlLogin, sqlPassword, authType, serverLogin, serverPassword); } } Program.ImpersonationContext wi; // Initialize and validate the target. System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); if (serverType == ServerType.OnPremise) { wi = SetTargetSQLServerImpersonationContext(); m_Target = new Target(programArgs.TargetInstance, m_Repository); RestoreImpersonationContext(wi); } else if (serverType == ServerType.AzureSQLDatabase) { m_Target = new Target(programArgs.TargetInstance, m_Repository); } //SQLsecure 3.1 (Tushar)--Support for Azure VM. else if (serverType == ServerType.SQLServerOnAzureVM) { wi = SetTargetSQLServerImpersonationContext(); m_Target = new Target(programArgs.TargetInstance, m_Repository); RestoreImpersonationContext(wi); } sw.Stop(); logX.loggerX.Verbose("TIMING - Time to initialize and validate target = " + sw.ElapsedMilliseconds.ToString() + " msec"); if (m_Target.IsValid) { if (serverType == ServerType.OnPremise) { wi = SetTargetImpersonationContext(); // Load the permissions data. m_Target.LoadData(programArgs.AutomatedRun); RestoreImpersonationContext(wi); } else if (serverType == ServerType.AzureSQLDatabase) { //SQLsecure 3.1 (Tushar)--Passing the server name becasue we are not creating server object for azure DB. m_Target.LoadDataAzureDB(programArgs.AutomatedRun, server); } //SQLsecure 3.1 (Tushar)--Support for Azure VM. else if (serverType == ServerType.SQLServerOnAzureVM) { wi = SetTargetImpersonationContext(); m_Target.LoadDataForAzureVM(programArgs.AutomatedRun); RestoreImpersonationContext(wi); } } else { needToWriteFailedSnapshot = true; logX.loggerX.Error("ERROR - target instance is not valid"); Sql.Database.CreateApplicationActivityEventInRepository( m_Repository.ConnectionString, programArgs.TargetInstance, 0, Constants.ActivityType_Error, Constants.ActivityEvent_Error, "Target " + programArgs.TargetInstance + " could not be found"); AppLog.WriteAppEventError(SQLsecureEvent.DlErrOpenTargetConnectionFailed, SQLsecureCat.DlValidationCat, "Target " + programArgs.TargetInstance + " could not be found"); isOK = false; } } else { needToWriteFailedSnapshot = true; logX.loggerX.Error("ERROR - target instance is not registered"); Sql.Database.CreateApplicationActivityEventInRepository( m_Repository.ConnectionString, programArgs.TargetInstance, 0, Collector.Constants.ActivityType_Error, Collector.Constants.ActivityEvent_Error, "Target " + programArgs.TargetInstance + " is not registered"); AppLog.WriteAppEventError(SQLsecureEvent.DlErrTargetNotRegistered, SQLsecureCat.DlValidationCat, "Target " + programArgs.TargetInstance + " is not registered"); isOK = false; } if (needToWriteFailedSnapshot) { int snapshotID = m_Repository.CreateErrorSnapshot(programArgs.TargetInstance); if (snapshotID != 0) { Sql.Database.UpdateRepositoryRegisteredServerTable( m_Repository.ConnectionString, snapshotID, Constants.StatusError); } } } else { logX.loggerX.Error("ERROR - license check failed."); Sql.Database.CreateApplicationActivityEventInRepository( m_Repository.ConnectionString, programArgs.TargetInstance, 0, Collector.Constants. ActivityType_Error, Collector.Constants. ActivityEvent_Error, "The SQLsecure Collector was unable to aquire a valid license"); AppLog.WriteAppEventInfo(SQLsecureEvent.DlErrNoLicense, SQLsecureCat.DlValidationCat); isOK = false; } } else { logX.loggerX.Error("ERROR - SQLsecure Repository is invalid."); isOK = false; } } else // Invalid args display usage { if (logX == null) { logX = new LogX("Idera.SQLsecure.Collector.Program"); } logX.loggerX.Error("ERROR: Failed to parse the arguments"); Console.WriteLine(Constants.CopyrightMsg); Console.WriteLine(Constants.UsageMsg); isOK = false; } } } else //handle output of the encrypted password { Console.WriteLine(string.Format("Encrypted Password: {0}", programArgs.EncryptedPassword)); } } catch (Exception ex) { string msg = "Collection Error: " + ex.Message; if (m_Repository != null && m_Repository.IsValid) { Sql.Database.CreateApplicationActivityEventInRepository(m_Repository.ConnectionString, targetName, 0, Collector.Constants.ActivityType_Error, Collector.Constants.ActivityEvent_Error, msg); } AppLog.WriteAppEventError(SQLsecureEvent.DlErrOpenTargetConnectionFailed, SQLsecureCat.DlValidationCat, "Target " + targetName + " " + ex.Message); if (logX == null) { logX = new LogX("Idera.SQLsecure.Collector.Program"); } logX.loggerX.Error(msg); } finally { // Undo the impersonation if (m_targetImpersionationContext != null) { m_targetImpersionationContext.Undo(); m_targetImpersionationContext.Dispose(); } if (m_targetSQLServerImpersionationContext != null) { m_targetSQLServerImpersionationContext.Undo(); m_targetSQLServerImpersionationContext.Dispose(); } if (TargetServer != null) { TargetServer.RealUnbind(); } } swTotal.Stop(); logX.loggerX.Verbose("TIMING - Total Time for Collector = " + swTotal.ElapsedMilliseconds.ToString() + " msec"); // Exiting utility, do shutdown processing. shutdown(); Environment.ExitCode = isOK ? 0 : 1; }
public static bool CanConnectServer(string su) { if (string.IsNullOrWhiteSpace(su)) { return(false); } lock (ConnectServerLockData) { // 包含且在10s成功连接,直接认为正常联通中 if (Servers.ContainsKey(su)) { var lt = Servers[su]; if (lt != null) { var ts = (DateTime.Now - lt.Value).TotalSeconds; if (ts < 10) { return(true); } } } else { Servers.Add(su, null); } } bool isconnet = false; var serverurl = su; if (serverurl.Contains("?")) { serverurl += "&r=" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); } else { serverurl += "?r=" + DateTime.Now.ToString("yyyyMMddHHmmssfff"); } var request = WebRequest.Create(serverurl) as HttpWebRequest; request.Accept = ("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9"); request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); request.Method = "GET"; request.ServicePoint.Expect100Continue = false; request.UserAgent = "ConnectTest"; request.Timeout = 20000; request.AllowAutoRedirect = true; try { var s = request.GetResponse() as HttpWebResponse; if (s != null) { isconnet = s.StatusCode == HttpStatusCode.OK; s.Close(); lock (ConnectServerLockData) { if (isconnet) { Servers[su] = DateTime.Now; } else { Servers[su] = null; } } } } catch (Exception ex) { LogX.Error(ex); Debug.WriteLine(ex.Message + " => " + ex.StackTrace); } return(isconnet); }
private static void StartServer() { ILogX log = null; try { Console.Title = "[Yuanfeng] Log UDP Server v1.0"; Console.WriteLine("正在启动日志服务..."); log = LogX.NewLogger(typeof(Program)); IUdpServerX server = new SimpleUdpServer(); server.Create(8000, new OnReceivedMsgDelegate((string ipaddr, object obj) => { UdpMsg msg = obj as UdpMsg; switch (msg.Level) { case Level.DEBUG: log.Debug(msg.Logger, msg.Message, msg.Exception); break; case Level.FATAL: log.Fatal(msg.Logger, msg.Message, msg.Exception); break; case Level.INFO: log.Info(msg.Logger, msg.Message, msg.Exception); break; case Level.ERROR: log.Error(msg.Logger, msg.Message, msg.Exception); break; default: break; } Console.Write("[" + ipaddr + "]"); Console.Write(msg.Message + ","); Console.WriteLine(msg.Exception); })); Console.WriteLine("日志服务启动成功.."); Console.WriteLine(string.Format("服务器IP地址:{0},端口:8000", server.IpAddr)); Console.WriteLine("操作命令:\n1、exit-关闭日志服务\n2、list-客户端列表"); Console.Write("<yuanfeng.udpserver>"); new Thread(new ThreadStart(() => { while (true) { string line = Console.ReadLine(); if ("exit".Equals(line)) { server.Close(); break; } else if ("list".Equals(line)) { foreach (var item in server.Clients) { Console.WriteLine(item); } } else if ("clear".Equals(line)) { Console.Clear(); } Console.Write("<yuanfeng.udpserver>"); } })).Start(); } catch (Exception exception) { log.Error(exception); throw new Exception("启动服务失败", exception); } }