diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 3357242..8004e83 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -73,8 +73,8 @@ jobs: file: ./Dockerfile push: true tags: | - ghcr.io/${{ env.OWNER_LC }}/alipan-tv-token:latest - ${{ vars.DOCKERHUB_USERNAME }}/alipan-tv-token:latest + ghcr.io/${{ env.OWNER_LC }}/i-tools:latest + ${{ vars.DOCKERHUB_USERNAME }}/i-tools:latest - name: Post build cleanup run: docker builder prune --force diff --git a/README.md b/README.md index 11292e4..54d9cee 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ + +# vercel部署 +[Deploy on vercel](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FiLay1678%2Falipan-tv-token&&project-name=alipan-tv-token&repository-name=alipan-tv-token) + # 阿里云盘TV版token获取与刷新 ## 路由: @@ -10,52 +14,8 @@ # Docker部署教程 ## 直接部署 ``` -docker run --name=alipan-tv-token -d -p 3000:3000 ilay/alipan-tv-token:latest +docker run --name=alipan-tv-token -d -p 3000:3000 ilay/i-tools:latest ``` -## docker compose 配合alist -### docker-compose.yaml -``` -version: '3.3' -services: - alist: - image: 'xhofe/alist:latest' - container_name: alist - volumes: - - '/etc/alist:/opt/alist/data' - ports: - - '5244:5244' - environment: - - PUID=0 - - PGID=0 - - UMASK=022 - - TZ=Asia/Shanghai - restart: always - networks: - - alist-net - alipan-tv-token: - image: 'ilay/alipan-tv-token:latest' - container_name: alipan-tv-token - ports: - - '3000:3000' - networks: - - alist-net - restart: always -networks: - alist-net: - driver: bridge -``` - -### 在 alist 中配置 alipan-tv-token 的地址 - -在 alist 的阿里云盘open配置中: -- Oauth令牌链接填写: `http://alipan-tv-token:3000/refresh` -- 如果需要获取 token,访问: `http://yaoIp:3000` - - -# vercel部署 -[Deploy on vercel](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FiLay1678%2Falipan-tv-token&&project-name=alipan-tv-token&repository-name=alipan-tv-token) - - # Cloudflare Pages 部署教程 ## 1. Fork 项目仓库 1. 点击右上角的 "Fork" 按钮创建你自己的副本 diff --git a/app.vue b/app.vue index 3c54d2d..65a7f25 100644 --- a/app.vue +++ b/app.vue @@ -1,8 +1,8 @@ diff --git a/pages/alipan-tv-token/index.vue b/pages/alipan-tv-token/index.vue new file mode 100644 index 0000000..89b567c --- /dev/null +++ b/pages/alipan-tv-token/index.vue @@ -0,0 +1,187 @@ + + + + + \ No newline at end of file diff --git a/pages/index.vue b/pages/index.vue index 60d98de..8653adc 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1,176 +1,64 @@ - - \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico index a423a77..12d4a9e 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/server/routes/check_status/[sid].ts b/server/api/alipan-tv-token/check_status/[sid].ts similarity index 100% rename from server/routes/check_status/[sid].ts rename to server/api/alipan-tv-token/check_status/[sid].ts diff --git a/server/routes/generate_qr.ts b/server/api/alipan-tv-token/generate_qr.ts similarity index 100% rename from server/routes/generate_qr.ts rename to server/api/alipan-tv-token/generate_qr.ts diff --git a/server/api/oauth/alipan/token.ts b/server/api/oauth/alipan/token.ts new file mode 100644 index 0000000..45ede5c --- /dev/null +++ b/server/api/oauth/alipan/token.ts @@ -0,0 +1,43 @@ +import { decrypt, getParams } from "@/utils/decode"; +import { defineEventHandler } from 'h3' +import type { ApiResponse, TokenResponseEncrypt } from '~/types/api' + +export const runtime = 'edge' + +export default defineEventHandler(async (event) => { + try { + const { refresh_token } = await readBody(event); + const t = Math.floor(Date.now() / 1000); + const sendData = { + ...getParams(t), + refresh_token: refresh_token, + "Content-Type": "application/json" + }; + + const headers = Object.fromEntries( + Object.entries(sendData).map(([k, v]) => [k, String(v)]) + ); + + const tokenData = await $fetch('http://api.extscreen.com/aliyundrive/v3/token', { + method: 'POST', + headers: headers, + body: JSON.stringify(sendData) + }); + const plainData = decrypt(tokenData.data.ciphertext, tokenData.data.iv, t); + const tokenInfo = JSON.parse(plainData); + + return { + token_type: 'Bearer', + access_token: tokenInfo.access_token, + refresh_token: tokenInfo.refresh_token, + expires_in: tokenInfo.expires_in + }; + + } catch (error:any) { + return { + code: 500, + message: error.message, + data: null + } as ApiResponse + } +}) diff --git a/server/routes/refresh.ts b/server/routes/refresh.ts index 2ef8cb9..0125c64 100644 --- a/server/routes/refresh.ts +++ b/server/routes/refresh.ts @@ -32,8 +32,7 @@ export default defineEventHandler(async (event) => { refresh_token: tokenInfo.refresh_token, expires_in: tokenInfo.expires_in }; - // 直接返回响应数据 - return tokenData; + } catch (error:any) { return {