mirror of
https://github.com/Retropex/umbrel-bitcoin.git
synced 2025-05-12 19:20:49 +02:00
71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
|
|
const systemLogic = require('logic/system.js');
|
|
const configLogic = require('logic/config');
|
|
const bitcoindLogic = require('logic/bitcoind.js');
|
|
const safeHandler = require('utils/safeHandler');
|
|
const validateSettingsRequest = require('utils/validateSettingsRequest');
|
|
|
|
router.get('/bitcoin-p2p-connection-details', safeHandler(async(req, res) => {
|
|
const connectionDetails = systemLogic.getBitcoinP2PConnectionDetails();
|
|
|
|
return res.json(connectionDetails);
|
|
}));
|
|
|
|
router.get('/bitcoin-rpc-connection-details', safeHandler(async(req, res) => {
|
|
const connectionDetails = systemLogic.getBitcoinRPCConnectionDetails();
|
|
|
|
return res.json(connectionDetails);
|
|
}));
|
|
|
|
router.get('/bitcoin-config', safeHandler(async(req, res) => {
|
|
const bitcoinConfig = await configLogic.getJsonStore();
|
|
return res.json(bitcoinConfig);
|
|
}));
|
|
|
|
// updateJsonStore / generateUmbrelBitcoinConfig / generateBitcoinConfig are all called through these routes below so that even if user closes the browser prematurely, the backend will complete the update.
|
|
|
|
router.post('/update-bitcoin-config', safeHandler(async(req, res) => {
|
|
// store old bitcoinConfig in memory to revert to in case of errors setting new config and restarting bitcoind
|
|
const oldBitcoinConfig = await configLogic.getJsonStore();
|
|
const newBitcoinConfig = req.body.bitcoinConfig;
|
|
|
|
const validationErrors = validateSettingsRequest(newBitcoinConfig);
|
|
if (validationErrors.length > 0) {
|
|
return res.status(400).json({success: false, validationErrors});
|
|
}
|
|
|
|
try {
|
|
await configLogic.applyCustomBitcoinConfig(newBitcoinConfig);
|
|
await bitcoindLogic.stop();
|
|
|
|
res.json({success: true});
|
|
|
|
} catch (error) {
|
|
// revert everything to old config values
|
|
await configLogic.applyCustomBitcoinConfig(oldBitcoinConfig);
|
|
|
|
res.json({success: false}); // show error to user in UI
|
|
}
|
|
}));
|
|
|
|
router.post('/restore-default-bitcoin-config', safeHandler(async(req, res) => {
|
|
// store old bitcoinConfig in memory to revert to in case of errors setting new config and restarting bitcoind
|
|
const oldBitcoinConfig = await configLogic.getJsonStore();
|
|
|
|
try {
|
|
await configLogic.applyDefaultBitcoinConfig();
|
|
await bitcoindLogic.stop();
|
|
|
|
res.json({success: true});
|
|
|
|
} catch (error) {
|
|
// revert everything to old config values
|
|
await configLogic.applyCustomBitcoinConfig(oldBitcoinConfig);
|
|
|
|
res.json({success: false}); // show error to user in UI
|
|
}
|
|
}));
|
|
|
|
module.exports = router; |