mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-09-05 07:28:42 +08:00
✨ Feature(custom): add WebDAV sync configuration options
This commit is contained in:
@@ -303,6 +303,16 @@ SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: Please enter GitHub Token
|
|||||||
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: Please enter Gitea Token
|
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: Please enter Gitea Token
|
||||||
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: Please enter Gitee Token
|
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: Please enter Gitee Token
|
||||||
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: Please enter proxy
|
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: Please enter proxy
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV Endpoint
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: Please enter WebDAV endpoint URL
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: Username
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: Please enter WebDAV username
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: Password
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: Please enter WebDAV password
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: Authentication Type
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: Enable SSL/HTTPS
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: Save Path
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: Please select save path for sync files
|
||||||
SETTINGS_UP_DOWN_DESC: Upload and download configuration files
|
SETTINGS_UP_DOWN_DESC: Upload and download configuration files
|
||||||
SETTINGS_UP_DOWN_TITLE: Please use this after filled the synchronization configuration
|
SETTINGS_UP_DOWN_TITLE: Please use this after filled the synchronization configuration
|
||||||
SETTINGS_SYNC_UPLOAD: Upload
|
SETTINGS_SYNC_UPLOAD: Upload
|
||||||
|
|||||||
@@ -306,6 +306,16 @@ SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 请输入GitHub Token
|
|||||||
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 请输入Gitea Token
|
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 请输入Gitea Token
|
||||||
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 请输入Gitee Token
|
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 请输入Gitee Token
|
||||||
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 请输入代理地址
|
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 请输入代理地址
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV端点
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: 请输入WebDAV端点URL
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: 用户名
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: 请输入WebDAV用户名
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: 密码
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: 请输入WebDAV密码
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: 认证类型
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: 启用SSL/HTTPS
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: 保存路径
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: 请选择同步文件的保存路径
|
||||||
SETTINGS_UP_DOWN_DESC: 上传下载配置文件
|
SETTINGS_UP_DOWN_DESC: 上传下载配置文件
|
||||||
SETTINGS_UP_DOWN_TITLE: 请在设置完同步配置后使用
|
SETTINGS_UP_DOWN_TITLE: 请在设置完同步配置后使用
|
||||||
SETTINGS_SYNC_UPLOAD: 上传
|
SETTINGS_SYNC_UPLOAD: 上传
|
||||||
|
|||||||
@@ -304,6 +304,16 @@ SETTINGS_SYNC_CONFIG_GITHUB_TOKEN_PLACEHOLDER: 請輸入 GitHub Token
|
|||||||
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 請輸入 Gitea Token
|
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: 請輸入 Gitea Token
|
||||||
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 請輸入 Gitee Token
|
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: 請輸入 Gitee Token
|
||||||
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 請輸入代理地址
|
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: 請輸入代理地址
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: WebDAV端點
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: 請輸入WebDAV端點URL
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: 用戶名
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: 請輸入WebDAV用戶名
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: 密碼
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: 請輸入WebDAV密碼
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: 認證類型
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: 啟用SSL/HTTPS
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: 保存路徑
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: 請選擇同步檔案的保存路徑
|
||||||
SETTINGS_UP_DOWN_DESC: 上傳和下載配置檔案
|
SETTINGS_UP_DOWN_DESC: 上傳和下載配置檔案
|
||||||
SETTINGS_UP_DOWN_TITLE: 請在設置完同步配置後再使用
|
SETTINGS_UP_DOWN_TITLE: 請在設置完同步配置後再使用
|
||||||
SETTINGS_SYNC_UPLOAD: 上傳
|
SETTINGS_SYNC_UPLOAD: 上傳
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ import fs from 'fs-extra'
|
|||||||
import { HttpsProxyAgent } from 'hpagent'
|
import { HttpsProxyAgent } from 'hpagent'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import { Octokit } from '@octokit/rest'
|
import { Octokit } from '@octokit/rest'
|
||||||
|
import { createClient, AuthType, WebDAVClientOptions } from 'webdav'
|
||||||
|
|
||||||
import db from '@core/datastore'
|
import db from '@core/datastore'
|
||||||
import logger from '@core/picgo/logger'
|
import logger from '@core/picgo/logger'
|
||||||
|
|
||||||
import { configPaths } from '#/utils/configPaths'
|
import { configPaths } from '#/utils/configPaths'
|
||||||
|
import { formatEndpoint } from '#/utils/common'
|
||||||
|
|
||||||
const STORE_PATH = app.getPath('userData')
|
const STORE_PATH = app.getPath('userData')
|
||||||
|
|
||||||
@@ -53,7 +55,30 @@ function getOctokit(syncConfig: ISyncConfig) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const isSyncConfigValidate = ({ type, username, repo, branch, token }: ISyncConfig) => {
|
const isSyncConfigValidate = ({
|
||||||
|
type,
|
||||||
|
username,
|
||||||
|
repo,
|
||||||
|
branch,
|
||||||
|
token,
|
||||||
|
webdavEndpoint,
|
||||||
|
webdavUsername,
|
||||||
|
webdavPassword,
|
||||||
|
webdavAuthType,
|
||||||
|
webdavSslEnabled,
|
||||||
|
webdavSavePath
|
||||||
|
}: ISyncConfig) => {
|
||||||
|
if (type === 'webdav') {
|
||||||
|
return (
|
||||||
|
type &&
|
||||||
|
webdavEndpoint &&
|
||||||
|
webdavUsername &&
|
||||||
|
webdavPassword &&
|
||||||
|
webdavAuthType !== undefined &&
|
||||||
|
webdavSslEnabled !== undefined &&
|
||||||
|
webdavSavePath !== undefined
|
||||||
|
)
|
||||||
|
}
|
||||||
return type && username && repo && branch && token
|
return type && username && repo && branch && token
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,6 +122,29 @@ async function uploadLocalToRemote(syncConfig: ISyncConfig, fileName: string) {
|
|||||||
const res = await axios.post(apiUrl, defaultConfig, { headers })
|
const res = await axios.post(apiUrl, defaultConfig, { headers })
|
||||||
return isHttpResSuccess(res)
|
return isHttpResSuccess(res)
|
||||||
}
|
}
|
||||||
|
case 'webdav': {
|
||||||
|
const {
|
||||||
|
webdavEndpoint = '',
|
||||||
|
webdavUsername,
|
||||||
|
webdavPassword,
|
||||||
|
webdavAuthType = 'basic',
|
||||||
|
webdavSslEnabled = true,
|
||||||
|
webdavSavePath = ''
|
||||||
|
} = syncConfig
|
||||||
|
const webdavEndpointF = formatEndpoint(webdavEndpoint, webdavSslEnabled)
|
||||||
|
const options: WebDAVClientOptions = {
|
||||||
|
username: webdavUsername,
|
||||||
|
password: webdavPassword
|
||||||
|
}
|
||||||
|
if (webdavAuthType === 'digest') {
|
||||||
|
options.authType = AuthType.Digest
|
||||||
|
}
|
||||||
|
const client = createClient(webdavEndpointF, options)
|
||||||
|
const fileContent = fs.readFileSync(localFilePath)
|
||||||
|
const remoteFilePath = webdavSavePath ? path.join(webdavSavePath, fileName) : fileName
|
||||||
|
await client.putFileContents(remoteFilePath, fileContent, { overwrite: true })
|
||||||
|
return true
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -188,6 +236,29 @@ async function updateLocalToRemote(syncConfig: ISyncConfig, fileName: string) {
|
|||||||
)
|
)
|
||||||
return isHttpResSuccess(res)
|
return isHttpResSuccess(res)
|
||||||
}
|
}
|
||||||
|
case 'webdav': {
|
||||||
|
const {
|
||||||
|
webdavEndpoint = '',
|
||||||
|
webdavUsername,
|
||||||
|
webdavPassword,
|
||||||
|
webdavAuthType = 'basic',
|
||||||
|
webdavSslEnabled = true,
|
||||||
|
webdavSavePath = ''
|
||||||
|
} = syncConfig
|
||||||
|
const webdavEndpointF = formatEndpoint(webdavEndpoint, webdavSslEnabled)
|
||||||
|
const options: WebDAVClientOptions = {
|
||||||
|
username: webdavUsername,
|
||||||
|
password: webdavPassword
|
||||||
|
}
|
||||||
|
if (webdavAuthType === 'digest') {
|
||||||
|
options.authType = AuthType.Digest
|
||||||
|
}
|
||||||
|
const client = createClient(webdavEndpointF, options)
|
||||||
|
const fileContent = fs.readFileSync(localFilePath)
|
||||||
|
const remoteFilePath = webdavSavePath ? path.join(webdavSavePath, fileName) : fileName
|
||||||
|
await client.putFileContents(remoteFilePath, fileContent, { overwrite: true })
|
||||||
|
return true
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -278,6 +349,29 @@ async function downloadRemoteToLocal(syncConfig: ISyncConfig, fileName: string)
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
case 'webdav': {
|
||||||
|
const {
|
||||||
|
webdavEndpoint = '',
|
||||||
|
webdavUsername,
|
||||||
|
webdavPassword,
|
||||||
|
webdavAuthType = 'basic',
|
||||||
|
webdavSslEnabled = true,
|
||||||
|
webdavSavePath = ''
|
||||||
|
} = syncConfig
|
||||||
|
const webdavEndpointF = formatEndpoint(webdavEndpoint, webdavSslEnabled)
|
||||||
|
const options: WebDAVClientOptions = {
|
||||||
|
username: webdavUsername,
|
||||||
|
password: webdavPassword
|
||||||
|
}
|
||||||
|
if (webdavAuthType === 'digest') {
|
||||||
|
options.authType = AuthType.Digest
|
||||||
|
}
|
||||||
|
const client = createClient(webdavEndpointF, options)
|
||||||
|
const remoteFilePath = webdavSavePath ? path.join(webdavSavePath, fileName) : fileName
|
||||||
|
const fileContent = await client.getFileContents(remoteFilePath)
|
||||||
|
await fs.writeFile(localFilePath, fileContent as Buffer)
|
||||||
|
return true
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -858,9 +858,10 @@
|
|||||||
draggable
|
draggable
|
||||||
append-to-body
|
append-to-body
|
||||||
>
|
>
|
||||||
<div class="notice-text">
|
<div class="notice-text" style="align-items: center; display: flex; justify-content: center">
|
||||||
{{ $T('SETTINGS_SYNC_CONFIG_NOTE') }}
|
{{ $T('SETTINGS_SYNC_CONFIG_NOTE') }}
|
||||||
</div>
|
</div>
|
||||||
|
<el-divider />
|
||||||
<el-form label-position="right" label-width="120px">
|
<el-form label-position="right" label-width="120px">
|
||||||
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_SELECT_TYPE')">
|
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_SELECT_TYPE')">
|
||||||
<el-select v-model="sync.type" style="width: 100%" :persistent="false" teleported>
|
<el-select v-model="sync.type" style="width: 100%" :persistent="false" teleported>
|
||||||
@@ -875,19 +876,65 @@
|
|||||||
<el-form-item v-if="sync.type === 'gitea'" :label="$T('SETTINGS_SYNC_CONFIG_GITEA_HOST')">
|
<el-form-item v-if="sync.type === 'gitea'" :label="$T('SETTINGS_SYNC_CONFIG_GITEA_HOST')">
|
||||||
<el-input v-model.trim="sync.endpoint" type="input" :placeholder="$T('SETTINGS_SYNC_CONFIG_GITEA_HOST')" />
|
<el-input v-model.trim="sync.endpoint" type="input" :placeholder="$T('SETTINGS_SYNC_CONFIG_GITEA_HOST')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item
|
<el-form-item v-if="sync.type === 'webdav'" :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT')">
|
||||||
v-for="inputItem in ['username', 'repo', 'branch', 'token']"
|
|
||||||
:key="inputItem"
|
|
||||||
:label="$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}` as any)"
|
|
||||||
>
|
|
||||||
<el-input
|
<el-input
|
||||||
v-model.trim="sync[inputItem as any]"
|
v-model.trim="sync.webdavEndpoint"
|
||||||
type="input"
|
type="input"
|
||||||
:placeholder="
|
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER')"
|
||||||
$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}_PLACEHOLDER` as any)
|
|
||||||
"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<template v-if="sync.type !== 'webdav'">
|
||||||
|
<el-form-item
|
||||||
|
v-for="inputItem in ['username', 'repo', 'branch', 'token']"
|
||||||
|
:key="inputItem"
|
||||||
|
:label="$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}` as any)"
|
||||||
|
>
|
||||||
|
<el-input
|
||||||
|
v-model.trim="sync[inputItem as any]"
|
||||||
|
type="input"
|
||||||
|
:placeholder="
|
||||||
|
$T(`SETTINGS_SYNC_CONFIG_${sync.type.toUpperCase()}_${inputItem.toUpperCase()}_PLACEHOLDER` as any)
|
||||||
|
"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template v-if="sync.type === 'webdav'">
|
||||||
|
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME')">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="sync.webdavUsername"
|
||||||
|
type="input"
|
||||||
|
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER')"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD')">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="sync.webdavPassword"
|
||||||
|
type="password"
|
||||||
|
show-password
|
||||||
|
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER')"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH')">
|
||||||
|
<el-input
|
||||||
|
v-model.trim="sync.webdavSavePath"
|
||||||
|
type="input"
|
||||||
|
:placeholder="$T('SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER')"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE')">
|
||||||
|
<el-select v-model="sync.webdavAuthType" style="width: 100%" :persistent="false" teleported>
|
||||||
|
<el-option label="Basic" value="basic" />
|
||||||
|
<el-option label="Digest" value="digest" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item :label="$T('SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED')">
|
||||||
|
<el-switch
|
||||||
|
v-model="sync.webdavSslEnabled"
|
||||||
|
:active-text="$T('SETTINGS_OPEN')"
|
||||||
|
:inactive-text="$T('SETTINGS_CLOSE')"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
<el-form-item v-if="sync.type === 'github'" :label="$T('SETTINGS_SYNC_CONFIG_PROXY')">
|
<el-form-item v-if="sync.type === 'github'" :label="$T('SETTINGS_SYNC_CONFIG_PROXY')">
|
||||||
<el-input
|
<el-input
|
||||||
v-model.trim="sync.proxy"
|
v-model.trim="sync.proxy"
|
||||||
@@ -1207,10 +1254,15 @@ const sync = ref<any>({
|
|||||||
token: '',
|
token: '',
|
||||||
endpoint: '',
|
endpoint: '',
|
||||||
proxy: '',
|
proxy: '',
|
||||||
interval: 60
|
interval: 60,
|
||||||
|
// WebDAV-specific fields
|
||||||
|
password: '',
|
||||||
|
authType: 'basic',
|
||||||
|
sslEnabled: true,
|
||||||
|
webdavSavePath: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
const syncType = ['github', 'gitee', 'gitea']
|
const syncType = ['github', 'gitee', 'gitea', 'webdav']
|
||||||
|
|
||||||
async function cancelSyncSetting() {
|
async function cancelSyncSetting() {
|
||||||
syncVisible.value = false
|
syncVisible.value = false
|
||||||
@@ -1222,7 +1274,14 @@ async function cancelSyncSetting() {
|
|||||||
token: '',
|
token: '',
|
||||||
endpoint: '',
|
endpoint: '',
|
||||||
proxy: '',
|
proxy: '',
|
||||||
interval: 60
|
interval: 60,
|
||||||
|
// WebDAV-specific fields
|
||||||
|
webdavEndpoint: '',
|
||||||
|
webdavUsername: '',
|
||||||
|
webdavPassword: '',
|
||||||
|
webdavAuthType: 'basic',
|
||||||
|
webdavSslEnabled: true,
|
||||||
|
webdavSavePath: ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1289,7 +1348,14 @@ async function initData() {
|
|||||||
token: '',
|
token: '',
|
||||||
endpoint: '',
|
endpoint: '',
|
||||||
proxy: '',
|
proxy: '',
|
||||||
interval: 60
|
interval: 60,
|
||||||
|
// WebDAV-specific fields
|
||||||
|
webdavEndpoint: '',
|
||||||
|
webdavUsername: '',
|
||||||
|
webdavPassword: '',
|
||||||
|
webdavAuthType: 'basic',
|
||||||
|
webdavSslEnabled: true,
|
||||||
|
webdavSavePath: ''
|
||||||
}
|
}
|
||||||
formOfSetting.value.logFileSizeLimit = enforceNumber(settings.logFileSizeLimit) || 10
|
formOfSetting.value.logFileSizeLimit = enforceNumber(settings.logFileSizeLimit) || 10
|
||||||
addProxyWatch()
|
addProxyWatch()
|
||||||
|
|||||||
Vendored
+10
@@ -299,6 +299,16 @@ interface ILocales {
|
|||||||
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: string
|
SETTINGS_SYNC_CONFIG_GITEA_TOKEN_PLACEHOLDER: string
|
||||||
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: string
|
SETTINGS_SYNC_CONFIG_GITEE_TOKEN_PLACEHOLDER: string
|
||||||
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: string
|
SETTINGS_SYNC_CONFIG_PROXY_PLACEHOLDER: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_ENDPOINT_PLACEHOLDER: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_USERNAME_PLACEHOLDER: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_PASSWORD_PLACEHOLDER: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_AUTH_TYPE: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SSL_ENABLED: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH: string
|
||||||
|
SETTINGS_SYNC_CONFIG_WEBDAV_SAVE_PATH_PLACEHOLDER: string
|
||||||
SETTINGS_UP_DOWN_DESC: string
|
SETTINGS_UP_DOWN_DESC: string
|
||||||
SETTINGS_UP_DOWN_TITLE: string
|
SETTINGS_UP_DOWN_TITLE: string
|
||||||
SETTINGS_SYNC_UPLOAD: string
|
SETTINGS_SYNC_UPLOAD: string
|
||||||
|
|||||||
Vendored
+7
@@ -47,6 +47,13 @@ interface ISyncConfig {
|
|||||||
endpoint?: string
|
endpoint?: string
|
||||||
proxy?: string
|
proxy?: string
|
||||||
interval?: number
|
interval?: number
|
||||||
|
// WebDAV specific fields
|
||||||
|
webdavEndpoint?: string
|
||||||
|
webdavUsername?: string
|
||||||
|
webdavPassword?: string
|
||||||
|
webdavAuthType?: 'basic' | 'digest'
|
||||||
|
webdavSslEnabled?: boolean
|
||||||
|
webdavSavePath?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Image && PicBed
|
// Image && PicBed
|
||||||
|
|||||||
Reference in New Issue
Block a user