mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
added post redirects
This commit is contained in:
parent
182f003a65
commit
0f6b4050df
3 changed files with 50 additions and 7 deletions
|
@ -103,6 +103,7 @@ interface SyncDataRes {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: to utils/http.ts
|
||||||
function get<T>(options: http.RequestOptions): Promise<RequestResult<T>> {
|
function get<T>(options: http.RequestOptions): Promise<RequestResult<T>> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const req = http.get(options, function (res) {
|
const req = http.get(options, function (res) {
|
||||||
|
@ -126,7 +127,27 @@ function get<T>(options: http.RequestOptions): Promise<RequestResult<T>> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function peerToString(peer: PeerInfo) {
|
function updateThirdPartyPeers(
|
||||||
|
newVal: Omit<PeerInfo, 'publicKey' | 'name' | 'contact'>[]
|
||||||
|
) {
|
||||||
|
const prevVal = utils.ReadJSON<PeerInfo[]>(paths.thirdPartyPeersFile)
|
||||||
|
const dataToWrite = newVal.reduce((acc, peer) => {
|
||||||
|
const isIncluded = acc.find((x) => {
|
||||||
|
return peerToString(x) === peerToString(peer)
|
||||||
|
})
|
||||||
|
if (!isIncluded) {
|
||||||
|
return [...acc, peer]
|
||||||
|
}
|
||||||
|
return acc
|
||||||
|
}, prevVal)
|
||||||
|
|
||||||
|
utils.WriteFile(
|
||||||
|
JSON.stringify(dataToWrite, null, 2),
|
||||||
|
paths.thirdPartyPeersFile
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function peerToString(peer: { host: string; port: string | number }) {
|
||||||
return `${peer.host}:${peer.port}`
|
return `${peer.host}:${peer.port}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -655,10 +676,7 @@ function setup(data: SubmoduleData): Submodule {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
if (thirdPartyPeers.length > 0) {
|
if (thirdPartyPeers.length > 0) {
|
||||||
utils.WriteFile(
|
updateThirdPartyPeers(thirdPartyPeers)
|
||||||
JSON.stringify(thirdPartyPeers, null, 2),
|
|
||||||
paths.thirdPartyPeersFile
|
|
||||||
)
|
|
||||||
logger.Log(
|
logger.Log(
|
||||||
`\tPeers reported ${logger.C('green')}${
|
`\tPeers reported ${logger.C('green')}${
|
||||||
thirdPartyPeers.length
|
thirdPartyPeers.length
|
||||||
|
@ -899,7 +917,6 @@ function setup(data: SubmoduleData): Submodule {
|
||||||
// TODO: get all user files
|
// TODO: get all user files
|
||||||
|
|
||||||
app.get('/getnewdatasince', (req: Request, res: Response<SyncDataRes>) => {
|
app.get('/getnewdatasince', (req: Request, res: Response<SyncDataRes>) => {
|
||||||
// TODO: add to third party peers, and recieve self info
|
|
||||||
// FIXME: hash question db to see if different?
|
// FIXME: hash question db to see if different?
|
||||||
// it could help in determining if it should be checked for new data, but it would only save
|
// it could help in determining if it should be checked for new data, but it would only save
|
||||||
// a getNewDataSince() call per question db
|
// a getNewDataSince() call per question db
|
||||||
|
@ -968,6 +985,16 @@ function setup(data: SubmoduleData): Submodule {
|
||||||
'use it as a peer.',
|
'use it as a peer.',
|
||||||
'yellowbg'
|
'yellowbg'
|
||||||
)
|
)
|
||||||
|
if (remoteHost.includes(':')) {
|
||||||
|
const [host, port] = remoteHost.split(':')
|
||||||
|
updateThirdPartyPeers([
|
||||||
|
{
|
||||||
|
host: host,
|
||||||
|
port: +port,
|
||||||
|
},
|
||||||
|
])
|
||||||
|
logger.Log('Host info written to host info file')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -186,6 +186,11 @@ function GetApp(): ModuleType {
|
||||||
from: '/patreon',
|
from: '/patreon',
|
||||||
to: links.patreon,
|
to: links.patreon,
|
||||||
},
|
},
|
||||||
|
// -----------------------------------
|
||||||
|
{
|
||||||
|
from: '/hasNewMsgs',
|
||||||
|
to: 'api/hasNewMsgs',
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
simpleRedirects.forEach((redirect) => {
|
simpleRedirects.forEach((redirect) => {
|
||||||
|
@ -208,6 +213,17 @@ function GetApp(): ModuleType {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const postRedirects = [
|
||||||
|
{ from: '/ask', to: '/api/ask' },
|
||||||
|
{ from: '/isAdding', to: '/api/isAdding' },
|
||||||
|
]
|
||||||
|
|
||||||
|
postRedirects.forEach((redirect) => {
|
||||||
|
app.post(redirect.from, function (_req: Request, res) {
|
||||||
|
res.redirect(307, redirect.to)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
|
|
||||||
function AddHtmlRoutes(files: string[]) {
|
function AddHtmlRoutes(files: string[]) {
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit b9abbbf03c111ea5b2534681d7b11de8f8a79baa
|
Subproject commit 39dfd7a0f48d850b543d38d607320236038f54fb
|
Loading…
Add table
Add a link
Reference in a new issue