Skip to content

Commit

Permalink
✨ Feature: add antileechtoken and expiretime for upyun manage
Browse files Browse the repository at this point in the history
  • Loading branch information
Kuingsmile committed Aug 29, 2023
1 parent 2daae92 commit ea61614
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 4 deletions.
4 changes: 4 additions & 0 deletions public/i18n/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,10 @@ MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC: Acceleration domain name - requir
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: 'Please start with http:// or https://'
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: Acceleration domain name cannot be empty
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: 'Please start the custom domain name with http:// or https://'
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: Anti-leech key - optional
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: Please enter the anti-leech key
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: If you do not need to use anti-leech, please leave it blank
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: Expiration time(s) - optional
MANAGE_CONSTANT_UPYUN_PAGING: Whether to enable pagination
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: Number of items displayed per page
MANAGE_CONSTANT_UPYUN_EXPLAIN: It is necessary to fill in the acceleration domain name of Upyun image bed, otherwise it cannot be used normally.
Expand Down
4 changes: 4 additions & 0 deletions public/i18n/zh-CN.yml
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,10 @@ MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC: 加速域名-必需
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: '请以http://或https://开头'
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: 加速域名不能为空
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: '自定义域名请以http://或https://开头'
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: 防盗链密钥-可选
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: 请填写防盗链密钥
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: 如果不填写,默认不启用防盗链
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: 防盗链过期时间(秒)-可选
MANAGE_CONSTANT_UPYUN_PAGING: 是否开启分页
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: 每页显示数量
MANAGE_CONSTANT_UPYUN_EXPLAIN: 又拍云图床务必填写加速域名,否则无法正常使用
Expand Down
4 changes: 4 additions & 0 deletions public/i18n/zh-TW.yml
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,10 @@ MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_DESC: 加速域名-必需
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: '請以http://或https://開頭'
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: 加速域名不能為空
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: '自定義域名請以http://或https://開頭'
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: 防盗链密钥-可選
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: 請填寫防盗链密钥
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: 如果不填寫,則不啟用防盗链
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: 防盗链有效期(秒)-可選
MANAGE_CONSTANT_UPYUN_PAGING: 是否開啟分頁
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: 每頁顯示數量
MANAGE_CONSTANT_UPYUN_EXPLAIN: 又拍雲圖床必須填寫加速域名,否則無法正常使用
Expand Down
21 changes: 19 additions & 2 deletions src/main/manage/apis/upyun.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,29 @@ class UpyunApi {
bucket: string
operator: string
password: string
antiLeechToken: string
expireTime: number
stopMarker = 'g2gCZAAEbmV4dGQAA2VvZg'
logger: ManageLogger

constructor (bucket: string, operator: string, password: string, logger: ManageLogger) {
constructor (bucket: string, operator: string, password: string, logger: ManageLogger, antiLeechToken?: string, expireTime?: number) {
this.ser = new Upyun.Service(bucket, operator, password)
this.cli = new Upyun.Client(this.ser)
this.bucket = bucket
this.operator = operator
this.password = password
this.logger = logger
this.antiLeechToken = antiLeechToken || ''
this.expireTime = expireTime || 24 * 60 * 60
}

getAntiLeechParam (key: string): string {
const uri = `/${encodeURIComponent(key)}`.replace(/%2F/g, '/').replace(/^\/+/g, '/')
const now = Math.round(new Date().getTime() / 1000)
const expire = this.expireTime ? now + parseInt(this.expireTime.toString(), 10) : now + 1800
const sign = md5(`${this.antiLeechToken}&${expire}&${uri}`, 'hex')
const upt = `${sign.substring(12, 20)}${expire}`
return `_upt=${upt}`
}

formatFolder (item: any, slicedPrefix: string) {
Expand All @@ -72,6 +85,10 @@ class UpyunApi {

formatFile (item: any, slicedPrefix: string, urlPrefix: string) {
const key = `${slicedPrefix}${item.name}`
let url = `${urlPrefix}/${key}`
if (this.antiLeechToken) {
url = `${url}?${this.getAntiLeechParam(key)}`
}
return {
...item,
fileName: item.name,
Expand All @@ -81,7 +98,7 @@ class UpyunApi {
checked: false,
match: false,
isImage: isImage(item.name),
url: `${urlPrefix}/${key}`,
url,
key
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/manage/manageApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ export class ManageApi extends EventEmitter implements ManageApiType {
case 'tcyun':
return new API.TcyunApi(this.currentPicBedConfig.secretId, this.currentPicBedConfig.secretKey, this.logger)
case 'upyun':
return new API.UpyunApi(this.currentPicBedConfig.bucketName, this.currentPicBedConfig.operator, this.currentPicBedConfig.password, this.logger)
return new API.UpyunApi(this.currentPicBedConfig.bucketName, this.currentPicBedConfig.operator, this.currentPicBedConfig.password, this.logger, this.currentPicBedConfig.antiLeechToken, this.currentPicBedConfig.expireTime)
case 'webdavplist':
return new API.WebdavplistApi(this.currentPicBedConfig.endpoint, this.currentPicBedConfig.username, this.currentPicBedConfig.password, this.currentPicBedConfig.sslEnabled, this.currentPicBedConfig.proxy, this.logger)
default:
Expand Down
2 changes: 2 additions & 0 deletions src/renderer/manage/pages/logIn.vue
Original file line number Diff line number Diff line change
Expand Up @@ -685,6 +685,8 @@ async function transUpToManage (config: IUploaderConfigListItem, picBedName: str
operator: config.operator,
password: config.password,
bucketName: config.bucket,
antiLeechToken: config.antiLeechToken,
expireTime: config.expireTime,
baseDir: '/',
customUrl: config.url,
transformedConfig: JSON.stringify({
Expand Down
16 changes: 15 additions & 1 deletion src/renderer/manage/utils/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -494,6 +494,20 @@ export const supportedPicBedList: IStringKeyMap = {
}
]
},
antiLeechToken: {
required: false,
description: $T('MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC'),
placeholder: $T('MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER'),
type: 'string',
default: '',
tooltip: $T('MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP')
},
expireTime: {
required: false,
description: $T('MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC'),
type: 'number',
default: 0
},
paging: {
required: true,
description: $T('MANAGE_CONSTANT_UPYUN_PAGING'),
Expand All @@ -511,7 +525,7 @@ export const supportedPicBedList: IStringKeyMap = {
}
},
explain: $T('MANAGE_CONSTANT_UPYUN_EXPLAIN'),
options: ['alias', 'bucketName', 'operator', 'password', 'baseDir', 'customUrl', 'paging', 'itemsPerPage'],
options: ['alias', 'bucketName', 'operator', 'password', 'baseDir', 'customUrl', 'paging', 'itemsPerPage', 'antiLeechToken', 'expireTime'],
refLink: 'https://piclist.cn/manage.html#%E5%8F%88%E6%8B%8D%E4%BA%91',
referenceText: $T('MANAGE_CONSTANT_UPYUN_REFER_TEXT')
},
Expand Down
4 changes: 4 additions & 0 deletions src/universal/types/i18n.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,10 @@ interface ILocales {
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_A: string
MANAGE_CONSTANT_UPYUN_IS_AUTO_CUSTOM_URL_RULE_MESSAGE_B: string
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_DESC: string
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_PLACEHOLDER: string
MANAGE_CONSTANT_UPYUN_ANTI_LEECH_TOKEN_TOOLTIP: string
MANAGE_CONSTANT_UPYUN_EXPIRE_TIME_DESC: string
MANAGE_CONSTANT_UPYUN_PAGING: string
MANAGE_CONSTANT_UPYUN_ITEMS_PAGE: string
MANAGE_CONSTANT_UPYUN_EXPLAIN: string
Expand Down

0 comments on commit ea61614

Please sign in to comment.