You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.3 KiB
52 lines
1.3 KiB
#!/usr/bin/env node |
|
|
|
const fs = require('fs'); |
|
const readline = require('readline'); |
|
|
|
const filePath = '/home/orly/cs-policy-output.txt'; |
|
|
|
// Create readline interface to read from stdin |
|
const rl = readline.createInterface({ |
|
input: process.stdin, |
|
output: process.stdout, |
|
terminal: false |
|
}); |
|
|
|
// Log that script started |
|
fs.appendFileSync(filePath, `${Date.now()}: Policy script started\n`); |
|
|
|
// Process each line of input (policy events) |
|
rl.on('line', (line) => { |
|
try { |
|
// Log that we received an event |
|
fs.appendFileSync(filePath, `${Date.now()}: Received event: ${line.substring(0, 100)}...\n`); |
|
|
|
// Parse the policy event |
|
const event = JSON.parse(line); |
|
|
|
// Log event details |
|
fs.appendFileSync(filePath, `${Date.now()}: Event ID: ${event.id || 'unknown'}\n`); |
|
|
|
// Respond with "accept" to allow the event |
|
const response = { |
|
id: event.id, |
|
action: "accept", |
|
msg: "" |
|
}; |
|
|
|
console.log(JSON.stringify(response)); |
|
} catch (err) { |
|
// Log errors |
|
fs.appendFileSync(filePath, `${Date.now()}: Error: ${err.message}\n`); |
|
|
|
// Reject on error |
|
console.log(JSON.stringify({ |
|
action: "reject", |
|
msg: "Policy script error" |
|
})); |
|
} |
|
}); |
|
|
|
rl.on('close', () => { |
|
fs.appendFileSync(filePath, `${Date.now()}: Policy script stopped\n`); |
|
});
|
|
|