first commit

This commit is contained in:
Patrick
2026-05-01 19:34:31 +02:00
commit 83d6fe525f
8 changed files with 1040 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
const { Rcon } = require('rcon-client');
const sqlite3 = require('sqlite3');
const path = require('path');
require('dotenv').config({ quiet: true });
console.log('🔗 Starting Minecraft Bridge...');
console.log('RCON Config:', {
host: process.env.RCON_HOST || 'NOT SET',
port: process.env.RCON_PORT || '25575',
hasPassword: !!process.env.RCON_PASSWORD
});
const dbPath = path.join(__dirname, 'whitelist.db');
const db = new sqlite3.Database(dbPath);
function dbAll(sql, params = []) {
return new Promise((resolve, reject) => {
db.all(sql, params, (err, rows) => {
if (err) reject(err);
else resolve(rows);
});
});
}
function dbRun(sql, params = []) {
return new Promise((resolve, reject) => {
db.run(sql, params, function(err) {
if (err) reject(err);
else resolve(this);
});
});
}
async function executeMinecraftCommand(command) {
const rcon = new Rcon({
host: process.env.RCON_HOST,
port: process.env.RCON_PORT,
password: process.env.RCON_PASSWORD,
});
try {
await rcon.connect();
const response = await rcon.send(command);
await rcon.end();
return response;
} catch (error) {
console.error('RCON error:', error);
throw error;
}
}
async function processApprovedUsers() {
try {
const approvedUsers = await dbAll(
'SELECT * FROM whitelist_requests WHERE status = "approved" AND minecraft_added = 0'
);
for (const user of approvedUsers) {
try {
await executeMinecraftCommand(`whitelist add ${user.minecraft_username}`);
console.log(`✅ Added ${user.minecraft_username} to whitelist`);
await dbRun(
'UPDATE whitelist_requests SET minecraft_added = 1 WHERE id = ?',
[user.id]
);
} catch (error) {
console.error(`Failed to add ${user.minecraft_username} to whitelist:`, error);
}
}
} catch (error) {
console.error('Database error:', error);
}
}
setInterval(processApprovedUsers, 1000);
processApprovedUsers();
console.log(`✅ Started Minecraft Bridge successfully!`);
console.log(`Waiting for changes in whitelist.db`);