Skip to content

Commit

Permalink
Merge pull request #89 from helloxz/dev
Browse files Browse the repository at this point in the history
3.2.0
  • Loading branch information
helloxz authored Jan 9, 2023
2 parents d8a5906 + 5badfae commit 5d60295
Show file tree
Hide file tree
Showing 46 changed files with 6,461 additions and 5,368 deletions.
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

用户登录界面:

![](https://img.rss.ink/imgs/2022/10/26/ab87df26eb6de9af.png)
![](https://img.rss.ink/imgs/2023/01/09/2b77129740a02514.png)

多文件上传界面:

Expand All @@ -18,12 +18,16 @@

![](https://img.rss.ink/imgs/2022/10/26/459da25f39ea1b7c.png)

后台管理界面:

![](https://img.rss.ink/imgs/2023/01/09/b5e42ed72fa05cb0.png)

## 功能特点

- [x] 目录列表
- [x] MarkDown预览
- [x] 支持搜索当前目录与全局搜索(备注:全局搜索仅Linux支持)
- [x] 视频预览(支持H.264编码的`.mp4`格式及`.m3u8`
- [x] 视频预览(支持H.264编码的`.mp4`格式及`.m3u8`,支持调用外部播放器(PotPlayer等)
- [x] 音频预览
- [x] 图片预览
- [x] 代码与文本预览,支持部分代码高亮
Expand All @@ -35,12 +39,14 @@
- [x] 基本的文件管理(上传、重命名、删除、新建目录)
- [x] 文件上传
- [x] API支持
- [ ] 后台管理(站点信息设置等)
- [ ] 文件复制、移动
- [x] 后台管理
- [x] 音乐播放列表
- [ ] PDF文件预览
- [ ] 私有文件
- [ ] 私有文件分享
- [ ] 音乐播放列表
- [ ] 文件复制、移动
- [ ] 离线下载
- [ ] WEBDAV支持

## 快速开始

Expand Down Expand Up @@ -77,7 +83,7 @@ ___

* 论坛:[https://xiawen.cc/t/zdir](https://xiawen.cc/t/zdir)
* QQ:446199062
* QQ群:932795364
* QQ群:283604395
* TG:xiaozme


Expand Down
100 changes: 97 additions & 3 deletions cli/Init.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,17 @@ import (
)

// 命令行初始化
func Init() {
func InitConfig() {
//配置文件目录
config_dir := "data/config"
//配置文件路径
config_file := config_dir + "/config.ini"
//检查配置文件是否存在,如果存在了,则不进行初始化
_, err := os.Stat("data/config.ini")
_, err := os.Stat(config_file)
//返回的error为空,说明文件存在,存在则不允许再次初始化
if err == nil {
// fmt.Printf("Configuration file exists, skip this step.\n")
// return
fmt.Printf("Initialization failed, the configuration file already exists.\n")
os.Exit(1)
} else {
Expand All @@ -26,8 +32,18 @@ func Init() {
os.Exit(1)
}

//如果配置文件目录不存在,则创建
if !V_dir(config_dir) {
err := os.MkdirAll(config_dir, 0755)

if err != nil {
fmt.Printf("%s\n", err)
os.Exit(1)
}
}

//创建目标文件
target, t_error := os.Create("data/config.ini")
target, t_error := os.Create(config_file)
if t_error != nil {
fmt.Printf("%s\n", t_error)
os.Exit(1)
Expand Down Expand Up @@ -65,6 +81,14 @@ func Init() {

// linux添加服务
func linux_service() {
//判断service是否存在,不存在则创建
service_file := "/etc/systemd/system/zdir.service"
if v_is_file(service_file) {
fmt.Printf("Service file exists, skip this step.\n")
return
}

//服务文件不存在,继续执行
_, err := exec.Command("bash", "sh/reg_service.sh").Output()

if err != nil {
Expand All @@ -85,3 +109,73 @@ func windows_service() {
os.Exit(1)
}
}

// 创建数据库文件,这个方法暂时没用了,改到UpdateSQL.go里面了
func create_db_file() {
// 创建文件,在此之前检查目录是否存在
// 检查文件夹是否存在
db_dir := "data/db"

if _, err := os.Stat(db_dir); os.IsNotExist(err) {
// 创建文件夹
err := os.Mkdir(db_dir, 0755)
if err != nil {
fmt.Println(err)
return
}
}

//数据库文件路径
db_file := "data/db/zdir.db3"
//判断文件是否存在,存在就不再创建
_, err := os.Stat(db_file)

//如果文件存在,则不再创建
if err == nil {
fmt.Println("The database file already exists, skip this step.")
return
}

//创建文件
file, err := os.Create(db_file)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
fmt.Println("Database file created successfully!")
}

// 验证是否是一个文件
func v_is_file(fpath string) bool {
//获取文件信息
finfo, err := os.Stat(fpath)

//如果读取文件出现错误,比如不存在的情况,返回false
if err != nil {
return false
} else {
//如果是文件夹,返回false
if finfo.IsDir() {
return false
} else {
return true
}
}
}

// 验证是否是文件夹
func V_dir(dir string) bool {
dirinfo, err := os.Stat(dir)

if err != nil {
//fmt.Println(err)
return false
}

if dirinfo.IsDir() {
return true
} else {
return false
}
}
12 changes: 11 additions & 1 deletion cli/Version.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@ package cli

import "fmt"

var Version string
var VersionDate string

// 赋值全局变量
func init() {
Version = "3.2.0"
VersionDate = "20230109"
}

// 命令行打印版本
func GetVersion() {
fmt.Printf("Release 3.1.1\n")
fmt.Printf(Version + "-" + VersionDate + "\n")
}
8 changes: 5 additions & 3 deletions compile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ OS=$1
ARCH=$2

#Zdir版本号
VERSION=3.1.1
VERSION=3.2.0

#编译linux
compile_linux() {
Expand Down Expand Up @@ -38,7 +38,8 @@ compile_linux() {
upx -9 main
#重命名程序
mv main zdir
tar -zcvf zdir_${VERSION}_linux_${ARCH}.tar.gz --exclude=.gitignore --exclude=docker --exclude=.git --exclude=*.gz --exclude=cli --exclude=config --exclude=controller --exclude=data/public/* --exclude=logs/* --exclude=router --exclude=compile.sh --exclude=config.ini --exclude=go.mod --exclude=go.sum --exclude=main.go --exclude=run.* --exclude=zdir.exe .
exclude="--exclude=model --exclude=data/db --exclude=.gitignore --exclude=docker --exclude=.git --exclude=*.gz --exclude=cli --exclude=config --exclude=controller --exclude=data/public/* --exclude=logs/* --exclude=router --exclude=compile.sh --exclude=config.ini --exclude=go.mod --exclude=go.sum --exclude=main.go --exclude=run.* --exclude=zdir.exe ."
tar -zcvf zdir_${VERSION}_linux_${ARCH}.tar.gz ${exclude}
echo "Compiled successfully.(Linux)"
reset_golang_env
}
Expand All @@ -60,7 +61,8 @@ compile_windows() {
#重命名程序
mv main.exe zdir.exe
#打包程序
tar -zcvf zdir_${VERSION}_windows_amd64.tar.gz --exclude=.gitignore --exclude=docker --exclude=.git --exclude=sh --exclude=*.gz --exclude=cli --exclude=config --exclude=controller --exclude=data/public/* --exclude=logs/* --exclude=router --exclude=compile.sh --exclude=config.ini --exclude=go.mod --exclude=go.sum --exclude=main.go --exclude=zdir .
exclude="--exclude=model --exclude=data/db --exclude=.gitignore --exclude=docker --exclude=.git --exclude=sh --exclude=*.gz --exclude=cli --exclude=config --exclude=controller --exclude=data/public/* --exclude=logs/* --exclude=router --exclude=compile.sh --exclude=config.ini --exclude=go.mod --exclude=go.sum --exclude=main.go --exclude=zdir ."
tar -zcvf zdir_${VERSION}_windows_amd64.tar.gz ${exclude}
echo "Compiled successfully.(Windows)"
reset_golang_env
}
Expand Down
58 changes: 49 additions & 9 deletions config/ini_config.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,30 @@
package config

import (
"encoding/base64"
"fmt"
"os"

"github.com/gin-gonic/gin"
"github.com/spf13/viper"
)

func Load_ini() {
viper.SetConfigFile("data/config.ini") // 指定配置文件路径
func InitConfig() {
//默认配置文件
default_config_file := "data/config/config.ini"
//备用配置文件
backup_config_file := "data/config.ini"
var config_file string

//首先读取默认配置文件,如果不存在,则读取备用配置文件
if v_is_file(default_config_file) {
config_file = default_config_file
} else {
config_file = backup_config_file
}

viper.SetConfigFile(config_file) // 指定配置文件路径

//指定ini类型的文件
viper.SetConfigType("ini")
err := viper.ReadInConfig() // 读取配置信息
Expand All @@ -20,39 +37,40 @@ func Load_ini() {
// 返回公共存储的路径
func Public_path() string {
//载入配置文件,通过cfg调用
Load_ini()
dir := viper.GetString("storages.public_path")
return dir
}

// 返回公共存储的域名
func Public_domain() string {
func Public_domain(c *gin.Context) string {
//获取请求host
host := c.Request.Host
//载入配置文件,通过cfg调用
Load_ini()
domain := viper.GetString("storages.public_domain")
//如果公共存储域名是空的,则加上public
if domain == "" {
domain = "http://" + host + "/public"
}
return domain
}

// 返回端口
func Listen() string {
//载入配置文件,通过cfg调用
Load_ini()
info := viper.GetString("servers.port")
return info
}

// 返回gin运行模式
func RunMode() string {
//载入配置文件,通过cfg调用
Load_ini()
info := viper.GetString("servers.RunMode")
return info
}

// 返回站点信息
func Site_info() (string, string) {
//载入配置文件,通过cfg调用
Load_ini()
title := viper.GetString("sites.title")
name := viper.GetString("sites.name")

Expand All @@ -62,9 +80,31 @@ func Site_info() (string, string) {
// 返回用户信息
func User_info() (string, string) {
//载入配置文件,通过cfg调用
Load_ini()
username := viper.GetString("users.username")
password := viper.GetString("users.password")

return username, password
}

func Base64(str string) string {
encodeStr := base64.StdEncoding.EncodeToString([]byte(str))
return encodeStr
}

// 验证是否是一个文件
func v_is_file(fpath string) bool {
//获取文件信息
finfo, err := os.Stat(fpath)

//如果读取文件出现错误,比如不存在的情况,返回false
if err != nil {
return false
} else {
//如果是文件夹,返回false
if finfo.IsDir() {
return false
} else {
return true
}
}
}
Loading

0 comments on commit 5d60295

Please sign in to comment.