
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.
influx-backup
Advanced tools
NodeJS module for InfluxDB backup/restore. This module allows to backup an InfluxDB database by creating a zip file with all backup files generated with the influxd
shell command.
REQUIREMENTS
influxd
bin must be installed in your system. Check it by running which influxd
commandUses InfluxDB portable backups introduced in InfluxDb v1.5, check docs for more info.
Run the following command in the root directory of your project
npm install influx-backup --save
Check here and the example in examples folder
Here are some lines from examples/app.js
const TEST_DB = "testDB";
const manager = new BackupManager({db: TEST_DB});
// Restore DB api
app.post('/restore', (req, res) => {
var restore_path = "";
// create a temp directory to use for the backup
manager.createDir()
.then((dir) => {
restore_path = dir;
// Use multer to get the file from the req
// and store it in the temp dir created
var Storage = multer.diskStorage({
destination: restore_path,
filename: function(req, file, callback) {
callback(null, file.originalname);
}
});
// "restore" is the name attr of input file in html
var upload = multer({storage: Storage}).single("restore");
return multerPromise(upload, req, res)
})
.then((file) => {
//now the file is stored correctly, I can start the restore command
if(file){
return manager.restore(restore_path, file.originalname)
}else{
throw Error("No file provided");
}
}) //the backup has been restored in a backup database, load the backup in the main database
.then(() => manager.loadBackup())
.then(() => res.json({success:true, message: "Backup restored successfully"}))
.catch(err => {
console.log(err);
res.json({success:false, message: err.message})
});
});
// Backup DB api
app.get('/backup', (req, res) => {
manager.backup()
.then((file) => {
//zip file is ready, send it to the client
var stream = fs.createReadStream(file);
res.setHeader('Content-disposition', 'attachment; filename=' + file.split('/').pop());
stream.once("close", function () {
stream.destroy(); // makesure stream closed, not close if download aborted.
//IMPORTANT: remove backup files and zip
manager.deleteDir(path.dirname(file));
});
stream.pipe(res);
})
.catch(err => {
res.json({success: false, message: err});
});
});
// Check testDB exists, if not create one and start app listening on port 8000
influx.getDatabaseNames()
.then(names => {
if (!names.includes(TEST_DB)) {
return influx.createDatabase(TEST_DB)
}
})
.then(() => manager.init())
.then(() => {
app.listen(8000, function () {
console.log('Listening on port 8000')
})
})
.catch(err => {
console.error(`Error creating Influx database!`)
})
FAQs
Influxdb backup/restore helper
We found that influx-backup demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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.