Small tweaks (cors etc)

This commit is contained in:
Igor Katson 2024-08-21 22:27:58 +01:00
parent 1a1d07e5cb
commit 0c9a5093d0
No known key found for this signature in database
GPG key ID: B4EC22B66D61A3F5
5 changed files with 28 additions and 10 deletions

View file

@ -17,14 +17,17 @@ webui-build: webui-deps
@PHONY: devserver
devserver:
echo -n '' > /tmp/rqbit-log && cargo run -- \
echo -n '' > /tmp/rqbit-log && CORS_ALLOW_REGEXP=".*" \
cargo run -- \
--log-file /tmp/rqbit-log \
--log-file-rust-log=debug,librqbit=trace \
--http-api-listen-addr 0.0.0.0:3030 \
server start /tmp/scratch/
@PHONY: devserver
devserver-postgres:
echo -n '' > /tmp/rqbit-log && cargo run -- \
echo -n '' > /tmp/rqbit-log && CORS_ALLOW_REGEXP=".*" \
cargo run -- \
--log-file /tmp/rqbit-log \
--log-file-rust-log=debug,librqbit=trace \
server start --fastresume --persistence-config postgres:///rqbit /tmp/scratch/

View file

@ -543,9 +543,17 @@ impl HttpApi {
b"tauri://localhost",
];
let allow_regex = std::env::var("CORS_ALLOW_REGEXP")
.ok()
.and_then(|value| regex::bytes::Regex::new(&value).ok());
tower_http::cors::CorsLayer::default()
.allow_origin(AllowOrigin::predicate(|v, _| {
.allow_origin(AllowOrigin::predicate(move |v, _| {
ALLOWED_ORIGINS.contains(&v.as_bytes())
|| allow_regex
.as_ref()
.map(move |r| r.is_match(v.as_bytes()))
.unwrap_or(false)
}))
.allow_headers(AllowHeaders::any())
};

View file

@ -5,13 +5,13 @@ import { useStatsStore } from "../stores/statsStore";
export const Footer: React.FC<{}> = () => {
let stats = useStatsStore((stats) => stats.stats);
return (
<div className="sticky bottom-0 bg-white/10 dark:text-gray-200 backdrop-blur text-nowrap text-xs font-medium text-gray-500 flex p-1 gap-x-3 justify-center">
<div className="sticky bottom-0 bg-white/10 dark:text-gray-200 backdrop-blur text-nowrap text-xs font-medium text-gray-500 flex p-2 gap-x-5 justify-evenly flex-wrap">
<div>
{stats.download_speed.human_readable} (total{" "}
{stats.download_speed.human_readable} (
{formatBytes(stats.fetched_bytes)})
</div>
<div>
{stats.upload_speed.human_readable} (total{" "}
{stats.upload_speed.human_readable} (
{formatBytes(stats.uploaded_bytes)})
</div>
<div>up {formatSecondsToTime(stats.uptime_seconds)}</div>

View file

@ -9,10 +9,16 @@ import {
} from "./api-types";
// Define API URL and base path
const apiUrl =
window.origin === "null" || window.origin === "http://localhost:3031"
? "http://localhost:3030"
: "";
const apiUrl = (() => {
if (window.origin === "null" || window.origin === "http://localhost:3031") {
return "http://localhost:3030"
}
let port = /http.*:\/\/.*:(\d+)/.exec(window.origin)?.[1];
if (port == "3031") {
return window.origin.replace("3031", "3030");
}
return "";
})();
const makeRequest = async (
method: string,

View file

@ -6,6 +6,7 @@ import svgr from "vite-plugin-svgr";
export default defineConfig({
plugins: [react(), svgr()],
server: {
host: true,
port: 3031,
},
build: {