Compare commits

..

64 Commits

Author SHA1 Message Date
微凉 a22903533e :bug: set random seed 2022-02-04 16:08:15 +08:00
微凉 86cda58b22 🚧 echo password 2022-02-04 14:58:48 +08:00
微凉 7804cf9d5c 🔒 random webdav admin password 2022-02-04 14:39:11 +08:00
微凉 2bb7036110 🔧 change logo 2022-02-03 21:28:13 +08:00
微凉 ba545555cf 📝 update readme 2022-02-03 21:00:08 +08:00
微凉 be55ca690c 🔧 change default logo 2022-02-03 20:43:33 +08:00
微凉 9013add749 🔒 random initial password 2022-02-03 12:27:50 +08:00
微凉 3201b6da76 :bug: fix #376 windows webdav upload 2022-02-02 18:48:34 +08:00
微凉 feb42f1f4b :fire: delete proxy interface 2022-02-02 18:03:54 +08:00
微凉 6f14d0eb5c 🎇 baidu disk support 2022-02-02 17:32:11 +08:00
微凉 7530d8f5b2 :bug: fix lanzou for download change 2022-02-01 22:33:19 +08:00
微凉 e25fe05a53 ✨ yandex disk support 2022-02-01 17:15:11 +08:00
微凉 8e0ab8f780 :fire: remove onedrive refresh token cron 2022-02-01 15:20:17 +08:00
微凉 cb2a3c2b42 🎨 change proxy interface 2022-02-01 14:28:21 +08:00
微凉 1b6ec94f33 :bug: fix s3 custom host 2022-02-01 11:34:32 +08:00
微凉 cb23edc1fe :bug: fix #462 check connect while get ftp client 2022-01-31 11:13:29 +08:00
微凉 6fd05d7d72 :bug: fix connMap not init 2022-01-30 00:55:12 +08:00
微凉 f26ac57569 :bug: fix ftp conn not store 2022-01-30 00:04:31 +08:00
微凉 2434ac54d0 :bug: fix webdav 2022-01-29 18:36:22 +08:00
微凉 f25b557327 📝 update readme 2022-01-29 15:31:06 +08:00
微凉 81a0706d01 ✨ 189 chunk upload 2022-01-29 11:16:40 +08:00
微凉 5f6b576cbf 🔧 switch cdn to jsdelivr 2022-01-28 23:29:38 +08:00
微凉 549877f71e :fire: Delete Text 2022-01-28 23:21:11 +08:00
微凉 c6a5ba9b91 🚧 189 chunk upload 2022-01-28 19:51:54 +08:00
微凉 1a69d80489 🎨 Pull away Path 2022-01-28 11:04:56 +08:00
微凉 b797f4302c 🎇 use tempFile to cal md5 2022-01-27 23:48:29 +08:00
微凉 bf9aa5c3d3 🔒 not allowed use relative path of native 2022-01-27 15:10:33 +08:00
微凉 7390e19a7a 🔒 not allowed down with relative path 2022-01-27 15:05:17 +08:00
微凉 b31a12a0cc 🔒 not allowed access using relative path for native 2022-01-27 14:54:20 +08:00
微凉 26ce001782 🎇 add ocr for 189 2022-01-27 12:34:49 +08:00
微凉 a2c7ff3262 ✏️ Invalid Token 2022-01-26 16:27:38 +08:00
微凉 8fc7c716c0 ✨ copy api 2022-01-26 14:07:51 +08:00
微凉 c70fc3fc4b ✨ finish teambition chunk upload 2022-01-26 14:05:35 +08:00
微凉 df513b7dc0 ✨ teambition upload (<= 20 MB) 2022-01-23 14:03:04 +08:00
微凉 2a9598f4c6 :bug: fix #407 189cloud use local sort 2022-01-21 19:01:33 +08:00
微凉 224c20779c 🔧 add webp to image types 2022-01-20 23:01:59 +08:00
微凉 5d722298cb 📝 update readme 2022-01-20 22:38:53 +08:00
微凉 4bcc6359e3 💚 fix docker build 2022-01-20 20:52:14 +08:00
微凉 4144afcc92 :bug: fix #397 139yun file size overflow int32 2022-01-20 20:35:01 +08:00
微凉 2ad27046fb 🎨 split build and docker 2022-01-20 20:30:58 +08:00
微凉 9516ac6718 🎇 finish move api 2022-01-20 19:58:25 +08:00
微凉 de638c7c36 :bug: fix 123pan move 2022-01-20 19:58:10 +08:00
微凉 c6b34a033b 🔧 add swf to image types 2022-01-20 14:40:59 +08:00
微凉 31de3399d2 💚 fix musl prebuilt 2022-01-20 14:23:31 +08:00
微凉 0dc2ca019f 💚 fix musl prebuilt 2022-01-20 13:47:21 +08:00
微凉 04724f7f0f 👷 add prebuilt for musl-libc 2022-01-20 12:53:49 +08:00
微凉 75a983a965 :bug: fix webdav can't get file with password 2022-01-19 18:46:32 +08:00
微凉 e12d8bb8ca ⬆️ upgrade gorm 2022-01-19 09:15:00 +08:00
微凉 68f1ccfed4 ✨ add sslmode for postgres 2022-01-19 09:14:31 +08:00
微凉 54272db59c 🚧 add folder api 2022-01-18 19:08:44 +08:00
微凉 6d34e88360 🎇 hide files while webdav visitor 2022-01-18 18:48:08 +08:00
微凉 0a901a2eb0 :bug: fix can't find zhimg for dev 2022-01-18 18:19:58 +08:00
微凉 e1671a0511 🚧 add move api 2022-01-18 16:13:07 +08:00
微凉 dcb4ec695f ✨ rename and mkdir api 2022-01-18 14:31:52 +08:00
微凉 4a21b6fe1d :fire: close res.body for proxy 2022-01-18 11:29:32 +08:00
微凉 96a237902b :bug: close #379 fix google drive can't get text file 2022-01-17 09:54:19 +08:00
微凉 cfb51e9f80 ✨ Extract folder 2022-01-16 16:38:41 +08:00
微凉 e952f1c243 :fire: Optimize 189 cloud get client 2022-01-16 16:05:32 +08:00
微凉 07d6ca27db :bug: Forbid MediaTrack to create a new folder with the same name 2022-01-16 13:21:29 +08:00
微凉 8245da485a :bug: fix s3 for #362 2022-01-15 20:24:57 +08:00
微凉 5c759217cf :bug: fix some lanzou can't down #360 2022-01-15 20:10:42 +08:00
微凉 0648fdebc2 ♻️ solve circular dependency 2022-01-15 19:59:24 +08:00
微凉 ed670e528f :bug: fix 139Yun error phone close #365 2022-01-15 19:44:22 +08:00
微凉 2473309a51 🎇 execute save while delete account 2022-01-15 19:36:37 +08:00
79 changed files with 2883 additions and 673 deletions
+1 -38
View File
@@ -48,41 +48,4 @@ jobs:
uses: actions/upload-artifact@v2
with:
name: artifact
path: alist/build
docker:
name: Docker
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: xhofe/alist
- name: Set up Node
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Build web
run: |
bash build.sh web
mv dist/* public
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: xhofe
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x
path: alist/build
+46
View File
@@ -0,0 +1,46 @@
name: build_docker
on:
push:
branches: [ v2 ]
pull_request:
branches: [ v2 ]
jobs:
build_docker:
name: Docker
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: xhofe/alist
- name: Set up Node
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Build web
run: |
bash build.sh web
mv dist/* public
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: xhofe
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x
+1 -38
View File
@@ -43,41 +43,4 @@ jobs:
- name: Release
uses: softprops/action-gh-release@v1
with:
files: alist/build/compress/*
docker:
name: Docker
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: xhofe/alist
- name: Set up Node
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Build web
run: |
bash build.sh cdn
mv dist/* public
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: xhofe
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x
files: alist/build/compress/*
+45
View File
@@ -0,0 +1,45 @@
name: release_docker
on:
push:
tags:
- '*'
jobs:
docker_release:
name: Docker
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
images: xhofe/alist
- name: Set up Node
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Build web
run: |
bash build.sh cdn
mv dist/* public
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: xhofe
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x
+1 -1
View File
@@ -3,7 +3,7 @@ LABEL stage=go-builder
WORKDIR /app/
COPY ./ ./
RUN apk add --no-cache bash git go gcc musl-dev; \
sh build.sh docker
bash build.sh docker
FROM alpine:edge
LABEL MAINTAINER="i@nn.ci"
+5 -2
View File
@@ -1,5 +1,5 @@
<div align="center">
<h3><a href="https://alist.nn.ci">Alist</a></h3>
<a href="https://alist.nn.ci"><img height="100px" alt="logo" src="https://cdn.jsdelivr.net/gh/alist-org/assets@main/logo.svg"/></a>
<p><em>🗂️Another file list program that supports multiple storage, powered by Gin and React.</em></p>
<a href="https://github.com/Xhofe/alist/releases"><img src="https://img.shields.io/github/release/Xhofe/alist?style=flat-square" alt="latest version"></a>
<a href="https://github.com/Xhofe/alist/discussions"><img src="https://img.shields.io/github/discussions/Xhofe/alist?color=%23ED8936&style=flat-square" alt="discussions"></a>
@@ -12,6 +12,7 @@
</div>
---
English | [中文](./README_cn.md)
@@ -35,6 +36,8 @@ English | [中文](./README_cn.md)
- [x] Teambition([China](https://www.teambition.com/ ),[International](https://us.teambition.com/ ))
- [x] [Mediatrack](https://www.mediatrack.cn/)
- [x] [139yun](https://yun.139.com/) (Personal, Family)
- [x] [Yandex.Disk](https://disk.yandex.com/)
- [x] [Baidu Disk](http://pan.baidu.com/)
- [x] Easy to deploy and out-of-the-box
- [x] File preview (PDF, markdown, code, plain text, ...)
- [x] Image preview in gallery mode
@@ -50,7 +53,7 @@ English | [中文](./README_cn.md)
- [x] Cloudflare workers proxy
- [x] File/Folder package download
- [x] Support video list playback and subtitles(ass,srt,vtt)
- [x] Web upload(Can allow visitors to upload) and delete
- [x] Web upload(Can allow visitors to upload), delete, mkdir, rename, move and copy
## Discussion
+5 -2
View File
@@ -1,5 +1,5 @@
<div align="center">
<h3><a href="https://alist.nn.ci">Alist</a></h3>
<a href="https://alist.nn.ci"><img height="100px" alt="logo" src="https://cdn.jsdelivr.net/gh/alist-org/assets@main/logo.svg"/></a>
<p><em>🗂️一个支持多存储的文件列表程序,使用 Gin 和 React 。</em></p>
<a href="https://github.com/Xhofe/alist/releases"><img src="https://img.shields.io/github/release/Xhofe/alist?style=flat-square" alt="latest version"></a>
<a href="https://github.com/Xhofe/alist/discussions"><img src="https://img.shields.io/github/discussions/Xhofe/alist?color=%23ED8936&style=flat-square" alt="discussions"></a>
@@ -11,6 +11,7 @@
</a>
</div>
---
[English](./README.md) | 中文
@@ -34,6 +35,8 @@
- [x] Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ ))
- [x] [分秒帧](https://www.mediatrack.cn/)
- [x] [和彩云](https://yun.139.com/) (个人云, 家庭云)
- [x] [Yandex.Disk](https://disk.yandex.com/)
- [x] [百度云](http://pan.baidu.com/)
- [x] 部署方便,开箱即用
- [x] 文件预览(PDF、markdown、代码、纯文本……)
- [x] 画廊模式下的图像预览
@@ -49,7 +52,7 @@
- [x] Cloudflare workers 中转
- [x] 文件/文件夹打包下载
- [x] 支持视频列表播放和字幕(ass,srt,vtt)
- [x] 网页上传(可以允许访客上传),删除
- [x] 网页上传(可以允许访客上传),删除,新建文件夹,重命名,移动,复制
## 讨论
+1 -1
View File
@@ -22,7 +22,7 @@ func Init() bool {
log.Errorf(err.Error())
return false
}
log.Infof("current password: %s", pass.Value)
fmt.Printf("your password: %s\n", pass.Value)
return false
}
server.InitIndex()
+2 -1
View File
@@ -19,6 +19,7 @@ func InitAccounts() {
if !ok {
log.Errorf("no [%s] driver", account.Type)
} else {
log.Infof("start init account: [%s], type: [%s]", account.Name, account.Type)
err := driver.Save(&accounts[i], nil)
if err != nil {
log.Errorf("init account [%s] error:[%s]", account.Name, err.Error())
@@ -27,4 +28,4 @@ func InitAccounts() {
}
}
}
}
}
+5
View File
@@ -5,6 +5,7 @@ import (
"github.com/Xhofe/alist/utils"
log "github.com/sirupsen/logrus"
"io/ioutil"
"os"
)
// InitConf init config
@@ -41,4 +42,8 @@ func InitConf() {
if err != nil {
log.Fatalf("update config struct error: %s", err.Error())
}
err = os.MkdirAll("data/temp", 0700)
if err != nil {
log.Fatalf("create temp dir error: %s", err.Error())
}
}
+4 -1
View File
@@ -12,6 +12,9 @@ func InitLog() {
log.SetLevel(log.DebugLevel)
log.SetReportCaller(true)
}
if conf.Password {
log.SetLevel(log.WarnLevel)
}
log.SetFormatter(&log.TextFormatter{
//DisableColors: true,
ForceColors: true,
@@ -29,4 +32,4 @@ func init() {
flag.BoolVar(&conf.Password, "password", false, "print current password")
flag.Parse()
InitLog()
}
}
+2 -3
View File
@@ -60,14 +60,13 @@ func InitModel() {
}
case "postgres":
{
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai",
databaseConfig.Host, databaseConfig.User, databaseConfig.Password, databaseConfig.Name, databaseConfig.Port)
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=%s TimeZone=Asia/Shanghai",
databaseConfig.Host, databaseConfig.User, databaseConfig.Password, databaseConfig.Name, databaseConfig.Port, databaseConfig.SslMode)
db, err := gorm.Open(postgres.Open(dsn), gormConfig)
if err != nil {
log.Errorf("failed to connect database:%s", err.Error())
}
conf.DB = db
}
default:
log.Fatalf("not supported database type: %s", databaseConfig.Type)
+19 -7
View File
@@ -3,6 +3,7 @@ package bootstrap
import (
"github.com/Xhofe/alist/conf"
"github.com/Xhofe/alist/model"
"github.com/Xhofe/alist/utils"
log "github.com/sirupsen/logrus"
"gorm.io/gorm"
"strings"
@@ -27,7 +28,7 @@ func InitSettings() {
},
{
Key: "password",
Value: "alist",
Value: utils.RandomStr(8),
Description: "password",
Type: "string",
Access: model.PRIVATE,
@@ -35,7 +36,7 @@ func InitSettings() {
},
{
Key: "logo",
Value: "https://store.heytapimage.com/cdo-portal/feedback/202112/05/1542f45f86b8609495b69c5380753135.png",
Value: "https://cdn.jsdelivr.net/gh/alist-org/logo@main/can_circle.svg",
Description: "logo",
Type: "string",
Access: model.PUBLIC,
@@ -43,7 +44,7 @@ func InitSettings() {
},
{
Key: "favicon",
Value: "https://store.heytapimage.com/cdo-portal/feedback/202112/05/1542f45f86b8609495b69c5380753135.png",
Value: "https://cdn.jsdelivr.net/gh/alist-org/logo@main/logo.svg",
Description: "favicon",
Type: "string",
Access: model.PUBLIC,
@@ -157,7 +158,7 @@ func InitSettings() {
},
{
Key: "WebDAV username",
Value: "alist_admin",
Value: "admin",
Description: "WebDAV username",
Type: "string",
Access: model.PRIVATE,
@@ -165,7 +166,7 @@ func InitSettings() {
},
{
Key: "WebDAV password",
Value: "alist_admin",
Value: utils.RandomStr(8),
Description: "WebDAV password",
Type: "string",
Access: model.PRIVATE,
@@ -189,7 +190,7 @@ func InitSettings() {
},
{
Key: "Visitor WebDAV username",
Value: "alist_visitor",
Value: "guest",
Description: "Visitor WebDAV username",
Type: "string",
Access: model.PRIVATE,
@@ -197,7 +198,7 @@ func InitSettings() {
},
{
Key: "Visitor WebDAV password",
Value: "alist_visitor",
Value: "guest",
Description: "Visitor WebDAV password",
Type: "string",
Access: model.PRIVATE,
@@ -219,6 +220,14 @@ func InitSettings() {
Access: model.PUBLIC,
Group: model.FRONT,
},
{
Key: "ocr api",
Value: "https://api.xhofe.top/ocr/file/json",
Description: "Used to identify verification codes",
Type: "string",
Access: model.PRIVATE,
Group: model.BACK,
},
}
for i, _ := range settings {
v := settings[i]
@@ -227,6 +236,9 @@ func InitSettings() {
if err != nil {
if err == gorm.ErrRecordNotFound {
err = model.SaveSetting(v)
if v.Key == "password" {
log.Infof("Initial password: %s", v.Value)
}
if err != nil {
log.Fatalf("failed write setting: %s", err.Error())
}
+53 -8
View File
@@ -57,19 +57,63 @@ BUILD() {
if [ "$1" == "release" ]; then
xgo -out "$appName" -ldflags="$ldflags" -tags=jsoniter .
else
xgo -targets=linux/amd64,windows/amd64 -out alist -ldflags="$ldflags" -tags=jsoniter .
xgo -targets=linux/amd64,windows/amd64 -out "$appName" -ldflags="$ldflags" -tags=jsoniter .
fi
mkdir "build"
mkdir -p "build"
mv alist-* build
cd build
upx -9 ./*
find . -type f -print0 | xargs -0 md5sum >md5.txt
cat md5.txt
cd ../..
if [ "$1" != "release" ]; then
cd build
upx -9 ./*
find . -type f -print0 | xargs -0 md5sum >md5.txt
cat md5.txt
cd ..
fi
cd ..
}
BUILD_MUSL() {
BASE="https://musl.cc/"
FILES=(x86_64-linux-musl-cross aarch64-linux-musl-cross arm-linux-musleabihf-cross mips-linux-musl-cross mips64-linux-musl-cross mips64el-linux-musl-cross mipsel-linux-musl-cross powerpc64le-linux-musl-cross s390x-linux-musl-cross)
for i in "${FILES[@]}"; do
url="${BASE}${i}.tgz"
curl -L -o "${i}.tgz" "${url}"
sudo tar xf "${i}.tgz" --strip-components 1 -C /usr/local
done
cd alist
appName="alist"
builtAt="$(date +'%F %T %z')"
goVersion=$(go version | sed 's/go version //')
gitAuthor=$(git show -s --format='format:%aN <%ae>' HEAD)
gitCommit=$(git log --pretty=format:"%h" -1)
gitTag=$(git describe --long --tags --dirty --always)
ldflags="\
-w -s \
-X 'github.com/Xhofe/alist/conf.BuiltAt=$builtAt' \
-X 'github.com/Xhofe/alist/conf.GoVersion=$goVersion' \
-X 'github.com/Xhofe/alist/conf.GitAuthor=$gitAuthor' \
-X 'github.com/Xhofe/alist/conf.GitCommit=$gitCommit' \
-X 'github.com/Xhofe/alist/conf.GitTag=$gitTag' \
"
OS_ARCHES=(linux-musl-amd64 linux-musl-arm64 linux-musl-arm linux-musl-mips linux-musl-mips64 linux-musl-mips64le linux-musl-mipsle linux-musl-ppc64le linux-musl-s390x)
CGO_ARGS=(x86_64-linux-musl-gcc aarch64-linux-musl-gcc arm-linux-musleabihf-gcc mips-linux-musl-gcc mips64-linux-musl-gcc mips64el-linux-musl-gcc mipsel-linux-musl-gcc powerpc64le-linux-musl-gcc s390x-linux-musl-gcc)
for i in "${!OS_ARCHES[@]}"; do
os_arch=${OS_ARCHES[$i]}
cgo_cc=${CGO_ARGS[$i]}
echo building for ${os_arch}
export GOOS=${os_arch%%-*}
export GOARCH=${os_arch##*-}
export CC=${cgo_cc}
export CGO_ENABLED=1
go build -o ./build/$appName-$os_arch -ldflags="$ldflags" -tags=jsoniter alist.go
done
cd ..
}
RELEASE() {
cd alist/build
upx -9 ./*
find . -type f -print0 | xargs -0 md5sum >md5.txt
cat md5.txt
mkdir compress
mv md5.txt compress
for i in $(find . -type f -name "$appName-linux-*"); do
@@ -94,7 +138,8 @@ elif [ "$1" = "build" ]; then
BUILD build
elif [ "$1" = "release" ]; then
BUILD release
BUILD_MUSL
RELEASE
else
echo -e "${RED_COLOR} 错误的命令${RES}"
echo -e "${RED_COLOR} Parameter error ${RES}"
fi
+3 -1
View File
@@ -9,6 +9,7 @@ type Database struct {
Name string `json:"name"`
TablePrefix string `json:"table_prefix"`
DBFile string `json:"db_file"`
SslMode string `json:"ssl_mode"`
}
type Scheme struct {
@@ -35,12 +36,13 @@ func DefaultConfig() *Config {
return &Config{
Address: "0.0.0.0",
Port: 5244,
Assets: "zhimg",
Assets: "jsdelivr",
Database: Database{
Type: "sqlite3",
Port: 0,
TablePrefix: "x_",
DBFile: "data/data.db",
SslMode: "disable",
},
Cache: CacheConfig{
Expiration: 60,
+3 -2
View File
@@ -36,10 +36,10 @@ var (
OfficeTypes = []string{"doc", "docx", "xls", "xlsx", "ppt", "pptx", "pdf"}
VideoTypes = []string{"mp4", "mkv", "avi", "mov", "rmvb", "webm", "flv"}
AudioTypes = []string{"mp3", "flac", "ogg", "m4a", "wav"}
ImageTypes = []string{"jpg", "tiff", "jpeg", "png", "gif", "bmp", "svg", "ico"}
ImageTypes = []string{"jpg", "tiff", "jpeg", "png", "gif", "bmp", "svg", "ico", "swf", "webp"}
)
var settingsMap = make(map[string]string, 0)
var settingsMap = make(map[string]string)
func Set(key string, value string) {
settingsMap[key] = value
@@ -78,6 +78,7 @@ var (
"check parent folder", "check down link", "WebDAV username", "WebDAV password",
"Visitor WebDAV username", "Visitor WebDAV password",
"default page size", "load type",
"ocr api",
}
)
+44 -7
View File
@@ -1,6 +1,8 @@
package _23
import (
"crypto/md5"
"encoding/hex"
"fmt"
"github.com/Xhofe/alist/conf"
"github.com/Xhofe/alist/drivers/base"
@@ -10,9 +12,11 @@ import (
"github.com/aws/aws-sdk-go/aws/credentials"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
"io"
"io/ioutil"
"net/url"
"os"
"path/filepath"
"strconv"
)
@@ -65,6 +69,9 @@ func (driver Pan123) Items() []base.Item {
}
func (driver Pan123) Save(account *model.Account, old *model.Account) error {
if account == nil {
return nil
}
if account.RootFolder == "" {
account.RootFolder = "0"
}
@@ -189,9 +196,9 @@ func (driver Pan123) Path(path string, account *model.Account) (*model.File, []m
return nil, files, nil
}
func (driver Pan123) Proxy(c *gin.Context, account *model.Account) {
c.Request.Header.Del("origin")
}
//func (driver Pan123) Proxy(r *http.Request, account *model.Account) {
// r.Header.Del("origin")
//}
func (driver Pan123) Preview(path string, account *model.Account) (interface{}, error) {
return nil, base.ErrNotSupport
@@ -234,7 +241,7 @@ func (driver Pan123) Move(src string, dst string, account *model.Account) error
}
parentFileId, _ := strconv.Atoi(dstDirFile.Id)
data := base.Json{
"fileId": fileId,
"fileIdList": []base.Json{{"FileId": fileId}},
"parentFileId": parentFileId,
}
_, err = driver.Request("https://www.123pan.com/api/file/mod_pid",
@@ -291,10 +298,37 @@ func (driver Pan123) Upload(file *model.FileStream, account *model.Account) erro
return base.ErrNotFolder
}
parentFileId, _ := strconv.Atoi(parentFile.Id)
tempFile, err := ioutil.TempFile("data/temp", "file-*")
if err != nil {
return err
}
defer func() {
_ = tempFile.Close()
_ = os.Remove(tempFile.Name())
}()
_, err = io.Copy(tempFile, file)
if err != nil {
return err
}
_, err = tempFile.Seek(0, io.SeekStart)
if err != nil {
return err
}
h := md5.New()
_, err = io.Copy(h, tempFile)
if err != nil {
return err
}
etag := hex.EncodeToString(h.Sum(nil))
log.Debugln("md5:", etag)
_, err = tempFile.Seek(0, io.SeekStart)
if err != nil {
return err
}
data := base.Json{
"driveId": 0,
"duplicate": true,
"etag": "836aae6cac845e17fce51919594737d0", //maybe file's md5
"etag": etag,
"fileName": file.GetFileName(),
"parentFileId": parentFileId,
"size": file.GetSize(),
@@ -307,6 +341,9 @@ func (driver Pan123) Upload(file *model.FileStream, account *model.Account) erro
if err != nil {
return err
}
if resp.Data.Key == "" {
return nil
}
cfg := &aws.Config{
Credentials: credentials.NewStaticCredentials(resp.Data.AccessKeyId, resp.Data.SecretAccessKey, resp.Data.SessionToken),
Region: aws.String("123pan"),
@@ -321,7 +358,7 @@ func (driver Pan123) Upload(file *model.FileStream, account *model.Account) erro
input := &s3manager.UploadInput{
Bucket: &resp.Data.Bucket,
Key: &resp.Data.Key,
Body: file,
Body: tempFile,
}
_, err = uploader.Upload(input)
if err != nil {
+2 -2
View File
@@ -17,7 +17,7 @@ import (
func (driver Cloud139) Request(pathname string, method int, headers, query, form map[string]string, data interface{}, resp interface{}, account *model.Account) ([]byte, error) {
url := "https://yun.139.com" + pathname
req := base.RestyClient.R()
randStr := randomStr(16)
randStr := utils.RandomStr(16)
ts := time.Now().Format("2006-01-02 15:04:05")
log.Debugf("%+v", data)
body, err := utils.Json.Marshal(data)
@@ -136,7 +136,7 @@ func (driver Cloud139) GetFiles(catalogID string, account *model.Account) ([]mod
f := model.File{
Id: content.ContentID,
Name: content.ContentName,
Size: int64(content.ContentSize),
Size: content.ContentSize,
Type: utils.GetFileType(path.Ext(content.ContentName)),
Driver: driver.Config().Name,
UpdatedAt: getTime(content.UpdateTime),
+13 -11
View File
@@ -7,7 +7,6 @@ import (
"github.com/Xhofe/alist/drivers/base"
"github.com/Xhofe/alist/model"
"github.com/Xhofe/alist/utils"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
"io"
"math"
@@ -64,6 +63,9 @@ func (driver Cloud139) Items() []base.Item {
}
func (driver Cloud139) Save(account *model.Account, old *model.Account) error {
if account == nil {
return nil
}
_, err := driver.Request("/orchestration/personalCloud/user/v1.0/qryUserExternInfo", base.Post, nil, nil, nil, base.Json{
"qryUserExternInfoReq": base.Json{
"commonAccountInfo": base.Json{
@@ -160,9 +162,9 @@ func (driver Cloud139) Path(path string, account *model.Account) (*model.File, [
return nil, files, nil
}
func (driver Cloud139) Proxy(c *gin.Context, account *model.Account) {
}
//func (driver Cloud139) Proxy(r *http.Request, account *model.Account) {
//
//}
func (driver Cloud139) Preview(path string, account *model.Account) (interface{}, error) {
return nil, base.ErrNotSupport
@@ -229,7 +231,7 @@ func (driver Cloud139) Move(src string, dst string, account *model.Account) erro
"newCatalogID": dstParentFile.Id,
},
"commonAccountInfo": base.Json{
"account": "18627147660",
"account": account.Username,
"accountType": 1,
},
},
@@ -254,7 +256,7 @@ func (driver Cloud139) Rename(src string, dst string, account *model.Account) er
"catalogID": srcFile.Id,
"catalogName": utils.Base(dst),
"commonAccountInfo": base.Json{
"account": "18627147660",
"account": account.Username,
"accountType": 1,
},
}
@@ -264,7 +266,7 @@ func (driver Cloud139) Rename(src string, dst string, account *model.Account) er
"contentID": srcFile.Id,
"contentName": utils.Base(dst),
"commonAccountInfo": base.Json{
"account": "18627147660",
"account": account.Username,
"accountType": 1,
},
}
@@ -303,7 +305,7 @@ func (driver Cloud139) Copy(src string, dst string, account *model.Account) erro
"newCatalogID": dstParentFile.Id,
},
"commonAccountInfo": base.Json{
"account": "18627147660",
"account": account.Username,
"accountType": 1,
},
},
@@ -335,7 +337,7 @@ func (driver Cloud139) Delete(path string, account *model.Account) error {
"catalogInfoList": contentInfoList,
},
"commonAccountInfo": base.Json{
"account": "18627147660",
"account": account.Username,
"accountType": 1,
},
},
@@ -346,7 +348,7 @@ func (driver Cloud139) Delete(path string, account *model.Account) error {
"catalogList": catalogInfoList,
"contentList": contentInfoList,
"commonAccountInfo": base.Json{
"account": "18627147660",
"account": account.Username,
"accountType": 1,
},
"sourceCatalogType": 1002,
@@ -382,7 +384,7 @@ func (driver Cloud139) Upload(file *model.FileStream, account *model.Account) er
"parentCatalogID": parentFile.Id,
"newCatalogName": "",
"commonAccountInfo": base.Json{
"account": "18627147660",
"account": account.Username,
"accountType": 1,
},
}
+1 -1
View File
@@ -43,7 +43,7 @@ func (driver Cloud139) familyGetFiles(catalogID string, account *model.Account)
f := model.File{
Id: content.ContentID,
Name: content.ContentName,
Size: int64(content.ContentSize),
Size: content.ContentSize,
Type: utils.GetFileType(path.Ext(content.ContentName)),
Driver: driver.Config().Name,
UpdatedAt: getTime(content.LastUpdateTime),

Some files were not shown because too many files have changed in this diff Show More