From 0a63e05028f66900eb4b5a1eb8a923eb723459ef Mon Sep 17 00:00:00 2001 From: William Mantly Date: Wed, 25 Feb 2026 12:35:21 -0500 Subject: [PATCH] Import path fix --- nodejs/models/dns_provider.js | 2 +- nodejs/models/host.js | 4 ++ nodejs/models/index.js | 5 +- nodejs/models/user_redis.js | 2 +- nodejs/routes/render.js | 4 +- nodejs/services/host_scheduler.js | 4 +- nodejs/utils/object_validate.js | 112 ------------------------------ nodejs/utils/redis_model.js | 10 --- 8 files changed, 14 insertions(+), 129 deletions(-) delete mode 100644 nodejs/utils/object_validate.js delete mode 100644 nodejs/utils/redis_model.js diff --git a/nodejs/models/dns_provider.js b/nodejs/models/dns_provider.js index 7617d85..1a6e1ae 100644 --- a/nodejs/models/dns_provider.js +++ b/nodejs/models/dns_provider.js @@ -3,7 +3,7 @@ const crypto = require("crypto"); const conf = require('@simpleworkjs/conf'); -const Table = require('../utils/redis_model'); +const Table = require('.'); const ModelPs = require('../utils/model_pubsub'); const tldExtract = require('tld-extract').parse_host; diff --git a/nodejs/models/host.js b/nodejs/models/host.js index e0b3453..07205e3 100755 --- a/nodejs/models/host.js +++ b/nodejs/models/host.js @@ -230,20 +230,24 @@ class Host extends Table{ async checkWildcardForRenew(){ try{ + console.log(`Checking ${this.host}`); if(this.is_wildcard && Date.now() > this.wildcard_expires - (30 * 24 * 60 * 60 * 1000)){ this.createWildcardCert(); } }catch(error){ + console.error('checkWildcardForRenew instance', this.host, error) throw error; } } static async checkWildcardForRenew(){ try{ + console.log('checkWildcardForRenew here', this) for(let host of await this.listDetail()){ host.createWildcardCert(); } }catch(error){ + console.error('checkWildcardForRenew', error) throw error; } } diff --git a/nodejs/models/index.js b/nodejs/models/index.js index c330589..5bd173b 100644 --- a/nodejs/models/index.js +++ b/nodejs/models/index.js @@ -1,6 +1,9 @@ 'use strict'; +const conf = require('@simpleworkjs/conf'); +const {setUpTable} = require('model-redis'); + +const Table = setUpTable(conf.redis); -const Table = require('../utils/redis_model'); module.exports = Table; require('./dns_provider'); diff --git a/nodejs/models/user_redis.js b/nodejs/models/user_redis.js index e94a1d0..c70de74 100644 --- a/nodejs/models/user_redis.js +++ b/nodejs/models/user_redis.js @@ -1,6 +1,6 @@ 'use strict'; -const Table = require('../utils/redis_model'); +const Table = require('.'); const bcrypt = require('bcrypt'); const saltRounds = 10; diff --git a/nodejs/routes/render.js b/nodejs/routes/render.js index 72bc7a8..86bacb8 100644 --- a/nodejs/routes/render.js +++ b/nodejs/routes/render.js @@ -25,8 +25,8 @@ frontEndModules.forEach(dep => { // local folder. router.use('/static', express.static(path.join(__dirname, '../public'))) -router.get('/', async function(req, res, next) { - res.render('hosts', {...values}); +router.get('/', (req, res) => { + res.redirect(301, '/hosts'); }); router.get('/hosts', async function(req, res, next) { diff --git a/nodejs/services/host_scheduler.js b/nodejs/services/host_scheduler.js index e556fdd..4272972 100644 --- a/nodejs/services/host_scheduler.js +++ b/nodejs/services/host_scheduler.js @@ -20,11 +20,11 @@ const {Host} = require('../models/host'); // Initial wildcard cert check 30 seconds after app starts // Delay allows the system to fully initialize before checking certs -setTimeout(Host.checkWildcardForRenew, 30000); +setTimeout(Host.checkWildcardForRenew.bind(Host), 30000); // Check wildcard certs once every 24 hours // Ensures certificates are renewed well before expiration -setInterval(Host.checkWildcardForRenew, 86400000); +setInterval(Host.checkWildcardForRenew.bind(Host), 86400000); console.log('Host scheduler service initialized'); console.log('- Wildcard cert check: 30s after start, then every 24h'); diff --git a/nodejs/utils/object_validate.js b/nodejs/utils/object_validate.js deleted file mode 100644 index f206df9..0000000 --- a/nodejs/utils/object_validate.js +++ /dev/null @@ -1,112 +0,0 @@ -'use strict'; - -const process_type = { - number: function(key, value){ - if(key.min && value < key.min) return `is to small, min ${key.min}.` - if(key.max && value > key.max) return `is to large, max ${key.max}.` - }, - string: function(key, value){ - if(key.min && value.length < key.min) return `is too short, min ${key.min}.` - if(key.max && value.length > key.max) return `is too short, max ${key.max}.` - }, -} - -function returnOrCall(value){ - return typeof(value) === 'function' ? value() : value; -} - -function processKeys(map, data, partial){ - let errors = []; - let out = {}; - - for(let key of Object.keys(map)){ - - // Do not require "isRequired" fields for partial validation, useful for - // updates. - if(!map[key].always && partial && !data.hasOwnProperty(key)) continue; - - // Make sure required keys are present - if(!partial && map[key].isRequired && !data.hasOwnProperty(key)){ - errors.push({key, message:`${key} is required.`}); - continue; - } - - // Remove undefined keys unless they have a default option or are a - // relation - if(data[key] === undefined){ - if(!map[key].default){ - if(map[key].model && !map[key].type) continue; - continue; - } - } - - // Check the type of the key - if(data.hasOwnProperty(key) && map[key].type && typeof(data[key]) !== map[key].type){ - errors.push({key, message:`${key} is not ${map[key].type} type.`}); - continue; - } - - // Add the key to the process object to be returned and set any default - // if the key is blank - out[key] = data.hasOwnProperty(key) && data[key] !== undefined ? data[key] : returnOrCall(map[key].default); - - // Check for type specific validations, ie: string length - if(data.hasOwnProperty(key) && process_type[map[key].type]){ - let typeError = process_type[map[key].type](map[key], data[key]); - if(typeError){ - errors.push({key, message:`${key} ${typeError}`}); - - continue; - } - } - } - - // Check for errors, throw validation error if any - if(errors.length !== 0){ - throw ObjectValidateError(errors); - return {__errors__: errors}; - } - - return out; -} - -function parseFromString(map, data){ - // Use the key maps data type to return string values to native - let types = { - boolean: function(value){ return value === 'false' ? false : true }, - number: Number, - string: String, - object: JSON.parse - }; - - for(let key of Object.keys(data)){ - if(map[key] && map[key].type && data[key]){ - data[key] = types[map[key].type](data[key]); - } - } - - return data; -} - -function parseToString(data){ - let types = { - object: JSON.stringify - } - - return (types[typeof(data)] || String)(data); -} - -function ObjectValidateError(keys, message){ - let error = new Error('ObjectValidateError') - error.name = "ObjectValidateError" - error.message = message || `Invalid Keys: ${message}` - error.keys = (keys || {}); - error.status = 422; - - return error -} - -ObjectValidateError.prototype = Error.prototype; - - -module.exports = {processKeys, parseFromString, ObjectValidateError, parseToString}; \ No newline at end of file diff --git a/nodejs/utils/redis_model.js b/nodejs/utils/redis_model.js deleted file mode 100644 index e93724d..0000000 --- a/nodejs/utils/redis_model.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -const {setUpTable} = require('model-redis'); -const conf = require('@simpleworkjs/conf'); - -const Table = setUpTable({ - prefix: conf.redis.prefix -}); - -module.exports = Table;