日志系统2

This commit is contained in:
2026-02-05 01:43:30 +08:00
parent 1bfa4cf1f3
commit ba22066a23
6 changed files with 63 additions and 46 deletions

View File

@@ -2,12 +2,14 @@ using CosmosFtpServer;
using System;
using System.Collections.Generic;
using System.IO;
using CMLeonOS.Logger;
namespace CMLeonOS
{
public class FileSystem
{
private string currentDirectory;
private static CMLeonOS.Logger.Logger _logger = CMLeonOS.Logger.Logger.Instance;
public FileSystem()
{
@@ -24,9 +26,9 @@ namespace CMLeonOS
if (string.IsNullOrEmpty(path))
{
currentDirectory = @"0:\";
_logger.Info("FileSystem", "Changed to root directory");
return;
}
string fullPath = GetFullPath(path);
try
@@ -34,15 +36,16 @@ namespace CMLeonOS
if (Directory.Exists(fullPath))
{
currentDirectory = fullPath;
_logger.Info("FileSystem", $"Changed directory to: {path}");
}
else
{
Console.WriteLine($"Directory not found: {path}");
_logger.Warning("FileSystem", $"Directory not found: {path}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error changing directory: {ex.Message}");
_logger.Error("FileSystem", $"Error changing directory: {ex.Message}");
}
}
@@ -55,16 +58,16 @@ namespace CMLeonOS
if (!Directory.Exists(fullPath))
{
Directory.CreateDirectory(fullPath);
Console.WriteLine($"Directory created: {path}");
_logger.Info("FileSystem", $"Directory created: {path}");
}
else
{
Console.WriteLine($"Directory already exists: {path}");
_logger.Warning("FileSystem", $"Directory already exists: {path}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error creating directory: {ex.Message}");
_logger.Error("FileSystem", $"Error creating directory: {ex.Message}");
}
}
@@ -230,11 +233,11 @@ namespace CMLeonOS
{
// 创建或覆盖文件
File.WriteAllText(fullPath, content);
Console.WriteLine($"File created: {path}");
_logger.Info("FileSystem", $"File created: {path}");
}
catch (Exception ex)
{
Console.WriteLine($"Error creating file: {ex.Message}");
_logger.Error("FileSystem", $"Error creating file: {ex.Message}");
}
}
@@ -247,16 +250,16 @@ namespace CMLeonOS
if (File.Exists(fullPath))
{
File.WriteAllText(fullPath, content);
Console.WriteLine($"File written: {path}");
_logger.Info("FileSystem", $"File written: {path}");
}
else
{
Console.WriteLine($"File not found: {path}");
_logger.Warning("FileSystem", $"File not found: {path}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error writing file: {ex.Message}");
_logger.Error("FileSystem", $"Error writing file: {ex.Message}");
}
}

View File

@@ -5,6 +5,7 @@ using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using Sys = Cosmos.System;
using CMLeonOS.Logger;
namespace CMLeonOS
{
@@ -23,19 +24,16 @@ namespace CMLeonOS
private List<User> users;
public bool fixmode = Kernel.FixMode;
private User currentLoggedInUser;
private static CMLeonOS.Logger.Logger _logger = CMLeonOS.Logger.Logger.Instance;
public void ShowError(string error)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"{error}");
Console.ResetColor();
_logger.Error("UserSystem", error);
}
public void ShowSuccess(string message)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"{message}");
Console.ResetColor();
_logger.Success("UserSystem", message);
}
public static string HashPasswordSha256(string password)
@@ -59,6 +57,7 @@ namespace CMLeonOS
LoadUsers();
LoadHostname();
_logger.Success("UserSystem", "User system initialized successfully");
}
private void EnsureSysDirectoryExists()
@@ -267,6 +266,7 @@ namespace CMLeonOS
public void FirstTimeSetup()
{
_logger.Info("UserSystem", "Starting first time setup");
Console.WriteLine("====================================");
Console.WriteLine(" First Time Setup");
Console.WriteLine("====================================");
@@ -320,6 +320,7 @@ namespace CMLeonOS
users.Add(adminUser);
SaveUsers();
ShowSuccess("Admin user created successfully!");
_logger.Info("UserSystem", $"Admin user '{username}' created");
Console.WriteLine();
Console.WriteLine("Please set system hostname:");
@@ -338,6 +339,7 @@ namespace CMLeonOS
users[0].Hostname = hostname;
SaveHostname();
ShowSuccess($"Hostname set to: {hostname}");
_logger.Info("UserSystem", $"Hostname set to: {hostname}");
}
Console.WriteLine();
@@ -356,6 +358,7 @@ namespace CMLeonOS
}
catch (Exception ex)
{
_logger.Error("UserSystem", $"Error creating admin user: {ex.Message}");
ShowError($"Error creating admin user: {ex.Message}");
}
}
@@ -388,6 +391,7 @@ namespace CMLeonOS
public bool Login()
{
_logger.Info("UserSystem", "Starting login process");
Console.WriteLine("====================================");
Console.WriteLine(" System Login");
Console.WriteLine("====================================");
@@ -406,6 +410,7 @@ namespace CMLeonOS
useFixMode = true;
Console.WriteLine();
Console.WriteLine("Fix Mode Activated");
_logger.Warning("UserSystem", "Fix mode activated");
Console.Write("Enter fix code: ");
string fixCode = "";
@@ -434,10 +439,12 @@ namespace CMLeonOS
if (fixCode == "FixMyComputer")
{
Console.WriteLine("Fix mode enabled!");
_logger.Info("UserSystem", "Fix mode enabled with correct code");
}
else
{
Console.WriteLine("Invalid fix code. Exiting fix mode.");
_logger.Warning("UserSystem", "Invalid fix code provided");
useFixMode = false;
}
}
@@ -471,6 +478,7 @@ namespace CMLeonOS
if (foundUser == null)
{
ShowError("User not found.");
_logger.Warning("UserSystem", $"Login failed: User '{username}' not found");
return false;
}
@@ -482,10 +490,12 @@ namespace CMLeonOS
if (foundUser.Password != hashedInputPassword)
{
ShowError("Invalid password.");
_logger.Warning("UserSystem", $"Login failed: Invalid password for user '{username}'");
return false;
}
ShowSuccess("Login successful!");
_logger.Info("UserSystem", $"User '{username}' logged in successfully");
Console.Beep();
// 设置当前登录用户
@@ -501,12 +511,14 @@ namespace CMLeonOS
{
// 如果读取按键失败,使用普通登录
ShowError("Error reading key input. Using normal login.");
_logger.Error("UserSystem", "Error reading key input during login");
return false;
}
// 如果使用了修复模式返回true
if (useFixMode)
{
_logger.Info("UserSystem", "Login bypassed via fix mode");
return true;
}
@@ -515,6 +527,7 @@ namespace CMLeonOS
public bool AddUser(string args, bool isAdmin)
{
_logger.Info("UserSystem", $"Starting to add {(isAdmin ? "admin" : "user")}");
Console.WriteLine("====================================");
Console.WriteLine($" Add {(isAdmin ? "Admin" : "User")}");
Console.WriteLine("====================================");
@@ -536,6 +549,7 @@ namespace CMLeonOS
if (user.Username.ToLower() == username.ToLower())
{
ShowError($"Error: User '{username}' already exists.");
_logger.Warning("UserSystem", $"Add user failed: User '{username}' already exists");
return false;
}
}
@@ -556,11 +570,13 @@ namespace CMLeonOS
ShowSuccess($"{(isAdmin ? "Admin" : "User")} '{username}' created successfully!");
ShowSuccess("You shall restart the system to apply the changes.");
_logger.Info("UserSystem", $"{(isAdmin ? "Admin" : "User")} '{username}' created successfully");
return true;
}
catch (Exception ex)
{
_logger.Error("UserSystem", $"Error adding user: {ex.Message}");
ShowError($"Error adding user: {ex.Message}");
return false;
}
@@ -568,6 +584,7 @@ namespace CMLeonOS
public bool DeleteUser(string username)
{
_logger.Info("UserSystem", $"Starting to delete user '{username}'");
Console.WriteLine("====================================");
Console.WriteLine(" Delete User");
Console.WriteLine("====================================");
@@ -593,6 +610,7 @@ namespace CMLeonOS
if (foundUser == null)
{
ShowError($"Error: User '{username}' not found.");
_logger.Warning("UserSystem", $"Delete user failed: User '{username}' not found");
return false;
}
@@ -609,6 +627,7 @@ namespace CMLeonOS
if (foundUser.IsAdmin && adminCount <= 1)
{
ShowError("Error: Cannot delete the last admin user.");
_logger.Warning("UserSystem", "Delete user failed: Cannot delete the last admin user");
return false;
}
@@ -617,10 +636,12 @@ namespace CMLeonOS
users.Remove(foundUser);
SaveUsers();
ShowSuccess($"User '{username}' deleted successfully!");
_logger.Info("UserSystem", $"User '{username}' deleted successfully");
return true;
}
catch (Exception ex)
{
_logger.Error("UserSystem", $"Error deleting user: {ex.Message}");
ShowError($"Error deleting user: {ex.Message}");
return false;
}