mirror of
https://github.com/Kuingsmile/PicList.git
synced 2025-03-13 00:18:13 -04:00
parent
a9eed2d4de
commit
b843278b2c
@ -263,6 +263,8 @@ SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token
|
||||
SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS domain
|
||||
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature
|
||||
SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker Host
|
||||
SETTINGS_SHORT_SINK_DOMAIN: sink domain
|
||||
SETTINGS_SHORT_SINK_TOKEN: sink token
|
||||
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: Delete local file after upload
|
||||
SETTINGS_SYNC_CONFIG: Settings Sync Configuration
|
||||
SETTINGS_SYNC_CONFIG_TITLE: Sync Settings
|
||||
|
@ -266,6 +266,8 @@ SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token
|
||||
SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS域名
|
||||
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature
|
||||
SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker域名
|
||||
SETTINGS_SHORT_SINK_DOMAIN: sink域名
|
||||
SETTINGS_SHORT_SINK_TOKEN: sink token
|
||||
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: 上传后删除本地文件
|
||||
SETTINGS_SYNC_CONFIG: 设置配置同步
|
||||
SETTINGS_SYNC_CONFIG_TITLE: 同步设置
|
||||
|
@ -264,6 +264,8 @@ SETTINGS_SHORT_URL_C1N_TOKEN: C1N Token
|
||||
SETTINGS_SHORT_URL_YOURLS_DOMAIN: YOURLS域名
|
||||
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: YOURLS signature
|
||||
SETTINGS_SHORT_URL_CF_WORKER_HOST: Cloudflare Worker Host
|
||||
SETTINGS_SHORT_SINK_DOMAIN: sink域名
|
||||
SETTINGS_SHORT_SINK_TOKEN: sink token
|
||||
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: 上傳後刪除本地檔案
|
||||
SETTINGS_SYNC_CONFIG: 設置同步配置
|
||||
SETTINGS_SYNC_CONFIG_TITLE: 同步設置
|
||||
|
@ -210,6 +210,34 @@ const generateCFWORKERShortUrl = async (url: string) => {
|
||||
return url
|
||||
}
|
||||
|
||||
const generateSinkShortUrl = async (url: string) => {
|
||||
let sinkDomain = db.get(configPaths.settings.sinkDomain) || ''
|
||||
const sinkToken = db.get(configPaths.settings.sinkToken) || ''
|
||||
if (!sinkDomain || !sinkToken) {
|
||||
logger.warn('Sink domain or token is not set')
|
||||
return url
|
||||
}
|
||||
if (!/^https?:\/\//.test(sinkDomain)) {
|
||||
sinkDomain = `http://${sinkDomain}`
|
||||
}
|
||||
if (sinkDomain.endsWith('/')) {
|
||||
sinkDomain = sinkDomain.slice(0, -1)
|
||||
}
|
||||
try {
|
||||
const res = await axios.post(
|
||||
`${sinkDomain}/api/link/create`,
|
||||
{ url },
|
||||
{ headers: { Authorization: `Bearer ${sinkToken}` } }
|
||||
)
|
||||
if (res.data?.link?.slug) {
|
||||
return `${sinkDomain}/${res.data.link.slug}`
|
||||
}
|
||||
} catch (e: any) {
|
||||
logger.error(e)
|
||||
}
|
||||
return url
|
||||
}
|
||||
|
||||
export const generateShortUrl = async (url: string) => {
|
||||
const server = db.get(configPaths.settings.shortUrlServer) || IShortUrlServer.C1N
|
||||
switch (server) {
|
||||
@ -219,6 +247,8 @@ export const generateShortUrl = async (url: string) => {
|
||||
return generateYOURLSShortUrl(url)
|
||||
case IShortUrlServer.CFWORKER:
|
||||
return generateCFWORKERShortUrl(url)
|
||||
case IShortUrlServer.SINK:
|
||||
return generateSinkShortUrl(url)
|
||||
default:
|
||||
return url
|
||||
}
|
||||
|
@ -360,6 +360,28 @@
|
||||
:placeholder="$T('SETTINGS_SHORT_URL_CF_WORKER_HOST')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="formOfSetting.useShortUrl && formOfSetting.shortUrlServer === 'sink'"
|
||||
:label="$T('SETTINGS_SHORT_SINK_DOMAIN')"
|
||||
>
|
||||
<el-input
|
||||
v-model="formOfSetting.sinkDomain"
|
||||
size="small"
|
||||
style="width: 50%"
|
||||
:placeholder="$T('SETTINGS_SHORT_SINK_DOMAIN')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="formOfSetting.useShortUrl && formOfSetting.shortUrlServer === 'sink'"
|
||||
:label="$T('SETTINGS_SHORT_SINK_TOKEN')"
|
||||
>
|
||||
<el-input
|
||||
v-model="formOfSetting.sinkToken"
|
||||
size="small"
|
||||
style="width: 50%"
|
||||
:placeholder="$T('SETTINGS_SHORT_SINK_TOKEN')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$T('SETTINGS_ENCODE_OUTPUT_URL')">
|
||||
<el-switch
|
||||
v-model="formOfSetting.encodeOutputURL"
|
||||
@ -976,6 +998,10 @@ const shortUrlServerList = [
|
||||
{
|
||||
label: 'xyTom/Url-Shorten-Worker',
|
||||
value: 'cf_worker'
|
||||
},
|
||||
{
|
||||
label: 'ccbikai/Sink',
|
||||
value: 'sink'
|
||||
}
|
||||
]
|
||||
|
||||
@ -1050,6 +1076,8 @@ const formOfSetting = ref<ISettingForm>({
|
||||
yourlsDomain: '',
|
||||
yourlsSignature: '',
|
||||
cfWorkerHost: '',
|
||||
sinkDomain: '',
|
||||
sinkToken: '',
|
||||
deleteLocalFile: false,
|
||||
serverKey: '',
|
||||
aesPassword: 'PicList-aesPassword',
|
||||
@ -1089,6 +1117,8 @@ const autoWatchKeys = [
|
||||
'yourlsDomain',
|
||||
'yourlsSignature',
|
||||
'cfWorkerHost',
|
||||
'sinkDomain',
|
||||
'sinkToken',
|
||||
'registry',
|
||||
'proxy',
|
||||
'autoCopy',
|
||||
|
@ -241,7 +241,8 @@ export enum II18nLanguage {
|
||||
export enum IShortUrlServer {
|
||||
C1N = 'c1n',
|
||||
YOURLS = 'yourls',
|
||||
CFWORKER = 'cf_worker'
|
||||
CFWORKER = 'cf_worker',
|
||||
SINK = 'sink'
|
||||
}
|
||||
|
||||
export enum commonTaskStatus {
|
||||
|
2
src/universal/types/i18n.d.ts
vendored
2
src/universal/types/i18n.d.ts
vendored
@ -259,6 +259,8 @@ interface ILocales {
|
||||
SETTINGS_SHORT_URL_YOURLS_DOMAIN: string
|
||||
SETTINGS_SHORT_URL_YOURLS_SIGNATURE: string
|
||||
SETTINGS_SHORT_URL_CF_WORKER_HOST: string
|
||||
SETTINGS_SHORT_SINK_DOMAIN: string
|
||||
SETTINGS_SHORT_SINK_TOKEN: string
|
||||
SETTINGS_DELETE_LOCAL_FILE_AFTER_UPLOAD: string
|
||||
SETTINGS_SYNC_CONFIG: string
|
||||
SETTINGS_SYNC_CONFIG_TITLE: string
|
||||
|
2
src/universal/types/view.d.ts
vendored
2
src/universal/types/view.d.ts
vendored
@ -26,6 +26,8 @@ interface ISettingForm {
|
||||
yourlsDomain: string
|
||||
yourlsSignature: string
|
||||
cfWorkerHost: string
|
||||
sinkDomain: string
|
||||
sinkToken: string
|
||||
deleteLocalFile: boolean
|
||||
serverKey: string
|
||||
aesPassword: string
|
||||
|
@ -71,6 +71,8 @@ export interface IConfigStruct {
|
||||
cfWorkerHost: string
|
||||
yourlsDomain: string
|
||||
yourlsSignature: string
|
||||
sinkDomain: string
|
||||
sinkToken: string
|
||||
isSilentNotice: boolean
|
||||
proxy: string
|
||||
registry: string
|
||||
@ -153,6 +155,8 @@ export const configPaths = {
|
||||
cfWorkerHost: 'settings.cfWorkerHost',
|
||||
yourlsDomain: 'settings.yourlsDomain',
|
||||
yourlsSignature: 'settings.yourlsSignature',
|
||||
sinkDomain: 'settings.sinkDomain',
|
||||
sinkToken: 'settings.sinkToken',
|
||||
isSilentNotice: 'settings.isSilentNotice',
|
||||
proxy: 'settings.proxy',
|
||||
registry: 'settings.registry',
|
||||
|
Loading…
Reference in New Issue
Block a user