介绍
MCSMT是一个文件更新软件,它能使客户端的文件与服务端同步。
声明:本教程为作者本人发布。官方仓库:PsBash-Team/MCSMT: File updater. (github.com)
建议先阅读项目README.md,中文的,很详细。目前 mcsmt-dev-v3分支已经和main分支合并。
目前Version3已经进入稳定状态。这代表——在我的使用范围,它没有Bug或者很少有Bug。因此,这个项目不是被抛弃了,亦或者停更了之类的,只是没有IDEA来维持更新了。如果您有好主意,欢迎在Issues · PsBash-Team/MCSMT (github.com)提出来。或者bug也行。
关于安全性问题
关于HTTPS请求证书未验证的问题
本项目纯属个人需求。因此在使用范围这么小的情况下,我没有兴趣自己建立一个协议,比如TCP上层协议之类的,也没有兴趣魔改Python的HTTP客户端来兼容一个我自己都不知道能不能用得上的功能。所以,基于以上所有原因,如果您在客户端配置文件中指定了ip, ips, preferIPType亦或useDNS字段时,若没有启用wget-extension,所有HTTPS请求均没有校验证书。具体原因见此处。
关于可能遭受到的恶意骇入问题
这是一个被忽略的严重安全漏洞。我会在下次更新的时候修复它,如果您需要使用旧版本也可简单的在
上图中红色横线所在的地方插入一行(记得缩进到和下一行一样的位置):
即可解决。
致从老版本迁移的用户
我们建议所有旧版本用户及时更新客户端/服务端。本教程仅介绍最新的v3-0.2.12.1版本
安装
确保在开始之前准备好Python3环境。参考这篇文章,记得安装pip包管理器。
运行下面命令:
最新版MCSMT 3.0.2.12.1已发布在TestPyPI。
等待命令跑完即可出现类似下方输出即可(因为我已经安装过所以和新安装有一点不同)
出现最后一行(新安装会有更多包名)就代表成功安装上了,此时就可以使用了。
使用
具体参数参考此处。
服务端简单使用
创建一个目录,包含你需要同步的文件。
# Linux / MacOS python3 -m mcsmt.server.genconf # Windows py -3 -m mcsmt.server.genconf # Windows Portable path\to\python.exe -m mcsmt.server.genconf
使用便捷配置生成器,快速生成服务器配置。或者,手动配置教程参考此处。
# Linux / MacOS python3 -m mcsmt.server.gen # Windows py -3 -m mcsmt.server.gen # Windows Portable path\to\python.exe -m mcsmt.server.gen
快速生成一份客户端索引文件,此时有两个选择:直接把当前目录上传服务端,或者在当前服务器启用动态服务端。
启用动态服务端
首先启动WatchDog服务,这会监听当前文件夹的指定目录并自动重建索引。
# Linux / MacOS python3 -m mcsmt.server.wdgen -d <ResourceDirectory> # Windows py -3 -m mcsmt.server.wdgen -d <ResourceDirectory> # Windows Portable path\to\python.exe -m mcsmt.server.wdgen -d <ResourceDirectory>
注:ResourceDirectory
不应该为.
然后启动HTTP服务器
# Linux / MacOS python3 -m http.server [port] # Windows py -3 -m http.server [port] # Windows Portable path\to\python.exe -m http.server [port]
port
默认为80
客户端简单使用
客户端一般是由您发布给客户的,因此如果您是客户,您无需阅读本文章,仅需要求服务商提供配置文件即可。
首先,您需要创建一个文件夹,并进入其中。
创建一个Cconfig.json
(或者其他文件名),其格式如下:
{ "requestURL": "http://api.mcsmt.example.com/", "ip": "xxx.xxx.xxx.xxx", "ips": ["xxx.xxx.xxx.xxx","yyy.yyy.yyy.yyy"], "preferIPType: "A", "dns": "223.5.5.5", "useDNS": true }
requestURL
字段应为str
类型,应为您部署MCSMT服务端的地址
ip
字段应为str
类型,定义了你想要让requestURL
字段中的域名解析到的地址,这可以用于防范DNS劫持、让您的服务使用不属于您的域名用于免流、避免审查等用途。
ips
字段应为list
类型,包含的所有数据都应为str
类型,相当于ip
字段的负载均衡版,客户端每次启动都会从该字段随机抽取一个数据作为ip
字段的值。
preferIPType
字段应为str
类型,可用的值有"A"
、"AAAA"
,当该字段存在时,将调用内置DoH解析器解析requestURL
字段内域名,并把所有符合该字段的结果作为ips
字段的数据。特殊情况:当安装了WGET-EXTENSION
时,将使用WGET-EXTENSION
的参数替代。
dns
字段应为str
类型,定义了内置DoH解析器所使用的DoH服务器。
useDNS
字段应为bool
类型,当其值为真,即便preferIPType
字段不存在,也使用内置DoH解析器解析。默认的偏好记录类型是A
。特殊情况:即便安装了WGET-EXTENSION
也使用内置DoH解析器解析。
ip
、ips
、preferIPType
、useDNS
字段的优先级如下:
ip
>ips
>preferIPType
和useDNS
如果已有更高优先级的字段定义,则会忽略较低优先级的字段。
然后运行以下命令即可根据服务器上的索引文件更新。
# Linux / MacOS python3 -m mcsmt client main client_config_file_path:<ConfigFileName> client_config_encoding:<ConfigFileEncoding> # Windows py -3 -m mcsmt client main client_config_file_path:<ConfigFileName> client_config_encoding:<ConfigFileEncoding> # Windows Portable path\to\python.exe -m mcsmt client main client_config_file_path:<ConfigFileName> client_config_encoding:<ConfigFileEncoding>
ConfigFileName
应为您刚才创建的配置文件的文件名(如果不使用此参数默认为当前目录的Cconfig.json
)
ConfigFileEncoding
应为您刚才创建的配置文件的编码(如果不使用此参数默认为UTF-8
)
杂项使用
EasyDNS DoH 客户端
简单的DoH客户端。
使用方式:
# Linux / MacOS python3 -m mcsmt mixed ezdns name:<domain> type:<recordType> ns:<Nameserver> # Windows py -3 -m mcsmt mixed ezdns name:<domain> type:<recordType> ns:<Nameserver> # Windows Portable path\to\python.exe -m mcsmt mixed ezdns name:<domain> type:<recordType> ns:<Nameserver>
domain
应为您要查询的域名,必填
recordType
应为您要查询的记录类型
Nameserver
应为您查询使用的DoH服务器
下载器
简单的HTTP下载器,可以搭配WGET-EXTENSION
,即GNU Wget
。是MCSMT主程序使用的下载程序,也是MCSMT Project里逻辑最复杂的程序。
使用方法:
# Linux / MacOS python3 -m mcsmt mixed down download_url:<url> target_path:<directory> ip:<ip> sha512hex:<sha512checksum> preferIPType:<recordType> dns:<nameserver> use_dns:<use> # Windows py -3 -m mcsmt mixed down download_url:<url> target_path:<directory> ip:<ip> sha512hex:<sha512checksum> preferIPType:<recordType> dns:<nameserver> use_dns:<use> # Windows Portable path\to\python.exe -m mcsmt mixed down download_url:<url> target_path:<directory> ip:<ip> sha512hex:<sha512checksum> preferIPType:<recordType> dns:<nameserver> use_dns:<use>
url
应为您要下载的文件的直链地址
directory
应为您要下载到的文件夹
ip
应为您需要令url
中的域名解析到的IP地址
sha512checksum
应为您要下载的文件的SHA512哈希值
recordType
应为您需要的DNS记录类型,有效值为A
、AAAA
。关于此项的更多解释,请参考此处
dns
应为您希望使用的DoH服务器
use
应为您是否需要使用内置DoH解析器,有效值为true
、false
。关于此项的更多解释,请参考此处
未完待续
目前本篇文章的很多内容还需要进一步完善。更多内容敬请期待。
最新评论