Files
MuonRC/src/srv/proxy.ts
2026-02-01 00:25:52 +00:00

122 lines
2.9 KiB
TypeScript

/* Proxy to bypass CORS (tauon does not pass these headers) */
import express from "express"
import cors from "cors"
import compression from "compression"
const app = express()
app.use(cors())
app.use(compression())
app.get("/version", (req, res) => {
let host = req.query.host
if (typeof host !== "string") {
return res.status(400).send("No host")
}
if (!host.includes(":")) {
host = host + ":7814"
}
fetch(`http://${host}/api1/version`)
.then(fetchRes => fetchRes.json())
.then(fetchRes => {
return res.status(200).send(fetchRes)
})
.catch((err) => {
return res.status(500).send(err)
})
})
app.get("/status", (req, res) => {
let host = req.query.host
if (typeof host !== "string") {
return res.status(400).send("No host")
}
if (!host.includes(":")) {
host = host + ":7814"
}
fetch(`http://${host}/api1/status`)
.then(fetchRes => fetchRes.json())
.then(fetchRes => {
return res.status(200).send(fetchRes)
})
.catch((err) => {
return res.status(500).send(err)
})
})
app.get("/pic", (req, res) => {
let host = req.query.host
const size = req.query.size
const id = req.query.id
if (typeof host !== "string" || !size || !id)
return res.status(400).send("Bad parameters")
if (!host.includes(":")) {
host = host + ":7814"
}
fetch(`http://${host}/api1/pic/${size}/${id}`)
.then(raw => raw.arrayBuffer())
.then(arrBuff => Buffer.from(arrBuff))
.then(buff => {
return res.send(buff)
})
})
app.get("/play", (req, res) => {
let host = req.query.host
if (typeof host !== "string")
return res.status(400).send("Bad host")
if (!host.includes(":")) {
host = host + ":7814"
}
fetch(`http://${host}/api1/play`)
return res.status(200).end()
})
app.get("/pause", (req, res) => {
let host = req.query.host
if (typeof host !== "string")
return res.status(400).send("Bad host")
if (!host.includes(":")) {
host = host + ":7814"
}
fetch(`http://${host}/api1/pause`)
return res.status(200).end()
})
app.get("/next", (req, res) => {
let host = req.query.host
if (typeof host !== "string")
return res.status(400).send("Bad host")
if (!host.includes(":")) {
host = host + ":7814"
}
fetch(`http://${host}/api1/next`)
return res.status(200).end()
})
app.get("/back", (req, res) => {
let host = req.query.host
if (typeof host !== "string")
return res.status(400).send("Bad host")
if (!host.includes(":")) {
host = host + ":7814"
}
fetch(`http://${host}/api1/back`)
return res.status(200).end()
})
app.listen(7815, () => console.log("MuonRC Proxy listening on 7815"))