Initial commit
This commit is contained in:
59
server/setup_remote.js
Normal file
59
server/setup_remote.js
Normal file
@@ -0,0 +1,59 @@
|
||||
const { execCommand, readFile } = require('./ssh_service');
|
||||
require('dotenv').config();
|
||||
|
||||
const MAIN_CONFIG = '/etc/bacula/bacula-dir.conf';
|
||||
const CLIENT_DIR = process.env.BACULA_CONF_DIR || '/etc/bacula/conf.d/clients';
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
console.log(`--- Setting up Remote Structure ---`);
|
||||
console.log(`Target Dir: ${CLIENT_DIR}`);
|
||||
|
||||
// 1. Create Directory
|
||||
console.log('Creating directory...');
|
||||
await execCommand(`mkdir -p "${CLIENT_DIR}"`);
|
||||
console.log('✅ Directory exists.');
|
||||
|
||||
// 2. Check Permissions (Basic check)
|
||||
// Ensure bacula user can read it. usually root owns /etc/bacula, so root ssh is fine.
|
||||
|
||||
// 3. Check Include in Main Config
|
||||
console.log(`Reading ${MAIN_CONFIG}...`);
|
||||
const configContent = await readFile(MAIN_CONFIG);
|
||||
|
||||
// Check for the specific include directive.
|
||||
// Bacula supports directory inclusion like @/path/to/dir since version 5.x+
|
||||
// However, standard include is often file based. Let's assume directory include works or check specific syntax.
|
||||
// Usually it is @"/etc/bacula/conf.d/clients"
|
||||
|
||||
const includeLine = `@${CLIENT_DIR}`;
|
||||
const relativeInclude = `@${CLIENT_DIR.replace('/etc/bacula/', '')}`; // Sometimes relative paths are used
|
||||
|
||||
if (configContent.includes(includeLine) || configContent.includes(relativeInclude)) {
|
||||
console.log('✅ Main config already includes the client directory.');
|
||||
} else {
|
||||
console.log('Populating config with include directive (Authorized)...');
|
||||
|
||||
// 1. Append the include line
|
||||
await execCommand(`echo "${includeLine}" >> ${MAIN_CONFIG}`);
|
||||
console.log('✅ Added include directive to bacula-dir.conf');
|
||||
|
||||
// 2. Reload Bacula
|
||||
console.log('Reloading Bacula Director...');
|
||||
try {
|
||||
// Try systemctl first
|
||||
await execCommand('systemctl reload bacula-director');
|
||||
console.log('✅ Bacula Director reloaded (systemctl).');
|
||||
} catch (e) {
|
||||
console.warn('⚠️ systemctl reload failed, trying service command...');
|
||||
// Fallback to service command
|
||||
await execCommand('service bacula-director reload');
|
||||
console.log('✅ Bacula Director reloaded (service).');
|
||||
}
|
||||
}
|
||||
|
||||
} catch (err) {
|
||||
console.error('❌ Setup Failed:', err);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user