|
|
@ -29,7 +29,7 @@ |
|
|
|
<el-input |
|
|
|
ref="backend" |
|
|
|
v-model="form.customBackend" |
|
|
|
placeholder="动动小手,(建议)自行搭建后端服务。例:http://127.0.0.1:25500?sub" |
|
|
|
placeholder="动动小手,(建议)自行搭建后端服务。例:http://127.0.0.1:25500/sub?" |
|
|
|
> |
|
|
|
<el-button slot="append" @click="gotoGayhub" icon="el-icon-link">前往项目仓库</el-button> |
|
|
|
</el-input> |
|
|
@ -107,33 +107,75 @@ |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label-width="0px" style="margin-top: 40px; text-align: center"> |
|
|
|
<el-button style="width: 120px" type="danger" @click="makeUrl">生成订阅链接</el-button> |
|
|
|
<el-button |
|
|
|
style="width: 120px" |
|
|
|
type="danger" |
|
|
|
@click="makeUrl" |
|
|
|
:disabled="form.sourceSubUrl.length === 0" |
|
|
|
>生成订阅链接</el-button> |
|
|
|
<el-button |
|
|
|
style="width: 120px" |
|
|
|
type="danger" |
|
|
|
@click="makeShortUrl" |
|
|
|
:loading="loading" |
|
|
|
:disabled="customSubUrl.length === 0" |
|
|
|
>生成短链接</el-button> |
|
|
|
<!-- <el-button style="width: 120px" type="primary" @click="surgeInstall" icon="el-icon-connection">一键导入Surge</el-button> --> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label-width="0px" style="text-align: center"> |
|
|
|
<el-button |
|
|
|
style="width: 120px" |
|
|
|
type="primary" |
|
|
|
@click="clashInstall" |
|
|
|
icon="el-icon-connection" |
|
|
|
>一键导入Clash</el-button> |
|
|
|
@click="dialogUploadConfigVisible = true" |
|
|
|
icon="el-icon-upload" |
|
|
|
:loading="loading" |
|
|
|
>上传配置</el-button> |
|
|
|
<el-button |
|
|
|
style="width: 120px" |
|
|
|
type="primary" |
|
|
|
@click="surgeInstall" |
|
|
|
@click="clashInstall" |
|
|
|
icon="el-icon-connection" |
|
|
|
>一键导入Surge</el-button> |
|
|
|
:disabled="customSubUrl.length === 0" |
|
|
|
>一键导入Clash</el-button> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</el-container> |
|
|
|
</el-card> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
|
|
|
|
<el-dialog |
|
|
|
title="Remote config upload" |
|
|
|
:visible.sync="dialogUploadConfigVisible" |
|
|
|
:show-close="false" |
|
|
|
:close-on-click-modal="false" |
|
|
|
:close-on-press-escape="false" |
|
|
|
width="700px" |
|
|
|
> |
|
|
|
<el-form label-position="left" label-width="130px"> |
|
|
|
<el-form-item label="密码" prop="uploadPasswordItem"> |
|
|
|
<el-input v-model="uploadPassword" show-password placeholder="请输入密码" style="width: 250px"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="Remote config" prop="uploadConfig"> |
|
|
|
<el-input |
|
|
|
v-model="uploadConfig" |
|
|
|
type="textarea" |
|
|
|
:autosize="{ minRows: 15, maxRows: 15}" |
|
|
|
maxlength="2000" |
|
|
|
show-word-limit |
|
|
|
></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
<el-button @click="uploadConfig = ''; dialogUploadConfigVisible = false">取 消</el-button> |
|
|
|
<el-button |
|
|
|
type="primary" |
|
|
|
@click="confirmUploadConfig" |
|
|
|
:disabled="uploadConfig.length === 0" |
|
|
|
>确 定</el-button> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
@ -143,6 +185,7 @@ const remoteConfigSample = |
|
|
|
const gayhubRelease = "https://github.com/tindy2013/subconverter/releases"; |
|
|
|
const defaultBackend = "https://api.wcc.best/sub?"; |
|
|
|
const shortUrlBackend = ""; |
|
|
|
const configUploadBackend = "https://api.wcc.best/config/upload" |
|
|
|
|
|
|
|
export default { |
|
|
|
data() { |
|
|
@ -234,7 +277,11 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
loading: false, |
|
|
|
customSubUrl: "" |
|
|
|
customSubUrl: "", |
|
|
|
|
|
|
|
dialogUploadConfigVisible: false, |
|
|
|
uploadConfig: "", |
|
|
|
uploadPassword: "" |
|
|
|
}; |
|
|
|
}, |
|
|
|
created() { |
|
|
@ -330,7 +377,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
this.$copyText(this.customSubUrl); |
|
|
|
this.$message.success("定制订阅已复制到剪切板"); |
|
|
|
this.$message.success("定制订阅已复制到剪贴板"); |
|
|
|
}, |
|
|
|
makeShortUrl() { |
|
|
|
if (shortUrlBackend === "") { |
|
|
@ -352,7 +399,7 @@ export default { |
|
|
|
.then(res => { |
|
|
|
if (res.data.Code === 1 && res.data.ShortUrl !== "") { |
|
|
|
this.$copyText(res.data.ShortUrl); |
|
|
|
this.$message.success("短链接已复制到剪切板"); |
|
|
|
this.$message.success("短链接已复制到剪贴板"); |
|
|
|
} else { |
|
|
|
this.$message.error("短链接获取失败:" + res.data.Message); |
|
|
|
} |
|
|
@ -376,6 +423,46 @@ export default { |
|
|
|
"各种订阅链接(短链接服务除外)生成纯前端实现,无隐私问题。默认提供后端转换服务,隐私担忧者请自行搭建后端服务。" |
|
|
|
) |
|
|
|
}); |
|
|
|
}, |
|
|
|
confirmUploadConfig() { |
|
|
|
if (this.uploadConfig === "") { |
|
|
|
this.$message.warning("远程配置不能为空"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
this.loading = true; |
|
|
|
|
|
|
|
let data = new FormData(); |
|
|
|
data.append("password", this.uploadPassword); |
|
|
|
data.append("config", this.uploadConfig); |
|
|
|
|
|
|
|
this.$axios |
|
|
|
.post(configUploadBackend, data, { |
|
|
|
header: { |
|
|
|
"Content-Type": "application/form-data; charset=utf-8" |
|
|
|
} |
|
|
|
}) |
|
|
|
.then(res => { |
|
|
|
if (res.data.Code === 1 && res.data.url !== "") { |
|
|
|
this.$message.success( |
|
|
|
"远程配置上传成功,配置链接已复制到剪贴板,有效期三个月望知悉" |
|
|
|
); |
|
|
|
|
|
|
|
// 自动填充至『表单-远程配置』 |
|
|
|
this.form.remoteConfig = res.data.Url; |
|
|
|
this.$copyText(this.form.remoteConfig); |
|
|
|
|
|
|
|
this.dialogUploadConfigVisible = false; |
|
|
|
} else { |
|
|
|
this.$message.error("远程配置上传失败:" + res.data.Message); |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch(() => { |
|
|
|
this.$message.error("远程配置上传失败"); |
|
|
|
}) |
|
|
|
.finally(() => { |
|
|
|
this.loading = false; |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|