23 Star 207 Fork 39

no-src / gofs

2024-03-01 10:02
mstmdev

Fixed

  • 修复Vue相关的无效链接

Enhancements

  • 新增Size结构来支持人性化的大小单位
  • 支持在docker中自定义时区
  • 新增go1.22支持并移除go1.20
  • 支持一次性加载所有缓存驱动
  • 移除encrypt_test构建标签
  • 移除不支持的vfs类型
  • 更新依赖定时检查为每月
  • 更新依赖包,golang.org/x/time v0.4.0 => v0.5.0
  • 更新依赖包,golang.org/x/crypto v0.15.0 => v0.18.0
  • 更新依赖包,golang.org/x/oauth2 v0.14.0 => v0.16.0
  • 更新依赖包,github.com/quic-go/quic-go v0.40.0 => v0.41.0
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.64 => v7.0.66
  • 更新依赖包,google.golang.org/grpc v1.59.0 => v1.61.0
  • 更新依赖包,google.golang.org/protobuf v1.31.0 => v1.32.0
  • 更新依赖,actions/setup-go 4 => 5
  • 更新依赖,github/codeql-action 3 => 4
最后提交信息为: Remove the encrypt_test build tag (#324)
2023-12-04 10:34
mstmdev

Fixed

  • 修复在MinIO和SFTP中直接推送文件一次不生效的问题
  • 将测试证书有效期更新为100年

Enhancements

  • 新增windows arm64发布
  • 将一些公共代码移动到nsgo包中
  • 支持在MinIO同步场景中指定MinIO的路径
  • 新增Path结构
  • 更新README文档,新增贡献小节
  • 更新依赖包,golang.org/x/oauth2 v0.12.0 => v0.14.0
  • 更新依赖包,golang.org/x/crypto v0.13.0 => v0.15.0
  • 更新依赖包,golang.org/x/net v0.16.0 => v0.17.0
  • 更新依赖包,golang.org/x/time v0.3.0 => v0.4.0
  • 更新依赖包,github.com/quic-go/quic-go v0.39.0 => v0.39.3
  • 更新依赖包,github.com/fsnotify/fsnotify v1.6.0 => v1.7.0
  • 更新依赖包,google.golang.org/grpc v1.58.2 => v1.59.0
  • 更新依赖包,github.com/schollz/progressbar/v3 v3.13.1 => v3.14.1
2023-10-07 00:37
mstmdev

Fixed

  • 新增init-env.sh脚本来修复UDP缓冲区大小问题

Enhancements

  • 移除ssh_key命令行参数,通过在sourcedest命令行参数中新增一些参数来配置SFTP的认证信息
  • 新增copy_linkcopy_unsafe_link命令行参数来控制软链接在本地磁盘模式下的同步
  • 更新scripts/build-release.sh脚本,新增linux arm64和macOS arm64发布
  • 更新release脚本,从HEAD中获取最近一次git提交的哈希值
  • 移除CBool结构并进行代码重构
  • 移除未使用的全局变量
  • 新增docker和release工作流
  • 新增govulncheck工作流
  • minio.statDirEntrysftp.statDirEntry替换为fs.FileInfoToDirEntry
  • 将全局日志替换为本地的局部日志
  • 重构build-release.shbuild-docker.sh脚本,使其更加通用化
  • 更新install-minio.sh脚本,使用-q命令行参数来避免打印进度日志
  • 将函数NewDecryptReader重命名为newDecryptReader
  • 更新依赖包,github.com/quic-go/quic-go v0.38.0 => v0.39.0
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.62 => v7.0.63
  • 更新依赖包,github.com/no-src/log v0.3.0 => v0.3.1
  • 更新依赖包,golang.org/x/oauth2 v0.11.0 => v0.12.0
  • 更新依赖包,google.golang.org/grpc v1.57.0 => v1.58.2
2023-08-23 11:09
mstmdev

Fixed

  • 修复特定字符可能会破坏文件路径的问题

Enhancements

  • SFTP新增一些集成测试
  • 支持软链接本身的同步
  • 实现通过文件查询接口获取链接信息
  • 新增go1.21支持
  • 移除go1.19支持
  • 新增symlink动作
  • FileInfo结构新增LinkTo字段
  • 新增fs.IsSymlink函数
  • Driver接口中新增SymlinkLstatReadLink方法
  • 更新README文档,将bat替换为bash来识别Run in Terminal快捷按钮
  • 更新README文档,新增Web UI小节
  • 更新依赖包,github.com/quic-go/quic-go v0.36.0 => v0.38.0
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.58 => v7.0.62
  • 更新依赖包,google.golang.org/grpc v1.56.0 => v1.57.0
  • 更新依赖包,github.com/no-src/log v0.2.3 => v0.3.0
  • 更新依赖包,golang.org/x/oauth2 v0.9.0 => v0.11.0
  • 更新依赖包,github.com/pkg/sftp v1.13.5 => v1.13.6
  • 更新依赖包,github.com/no-src/fsctl v0.1.1 => v0.1.2
  • 更新依赖包,golang.org/x/crypto v0.10.0 => v0.11.0
最后提交信息为: Bump github.com/no-src/fsctl (#240)
2023-07-02 02:11
mstmdev

Fixed

  • 修复中继文档中的示例
  • 修复停止grpc客户端导致panic的问题
  • 修复同步文件到服务端场景的测试用例

Enhancements

  • 新增dry_run命令行参数来支持启动gofs但是不真正执行同步操作
  • 新增一些MinIO的集成测试
  • 更新gofs程序的描述信息
  • parseRedisConnection函数中返回int类型的db字段
  • Loader接口中新增一些保存函数
  • 更新构建脚本,在构建之前先切换到main分支
  • 更新依赖包,github.com/gin-gonic/gin v1.9.0 => v1.9.1
  • 更新依赖包,github.com/quic-go/quic-go v0.34.0 => v0.36.0
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.55 => v7.0.58
  • 更新依赖包,google.golang.org/grpc v1.55.0 => v1.56.0
  • 更新依赖包,github.com/no-src/log v0.1.10 => v0.2.3
  • 更新依赖包,github.com/no-src/nscache v0.1.0 => v0.1.1
  • 更新依赖包,golang.org/x/oauth2 v0.8.0 => v0.9.0
  • 更新依赖包,google.golang.org/protobuf v1.30.0 => v1.31.0
最后提交信息为: Fix the scripts/build-release.sh (#207)
2023-06-01 10:31
mstmdev

Fixed

  • 修复grpcServer中的数据竞争错误
  • 移除客户端多余的权限字段
  • 修复无效赋值导致panic的问题

Enhancements

  • 新增task api来支持任务分发
  • 当关闭monitor时,释放sync组件中使用的资源
  • 新增task_client_max_worker命令行参数来限制任务客户端的最大并行工作数
  • 新增支持boltdb加载器
  • 新增conf.ToString函数和测试
  • parseFlags函数移动到独立的flag包中
  • 为任务模式添加一些集成测试
  • 使用mermaid时序图替换文本流程图
  • 更新README文档,新增任务模式一节
  • 更新README文档,介绍如何使用HTTP3协议
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.52 => v7.0.55
  • 更新依赖包,golang.org/x/crypto v0.8.0 => v0.9.0
  • 更新依赖包,golang.org/x/oauth2 v0.7.0 => v0.8.0
  • 更新依赖包,google.golang.org/grpc v1.54.0 => v1.55.0
2023-04-28 00:29
mstmdev

Fixed

  • 忽略testEncrypt函数的gocyclo检查

Enhancements

  • 将基于tcp的自定义协议修改为gRPC
  • 添加一些同步文件到服务器的集成测试
  • signal.Notify函数支持停止接受信号
  • 移除Daemon结构中的全局日志
  • conf.Parse函数修改为泛型
  • 新增conf.ParseContent函数
  • 使用bytes.TrimSuffix函数来简化代码
  • 移除syscall.SIGKILL
  • 更新README文档,新增速率限制部分
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.50 => v7.0.52
  • 更新依赖包,github.com/quic-go/quic-go v0.33.0 => v0.34.0
  • 更新依赖包,golang.org/x/crypto v0.7.0 => v0.8.0
2023-04-01 00:50
mstmdev

Fixed

  • 更新rate测试的偏差值为8

Enhancements

  • 新增-max_tran_rate命令行参数来支持在客户端和服务端限制最大传输速率
  • 新增core.FlagSet结构,避免使用全局的flag.CommandLine
  • 移除hashutilserverhttputilignoredaemonconfreport包中的全局变量
  • 新增Config.ToArgs函数,避免在daemon.Daemon中使用全局成员os.Args
  • 将fsctl移动到一个新的独立项目中 => https://github.com/no-src/fsctl
  • 更新Dockerfile中的基础镜像,alpine:3.15.4 => alpine:latest
  • versionabout包移动到internal包中
  • resource.go移动到server包中
  • 新增yamlutil
  • 新增scripts/clear-release.sh脚本来清理发布产生的文件
  • 更新scripts/build-release.sh脚本,支持macOS软件的发布
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.48 => v7.0.50
  • 更新依赖包,github.com/schollz/progressbar/v3 v3.12.2 => v3.13.1
  • 更新依赖包,golang.org/x/crypto v0.6.0 => v0.7.0
2023-03-01 10:07
mstmdev

Fixed

  • 更新README-CN文档,找回SFTP拉取客户端部分丢失的示例
  • 修复os.SyscallError中的Err成员为nil的问题

Enhancements

  • 将加密算法更改为AES
  • 新增-http3命令行参数来支持HTTP3服务端与客户端
  • 新增print命令及一些测试
  • 新增include命令及一些测试,支持在命令配置文件中引入其他的配置文件
  • sync包进行代码重构,将一些函数移动到hashutil包并添加一些测试
  • WaitDone支持多次调用Wait函数
  • 使用runtime包来获取正在使用的golang版本信息,并移除version/go_version文件和相关的脚本及代码
  • 使用atomic.Bool重新实现CBool
  • 将minio驱动的名称改为小写,并在日志中打印出来
  • clisttoplist包新增一些单元测试和基准测试
  • 代码重构,在CList结构中使用RWMutex来替换Mutex
  • encrypt添加更多的测试
  • 移除go1.18支持,并新增go1.20支持
  • 新增macOS支持
  • 更新build-docker.sh脚本,支持根据用户提供的自定义标签来构建镜像
  • 更新.gitignore,新增go.work.run/规则
  • Add govulncheck.sh script.
  • 更新README文档,新增一些流程图
  • 创建 CODE_OF_CONDUCT.md
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.46 => v7.0.48
  • 更新依赖包,golang.org/x/net v0.4.0 => v0.7.0
  • 更新依赖包,github.com/no-src/log v0.1.9 => v0.1.10
  • 更新依赖包,github.com/quic-go/quic-go v0.32.0 => v0.33.0
  • 更新依赖包,github.com/gin-gonic/gin v1.8.2 => v1.9.0
2023-01-19 17:45
mstmdev

Enhancements

  • 新增fsctl工具
  • 移除session_mode命令行参数,使用session_connection命令行参数来识别对应的session模式
  • 屏蔽report接口的加密密钥和解密密钥
  • 在report接口中新增hostname字段
  • PrintVersion函数支持指定程序名称
  • 代码重构,注册所有命令到全局变量中,并新增Name函数来展示命令的名称
  • 通过指定大小来初始化writeMap
  • 更新依赖包,github.com/gin-gonic/gin v1.8.1 => v1.8.2
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.44 => v7.0.46
  • 更新build徽章
2022-12-15 11:51
mstmdev

Fixed

  • 等待http服务器启动成功一秒钟,并添加一些错误日志

Enhancements

  • 新增command包来支持通过配置文件中的指令来执行一系列的命令
  • 添加集成测试
  • 确保runWithConfig函数中的所有代码都被执行完成
  • WaitDone替换为Done来限制调用者的行为
  • 支持调用者进行关机操作,等待初始化完成并且等待程序退出
  • 新增NotifySignal类型,发送一个信号并支持超时
  • 更新signal.Notify函数,支持由用户发送一个信号来触发关机
  • 新增test-coverage.sh脚本
  • 新增NewHash函数来支持返回特定的哈希算法实现,并更新HashFromFileHashFromFileNameHashHashFromString函数来支持自定义哈希算法
  • 新增cmd.RunWithConfigFile函数
  • 代码重构,导出接口Done
  • 代码重构,当创建Monitor实例时使用Option来传递参数
  • 更新README文档,新增session_modesession_connection命令行参数的用法
  • 更新README文档,新增进度、加密、解密相关部分
  • 更新run-gofs-docker-local-disk-with-decrypt.sh脚本,移除不需要的参数
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.42 => v7.0.44
  • 更新依赖包,github.com/no-src/log v0.1.8 => v0.1.9
  • 更新依赖包,github.com/schollz/progressbar/v3 v3.12.1 => v3.12.2
2022-11-17 14:07
mstmdev

Fixed

  • 修复在某些Windows环境下,重命名一个目录不会触发Write事件
  • 当删除或者重命名文件时,移除无效的文件信息
  • 如果文件已经存在于MinIO服务器中,则不再创建空的文件
  • 如果登录成功,不将真实密码打印到日志中
  • 通过添加ssh_key命令行参数来修复使用不安全的HostKeyCallback实现的问题
  • 修复新增一个空的cookie会导致panic的问题
  • 修复Conn中的数据竞争问题
  • 修复tcpServerclosed的数据竞争问题

Enhancements

  • 新增fs.IsSub函数和一些测试
  • 新增encryptencrypt_pathencrypt_secretdecryptdecrypt_pathdecrypt_secretdecrypt_out命令行参数来支持加密和解密
  • 新增progress命令行参数来支持打印同步进度
  • 新增sync_workers命令行参数来设置文件同步的工作进程数
  • 新增log_split_date命令行参数来支持通过日期来切分日志文件,并更新相关的README文档
  • 代码重构,导出errNilTranConn错误,并将errNilConn重命名为errNilNetConn
  • 代码重构,在tran.Conn中用字段组合代替类型内嵌
  • 代码重构,当创建Sync实例时使用Option来传递参数
  • minIOClient重命名为minIODriver,并在minIODriver中用字段组合代替类型内嵌
  • sftpClient重命名为sftpDriver,并在sftpDriver中用字段组合代替类型内嵌
  • 更新MinIO的示例,新增使用默认值的secure参数
  • 如果当前路径的父目录已经在writeMap中,则忽略当前的路径
  • 减少将未修改的文件推送到服务器
  • util/httputil包新增一些测试
  • tran包新增一些测试
  • 更新依赖包,github.com/schollz/progressbar/v3 v3.11.0 => v3.12.1
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.37 => v7.0.42
  • 更新依赖包,github.com/fsnotify/fsnotify v1.5.4 => v1.6.0
  • 更新依赖包,github.com/no-src/log v0.1.7 => v0.1.8
  • 创建codeql.yml
  • 移除聊天徽章
2022-09-26 11:01
mstmdev

Fixed

  • 修复漏洞GO-2022-0969
  • 修复未重置随机数种子
  • 修复编译错误,syscall.Timespeclinux 386平台下的成员类型为int32
  • 修复启动文件服务失败时可能会丢失部分错误日志

Enhancements

  • 新增golang 1.19支持
  • 新增支持从MinIO服务器中拉取文件,以及推送本地变更的文件到MinIO服务器
  • 报告接口新增commitcurrent_timestart_timeup_time字段
  • 报告接口中的会话连接信息打上掩码
  • 新增支持在redis连接字符串中指定redis会话存储的secret信息
  • 新增支持从SFTP服务器中拉取文件
  • 更新README文档,新增SFTP客户端部分
  • 新增SFTP客户端的docker示例脚本
  • 更新Driver接口,新增Write函数以及更新Create函数
  • Driver接口中新增DriverName函数
  • sftpClientSync结构重命名为sftpPushClientSync
  • 代码重构,导出driverPullClientMonitordriverPullClientSyncdriverPushClientSync结构
  • 新增Time.Sub函数以及测试
  • 代码重构,如果仅用来接收通知但并不关心其中的数据,则将chan bool类型替换为chan struct{}
  • fs.GetFileTime函数移动到fs/fs.go中,并添加一些函数原型
  • 移除GinHandler接口,并更新相关依赖
  • ioutil.ReadAll替换为io.ReadAll
  • 更新依赖包,github.com/gin-contrib/pprof v1.3.0 => v1.4.0
  • 更新依赖包,github.com/gin-contrib/gzip v0.0.5 => v0.0.6
  • 更新依赖包,github.com/no-src/log v0.1.4 => v0.1.7
  • 更新依赖包,github.com/minio/minio-go/v7 v7.0.34 => v7.0.37
  • 更新依赖包,golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e => v0.0.0-20220722155217-630584e8d5aa
2022-07-05 00:51
mstmdev

Fixed

  • 修复了当创建一个匹配忽略规则的目录时,其子目录中不匹配忽略规则的文件将无法同步的问题

Enhancements

  • 新增支持同步变更文件到sftp服务器
  • 新增支持通过http浏览sftp服务器上的文件
  • 使用retry_*命令行参数来控制sftp服务器的断线重连规则
  • 更新Dockerfile,设置环境变量CGO_ENABLED=0来禁用动态链接,以便在Docker中运行
  • build-release.sh脚本中删除用于发布版本的-tags netgo编译参数
  • 新增[filepath][regexp]开关来控制忽略文件的规则解析器,默认为[filepath]
  • 支持将gofs作为一个可导入包导入使用
  • 新增RunWithArgs函数,使用以程序名称开始的指定命令行参数运行gofs程序
  • 新增VFS.Addr函数来返回服务端地址
  • 导出fs.toDeletedPath函数
  • 跳过/favicon.ico路径的访问日志
  • 新增log_format命令行参数来设置日志输出的格式,当前支持textjson,默认为text
  • 更新依赖包并修复不兼容的代码,github.com/no-src/log v0.1.3 => v0.1.4
  • 更新依赖包,github.com/gin-gonic/gin v1.8.0 => v1.8.1
  • 更新build-docker.sh脚本,删除指定标签的镜像,并在构建成功后删除虚悬镜像
2022-06-05 22:48
mstmdev

Fixed

  • 修复当文件服务器启动失败时程序没有正确退出

Enhancements

  • 新增tls_insecure_skip_verify命令行参数来控制客户端是否验证服务器的证书链和主机名
  • 新增httputil.NewTLSConfig函数来减少重复代码
  • 更新docker示例脚本,新增WORKDIR环境变量,并使用GOFS_SERVER_ADDR环境变量作为生成证书的主机名
  • 新增session_modesession_connection命令行参数来支持切换不同的会话存储模式,当前支持memory[1]redis[2],默认为memory[1]
  • 新增Run函数让main函数保持干净
  • 新增更多可选的哈希算法,并且添加checksum_algorithm命令行参数用于设置默认的哈希算法
  • 更新README文档,新增中继部分
  • 更新依赖包,github.com/gin-gonic/gin v1.7.7 => v1.8.0
  • about命令行参数新增docker镜像仓库地址
2022-05-12 23:43
mstmdev

Enhancements

  • 添加Docker支持和一些Docker示例脚本
  • 添加build-release.sh脚本,为linux和windows系统构建发布文件
  • 新增支持使用v命令行参数打印go版本信息
  • 添加sync_delay flagsync_delay_eventssync_delay_time命令行参数来支持同步延迟并更新README文档
  • 添加log_sample_rate命令行参数来设置采样记录器的采样率,取值范围从0到1,默认为1
  • 添加force_checksum命令行参数,如果源文件的文件大小和文件修改时间等于目标文件,且force_checksumfalse,则忽略当前文件传输
  • 新增dependabot.yml
  • 更新github action,codecov/codecov-action 2 => 3
  • 更新github action,actions/setup-go 2 => 3
  • 更新github action,actions/checkout 2 => 3
  • 更新依赖包,github.com/no-src/log v0.1.2 => v0.1.3
  • 更新依赖包,github.com/fsnotify/fsnotify v1.5.1 => v1.5.4
  • 更新依赖包,github.com/gin-contrib/sessions v0.0.4 => v0.0.5
  • 对测试代码进行重构
2022-04-20 00:58
mstmdev

Enhancements

  • 更改最小支持版本为go1.18,移除对go1.17的支持
  • 新增report命令行参数来支持启用报告接口的路由并开始收集报告数据,必须先启用manage命令行参数
  • interface{}类型更新为any
  • 新增TopList结构体和测试,用于存储指定容量的一些元素,超过指定容量的最老的旧元素将被丢弃
  • util/timeutil包中新增Time结构体和测试
  • 导出event结构体和它的字段,并且添加一个Time字段
  • hashutil包添加基准测试,并且将TestHashValues测试移动到hash_value_test.go中
  • 新增checkpoint_count命令行参数来使用文件检查点来减少传输未修改的文件块,并为其更新相应的README文档
  • 为文件查询接口新增need_checkpoint参数来支持返回文件检查点的哈希值 ,并为其更新相应的server/README.md文档
  • 更新依赖包,github.com/no-src/log v0.1.1 => v0.1.2
  • 移除未使用的httputil.HttpPostFileWithCookie函数
  • 移除no_server标签,不再支持移除文件服务器
  • 新增hashutil.CheckpointsMD5FromFileName函数与测试,计算整个文件、第一个文件块以及一些检查点的哈希值
  • 新增hashutil.CompareHashValuesWithFileName函数与测试,计算文件的哈希并返回最后一个连续命中的HashValue
  • 添加checksum命令行参数来计算和打印source文件的校验和
2022-03-24 02:22
mstmdev

Fixed

  • 修复代码圈复杂度过高的问题

Enhancements

  • 新增支持go1.18
  • 支持在写入文件块到远程推送服务器之前发起一个比较文件块哈希值的请求
  • 新增MD5FromFileChunk函数用于计算文件块的哈希值,并为其添加相应的测试
  • 新增IsEOFIsNonEOF函数以及对应的测试
  • util/*.go匹配的代码移动包对应的*util包中,并为其添加相应的测试
  • 移除+build指令
  • 移除vfsValue.Get函数
  • 移除switch中的break
  • MD5函数重命名为MD5FromString
  • 添加一些测试
  • fs包的测试中使用模拟函数处理磁盘相关操作
  • 更新server/README.md文档,修复表格格式并更新文件推送接口的文档
最后提交信息为: Remove break in the switch
2022-03-11 15:27
mstmdev

Fixed

  • 修复EventLog写入一个空的Writer将会导致panic
  • 修复DoWithContext函数在发生panic时会返回一个空值
  • 修复多次调用Done或者DoneWithError将会导致死锁的问题
  • 修复golint警告

Enhancements

  • pprof命令行参数重命名为manage
  • pprof_private命令行参数重命名为manage_private
  • 减少上传和写入相同的文件到远程推送服务器
  • 新增conf命令行参数来支持从配置文件中代替命令行参数来加载配置信息,目前支持yamljson格式
  • 新增core.Duration结构体替换time.Duration用于自定义序列化行为
  • 新增配置API以yamljson格式来读取程序配置
  • 新增awesome徽章
  • 设置测试运行的超时时间为10分钟
  • 添加一些测试
  • 更新README文档,新增在Docker中运行部分,chunk_size命令行参数的用法,以及如何使用配置文件部分
  • 更新server/README.md文档,新增文件推送接口部分的文档
最后提交信息为: Add tests for the eventlog package
2022-03-01 17:09
mstmdev

Fixed

  • 修复代码圈复杂度过高的问题
  • 修复创建了过多的同时活动的goroutine导致溢出
  • 修复在远程磁盘模式和远程推送模式下写入空文件不起作用的问题
  • 修复在本地磁盘模式下写入空文件或相同长度的文件不起作用的问题

Enhancements

  • 添加chunk_size命令行参数以支持按块上传大文件
Go
1
https://gitee.com/no-src/gofs.git
git@gitee.com:no-src/gofs.git
no-src
gofs
gofs

搜索帮助