mirror of
https://github.com/fosrl/pangolin.git
synced 2025-06-22 13:23:51 +02:00
look for ipv6 in brackets and fix cors headers in install config
This commit is contained in:
parent
58a2a9dcc9
commit
717dfae26c
4 changed files with 31 additions and 3 deletions
|
@ -26,7 +26,7 @@ server:
|
||||||
cors:
|
cors:
|
||||||
origins: ["https://{{.DashboardDomain}}"]
|
origins: ["https://{{.DashboardDomain}}"]
|
||||||
methods: ["GET", "POST", "PUT", "DELETE", "PATCH"]
|
methods: ["GET", "POST", "PUT", "DELETE", "PATCH"]
|
||||||
headers: ["X-CSRF-Token", "Content-Type"]
|
allowed_headers: ["X-CSRF-Token", "Content-Type"]
|
||||||
credentials: false
|
credentials: false
|
||||||
|
|
||||||
traefik:
|
traefik:
|
||||||
|
|
|
@ -31,6 +31,12 @@ docker run -d \
|
||||||
postgres:17
|
postgres:17
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Schema
|
||||||
|
|
||||||
|
`server/db/pg/schema.ts` and `server/db/sqlite/schema.ts` contain the database schema definitions. These need to be kept in sync with with each other.
|
||||||
|
|
||||||
|
Stick to common data types and avoid Postgres-specific features to ensure compatibility with SQLite.
|
||||||
|
|
||||||
### SQLite
|
### SQLite
|
||||||
|
|
||||||
To use SQLite, edit `server/db/index.ts` to export all from `server/db/sqlite/index.ts`:
|
To use SQLite, edit `server/db/index.ts` to export all from `server/db/sqlite/index.ts`:
|
||||||
|
|
|
@ -47,7 +47,8 @@ export const sites = pgTable("sites", {
|
||||||
megabytesOut: real("bytesOut"),
|
megabytesOut: real("bytesOut"),
|
||||||
lastBandwidthUpdate: varchar("lastBandwidthUpdate"),
|
lastBandwidthUpdate: varchar("lastBandwidthUpdate"),
|
||||||
type: varchar("type").notNull(), // "newt" or "wireguard"
|
type: varchar("type").notNull(), // "newt" or "wireguard"
|
||||||
online: boolean("online").notNull().default(false)
|
online: boolean("online").notNull().default(false),
|
||||||
|
dockerSocketEnabled: boolean("dockerSocketEnabled").notNull().default(true)
|
||||||
});
|
});
|
||||||
|
|
||||||
export const resources = pgTable("resources", {
|
export const resources = pgTable("resources", {
|
||||||
|
|
|
@ -97,7 +97,28 @@ export async function verifyResourceSession(
|
||||||
query
|
query
|
||||||
} = parsedBody.data;
|
} = parsedBody.data;
|
||||||
|
|
||||||
const clientIp = requestIp?.split(":")[0];
|
const clientIp = requestIp
|
||||||
|
? (() => {
|
||||||
|
logger.debug("Request IP:", { requestIp });
|
||||||
|
if (requestIp.startsWith("[") && requestIp.includes("]")) {
|
||||||
|
// if brackets are found, extract the IPv6 address from between the brackets
|
||||||
|
const ipv6Match = requestIp.match(/\[(.*?)\]/);
|
||||||
|
if (ipv6Match) {
|
||||||
|
return ipv6Match[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ivp4
|
||||||
|
// split at last colon
|
||||||
|
const lastColonIndex = requestIp.lastIndexOf(":");
|
||||||
|
if (lastColonIndex !== -1) {
|
||||||
|
return requestIp.substring(0, lastColonIndex);
|
||||||
|
}
|
||||||
|
return requestIp;
|
||||||
|
})()
|
||||||
|
: undefined;
|
||||||
|
|
||||||
|
logger.debug("Client IP:", { clientIp });
|
||||||
|
|
||||||
let cleanHost = host;
|
let cleanHost = host;
|
||||||
// if the host ends with :443 or :80 remove it
|
// if the host ends with :443 or :80 remove it
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue