首次代码提交
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Linux 日志删除助手
|
||||
在 UOS LiveCD 环境中运行,帮助用户快速清理磁盘空间
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
|
||||
# 添加当前目录到 Python 路径
|
||||
current_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
if current_dir not in sys.path:
|
||||
sys.path.insert(0, current_dir)
|
||||
|
||||
from PyQt5.QtWidgets import QApplication, QMessageBox
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtGui import QFont
|
||||
|
||||
from utils import check_sudo_needs_password, get_sudo_password, verify_sudo_password
|
||||
from gui.main_window import MainWindow
|
||||
from gui.sudo_dialog import SudoDialog
|
||||
|
||||
|
||||
def check_environment():
|
||||
"""检查运行环境"""
|
||||
# 检查是否为 Linux 系统
|
||||
if sys.platform != 'linux':
|
||||
QMessageBox.warning(
|
||||
None,
|
||||
"环境警告",
|
||||
"本工具设计用于 Linux 系统,\n"
|
||||
"当前运行在非 Linux 环境中,部分功能可能无法正常工作。"
|
||||
)
|
||||
|
||||
# 检查是否有 root 权限或 sudo
|
||||
if os.geteuid() != 0:
|
||||
if check_sudo_needs_password():
|
||||
return True # 需要密码,稍后会提示
|
||||
else:
|
||||
# sudo 不需要密码,可以直接使用
|
||||
return True
|
||||
|
||||
return True # 已经是 root
|
||||
|
||||
|
||||
def get_sudo_access():
|
||||
"""获取 sudo 权限"""
|
||||
# 检查是否已经是 root
|
||||
if os.geteuid() == 0:
|
||||
return None # 不需要密码
|
||||
|
||||
# 检查 sudo 是否需要密码
|
||||
if not check_sudo_needs_password():
|
||||
return None # 不需要密码
|
||||
|
||||
# 需要密码,显示密码输入对话框
|
||||
dialog = SudoDialog()
|
||||
|
||||
if dialog.exec_() == SudoDialog.Accepted:
|
||||
password = dialog.get_password()
|
||||
|
||||
# 验证密码
|
||||
if verify_sudo_password(password):
|
||||
return password
|
||||
else:
|
||||
QMessageBox.critical(
|
||||
None,
|
||||
"密码错误",
|
||||
"sudo 密码不正确,程序将退出。"
|
||||
)
|
||||
return None
|
||||
else:
|
||||
# 用户取消
|
||||
return None
|
||||
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
# 设置高 DPI 支持
|
||||
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)
|
||||
QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
|
||||
|
||||
# 创建应用
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
# 设置应用样式
|
||||
app.setStyle('Fusion')
|
||||
|
||||
# 设置默认字体
|
||||
font = QFont()
|
||||
font.setPointSize(10)
|
||||
app.setFont(font)
|
||||
|
||||
# 检查环境
|
||||
if not check_environment():
|
||||
sys.exit(1)
|
||||
|
||||
# 获取 sudo 权限
|
||||
sudo_password = get_sudo_access()
|
||||
|
||||
# 如果需要密码但没有提供,且不是 root,则退出
|
||||
if sudo_password is None and os.geteuid() != 0:
|
||||
if check_sudo_needs_password():
|
||||
sys.exit(0)
|
||||
|
||||
# 创建主窗口
|
||||
window = MainWindow(sudo_password)
|
||||
window.show()
|
||||
|
||||
# 启动时自动显示分区选择对话框
|
||||
window.switch_partition()
|
||||
|
||||
# 运行应用
|
||||
sys.exit(app.exec_())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user