六哥 发布的文章

根据Xiuno官方建议,本插件将审核提现、审核充值融合在了一起,功能与之相同。

适用环境 XiunoBBS 4.0.4

程序大小 93KB

本站完全免费,无后门,安装之后记得更改自己的收款码。

充值

在前台增加一个入口,用户扫码支付→输入金额、订单号等信息→提交申请→管理员查账并在后台审核该申请。个人用户可用于论坛积分的充值。
请输入图片描述

提现

用户可以直接在前台发出提现申请→填写账户信息→管理员将资金转账→批准/驳回申请

请输入图片描述

百度网盘下载 提取码:p4kv

原理是上传文件到百度云,大家也可以来个头脑风暴,比如利用闲置vps搭建离线下载到百度云?

【操作环境】

linux + python2 + mysql

【使用步骤】

1.安装百度网盘Python客户端

pip install bypy

2.授权bypy访问百度云

bypy info

运行上面的命令,把类似openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=XXXXX
的链接在浏览器打开
3.复制授权码到xshell按回车键
4.修改python备份模板代码(数据库名,用户名,密码,备份文件夹位置)
5.利用xftp上传python备份代码到服务器
6.利用定时任务(crontab)定期执行定时操作

python /home/backup/dbback.py

【python备份代码】

import os
import datetime
dbs = ['数据库名']
def dump(dbname):
    cmd = 'mysqldump -u用户名 -p数据库密码 %s| gzip > /home/backup/%s_' % (dbname, dbname)
    cmd += '`date +%Y%m%d_%H%M%S`.sql.gz'
    return os.system(cmd) == 0
def upload(dbname):
    cmd = 'bypy upload /home/backup/%s_' % dbname
    cmd += '`date +%Y%m%d_%H%M%S`.sql.gz'
    return os.system(cmd) == 0
for db in dbs:
    if not dump(db) or not upload(db):
        print '%s faild to backup database=%s' % (datetime.datetime.now(), db)
    else:
        print '%s success backup database=%s' % (datetime.datetime.now(), db)

特别感谢:
jianshu.com/p/2fe87d24434c
github.com/houtianze/bypy

bbr.jpg

最近,Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。
根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。
于是我根据目前三大发行版的最新内核,开发了一键安装最新内核并开启 TCP BBR 脚本。

本脚本适用环境

系统支持:CentOS 6+,Debian 7+,Ubuntu 12+

虚拟技术:OpenVZ 以外的,比如 KVM、Xen、VMware 等
内存要求:≥128M
日期  :2018 年 12 月 14 日

关于本脚本

1、本脚本已在 Vultr 上的 VPS 全部测试通过。
2、当脚本检测到 VPS 的虚拟方式为 OpenVZ 时,会提示错误,并自动退出安装。
3、脚本运行完重启发现开不了机的,打开 VPS 后台控制面板的 VNC, 开机卡在 grub 引导, 手动选择内核即可。
4、由于是使用最新版系统内核,最好请勿在生产环境安装,以免产生不可预测之后果。

使用方法

使用root用户登录,运行以下命令:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

安装完成后,脚本会提示需要重启 VPS,输入 y 并回车后重启。
重启完成后,进入 VPS,验证一下是否成功安装最新内核并开启 TCP BBR,输入以下命令:

uname -r

查看内核版本

显示为最新版就表示 OK 了

sysctl net.ipv4.tcp_available_congestion_control

返回值一般为:
net.ipv4.tcp_available_congestion_control = bbr cubic reno
或者为:
net.ipv4.tcp_available_congestion_control = reno cubic bbr

sysctl net.ipv4.tcp_congestion_control

返回值一般为:
net.ipv4.tcp_congestion_control = bbr

sysctl net.core.default_qdisc

返回值一般为:
net.core.default_qdisc = fq

lsmod | grep bbr

返回值有 tcp_bbr 模块即说明 bbr 已启动。注意:并不是所有的 VPS 都会有此返回值,若没有也属正常。

CentOS 下最新版内核 headers 安装方法

本来打算在脚本里直接安装 kernel-ml-headers,但会出现和原版内核 headers 冲突的问题。因此在这里添加一个脚本执行完后,手动安装最新版内核 headers 之教程。
执行以下命令

yum --enablerepo=elrepo-kernel -y install kernel-ml-headers

根据 CentOS 版本的不同,此时一般会出现类似于以下的错误提示:

Error: kernel-ml-headers conflicts with kernel-headers-2.6.32-696.20.1.el6.x86_64
Error: kernel-ml-headers conflicts with kernel-headers-3.10.0-693.17.1.el7.x86_64
因此需要先卸载原版内核 headers ,然后再安装最新版内核 headers。执行命令:

yum remove kernel-headers

确认无误后,输入 y,回车开始卸载。注意,有时候这么操作还会卸载一些对内核 headers 依赖的安装包,比如 gcc、gcc-c++ 之类的。不过不要紧,我们可以在安装完最新版内核 headers 后再重新安装回来即可。
卸载完成后,再次执行上面给出的安装命令。

yum --enablerepo=elrepo-kernel -y install kernel-ml-headers

成功安装后,再把那些之前对内核 headers 依赖的安装包,比如 gcc、gcc-c++ 之类的再安装一次即可。

为什么要安装最新版内核 headers 呢?
这是因为 shadowsocks-libev 版有个 tcp fast open 功能,如果不安装的话,这个功能是无法开启的。

内核升级方法

如果是 CentOS 系统,执行如下命令即可升级内核:

yum -y install kernel-ml kernel-ml-devel

如果你还手动安装了新版内核 headers ,那么还需要以下命令来升级 headers :

yum -y install kernel-ml-headers

CentOS 6 的话,执行命令:

sed -i 's/^default=.*/default=0/g' /boot/grub/grub.conf

CentOS 7 的话,执行命令:

grub2-set-default 0

如果是 Debian/Ubuntu 系统,则需要手动下载最新版内核来安装升级。
去这里下载最新版的内核 deb 安装包。
如果系统是 64 位,则下载 amd64 的 linux-image 中含有 generic 这个 deb 包;
如果系统是 32 位,则下载 i386 的 linux-image 中含有 generic 这个 deb 包;
安装的命令如下(以最新版的 64 位 4.12.4 举例而已,请替换为下载好的 deb 包):

dpkg -i linux-image-4.12.4-041204-generic_4.12.4-041204.201707271932_amd64.deb
安装完成后,再执行命令:

/usr/sbin/update-grub

最后,重启 VPS 即可。

特别说明

如果你使用的是 Google Cloud Platform (GCP)更换内核,有时会遇到重启后,整个磁盘变为只读的情况。只需执行以下命令即可恢复:

mount -o remount rw /

更新日志:
2018 年 12 月 14 日:
1、修正:在 CentOS 6 系统下 kernel-ml 及 kernel-ml-devel 无法安装的问题。原因是 elrepo 官方最近取消了 kernel-ml 及 kernel-ml-devel 的 rpm 资源。脚本已改为下载 rpm 来安装的方式。版本 4.18.20 将会是 CentOS 6 下最新的内核,目测以后也不会再有升级了,请尽快迁移到 CentOS 7 系统。

2018 年 06 月 09 日:
1、修正:在 CentOS 系统下将 elrepo-kernel 默认启用,以解决在安装新内核后执行 yum update 再次安装旧内核的问题。

2018 年 05 月 12 日:
1、修正:在 Ubuntu 或 Debian 系统中某些情况下获取不到某个编译失败的安装包导致退出安装的问题。并且现在可以手动选择安装从 4.14 到最新版本的内核。

2018 年 02 月 24 日:
1、新增:手动安装最新版内核 headers 的教程。

2017 年 10 月 28 日:
1、更新:自动判断内核版本。如果内核版本已经大于或等于 4.9 且没有开启 BBR,脚本会直接设置好 BBR;
2、新增:脚本执行时会在当前目录下创建日志(install_bbr.log),方便查看及排错。

2017 年 02 月 22 日:
1、更新:自动获取最新版 4.10 内核。

2017 年 01 月 20 日:
1、新增:自动获取并下载安装最新版内核的功能。

2017 年 01 月 13 日:
1、更新:内核到 4.9.3。

2017 年 01 月 09 日:
1、更新:内核到 4.9.1。

式样

一、把以下样式放到前面:

<style>
.bottom-nav {
    /* display: none; */
    background-color: #fafafa;
    box-shadow: 0 -1px rgba(0,0,0,0.1), 0 -2px 10px rgba(0,0,0,0.1);
}
.bottom-nav .opts-group {
    position: relative;
    display: inline-block;
    /* padding-top: 6px; */
    line-height: 20px;
    color: #9e9e9e;
    cursor: pointer;
}
.bottom-nav .opts-group.active {
    color: #da5b62;
}
@media screen and (min-width: 992px) {
    .bottom-nav, .header_seach_but {
        display: none !important;
    }
</style>

二、把以下js放到后面:

<script type="text/javascript">
$(function() {
    setTimeout(function() {
        $.require('https://www.google-analytics.com/ga.js', function() {
            try {
                var pageTracker = _gat._getTracker("UA-9784446-1");
                pageTracker._trackPageview();
            } catch (err) {}
        });
    }, 1000);
    setTimeout(function() {
        $(".bbs_home_page_three_col .small_logo").each(function(index, element) {
            if ($(element).children("a").length == 0) {
                $(".bbs_home_page_three_col .bbs_home_page_row_div").eq(index).children('div:first-child').removeClass("col-lg-8").addClass("col-lg-9");
                $(".bbs_home_page_three_col .bbs_home_page_row_div").eq(index).children('div:last-child').removeClass("col-lg-4").addClass("col-lg-3");
                $(".bbs_home_page_three_col .bbs_home_page_row_div").eq(index).children('div:first-child').children("span").css("width", "19rem");
            }
        })
    }, 2000);
    if (self != top) {
        $('#header').hide();
        $('#nav2').hide();
        $('#footer').hide();
    }
     // 导航
    var new_p = 0, start_scrollTop = 0;
        $(window).scroll(function(e){  
                new_p = $(this).scrollTop();  
                   
                if(start_scrollTop < new_p) {//下滚  
                    $('.header_fiexd').css("display","none");
                } else {//上滚  
                    $('.header_fiexd').css("display","block");
                }  
                setTimeout(function(){start_scrollTop = new_p;},0);         
        });
     
    // 返回顶部
    $(window).scroll(function() {
        if ($(window).scrollTop() >= 500) {
            $('.act_go_top').fadeIn(300);
        } else {
            $('.act_go_top').fadeOut(300);
        }
    });
    $('.act_go_top').click(function() {
        $('html,body').animate({
            scrollTop: '0px'
        }, 100);
    });
    var m1 = 0;     // 滚动的值
    var m2 = 0;     // 对比时间的值
    var timer = null;
    document.onscroll = function() {
        clearTimeout(timer) // 每次滚动前 清除一次
        timer = setTimeout(Data, 2000);
        m1 = document.documentElement.scrollTop || document.body.scrollTop;
    }
    function Data() {
        m2 = document.documentElement.scrollTop || document.body.scrollTop;
        if(m2 == m1){
            $('.act_go_top').fadeOut(300);
        }
    }
});
</script>

三、把以下代码放到后面:

    <div class="position-fixed w-100 header_fiexd bottom-nav" style="width: 100%; height: 55px; bottom: 0; z-index: 2; background: #fafafa;">
    <div class="row mx-0 text-center align-items-center" style="height: 55px;">
        <a href="/" class="col" style="max-width: 20%;">
            <div>
                <i class="icon-home"></i>
            </div>
            <div>
                首页
            </div>
        </a>
        <a href="forum-1.htm" class="col" style="max-width: 20%;">
            <div>
                <i class="icon-venus"></i>
            </div>
            <div>
                女生
            </div>
        </a>
        <a href="forum-2.htm" class="col" style="max-width: 20%;">
            <div>
                <i class="icon-mars"></i>
            </div>
            <div>
                男生
            </div>
        </a>
        <a href="forum-4.htm" class="col" style="max-width: 20%;">
            <div>
                <i class="icon-venus-mars"></i>
            </div>
            <div>
                聘请
            </div>
        </a>
        <a href="my-notice.htm" class="col" style="max-width: 20%;">
            <div>
                <i class="icon-user"></i>
            </div>
            <div>
                我的
            </div>
        </a>
        
    </div>
</div>   

注1:你只需要把以上代码放到上面说的那几个位置,然后把里面的链接、文字和图标替换为你自己的就行了。

注2:图标库:http://fontawesome.dashgame.com/#new

担心 IP 被墙?或者不想 IP 被墙?是的!使用 Cloudflare 来中转 V2Ray 的 WebSocket 流量就行!由于使用了 Cloudflare 中转,所以墙根本不知道背后的 IP 是多少,你可以愉快的玩耍了

提醒

如果你不是使用 移动宽带 的用户,那么使用 Cloudflare 中转的速度相对来说是比较慢的,这个是因为线路的问题,无解。
警告警告警告
该教程目前写得比较简陋,以后应该会增加详细图文教程
V2Ray 的 WS + TLS 不是神话,如果你没学会走路就不要急着跑
大佬。。。你如果是从来没接触过 V2Ray 的人一上来就开玩 WS + TLS
你真的不怕摔跤吗
你有解析过域名吗,知道什么是 A 记录吗,会修改 NS 吗。。
如果不懂,那就先补上这些知识再往下看
如果实在想玩 WS + TLS,请认认真真看教程
教程真的写得比较简陋,如果实在折腾不成功,那也很正常的,改天再来
或者直接放弃

准备

一个域名,建议使用免费域名
确保域名已经可以在 Cloudflare 正常使用。
在 Cloudflare 的 Overview 选项卡可以查看域名状态,请确保为激活状态,即是: Status: Active
怎么 SSH 连接上被墙的 IP ? Xshell 在属性那里可以设置代理,或者你可以在一台没有被墙的境外 VPS 使用 iptables 转发数据到被墙的机器上,此处不细说了。

添加域名解析
在 DNS 选项卡那边添加一个 A 记录的域名解析,假设你的域名是 233blog.com,并且想要使用 www.233blog.com 作为翻墙的域名
那么在 DNS 那里配置,Name 写 www,IPv4 address 写你的 VPS IP,务必把云朵点灰,然后选择 Add Record 来添加解析记录即可
(如果你已经添加域名解析,请务必把云朵点灰,即是 DNS only)

OK,确保操作没有问题的话,继续

安装 V2Ray

如果你已经使用本人提供的 V2Ray 一键安装脚本并安装了 V2Ray,那就直接输入 v2ray config 修改传输协议为 WebSocket + TLS

如果你并没有使用本站提供的 V2Ray 一键安装脚本来安装 V2Ray
那么现在开始使用吧,最好用的 V2Ray 安装脚本,保证你满意
使用 root 用户输入下面命令安装或卸载

bash <(curl -s -L https://git.io/v2ray.sh)

如果提示 curl: command not found ,那是因为你的小鸡没装 Curl

ubuntu/debian 系统安装 Curl 方法:
apt-get update -y && apt-get install curl -y

centos 系统安装 Curl 方法:

 yum update -y && yum install curl -y

安装好 curl 之后就能安装脚本了

之后选择安装,传输协议选择 WebSocket + TLS (即是选择 4 ),V2Ray 端口随便,不要是 80 和 443 即可,然后输入你的域名,域名解析 Y ,自动配置 TLS 也是 Y ,其他就默认吧,一路回车。等待安装完成
如果你的域名没有正确解析,安装会失败,解析相关看上面的 添加域名解析

安装完成后会展示 V2Ray 的配置信息,并且会询问是否生成二维码等,不用管它,直接回车

然后输入

v2ray status

查看一下运行状态,请确保 V2Ray 和 Caddy 都在运行

如果没有问题的话,继续

设置 Crypto 和 开启中转

确保 Cloudflare 的 Crypto 选项卡的 SSL 为 Full
并且请确保 SSL 选项卡有显示 Universal SSL Status Active Certificate 这样的字眼,如果你的 SSL 选项卡没有显示这个,不要急,只是在申请证书,24 小时内可以搞定。

然后在 DNS 选项卡那里,把刚才点灰的那个云朵图标,点亮它,一定要点亮一定要点亮一定要点亮

云朵图标务必为橙色状态,即是 DNS and HTTP proxy(CDN)

V2Ray 配置信息

很好,现在接下来配置客户端使用
输入 v2ray info 即可查看 V2Ray 的配置,如果你有使用某些 V2Ray 客户端,可以根据给出的配置的信息来配置使用了。赶紧测试吧

什么鬼?对啊,就是如此简单啊,要不然你以为啊。

备注
如果你的 VPS 位置是在美国西海岸的话,速度应该还算可以吧,如果不是在美国西海岸,那么也许速度会很慢,不过好在不用担心 IP 被墙或者能让被墙的 IP 重生也挺好的。难道不是么?
如果你使用移动网络的话,那么 Cloudflare 的中转节点可能会在香港,速度也许会不错 (不完全保证)。

无限域名备用
懒得写了,自己悟吧…
反正绝大多数人只要知道怎么把墙的 IP 救活就行…
算啦,我还是提示一下吧,WebSocket 协议,80 端口,Cloudflare 的 Crypto 选项卡 SSL 为 Flexible
如果没有太多必要,不需要折腾这

结束
哇,没有图文教程你就看不懂的话,我能怎么办,我也很绝望,我更加迷茫

转自233