mirror of
https://github.com/OpenListTeam/OpenList.git
synced 2025-09-20 12:46:17 +08:00
Compare commits
38 Commits
Author | SHA1 | Date | |
---|---|---|---|
f029df88e4 | |||
00f825d9e2 | |||
732dcfa5b1 | |||
e2ad8eabb8 | |||
affedc845b | |||
382cd6425f | |||
e880acb71d | |||
a0d1eadf3e | |||
70a0a32b7b | |||
2f32120908 | |||
0fdfa2b365 | |||
82713611c0 | |||
41acb3e865 | |||
77aca6609a | |||
63a597f802 | |||
fcf7530dd8 | |||
5f0645ded8 | |||
0f7ba9599d | |||
022614f155 | |||
874dc292ae | |||
9442013b37 | |||
862b1c3c53 | |||
52c93f2046 | |||
3d13d5213b | |||
103abc942e | |||
f0236522f3 | |||
6a3b8fab06 | |||
5c288dc763 | |||
6d0d3ac612 | |||
1ec97733e5 | |||
ded67b746b | |||
4590795cba | |||
060fd36883 | |||
76a1f99df1 | |||
38766a4cb7 | |||
bcc518cf96 | |||
3fdb2c79bf | |||
18f7a2ba0e |
32
.github/workflows/beta_release.yml
vendored
32
.github/workflows/beta_release.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: beta release
|
name: Beta Release builds
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@ -141,33 +141,3 @@ jobs:
|
|||||||
path: ${{ github.workspace }}/build/compress/*
|
path: ${{ github.workspace }}/build/compress/*
|
||||||
compression-level: 0
|
compression-level: 0
|
||||||
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
|
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
|
||||||
|
|
||||||
|
|
||||||
# TODO: We do not have desktop clients right now. We may need a better way to
|
|
||||||
# trigger the build of desktop client when we actually have it.
|
|
||||||
# desktop:
|
|
||||||
# needs:
|
|
||||||
# - release
|
|
||||||
# name: Beta Release Desktop
|
|
||||||
# runs-on: ubuntu-latest
|
|
||||||
# steps:
|
|
||||||
# - name: Checkout repo
|
|
||||||
# uses: actions/checkout@v4
|
|
||||||
# with:
|
|
||||||
# repository: openlistteam/desktop-release
|
|
||||||
# ref: main
|
|
||||||
# persist-credentials: false
|
|
||||||
# fetch-depth: 0
|
|
||||||
|
|
||||||
# - name: Commit
|
|
||||||
# run: |
|
|
||||||
# git config --local user.email "bot@nn.ci"
|
|
||||||
# git config --local user.name "IlaBot"
|
|
||||||
# git commit --allow-empty -m "Trigger build for ${{ github.sha }}"
|
|
||||||
|
|
||||||
# - name: Push commit
|
|
||||||
# uses: ad-m/github-push-action@master
|
|
||||||
# with:
|
|
||||||
# github_token: ${{ secrets.MY_TOKEN }}
|
|
||||||
# branch: main
|
|
||||||
# repository: openlistteam/desktop-release
|
|
||||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: build
|
name: Test Build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
5
.github/workflows/changelog.yml
vendored
5
.github/workflows/changelog.yml
vendored
@ -1,10 +1,13 @@
|
|||||||
name: auto changelog
|
name: Automatic changelog
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- 'v*'
|
- 'v*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
changelog:
|
changelog:
|
||||||
name: Create Release
|
name: Create Release
|
||||||
|
90
.github/workflows/release.yml
vendored
90
.github/workflows/release.yml
vendored
@ -1,9 +1,11 @@
|
|||||||
name: release
|
name: Release builds
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [ published ]
|
types: [ published ]
|
||||||
permissions: write-all
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
@ -67,32 +69,64 @@ jobs:
|
|||||||
files: build/compress/*
|
files: build/compress/*
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
|
||||||
|
release-lite:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform: [ ubuntu-latest ]
|
||||||
|
go-version: [ '1.21' ]
|
||||||
|
name: Release Lite
|
||||||
|
runs-on: ${{ matrix.platform }}
|
||||||
|
steps:
|
||||||
|
|
||||||
# TODO: We do not have desktop clients right now. We may need a better way to
|
- name: Free Disk Space (Ubuntu)
|
||||||
# trigger the build of desktop client when we actually have it.
|
uses: jlumbroso/free-disk-space@main
|
||||||
# release_desktop:
|
with:
|
||||||
# needs: release
|
# this might remove tools that are actually needed,
|
||||||
# name: Release desktop
|
# if set to "true" but frees about 6 GB
|
||||||
# runs-on: ubuntu-latest
|
tool-cache: false
|
||||||
# steps:
|
|
||||||
# - name: Checkout repo
|
|
||||||
# uses: actions/checkout@v4
|
|
||||||
# with:
|
|
||||||
# repository: openlistteam/desktop-release
|
|
||||||
# ref: main
|
|
||||||
# persist-credentials: false
|
|
||||||
# fetch-depth: 0
|
|
||||||
|
|
||||||
# - name: Add tag
|
# all of these default to true, but feel free to set to
|
||||||
# run: |
|
# "false" if necessary for your workflow
|
||||||
# git config --local user.email "bot@nn.ci"
|
android: true
|
||||||
# git config --local user.name "IlaBot"
|
dotnet: true
|
||||||
# version=$(wget -qO- -t1 -T2 "https://api.github.com/repos/openlistteam/openlist/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
|
haskell: true
|
||||||
# git tag -a $version -m "release $version"
|
large-packages: true
|
||||||
|
docker-images: true
|
||||||
|
swap-storage: true
|
||||||
|
|
||||||
|
- name: Prerelease
|
||||||
|
uses: irongut/EditRelease@v1.2.0
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
id: ${{ github.event.release.id }}
|
||||||
|
prerelease: true
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo snap install zig --classic --beta
|
||||||
|
docker pull crazymax/xgo:latest
|
||||||
|
go install github.com/crazy-max/xgo@latest
|
||||||
|
sudo apt install upx
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
bash build.sh release lite
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload assets
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: build/compress/*
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
# - name: Push tags
|
|
||||||
# uses: ad-m/github-push-action@master
|
|
||||||
# with:
|
|
||||||
# github_token: ${{ secrets.MY_TOKEN }}
|
|
||||||
# branch: main
|
|
||||||
# repository: openlistteam/desktop-release
|
|
||||||
|
35
.github/workflows/release_android.yml
vendored
35
.github/workflows/release_android.yml
vendored
@ -1,10 +1,11 @@
|
|||||||
name: release_android
|
name: Release builds (Android)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [ published ]
|
types: [ published ]
|
||||||
|
|
||||||
permissions: write-all
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release_android:
|
release_android:
|
||||||
@ -36,3 +37,33 @@ jobs:
|
|||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
files: build/compress/*
|
files: build/compress/*
|
||||||
|
|
||||||
|
release_android_lite:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform: [ ubuntu-latest ]
|
||||||
|
go-version: [ '1.21' ]
|
||||||
|
name: Release
|
||||||
|
runs-on: ${{ matrix.platform }}
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
bash build.sh release lite android
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload assets
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: build/compress/*
|
||||||
|
141
.github/workflows/release_docker.yml
vendored
141
.github/workflows/release_docker.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: release_docker
|
name: Release builds (Docker)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@ -24,18 +24,21 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
ORG_NAME: openlistteam
|
DOCKERHUB_ORG_NAME: ${{ vars.DOCKERHUB_ORG_NAME || 'openlistteam' }}
|
||||||
|
GHCR_ORG_NAME: ${{ vars.GHCR_ORG_NAME || 'openlistteam' }}
|
||||||
IMAGE_NAME: openlist-git
|
IMAGE_NAME: openlist-git
|
||||||
IMAGE_NAME_DOCKERHUB: openlist
|
IMAGE_NAME_DOCKERHUB: openlist
|
||||||
REGISTRY: ghcr.io
|
REGISTRY: ghcr.io
|
||||||
ARTIFACT_NAME: 'binaries_docker_release'
|
ARTIFACT_NAME: 'binaries_docker_release'
|
||||||
|
ARTIFACT_NAME_LITE: 'binaries_docker_release_lite'
|
||||||
RELEASE_PLATFORMS: 'linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x,linux/ppc64le,linux/riscv64'
|
RELEASE_PLATFORMS: 'linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x,linux/ppc64le,linux/riscv64'
|
||||||
IMAGE_PUSH: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
|
IMAGE_PUSH: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
|
||||||
IMAGE_IS_PROD: ${{ github.ref_type == 'tag' || github.event.inputs.as_latest == 'true' }}
|
IMAGE_IS_PROD: ${{ github.ref_type == 'tag' || github.event.inputs.as_latest == 'true' }}
|
||||||
IMAGE_TAGS_BETA: |
|
IMAGE_TAGS_BETA: |
|
||||||
type=raw,value=beta,enable={{is_default_branch}}
|
type=raw,value=beta,enable={{is_default_branch}}
|
||||||
|
|
||||||
permissions: write-all
|
permissions:
|
||||||
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_binary:
|
build_binary:
|
||||||
@ -84,6 +87,52 @@ jobs:
|
|||||||
!build/*.tgz
|
!build/*.tgz
|
||||||
!build/musl-libs/**
|
!build/musl-libs/**
|
||||||
|
|
||||||
|
build_binary_lite:
|
||||||
|
name: Build Binaries for Docker Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: 'stable'
|
||||||
|
|
||||||
|
- name: Cache Musl
|
||||||
|
id: cache-musl
|
||||||
|
uses: actions/cache@v4
|
||||||
|
with:
|
||||||
|
path: build/musl-libs
|
||||||
|
key: docker-musl-libs-v2
|
||||||
|
|
||||||
|
- name: Download Musl Library
|
||||||
|
if: steps.cache-musl.outputs.cache-hit != 'true'
|
||||||
|
run: bash build.sh prepare lite docker-multiplatform
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build go binary (beta)
|
||||||
|
if: env.IMAGE_IS_PROD != 'true'
|
||||||
|
run: bash build.sh beta lite docker-multiplatform
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Build go binary (release)
|
||||||
|
if: env.IMAGE_IS_PROD == 'true'
|
||||||
|
run: bash build.sh release lite docker-multiplatform
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT_NAME_LITE }}
|
||||||
|
overwrite: true
|
||||||
|
path: |
|
||||||
|
build/
|
||||||
|
!build/*.tgz
|
||||||
|
!build/musl-libs/**
|
||||||
|
|
||||||
release_docker:
|
release_docker:
|
||||||
needs: build_binary
|
needs: build_binary
|
||||||
name: Release Docker image
|
name: Release Docker image
|
||||||
@ -132,7 +181,7 @@ jobs:
|
|||||||
if: env.IMAGE_PUSH == 'true'
|
if: env.IMAGE_PUSH == 'true'
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ env.ORG_NAME }}
|
username: ${{ env.DOCKERHUB_ORG_NAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Docker meta
|
||||||
@ -140,8 +189,88 @@ jobs:
|
|||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.REGISTRY }}/${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}
|
${{ env.REGISTRY }}/${{ env.GHCR_ORG_NAME }}/${{ env.IMAGE_NAME }}
|
||||||
${{ env.ORG_NAME }}/${{ env.IMAGE_NAME_DOCKERHUB }}
|
${{ env.DOCKERHUB_ORG_NAME }}/${{ env.IMAGE_NAME_DOCKERHUB }}
|
||||||
|
tags: >
|
||||||
|
${{ env.IMAGE_IS_PROD == 'true' && (
|
||||||
|
github.event_name == 'workflow_dispatch'
|
||||||
|
&& format('type=raw,value={0}', github.event.inputs.manual_tag)
|
||||||
|
|| format('type=raw,value={0}', github.ref_name)
|
||||||
|
) || env.IMAGE_TAGS_BETA }}
|
||||||
|
flavor: |
|
||||||
|
latest=${{ env.IMAGE_IS_PROD }}
|
||||||
|
${{ matrix.tag_favor }}
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
id: docker_build
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile.ci
|
||||||
|
push: ${{ env.IMAGE_PUSH == 'true' }}
|
||||||
|
build-args: ${{ matrix.build_arg }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
platforms: ${{ env.RELEASE_PLATFORMS }}
|
||||||
|
|
||||||
|
release_docker_lite:
|
||||||
|
needs: build_binary_lite
|
||||||
|
name: Release Docker image
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
image: ["latest", "ffmpeg", "aria2", "aio"]
|
||||||
|
include:
|
||||||
|
- image: "latest"
|
||||||
|
build_arg: ""
|
||||||
|
tag_favor: "suffix=-lite,onlatest=true"
|
||||||
|
- image: "ffmpeg"
|
||||||
|
build_arg: INSTALL_FFMPEG=true
|
||||||
|
tag_favor: "suffix=-lite-ffmpeg,onlatest=true"
|
||||||
|
- image: "aria2"
|
||||||
|
build_arg: INSTALL_ARIA2=true
|
||||||
|
tag_favor: "suffix=-lite-aria2,onlatest=true"
|
||||||
|
- image: "aio"
|
||||||
|
build_arg: |
|
||||||
|
INSTALL_FFMPEG=true
|
||||||
|
INSTALL_ARIA2=true
|
||||||
|
tag_favor: "suffix=-lite-aio,onlatest=true"
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: ${{ env.ARTIFACT_NAME_LITE }}
|
||||||
|
path: 'build/'
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
if: env.IMAGE_PUSH == 'true'
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Login to DockerHub Container Registry
|
||||||
|
if: env.IMAGE_PUSH == 'true'
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ env.DOCKERHUB_ORG_NAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Docker meta
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
${{ env.REGISTRY }}/${{ env.GHCR_ORG_NAME }}/${{ env.IMAGE_NAME }}
|
||||||
|
${{ env.DOCKERHUB_ORG_NAME }}/${{ env.IMAGE_NAME_DOCKERHUB }}
|
||||||
tags: >
|
tags: >
|
||||||
${{ env.IMAGE_IS_PROD == 'true' && (
|
${{ env.IMAGE_IS_PROD == 'true' && (
|
||||||
github.event_name == 'workflow_dispatch'
|
github.event_name == 'workflow_dispatch'
|
||||||
|
37
.github/workflows/release_freebsd.yml
vendored
37
.github/workflows/release_freebsd.yml
vendored
@ -1,12 +1,13 @@
|
|||||||
name: release_freebsd
|
name: Release builds (Freebsd)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [ published ]
|
types: [ published ]
|
||||||
|
|
||||||
permissions: write-all
|
permissions:
|
||||||
jobs:
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
release_freebsd:
|
release_freebsd:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@ -36,3 +37,33 @@ jobs:
|
|||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
files: build/compress/*
|
files: build/compress/*
|
||||||
|
|
||||||
|
release_freebsd_lite:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform: [ ubuntu-latest ]
|
||||||
|
go-version: [ '1.21' ]
|
||||||
|
name: Release
|
||||||
|
runs-on: ${{ matrix.platform }}
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
bash build.sh release lite freebsd
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload assets
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: build/compress/*
|
||||||
|
37
.github/workflows/release_linux_musl.yml
vendored
37
.github/workflows/release_linux_musl.yml
vendored
@ -1,9 +1,12 @@
|
|||||||
name: release_linux_musl
|
name: Release builds (linux_musl)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [ published ]
|
types: [ published ]
|
||||||
permissions: write-all
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release_linux_musl:
|
release_linux_musl:
|
||||||
strategy:
|
strategy:
|
||||||
@ -34,3 +37,33 @@ jobs:
|
|||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
files: build/compress/*
|
files: build/compress/*
|
||||||
|
|
||||||
|
release_linux_musl_lite:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform: [ ubuntu-latest ]
|
||||||
|
go-version: [ '1.21' ]
|
||||||
|
name: Release
|
||||||
|
runs-on: ${{ matrix.platform }}
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
bash build.sh release lite linux_musl
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload assets
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: build/compress/*
|
||||||
|
37
.github/workflows/release_linux_musl_arm.yml
vendored
37
.github/workflows/release_linux_musl_arm.yml
vendored
@ -1,10 +1,12 @@
|
|||||||
name: release_linux_musl_arm
|
name: Release builds (linux_musl_arm)
|
||||||
|
|
||||||
on:
|
on:
|
||||||
release:
|
release:
|
||||||
types: [ published ]
|
types: [ published ]
|
||||||
|
|
||||||
permissions: write-all
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release_linux_musl_arm:
|
release_linux_musl_arm:
|
||||||
strategy:
|
strategy:
|
||||||
@ -35,3 +37,34 @@ jobs:
|
|||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
files: build/compress/*
|
files: build/compress/*
|
||||||
|
|
||||||
|
release_linux_musl_arm_lite:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
platform: [ ubuntu-latest ]
|
||||||
|
go-version: [ '1.21' ]
|
||||||
|
name: Release
|
||||||
|
runs-on: ${{ matrix.platform }}
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go-version }}
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
bash build.sh release lite linux_musl_arm
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Upload assets
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: build/compress/*
|
||||||
|
|
13
.github/workflows/test_docker.yml
vendored
13
.github/workflows/test_docker.yml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: test_docker
|
name: Docker Beta Release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@ -14,11 +14,13 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
ORG_NAME: openlistteam
|
DOCKERHUB_ORG_NAME: ${{ vars.DOCKERHUB_ORG_NAME || 'openlistteam' }}
|
||||||
|
GHCR_ORG_NAME: ${{ vars.GHCR_ORG_NAME || 'openlistteam' }}
|
||||||
IMAGE_NAME: openlist-git
|
IMAGE_NAME: openlist-git
|
||||||
IMAGE_NAME_DOCKERHUB: openlist
|
IMAGE_NAME_DOCKERHUB: openlist
|
||||||
REGISTRY: ghcr.io
|
REGISTRY: ghcr.io
|
||||||
ARTIFACT_NAME: 'binaries_docker_release'
|
ARTIFACT_NAME: 'binaries_docker_release'
|
||||||
|
ARTIFACT_NAME_LITE: 'binaries_docker_release_lite'
|
||||||
RELEASE_PLATFORMS: 'linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x,linux/ppc64le,linux/riscv64'
|
RELEASE_PLATFORMS: 'linux/amd64,linux/arm64,linux/arm/v7,linux/386,linux/arm/v6,linux/s390x,linux/ppc64le,linux/riscv64'
|
||||||
IMAGE_PUSH: ${{ github.event_name == 'push' }}
|
IMAGE_PUSH: ${{ github.event_name == 'push' }}
|
||||||
IMAGE_TAGS_BETA: |
|
IMAGE_TAGS_BETA: |
|
||||||
@ -70,7 +72,6 @@ jobs:
|
|||||||
name: Release Docker image
|
name: Release Docker image
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
|
||||||
packages: write
|
packages: write
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@ -116,7 +117,7 @@ jobs:
|
|||||||
if: env.IMAGE_PUSH == 'true'
|
if: env.IMAGE_PUSH == 'true'
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ env.ORG_NAME }}
|
username: ${{ env.DOCKERHUB_ORG_NAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Docker meta
|
||||||
@ -124,8 +125,8 @@ jobs:
|
|||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v5
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
${{ env.REGISTRY }}/${{ env.ORG_NAME }}/${{ env.IMAGE_NAME }}
|
${{ env.REGISTRY }}/${{ env.GHCR_ORG_NAME }}/${{ env.IMAGE_NAME }}
|
||||||
${{ env.ORG_NAME }}/${{ env.IMAGE_NAME_DOCKERHUB }}
|
${{ env.DOCKERHUB_ORG_NAME }}/${{ env.IMAGE_NAME_DOCKERHUB }}
|
||||||
tags: ${{ env.IMAGE_TAGS_BETA }}
|
tags: ${{ env.IMAGE_TAGS_BETA }}
|
||||||
flavor: |
|
flavor: |
|
||||||
${{ matrix.tag_favor }}
|
${{ matrix.tag_favor }}
|
||||||
|
143
README.md
143
README.md
@ -1,77 +1,60 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img width="100px" alt="logo" src="https://raw.githubusercontent.com/OpenListTeam/Logo/main/logo.svg"/></a>
|
<img style="width: 128px; height: 128px;" src="https://raw.githubusercontent.com/OpenListTeam/Logo/main/logo.svg" alt="logo" />
|
||||||
<p><em>🗂️A file list program that supports multiple storages, powered by Gin and SolidJS, fork of AList.</em></p>
|
|
||||||
<div>
|
<p><em>OpenList is a resilient, long-term governance, community-driven fork of AList — built to defend open source against trust-based attacks.</em></p>
|
||||||
<a href="https://goreportcard.com/report/github.com/OpenListTeam/OpenList/v3">
|
|
||||||
<img src="https://goreportcard.com/badge/github.com/OpenListTeam/OpenList/v3" alt="latest version" />
|
<img src="https://goreportcard.com/badge/github.com/OpenListTeam/OpenList/v3" alt="latest version" />
|
||||||
</a>
|
<a href="https://github.com/OpenListTeam/OpenList/blob/main/LICENSE"><img src="https://img.shields.io/github/license/OpenListTeam/OpenList" alt="License" /></a>
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/blob/main/LICENSE">
|
<a href="https://github.com/OpenListTeam/OpenList/actions?query=workflow%3ABuild"><img src="https://img.shields.io/github/actions/workflow/status/OpenListTeam/OpenList/build.yml?branch=main" alt="Build status" /></a>
|
||||||
<img src="https://img.shields.io/github/license/OpenListTeam/OpenList" alt="License" />
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/release/OpenListTeam/OpenList" alt="latest version" /></a>
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/actions?query=workflow%3ABuild">
|
<a href="https://github.com/OpenListTeam/OpenList/discussions"><img src="https://img.shields.io/github/discussions/OpenListTeam/OpenList?color=%23ED8936" alt="discussions" /></a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/OpenListTeam/OpenList/build.yml?branch=main" alt="Build status" />
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/downloads/OpenListTeam/OpenList/total?color=%239F7AEA&logo=github" alt="Downloads" /></a>
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/releases">
|
|
||||||
<img src="https://img.shields.io/github/release/OpenListTeam/OpenList" alt="latest version" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/discussions">
|
|
||||||
<img src="https://img.shields.io/github/discussions/OpenListTeam/OpenList?color=%23ED8936" alt="discussions" />
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/releases">
|
|
||||||
<img src="https://img.shields.io/github/downloads/OpenListTeam/OpenList/total?color=%239F7AEA&logo=github" alt="Downloads" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> [!IMPORTANT]
|
- English | [中文](./README_cn.md) | [日本語](./README_ja.md) | [Dutch](./README_nl.md)
|
||||||
>
|
|
||||||
> Drop-in replacement for AList with long-term governance, no hidden risks, and full transparency, built to defend open source against trust-based attacks.
|
|
||||||
>
|
|
||||||
> We sincerely thank the author [Xhofe](https://github.com/Xhofe) of the original project [AlistGo/alist](https://github.com/AlistGo/alist) and all other contributors.
|
|
||||||
>
|
|
||||||
> This fork is not yet stable, specific migration progress can be viewed in [OpenList Migration Work Summary](https://github.com/OpenListTeam/OpenList/issues/6).
|
|
||||||
|
|
||||||
English | [中文](./README_cn.md) | [日本語](./README_ja.md) | [Contributing](./CONTRIBUTING.md) | [CODE OF CONDUCT](./CODE_OF_CONDUCT.md)
|
- [Contributing](./CONTRIBUTING.md)
|
||||||
|
- [CODE OF CONDUCT](./CODE_OF_CONDUCT.md)
|
||||||
|
- [LICENSE](./LICENSE)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- [x] Multiple storages
|
- [x] Multiple storages
|
||||||
- [x] Local storage
|
- [x] Local storage
|
||||||
- [x] [Aliyundrive](https://www.alipan.com/)
|
- [x] [Aliyundrive](https://www.alipan.com)
|
||||||
- [x] OneDrive / Sharepoint ([global](https://www.office.com/), [cn](https://portal.partner.microsoftonline.cn),de,us)
|
- [x] OneDrive / Sharepoint ([Global](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage), [CN](https://portal.partner.microsoftonline.cn), DE, US)
|
||||||
- [x] [189cloud](https://cloud.189.cn) (Personal, Family)
|
- [x] [189cloud](https://cloud.189.cn) (Personal, Family)
|
||||||
- [x] [GoogleDrive](https://drive.google.com/)
|
- [x] [GoogleDrive](https://drive.google.com)
|
||||||
- [x] [123pan](https://www.123pan.com/)
|
- [x] [123pan](https://www.123pan.com)
|
||||||
- [x] FTP / SFTP
|
- [x] [FTP / SFTP](https://en.wikipedia.org/wiki/File_Transfer_Protocol)
|
||||||
- [x] [PikPak](https://www.mypikpak.com/)
|
- [x] [PikPak](https://www.mypikpak.com)
|
||||||
- [x] [S3](https://aws.amazon.com/s3/)
|
- [x] [S3](https://aws.amazon.com/s3)
|
||||||
- [x] [Seafile](https://seafile.com/)
|
- [x] [Seafile](https://seafile.com)
|
||||||
- [x] [UPYUN Storage Service](https://www.upyun.com/products/file-storage)
|
- [x] [UPYUN Storage Service](https://www.upyun.com/products/file-storage)
|
||||||
- [x] WebDav(Support OneDrive/SharePoint without API)
|
- [x] [WebDAV](https://en.wikipedia.org/wiki/WebDAV)
|
||||||
- [x] Teambition([China](https://www.teambition.com/ ),[International](https://us.teambition.com/ ))
|
- [x] Teambition([China](https://www.teambition.com), [International](https://us.teambition.com))
|
||||||
- [x] [Mediatrack](https://www.mediatrack.cn/)
|
- [x] [Mediatrack](https://www.mediatrack.cn)
|
||||||
- [x] [139yun](https://yun.139.com/) (Personal, Family, Group)
|
- [x] [139yun](https://yun.139.com) (Personal, Family, Group)
|
||||||
- [x] [YandexDisk](https://disk.yandex.com/)
|
- [x] [YandexDisk](https://disk.yandex.com)
|
||||||
- [x] [BaiduNetdisk](http://pan.baidu.com/)
|
- [x] [BaiduNetdisk](http://pan.baidu.com)
|
||||||
- [x] [Terabox](https://www.terabox.com/main)
|
- [x] [Terabox](https://www.terabox.com/main)
|
||||||
- [x] [UC](https://drive.uc.cn)
|
- [x] [UC](https://drive.uc.cn)
|
||||||
- [x] [Quark](https://pan.quark.cn)
|
- [x] [Quark](https://pan.quark.cn)
|
||||||
- [x] [Thunder](https://pan.xunlei.com)
|
- [x] [Thunder](https://pan.xunlei.com)
|
||||||
- [x] [Lanzou](https://www.lanzou.com/)
|
- [x] [Lanzou](https://www.lanzou.com)
|
||||||
- [x] [ILanzou](https://www.ilanzou.com/)
|
- [x] [ILanzou](https://www.ilanzou.com)
|
||||||
- [x] [Aliyundrive share](https://www.alipan.com/)
|
- [x] [Aliyundrive share](https://www.alipan.com)
|
||||||
- [x] [Google photo](https://photos.google.com/)
|
- [x] [Google photo](https://photos.google.com)
|
||||||
- [x] [Mega.nz](https://mega.nz)
|
- [x] [Mega.nz](https://mega.nz)
|
||||||
- [x] [Baidu photo](https://photo.baidu.com/)
|
- [x] [Baidu photo](https://photo.baidu.com)
|
||||||
- [x] SMB
|
- [x] [SMB](https://en.wikipedia.org/wiki/Server_Message_Block)
|
||||||
- [x] [115](https://115.com/)
|
- [x] [115](https://115.com)
|
||||||
- [X] Cloudreve
|
- [X] [Cloudreve](https://cloudreve.org)
|
||||||
- [x] [Dropbox](https://www.dropbox.com/)
|
- [x] [Dropbox](https://www.dropbox.com)
|
||||||
- [x] [FeijiPan](https://www.feijipan.com/)
|
- [x] [FeijiPan](https://www.feijipan.com)
|
||||||
- [x] [dogecloud](https://www.dogecloud.com/product/oss)
|
- [x] [dogecloud](https://www.dogecloud.com/product/oss)
|
||||||
- [x] [Azure Blob Storage](https://azure.microsoft.com/products/storage/blobs)
|
- [x] [Azure Blob Storage](https://azure.microsoft.com/products/storage/blobs)
|
||||||
- [x] Easy to deploy and out-of-the-box
|
- [x] Easy to deploy and out-of-the-box
|
||||||
@ -84,8 +67,8 @@ English | [中文](./README_cn.md) | [日本語](./README_ja.md) | [Contributing
|
|||||||
- [x] Dark mode
|
- [x] Dark mode
|
||||||
- [x] I18n
|
- [x] I18n
|
||||||
- [x] Protected routes (password protection and authentication)
|
- [x] Protected routes (password protection and authentication)
|
||||||
- [x] WebDav (waiting for detail documents)
|
- [x] WebDAV
|
||||||
- [ ] Docker Deploy (rebuilding)
|
- [x] Docker Deploy
|
||||||
- [x] Cloudflare Workers proxy
|
- [x] Cloudflare Workers proxy
|
||||||
- [x] File/Folder package download
|
- [x] File/Folder package download
|
||||||
- [x] Web upload(Can allow visitors to upload), delete, mkdir, rename, move and copy
|
- [x] Web upload(Can allow visitors to upload), delete, mkdir, rename, move and copy
|
||||||
@ -95,8 +78,10 @@ English | [中文](./README_cn.md) | [日本語](./README_ja.md) | [Contributing
|
|||||||
|
|
||||||
## Document
|
## Document
|
||||||
|
|
||||||
- https://docs.oplist.org
|
- 📘 [Docs & Install Guide](https://docs.oplist.org)
|
||||||
- https://docs.openlist.team
|
- 📚 [Backup Docs Site](https://docs.openlist.team)
|
||||||
|
- ⚖️ [Terms of Use](https://docs.oplist.org/terms)
|
||||||
|
- 🔒 [Privacy Policy](https://docs.oplist.org/privacy)
|
||||||
|
|
||||||
## Demo
|
## Demo
|
||||||
|
|
||||||
@ -106,24 +91,32 @@ N/A (to be rebuilt)
|
|||||||
|
|
||||||
Please refer to [*Discussions*](https://github.com/OpenListTeam/OpenList/discussions) for raising general questions, ***Issues* is for bug reports and feature requests only.**
|
Please refer to [*Discussions*](https://github.com/OpenListTeam/OpenList/discussions) for raising general questions, ***Issues* is for bug reports and feature requests only.**
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
The `OpenList` is open-source software licensed under the [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) license.
|
||||||
|
|
||||||
|
## Disclaimer
|
||||||
|
|
||||||
|
- This project is a free and open-source software designed to facilitate file sharing via net disks, primarily intended to support the downloading and learning of the Go programming language.
|
||||||
|
- Please comply with all applicable laws and regulations when using this software. Any form of misuse is strictly prohibited.
|
||||||
|
- The software is based on official SDKs or APIs without any modification, disruption, or interference with their behavior.
|
||||||
|
- It only performs HTTP 302 redirects or traffic forwarding, and does not intercept, store, or tamper with any user data.
|
||||||
|
- This project is not affiliated with any official platform or service provider.
|
||||||
|
- The software is provided "as is", without any warranties of any kind, either express or implied, including but not limited to warranties of merchantability or fitness for a particular purpose.
|
||||||
|
- The maintainers are not liable for any direct or indirect damages arising from the use of, or inability to use, this software.
|
||||||
|
- You are solely responsible for any risks associated with using this software, including but not limited to account bans or download speed limitations.
|
||||||
|
- This project is licensed under the [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) License. Please see the [LICENSE](./LICENSE) file for details.
|
||||||
|
|
||||||
|
## Contact Us
|
||||||
|
|
||||||
|
- [@GitHub](https://github.com/OpenListTeam)
|
||||||
|
- [Telegram Group](https://t.me/OpenListTeam)
|
||||||
|
- [Telegram Channel](https://t.me/OpenListOfficial)
|
||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
|
We sincerely thank the author [Xhofe](https://github.com/Xhofe) of the original project [AlistGo/alist](https://github.com/AlistGo/alist) and all other contributors.
|
||||||
|
|
||||||
Thanks goes to these wonderful people:
|
Thanks goes to these wonderful people:
|
||||||
|
|
||||||
[](https://github.com/OpenListTeam/OpenList/graphs/contributors)
|
[](https://github.com/OpenListTeam/OpenList/graphs/contributors)
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
The `OpenList` is open-source software licensed under the AGPL-3.0 license.
|
|
||||||
|
|
||||||
## Disclaimer
|
|
||||||
|
|
||||||
- This program is a free and open source project. It is designed to share files on the network disk, which is convenient for downloading and learning Golang. Please abide by relevant laws and regulations when using it, and do not abuse it;
|
|
||||||
- This program is implemented by calling the official sdk/interface, without destroying the official interface behavior;
|
|
||||||
- This program only does 302 redirect/traffic forwarding, and does not intercept, store, or tamper with any user data;
|
|
||||||
- Before using this program, you should understand and bear the corresponding risks, including but not limited to account ban, download speed limit, etc., which is none of this program's business;
|
|
||||||
- If there is any infringement, please contact [OpenListTeam](https://github.com/OpenListTeam), and it will be dealt with in time.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
> [@GitHub](https://github.com/OpenListTeam) · [Telegram Group](https://t.me/OpenListTeam) · [Telegram Channel](https://t.me/OpenListOfficial)
|
|
||||||
|
165
README_cn.md
165
README_cn.md
@ -1,127 +1,122 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img width="100px" alt="logo" src="https://raw.githubusercontent.com/OpenListTeam/Logo/main/logo.svg"/></a>
|
<img style="width: 128px; height: 128px;" src="https://raw.githubusercontent.com/OpenListTeam/Logo/main/logo.svg" alt="logo" />
|
||||||
<p><em>🗂一个支持多存储的文件列表程序,使用 Gin 和 SolidJS,基于 AList 项目 fork 开发</em></p>
|
|
||||||
<div>
|
<p><em>OpenList 是一个有韧性、长期治理、社区驱动的 AList 分支,旨在防御基于信任的开源攻击。</em></p>
|
||||||
<a href="https://goreportcard.com/report/github.com/OpenListTeam/OpenList/v3">
|
|
||||||
<img src="https://goreportcard.com/badge/github.com/OpenListTeam/OpenList/v3" alt="latest version" />
|
<img src="https://goreportcard.com/badge/github.com/OpenListTeam/OpenList/v3" alt="latest version" />
|
||||||
</a>
|
<a href="https://github.com/OpenListTeam/OpenList/blob/main/LICENSE"><img src="https://img.shields.io/github/license/OpenListTeam/OpenList" alt="License" /></a>
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/blob/main/LICENSE">
|
<a href="https://github.com/OpenListTeam/OpenList/actions?query=workflow%3ABuild"><img src="https://img.shields.io/github/actions/workflow/status/OpenListTeam/OpenList/build.yml?branch=main" alt="Build status" /></a>
|
||||||
<img src="https://img.shields.io/github/license/OpenListTeam/OpenList" alt="License" />
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/release/OpenListTeam/OpenList" alt="latest version" /></a>
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/actions?query=workflow%3ABuild">
|
<a href="https://github.com/OpenListTeam/OpenList/discussions"><img src="https://img.shields.io/github/discussions/OpenListTeam/OpenList?color=%23ED8936" alt="discussions" /></a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/OpenListTeam/OpenList/build.yml?branch=main" alt="Build status" />
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/downloads/OpenListTeam/OpenList/total?color=%239F7AEA&logo=github" alt="Downloads" /></a>
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/releases">
|
|
||||||
<img src="https://img.shields.io/github/release/OpenListTeam/OpenList" alt="latest version" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/discussions">
|
|
||||||
<img src="https://img.shields.io/github/discussions/OpenListTeam/OpenList?color=%23ED8936" alt="discussions" />
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/releases">
|
|
||||||
<img src="https://img.shields.io/github/downloads/OpenListTeam/OpenList/total?color=%239F7AEA&logo=github" alt="Downloads" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> [!IMPORTANT]
|
- [English](./README.md) | 中文 | [日本語](./README_ja.md) | [Dutch](./README_nl.md)
|
||||||
>
|
|
||||||
> 一个更可信、可持续的 AList 开源替代方案,防范未来可能的闭源、黑箱或不可信变更。
|
|
||||||
>
|
|
||||||
> 我们诚挚地感谢原项目 [AlistGo/alist](https://github.com/AlistGo/alist) 的作者 [Xhofe](https://github.com/Xhofe) 以及其他所有贡献者。
|
|
||||||
>
|
|
||||||
> 本 Fork 尚未稳定, 具体迁移进度可在 [OpenList 迁移工作总结](https://github.com/OpenListTeam/OpenList/issues/6) 中查看。
|
|
||||||
|
|
||||||
[English](./README.md) | 中文 | [日本語](./README_ja.md) | [Contributing](./CONTRIBUTING.md) | [CODE OF CONDUCT](./CODE_OF_CONDUCT.md)
|
- [贡献指南](./CONTRIBUTING.md)
|
||||||
|
- [行为准则](./CODE_OF_CONDUCT.md)
|
||||||
|
- [许可证](./LICENSE)
|
||||||
|
|
||||||
## 功能
|
## 功能
|
||||||
|
|
||||||
- [x] 多种存储
|
- [x] 多种存储
|
||||||
- [x] 本地存储
|
- [x] 本地存储
|
||||||
- [x] [阿里云盘](https://www.alipan.com/)
|
- [x] [阿里云盘](https://www.alipan.com)
|
||||||
- [x] OneDrive / Sharepoint([国际版](https://www.office.com/), [世纪互联](https://portal.partner.microsoftonline.cn),de,us)
|
- [x] OneDrive / Sharepoint ([国际版](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage), [中国](https://portal.partner.microsoftonline.cn), DE, US)
|
||||||
- [x] [天翼云盘](https://cloud.189.cn) (个人云, 家庭云)
|
- [x] [天翼云盘](https://cloud.189.cn)(个人、家庭)
|
||||||
- [x] [GoogleDrive](https://drive.google.com/)
|
- [x] [GoogleDrive](https://drive.google.com)
|
||||||
- [x] [123云盘](https://www.123pan.com/)
|
- [x] [123云盘](https://www.123pan.com)
|
||||||
- [x] FTP / SFTP
|
- [x] [FTP / SFTP](https://en.wikipedia.org/wiki/File_Transfer_Protocol)
|
||||||
- [x] [PikPak](https://www.mypikpak.com/)
|
- [x] [PikPak](https://www.mypikpak.com)
|
||||||
- [x] [S3](https://aws.amazon.com/cn/s3/)
|
- [x] [S3](https://aws.amazon.com/s3)
|
||||||
- [x] [Seafile](https://seafile.com/)
|
- [x] [Seafile](https://seafile.com)
|
||||||
- [x] [又拍云对象存储](https://www.upyun.com/products/file-storage)
|
- [x] [又拍云对象存储](https://www.upyun.com/products/file-storage)
|
||||||
- [x] WebDav(支持无API的OneDrive/SharePoint)
|
- [x] [WebDAV](https://en.wikipedia.org/wiki/WebDAV)
|
||||||
- [x] Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ ))
|
- [x] Teambition([中国](https://www.teambition.com), [国际](https://us.teambition.com))
|
||||||
- [x] [分秒帧](https://www.mediatrack.cn/)
|
- [x] [分秒帧](https://www.mediatrack.cn)
|
||||||
- [x] [和彩云](https://yun.139.com/) (个人云, 家庭云,共享群组)
|
- [x] [和彩云](https://yun.139.com)(个人、家庭、群组)
|
||||||
- [x] [Yandex.Disk](https://disk.yandex.com/)
|
- [x] [YandexDisk](https://disk.yandex.com)
|
||||||
- [x] [百度网盘](http://pan.baidu.com/)
|
- [x] [百度网盘](http://pan.baidu.com)
|
||||||
|
- [x] [Terabox](https://www.terabox.com/main)
|
||||||
- [x] [UC网盘](https://drive.uc.cn)
|
- [x] [UC网盘](https://drive.uc.cn)
|
||||||
- [x] [夸克网盘](https://pan.quark.cn)
|
- [x] [夸克网盘](https://pan.quark.cn)
|
||||||
- [x] [迅雷网盘](https://pan.xunlei.com)
|
- [x] [迅雷网盘](https://pan.xunlei.com)
|
||||||
- [x] [蓝奏云](https://www.lanzou.com/)
|
- [x] [蓝奏云](https://www.lanzou.com)
|
||||||
- [x] [蓝奏云优享版](https://www.ilanzou.com/)
|
- [x] [蓝奏云优享版](https://www.ilanzou.com)
|
||||||
- [x] [阿里云盘分享](https://www.alipan.com/)
|
- [x] [阿里云盘分享](https://www.alipan.com)
|
||||||
- [x] [谷歌相册](https://photos.google.com/)
|
- [x] [Google 相册](https://photos.google.com)
|
||||||
- [x] [Mega.nz](https://mega.nz)
|
- [x] [Mega.nz](https://mega.nz)
|
||||||
- [x] [一刻相册](https://photo.baidu.com/)
|
- [x] [百度相册](https://photo.baidu.com)
|
||||||
- [x] SMB
|
- [x] [SMB](https://en.wikipedia.org/wiki/Server_Message_Block)
|
||||||
- [x] [115](https://115.com/)
|
- [x] [115](https://115.com)
|
||||||
- [X] Cloudreve
|
- [x] [Cloudreve](https://cloudreve.org)
|
||||||
- [x] [Dropbox](https://www.dropbox.com/)
|
- [x] [Dropbox](https://www.dropbox.com)
|
||||||
- [x] [飞机盘](https://www.feijipan.com/)
|
- [x] [飞机盘](https://www.feijipan.com)
|
||||||
- [x] [多吉云](https://www.dogecloud.com/product/oss)
|
- [x] [多吉云](https://www.dogecloud.com/product/oss)
|
||||||
|
- [x] [Azure Blob Storage](https://azure.microsoft.com/products/storage/blobs)
|
||||||
- [x] 部署方便,开箱即用
|
- [x] 部署方便,开箱即用
|
||||||
- [x] 文件预览(PDF、markdown、代码、纯文本……)
|
- [x] 文件预览(PDF、markdown、代码、纯文本等)
|
||||||
- [x] 画廊模式下的图像预览
|
- [x] 画廊模式下的图片预览
|
||||||
- [x] 视频和音频预览,支持歌词和字幕
|
- [x] 视频和音频预览,支持歌词和字幕
|
||||||
- [x] Office 文档预览(docx、pptx、xlsx、...)
|
- [x] Office 文档预览(docx、pptx、xlsx 等)
|
||||||
- [x] `README.md` 预览渲染
|
- [x] `README.md` 预览渲染
|
||||||
- [x] 文件永久链接复制和直接文件下载
|
- [x] 文件永久链接复制和直接文件下载
|
||||||
- [x] 黑暗模式
|
- [x] 黑暗模式
|
||||||
- [x] 国际化
|
- [x] 国际化
|
||||||
- [x] 受保护的路由(密码保护和身份验证)
|
- [x] 受保护的路由(密码保护和认证)
|
||||||
- [x] WebDav (详细文档待补充)
|
- [x] WebDAV
|
||||||
- [ ] Docker 部署(重建中)
|
- [x] Docker 部署
|
||||||
- [x] Cloudflare workers 中转
|
- [x] Cloudflare Workers 代理
|
||||||
- [x] 文件/文件夹打包下载
|
- [x] 文件/文件夹打包下载
|
||||||
- [x] 网页上传(可以允许访客上传),删除,新建文件夹,重命名,移动,复制
|
- [x] 网页上传(可允许访客上传)、删除、新建文件夹、重命名、移动和复制
|
||||||
- [x] 离线下载
|
- [x] 离线下载
|
||||||
- [x] 跨存储复制文件
|
- [x] 跨存储复制文件
|
||||||
- [x] 单线程下载/串流的多线程下载加速
|
- [x] 单文件多线程下载/流式加速
|
||||||
|
|
||||||
## 文档
|
## 文档
|
||||||
|
|
||||||
- https://docs.oplist.org
|
- 📘 [文档与安装指南](https://docs.oplist.org)
|
||||||
- https://docs.openlist.team
|
- 📚 [备用文档站点](https://docs.openlist.team)
|
||||||
|
- ⚖️ [使用条款](https://docs.oplist.org/terms)
|
||||||
|
- 🔒 [隐私政策](https://docs.oplist.org/privacy)
|
||||||
|
|
||||||
## Demo
|
## 演示
|
||||||
|
|
||||||
N/A(重建中)
|
N/A(待重建)
|
||||||
|
|
||||||
## 讨论
|
## 讨论
|
||||||
|
|
||||||
一般问题请到 [*Discussions*](https://github.com/OpenListTeam/OpenList/discussions) 讨论,***Issues* 仅针对错误报告和功能请求。**
|
如有一般性问题请前往 [*Discussions*](https://github.com/OpenListTeam/OpenList/discussions) 讨论区,***Issues* 仅用于错误报告和功能请求。**
|
||||||
|
|
||||||
## 贡献者
|
## 许可证
|
||||||
|
|
||||||
感谢这些开源作者们:
|
`OpenList` 是基于 [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) 许可证的开源软件。
|
||||||
|
|
||||||
[](https://github.com/OpenListTeam/OpenList/graphs/contributors)
|
|
||||||
|
|
||||||
## 许可
|
|
||||||
|
|
||||||
`OpenList` 是按 AGPL-3.0 许可证许可的开源软件。
|
|
||||||
|
|
||||||
## 免责声明
|
## 免责声明
|
||||||
|
|
||||||
- 本程序为免费开源项目,旨在分享网盘文件,方便下载以及学习golang,使用时请遵守相关法律法规,请勿滥用;
|
- 本项目为免费开源软件,旨在通过网盘便捷分享文件,主要用于 Go 语言的下载与学习。
|
||||||
- 本程序通过调用官方sdk/接口实现,无破坏官方接口行为;
|
- 使用本软件时请遵守相关法律法规,严禁任何形式的滥用。
|
||||||
- 本程序仅做302重定向/流量转发,不拦截、存储、篡改任何用户数据;
|
- 本软件基于官方 SDK 或 API 实现,未对其行为进行任何修改、破坏或干扰。
|
||||||
- 在使用本程序之前,你应了解并承担相应的风险,包括但不限于账号被ban,下载限速等,与本程序无关;
|
- 仅进行 HTTP 302 跳转或流量转发,不拦截、存储或篡改任何用户数据。
|
||||||
- 如有侵权,请联系[OpenListTeam](https://github.com/OpenListTeam),团队会及时处理。
|
- 本项目与任何官方平台或服务提供商无关。
|
||||||
|
- 本软件按“原样”提供,不附带任何明示或暗示的担保,包括但不限于适销性或特定用途的适用性。
|
||||||
|
- 维护者不对因使用或无法使用本软件而导致的任何直接或间接损失负责。
|
||||||
|
- 您需自行承担使用本软件的所有风险,包括但不限于账号被封、下载限速等。
|
||||||
|
- 本项目遵循 [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) 许可证,详情请参见 [LICENSE](./LICENSE) 文件。
|
||||||
|
|
||||||
---
|
## 联系我们
|
||||||
|
|
||||||
> [@GitHub](https://github.com/OpenListTeam) · [Telegram 交流群](https://t.me/OpenListTeam) · [Telegram 频道](https://t.me/OpenListOfficial)
|
- [@GitHub](https://github.com/OpenListTeam)
|
||||||
|
- [Telegram 交流群](https://t.me/OpenListTeam)
|
||||||
|
- [Telegram 频道](https://t.me/OpenListOfficial)
|
||||||
|
|
||||||
|
## 贡献者
|
||||||
|
|
||||||
|
我们衷心感谢原项目 [AlistGo/alist](https://github.com/AlistGo/alist) 的作者 [Xhofe](https://github.com/Xhofe) 及所有其他贡献者。
|
||||||
|
|
||||||
|
感谢这些优秀的人:
|
||||||
|
|
||||||
|
[](https://github.com/OpenListTeam/OpenList/graphs/contributors)
|
||||||
|
172
README_ja.md
172
README_ja.md
@ -1,128 +1,122 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<img width="100px" alt="logo" src="https://raw.githubusercontent.com/OpenListTeam/Logo/main/logo.svg"/></a>
|
<img style="width: 128px; height: 128px;" src="https://raw.githubusercontent.com/OpenListTeam/Logo/main/logo.svg" alt="logo" />
|
||||||
<p><em>🗂複数のストレージをサポートするファイルリストプログラムで、Gin と SolidJS を使用し、AList プロジェクトをフォークして開発されました。</em></p>
|
|
||||||
<div>
|
<p><em>OpenList は、信頼ベースの攻撃からオープンソースを守るために構築された、レジリエントで長期ガバナンス、コミュニティ主導の AList フォークです。</em></p>
|
||||||
<a href="https://goreportcard.com/report/github.com/OpenListTeam/OpenList/v3">
|
|
||||||
<img src="https://goreportcard.com/badge/github.com/OpenListTeam/OpenList/v3" alt="latest version" />
|
<img src="https://goreportcard.com/badge/github.com/OpenListTeam/OpenList/v3" alt="latest version" />
|
||||||
</a>
|
<a href="https://github.com/OpenListTeam/OpenList/blob/main/LICENSE"><img src="https://img.shields.io/github/license/OpenListTeam/OpenList" alt="License" /></a>
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/blob/main/LICENSE">
|
<a href="https://github.com/OpenListTeam/OpenList/actions?query=workflow%3ABuild"><img src="https://img.shields.io/github/actions/workflow/status/OpenListTeam/OpenList/build.yml?branch=main" alt="Build status" /></a>
|
||||||
<img src="https://img.shields.io/github/license/OpenListTeam/OpenList" alt="License" />
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/release/OpenListTeam/OpenList" alt="latest version" /></a>
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/actions?query=workflow%3ABuild">
|
<a href="https://github.com/OpenListTeam/OpenList/discussions"><img src="https://img.shields.io/github/discussions/OpenListTeam/OpenList?color=%23ED8936" alt="discussions" /></a>
|
||||||
<img src="https://img.shields.io/github/actions/workflow/status/OpenListTeam/OpenList/build.yml?branch=main" alt="Build status" />
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/downloads/OpenListTeam/OpenList/total?color=%239F7AEA&logo=github" alt="Downloads" /></a>
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/releases">
|
|
||||||
<img src="https://img.shields.io/github/release/OpenListTeam/OpenList" alt="latest version" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/discussions">
|
|
||||||
<img src="https://img.shields.io/github/discussions/OpenListTeam/OpenList?color=%23ED8936" alt="discussions" />
|
|
||||||
</a>
|
|
||||||
<a href="https://github.com/OpenListTeam/OpenList/releases">
|
|
||||||
<img src="https://img.shields.io/github/downloads/OpenListTeam/OpenList/total?color=%239F7AEA&logo=github" alt="Downloads" />
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
> [!IMPORTANT]
|
- [English](./README.md) | [中文](./README_cn.md) | 日本語 | [Dutch](./README_nl.md)
|
||||||
>
|
|
||||||
> より信頼性が高く、持続可能なAListのオープンソース代替案で、将来起こりうる非公開化、ブラックボックス化、または信頼できない変更から保護します。
|
|
||||||
>
|
|
||||||
> 元のプロジェクト [AlistGo/alist](https://github.com/AlistGo/alist) の作者 [Xhofe](https://github.com/Xhofe) および他のすべての貢献者に心から感謝いたします。
|
|
||||||
>
|
|
||||||
> このForkはまだ安定していません。具体的な移行の進捗状況は [OpenList 移行作業のまとめ](https://github.com/OpenListTeam/OpenList/issues/6) でご確認いただけます。
|
|
||||||
|
|
||||||
[English](./README.md) | [中文](./README_cn.md) | 日本語 | [Contributing](./CONTRIBUTING.md) | [CODE OF CONDUCT](./CODE_OF_CONDUCT.md)
|
- [コントリビュート](./CONTRIBUTING.md)
|
||||||
|
- [行動規範](./CODE_OF_CONDUCT.md)
|
||||||
|
- [ライセンス](./LICENSE)
|
||||||
|
|
||||||
## 特徴
|
## 特徴
|
||||||
|
|
||||||
- [x] マルチストレージ
|
- [x] 複数ストレージ
|
||||||
- [x] ローカルストレージ
|
- [x] ローカルストレージ
|
||||||
- [x] [Aliyundrive](https://www.alipan.com/)
|
- [x] [Aliyundrive](https://www.alipan.com)
|
||||||
- [x] OneDrive / Sharepoint ([グローバル](https://www.office.com/), [cn](https://portal.partner.microsoftonline.cn),de,us)
|
- [x] OneDrive / Sharepoint ([グローバル](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage), [中国](https://portal.partner.microsoftonline.cn), DE, US)
|
||||||
- [x] [189cloud](https://cloud.189.cn) (Personal, Family)
|
- [x] [189cloud](https://cloud.189.cn)(個人、家族)
|
||||||
- [x] [GoogleDrive](https://drive.google.com/)
|
- [x] [GoogleDrive](https://drive.google.com)
|
||||||
- [x] [123pan](https://www.123pan.com/)
|
- [x] [123pan](https://www.123pan.com)
|
||||||
- [x] FTP / SFTP
|
- [x] [FTP / SFTP](https://en.wikipedia.org/wiki/File_Transfer_Protocol)
|
||||||
- [x] [PikPak](https://www.mypikpak.com/)
|
- [x] [PikPak](https://www.mypikpak.com)
|
||||||
- [x] [S3](https://aws.amazon.com/s3/)
|
- [x] [S3](https://aws.amazon.com/s3)
|
||||||
- [x] [Seafile](https://seafile.com/)
|
- [x] [Seafile](https://seafile.com)
|
||||||
- [x] [UPYUN Storage Service](https://www.upyun.com/products/file-storage)
|
- [x] [UPYUN Storage Service](https://www.upyun.com/products/file-storage)
|
||||||
- [x] WebDav(Support OneDrive/SharePoint without API)
|
- [x] [WebDAV](https://en.wikipedia.org/wiki/WebDAV)
|
||||||
- [x] Teambition([China](https://www.teambition.com/ ),[International](https://us.teambition.com/ ))
|
- [x] Teambition([中国](https://www.teambition.com), [国際](https://us.teambition.com))
|
||||||
- [x] [Mediatrack](https://www.mediatrack.cn/)
|
- [x] [Mediatrack](https://www.mediatrack.cn)
|
||||||
- [x] [139yun](https://yun.139.com/) (Personal, Family, Group)
|
- [x] [139yun](https://yun.139.com)(個人、家族、グループ)
|
||||||
- [x] [YandexDisk](https://disk.yandex.com/)
|
- [x] [YandexDisk](https://disk.yandex.com)
|
||||||
- [x] [BaiduNetdisk](http://pan.baidu.com/)
|
- [x] [BaiduNetdisk](http://pan.baidu.com)
|
||||||
- [x] [Terabox](https://www.terabox.com/main)
|
- [x] [Terabox](https://www.terabox.com/main)
|
||||||
- [x] [UC](https://drive.uc.cn)
|
- [x] [UC](https://drive.uc.cn)
|
||||||
- [x] [Quark](https://pan.quark.cn)
|
- [x] [Quark](https://pan.quark.cn)
|
||||||
- [x] [Thunder](https://pan.xunlei.com)
|
- [x] [Thunder](https://pan.xunlei.com)
|
||||||
- [x] [Lanzou](https://www.lanzou.com/)
|
- [x] [Lanzou](https://www.lanzou.com)
|
||||||
- [x] [ILanzou](https://www.ilanzou.com/)
|
- [x] [ILanzou](https://www.ilanzou.com)
|
||||||
- [x] [Aliyundrive share](https://www.alipan.com/)
|
- [x] [Aliyundrive share](https://www.alipan.com)
|
||||||
- [x] [Google photo](https://photos.google.com/)
|
- [x] [Google photo](https://photos.google.com)
|
||||||
- [x] [Mega.nz](https://mega.nz)
|
- [x] [Mega.nz](https://mega.nz)
|
||||||
- [x] [Baidu photo](https://photo.baidu.com/)
|
- [x] [Baidu photo](https://photo.baidu.com)
|
||||||
- [x] SMB
|
- [x] [SMB](https://en.wikipedia.org/wiki/Server_Message_Block)
|
||||||
- [x] [115](https://115.com/)
|
- [x] [115](https://115.com)
|
||||||
- [X] Cloudreve
|
- [x] [Cloudreve](https://cloudreve.org)
|
||||||
- [x] [Dropbox](https://www.dropbox.com/)
|
- [x] [Dropbox](https://www.dropbox.com)
|
||||||
- [x] [FeijiPan](https://www.feijipan.com/)
|
- [x] [FeijiPan](https://www.feijipan.com)
|
||||||
- [x] [dogecloud](https://www.dogecloud.com/product/oss)
|
- [x] [dogecloud](https://www.dogecloud.com/product/oss)
|
||||||
- [x] デプロイが簡単で、すぐに使える
|
- [x] [Azure Blob Storage](https://azure.microsoft.com/products/storage/blobs)
|
||||||
- [x] ファイルプレビュー (PDF, マークダウン, コード, プレーンテキスト, ...)
|
- [x] 簡単にデプロイでき、すぐに使える
|
||||||
|
- [x] ファイルプレビュー(PDF、markdown、コード、テキストなど)
|
||||||
- [x] ギャラリーモードでの画像プレビュー
|
- [x] ギャラリーモードでの画像プレビュー
|
||||||
- [x] ビデオとオーディオのプレビュー、歌詞と字幕のサポート
|
- [x] ビデオ・オーディオプレビュー、歌詞・字幕対応
|
||||||
- [x] Office ドキュメントのプレビュー (docx, pptx, xlsx, ...)
|
- [x] Officeドキュメントプレビュー(docx、pptx、xlsxなど)
|
||||||
- [x] `README.md` のプレビューレンダリング
|
- [x] `README.md` プレビュー表示
|
||||||
- [x] ファイルのパーマリンクコピーと直接ダウンロード
|
- [x] ファイルのパーマリンクコピーと直接ダウンロード
|
||||||
- [x] ダークモード
|
- [x] ダークモード
|
||||||
- [x] 国際化
|
- [x] 国際化対応
|
||||||
- [x] 保護されたルート (パスワード保護と認証)
|
- [x] 保護されたルート(パスワード保護と認証)
|
||||||
- [x] WebDav(詳細なドキュメントは今後追加予定)
|
- [x] WebDAV
|
||||||
- [ ] Docker デプロイ(再構築中)
|
- [x] Dockerデプロイ
|
||||||
- [x] Cloudflare ワーカープロキシ
|
- [x] Cloudflare Workersプロキシ
|
||||||
- [x] ファイル/フォルダパッケージのダウンロード
|
- [x] ファイル/フォルダのパッケージダウンロード
|
||||||
- [x] ウェブアップロード(訪問者にアップロードを許可できる), 削除, mkdir, 名前変更, 移動, コピー
|
- [x] Webアップロード(訪問者のアップロード許可可)、削除、フォルダ作成、リネーム、移動、コピー
|
||||||
- [x] オフラインダウンロード
|
- [x] オフラインダウンロード
|
||||||
- [x] 二つのストレージ間でファイルをコピー
|
- [x] ストレージ間のファイルコピー
|
||||||
- [x] シングルスレッドのダウンロード/ストリーム向けのマルチスレッド ダウンロード アクセラレーション
|
- [x] 単一ファイルのマルチスレッドダウンロード/ストリーム加速
|
||||||
|
|
||||||
## ドキュメント
|
## ドキュメント
|
||||||
|
|
||||||
- https://docs.oplist.org
|
- 📘 [ドキュメント・インストールガイド](https://docs.oplist.org)
|
||||||
- https://docs.openlist.team
|
- 📚 [バックアップドキュメントサイト](https://docs.openlist.team)
|
||||||
|
- ⚖️ [利用規約](https://docs.oplist.org/terms)
|
||||||
|
- 🔒 [プライバシーポリシー](https://docs.oplist.org/privacy)
|
||||||
|
|
||||||
## デモ
|
## デモ
|
||||||
|
|
||||||
N/A (再構築中)
|
N/A(再構築中)
|
||||||
|
|
||||||
## ディスカッション
|
## ディスカッション
|
||||||
|
|
||||||
一般的なご質問は [*Discussions*](https://github.com/OpenListTeam/OpenList/discussions) をご利用ください。***Issues* はバグ報告と機能リクエストに限定されています。**
|
一般的な質問は [*Discussions*](https://github.com/OpenListTeam/OpenList/discussions) をご利用ください。***Issues* はバグ報告と機能リクエスト専用です。**
|
||||||
|
|
||||||
## コントリビューター
|
|
||||||
|
|
||||||
これらの素晴らしい人々に感謝します:
|
|
||||||
|
|
||||||
[](https://github.com/OpenListTeam/OpenList/graphs/contributors)
|
|
||||||
|
|
||||||
## ライセンス
|
## ライセンス
|
||||||
|
|
||||||
「`OpenList`」は AGPL-3.0 ライセンスの下で公開されているオープンソースソフトウェアです。
|
「OpenList」は [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) ライセンスの下で公開されているオープンソースソフトウェアです。
|
||||||
|
|
||||||
## 免責事項
|
## 免責事項
|
||||||
|
|
||||||
- このプログラムはフリーでオープンソースのプロジェクトです。ネットワークディスク上でファイルを共有するように設計されており、golang のダウンロードや学習に便利です。利用にあたっては関連法規を遵守し、悪用しないようお願いします;
|
- 本プロジェクトは無料のオープンソースソフトウェアであり、ネットワークディスクを通じたファイル共有を容易にすることを目的とし、主に Go 言語のダウンロードと学習をサポートします。
|
||||||
- このプログラムは、公式インターフェースの動作を破壊することなく、公式 sdk/インターフェースを呼び出すことで実装されています;
|
- 本ソフトウェアの利用にあたっては、関連する法令を遵守し、不正利用を固く禁じます。
|
||||||
- このプログラムは、302リダイレクト/トラフィック転送のみを行い、いかなるユーザーデータも傍受、保存、改ざんしません;
|
- 本ソフトウェアは公式 SDK または API に基づいており、その動作を一切改変・破壊・妨害しません。
|
||||||
- このプログラムを使用する前に、アカウントの禁止、ダウンロード速度の制限など、対応するリスクを理解し、負担する必要があります;
|
- 302 リダイレクトまたはトラフィック転送のみを行い、ユーザーデータの傍受・保存・改ざんは一切行いません。
|
||||||
- 権利侵害がある場合は、[OpenListTeam](https://github.com/OpenListTeam) までご連絡ください。チームが迅速に対応いたします。
|
- 本プロジェクトは、いかなる公式プラットフォームやサービスプロバイダーとも関係ありません。
|
||||||
|
- 本ソフトウェアは「現状有姿」で提供されており、商品性や特定目的への適合性を含むいかなる保証もありません。
|
||||||
|
- 本ソフトウェアの使用または使用不能によるいかなる直接的・間接的損害についても、メンテナは責任を負いません。
|
||||||
|
- 本ソフトウェアの利用に伴うすべてのリスク(アカウントの凍結やダウンロード速度制限などを含む)は、利用者自身が負うものとします。
|
||||||
|
- 本プロジェクトは [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) ライセンスに従います。詳細は [LICENSE](./LICENSE) ファイルをご覧ください。
|
||||||
|
|
||||||
---
|
## お問い合わせ
|
||||||
|
|
||||||
> [@GitHub](https://github.com/OpenListTeam) · [Telegram Group](https://t.me/OpenListTeam) · [Telegram Channel](https://t.me/OpenListOfficial)
|
- [@GitHub](https://github.com/OpenListTeam)
|
||||||
|
- [Telegram グループ](https://t.me/OpenListTeam)
|
||||||
|
- [Telegram チャンネル](https://t.me/OpenListOfficial)
|
||||||
|
|
||||||
|
## コントリビューター
|
||||||
|
|
||||||
|
オリジナルプロジェクト [AlistGo/alist](https://github.com/AlistGo/alist) の作者 [Xhofe](https://github.com/Xhofe) およびその他すべての貢献者に心より感謝いたします。
|
||||||
|
|
||||||
|
素晴らしい皆様に感謝します:
|
||||||
|
|
||||||
|
[](https://github.com/OpenListTeam/OpenList/graphs/contributors)
|
||||||
|
122
README_nl.md
Normal file
122
README_nl.md
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<div align="center">
|
||||||
|
<img style="width: 128px; height: 128px;" src="https://raw.githubusercontent.com/OpenListTeam/Logo/main/logo.svg" alt="logo" />
|
||||||
|
|
||||||
|
<p><em>OpenList is een veerkrachtige, langetermijn, door de gemeenschap geleide fork van AList — gebouwd om open source te beschermen tegen op vertrouwen gebaseerde aanvallen.</em></p>
|
||||||
|
|
||||||
|
<img src="https://goreportcard.com/badge/github.com/OpenListTeam/OpenList/v3" alt="latest version" />
|
||||||
|
<a href="https://github.com/OpenListTeam/OpenList/blob/main/LICENSE"><img src="https://img.shields.io/github/license/OpenListTeam/OpenList" alt="License" /></a>
|
||||||
|
<a href="https://github.com/OpenListTeam/OpenList/actions?query=workflow%3ABuild"><img src="https://img.shields.io/github/actions/workflow/status/OpenListTeam/OpenList/build.yml?branch=main" alt="Build status" /></a>
|
||||||
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/release/OpenListTeam/OpenList" alt="latest version" /></a>
|
||||||
|
|
||||||
|
<a href="https://github.com/OpenListTeam/OpenList/discussions"><img src="https://img.shields.io/github/discussions/OpenListTeam/OpenList?color=%23ED8936" alt="discussions" /></a>
|
||||||
|
<a href="https://github.com/OpenListTeam/OpenList/releases"><img src="https://img.shields.io/github/downloads/OpenListTeam/OpenList/total?color=%239F7AEA&logo=github" alt="Downloads" /></a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- [English](./README.md) | [中文](./README_cn.md) | [日本語](./README_ja.md) | Dutch
|
||||||
|
|
||||||
|
- [Bijdragen](./CONTRIBUTING.md)
|
||||||
|
- [Gedragscode](./CODE_OF_CONDUCT.md)
|
||||||
|
- [Licentie](./LICENSE)
|
||||||
|
|
||||||
|
## Functies
|
||||||
|
|
||||||
|
- [x] Meerdere opslagmogelijkheden
|
||||||
|
- [x] Lokale opslag
|
||||||
|
- [x] [Aliyundrive](https://www.alipan.com)
|
||||||
|
- [x] OneDrive / Sharepoint ([Global](https://www.microsoft.com/en-us/microsoft-365/onedrive/online-cloud-storage), [CN](https://portal.partner.microsoftonline.cn), DE, US)
|
||||||
|
- [x] [189cloud](https://cloud.189.cn) (Persoonlijk, Familie)
|
||||||
|
- [x] [GoogleDrive](https://drive.google.com)
|
||||||
|
- [x] [123pan](https://www.123pan.com)
|
||||||
|
- [x] [FTP / SFTP](https://en.wikipedia.org/wiki/File_Transfer_Protocol)
|
||||||
|
- [x] [PikPak](https://www.mypikpak.com)
|
||||||
|
- [x] [S3](https://aws.amazon.com/s3)
|
||||||
|
- [x] [Seafile](https://seafile.com)
|
||||||
|
- [x] [UPYUN Storage Service](https://www.upyun.com/products/file-storage)
|
||||||
|
- [x] [WebDAV](https://en.wikipedia.org/wiki/WebDAV)
|
||||||
|
- [x] Teambition([China](https://www.teambition.com), [Internationaal](https://us.teambition.com))
|
||||||
|
- [x] [Mediatrack](https://www.mediatrack.cn)
|
||||||
|
- [x] [139yun](https://yun.139.com) (Persoonlijk, Familie, Groep)
|
||||||
|
- [x] [YandexDisk](https://disk.yandex.com)
|
||||||
|
- [x] [BaiduNetdisk](http://pan.baidu.com)
|
||||||
|
- [x] [Terabox](https://www.terabox.com/main)
|
||||||
|
- [x] [UC](https://drive.uc.cn)
|
||||||
|
- [x] [Quark](https://pan.quark.cn)
|
||||||
|
- [x] [Thunder](https://pan.xunlei.com)
|
||||||
|
- [x] [Lanzou](https://www.lanzou.com)
|
||||||
|
- [x] [ILanzou](https://www.ilanzou.com)
|
||||||
|
- [x] [Aliyundrive share](https://www.alipan.com)
|
||||||
|
- [x] [Google photo](https://photos.google.com)
|
||||||
|
- [x] [Mega.nz](https://mega.nz)
|
||||||
|
- [x] [Baidu photo](https://photo.baidu.com)
|
||||||
|
- [x] [SMB](https://en.wikipedia.org/wiki/Server_Message_Block)
|
||||||
|
- [x] [115](https://115.com)
|
||||||
|
- [x] [Cloudreve](https://cloudreve.org)
|
||||||
|
- [x] [Dropbox](https://www.dropbox.com)
|
||||||
|
- [x] [FeijiPan](https://www.feijipan.com)
|
||||||
|
- [x] [dogecloud](https://www.dogecloud.com/product/oss)
|
||||||
|
- [x] [Azure Blob Storage](https://azure.microsoft.com/products/storage/blobs)
|
||||||
|
- [x] Eenvoudig te implementeren en direct te gebruiken
|
||||||
|
- [x] Bestandsvoorbeeld (PDF, markdown, code, platte tekst, ...)
|
||||||
|
- [x] Afbeeldingsvoorbeeld in galerijweergave
|
||||||
|
- [x] Video- en audiovoorbeeld, ondersteuning voor songteksten en ondertitels
|
||||||
|
- [x] Office-documenten voorbeeld (docx, pptx, xlsx, ...)
|
||||||
|
- [x] `README.md` voorbeeldweergave
|
||||||
|
- [x] Permalink kopiëren en direct downloaden van bestanden
|
||||||
|
- [x] Donkere modus
|
||||||
|
- [x] I18n
|
||||||
|
- [x] Beschermde routes (wachtwoordbeveiliging en authenticatie)
|
||||||
|
- [x] WebDAV
|
||||||
|
- [x] Docker implementatie
|
||||||
|
- [x] Cloudflare Workers proxy
|
||||||
|
- [x] Bestands-/map-pakket download
|
||||||
|
- [x] Webupload (bezoekers kunnen uploaden toestaan), verwijderen, map aanmaken, hernoemen, verplaatsen en kopiëren
|
||||||
|
- [x] Offline download
|
||||||
|
- [x] Bestanden kopiëren tussen twee opslaglocaties
|
||||||
|
- [x] Multi-thread downloadversnelling voor enkelvoudige download/stream
|
||||||
|
|
||||||
|
## Documentatie
|
||||||
|
|
||||||
|
- 📘 [Documentatie & Installatiegids](https://docs.oplist.org)
|
||||||
|
- 📚 [Back-up documentatiesite](https://docs.openlist.team)
|
||||||
|
- ⚖️ [Gebruiksvoorwaarden](https://docs.oplist.org/terms)
|
||||||
|
- 🔒 [Privacybeleid](https://docs.oplist.org/privacy)
|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
|
N.v.t. (wordt opnieuw opgebouwd)
|
||||||
|
|
||||||
|
## Discussie
|
||||||
|
|
||||||
|
Stel algemene vragen in [*Discussions*](https://github.com/OpenListTeam/OpenList/discussions), ***Issues* zijn alleen voor bugmeldingen en feature requests.**
|
||||||
|
|
||||||
|
## Licentie
|
||||||
|
|
||||||
|
`OpenList` is open-source software onder de [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) licentie.
|
||||||
|
|
||||||
|
## Disclaimer
|
||||||
|
|
||||||
|
- Dit project is gratis en open-source software, ontworpen om het delen van bestanden via netdisks te vergemakkelijken, voornamelijk bedoeld ter ondersteuning van het downloaden en leren van de programmeertaal Go.
|
||||||
|
- Houd u bij het gebruik van deze software aan alle toepasselijke wetten en voorschriften. Elk misbruik is ten strengste verboden.
|
||||||
|
- De software is gebaseerd op officiële SDK's of API's zonder enige wijziging, verstoring of beïnvloeding van hun gedrag.
|
||||||
|
- Het voert alleen HTTP 302-omleidingen of verkeersdoorsturing uit en onderschept, slaat of wijzigt geen gebruikersgegevens.
|
||||||
|
- Dit project is niet gelieerd aan enig officieel platform of dienstverlener.
|
||||||
|
- De software wordt geleverd "zoals deze is", zonder enige vorm van garantie, expliciet of impliciet, inclusief maar niet beperkt tot garanties van verkoopbaarheid of geschiktheid voor een bepaald doel.
|
||||||
|
- De beheerders zijn niet aansprakelijk voor enige directe of indirecte schade die voortvloeit uit het gebruik van of het onvermogen om deze software te gebruiken.
|
||||||
|
- U bent zelf verantwoordelijk voor alle risico's die gepaard gaan met het gebruik van deze software, inclusief maar niet beperkt tot accountblokkades of downloadbeperkingen.
|
||||||
|
- Dit project valt onder de [AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.txt) licentie. Zie het [LICENSE](./LICENSE) bestand voor details.
|
||||||
|
|
||||||
|
## Contact
|
||||||
|
|
||||||
|
- [@GitHub](https://github.com/OpenListTeam)
|
||||||
|
- [Telegram Groep](https://t.me/OpenListTeam)
|
||||||
|
- [Telegram Kanaal](https://t.me/OpenListOfficial)
|
||||||
|
|
||||||
|
## Bijdragers
|
||||||
|
|
||||||
|
Wij danken de auteur [Xhofe](https://github.com/Xhofe) van het originele project [AlistGo/alist](https://github.com/AlistGo/alist) en alle andere bijdragers.
|
||||||
|
|
||||||
|
Dank aan deze geweldige mensen:
|
||||||
|
|
||||||
|
[](https://github.com/OpenListTeam/OpenList/graphs/contributors)
|
164
build.sh
164
build.sh
@ -9,6 +9,12 @@ if [ -n "$GITHUB_TOKEN" ]; then
|
|||||||
githubAuthArgs="--header \"Authorization: Bearer $GITHUB_TOKEN\""
|
githubAuthArgs="--header \"Authorization: Bearer $GITHUB_TOKEN\""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check for lite parameter
|
||||||
|
useLite=false
|
||||||
|
if [[ "$*" == *"lite"* ]]; then
|
||||||
|
useLite=true
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$1" = "dev" ]; then
|
if [ "$1" = "dev" ]; then
|
||||||
version="dev"
|
version="dev"
|
||||||
webVersion="dev"
|
webVersion="dev"
|
||||||
@ -24,6 +30,11 @@ fi
|
|||||||
|
|
||||||
echo "backend version: $version"
|
echo "backend version: $version"
|
||||||
echo "frontend version: $webVersion"
|
echo "frontend version: $webVersion"
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
echo "using lite frontend"
|
||||||
|
else
|
||||||
|
echo "using standard frontend"
|
||||||
|
fi
|
||||||
|
|
||||||
ldflags="\
|
ldflags="\
|
||||||
-w -s \
|
-w -s \
|
||||||
@ -43,7 +54,13 @@ FetchWebDev() {
|
|||||||
pre_release_json=$(eval "curl -fsSL --max-time 2 $githubAuthArgs -H \"Accept: application/vnd.github.v3+json\" \"https://api.github.com/repos/OpenListTeam/OpenList-Frontend/releases/tags/$pre_release_tag\"")
|
pre_release_json=$(eval "curl -fsSL --max-time 2 $githubAuthArgs -H \"Accept: application/vnd.github.v3+json\" \"https://api.github.com/repos/OpenListTeam/OpenList-Frontend/releases/tags/$pre_release_tag\"")
|
||||||
fi
|
fi
|
||||||
pre_release_assets=$(echo "$pre_release_json" | jq -r '.assets[].browser_download_url')
|
pre_release_assets=$(echo "$pre_release_json" | jq -r '.assets[].browser_download_url')
|
||||||
pre_release_tar_url=$(echo "$pre_release_assets" | grep "openlist-frontend-dist" | grep "\.tar\.gz$")
|
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
pre_release_tar_url=$(echo "$pre_release_assets" | grep "openlist-frontend-dist-lite" | grep "\.tar\.gz$")
|
||||||
|
else
|
||||||
|
pre_release_tar_url=$(echo "$pre_release_assets" | grep "openlist-frontend-dist" | grep -v "lite" | grep "\.tar\.gz$")
|
||||||
|
fi
|
||||||
|
|
||||||
curl -fsSL "$pre_release_tar_url" -o web-dist-dev.tar.gz
|
curl -fsSL "$pre_release_tar_url" -o web-dist-dev.tar.gz
|
||||||
rm -rf public/dist && mkdir -p public/dist
|
rm -rf public/dist && mkdir -p public/dist
|
||||||
tar -zxvf web-dist-dev.tar.gz -C public/dist
|
tar -zxvf web-dist-dev.tar.gz -C public/dist
|
||||||
@ -53,7 +70,13 @@ FetchWebDev() {
|
|||||||
FetchWebRelease() {
|
FetchWebRelease() {
|
||||||
release_json=$(eval "curl -fsSL --max-time 2 $githubAuthArgs -H \"Accept: application/vnd.github.v3+json\" \"https://api.github.com/repos/OpenListTeam/OpenList-Frontend/releases/latest\"")
|
release_json=$(eval "curl -fsSL --max-time 2 $githubAuthArgs -H \"Accept: application/vnd.github.v3+json\" \"https://api.github.com/repos/OpenListTeam/OpenList-Frontend/releases/latest\"")
|
||||||
release_assets=$(echo "$release_json" | jq -r '.assets[].browser_download_url')
|
release_assets=$(echo "$release_json" | jq -r '.assets[].browser_download_url')
|
||||||
release_tar_url=$(echo "$release_assets" | grep "openlist-frontend-dist" | grep "\.tar\.gz$")
|
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
release_tar_url=$(echo "$release_assets" | grep "openlist-frontend-dist-lite" | grep "\.tar\.gz$")
|
||||||
|
else
|
||||||
|
release_tar_url=$(echo "$release_assets" | grep "openlist-frontend-dist" | grep -v "lite" | grep "\.tar\.gz$")
|
||||||
|
fi
|
||||||
|
|
||||||
curl -fsSL "$release_tar_url" -o dist.tar.gz
|
curl -fsSL "$release_tar_url" -o dist.tar.gz
|
||||||
rm -rf public/dist && mkdir -p public/dist
|
rm -rf public/dist && mkdir -p public/dist
|
||||||
tar -zxvf dist.tar.gz -C public/dist
|
tar -zxvf dist.tar.gz -C public/dist
|
||||||
@ -293,82 +316,171 @@ MakeRelease() {
|
|||||||
rm -rv compress
|
rm -rv compress
|
||||||
fi
|
fi
|
||||||
mkdir compress
|
mkdir compress
|
||||||
|
|
||||||
|
# Add -lite suffix if useLite is true
|
||||||
|
liteSuffix=""
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
liteSuffix="-lite"
|
||||||
|
fi
|
||||||
|
|
||||||
for i in $(find . -type f -name "$appName-linux-*"); do
|
for i in $(find . -type f -name "$appName-linux-*"); do
|
||||||
cp "$i" "$appName"
|
cp "$i" "$appName"
|
||||||
tar -czvf compress/"$i".tar.gz "$appName"
|
tar -czvf compress/"$i$liteSuffix".tar.gz "$appName"
|
||||||
rm -f "$appName"
|
rm -f "$appName"
|
||||||
done
|
done
|
||||||
for i in $(find . -type f -name "$appName-android-*"); do
|
for i in $(find . -type f -name "$appName-android-*"); do
|
||||||
cp "$i" "$appName"
|
cp "$i" "$appName"
|
||||||
tar -czvf compress/"$i".tar.gz "$appName"
|
tar -czvf compress/"$i$liteSuffix".tar.gz "$appName"
|
||||||
rm -f "$appName"
|
rm -f "$appName"
|
||||||
done
|
done
|
||||||
for i in $(find . -type f -name "$appName-darwin-*"); do
|
for i in $(find . -type f -name "$appName-darwin-*"); do
|
||||||
cp "$i" "$appName"
|
cp "$i" "$appName"
|
||||||
tar -czvf compress/"$i".tar.gz "$appName"
|
tar -czvf compress/"$i$liteSuffix".tar.gz "$appName"
|
||||||
rm -f "$appName"
|
rm -f "$appName"
|
||||||
done
|
done
|
||||||
for i in $(find . -type f -name "$appName-freebsd-*"); do
|
for i in $(find . -type f -name "$appName-freebsd-*"); do
|
||||||
cp "$i" "$appName"
|
cp "$i" "$appName"
|
||||||
tar -czvf compress/"$i".tar.gz "$appName"
|
tar -czvf compress/"$i$liteSuffix".tar.gz "$appName"
|
||||||
rm -f "$appName"
|
rm -f "$appName"
|
||||||
done
|
done
|
||||||
for i in $(find . -type f -name "$appName-windows-*"); do
|
for i in $(find . -type f -name "$appName-windows-*"); do
|
||||||
cp "$i" "$appName".exe
|
cp "$i" "$appName".exe
|
||||||
zip compress/$(echo $i | sed 's/\.[^.]*$//').zip "$appName".exe
|
zip compress/$(echo $i | sed 's/\.[^.]*$//')$liteSuffix.zip "$appName".exe
|
||||||
rm -f "$appName".exe
|
rm -f "$appName".exe
|
||||||
done
|
done
|
||||||
cd compress
|
cd compress
|
||||||
find . -type f -print0 | xargs -0 md5sum >"$1"
|
|
||||||
cat "$1"
|
# Handle MD5 filename - add -lite suffix only if not already present
|
||||||
|
md5FileName="$1"
|
||||||
|
if [ "$useLite" = true ] && [[ "$1" != *"-lite.txt" ]]; then
|
||||||
|
md5FileName=$(echo "$1" | sed 's/\.txt$/-lite.txt/')
|
||||||
|
fi
|
||||||
|
|
||||||
|
find . -type f -print0 | xargs -0 md5sum >"$md5FileName"
|
||||||
|
cat "$md5FileName"
|
||||||
cd ../..
|
cd ../..
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ "$1" = "dev" ]; then
|
# Parse parameters to handle lite parameter position flexibility
|
||||||
|
buildType=""
|
||||||
|
dockerType=""
|
||||||
|
otherParam=""
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $arg in
|
||||||
|
dev|beta|release|zip|prepare)
|
||||||
|
if [ -z "$buildType" ]; then
|
||||||
|
buildType="$arg"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
docker|docker-multiplatform|linux_musl_arm|linux_musl|android|freebsd|web)
|
||||||
|
if [ -z "$dockerType" ]; then
|
||||||
|
dockerType="$arg"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
lite)
|
||||||
|
# lite parameter is already handled above
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -z "$otherParam" ]; then
|
||||||
|
otherParam="$arg"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$buildType" = "dev" ]; then
|
||||||
FetchWebDev
|
FetchWebDev
|
||||||
if [ "$2" = "docker" ]; then
|
if [ "$dockerType" = "docker" ]; then
|
||||||
BuildDocker
|
BuildDocker
|
||||||
elif [ "$2" = "docker-multiplatform" ]; then
|
elif [ "$dockerType" = "docker-multiplatform" ]; then
|
||||||
BuildDockerMultiplatform
|
BuildDockerMultiplatform
|
||||||
elif [ "$2" = "web" ]; then
|
elif [ "$dockerType" = "web" ]; then
|
||||||
echo "web only"
|
echo "web only"
|
||||||
else
|
else
|
||||||
BuildDev
|
BuildDev
|
||||||
fi
|
fi
|
||||||
elif [ "$1" = "release" -o "$1" = "beta" ]; then
|
elif [ "$buildType" = "release" -o "$buildType" = "beta" ]; then
|
||||||
if [ "$1" = "beta" ]; then
|
if [ "$buildType" = "beta" ]; then
|
||||||
FetchWebDev
|
FetchWebDev
|
||||||
else
|
else
|
||||||
FetchWebRelease
|
FetchWebRelease
|
||||||
fi
|
fi
|
||||||
if [ "$2" = "docker" ]; then
|
if [ "$dockerType" = "docker" ]; then
|
||||||
BuildDocker
|
BuildDocker
|
||||||
elif [ "$2" = "docker-multiplatform" ]; then
|
elif [ "$dockerType" = "docker-multiplatform" ]; then
|
||||||
BuildDockerMultiplatform
|
BuildDockerMultiplatform
|
||||||
elif [ "$2" = "linux_musl_arm" ]; then
|
elif [ "$dockerType" = "linux_musl_arm" ]; then
|
||||||
BuildReleaseLinuxMuslArm
|
BuildReleaseLinuxMuslArm
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "md5-linux-musl-arm-lite.txt"
|
||||||
|
else
|
||||||
MakeRelease "md5-linux-musl-arm.txt"
|
MakeRelease "md5-linux-musl-arm.txt"
|
||||||
elif [ "$2" = "linux_musl" ]; then
|
fi
|
||||||
|
elif [ "$dockerType" = "linux_musl" ]; then
|
||||||
BuildReleaseLinuxMusl
|
BuildReleaseLinuxMusl
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "md5-linux-musl-lite.txt"
|
||||||
|
else
|
||||||
MakeRelease "md5-linux-musl.txt"
|
MakeRelease "md5-linux-musl.txt"
|
||||||
elif [ "$2" = "android" ]; then
|
fi
|
||||||
|
elif [ "$dockerType" = "android" ]; then
|
||||||
BuildReleaseAndroid
|
BuildReleaseAndroid
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "md5-android-lite.txt"
|
||||||
|
else
|
||||||
MakeRelease "md5-android.txt"
|
MakeRelease "md5-android.txt"
|
||||||
elif [ "$2" = "freebsd" ]; then
|
fi
|
||||||
|
elif [ "$dockerType" = "freebsd" ]; then
|
||||||
BuildReleaseFreeBSD
|
BuildReleaseFreeBSD
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "md5-freebsd-lite.txt"
|
||||||
|
else
|
||||||
MakeRelease "md5-freebsd.txt"
|
MakeRelease "md5-freebsd.txt"
|
||||||
elif [ "$2" = "web" ]; then
|
fi
|
||||||
|
elif [ "$dockerType" = "web" ]; then
|
||||||
echo "web only"
|
echo "web only"
|
||||||
else
|
else
|
||||||
BuildRelease
|
BuildRelease
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "md5-lite.txt"
|
||||||
|
else
|
||||||
MakeRelease "md5.txt"
|
MakeRelease "md5.txt"
|
||||||
fi
|
fi
|
||||||
elif [ "$1" = "prepare" ]; then
|
fi
|
||||||
if [ "$2" = "docker-multiplatform" ]; then
|
elif [ "$buildType" = "prepare" ]; then
|
||||||
|
if [ "$dockerType" = "docker-multiplatform" ]; then
|
||||||
PrepareBuildDockerMusl
|
PrepareBuildDockerMusl
|
||||||
fi
|
fi
|
||||||
elif [ "$1" = "zip" ]; then
|
elif [ "$buildType" = "zip" ]; then
|
||||||
MakeRelease "$2".txt
|
if [ -n "$otherParam" ]; then
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "$otherParam-lite.txt"
|
||||||
|
else
|
||||||
|
MakeRelease "$otherParam.txt"
|
||||||
|
fi
|
||||||
|
elif [ -n "$dockerType" ]; then
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "$dockerType-lite.txt"
|
||||||
|
else
|
||||||
|
MakeRelease "$dockerType.txt"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$useLite" = true ]; then
|
||||||
|
MakeRelease "md5-lite.txt"
|
||||||
|
else
|
||||||
|
MakeRelease "md5.txt"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo -e "Parameter error"
|
echo -e "Parameter error"
|
||||||
|
echo -e "Usage: $0 {dev|beta|release|zip|prepare} [docker|docker-multiplatform|linux_musl_arm|linux_musl|android|freebsd|web] [lite] [other_params]"
|
||||||
|
echo -e "Examples:"
|
||||||
|
echo -e " $0 dev"
|
||||||
|
echo -e " $0 dev lite"
|
||||||
|
echo -e " $0 dev docker"
|
||||||
|
echo -e " $0 dev docker lite"
|
||||||
|
echo -e " $0 release"
|
||||||
|
echo -e " $0 release lite"
|
||||||
|
echo -e " $0 release docker lite"
|
||||||
fi
|
fi
|
||||||
|
10
cmd/admin.go
10
cmd/admin.go
@ -4,11 +4,11 @@ Copyright © 2022 NAME HERE <EMAIL ADDRESS>
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/internal/setting"
|
"github.com/OpenListTeam/OpenList/v4/internal/setting"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils/random"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils/random"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -4,8 +4,8 @@ Copyright © 2022 NAME HERE <EMAIL ADDRESS>
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -5,10 +5,10 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/bootstrap"
|
"github.com/OpenListTeam/OpenList/v4/internal/bootstrap"
|
||||||
"github.com/OpenListTeam/OpenList/internal/bootstrap/data"
|
"github.com/OpenListTeam/OpenList/v4/internal/bootstrap/data"
|
||||||
"github.com/OpenListTeam/OpenList/internal/db"
|
"github.com/OpenListTeam/OpenList/v4/internal/db"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
98
cmd/crypt.go
98
cmd/crypt.go
@ -19,7 +19,7 @@ import (
|
|||||||
// encryption and decryption command format for Crypt driver
|
// encryption and decryption command format for Crypt driver
|
||||||
|
|
||||||
type options struct {
|
type options struct {
|
||||||
Op string //decrypt or encrypt
|
op string //decrypt or encrypt
|
||||||
src string //source dir or file
|
src string //source dir or file
|
||||||
dst string //out destination
|
dst string //out destination
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ func init() {
|
|||||||
// is called directly, e.g.:
|
// is called directly, e.g.:
|
||||||
CryptCmd.Flags().StringVarP(&opt.src, "src", "s", "", "src file or dir to encrypt/decrypt")
|
CryptCmd.Flags().StringVarP(&opt.src, "src", "s", "", "src file or dir to encrypt/decrypt")
|
||||||
CryptCmd.Flags().StringVarP(&opt.dst, "dst", "d", "", "dst dir to output,if not set,output to src dir")
|
CryptCmd.Flags().StringVarP(&opt.dst, "dst", "d", "", "dst dir to output,if not set,output to src dir")
|
||||||
CryptCmd.Flags().StringVar(&opt.Op, "op", "", "de or en which stands for decrypt or encrypt")
|
CryptCmd.Flags().StringVar(&opt.op, "op", "", "de or en which stands for decrypt or encrypt")
|
||||||
|
|
||||||
CryptCmd.Flags().StringVar(&opt.pwd, "pwd", "", "password used to encrypt/decrypt,if not contain ___Obfuscated___ prefix,will be obfuscated before used")
|
CryptCmd.Flags().StringVar(&opt.pwd, "pwd", "", "password used to encrypt/decrypt,if not contain ___Obfuscated___ prefix,will be obfuscated before used")
|
||||||
CryptCmd.Flags().StringVar(&opt.salt, "salt", "", "salt used to encrypt/decrypt,if not contain ___Obfuscated___ prefix,will be obfuscated before used")
|
CryptCmd.Flags().StringVar(&opt.salt, "salt", "", "salt used to encrypt/decrypt,if not contain ___Obfuscated___ prefix,will be obfuscated before used")
|
||||||
@ -71,7 +71,7 @@ func (o *options) validate() {
|
|||||||
if o.src == "" {
|
if o.src == "" {
|
||||||
log.Fatal("src can not be empty")
|
log.Fatal("src can not be empty")
|
||||||
}
|
}
|
||||||
if o.Op != "encrypt" && o.Op != "decrypt" && o.Op != "en" && o.Op != "de" {
|
if o.op != "encrypt" && o.op != "decrypt" && o.op != "en" && o.op != "de" {
|
||||||
log.Fatal("op must be encrypt or decrypt")
|
log.Fatal("op must be encrypt or decrypt")
|
||||||
}
|
}
|
||||||
if o.filenameEncryption != "off" && o.filenameEncryption != "standard" && o.filenameEncryption != "obfuscate" {
|
if o.filenameEncryption != "off" && o.filenameEncryption != "standard" && o.filenameEncryption != "obfuscate" {
|
||||||
@ -130,24 +130,89 @@ func (o *options) cryptFileDir() {
|
|||||||
// src is dir
|
// src is dir
|
||||||
if dst == "" {
|
if dst == "" {
|
||||||
//if src is dir and not set dst dir ,create ${src}_crypt dir as dst dir
|
//if src is dir and not set dst dir ,create ${src}_crypt dir as dst dir
|
||||||
dst = path.Join("./", fileInfo.Name()+"_crypt")
|
dst = path.Join(filepath.Dir(src), fileInfo.Name()+"_crypt")
|
||||||
}
|
}
|
||||||
log.Infof("dst : %v", dst)
|
log.Infof("dst : %v", dst)
|
||||||
|
|
||||||
|
dirnameMap := make(map[string]string)
|
||||||
|
pathSeparator := string(os.PathSeparator)
|
||||||
|
|
||||||
filepath.Walk(src, func(p string, info os.FileInfo, err error) error {
|
filepath.Walk(src, func(p string, info os.FileInfo, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("get file %v info failed, err:%v", p, err)
|
log.Errorf("get file %v info failed, err:%v", p, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if info.IsDir() {
|
if p == src {
|
||||||
//create output dir
|
|
||||||
d := strings.Replace(p, src, dst, 1)
|
|
||||||
log.Infof("create output dir %v", d)
|
|
||||||
checkCreateDir(d)
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
d := strings.Replace(filepath.Dir(p), src, dst, 1)
|
log.Infof("current path %v", p)
|
||||||
o.cryptFile(cipher, p, d)
|
|
||||||
|
// relative path
|
||||||
|
rp := strings.ReplaceAll(p, src, "")
|
||||||
|
log.Infof("relative path %v", rp)
|
||||||
|
|
||||||
|
rpds := strings.Split(rp, pathSeparator)
|
||||||
|
|
||||||
|
if info.IsDir() {
|
||||||
|
// absolute dst dir for current path
|
||||||
|
dd := ""
|
||||||
|
|
||||||
|
if o.dirnameEncryption == "true" {
|
||||||
|
if o.op == "encrypt" || o.op == "en" {
|
||||||
|
for i := range rpds {
|
||||||
|
oname := rpds[i]
|
||||||
|
if _, ok := dirnameMap[rpds[i]]; ok {
|
||||||
|
rpds[i] = dirnameMap[rpds[i]]
|
||||||
|
} else {
|
||||||
|
rpds[i] = cipher.EncryptDirName(rpds[i])
|
||||||
|
dirnameMap[oname] = rpds[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dd = path.Join(dst, strings.Join(rpds, pathSeparator))
|
||||||
|
} else {
|
||||||
|
for i := range rpds {
|
||||||
|
oname := rpds[i]
|
||||||
|
if _, ok := dirnameMap[rpds[i]]; ok {
|
||||||
|
rpds[i] = dirnameMap[rpds[i]]
|
||||||
|
} else {
|
||||||
|
dnn, err := cipher.DecryptDirName(rpds[i])
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("decrypt dir name %v failed,err:%v", rpds[i], err)
|
||||||
|
}
|
||||||
|
rpds[i] = dnn
|
||||||
|
dirnameMap[oname] = dnn
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
dd = path.Join(dst, strings.Join(rpds, pathSeparator))
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
dd = path.Join(dst, rp)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Infof("create output dir %v", dd)
|
||||||
|
checkCreateDir(dd)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// file dst dir
|
||||||
|
fdd := dst
|
||||||
|
|
||||||
|
if o.dirnameEncryption == "true" {
|
||||||
|
for i := range rpds {
|
||||||
|
if i == len(rpds)-1 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
fdd = path.Join(fdd, dirnameMap[rpds[i]])
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fdd = path.Join(fdd, strings.Join(rpds[:len(rpds)-1], pathSeparator))
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Infof("file output dir %v", fdd)
|
||||||
|
o.cryptFile(cipher, p, fdd)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -168,11 +233,13 @@ func (o *options) cryptFile(cipher *rcCrypt.Cipher, src string, dst string) {
|
|||||||
|
|
||||||
var cryptSrcReader io.Reader
|
var cryptSrcReader io.Reader
|
||||||
var outFile string
|
var outFile string
|
||||||
if o.Op == "encrypt" || o.Op == "en" {
|
if o.op == "encrypt" || o.op == "en" {
|
||||||
filename := fileInfo.Name()
|
filename := fileInfo.Name()
|
||||||
if o.filenameEncryption != "off" {
|
if o.filenameEncryption != "off" {
|
||||||
filename = cipher.EncryptFileName(fileInfo.Name())
|
filename = cipher.EncryptFileName(fileInfo.Name())
|
||||||
log.Infof("encrypt file name %v to %v", fileInfo.Name(), filename)
|
log.Infof("encrypt file name %v to %v", fileInfo.Name(), filename)
|
||||||
|
} else {
|
||||||
|
filename = fileInfo.Name() + o.suffix
|
||||||
}
|
}
|
||||||
cryptSrcReader, err = cipher.EncryptData(fd)
|
cryptSrcReader, err = cipher.EncryptData(fd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -188,6 +255,8 @@ func (o *options) cryptFile(cipher *rcCrypt.Cipher, src string, dst string) {
|
|||||||
log.Fatalf("decrypt file name %v failed,err:%v", src, err)
|
log.Fatalf("decrypt file name %v failed,err:%v", src, err)
|
||||||
}
|
}
|
||||||
log.Infof("decrypt file name %v to %v, ", fileInfo.Name(), filename)
|
log.Infof("decrypt file name %v to %v, ", fileInfo.Name(), filename)
|
||||||
|
} else {
|
||||||
|
filename = strings.TrimSuffix(filename, o.suffix)
|
||||||
}
|
}
|
||||||
|
|
||||||
cryptSrcReader, err = cipher.DecryptData(fd)
|
cryptSrcReader, err = cipher.DecryptData(fd)
|
||||||
@ -222,9 +291,10 @@ func checkCreateDir(dir string) {
|
|||||||
log.Fatalf("create dir %v failed,err:%v", dir, err)
|
log.Fatalf("create dir %v failed,err:%v", dir, err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
} else if err != nil {
|
||||||
|
log.Fatalf("read dir %v err: %v", dir, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Fatalf("read dir %v err: %v", dir, err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateObfusParm(str string) string {
|
func updateObfusParm(str string) string {
|
||||||
|
12
cmd/lang.go
12
cmd/lang.go
@ -11,12 +11,12 @@ import (
|
|||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers"
|
||||||
"github.com/OpenListTeam/OpenList/internal/bootstrap"
|
"github.com/OpenListTeam/OpenList/v4/internal/bootstrap"
|
||||||
"github.com/OpenListTeam/OpenList/internal/bootstrap/data"
|
"github.com/OpenListTeam/OpenList/v4/internal/bootstrap/data"
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
10
cmd/root.go
10
cmd/root.go
@ -4,10 +4,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/cmd/flags"
|
"github.com/OpenListTeam/OpenList/v4/cmd/flags"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers"
|
||||||
_ "github.com/OpenListTeam/OpenList/internal/archive"
|
_ "github.com/OpenListTeam/OpenList/v4/internal/archive"
|
||||||
_ "github.com/OpenListTeam/OpenList/internal/offline_download"
|
_ "github.com/OpenListTeam/OpenList/v4/internal/offline_download"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ var RootCmd = &cobra.Command{
|
|||||||
Use: "openlist",
|
Use: "openlist",
|
||||||
Short: "A file list program that supports multiple storage.",
|
Short: "A file list program that supports multiple storage.",
|
||||||
Long: `A file list program that supports multiple storage,
|
Long: `A file list program that supports multiple storage,
|
||||||
built with love by Xhofe and friends in Go/Solid.js.
|
built with love by OpenListTeam.
|
||||||
Complete documentation is available at https://docs.openlist.team/`,
|
Complete documentation is available at https://docs.openlist.team/`,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,12 +13,12 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/cmd/flags"
|
"github.com/OpenListTeam/OpenList/v4/cmd/flags"
|
||||||
"github.com/OpenListTeam/OpenList/internal/bootstrap"
|
"github.com/OpenListTeam/OpenList/v4/internal/bootstrap"
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/fs"
|
"github.com/OpenListTeam/OpenList/v4/internal/fs"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/OpenListTeam/OpenList/server"
|
"github.com/OpenListTeam/OpenList/v4/server"
|
||||||
"github.com/OpenListTeam/sftpd-openlist"
|
"github.com/OpenListTeam/sftpd-openlist"
|
||||||
ftpserver "github.com/fclairamb/ftpserverlib"
|
ftpserver "github.com/fclairamb/ftpserverlib"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/db"
|
"github.com/OpenListTeam/OpenList/v4/internal/db"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/charmbracelet/bubbles/table"
|
"github.com/charmbracelet/bubbles/table"
|
||||||
tea "github.com/charmbracelet/bubbletea"
|
tea "github.com/charmbracelet/bubbletea"
|
||||||
"github.com/charmbracelet/lipgloss"
|
"github.com/charmbracelet/lipgloss"
|
||||||
|
@ -5,10 +5,10 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/internal/setting"
|
"github.com/OpenListTeam/OpenList/v4/internal/setting"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package _115
|
package _115
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -5,10 +5,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/http_range"
|
streamPkg "github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/http_range"
|
||||||
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
@ -184,12 +185,8 @@ func (d *Pan115) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
|
|||||||
}
|
}
|
||||||
preHash = strings.ToUpper(preHash)
|
preHash = strings.ToUpper(preHash)
|
||||||
fullHash := stream.GetHash().GetHash(utils.SHA1)
|
fullHash := stream.GetHash().GetHash(utils.SHA1)
|
||||||
if len(fullHash) <= 0 {
|
if len(fullHash) != utils.SHA1.Width {
|
||||||
tmpF, err := stream.CacheFullInTempFile()
|
_, fullHash, err = streamPkg.CacheFullInTempFileAndHash(stream, utils.SHA1)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
fullHash, err = utils.HashFile(utils.SHA1, tmpF)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _115
|
package _115
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -3,8 +3,8 @@ package _115
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/SheltonZhu/115driver/pkg/driver"
|
"github.com/SheltonZhu/115driver/pkg/driver"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -17,11 +17,11 @@ import (
|
|||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/http_range"
|
"github.com/OpenListTeam/OpenList/v4/pkg/http_range"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
||||||
|
|
||||||
cipher "github.com/SheltonZhu/115driver/pkg/crypto/ec115"
|
cipher "github.com/SheltonZhu/115driver/pkg/crypto/ec115"
|
||||||
|
@ -3,19 +3,20 @@ package _115_open
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/cmd/flags"
|
"github.com/OpenListTeam/OpenList/v4/cmd/flags"
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
sdk "github.com/xhofe/115-sdk-go"
|
"github.com/OpenListTeam/OpenList/v4/pkg/http_range"
|
||||||
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
|
sdk "github.com/OpenListTeam/115-sdk-go"
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -215,28 +216,27 @@ func (d *Open115) Remove(ctx context.Context, obj model.Obj) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *Open115) Put(ctx context.Context, dstDir model.Obj, file model.FileStreamer, up driver.UpdateProgress) error {
|
func (d *Open115) Put(ctx context.Context, dstDir model.Obj, file model.FileStreamer, up driver.UpdateProgress) error {
|
||||||
if err := d.WaitLimit(ctx); err != nil {
|
err := d.WaitLimit(ctx)
|
||||||
return err
|
|
||||||
}
|
|
||||||
tempF, err := file.CacheFullInTempFile()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// cal full sha1
|
sha1 := file.GetHash().GetHash(utils.SHA1)
|
||||||
sha1, err := utils.HashReader(utils.SHA1, tempF)
|
if len(sha1) != utils.SHA1.Width {
|
||||||
|
_, sha1, err = stream.CacheFullInTempFileAndHash(file, utils.SHA1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = tempF.Seek(0, io.SeekStart)
|
}
|
||||||
|
const PreHashSize int64 = 128 * utils.KB
|
||||||
|
hashSize := PreHashSize
|
||||||
|
if file.GetSize() < PreHashSize {
|
||||||
|
hashSize = file.GetSize()
|
||||||
|
}
|
||||||
|
reader, err := file.RangeRead(http_range.Range{Start: 0, Length: hashSize})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// pre 128k sha1
|
sha1128k, err := utils.HashReader(utils.SHA1, reader)
|
||||||
sha1128k, err := utils.HashReader(utils.SHA1, io.LimitReader(tempF, 128*1024))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
_, err = tempF.Seek(0, io.SeekStart)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -265,15 +265,11 @@ func (d *Open115) Put(ctx context.Context, dstDir model.Obj, file model.FileStre
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = tempF.Seek(start, io.SeekStart)
|
reader, err = file.RangeRead(http_range.Range{Start: start, Length: end - start + 1})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
signVal, err := utils.HashReader(utils.SHA1, io.LimitReader(tempF, end-start+1))
|
signVal, err := utils.HashReader(utils.SHA1, reader)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
_, err = tempF.Seek(0, io.SeekStart)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -299,7 +295,7 @@ func (d *Open115) Put(ctx context.Context, dstDir model.Obj, file model.FileStre
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// 4. upload
|
// 4. upload
|
||||||
err = d.multpartUpload(ctx, tempF, file, up, tokenResp, resp)
|
err = d.multpartUpload(ctx, file, up, tokenResp, resp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _115_open
|
package _115_open
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -3,9 +3,9 @@ package _115_open
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
sdk "github.com/xhofe/115-sdk-go"
|
sdk "github.com/OpenListTeam/115-sdk-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Obj sdk.GetFilesResp_File
|
type Obj sdk.GetFilesResp_File
|
||||||
|
@ -6,12 +6,12 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
"github.com/aliyun/aliyun-oss-go-sdk/oss"
|
||||||
"github.com/avast/retry-go"
|
"github.com/avast/retry-go"
|
||||||
sdk "github.com/xhofe/115-sdk-go"
|
sdk "github.com/OpenListTeam/115-sdk-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
func calPartSize(fileSize int64) int64 {
|
func calPartSize(fileSize int64) int64 {
|
||||||
@ -68,7 +68,7 @@ func (d *Open115) singleUpload(ctx context.Context, tempF model.File, tokenResp
|
|||||||
// } `json:"data"`
|
// } `json:"data"`
|
||||||
// }
|
// }
|
||||||
|
|
||||||
func (d *Open115) multpartUpload(ctx context.Context, tempF model.File, stream model.FileStreamer, up driver.UpdateProgress, tokenResp *sdk.UploadGetTokenResp, initResp *sdk.UploadInitResp) error {
|
func (d *Open115) multpartUpload(ctx context.Context, stream model.FileStreamer, up driver.UpdateProgress, tokenResp *sdk.UploadGetTokenResp, initResp *sdk.UploadInitResp) error {
|
||||||
fileSize := stream.GetSize()
|
fileSize := stream.GetSize()
|
||||||
chunkSize := calPartSize(fileSize)
|
chunkSize := calPartSize(fileSize)
|
||||||
|
|
||||||
|
@ -3,10 +3,10 @@ package _115_share
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
)
|
)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _115_share
|
package _115_share
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -5,8 +5,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
driver115 "github.com/SheltonZhu/115driver/pkg/driver"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
)
|
)
|
||||||
|
@ -12,12 +12,12 @@ import (
|
|||||||
|
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/stream"
|
"github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
"github.com/aws/aws-sdk-go/aws/session"
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _123
|
package _123
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type File struct {
|
type File struct {
|
||||||
|
@ -7,10 +7,10 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -13,8 +13,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
@ -5,10 +5,10 @@ import (
|
|||||||
stdpath "path"
|
stdpath "path"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Pan123Link struct {
|
type Pan123Link struct {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _123Link
|
package _123Link
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -3,8 +3,8 @@ package _123Link
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Node is a node in the folder tree
|
// Node is a node in the folder tree
|
||||||
|
@ -4,12 +4,12 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/internal/stream"
|
"github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Open123 struct {
|
type Open123 struct {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _123_open
|
package _123_open
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ApiInfo struct {
|
type ApiInfo struct {
|
||||||
|
@ -6,12 +6,12 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/errgroup"
|
"github.com/OpenListTeam/OpenList/v4/pkg/errgroup"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/http_range"
|
"github.com/OpenListTeam/OpenList/v4/pkg/http_range"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/avast/retry-go"
|
"github.com/avast/retry-go"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
@ -7,8 +7,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -11,12 +11,12 @@ import (
|
|||||||
|
|
||||||
"golang.org/x/time/rate"
|
"golang.org/x/time/rate"
|
||||||
|
|
||||||
_123 "github.com/OpenListTeam/OpenList/drivers/123"
|
_123 "github.com/OpenListTeam/OpenList/v4/drivers/123"
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _123Share
|
package _123Share
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type File struct {
|
type File struct {
|
||||||
|
@ -13,8 +13,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
)
|
)
|
||||||
@ -61,7 +61,7 @@ func (d *Pan123Share) request(url string, method string, callback base.ReqCallba
|
|||||||
"origin": "https://www.123pan.com",
|
"origin": "https://www.123pan.com",
|
||||||
"referer": "https://www.123pan.com/",
|
"referer": "https://www.123pan.com/",
|
||||||
"authorization": "Bearer " + d.AccessToken,
|
"authorization": "Bearer " + d.AccessToken,
|
||||||
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) opnelist-client",
|
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) openlist-client",
|
||||||
"platform": "web",
|
"platform": "web",
|
||||||
"app-version": "3",
|
"app-version": "3",
|
||||||
//"user-agent": base.UserAgent,
|
//"user-agent": base.UserAgent,
|
||||||
|
@ -10,14 +10,14 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
streamPkg "github.com/OpenListTeam/OpenList/internal/stream"
|
streamPkg "github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/cron"
|
"github.com/OpenListTeam/OpenList/v4/pkg/cron"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils/random"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils/random"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _139
|
package _139
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -12,11 +12,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils/random"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils/random"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
@ -5,10 +5,10 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -18,7 +18,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
myrand "github.com/OpenListTeam/OpenList/pkg/utils/random"
|
myrand "github.com/OpenListTeam/OpenList/v4/pkg/utils/random"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _189
|
package _189
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -15,11 +15,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
myrand "github.com/OpenListTeam/OpenList/pkg/utils/random"
|
myrand "github.com/OpenListTeam/OpenList/v4/pkg/utils/random"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
jsoniter "github.com/json-iterator/go"
|
jsoniter "github.com/json-iterator/go"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
@ -8,10 +8,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _189_tv
|
package _189_tv
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 居然有四种返回方式
|
// 居然有四种返回方式
|
||||||
|
@ -12,11 +12,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
|
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
@ -8,11 +8,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
)
|
)
|
||||||
|
@ -18,8 +18,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils/random"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils/random"
|
||||||
)
|
)
|
||||||
|
|
||||||
func clientSuffix() map[string]string {
|
func clientSuffix() map[string]string {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package _189pc
|
package _189pc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 居然有四种返回方式
|
// 居然有四种返回方式
|
||||||
|
@ -18,16 +18,16 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/internal/setting"
|
"github.com/OpenListTeam/OpenList/v4/internal/setting"
|
||||||
"github.com/OpenListTeam/OpenList/internal/stream"
|
"github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/errgroup"
|
"github.com/OpenListTeam/OpenList/v4/pkg/errgroup"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
|
|
||||||
"github.com/avast/retry-go"
|
"github.com/avast/retry-go"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
|
@ -7,12 +7,12 @@ import (
|
|||||||
stdpath "path"
|
stdpath "path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/fs"
|
"github.com/OpenListTeam/OpenList/v4/internal/fs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/stream"
|
"github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Alias struct {
|
type Alias struct {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package alias
|
package alias
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -7,14 +7,14 @@ import (
|
|||||||
stdpath "path"
|
stdpath "path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/fs"
|
"github.com/OpenListTeam/OpenList/v4/internal/fs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/internal/sign"
|
"github.com/OpenListTeam/OpenList/v4/internal/sign"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/OpenListTeam/OpenList/server/common"
|
"github.com/OpenListTeam/OpenList/v4/server/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (d *Alias) listRoot() []model.Obj {
|
func (d *Alias) listRoot() []model.Obj {
|
||||||
@ -103,7 +103,12 @@ func (d *Alias) link(ctx context.Context, dst, sub string, args model.LinkArgs)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if _, ok := storage.(*Alias); !ok && !args.Redirect {
|
useRawLink := len(common.GetApiUrl(ctx)) == 0 // ftp、s3
|
||||||
|
if !useRawLink {
|
||||||
|
_, ok := storage.(*Alias)
|
||||||
|
useRawLink = !ok && !args.Redirect
|
||||||
|
}
|
||||||
|
if useRawLink {
|
||||||
link, _, err := op.Link(ctx, storage, reqActualPath, args)
|
link, _, err := op.Link(ctx, storage, reqActualPath, args)
|
||||||
return link, err
|
return link, err
|
||||||
}
|
}
|
||||||
@ -114,13 +119,10 @@ func (d *Alias) link(ctx context.Context, dst, sub string, args model.LinkArgs)
|
|||||||
if common.ShouldProxy(storage, stdpath.Base(sub)) {
|
if common.ShouldProxy(storage, stdpath.Base(sub)) {
|
||||||
link := &model.Link{
|
link := &model.Link{
|
||||||
URL: fmt.Sprintf("%s/p%s?sign=%s",
|
URL: fmt.Sprintf("%s/p%s?sign=%s",
|
||||||
common.GetApiUrl(args.HttpReq),
|
common.GetApiUrl(ctx),
|
||||||
utils.EncodePath(reqPath, true),
|
utils.EncodePath(reqPath, true),
|
||||||
sign.Sign(reqPath)),
|
sign.Sign(reqPath)),
|
||||||
}
|
}
|
||||||
if args.HttpReq != nil && d.ProxyRange {
|
|
||||||
link.RangeReadCloser = common.NoProxyRange
|
|
||||||
}
|
|
||||||
return link, nil
|
return link, nil
|
||||||
}
|
}
|
||||||
link, _, err := op.Link(ctx, storage, reqActualPath, args)
|
link, _, err := op.Link(ctx, storage, reqActualPath, args)
|
||||||
@ -201,31 +203,24 @@ func (d *Alias) extract(ctx context.Context, dst, sub string, args model.Archive
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if _, ok := storage.(driver.ArchiveReader); ok {
|
if _, ok := storage.(driver.ArchiveReader); !ok {
|
||||||
if _, ok := storage.(*Alias); !ok && !args.Redirect {
|
return nil, errs.NotImplement
|
||||||
link, _, err := op.DriverExtract(ctx, storage, reqActualPath, args)
|
|
||||||
return link, err
|
|
||||||
}
|
}
|
||||||
|
if args.Redirect && common.ShouldProxy(storage, stdpath.Base(sub)) {
|
||||||
_, err = fs.Get(ctx, reqPath, &fs.GetArgs{NoLog: true})
|
_, err = fs.Get(ctx, reqPath, &fs.GetArgs{NoLog: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if common.ShouldProxy(storage, stdpath.Base(sub)) {
|
|
||||||
link := &model.Link{
|
link := &model.Link{
|
||||||
URL: fmt.Sprintf("%s/ap%s?inner=%s&pass=%s&sign=%s",
|
URL: fmt.Sprintf("%s/ap%s?inner=%s&pass=%s&sign=%s",
|
||||||
common.GetApiUrl(args.HttpReq),
|
common.GetApiUrl(ctx),
|
||||||
utils.EncodePath(reqPath, true),
|
utils.EncodePath(reqPath, true),
|
||||||
utils.EncodePath(args.InnerPath, true),
|
utils.EncodePath(args.InnerPath, true),
|
||||||
url.QueryEscape(args.Password),
|
url.QueryEscape(args.Password),
|
||||||
sign.SignArchive(reqPath)),
|
sign.SignArchive(reqPath)),
|
||||||
}
|
}
|
||||||
if args.HttpReq != nil && d.ProxyRange {
|
|
||||||
link.RangeReadCloser = common.NoProxyRange
|
|
||||||
}
|
|
||||||
return link, nil
|
return link, nil
|
||||||
}
|
}
|
||||||
link, _, err := op.DriverExtract(ctx, storage, reqActualPath, args)
|
link, _, err := op.DriverExtract(ctx, storage, reqActualPath, args)
|
||||||
return link, err
|
return link, err
|
||||||
}
|
|
||||||
return nil, errs.NotImplement
|
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,14 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/stream"
|
"github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/cron"
|
"github.com/OpenListTeam/OpenList/v4/pkg/cron"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -3,7 +3,7 @@ package aliyundrive
|
|||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/generic_sync"
|
"github.com/OpenListTeam/OpenList/v4/pkg/generic_sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type State struct {
|
type State struct {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package aliyundrive
|
package aliyundrive
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -3,7 +3,7 @@ package aliyundrive
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type RespErr struct {
|
type RespErr struct {
|
||||||
|
@ -7,9 +7,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/dustinxie/ecc"
|
"github.com/dustinxie/ecc"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
@ -8,12 +8,12 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/Xhofe/rateg"
|
"github.com/OpenListTeam/rateg"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package aliyundrive_open
|
package aliyundrive_open
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -3,9 +3,9 @@ package aliyundrive_open
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ErrResp struct {
|
type ErrResp struct {
|
||||||
|
@ -11,12 +11,12 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
streamPkg "github.com/OpenListTeam/OpenList/internal/stream"
|
streamPkg "github.com/OpenListTeam/OpenList/v4/internal/stream"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/http_range"
|
"github.com/OpenListTeam/OpenList/v4/pkg/http_range"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/avast/retry-go"
|
"github.com/avast/retry-go"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
|
@ -9,10 +9,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
@ -28,6 +28,7 @@ func (d *AliyundriveOpen) _refreshToken() (string, string, error) {
|
|||||||
ErrorMessage string `json:"text"`
|
ErrorMessage string `json:"text"`
|
||||||
}
|
}
|
||||||
_, err := base.RestyClient.R().
|
_, err := base.RestyClient.R().
|
||||||
|
SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30").
|
||||||
SetResult(&resp).
|
SetResult(&resp).
|
||||||
SetQueryParams(map[string]string{
|
SetQueryParams(map[string]string{
|
||||||
"refresh_ui": d.RefreshToken,
|
"refresh_ui": d.RefreshToken,
|
||||||
|
@ -6,13 +6,13 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/cron"
|
"github.com/OpenListTeam/OpenList/v4/pkg/cron"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/Xhofe/rateg"
|
"github.com/OpenListTeam/rateg"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package aliyundrive_share
|
package aliyundrive_share
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -3,7 +3,7 @@ package aliyundrive_share
|
|||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ErrorResp struct {
|
type ErrorResp struct {
|
||||||
|
@ -4,8 +4,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
138
drivers/all.go
138
drivers/all.go
@ -1,75 +1,75 @@
|
|||||||
package drivers
|
package drivers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/115"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/115"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/115_open"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/115_open"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/115_share"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/115_share"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/123"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/123_link"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123_link"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/123_open"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123_open"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/123_share"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/123_share"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/139"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/139"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/189"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/189"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/189_tv"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/189_tv"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/189pc"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/189pc"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/alias"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/alias"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/aliyundrive"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/aliyundrive"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/aliyundrive_open"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/aliyundrive_open"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/aliyundrive_share"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/aliyundrive_share"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/azure_blob"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/azure_blob"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/baidu_netdisk"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/baidu_netdisk"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/baidu_photo"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/baidu_photo"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/chaoxing"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/chaoxing"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/cloudreve"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/cloudreve"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/cloudreve_v4"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/cloudreve_v4"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/crypt"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/crypt"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/doubao"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/doubao"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/doubao_share"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/doubao_share"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/dropbox"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/dropbox"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/febbox"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/febbox"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/ftp"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/ftp"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/github"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/github"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/github_releases"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/github_releases"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/google_drive"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/google_drive"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/google_photo"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/google_photo"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/halalcloud"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/halalcloud"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/ilanzou"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/ilanzou"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/ipfs_api"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/ipfs_api"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/kodbox"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/kodbox"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/lanzou"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/lanzou"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/lenovonas_share"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/lenovonas_share"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/local"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/local"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/mediatrack"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/mediatrack"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/mega"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/mega"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/misskey"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/misskey"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/mopan"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/mopan"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/netease_music"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/netease_music"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/onedrive"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/onedrive"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/onedrive_app"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/onedrive_app"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/onedrive_sharelink"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/onedrive_sharelink"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/openlist"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/openlist"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/pikpak"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/pikpak"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/pikpak_share"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/pikpak_share"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/quark_open"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/quark_open"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/quark_uc"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/quark_uc"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/quark_uc_tv"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/quark_uc_tv"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/s3"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/s3"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/seafile"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/seafile"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/sftp"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/sftp"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/smb"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/smb"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/teambition"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/teambition"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/terabox"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/terabox"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/thunder"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/thunder"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/thunder_browser"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/thunder_browser"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/thunderx"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/thunderx"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/trainbit"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/trainbit"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/url_tree"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/url_tree"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/uss"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/uss"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/virtual"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/virtual"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/webdav"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/webdav"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/weiyun"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/weiyun"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/wopan"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/wopan"
|
||||||
_ "github.com/OpenListTeam/OpenList/drivers/yandex_disk"
|
_ "github.com/OpenListTeam/OpenList/v4/drivers/yandex_disk"
|
||||||
)
|
)
|
||||||
|
|
||||||
// All do nothing,just for import
|
// All do nothing,just for import
|
||||||
|
@ -14,8 +14,8 @@ import (
|
|||||||
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
|
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
|
||||||
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container"
|
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/container"
|
||||||
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas"
|
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob/sas"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Azure Blob Storage based on the blob APIs
|
// Azure Blob Storage based on the blob APIs
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package azure_blob
|
package azure_blob
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package azure_blob
|
package azure_blob
|
||||||
|
|
||||||
import "github.com/OpenListTeam/OpenList/internal/driver"
|
import "github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
|
|
||||||
// progressTracker is used to track upload progress
|
// progressTracker is used to track upload progress
|
||||||
type progressTracker struct {
|
type progressTracker struct {
|
||||||
|
@ -12,13 +12,13 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/errgroup"
|
"github.com/OpenListTeam/OpenList/v4/pkg/errgroup"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/avast/retry-go"
|
"github.com/avast/retry-go"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package baidu_netdisk
|
package baidu_netdisk
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -5,8 +5,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TokenErrResp struct {
|
type TokenErrResp struct {
|
||||||
|
@ -10,11 +10,11 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/avast/retry-go"
|
"github.com/avast/retry-go"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
@ -40,6 +40,7 @@ func (d *BaiduNetdisk) _refreshToken() error {
|
|||||||
ErrorMessage string `json:"text"`
|
ErrorMessage string `json:"text"`
|
||||||
}
|
}
|
||||||
_, err := base.RestyClient.R().
|
_, err := base.RestyClient.R().
|
||||||
|
SetHeader("User-Agent", "Mozilla/5.0 (Macintosh; Apple macOS 15_5) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/138.0.0.0 Openlist/425.6.30").
|
||||||
SetResult(&resp).
|
SetResult(&resp).
|
||||||
SetQueryParams(map[string]string{
|
SetQueryParams(map[string]string{
|
||||||
"refresh_ui": d.RefreshToken,
|
"refresh_ui": d.RefreshToken,
|
||||||
|
@ -13,13 +13,13 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/drivers/base"
|
"github.com/OpenListTeam/OpenList/v4/drivers/base"
|
||||||
"github.com/OpenListTeam/OpenList/internal/conf"
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/errs"
|
"github.com/OpenListTeam/OpenList/v4/internal/errs"
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/errgroup"
|
"github.com/OpenListTeam/OpenList/v4/pkg/errgroup"
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
"github.com/avast/retry-go"
|
"github.com/avast/retry-go"
|
||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Tid生成
|
// Tid生成
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package baiduphoto
|
package baiduphoto
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/OpenListTeam/OpenList/internal/driver"
|
"github.com/OpenListTeam/OpenList/v4/internal/driver"
|
||||||
"github.com/OpenListTeam/OpenList/internal/op"
|
"github.com/OpenListTeam/OpenList/v4/internal/op"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Addition struct {
|
type Addition struct {
|
||||||
|
@ -4,9 +4,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/pkg/utils"
|
"github.com/OpenListTeam/OpenList/v4/pkg/utils"
|
||||||
|
|
||||||
"github.com/OpenListTeam/OpenList/internal/model"
|
"github.com/OpenListTeam/OpenList/v4/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TokenErrResp struct {
|
type TokenErrResp struct {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user