diff --git a/app/del.js b/app/del.js index 80f60fd..0cfc93a 100644 --- a/app/del.js +++ b/app/del.js @@ -88,12 +88,21 @@ module.exports = async (req, res) => { const peer_name = peer_lines .filter( (line) => line.includes('[Peer] # ') )[0] .split(' # ')[1] + const peer_ips = peer_lines + .filter( (line) => line.includes('AllowedIPs = '))[0] + .split(' = ')[1] if (peer_pubkey===undefined) { peer_pubkey = peer_lines .filter( (line) => line.includes('PublicKey = ') )[0] .split(' = ')[1] } + // Make sure requester can't delete self + if (peer_ips.includes(req.requester)) { + console.log(`Refused to let ${req.requester} delete self: ${peer_name}`) + return res.sendStatus(409) // "Conflict" + } + // Delete from local wg config console.log(`Deleting ${peer_name}`); try { await fs.writeFile(env.WG_CONFIG_FILE,