Compare commits

...
7 Commits
Author SHA1 Message Date
gisle 268f906ea4 show config. 2024-08-17 22:24:14 +02:00
gisle 44a98c8823 add support for env config. 2024-08-17 13:43:03 +02:00
gisle fe44300c0a fix date wonk
continuous-integration/drone/push Build is passing
2022-11-16 18:36:05 +01:00
gisle 2c7ba6df1d Merge branch 'master' of ssh+git://git.aiterp.net/rpdata/frontend
continuous-integration/drone/push Build is passing
2021-04-24 12:07:05 +02:00
gisle 283ffc64b2 Fix displaying of character hint posts. 2021-04-24 12:06:59 +02:00
gisle 2486c98da7 add support for trustedProxy GATEWAY to determine automatically from gateway. That's useful in docker where an nginx on the host is not always on a known ip.
continuous-integration/drone/push Build is passing
2021-04-02 15:04:28 +02:00
gisle 5955e6a71e remove Files page
continuous-integration/drone/push Build is passing
2021-03-30 19:58:27 +02:00
8 changed files with 7568 additions and 32 deletions
+31 -1
View File
@@ -1,6 +1,6 @@
const fs = require("fs")
const config = {
let config = {
graphqlEndpoint: "http://127.0.0.1:17000/graphql",
playgroundEndpoint: "http://127.0.0.1:17000/playground",
port: 8080,
@@ -35,6 +35,31 @@ if (typeof(window) !== "undefined") {
delete config.redis
delete config.backend
} else {
config = {
graphqlEndpoint: process.env.RPDATA_API_GRAPHQL || "http://127.0.0.1:17000/graphql",
playgroundEndpoint: process.env.RPDATA_API_PLAYGROUND || "http://127.0.0.1:17000/playground",
port: Number(process.env.PORT || "8080"),
root: process.env.ROOT || "http://localhost:8080",
trustedProxy: process.env.TRUSTED_PROXY || null,
auth0: {
secret: process.env.AUTH0_SECRET || "INVALID_SECRET",
clientId: process.env.AUTH0_CLIENT_ID || "",
domain: process.env.AUTH0_DOMAIN || "aiterp.eu.auth0.com",
},
session: {
secret: process.env.SESSION_SECRET || "",
secure: process.env.SESSION_SECURE === "true",
},
redis: {
host: process.env.REDIS_HOST || "127.0.0.1",
port: process.env.REDIS_PORT || 6379,
},
backend: {
kid: process.env.RPDATA_KID || "",
secret: process.env.RPDATA_SECRET || "",
}
}
try {
const data = fs.readFileSync("/etc/aiterp/rpdata-frontend.json", "utf8")
const parsed = JSON.parse(data)
@@ -44,6 +69,11 @@ if (typeof(window) !== "undefined") {
} catch(err) {
console.error("Failed to load configuration: " + err.message || err.stack || err)
}
console.log("Config/Auth0", config.auth0.clientId, config.auth0.domain);
console.log("Config/API", config.graphqlEndpoint, config.backend.kid);
console.log("Config/Redis", config.redis.host, config.redis.port);
console.log("Config/Root", config.root);
}
module.exports = config
@@ -3,7 +3,6 @@
<menu-link key="characters" selected=input.selected.characters icon="C" href="/data/characters/">Characters</menu-link>
<menu-link key="channels" selected=input.selected.channels icon="#" href="/data/channels/">Channels</menu-link>
<menu-link key="history" selected=input.selected.changes icon="H" href="/data/changes/">History</menu-link>
<menu-link key="files" selected=input.selected.files icon="F" href="/data/files/">Files</menu-link>
<if-permitted user=input.user permission=["member", "character.add", "channel.add", "file.add"]>
<menu-gap />
<menu-header>Add</menu-header>
@@ -13,8 +12,5 @@
<if-permitted key="channels_add" user=input.user permission="channel.add">
<menu-link dark icon="+" on-click("emit", "open", "channel.add")>Channel</menu-link>
</if-permitted>
<if-permitted key="files_add" user=input.user permission=["file.add", "member"]>
<menu-link dark icon="+" on-click("emit", "open", "file.add")>File</menu-link>
</if-permitted>
</if-permitted>
</menu>
@@ -14,6 +14,7 @@
<option value="annotation.info" selected=(state.values.kind === "annotation.info")>Annotation - Info</option>
<option value="annotation.warning" selected=(state.values.kind === "annotation.warning")>Annotation - Warning</option>
<option value="annotation.error" selected=(state.values.kind === "annotation.error")>Annotation - Error</option>
<option value="chars" selected=(state.values.kind === "chars")>Character Hints</option>
</select>
<label>Nick</label>
@@ -14,6 +14,7 @@
<option value="annotation.info" selected=(state.values.kind === "annotation.info")>Annotation - Info</option>
<option value="annotation.warning" selected=(state.values.kind === "annotation.warning")>Annotation - Warning</option>
<option value="annotation.error" selected=(state.values.kind === "annotation.error")>Annotation - Error</option>
<option value="chars" selected=(state.values.kind === "chars")>Character Hints</option>
</select>
<label>Nick</label>
@@ -22,6 +22,9 @@
<irc-caret-notation class="post-content" source=state.text />
</annotation>
</div>
<div if(input.post.kind === "chars") class="post-body color-menu" >
<p><em>Character hint: ${input.post.text}</em></p>
</div>
<div if(input.post.kind === "scene") class="post-body color-text">
<irc-caret-notation class="post-content post-scene" source=state.text />
</div>
@@ -31,7 +31,7 @@ module.exports = class {
let fictionalDate = new Date(comment.fictionalDate)
if (comment.fictionalDate && !Number.isNaN(fictionalDate.getTime()) && fictionalDate.getTime() !== 0) {
fictionalDate = moment(fictionalDate).format("MMM D, YYYY")
fictionalDate = moment.utc(fictionalDate).format("MMM D, YYYY")
} else {
fictionalDate = ""
}
+7524 -24
View File
File diff suppressed because it is too large Load Diff
+7 -2
View File
@@ -28,7 +28,12 @@ lasso.configure(require("./marko-config"))
// Set trusted proxy
if (config.trustedProxy != null) {
if (ip.isV4Format(config.trustedProxy) || ip.isV6Format(config.trustedProxy)) {
if (config.trustedProxy === "GATEWAY") {
const ip = require("child_process").execSync("/sbin/ip route|awk '/default/ { print $3 }'").toString().trim()
app.set('trust proxy', ip)
console.log("Trusting proxy from default gateway", ip);
} else if (ip.isV4Format(config.trustedProxy) || ip.isV6Format(config.trustedProxy)) {
app.set('trust proxy', config.trustedProxy)
console.log("Trusting proxy", config.trustedProxy);
@@ -128,4 +133,4 @@ app.listen(config.port, function() {
// Handle shutdown signals (Docker needs this to shutdown quickly)
process.on('SIGINT', () => process.exit(0))
process.on('SIGTERM', () => process.exit(0))
process.on('SIGTERM', () => process.exit(0))