removed nethub

This commit is contained in:
srgooglo 2021-06-16 14:19:16 +02:00
parent 4929537e48
commit fb5be12e55
5 changed files with 0 additions and 371 deletions

View File

@ -1,5 +0,0 @@
{
"development": {
"origitGit": ""
}
}

View File

@ -1,18 +0,0 @@
FROM node:16-alpine
# copy source
COPY . /app
WORKDIR /app
ENV LISTEN_PORT 1010
EXPOSE ${LISTEN_PORT}
# install dependencies
RUN npm -g install corenode
RUN npm install
# run builder
RUN corenode build
CMD corenode ./dist/index.js --listenPort=${LISTEN_PORT}

View File

@ -1 +0,0 @@
# Nethub an (RageStudio Relic™) registry server

View File

@ -1,31 +0,0 @@
{
"name": "nethub",
"version": "0.1.2",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"publishConfig": {
"access": "public"
},
"license": "MIT",
"files": [
"dist",
"load.addon.js"
],
"scripts": {
"start": "corenode ./dist/index.js",
"dev": "nodemon --ignore dist/ --exec 'corenode build && corenode' ./dist/index.js"
},
"dependencies": {
"axios": "^0.21.1",
"corenode": "^0.25.3",
"cors": "^2.8.5",
"express": "^4.17.1",
"express-fileupload": "^1.2.1",
"morgan": "^1.10.0",
"uuid": "^8.3.2",
"websocket": "^1.0.34"
},
"devDependencies": {
"nodemon": "^2.0.7"
}
}

View File

@ -1,316 +0,0 @@
const express = require("express")
const os = require('os')
const path = require('path')
const fs = require('fs')
//* LIBS
const { objectToArrayMap } = require("@corenode/utils")
const tokenizer = require("corenode/dist/libs/tokenizer")
//* GLOBALS
const SERVER_REGISTRY = "server.registry"
const SERVER_GENFILE = "origin.server"
const LIMIT_PER_ADDRESS = 5
const SERVER_REGISTRYPATH = path.resolve(process.cwd(), SERVER_REGISTRY)
const SERVER_GENFILEPATH = path.resolve(process.cwd(), SERVER_GENFILE)
const SERVER_VERSION = global.SERVER_VERSION = runtime.helpers.getVersion()
const SERVER = require("express")()
//* SERVER HUB REGISTRY
const HUB = {
ids: {},
addresses: {}, // not storaged to registry
entries: [],
oskids: [],
registry: {},
add: (payload) => {
},
set: (oid, data) => {
HUB.registry[oid] = data
HUB.update()
},
del: (oid) => {
const addressIndex = HUB.oskids.indexOf(oid)
const item = HUB.registry[oid]
delete HUB.ids[item.id]
delete HUB.registry[oid]
delete HUB.oskids[addressIndex]
delete HUB.entries[addressIndex]
HUB.update()
},
update: () => {
const data = {
ids: HUB.ids,
entries: HUB.entries,
oids: HUB.oskids,
registry: HUB.registry,
}
return fs.writeFileSync(SERVER_REGISTRYPATH, JSON.stringify(data, null, 2), { encoding: "utf-8" })
},
read: () => {
if (fs.existsSync(SERVER_REGISTRYPATH)) {
const data = JSON.parse(fs.readFileSync(SERVER_REGISTRYPATH, 'utf8')) ?? {}
HUB.entries = data.entries
HUB.oskids = data.oids
HUB.registry = data.registry
}
}
}
//* SERVER GEN
const GEN = {
stat: () => {
return fs.lstatSync(SERVER_GENFILEPATH)
},
get: (key) => {
if (fs.existsSync(SERVER_GENFILEPATH)) {
return JSON.parse(fs.readFileSync(SERVER_GENFILEPATH, 'utf8')) ?? {}
}
return {}
},
write: (mutation) => {
let data = GEN.get()
data = { ...data, ...mutation }
GEN.data = data
return fs.writeFileSync(SERVER_GENFILEPATH, JSON.stringify(data, null, 2), { encoding: "utf-8" })
},
create: () => {
let data = {
created: Date.now(),
serverToken: tokenizer.generate()
}
GEN.write(data)
},
file: SERVER_GENFILE,
filepath: SERVER_GENFILEPATH,
}
//* DEFAULTS
const DEFAULT_MIDDLEWARES = [
require('cors')(),
require('morgan')("dev")
]
const DEFAULT_HEADERS = {
"Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept, Authorization",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, PATCH, DELETE",
"Access-Control-Allow-Credentials": "true",
}
const DEFAULT_PORT = runtime.args.listenPort ?? 1010
//* HELPERS
function getUptime() {
const { lastStart } = global.GENDATA
const now = Date.now()
return now - lastStart
}
function getRegistryFromEntry(entry) {
const index = HUB.entries.indexOf(entry)
const oid = HUB.oskids[index]
return HUB.registry[oid]
}
//* GLOBAL FUNCTIONS
function init() {
//? check if origin.server exists
if (!fs.existsSync(SERVER_GENFILEPATH)) {
GEN.create()
}
//? check origin.server integrity
const GENDATA = global.GENDATA = GEN.get()
const GENSTAT = global.GENSTAT = GEN.stat()
if (typeof GENDATA.created === "undefined") {
console.warn("Server generation file not contains an creation date")
GEN.write({ created: Date.parse(GENSTAT.birthtime) })
}
if (typeof GENDATA.serverToken === "undefined") {
console.warn("Missing server token!")
GEN.create()
}
//? set last start
GEN.write({ lastStart: Date.now() })
//? read registry
HUB.read()
//? continue starting server
start()
}
function start() {
//? set middlewares
SERVER.use(express.json())
SERVER.use(express.urlencoded({ extended: true }))
SERVER.use((req, res, next) => {
objectToArrayMap(DEFAULT_HEADERS).forEach((entry) => {
res.setHeader(entry.key, entry.value)
})
next()
})
DEFAULT_MIDDLEWARES.forEach((middleware) => {
SERVER.use(middleware)
})
//? set routes
SERVER.get("/", (req, res, next) => {
res.json({
uptime: getUptime(),
created: global.GENDATA.created,
time: new Date().getTime(),
originID: `${os.hostname()}`,
version: SERVER_VERSION
})
})
SERVER.get("/heartbeat", (req, res, next) => {
res.json({
uptime: getUptime()
})
})
SERVER.put("/registry", (req, res, next) => {
let { entry, oid, id } = req.body
const address = req.headers['x-real-ip'] || req.connection.remoteAddress
let mutation = {}
//? check address quota usage
if (typeof HUB.addresses[address] !== "undefined") {
if (HUB.addresses[address] >= LIMIT_PER_ADDRESS) {
res.status(403)
return res.json({
error: `[${address}] This address has exceeded the maximum number of registries [MAX ${LIMIT_PER_ADDRESS}]`
})
}
}
//? validate oid token
if (typeof oid !== "undefined") {
if (!tokenizer.valid(oid)) {
res.status(403)
return res.json({
error: `[${oid}] Is an invalid OID!`
})
}
}
if (typeof HUB.registry[oid] !== "undefined") {
mutation = HUB.registry[oid]
//? check if is allowed
if (HUB.registry[oid]?.address !== address) {
res.status(403)
return res.json({
error: `[${oid}] is already registered, is not allowed to override registry with this current address (${address})`
})
}
mutation.lastUpdated = Date.now()
} else {
//? check duplications
if (HUB.entries.includes(entry)) {
const duplicate = getRegistryFromEntry(entry)
res.status(409)
return res.json({
error: `[${entry}] This entry has been already registered, with oid [${duplicate.oid}]`
})
}
if (typeof oid === "undefined") {
oid = tokenizer.generate(address)
}
//? add to hub
HUB.entries.push(entry)
HUB.oskids.push(oid)
HUB.addresses[address] = Number(addresses[address]) + 1 ?? Number(1)
mutation.oid = oid
mutation.created = Date.now()
}
if (typeof id === "string") {
if (typeof HUB.ids[id] !== "undefined") {
return false
}
HUB.ids[id] = oid
mutation.id = id
}
mutation["address"] = address
mutation["entry"] = entry
//? successfully
HUB.set(oid, mutation)
res.json({
...HUB.registry[oid],
originToken: global.GENDATA.serverToken
})
})
SERVER.get("/registry", (req, res, next) => {
const { oid } = req.query
const address = req.headers['x-real-ip'] || req.connection.remoteAddress
if (typeof HUB.registry[oid] === "undefined") {
res.status(404)
return res.json({
error: `[${oid}] Not founded in this hub!`
})
}
res.json(HUB.registry[oid])
})
SERVER.delete("/registry", (req, res, next) => {
const { oid } = req.query
const address = req.headers['x-real-ip'] || req.connection.remoteAddress
if (typeof HUB.registry[oid] === "undefined") {
res.status(404)
return res.json({
error: `[${oid}] Not founded in this hub!`
})
}
if (HUB.registry[oid]?.address !== address) {
res.status(403)
return res.json({
error: `[${oid}] Is not allowed to delete this registry with this current address (${address})`
})
}
HUB.del(oid)
res.json({
oid
})
})
//? set to listen
SERVER.listen(DEFAULT_PORT, () => {
console.log(`✅ Ready on port ${DEFAULT_PORT}!`)
})
}
//? start server
init()