What is this ?
This was build to handle and manage minecraft servers first, but actually only use Linux so if you have another OS you may have some bugs.
Table of Contents
Required
- NodeJs: 12.16.0
- GNU-Screen: 4.08.00
Installation
First make sure you have gnu-screen installed:
$ apt-get install screen
To run this project, install it locally using npm:
$ npm i gnu-screen
Functions
-
getAll()
Return all available Screens.
Screen
Create a representation of gnu-screen session : Screen(id, mode="")
.
If you want to save logs change mode to 's'
.
Extend events.EventEmitter.
Events:
-
close
When screen is closed. -
stdout
String
When something new is append in logFile.
Methods:
-
Screen.exist()
Check if screen's session is running. -
Screen.setup()
Fetch self variable with running session. -
Screen.setRule(...rules)
Rules to apply in screen session. -
Screen.write(...stdins)
Write something in screen session. -
Screen.setStdout(state)
Watch over logFile to callstdout
Event. -
Screen.logFile()
Return logFile. -
Screen.run(stdin=null)
Connect/create to screen session. -
Screen.close()
Close screen session. -
Screen.kill(signal="SIGKILL")
Kill screen session.
KeyValues:
-
Screen.id
String | null
Screen session's id. -
Screen.logFilePath
String | null
Path of logFile is there one. -
Screen.pid
Int | null
Pid of screen session if is running. -
Screen.date
String | null
Date of screen session if is running. -
Screen.state
String | null
State of screen session if is running.
Exemple
const SC = require("gnu-screen")
// Generate 10 screens session
for (n = 0; n < 10; n++) {
scr = new SC.Screen(id=`test n°${n}`);
console.log(scr);
scr.run();
}
// Find and close the 10 screens session
SC.getAll().forEach((scr) => {
console.log(scr);
scr.close();
})
// Create and start a screen session
test = new SC.Screen(id="final test", mode="s");
test.run();
console.log(test);
// Allow "stdout" event
test.setStdout()
// Close the screen session
function close() {
test.close();
if (!test.pid) {
console.log("Closed final test's screen session");
} else {
test.kill();
console.log("Killed test's screen session");
}
//self kill
process.exit();
}
// Get stdout from screen session
test.on("stdout", log => {
console.log("stdout:", log);
if (log.includes("!close")) {
close();
}
});
// Pipe input to the screen session
process.stdin.on('data', (stdin) => test.write(stdin));
// Capture Ctrl + C to close screen session
process.on('SIGINT', () => close());