Compare commits
10 Commits
4ee7e30206
...
a3f743de4c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3f743de4c | ||
|
|
3f402b1398 | ||
|
|
9e797e018a | ||
|
|
cf94ae2926 | ||
|
|
33793d7370 | ||
|
|
1753829889 | ||
|
|
fa3e1d5924 | ||
|
|
39df8bcbf8 | ||
|
|
c02a8f7172 | ||
|
|
dd6fbe777e |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -33,7 +33,7 @@ build/
|
|||||||
|
|
||||||
# Vue distributable files
|
# Vue distributable files
|
||||||
# /frontend/dist/*
|
# /frontend/dist/*
|
||||||
!/frontend/dist/.gitkeep
|
#!/frontend/dist/.gitkeep
|
||||||
|
|
||||||
# Playwright files
|
# Playwright files
|
||||||
/frontend/test-results/
|
/frontend/test-results/
|
||||||
|
|||||||
@@ -59,7 +59,9 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func addServerFlags(flags *pflag.FlagSet) {
|
func addServerFlags(flags *pflag.FlagSet) {
|
||||||
flags.StringP("address", "a", "127.0.0.1", "address to listen on")
|
// flags.StringP("address", "a", "127.0.0.1", "address to listen on")
|
||||||
|
flags.StringP("address", "a", "0.0.0.0", "address to listen on")
|
||||||
|
|
||||||
flags.StringP("log", "l", "stdout", "log output")
|
flags.StringP("log", "l", "stdout", "log output")
|
||||||
flags.StringP("port", "p", "8080", "port to listen on")
|
flags.StringP("port", "p", "8080", "port to listen on")
|
||||||
flags.StringP("cert", "t", "", "tls certificate")
|
flags.StringP("cert", "t", "", "tls certificate")
|
||||||
|
|||||||
BIN
filebrowser_arm64 → filebrowser_dev
Normal file → Executable file
BIN
filebrowser_arm64 → filebrowser_dev
Normal file → Executable file
Binary file not shown.
BIN
frontend/dist/assets/Editor-QvDUbjLs.js.gz
vendored
Normal file
BIN
frontend/dist/assets/Editor-QvDUbjLs.js.gz
vendored
Normal file
Binary file not shown.
Binary file not shown.
BIN
frontend/dist/assets/Editor-uE1Voqk0.js.gz
vendored
BIN
frontend/dist/assets/Editor-uE1Voqk0.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/Preview-COHNXs63.js.gz
vendored
BIN
frontend/dist/assets/Preview-COHNXs63.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/Preview-j_vDg5Uw.js.gz
vendored
Normal file
BIN
frontend/dist/assets/Preview-j_vDg5Uw.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/Preview-legacy-CBojGWKW.js.gz
vendored
BIN
frontend/dist/assets/Preview-legacy-CBojGWKW.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/Preview-legacy-gAQj6al5.js.gz
vendored
Normal file
BIN
frontend/dist/assets/Preview-legacy-gAQj6al5.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/ar-DtFJJrir.js.gz
vendored
Normal file
BIN
frontend/dist/assets/ar-DtFJJrir.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/ar-grBMsqD0.js.gz
vendored
BIN
frontend/dist/assets/ar-grBMsqD0.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/dayjs-BaXUFriC.js.gz
vendored
BIN
frontend/dist/assets/dayjs-BaXUFriC.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/dayjs-DoHIBBbq.js.gz
vendored
Normal file
BIN
frontend/dist/assets/dayjs-DoHIBBbq.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/dayjs-legacy-BtyXlkBf.js.gz
vendored
Normal file
BIN
frontend/dist/assets/dayjs-legacy-BtyXlkBf.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/dayjs-legacy-BzWTee52.js.gz
vendored
BIN
frontend/dist/assets/dayjs-legacy-BzWTee52.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/de-B_RdXGrw.js.gz
vendored
BIN
frontend/dist/assets/de-B_RdXGrw.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/de-CsTqJtDw.js.gz
vendored
Normal file
BIN
frontend/dist/assets/de-CsTqJtDw.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/en-B9cUi7yp.js.gz
vendored
BIN
frontend/dist/assets/en-B9cUi7yp.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/en-VcjLuOQ9.js.gz
vendored
Normal file
BIN
frontend/dist/assets/en-VcjLuOQ9.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/he-B4IfBkLC.js.gz
vendored
Normal file
BIN
frontend/dist/assets/he-B4IfBkLC.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/he-CKoFb239.js.gz
vendored
BIN
frontend/dist/assets/he-CKoFb239.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/hu-BPfANBiL.js.gz
vendored
Normal file
BIN
frontend/dist/assets/hu-BPfANBiL.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/hu-DgScp7Vz.js.gz
vendored
BIN
frontend/dist/assets/hu-DgScp7Vz.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/i18n-B51KFB2t.js.gz
vendored
Normal file
BIN
frontend/dist/assets/i18n-B51KFB2t.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/i18n-UjFZsrt2.js.gz
vendored
BIN
frontend/dist/assets/i18n-UjFZsrt2.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/i18n-legacy-BMkeMmTj.js.gz
vendored
Normal file
BIN
frontend/dist/assets/i18n-legacy-BMkeMmTj.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/i18n-legacy-BbZgAJpU.js.gz
vendored
BIN
frontend/dist/assets/i18n-legacy-BbZgAJpU.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/index-CQxnOeHi.js.gz
vendored
BIN
frontend/dist/assets/index-CQxnOeHi.js.gz
vendored
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
frontend/dist/assets/index-EUD6rfX7.js.gz
vendored
Normal file
BIN
frontend/dist/assets/index-EUD6rfX7.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/index-legacy-D1Xq-vUG.js.gz
vendored
Normal file
BIN
frontend/dist/assets/index-legacy-D1Xq-vUG.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/index-legacy-LFCxiX0p.js.gz
vendored
BIN
frontend/dist/assets/index-legacy-LFCxiX0p.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/it-CxzZEkDv.js.gz
vendored
Normal file
BIN
frontend/dist/assets/it-CxzZEkDv.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/it-_2pKjYFU.js.gz
vendored
BIN
frontend/dist/assets/it-_2pKjYFU.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/ja-BGcYKjzK.js.gz
vendored
Normal file
BIN
frontend/dist/assets/ja-BGcYKjzK.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/ja-Ba2FCdJ4.js.gz
vendored
BIN
frontend/dist/assets/ja-Ba2FCdJ4.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/ko-Ck5pBF4s.js.gz
vendored
Normal file
BIN
frontend/dist/assets/ko-Ck5pBF4s.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/ko-DKOY2mvq.js.gz
vendored
BIN
frontend/dist/assets/ko-DKOY2mvq.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/nl-BUJf3J9m.js.gz
vendored
Normal file
BIN
frontend/dist/assets/nl-BUJf3J9m.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/nl-Dm22rvoT.js.gz
vendored
BIN
frontend/dist/assets/nl-Dm22rvoT.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/pl-CE4mQrXb.js.gz
vendored
BIN
frontend/dist/assets/pl-CE4mQrXb.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/pl-pV3PHVMk.js.gz
vendored
Normal file
BIN
frontend/dist/assets/pl-pV3PHVMk.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/polyfills-legacy-D8GbthlL.js.gz
vendored
BIN
frontend/dist/assets/polyfills-legacy-D8GbthlL.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/polyfills-legacy-whU9bDSR.js.gz
vendored
Normal file
BIN
frontend/dist/assets/polyfills-legacy-whU9bDSR.js.gz
vendored
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
frontend/dist/assets/tr-DBYvv1ex.js.gz
vendored
Normal file
BIN
frontend/dist/assets/tr-DBYvv1ex.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/tr-DayNcc5h.js.gz
vendored
BIN
frontend/dist/assets/tr-DayNcc5h.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/uk-C2gOFBkq.js.gz
vendored
BIN
frontend/dist/assets/uk-C2gOFBkq.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/uk-D_F9n3KQ.js.gz
vendored
Normal file
BIN
frontend/dist/assets/uk-D_F9n3KQ.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/zh-CN-BkxKbQZB.js.gz
vendored
Normal file
BIN
frontend/dist/assets/zh-CN-BkxKbQZB.js.gz
vendored
Normal file
Binary file not shown.
BIN
frontend/dist/assets/zh-CN-DH_OOwBr.js.gz
vendored
BIN
frontend/dist/assets/zh-CN-DH_OOwBr.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/zh-TW-BuS31BG2.js.gz
vendored
BIN
frontend/dist/assets/zh-TW-BuS31BG2.js.gz
vendored
Binary file not shown.
BIN
frontend/dist/assets/zh-TW-DV5gbLiY.js.gz
vendored
Normal file
BIN
frontend/dist/assets/zh-TW-DV5gbLiY.js.gz
vendored
Normal file
Binary file not shown.
12
frontend/dist/public/index.html
vendored
12
frontend/dist/public/index.html
vendored
@@ -125,10 +125,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script type="module" crossorigin src="[{[ .StaticURL ]}]/assets/index-CQxnOeHi.js"></script>
|
<script type="module" crossorigin src="[{[ .StaticURL ]}]/assets/index-EUD6rfX7.js"></script>
|
||||||
<link rel="modulepreload" crossorigin href="[{[ .StaticURL ]}]/assets/dayjs-BaXUFriC.js">
|
<link rel="modulepreload" crossorigin href="[{[ .StaticURL ]}]/assets/dayjs-DoHIBBbq.js">
|
||||||
<link rel="modulepreload" crossorigin href="[{[ .StaticURL ]}]/assets/i18n-UjFZsrt2.js">
|
<link rel="modulepreload" crossorigin href="[{[ .StaticURL ]}]/assets/i18n-B51KFB2t.js">
|
||||||
<link rel="stylesheet" crossorigin href="[{[ .StaticURL ]}]/assets/index-CKNdCj14.css">
|
<link rel="stylesheet" crossorigin href="[{[ .StaticURL ]}]/assets/index-Cckpz6IB.css">
|
||||||
<script type="module">import.meta.url;import("_").catch(()=>1);(async function*(){})().next();if(location.protocol!="file:"){window.__vite_is_modern_browser=true}</script>
|
<script type="module">import.meta.url;import("_").catch(()=>1);(async function*(){})().next();if(location.protocol!="file:"){window.__vite_is_modern_browser=true}</script>
|
||||||
<script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script>
|
<script type="module">!function(){if(window.__vite_is_modern_browser)return;console.warn("vite: loading legacy chunks, syntax error above and the same error below should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}();</script>
|
||||||
</head>
|
</head>
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
[{[ if .CSS -]}]
|
[{[ if .CSS -]}]
|
||||||
<link rel="stylesheet" href="[{[ .StaticURL ]}]/custom.css" />
|
<link rel="stylesheet" href="[{[ .StaticURL ]}]/custom.css" />
|
||||||
[{[ end ]}]
|
[{[ end ]}]
|
||||||
<script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
|
<script nomodule>!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
|
||||||
<script nomodule crossorigin id="vite-legacy-polyfill" src="[{[ .StaticURL ]}]/assets/polyfills-legacy-D8GbthlL.js"></script>
|
<script nomodule crossorigin id="vite-legacy-polyfill" src="[{[ .StaticURL ]}]/assets/polyfills-legacy-whU9bDSR.js"></script>
|
||||||
<script nomodule crossorigin id="vite-legacy-entry" data-src="[{[ .StaticURL ]}]/assets/index-legacy-D1Xq-vUG.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
|
<script nomodule crossorigin id="vite-legacy-entry" data-src="[{[ .StaticURL ]}]/assets/index-legacy-D1Xq-vUG.js">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ export default defineConfig({
|
|||||||
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||||
use: {
|
use: {
|
||||||
/* Base URL to use in actions like `await page.goto('/')`. */
|
/* Base URL to use in actions like `await page.goto('/')`. */
|
||||||
baseURL: "http://127.0.0.1:5173",
|
// baseURL: "http://127.0.0.1:5173",
|
||||||
|
baseURL: "http://0.0.0.0:5173",
|
||||||
|
|
||||||
|
|
||||||
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
||||||
trace: "on-first-retry",
|
trace: "on-first-retry",
|
||||||
@@ -74,7 +76,8 @@ export default defineConfig({
|
|||||||
/* Run your local dev server before starting the tests */
|
/* Run your local dev server before starting the tests */
|
||||||
webServer: {
|
webServer: {
|
||||||
command: "npm run dev",
|
command: "npm run dev",
|
||||||
url: "http://127.0.0.1:5173",
|
// url: "http://127.0.0.1:5173",
|
||||||
|
url: "http://0.0.0.0:5173",
|
||||||
reuseExistingServer: !process.env.CI,
|
reuseExistingServer: !process.env.CI,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<p class="modified">
|
<p class="modified">
|
||||||
<time :datetime="modified">{{ humanTime() }}</time>
|
<time :datetime="modified">{{ humanTime() }}</time>
|
||||||
<!-- 直播按钮 -->
|
<!-- 直播按钮 -->
|
||||||
<button v-if="!isDir && isVideoFile(name)" class="live-button" @click="loopLive">
|
<button v-if="!isDir && isVideoFile(name)" class="live-button" @click="loopLive">
|
||||||
循环直播
|
循环直播
|
||||||
</button>
|
</button>
|
||||||
<button v-if="!isDir && isVideoFile(name)" class="live-button" @click="startLive">
|
<button v-if="!isDir && isVideoFile(name)" class="live-button" @click="startLive">
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<button v-if="!isDir && isVideoFile(name)" class="live-button" @click="stopLive">
|
<button v-if="!isDir && isVideoFile(name)" class="live-button" @click="stopLive">
|
||||||
停止直播
|
停止直播
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -386,7 +386,9 @@ const stopLive = async () => {
|
|||||||
const thread_id = props.url.replace(/\//g, "_");
|
const thread_id = props.url.replace(/\//g, "_");
|
||||||
|
|
||||||
// 调用 FastAPI 停止接口
|
// 调用 FastAPI 停止接口
|
||||||
const res = await fetch("http://192.168.31.103:8700/stop_live", {
|
// const res = await fetch("http://192.168.31.103:8700/stop_live", {
|
||||||
|
const res = await fetch(`${location.protocol}//${location.hostname}:8700/stop_live`, {
|
||||||
|
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ thread_id }) // 如果想停止全部可以 body: {}
|
body: JSON.stringify({ thread_id }) // 如果想停止全部可以 body: {}
|
||||||
@@ -411,11 +413,11 @@ const loopLive = async () => {
|
|||||||
// props.url 是 FileBrowser 内部路径,例如 /videos/test.mp4
|
// props.url 是 FileBrowser 内部路径,例如 /videos/test.mp4
|
||||||
const file_path = props.url;
|
const file_path = props.url;
|
||||||
// const file_path = encodeURIComponent(props.url);
|
// const file_path = encodeURIComponent(props.url);
|
||||||
console.log('file_path',file_path)
|
console.log('file_path', file_path)
|
||||||
|
|
||||||
// 调用 FastAPI 后端接口
|
// 调用 FastAPI 后端接口
|
||||||
const res = await fetch("http://192.168.31.103:8700/loop_Live", {
|
// const res = await fetch("http://192.168.31.103:8700/loop_Live", {
|
||||||
// const res = await fetch("http://192.168.31.245:8700/start_live", {
|
const res = await fetch(`${location.protocol}//${location.hostname}:8700/loop_Live`, {
|
||||||
|
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
@@ -444,7 +446,9 @@ const obsLive = async () => {
|
|||||||
console.log('file_path for OBS:', file_path);
|
console.log('file_path for OBS:', file_path);
|
||||||
|
|
||||||
// 这里模拟 OBS 推流逻辑,你可以根据实际后端接口来调整
|
// 这里模拟 OBS 推流逻辑,你可以根据实际后端接口来调整
|
||||||
const res = await fetch("http://192.168.31.103:8700/obs_live", {
|
// const res = await fetch("http://192.168.31.103:8700/obs_live", {
|
||||||
|
const res = await fetch(`${location.protocol}//${location.hostname}:8700/obs_live`, {
|
||||||
|
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ filename: file_path })
|
body: JSON.stringify({ filename: file_path })
|
||||||
@@ -468,11 +472,11 @@ const startLive = async () => {
|
|||||||
// props.url 是 FileBrowser 内部路径,例如 /videos/test.mp4
|
// props.url 是 FileBrowser 内部路径,例如 /videos/test.mp4
|
||||||
const file_path = props.url;
|
const file_path = props.url;
|
||||||
// const file_path = encodeURIComponent(props.url);
|
// const file_path = encodeURIComponent(props.url);
|
||||||
console.log('file_path',file_path)
|
console.log('file_path', file_path)
|
||||||
|
|
||||||
// 调用 FastAPI 后端接口
|
// 调用 FastAPI 后端接口
|
||||||
const res = await fetch("http://192.168.31.103:8700/start_live", {
|
const res = await fetch(`${location.protocol}//${location.hostname}:8700/start_live`, {
|
||||||
// const res = await fetch("http://192.168.31.245:8700/start_live", {
|
// const res = await fetch("http://127.0.0.1:8700/start_live", {
|
||||||
|
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
|
|||||||
@@ -41,13 +41,13 @@ export default defineConfig(({ command }) => {
|
|||||||
proxy: {
|
proxy: {
|
||||||
// Zero3 后端 WebSocket(如果你有 ws 接口)
|
// Zero3 后端 WebSocket(如果你有 ws 接口)
|
||||||
"/api/command": {
|
"/api/command": {
|
||||||
target: "ws://192.168.31.103:8081",
|
target: `ws://${location.protocol}//${location.hostname}:8081`,
|
||||||
// target: "ws://live.local:8081",
|
// target: "ws://live.local:8081",
|
||||||
|
|
||||||
ws: true,
|
ws: true,
|
||||||
},
|
},
|
||||||
// Zero3 后端 HTTP
|
// Zero3 后端 HTTP
|
||||||
"/api": "http://192.168.31.103:8081",
|
"/api": `${location.protocol}//${location.hostname}:8081`,
|
||||||
// "/api": "http://live.local:8081",
|
// "/api": "http://live.local:8081",
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user