-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUbuntuUnlock.js
70 lines (55 loc) · 1.67 KB
/
UbuntuUnlock.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
require('dotenv').config()
const express = require('express')
const exec = require('child_process').exec;
const app = express()
var port = parseInt(process.env.PORT) || 3000
var session_id = parseInt(process.env.SESSION_ID) || console.error("No session ID passed! continuing without one")
var lock_command = process.env.LOCK_COMMAND || "loginctl lock-session"
var unlock_command = process.env.UNLOCK_COMMAND || "loginctl unlock-session"
var unique_code = process.env.UNIQUE_CODE || 1234
app.get('/', (req, res) => {
res.status(200).send('Server is up and running!')
})
app.get('/unlock', (req, res) => {
if (req.query.code !== unique_code) {
res.status(403).json({
status: "Invalid code"
})
return;
}
res.status(200).json({
status: "Unlocked computer"
})
exec(`${unlock_command} ${session_id}`, function (error, stdout, stderr) {
console.log(`Unlocking computer at ${Date.now()}`)
if (error) {
console.error(error)
}
if (stderr) {
console.error(stderr)
}
});
})
app.get('/lock', (req, res) => {
if (req.query.code !== unique_code) {
res.status(403).json({
status: "Invalid code"
})
return;
}
res.status(200).json({
status: "Locked computer"
})
exec(`${lock_command} ${session_id}`, function (error, stdout, stderr) {
console.log(`Locking computer at ${Date.now()}`)
if (error) {
console.error(error)
}
if (stderr) {
console.error(stderr)
}
});
})
app.listen(port, () => {
console.log(`Server listening on port: ${port}`)
})