zoukankan      html  css  js  c++  java
  • phpBB3.1和3.2

    闲逛看到一个帖子, phpBB3的论坛经常被机器人注册攻击, 要找人做拦截. 出于兴趣, 联系了一下.

    论坛是一个做健康养老调查的社会机构的, 版本3.1, 十年前我还在更新phpbb中文包的时候, 版本3.0.8吧, 现在最新的是3.2.x, 下来看了一下代码, 代码结构没变, 还是那么大咧咧乱哄哄, 功能上变化还是挺大的, 原先饱受诟病的的MOD改为extension了, 像joomla那样, 安装扩展可以不用修改论坛代码, 这样版本升级会容易很多, 不需要再把所有安装了的MOD都再patch一遍(或者按升级的patch, 把论坛自己patch一遍).

    这个论坛被机器人攻击的原因, 还是因为使用的是图形验证码, 这个对于现在的机器人来讲, 识别率已经很高了, 另外他们自己添加的email地址有效性验证没有加入到最终的注册提交环节, 对于机器人来说那就是畅通无阻了.

    遇到的一个问题是对style里面template的修改一直无法生效, 清空cache里面的文件也没用, 后来发现是一个后台配置在控制的, 在load confirguration里面有recompile stable template的选项, 这个设置成enabled就好了. 这选项当年肯定是用过的, 时间太长, 完全不记得了 :(

    升级至phpBB3.2的一些记录

    首先是 install模块

    执行URL和以前有很大变化, 不支持传统的 ?a=b 这样的参数格式了, 必须要用url rewrite的方式, 在phpBB3.2安装包的docs目录下, 有一个供参考的nginx配置文件 nginx.sample.conf , 但是这个只适用于安装在域名根目录下的phpBB, 如果你的phpBB是安装在子目录下, 那需要自己修改一下, 下面是我使用的conf供参考(里面混杂了两种wwwroot, 是因为我的php-fpm是从docker中启动的, 两边看到的wwwroot路径不一样.

    #user  nobody;
    worker_processes  1;
    
    error_log  logs/error.log;
    pid        logs/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        index         index.html index.htm index.php;
        default_type  application/octet-stream;
    
        sendfile        on;
        tcp_nopush      on;
    
        keepalive_timeout  65;
    
        gzip  on;
    
        server {
            listen       80;
            server_name  localhost;
    
            #access_log  logs/host.access.log  main;
    
            location ~ .php$ {
                root           /home/milton/WorkPHP/wwwroot;
                #fastcgi_pass   127.0.0.1:9000;
                fastcgi_pass   172.17.0.2:9000;
                fastcgi_index  index.php;
                #fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
                fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
                include        fastcgi_params;
            }
    
            location / {
                root   /home/milton/WorkPHP/wwwroot;
                index  index.html index.htm index.php;
            }
            
            # Correctly pass scripts for installer
            location /phpbb3.2/install/ {
                root   /home/milton/WorkPHP/wwwroot;
                index index.html index.php;
                # phpBB uses index.htm
                try_files $uri $uri/ @rewrite_installapp;
    
                # Pass the php scripts to fastcgi server specified in upstream declaration.
                location ~ .php(/|$) {
                    # Unmodified fastcgi_params from nginx distribution.
                    include fastcgi_params;
                    # Necessary for php.
                    fastcgi_split_path_info ^(.+.php)(/.*)$;
                    fastcgi_param PATH_INFO $fastcgi_path_info;
                    fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
                    fastcgi_param DOCUMENT_ROOT /var/www/html;
                    try_files $uri $uri/ /phpbb3.2/install/app.php$is_args$args;
                    fastcgi_pass   172.17.0.2:9000;
                }
            }
    
            location @rewrite_installapp {
                rewrite ^/phpbb3.2/(.*)$ /phpbb3.2/install/app.php/$1 last;
            }
    
        }
    }
    

    在执行 app.php/update 之后, 按提示进行升级.

    Cron Task 和 Text Reparser

    参考 https://www.phpbb.com/support/docs/en/3.2/kb/article/phpbb-32%2B-text-reparser/
    在phpBB3.2之后, 使用了新的bbcode格式, 旧的内容中的bbcode并不会在升级时一并转换成新格式, 而是在升级之后的日常运行中, 通过phpBB自身的cron任务来进行Text Reparse. 如果你的文章数量很多, 那么这个进程是很漫长的, 在期间如果有用户访问这些旧格式的帖子, 就会抛出 bbcode.php on line 121 错误. 如果想手动加快这个过程, 可以通过命令行执行 bin/phpbbcli.php 来进行

    $ php bin/phpbbcli.php reparser:reparse --ansi
    

    .这个命令会将所有包含bbcode的内容: post text, user signature, poll title, poll option, pm text, forum description都转换一遍. 15K个帖子的转换时间大概是4分钟, 速度还可以.

  • 相关阅读:
    源码实现 --> strcmp
    源码实现 --> strdel
    源码实现 --> strcpy
    SoC的Testbench中的简易bus_monitor(加入print函数)
    debian 安装后需做的几件事
    使用Perl合并文件
    一个简单的Verilog计数器模型
    Environment Modules简单使用
    Git push “fatal: Authentication failed ”
    使用SystemC进行硬件仿真
  • 原文地址:https://www.cnblogs.com/milton/p/9183321.html
Copyright © 2011-2022 走看看