简介

该程序是一个免费的、HTTP协议的文件共享服务器,使用浏览器可以快速访问。它具有以下特点:

与其他常用文件共享方式(如FTP,飞秋,网盘,自己建站)相比,具有使用简单,适用场景更多的优点,在个人使用以及共享给他人的场景中非常方便快捷。


下载

命令行程序

  • chfs-linux-386-1.0.zip
  • chfs-linux-amd64-1.0.zip
  • chfs-linux-arm-1.0.zip
  • chfs-linux-arm64-1.0.zip
  • chfs-mac-386-1.0.zip
  • chfs-mac-amd64-1.0.zip
  • chfs-windows-x64-1.0.zip
  • chfs-windows-x86-1.0.zip
  • GUI程序



    使用

    非系统服务运行

    该程序是一个控制台程序,可直接双击运行,或在控制台/命令行中运行。可通过命令行参数进行相关配置,如使用'chfs --help'来查看帮助:

    usage: chfs [< flags >]
    
    Flags:
    
      --help            Show context-sensitive help (also try --help-long and
                        --help-man).
      --path=DIRECTORY  Directory where host shared files(Default is current
                        directory).
      --port=PORT       HTTP listening port(Default is 80).
      --allow=LIST      Allowed IPv4 addresses(Allow any address by default).
                        
                        White list mode: "listitem1[,listitem2,...]" e.g.
                        "192.168.1.2-192.168.1.10,192.169.1.222" allows this 10
                        addresses.
                        
                        Black list mode: "not(listitem1[,listitem2,...])" e.g.
                        "not(192.168.1.2-192.168.1.10,192.169.1.222)" bans this 10
                        addresses!
      --rule=LIST       Access rules(anybody can access any thing by default).
                        
                        List defines like:"USER:PWD:MASK[:DIR:MASK...][|...]":
                        
                          1,USER and PWD is account name and password
                          2,MASK is access mask,'r'=read,'w'=write,''=NO present
                          3,read=(view and download),write=(delete,upload,create)
                          4,DIR is directory name
                          5,The 3rd field is access mask of shared root directory
                          6,The optional fields is pairs of sub-directory and mask
                          7,The optional sub-directory's mask overwrite parent's
                          8,You should avoid '|' ':' and white space(exclude DIR)
                        
                        For instance: "::|root:123456:rw" bans guest, and defines a
                        account 'root' can do anything
      --file=FILE       A configuration file which overwrites the settings.
      --version         Show application version.

    参数说明:

    help:显示帮助信息
    path:你要共享的根目录,默认为程序运行目录。比如:共享"d:\http_shared_root"目录,运行参数:"chfs --path="d:\http_shared_root""。注意:如果路径带有空格,则需要将整个路径用引号包住!
    port:程序使用的端口号,默认为80
    allow: IP地址过滤,可使用白名单模式或黑名单模式
    rule: 账户及访问权限,允许一个账户多点登陆,默认情况下匿名用户具有读写权限,其语法为:

    RULEITEM1[|RULEITEM2|RULEITEM3...]

    每个RULEITEM代表一个账户信息及其访问权限,多个RULEITEM则用'|'进行分割,RULEITEM的语法为:

    USER:PWD:MASK[:DIR:MASK...]

    每个项由“:”来分隔,前三个项是必须的,分别对应:账户名、账户密码、共享目录根目录的访问权限。后面的可选的项,必须成对出现,用来设定根目录下面的子级目录的访问权限。一些规定:

    * 对于匿名用户,前两个项都为空
    * 访问权限分为三种:""(不可访问),"R"(只读),"W"(读写)。读权限指的是下载,写权限指上传,删除,新建等操作
    * 各项的值应避免出现空白键,':'及'|'(目录名除外)
    file:配置文件,该文件可配置上述配置项,语法相同,如果配置有效则覆盖对应配置项。下载配置文件模板
    version:显示程序版本号


    几个例子:

    //都使用默认参数,共享目录为程序运行目录,监听端口号为80
    chfs
    
    //共享目录为D盘,监听端口号为8080
    chfs --path="d:/" --port=8080
    
    //共享目录为"/home/jack/myshared files",监听端口号为80
    chfs --path="/home/jack/myshared files"
    
    //白名单模式,允许192.168.1.2-192.168.1.100以及192.168.1.200进行访问
    chfs --allow="192.168.1.2-192.168.1.100,192.168.1.200"
    
    //黑名单模式,禁止192.168.1.2-192.168.1.100以及192.168.1.200进行访问
    chfs --allow="not(192.168.1.2-192.168.1.100,192.168.1.200)"
    
    //匿名用户具有只读权限(默认情况下匿名用户具有读写权限)
    //账户ceshizu,密码为ceshizu123,对根目录的权限为只读,但对test目录具有读写权限
    //账户yanfazu,密码为yanfazu123,对根目录的权限为只读,但对yanfa目录具有读写权限
    chfs --rule="::r|ceshizu:ceshizu123:r:test:rw|yanfazu:yanfazu123:r:yanfa:rw"
    
    //匿名用户什么权限都没有(默认情况下匿名用户具有读写权限)
    //账户admin,密码为admin123,具有读写权限
    //账户zhangsan,密码为zhangsan123,对根目录的权限为不可读写,但对zhangsanfiles目录具有读写权限
    chfs --rule="::|admin:admin123:rw|zhangsan:zhangsan123::zhangsanfiles:rw"
    
    //通过配置文件进行配置,该文件可以不存在,待以后需要更改配置时使用
    chfs --file="d:\chfs\chfs.ini"

    以系统服务运行

    本程序不是一个服务程序,所以如果你要以系统服务运行,需要自己创建服务。下面给出Windows平台的创建服务方法(通过NSSM工具):

    1, 将chfs.exe放在指定目录,假设为:d:\program\cutehttpfileserver
    2, 到http://www.nssm.cc/download下载nssm
    3, 将解压后的nssm程序放在d:\program\cutehttpfileserver中
    4, 在d:\program\cutehttpfileserver中运行命令行,或运行命令行并CD至该目录
    5, 假设你的服务名称为cute_http_file_service,命令行中输入:nssm install cute_http_file_service
    6, NSSM会弹出配置对话框,在该对话框中输入程序路径以及运行参数
    7, 启动服务,命令行中输入:nssm start cute_http_file_service

    问答


    怎么可以通过外网访问共享?

    你要确保外网能够访问你的服务器,最简单的方法是购买云服务器或虚拟主机。另外,如果你的宽带有独立外网IP,那么也可以在路由中配置虚拟服务器,这样外网就可以通过这个IP进行访问了。如果宽带没有独立IP,则可以使用DDNS即动态域名解析方式。


    可不可以给服务绑定个域名,然后通过域名访问?

    可以的,可以直接在域名服务商中将你的域名指向你的服务器地址即可。当然,专业用户可以配合Nginx,Apache等HTTP代理服务运行。


    我已安装了系统服务,为何浏览器中访问不了?

    可能的原因有很多,可通过以下步骤排查:

    1. 确保你的浏览器版本是否被支持
    2. 确保访客电脑能够访问你的服务器
    3. 打开进程管理器查看chfs进程是否存在
    4. 停止服务,通过命令行,并且以同样的运行参数运行程序,并访问测试
    5. 仍失败的话就联系作者


    账户控制信息为什么不在网页中设置?

    为了尽可能将配置集中在一处进行;更加可控;尽可能地不依赖外部存储


    为什么不能分享下载链接了?

    当服务器设置的匿名用户/访客的访问权限为不可读时,网页就会去掉分享下载链接的功能。



    测试说明

    运行主机

  • Windows XP:
  • Windows 10:
  • Debian 9:
  • CentOS 7:
  • 其他:未测试
  • PC浏览器

  • IE:11+ √
  • Edge:
  • Firefox:
  • Chrome:
  • Opera:
  • Safari:
  • 其他:未测试