├── CHFS.MD
├── LICENSE
├── README.md
├── cfg.ini
├── config_full.ini
├── download
├── chfs-linux-amd64-2.0.zip
├── chfs-linux-arm64-2.0.zip
├── chfs-mac-amd64-2.0.zip
├── chfs-windows-x64-2.0.zip
├── chfs-windows-x86-2.0.zip
└── gui-chfs-windows.zip
└── runchfs.sh
/CHFS.MD:
--------------------------------------------------------------------------------
1 |
2 | # CHFS
3 |
4 | ### 简介
5 |
6 | CuteHttpFileServer/chfs是一个免费的、HTTP协议的文件共享服务器,使用浏览器可以快速访问。它具有以下特点:
7 |
8 | * 单个文件,核心功能无需其他文件
9 | * 跨平台运行,支持主流平台:Windows,Linux和Mac
10 | * 界面简洁,简单易用
11 | * 支持扫码下载和手机端访问,手机与电脑之间共享文件非常方便
12 | * 支持账户权限控制和地址过滤
13 | * 支持快速分享文字片段
14 | * 支持webdav协议
15 |
16 | 与其他常用文件共享方式(如FTP,飞秋,网盘,自己建站)相比,具有使用简单,适用场景更多的优点,在个人使用以及共享给他人的场景中非常方便快捷。
17 |
18 | ### 下载
19 |
20 | #### 命令行程序
21 |
22 | * [chfs-changelog.txt](http://iscute.cn/tar/chfs/2.0/chfs-changelog.txt)
23 | * [chfs-linux-386-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-386-2.0.zip)
24 | * [chfs-linux-amd64-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-amd64-2.0.zip)
25 | * [chfs-linux-arm-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-arm-2.0.zip)
26 | * [chfs-linux-arm64-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-arm64-2.0.zip)
27 | * [chfs-linux-mips-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-mips-2.0.zip)
28 | * [chfs-linux-mips-softfloat-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-mips-softfloat-2.0.zip)
29 | * [chfs-linux-mips64-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-mips64-2.0.zip)
30 | * [chfs-linux-mips64-softfloat-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-mips64-softfloat-2.0.zip)
31 | * [chfs-linux-mips64le-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-mips64le-2.0.zip)
32 | * [chfs-linux-mipsle-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-mipsle-2.0.zip)
33 | * [chfs-mac-386-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-mac-386-2.0.zip)
34 | * [chfs-mac-amd64-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-mac-amd64-2.0.zip)
35 | * [chfs-windows-x64-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-windows-x64-2.0.zip)
36 | * [chfs-windows-x86-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-windows-x86-2.0.zip)
37 | * [chfs-支持低版本操作系统(MS XP,OpenBSD 6.0...).zip](http://iscute.cn/tar/chfs/2.0/chfs-%E6%94%AF%E6%8C%81%E4%BD%8E%E7%89%88%E6%9C%AC%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F(MS%20XP,OpenBSD%206.0...).zip)
38 |
39 | #### GUI程序
40 |
41 | * [gui-chfs-windows.zip](http://iscute.cn/tar/chfs/2.0/gui-chfs-windows.zip)
42 |
43 |
44 |
45 | ### 基本用法
46 |
47 | #### 非系统服务运行
48 |
49 | 该程序是一个控制台程序,可直接双击运行,或在控制台/命令行中运行。可通过命令行参数进行相关配置,如使用'chfs --help'来查看帮助:
50 |
51 | ```plain
52 | usage: chfs.exe []
53 |
54 | Flags:
55 | --help Show context-sensitive help (also try --help-long and
56 | --help-man).
57 | --path=DIRECTORIES Directories where store shared files, separated by '|'.
58 | --port=PORT HTTP listening port(Default is 80).
59 | --allow=LIST Allowed IPv4 addresses(Allow any address by default).
60 |
61 | White list mode: "listitem1[,listitem2,...]" e.g.
62 | "192.168.1.2-192.168.1.10,192.169.1.222" allows this 10
63 | addresses.
64 |
65 | Black list mode: "not(listitem1[,listitem2,...])" e.g.
66 | "not(192.168.1.2-192.168.1.10,192.169.1.222)" bans this 10
67 | addresses!
68 | --rule=LIST Access rules(anybody can access any thing by default).
69 |
70 | List defines like:"USER:PWD:MASK[:DIR:MASK...][|...]":
71 |
72 | 1,USER and PWD is account name and password
73 | 2,MASK:''=NO present,'r'=read,'w'=write,'d'=delete
74 | 3,r=view+download,w=r+upload+create+rename,d=w+delete
75 | 4,DIR is directory name, allows wildcard('*' & '?')
76 | 5,The 3rd field is access mask of shared root directory
77 | 6,The optional fields is pairs of sub-directory and mask
78 | 7,The optional sub-directory's mask overwrite parent's
79 | 8,You should avoid '|' ':' and white space(exclude DIR)
80 |
81 | For instance: "::|root:123456:rw" bans guest, and defines
82 | a account 'root' can do anything
83 | --log=DIRECTORY Log directory. Empty value will disable log.
84 | --file=FILE A configuration file which overwrites & enhence the
85 | settings.
86 | --version Show application version.
87 | ```
88 |
89 |
90 |
91 | 参数说明:
92 |
93 |
help: | 显示帮助信息 |
path: | 你要共享的目录,默认为程序运行目录。如果需要共享多个目录,则用“|”符号隔开。注意:如果路径带有空格,则需要将整个路径用引号包住。 |
port: | 程序使用的端口号,默认为80 |
allow: | IP地址过滤,可使用白名单模式或黑名单模式 |
rule: | 账户及访问权限,允许一个账户多点登陆,默认情况下匿名用户具有读写权限,其语法为:
RULEITEM1[|RULEITEM2|RULEITEM3...]
每个RULEITEM代表一个账户信息及其访问权限,多个RULEITEM则用'|'进行分割,RULEITEM的语法为:
USER:PWD:MASK[:DIR:MASK...]
每个项由“:”来分隔,前三个项是必须的,分别对应:账户名、账户密码、共享目录根目录的访问权限。后面的可选的项,必须成对出现,用来设定根目录下面的子级目录的访问权限。一些规定:
* 对于匿名用户,前两个项都为空 * 访问权限分为四种:""(不可访问),"R"(只读),"W"(读写),"D"(写+删除)。读权限指的是下载,写权限指上传、新建等操作,删除权限是在写权限的基础上加上删除权限。 * 各项的值应避免出现空白键,':'及'|'(目录名除外) |
log: | 用户操作日志存放目录,默认是程序所在目录下的logs中。禁用日志功能只需将其赋值为空即可。 |
file: | 配置文件,该文件可配置上述配置项,语法相同,如果配置有效则覆盖对应配置项。另外,一些功能需要通过配置文件进行配置,比如页面自定义和SSL证书设置。下载配置文件模板 |
version: | 显示程序版本号 |
94 |
95 |
96 |
97 | 几个例子:
98 |
99 | ```plain
100 | //都使用默认参数,共享目录为程序运行目录,监听端口号为80
101 | chfs
102 |
103 | //共享目录为D盘,监听端口号为8080
104 | chfs --path="d:/" --port=8080
105 |
106 | //共享目录为"d:\\projects"和"e:\\nsis",监听端口号为80
107 | chfs --path="d:\\projects|e:\\nsis"
108 |
109 | //白名单模式,允许192.168.1.2-192.168.1.100以及192.168.1.200进行访问
110 | chfs --allow="192.168.1.2-192.168.1.100,192.168.1.200"
111 |
112 | //黑名单模式,禁止192.168.1.2-192.168.1.100以及192.168.1.200进行访问
113 | chfs --allow="not(192.168.1.2-192.168.1.100,192.168.1.200)"
114 |
115 | //匿名用户具有只读权限(默认情况下匿名用户具有读写权限)
116 | //账户ceshizu,密码为ceshizu123,对根目录的权限为只读,但对test目录具有读写权限
117 | //账户yanfazu,密码为yanfazu123,对根目录的权限为只读,但对yanfa目录具有读写权限
118 | chfs --rule="::r|ceshizu:ceshizu123:r:test:rw|yanfazu:yanfazu123:r:yanfa:rw"
119 |
120 | //匿名用户什么权限都没有(默认情况下匿名用户具有读写权限)
121 | //账户admin,密码为admin123,具有读写权限
122 | //账户zhangsan,密码为zhangsan123,对根目录的权限为不可读写,但对zhangsanfiles目录具有读写权限
123 | chfs --rule="::|admin:admin123:rw|zhangsan:zhangsan123::zhangsanfiles:rw"
124 |
125 | //通过配置文件进行配置,该文件可以不存在,待以后需要更改配置时使用
126 | chfs --file="d:\chfs\chfs.ini"
127 | ```
128 |
129 |
130 |
131 | Tips 1:在Windows系统中,可以使用右键弹出菜单快捷地共享某个目录。步骤如下:
132 |
133 | ```plain
134 | 1, 下载注册表模板文件
135 | 2, 在该文件中编辑你的chfs.exe的真实路径,并可添加其他参数
136 | 3, 双击该脚本文件,进行注册表添加
137 | ```
138 |
139 | Tips 2:另外,有几个功能需要通过配置文件中进行配置,其中主要的配置项有:
140 |
141 | ```plain
142 | 1, html.title: 自定义网页标题
143 | 2, html.notice: 自定义网页顶部的公告板。可以是文字,也可以是HTML标签,此时,需要适用一对``(反单引号,通过键盘左上角的ESC键下面的那个键输出)来包住所有HTML标签
144 | 3, ssl.cert和ssl.key: 用来配置SSL,启用HTTPS
145 | 4, folder.leaf.download: 仅最后一个目录可以打包下载
146 | 5, session.timeout: 会话的时长,单位是分钟
147 | ```
148 |
149 |
150 |
151 | #### 以系统服务运行
152 |
153 | 本程序不是一个服务程序,所以如果你要以系统服务运行,需要自己创建服务。下面给出Windows平台的创建服务方法(通过NSSM工具):
154 |
155 | ```plain
156 | 1, 将chfs.exe放在指定目录,假设为:d:\program\cutehttpfileserver
157 | 2, 到http://www.nssm.cc/download下载nssm
158 | 3, 将解压后的nssm程序放在d:\program\cutehttpfileserver中
159 | 4, 在d:\program\cutehttpfileserver中运行命令行,或运行命令行并CD至该目录
160 | 5, 假设你的服务名称为cute_http_file_service,命令行中输入:nssm install cute_http_file_service
161 | 6, NSSM会弹出配置对话框,在该对话框中输入程序路径以及运行参数
162 | 7, 启动服务,命令行中输入:nssm start cute_http_file_service
163 | ```
164 |
165 |
166 |
167 | ### 高级用法
168 |
169 | #### 如何启用HTTPS?
170 |
171 | 配置文件中有ssl.cert和ssl.key两个键值,设置好对应的文件目录即可。另外,chfs支持的最低SSL版本为SSLv3,不兼容SSL2的握手。对了,别忘了将监听端口设置为443
172 |
173 | #### 我想自己搞一套页面,请问开发文档在哪里?
174 |
175 | 运行chfs后,通过地址:http://host:port/asset/api.html访问API文档。
176 |
177 | #### 如何启用webdav?
178 |
179 | 程序默认支持webdav,跟http共用同一套访问规则。其地址为:http://host:port/webdav
180 |
181 | ### 测试说明
182 |
183 | #### 运行主机
184 |
185 | * **Windows XP:**√
186 | * **Windows 10:**√
187 | * **Debian 9:**√
188 | * **CentOS 7:**√
189 | * **其他:**未测试
190 |
191 | #### PC浏览器
192 |
193 | * **IE:**11+ √
194 | * **Edge:**√
195 | * **Firefox:**√
196 | * **Chrome:**√
197 | * **Opera:**√
198 | * **Safari:**√
199 | * **其他:**未测试
200 |
201 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 plex
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # chfs-file-server
2 | 使用CuteHttpFileServer 搭建静态文件服务器 分享文件 图床
3 |
4 |
5 |
6 | ##### 下载地址:http://iscute.cn/chfs
7 |
8 | ##### 备用地址:本仓库
9 |
10 | ##### 文档备份:[备份](./CHFS.MD)
11 |
12 |
13 |
14 | ## Linux
15 |
16 | 下载 [chfs-linux-amd64-2.0.zip](http://iscute.cn/tar/chfs/2.0/chfs-linux-amd64-2.0.zip)
17 |
18 | ```
19 | wget http://iscute.cn/tar/chfs/2.0/chfs-linux-amd64-2.0.zip
20 | ```
21 |
22 | 解压
23 |
24 | ```
25 | unzip chfs-linux-amd64-2.0.zip
26 | ```
27 |
28 | 给执行权限
29 |
30 | ```
31 | chmod +x chfs
32 | ```
33 |
34 | 简单启动测试
35 |
36 | ```
37 | //共享目录,监听端口号为8080
38 | chfs --path="./" --port=8080
39 | ```
40 |
41 |
42 |
43 | ### 简单配置
44 |
45 | ```
46 | # 监听端口
47 | port=666
48 |
49 | # 共享根目录,通过字符'|'进行分割
50 | path="/www"
51 |
52 | # 匿名用户具有只读权限(默认情况下匿名用户具有读写权限) 账户admin,密码为admin123,具有读写权限
53 | rule=::r|admin:ingress123:rw
54 |
55 | # 网页标题
56 | html.title=爱墙文件服务
57 |
58 | # 网页顶部的公告板。
59 | html.notice=内部资料,请勿传播
60 |
61 | ```
62 |
63 |
64 |
65 | ### 完整配置
66 |
67 | ```
68 | #---------------------------------------
69 | # 请注意:
70 | # 1,如果不存在键或对应值为空,则不影响对应的配置
71 | # 2,配置项的值,语法如同其对应的命令行参数
72 | # //共享目录为D盘,监听端口号为8080
73 | # chfs --path="d:/" --port=8080
74 | # //通过配置文件进行配置,该文件可以不存在,待以后需要更改配置时使用
75 | # chfs --file="./cfg.ini"
76 | #---------------------------------------
77 |
78 | # 监听端口
79 | port=666
80 |
81 | # 共享根目录,通过字符'|'进行分割
82 | # 注意:
83 | # 1,带空格的目录须用引号包住,如 path="c:a uply namefolder"
84 | # 2,可配置多个path,分别对应不同的目录
85 | path="/"
86 |
87 |
88 | # IP地址过滤
89 | allow=
90 |
91 |
92 | #----------------- 账户控制规则 -------------------
93 | # 注意:该键值可以同时存在多个,你可以将每个用户的访问规则写成一个rule,这样比较清晰,如:
94 | # rule=::r
95 | # rule=root:123456:RW
96 | # rule=readonlyuser:123456:R
97 | # 匿名用户具有只读权限(默认情况下匿名用户具有读写权限) 账户admin,密码为admin123,具有读写权限
98 | # rule=::r|admin:admin123:rw
99 | rule=::r|admin:ingress123:rw
100 |
101 | # 用户操作日志存放目录,默认为空
102 | # 如果赋值为空,表示禁用日志
103 | log=
104 | # 网页标题
105 | html.title=爱墙文件服务
106 |
107 | # 网页顶部的公告板。可以是文字,也可以是HTML标签,此时,需要适用一对``(反单引号,通过键盘左上角的ESC键下面的那个键输出)来包住所有HTML标签。几个例子:
108 | # 1,html.notice=内部资料,请勿传播
109 | # 2,html.notice=`
`
110 | # 3,html.notice=``
111 | html.notice=内部资料,请勿传播
112 |
113 | # 是否启用图片预览(网页中显示图片文件的缩略图),true表示开启,false为关闭。默认开启
114 | image.preview=true
115 |
116 | # 下载目录策略。disable:禁用; leaf:仅限叶子目录的下载; enable或其他值:不进行限制。
117 | # 默认值为 enable
118 | folder.download=
119 |
120 | #-------------- 设置生效后启用HTTPS,注意监听端口设置为443-------------
121 | # 指定certificate文件
122 | ssl.cert=
123 | # 指定private key文件
124 | ssl.key=
125 | # 设置会话的生命周期,单位:分钟,默认为30分钟
126 | session.timeout=
127 |
128 | ```
129 |
130 |
131 |
132 | ## 其他搭建文件服务器的方法
133 |
134 | ### Nginx auto index
135 |
136 | ### MiniIO
137 |
138 | ### GoHttpServer
139 |
140 |
--------------------------------------------------------------------------------
/cfg.ini:
--------------------------------------------------------------------------------
1 | # 监听端口
2 | port=666
3 |
4 | # 共享根目录,通过字符'|'进行分割
5 | path="/www"
6 |
7 | # 匿名用户具有只读权限(默认情况下匿名用户具有读写权限) 账户admin,密码为admin123,具有读写权限
8 | rule=::r|admin:ingress123:rw
9 |
10 | # 网页标题
11 | html.title=爱墙文件服务
12 |
13 | # 网页顶部的公告板。
14 | html.notice=内部资料,请勿传播
--------------------------------------------------------------------------------
/config_full.ini:
--------------------------------------------------------------------------------
1 | #---------------------------------------
2 | # 请注意:
3 | # 1,如果不存在键或对应值为空,则不影响对应的配置
4 | # 2,配置项的值,语法如同其对应的命令行参数
5 | # //共享目录为D盘,监听端口号为8080
6 | # chfs --path="d:/" --port=8080
7 | # //通过配置文件进行配置,该文件可以不存在,待以后需要更改配置时使用
8 | # chfs --file="./cfg.ini"
9 | #---------------------------------------
10 |
11 | # 监听端口
12 | port=666
13 |
14 | # 共享根目录,通过字符'|'进行分割
15 | # 注意:
16 | # 1,带空格的目录须用引号包住,如 path="c:a uply namefolder"
17 | # 2,可配置多个path,分别对应不同的目录
18 | path="/"
19 |
20 |
21 | # IP地址过滤
22 | allow=
23 |
24 |
25 | #----------------- 账户控制规则 -------------------
26 | # 注意:该键值可以同时存在多个,你可以将每个用户的访问规则写成一个rule,这样比较清晰,如:
27 | # rule=::r
28 | # rule=root:123456:RW
29 | # rule=readonlyuser:123456:R
30 | # 匿名用户具有只读权限(默认情况下匿名用户具有读写权限) 账户admin,密码为admin123,具有读写权限
31 | # rule=::r|admin:admin123:rw
32 | rule=::r|admin:ingress123:rw
33 |
34 | # 用户操作日志存放目录,默认为空
35 | # 如果赋值为空,表示禁用日志
36 | log=
37 | # 网页标题
38 | html.title=爱墙文件服务
39 |
40 | # 网页顶部的公告板。可以是文字,也可以是HTML标签,此时,需要适用一对``(反单引号,通过键盘左上角的ESC键下面的那个键输出)来包住所有HTML标签。几个例子:
41 | # 1,html.notice=内部资料,请勿传播
42 | # 2,html.notice=`
`
43 | # 3,html.notice=``
44 | html.notice=内部资料,请勿传播
45 |
46 | # 是否启用图片预览(网页中显示图片文件的缩略图),true表示开启,false为关闭。默认开启
47 | image.preview=true
48 |
49 | # 下载目录策略。disable:禁用; leaf:仅限叶子目录的下载; enable或其他值:不进行限制。
50 | # 默认值为 enable
51 | folder.download=
52 |
53 | #-------------- 设置生效后启用HTTPS,注意监听端口设置为443-------------
54 | # 指定certificate文件
55 | ssl.cert=
56 | # 指定private key文件
57 | ssl.key=
58 | # 设置会话的生命周期,单位:分钟,默认为30分钟
59 | session.timeout=
60 |
--------------------------------------------------------------------------------
/download/chfs-linux-amd64-2.0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlexPt/chfs-file-server/21afcc303467f8aa04a3a3d8d0baa59e3d773732/download/chfs-linux-amd64-2.0.zip
--------------------------------------------------------------------------------
/download/chfs-linux-arm64-2.0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlexPt/chfs-file-server/21afcc303467f8aa04a3a3d8d0baa59e3d773732/download/chfs-linux-arm64-2.0.zip
--------------------------------------------------------------------------------
/download/chfs-mac-amd64-2.0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlexPt/chfs-file-server/21afcc303467f8aa04a3a3d8d0baa59e3d773732/download/chfs-mac-amd64-2.0.zip
--------------------------------------------------------------------------------
/download/chfs-windows-x64-2.0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlexPt/chfs-file-server/21afcc303467f8aa04a3a3d8d0baa59e3d773732/download/chfs-windows-x64-2.0.zip
--------------------------------------------------------------------------------
/download/chfs-windows-x86-2.0.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlexPt/chfs-file-server/21afcc303467f8aa04a3a3d8d0baa59e3d773732/download/chfs-windows-x86-2.0.zip
--------------------------------------------------------------------------------
/download/gui-chfs-windows.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlexPt/chfs-file-server/21afcc303467f8aa04a3a3d8d0baa59e3d773732/download/gui-chfs-windows.zip
--------------------------------------------------------------------------------
/runchfs.sh:
--------------------------------------------------------------------------------
1 | nohup ./chfs --file="./cfg.ini"&
--------------------------------------------------------------------------------