CTList目录程序搭建天翼云盘网站

发布于 2021-02-15  372 次阅读


前言

之前有用过关于宝塔部署OneIndex程序,挂载微软OneDrive 5TB网盘。随着白嫖OneDrive的人越来越多,OneDrive的下载速度也越来越慢了,上传更慢了,有时候十几KB、几十KB的速度,国内速度不容乐观。

不过,最近发现我天翼云盘有个10T 的永久空间,刚好可以拿出来用用。

天翼在国内的速度还是可以的,有电信网络的支撑。刚好,有位萌咖的大佬写了这样一个程序,原名TCList(TianYi Cloud List),所以后来就改成了CTList。

本文参考了萌咖大佬的GitHub说明、以及大佬提供的申请码,得以完成整个步骤,再次表示感谢。本文也说明了安装过程中踩的一些坑。

简介

程序的项目地址:https://github.com/iiiiiii1/CTList

原项目地址:https://github.com/MoeClub/CTList (已 404🤐)

功能:

支持多账户
支持显示文件夹大小
支持每天自动签到
支持异步缓存
支持隐藏指定文件夹和文件
支持整个目录,单层目录或单文件访问加密
支持展示任意目录,自定义根目录
支持只读挂载到 PotPlayer(WebDAV), nPlayer(WebDAV)

我的环境是 CentOS + 宝塔面板,其它系统更详细的教程可以查看 萌咖 大佬的 教程原文

准备

已经有账号的就跳过,没有需要用自己手机号注册个天翼网盘。

授权码 [32 位小写字母和数字,一个授权码可以绑定多个用户名,用于启动多账户.] 获取授权码
主程序 (CTList)
配置文件 (config.json)
皮肤文件 (index.html)

因为该程序为萌咖大佬独立编写,所以授权码只有大佬一个人能发布,没有授权码是没办法使用这个套程序的。获取授权码的方式有:
1.前往萌咖杂货店购买:购买链接
2.免费的PY交易:大佬博客

开始安装配置:

1.安装CTList

# 新建CTList的目录
 mkdir /opt/CTList && cd $_
# 64位系统下载
$ wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/exec/amd64/linux/CTList
#32位系统下载
wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/exec/i386/linux/CTList
#arm架构下载
wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/exec/arm/linux/CTList
# 给CTList目录权限
 chmod +x CTList

2.配置

# 下载配置文件
 wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/config.json
# 下载默认主题
 wget https://raw.githubusercontent.com/iiiiiii1/CTList/master/index.html 
# 支持图片在线浏览/视频在线播放的新主题在萌咖大佬的仓库自行下载html放到CTList目录即可
https://github.com/MoeClub/OneList/tree/master/Rewrite/@Theme

3.编辑配置文件

​ 编辑配置文件config.json,大致说明如下:

[
    {
        "Enable": 1,                  # 0: 关闭, 1: 打开                                              
        "UserName": "",               # 天翼云网盘登陆用户名,不需要@189.cn.                                            
        "Password": "",               # 天翼云网盘登陆密码                                            
        "CaptchaMode": "0",           # 验证码. 0: 遇到验证码拒绝登陆, 1: 手动输入验证, 其他: 自动识别验证码的API.             
        "ViewMode": 0,                # 显示模式. 0: 自动识别. 1: 只使用网页模式. 2:只使用WebDAV模式.                                 
        "RefreshToken": "",           # 天翼网盘会话. 保持默认, 如果出现异常, 请将该值清空.                                               
        "SubPath": "/CTList",         # 指定某账户挂载在网站的某个目录, 多账户时每个目录值必须唯一.                                              
        "RootPathId": "-11",          # 设置展示天翼网盘目录的ID, 根目录为 -11.                                             
        "HideItemId": "0|-16",        # 不展示某个目录或文件, 填写其ID. 每项用"|"分隔.                                             
        "AuthItemId": "",             # 加密某个目录或文件. "<文件或者目录的ID>?<加密模式>?<用户名>:<密码>"                                              
        "RefreshURL": 189,            # 下载直链缓存的秒数. 超时则被动更新.                                             
        "RefreshInterval": 1800       # 刷新目录结构,如果不常更新,建议设置更长时间.
    }
]

如果使用期间有修改过配置文件,需要重启CTList

填写注意点:

​ A. 根据配置文件中的SubPath项中参数访问具体网盘,根据自己需要调整SubPath路径

​ 一般 SubPath 的具体值在终端中显示在中括号内. 比如: [/CTList]

例如: "SubPath": "/CTList"
访问: http://127.0.0.1:8000/CTList

例如: "SubPath": "/"
访问: http://127.0.0.1:8000/

​ B. RootPathId表示根目录,默认为-11,但是如果你要分享天翼云盘中某个目录。

在天翼云盘网页版的地址栏中,进入需要操作的目录,查看地址栏最后的数字就是这个目录的ID

​ C . CaptchaMode 后面将 0 改为 https://api.moeclub.org/SampleCode 用于识别登陆验证码

​ D. HideItemId: 在展示目录中隐藏天翼网盘内的文件或文件夹,填写其ID,使用 "|" 分隔

​ AuthItemId: 在展示目录中加密天翼网盘内的文件或文件夹,使用 "|" 分隔

AuthItemId配置项采用HTTP 401认证方式加密。

# 单个写法
"AuthItemId": "-11?0?UserName:Password"
# 多个写法
"AuthItemId": "-11?0?UserName:Password|-16?1?UserName:Password"

# 字段解析
<文件或者目录的ID>?<加密模式>?<用户名>:<密码>

# 加密模式,加密文件选0和1效果相同.
0: 只加密这一层文件夹,可以直接访问这层文件夹内部的内容.
1: 加密这个文件夹的所有子项目.

4.调高limits

​ 这里调整下limitslinux下可能由于高并发情况下会出错,使用命令:

[ -f /etc/security/limits.conf ] && LIMIT='262144' && sed -i '/^\(\*\|root\)[[:space:]]*\(hard\|soft\)[[:space:]]*\(nofile\|memlock\)/d' /etc/security/limits.conf && echo -ne "*\thard\tmemlock\t${LIMIT}\n*\tsoft\tmemlock\t${LIMIT}\nroot\thard\tmemlock\t${LIMIT}\nroot\tsoft\tmemlock\t${LIMIT}\n*\thard\tnofile\t${LIMIT}\n*\tsoft\tnofile\t${LIMIT}\nroot\thard\tnofile\t${LIMIT}\nroot\tsoft\tnofile\t${LIMIT}\n\n" >>/etc/security/limits.conf

windows系统下不需要调。

5.启动CTList

​ 这里启动改成了授权模式,需要申请码获取授权码,获取授权码→传送门Apply Token和用户名即手机号必填。

​ 一 个申请码只能绑定一个天翼云账号,绑定多个账号需要在同样的授权码上绑定其它账号。

#申请码使用提示情况有下面几种
[Success]: 绑定成功.
[Query Mode]:查询模式, 查询授权码. 申请码已经被使用.
如果没有有效授权的用户, 运行程序时会出现Error! No Valid User.

​ 这里如果你想支持下萌咖大佬,可以前往萌咖杂货店→传送门,选择捐赠 #11即可。

​ 获取到授权码后开始启动CTList

#直接运行
/opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 8000

#后台运行
/opt/CTList/CTList -a "AUTH_TOKEN" -bind 0.0.0.0 -port 8000 -d

AUTH_TOKEN为获取到的授权码,8000为访问端口,运行前自行修改。

​ 启动了后,就可以使用ip:8000/CTList访问程序了,后面为SubPath参数路径,自行修改。

​ 如果你访问不了程序,可能要检查下防火墙端口,有安全组的也要放行下相关端口。

​ 这里提供个CentOS系统防火墙开启命令,比如开放8000端口,大致如下:

#CentOS 6
iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
service iptables save
service iptables restart

#CentOS 7
firewall-cmd --zone=public --add-port=8000/tcp --permanent
firewall-cmd --reload

7、开机自启

​ 目前我们是开着前台开着服务才能让它持续运行的,如果需要让他一直在后台保持着运行,还需要做一些设置。

​ 这里新建一个简单的systemd配置文件,适用CentOS 7Debian 8+Ubuntu 16+

首先添加个service:

vi /usr/lib/systemd/system/ctlist.service

​ 然后添加以下代码,注意 :

​ 填入配置 ${AUTH_TOKEN} 是授权码: ${port} 是你的访问端口

​ 也就是AUTH_TOKEN改为你获取到的授权码,port填你设置的端口

[Unit]
Description=ctlist
After=network.target

[Service]
Type=simple
ExecStart=/opt/CTList/CTList -a ${AUTH_TOKEN} -bind 0.0.0.0 -port ${port} -l
Restart=on-failure

[Install]
WantedBy=multi-user.target

​ 然后保存退出,执行下面的命令:

# 重载配置
 systemctl daemon-reload
# 启动并设置开机自启
 systemctl start ctlist
 systemctl enable ctlist

​ 相关命令:

启动:systemctl start ctlist
停止:systemctl stop ctlist
重启:systemctl restart ctlist
查看状态:systemctl status ctlist

反代域名

如果你不想通过 IP + 端口的方式访问,可以绑定自定义域名,最简单的:宝塔新建个网站,反代以下即可

如果没有宝塔,则使用caddy

安装Caddy

wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_inst

配置Caddy

#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!

#http访问,该配置不会自动签发SSL
echo "www.moerats.com {
 gzip
 tls admin@moerats.com
 proxy / 127.0.0.1:8000
}" > /usr/local/caddy/Caddyfile

#https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
echo "www.moerats.com {
 gzip
 tls admin@moerats.com
 proxy / 127.0.0.1:8000
}" > /usr/local/caddy/Caddyfile

启动Caddy

/etc/init.d/caddy start

之后就可以通过域名访问CTList了

卸载

#未设置开机自启
rm -rf /opt/CTList

#设置过开机自启
systemctl stop ctlist
systemctl disable ctlist
rm -rf /opt/CTList /etc/systemd/system/ctlist.service

相关使用问题

1、刷新策略

# 4个刷新逻辑完全异步,互不影响.
Token(登陆保活): 60 * 60 * 10
Cookie(会话授权): 60 * 30
RefreshURL(真实下载链接): 189 (配置文件可改 <RefreshURL>)
RefreshInterval(刷新目录结构): 60 * 15  (配置文件可改, 全局最小值生效 <RefreshInterval>)

2、使用说明

Usage of CTList:
  -bind string
        Bind Address (default "127.0.0.1")
  -port string
        Port (default "5189")
  -a string
        Auth Token.
  -c string
        Config file. (default "config.json")
  -t string
        Index file. (default "index.html")
  -json
        Output json.
  -d
        Run in the background.
  -l
        Less output.

3、在nPlayer播放器中使用

# 网络 --> 添加 --> WebDAV
# 主机: 填写域名.
# 路径: 填写 SubPath 值. 如: /CTList
# 其他请按照情况填写.

# 优势: 在播放器中可以播放各种编码格式的视频.
# 可以适当的将最小缓存时间调小,提高浏览体验.

4、报错相关

400(Not Found URL): 未能找到该文件的链接.
404(Not Found): 未完成初次缓存目录结构或文件路径不正确.
422(Not Found Real URL): 未能生成真实的文件下载链接(一般是文件被举报了,无法下载).
5XX: 一般是服务器端的问题. 部分可能的情况有: 主程序没开, 端口不通, 反代配置不正确.

需要注意的是,如果 CTList 正在运行,每次修改配置后你都需要手动重启 CTList 的进程以便配置文件生效!


博主本人