本网站主要是放置一些个人的家庭信息和学习资源,方便自己和家人的查询和学习,此外也放置了一些自己常用的网络视频方便自己和家人浏览。

电脑常识

当前位置:首页 > 电脑常识

使用python文件对网站源码进行全站修改的指令

这是我使用的一个使用python对网站全站源码进行全站修改的指令

这是我使用的一个使用python对网站全站源码进行全站修改的指令

import os

class YzmToLysModifier:
    def __init__(self, folder_path):
        self.folder_path = folder_path
   
    def batch_replace_names(self):
        """第一步:重命名文件和文件夹,将yzm替换为lys"""
        print("=== 开始第一步:重命名文件和文件夹 ===")
       
        # 遍历所有文件夹和文件(深度优先)
        for root, dirs, files in os.walk(self.folder_path, topdown=False):  # topdown=False 确保先处理子文件夹
           
            # 1. 处理当前文件夹下的子文件夹名
            for dir_name in dirs:
                old_dir_path = os.path.join(root, dir_name)
                new_dir_name = dir_name.replace("yzm", "lys")
                if new_dir_name != dir_name:
                    new_dir_path = os.path.join(root, new_dir_name)
                    try:
                        os.rename(old_dir_path, new_dir_path)  # 重命名文件夹
                        print(f"重命名文件夹: {old_dir_path} -> {new_dir_path}")
                    except Exception as e:
                        print(f"重命名文件夹失败 {old_dir_path}: {str(e)}")
           
            # 2. 处理当前文件夹下的文件名
            for file_name in files:
                old_file_path = os.path.join(root, file_name)
                new_file_name = file_name.replace("yzm", "lys")
                if new_file_name != file_name:
                    new_file_path = os.path.join(root, new_file_name)
                    try:
                        os.rename(old_file_path, new_file_path)  # 重命名文件
                        print(f"重命名文件: {old_file_path} -> {new_file_path}")
                    except Exception as e:
                        print(f"重命名文件失败 {old_file_path}: {str(e)}")
       
        print("第一步完成!\n")
   
    def replace_file_contents_step1(self):
        """第二步:替换文件内容中的文本(YzmCMS相关标识)"""
        print("=== 开始第二步:替换文件内容中的文本(YzmCMS相关标识) ===")
       
        # 定义替换规则
        replacements = [
            ('免费又好用的CMS建站系统,就选YzmCMS', '方便于自我操作的个人网站系统,就进星怀蓝梦!'),
            ('yzm_', 'lys_'),
            ('yzm-', 'lys-'),
            ('yzm.', 'lys.'),
            ('YZM', 'LYS'),
            ('yzmphp', 'lysphp'),
            ('yzmcms_', 'lys_'),
            ('YZMPHP', 'LYSPHP'),
            ('YzmCMS', 'LysCMS'),
            ('YZMCMS', 'LYSCMS'),
            ('袁志蒙', '李依朔'),
            ('YuanZhiMeng', 'LiYiShuo'),
            ('WWW.YZMCMS.COM', 'WWW.PPPABC.COM'),
            ('www.yzmcms.com', 'www.pppabc.com'),
            ('214243830', '37810188'),
            ('yuanzhimeng', 'liyishuo'),
            # 将编码内容改为明文显示
            ('base64_decode(\'WXptQ01T5YaF5a65566h55CG57O757uf\')', "'LysCMS内容管理系统'"),  # 直接替换为明文
            ('WXptQ01T5YaF5a65566h55CG57O757uf', 'LysCMS内容管理系统'),  # 直接替换为明文
            ('PCEtLSBQb3dlcmVkIEJ5IFl6bUNNU+WGheWuueeuoeeQhuezu+e7nyAgLS0+', '<!-- Powered By LysCMS内容管理系统  -->'),  # 直接替换为明文
            ('UG93ZXJlZCUyMEJ5JTIwWXptQ01TJUU1JTg2JTg1JUU1JUFFJUI5JUU3JUFFJUExJUU3JTkwJTg2JUU3JUIzJUJCJUU3JUJCJTlGJTIwLSUyMGh0dHAlM0ElMkYlMkZ3d3cueXptY21zLmNvbQ==', 'Powered By LysCMS内容管理系统 - http://www.pppabc.com'),  # 直接替换为明文
            ('value="yzmcms"', 'value="lyscms"'),
            ("'yzmcms'", "'lyscms'")
        ]

        # 遍历目录中的所有文件
        processed_count = 0
        for root, dirs, files in os.walk(self.folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                try:
                    # 读取文件内容
                    with open(file_path, 'r', encoding='utf-8') as f:
                        content = f.read()
                   
                    original_content = content
                    # 执行替换
                    for old_text, new_text in replacements:
                        content = content.replace(old_text, new_text)
                   
                    # 如果内容有变化,则写回文件
                    if content != original_content:
                        with open(file_path, 'w', encoding='utf-8') as f:
                            f.write(content)
                        processed_count += 1
                        print(f"已处理: {file_path}")
                except Exception as e:
                    print(f"处理失败 {file_path}: {str(e)}")
       
        print(f"第二步完成!共处理了 {processed_count} 个文件\n")
   
    def replace_file_contents_step2(self):
        """第三步:修改后台管理路径相关配置"""
        print("=== 开始第三步:修改后台管理路径相关配置 ===")
       
        # 定义替换规则
        replacements = [
            ("//加载全局函数库\nlys_base::load_sys_func('global');", "// 定义后台登录地址 xxxx.com/新的地址\ndefine('LYS_ADMIN', 'admin');\n\n//加载全局函数库\nlys_base::load_sys_func('global');"),
            ("U('admin/", "U(LYS_ADMIN.'/"),
            ("lys_base::load_controller('common', 'admin', 0);", "lys_base::load_controller('common', LYS_ADMIN, 0);"),
            ("<?php include $this->admin_tpl('meta','admin');?>", "<?php include $this->admin_tpl('meta',LYS_ADMIN);?>"),
            ("<?php lys_base::load_common('function/function.php', 'admin'); ?>", "<?php lys_base::load_common('function/function.php', LYS_ADMIN); ?>"),
            ("lys_base::load_common('lib/content_form'.EXT, 'admin');", "lys_base::load_common('lib/content_form'.EXT, LYS_ADMIN);"),
            ("lys_base::load_common('lib/update'.EXT, 'admin');", "lys_base::load_common('lib/update'.EXT, LYS_ADMIN);"),
            ("<?php include $this->admin_tpl('meta', 'admin');?>", "<?php include $this->admin_tpl('meta', LYS_ADMIN);?>"),
            ("<?php include $this->admin_tpl('footer', 'admin');?>", "<?php include $this->admin_tpl('footer', LYS_ADMIN);?>"),
            ("lys_base::load_common('function/function.php', 'admin');", "lys_base::load_common('function/function.php', LYS_ADMIN);"),
            ("<?php include $this->admin_tpl('footer','admin');?>", "<?php include $this->admin_tpl('footer',LYS_ADMIN);?>"),
            ("lys_base::load_common('lib/sql'.EXT, 'admin');", "lys_base::load_common('lib/sql'.EXT, LYS_ADMIN);"),
            ("lys_base::load_common('lib/module_api'.EXT, 'admin');", "lys_base::load_common('lib/module_api'.EXT, LYS_ADMIN);"),
            ("lys_base::load_common('lib/sql'.EXT, 'admin');", "lys_base::load_common('lib/sql'.EXT, LYS_ADMIN);"),
            ("lys_base::load_model('content_model', 'admin', 0)", "lys_base::load_model('content_model', LYS_ADMIN, 0)"),
            ("if(ROUTE_M =='admin' && ROUTE_C =='index' && ROUTE_A =='login') {", "if(ROUTE_M ==LYS_ADMIN && ROUTE_C =='index' && ROUTE_A =='login') {"),
            ("APP_PATH.'admin'.DIRECTORY_SEPARATOR.'view'.DIRECTORY_SEPARATOR.'public_home.html';", "APP_PATH.LYS_ADMIN.DIRECTORY_SEPARATOR.'view'.DIRECTORY_SEPARATOR.'public_home.html';"),
            ("if(ROUTE_M =='admin' && ROUTE_C =='index' && in_array(ROUTE_A, array('login', 'init'))) return true;", "if(ROUTE_M ==LYS_ADMIN && ROUTE_C =='index' && in_array(ROUTE_A, array('login', 'init'))) return true;")
        ]

        # 遍历目录中的所有文件
        processed_count = 0
        for root, dirs, files in os.walk(self.folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                try:
                    # 读取文件内容
                    with open(file_path, 'r', encoding='utf-8') as f:
                        content = f.read()
                   
                    original_content = content
                    # 执行替换
                    for old_text, new_text in replacements:
                        content = content.replace(old_text, new_text)
                   
                    # 如果内容有变化,则写回文件
                    if content != original_content:
                        with open(file_path, 'w', encoding='utf-8') as f:
                            f.write(content)
                        processed_count += 1
                        print(f"已处理: {file_path}")
                except Exception as e:
                    print(f"处理失败 {file_path}: {str(e)}")
       
        print(f"第三步完成!共处理了 {processed_count} 个文件\n")
   
    def replace_index_class_file(self):
        """第四步:替换index.class.php文件的内容"""
        print("=== 开始第四步:替换index.class.php文件的内容 ===")
       
        # 目标文件路径
        target_file = os.path.join(self.folder_path, "application", "admin", "controller", "index.class.php")
       
        # 新的文件内容(直接嵌入到脚本中,避免依赖外部文件)
        new_content = """<?php
defined('IN_LYSPHP') or exit();
lys_base::load_controller('common', ROUTE_M, 0);

class index extends common 
{
    // 初始化后台首页
    public function init() 
    {
        $total = D('guestbook')->field('id')->where(['replyid'=>'0','siteid'=>self::$siteid,'isread'=>'0'])->total();
        include $this->admin_tpl('index');
    }

    // 登录处理
    public function login() 
    {
        if(is_post()) 
        {
            // 验证码校验
            if(empty($_SESSION['code']) || strtolower($_POST['code'])!=$_SESSION['code'])
                return_json(['status'=>0,'message'=>L('code_error')]);
            
            // 用户名格式校验
            $_POST['username'] = trim($_POST['username']);
            if(!is_username($_POST['username'])) return_json(['status'=>0,'message'=>L('user_name_format_error')]);
            
            // 管理员身份验证
            $res = M('admin')->check_admin($_POST['username'], password($_POST['password']));
            return_json($res['status'] ? 
                ['status'=>1,'message'=>L('login_success'),'url'=>U('init')] : $res);
        }
        $this->_login();  // 显示登录页面
    }

    // 退出登录
    public function public_logout() 
    {
        unset($_SESSION['adminid'], $_SESSION['adminname'], $_SESSION['roleid'], $_SESSION['admininfo']);
        showmsg(L('you_have_safe_exit'), U('login'), 1);
    }

    // 后台首页统计信息
    public function public_home() 
    {
        $tpl = APP_PATH.LYS_ADMIN.'/view/public_home.html';
        if(!is_file($tpl)) $this->_force_logout();
        
        // 获取各类统计数量
        $count = [
            D('all_content')->where(['siteid'=>self::$siteid])->total(),  // 内容总数
            D('module')->total(),  // 模块总数
            D('member')->total(),  // 会员总数
            D('admin')->total()    // 管理员总数
        ];
        
        ob_start();
        include $this->admin_tpl('public_home');
        echo ob_get_clean();
    }

    // 清除错误日志(仅限超级管理员)
    public function public_clear_log() 
    {
        if($_SESSION['roleid'] != 1) return_json(['status'=>0,'message'=>'此操作仅限于超级管理员!']);
        if(is_file(LYSPHP_PATH.'cache/error_log.php') && !@unlink(LYSPHP_PATH.'cache/error_log.php'))
            return_json(['status'=>0,'message'=>L('operation_failure')]);
        
        return_json(['status'=>1,'message'=>L('operation_success')]);
    }

    // 锁屏功能
    public function public_lock_screen() 
    {
        $_SESSION['lys_lock_screen'] = 1;
        return_json(['status'=>1,'message'=>L('operation_success')]);
    }

    // 解锁屏幕
    public function public_unlock_screen() 
    {
        $res = M('admin')->check_admin($_SESSION['adminname'], password($_POST['password']));
        if(!$res['status']) return_json($res);
        
        $_SESSION['lys_lock_screen'] = 0;
        return_json(['status'=>1,'message'=>L('login_success')]);
    }

    // 强制退出(私有方法)
    private function _force_logout()
    {
        session_destroy();
        echo '<script>window.top.location="'.U('login').'"</script>';
        exit;
    }

    // 显示登录页面(私有方法)
    private function _login()
    {
        ob_start();
        include $this->admin_tpl('login');
        echo ob_get_clean();
    }
}
"""
       
        try:
            # 写入新内容到文件
            with open(target_file, 'w', encoding='utf-8') as f:
                f.write(new_content)
            print(f"已成功替换文件: {target_file}")
        except Exception as e:
            print(f"替换文件失败 {target_file}: {str(e)}")
   
    def create_ht_file(self):
        """第五步:创建ht.php文件到网站根目录"""
        print("=== 开始第五步:创建ht.php文件到网站根目录 ===")
       
        # 目标文件路径
        target_file = os.path.join(self.folder_path, "ht.php")
       
        # ht.php文件内容(直接嵌入到脚本中)
        ht_content = """<?php
/*
 * 本文件为修改后台登录地址专用文件,将该文件夹放在网站根目录,修改applicaiton/lys文件夹,改为你想要的文件夹名,
 * 第一次改后台地址时,xxx.com/ht.php运行该文件按需填写即可,
 * 如果改了一次还想再改后台,则需要将操作部分'lys'修改为你上一次修改后的地址
 */
header('content-type:text/html;charset=utf-8');
set_time_limit(0);

define('APP_DEBUG', 0);
define('LYSPHP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
require LYSPHP_PATH . 'lysphp' . DIRECTORY_SEPARATOR . 'lysphp.php';

lys_base::load_sys_class("application", "", 0);
lys_base::load_sys_class("debug", "", 0);
lys_base::load_sys_class("db_factory", "", 0);
$db = D('admin');

$style = <<<STYLE
<title>修改后台登录地址</title>
<style>
    .formbox {
        width: 520px;
        margin: 60px auto 0;
        border: 1px solid #2196F3;
        padding: 10px;
    }
    .formbox h4 {
        margin-bottom: 20px;
        text-align: center;
        color: #03A9F4;
        border-bottom: 1px solid #dfdfdf;
        padding-bottom: 5px;
        padding-top: 5px;
    }
    .btn {
        display: flex;
    }
    .btn button {
        display: block;
        text-align: center;
        width: 200px;
        background-color: #2196F3;
        color: #fff;
        border: none;
        outline: 0;
        padding: 10px 0;
        font-size: 16px;
        cursor: pointer;
        margin-left: 113px;
    }
    .formbox .li {
        display: flex;
        margin-bottom: 8px;
    }
    .formbox .li input[type="text"] {
        border: 1px solid #383838;
        height: 26px;
        flex-grow: 0.4;
    }
    .formbox .li span {
        width: 113px;
    }
    *, *::after, *::before {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    input[type="text"]:focus {
        outline: none;
        box-shadow: 0px 0px 2px rgba(0,188,212,0.6);
    }
    .ok-res {
        text-align: center;
        padding-top: 50px;
        font-size: 16px;
        color: #F44336;
    }
    .formbox .p1 {
        font-size: 14px;
        margin-bottom: 10px;
        color: #607D8B;
    }
</style>
STYLE;

echo $style;

if (isset($_POST['dosubmit'])) {
    $db = D('admin');
    $backend = isset($_POST['backend']) ? $_POST['backend'] : 'lys';  // 修改后的路径
    $oldbackend = isset($_POST['oldbackend']) ? $_POST['oldbackend'] : 'admin';  // 修改前的路径
    
    if ($backend == '' || $oldbackend == '') {
        exit('原路径和修改路径不能为空!');
    }

    $sql = "UPDATE `lys_menu` SET `m`='{$backend}' WHERE `m` ='{$oldbackend}';";
    $sql = rtrim(trim($sql), ';');
    $sqls = array(0 => $sql);
    
    array_walk($sqls, function($sqls) use(&$db) {
        $db->query($sqls);
    });

    $f_path = LYSPHP_PATH . 'lysphp' . DIRECTORY_SEPARATOR . 'lysphp.php';
    $stra = "define('LYS_ADMIN', 'lys')";//操作部分
    $strb = "define('LYS_ADMIN', '".$backend."')";
    file_put_contents($f_path, str_replace($stra, $strb, file_get_contents($f_path)));
    
    echo '<div class="ok-res">后台路径修改成功!新的后台登录地址为:xxx.com/'.$backend.'</div>
          <div style="text-align:center;margin-top:10px;">请记得删除本文件!</div>';
}
?>

<div class="formbox">
    <h4>星怀蓝梦修改后台登录地址</h4>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
        <p class="p1">首先将application/目录下后台模块文件夹修改</p>
        <input type="hidden" value="1" name="dosubmit">
        <div class="li">
            <span>原后台路径</span>
            <input type="text" name="oldbackend">
        </div>
        <div class="li">
            <span>新后台路径</span>
            <input type="text" name="backend">
        </div>
        <div class="li btn">
            <button type="submit">确定</button>
        </div>
    </form>
</div>
"""
       
        try:
            # 检查目标文件是否已存在
            if os.path.exists(target_file):
                print(f"文件已存在,将覆盖: {target_file}")
           
            # 写入文件
            with open(target_file, 'w', encoding='utf-8') as f:
                f.write(ht_content)
           
            print(f"已成功创建文件: {target_file}")
            print("注意:此文件用于修改后台登录地址,使用后请及时删除!")
           
        except Exception as e:
            print(f"创建文件失败 {target_file}: {str(e)}")
       
        print("第五步完成!\n")
   
    def run_all_modifications(self):
        """执行所有修改步骤"""
        print(f"开始对目录 {self.folder_path} 进行修改...\n")
       
        # 第一步:重命名文件和文件夹
        self.batch_replace_names()
       
        # 第二步:替换文件内容中的文本
        self.replace_file_contents_step1()
       
        # 第三步:修改后台管理路径相关配置
        self.replace_file_contents_step2()
       
        # 第四步:替换index.class.php文件的内容
        self.replace_index_class_file()
       
        # 第五步:创建ht.php文件到网站根目录
        self.create_ht_file()
       
        print("=== 所有修改已完成! ===")
        print("修改总结:")
        print("1. 文件和文件夹重命名:yzm → lys")
        print("2. 内容替换:YzmCMS相关标识 → LysCMS")
        print("3. 后台路径配置:admin → LYS_ADMIN常量")
        print("4. 替换index.class.php文件内容")
        print("5. 创建ht.php文件:后台登录地址修改工具")


# ====================== 主程序 ======================
if __name__ == "__main__":
    # 配置参数
    folder_path = r"d:\phpstudy_pro\WWW\1\yzmcms7.5"  # 替换为实际文件夹路径
   
    # 创建修改器实例并执行修改
    modifier = YzmToLysModifier(folder_path)
    modifier.run_all_modifications()



相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

评论排行榜

热门标签