# go-dataserver **Repository Path**: jcstone/godataserver ## Basic Information - **Project Name**: go-dataserver - **Description**: 基于go gin 开发的一个简单的文件数据服务API接口,支持公开文件数据服务和token验证的文件数据服务。验证支持简单的用户名密码验证和数字图片+用户名密码验证方式。 - **Primary Language**: Go - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-26 - **Last Updated**: 2025-09-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 关于本项目 dataserver 是一个基于GO语言的文件数据服务项目,它提供了一个简单的文件数据服务接口,用于获取文件数据。 它支持公开的文件数据服务和受保护的文件数据服务。 公开的文件数据服务可以被任意客户端访问,而受保护的文件数据服务只能被授权的客户端访问。 授权的客户端需要在请求中携带有效的JWT令牌,才能访问受保护的文件数据服务。 JWT令牌是在客户端登录成功后,由服务器生成的一个字符串,用于标识客户端的身份。 客户端在每次请求受保护的文件数据服务时,需要在请求头中携带JWT令牌,服务器会验证令牌的有效性, 如果令牌有效,则返回文件数据;如果令牌无效,则返回401 Unauthorized错误。 ## 环境变量配置 ``` env # 日志级别 依次debug、info、warning、ErrorLevel、DPanicLevel、PanicLevel、FatalLevel LOG_LEVEL=debug # GIN_MODE可选值有debug、release。 # debug:日志仅输出到控制台;release:日志输出到控制台同时写入到日志文件 GIN_MODE=debug # GIN_MODE=release # 服务器地址 ServerHost=127.0.0.1 # 服务端口 ServerPort=19009 # PublicDir 公开的文件数据服务目录。如缺省则默认为服务程序根目录下的PublicData目录 PublicDir=C:\Workspace\DataServer # ProtectedDir 受保护的文件数据服务目录。如缺省则默认为服务程序根目录下的ProtectedData目录 # ProtectedDir=C:\Workspace\DataServer # UserSimpleLogin 是则用户登录采用简单的用户名密码登录方式,否则采用图片数字验证码的形式登录 UserSimpleLogin=true ``` ## 权限配置 用户登录账号详见项目根目录下的user.json文件。 如: ``` json [ { "username": "user1", "password": "password123" }, { "username": "user2", "password": "password456" }, { "username": "admin", "password": "admin" } ] ``` ## 登录接口 ### UserSimpleLogin=true时 提供/login接口,用于用户登录。 登录成功后,返回JWT令牌。 JWT令牌需要在后续的请求中携带查询参数token,格式为:token= ### UserSimpleLogin=false时 - 先从/captcha接口获取验证码图片和验证码ID。 - 验证码图片需要用户自己识别,验证码ID需要用户在登录时提交。 - 然后通过/logincaptcha接口提交用户名、密码和验证码ID,及验证结果数字,即以用户名密码和图片验证码的方式登录。 - 登录成功后,返回JWT令牌。 ### 受保护的数据目录下的文件访问 登录后,访问文件目录时,JWT令牌需要在后续的请求中携带查询参数token,格式为: ``` cmd /api/protected/data/{目录下的文件名}?token= ``` 注意: 用户访问/api/public/data/{目录下的文件名}接口,无需登录。 ## 本程序部署 ### 部署在Windows服务器上 - 下载最新的Windows版本的可执行文件。 - 配置环境变量(.env)。 - 配置权限文件User.json文件(用户名密码设置)。 - 配置数据目录。 - 启动服务。 ### 部署在Linux服务器上 - 下载最新的Linux版本的可执行文件。 - 配置环境变量(.env)。 - 配置权限文件User.json文件(用户名密码设置)。 - 配置数据目录。 - 启动服务。 ## 接口文档 详见Http[s]://{ServerHost}:{ServerPort}/swagger/index.html