
Research
Two Malicious Rust Crates Impersonate Popular Logger to Steal Wallet Keys
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
@nlv8/reconvict
Advanced tools
Drop-in replacement for node-convict with runtime configuration reloading.
Drop-in replacement for node-convict with support for runtime configuration reloading like an absolute boss.
EventEmitter
that will emit modified keys upon changes.npm install @nlv8/reconvict
An example config.js
file:
var reconvict = require('@nlv8/reconvict');
// Define a schema
var config = reconvict({
env: {
doc: "The application environment.",
format: ["production", "development", "test"],
default: "development",
env: "NODE_ENV"
},
greeting: {
message: {
doc: 'The greeting message presented to users.',
format: String,
default: 'Hello!'
}
},
server: {
ip: {
doc: "The IP address to bind.",
format: "ipaddress",
default: "127.0.0.1",
env: "IP_ADDRESS",
},
port: {
doc: "The port to bind.",
format: "port",
default: 8080,
env: "PORT",
arg: "port"
}
}
});
// Load environment dependent configuration
var env = config.get('env');
config.loadFile('./config/' + env + '.json');
// Perform validation
config.validate({allowed: 'strict'});
module.exports = config;
An example server.js
file leveraging the config.js
file above:
var http = require('http');
var config = require('./config.js');
// Listening on changes like an absolute boss.
config.on('change', (changedKeys, config) => {
console.log('Configuration changed! Changed keys and values:');
changedKeys.forEach(key => {
console.log(`${key} – ${config.get(key)}`)
})
});
const greeting = config.get('greeting')
var server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
// Will magically change to the latest configuration value :)
// However, you cannot modify it :O
res.end(`${greeting.message}\n`);
});
server.listen(config.get('port'), config.get('ip'), function(x) {
var addy = server.address();
console.log('running on http://' + addy.address + ":" + addy.port);
});
// Let's make some change.
setTimeout(() => {
config.set('greeting.message', 'Hola!');
}, 10000)
To launch your example server, and set a port:
node ./server.js --port 8080
Note: arguments must be supplied with the double-hyphen --arg
. (Single hypen's are not supported at this time)
For the original node-convict
methods, please see: node-convict/API
.
Works the same as load
but will ignore environment variables and arguments originally given to the script.
Works the same as load
but will ignore environment variables and arguments originally given to the script.
FAQs
Drop-in replacement for node-convict with runtime configuration reloading.
We found that @nlv8/reconvict demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Socket uncovers malicious Rust crates impersonating fast_log to steal Solana and Ethereum wallet keys from source code.
Research
A malicious package uses a QR code as steganography in an innovative technique.
Research
/Security News
Socket identified 80 fake candidates targeting engineering roles, including suspected North Korean operators, exposing the new reality of hiring as a security function.