-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathapp.js
More file actions
executable file
·117 lines (104 loc) · 3 KB
/
app.js
File metadata and controls
executable file
·117 lines (104 loc) · 3 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
let port =
process.argv.indexOf("--port") >= 0 &&
process.argv[process.argv.indexOf("--port") + 1]
? process.argv[process.argv.indexOf("--port") + 1]
: 2806;
const os = require("os");
const ifaces = os.networkInterfaces();
const WebSocketServer = require("ws").Server;
const wss = new WebSocketServer({
port: port
});
const ks = require("node-key-sender");
const robot = require("robotjs");
let ipActual = "";
Object.keys(ifaces).forEach(ifname => {
let alias = 0;
ifaces[ifname].forEach(iface => {
if ("IPv4" !== iface.family || iface.internal !== false) return;
if (alias < 1) ipActual = iface.address;
++alias;
});
});
const moveMouse = (x, y) => {
let mousePos = robot.getMousePos();
robot.moveMouse(mousePos.x - x, mousePos.y - y);
};
const getBatteryPercentage = callback => {
const { exec } = require("child_process");
exec(
"acpi | awk '{print $4}' | awk -F '%,' '{print $1}'",
(err, stdout, stderr) => {
if (err) {
return;
}
// console.log(`stderr: ${stderr}`);
callback(stderr ? stderr : stdout ? stdout : false);
}
);
};
const upVol = () => {
const { exec } = require("child_process");
exec("pamixer --increase 5", (err, stdout, stderr) => {
return;
});
};
const upDown = () => {
const { exec } = require("child_process");
exec("pamixer --decrease 5", (err, stdout, stderr) => {
return;
});
};
console.log(`Servidor corriendo en ws://${ipActual}:${port}`);
wss.on("connection", (ws, req) => {
console.log(`Conexión ID: '${req.headers["sec-websocket-key"]}'\n`);
ws.send(
JSON.stringify({
type: "CONNECTION_START",
message: `Conexión ID: '${req.headers["sec-websocket-key"]}'`,
id: `${req.headers["sec-websocket-key"]}`
})
);
ws.on("message", message => {
// console.log(message);
const parametros = message.split(",");
const tipoEvento = parametros.splice(0, 1)[0];
// console.log(tipoEvento);
if (tipoEvento === "teclado") {
const combinacion = parametros.splice(-1, 1)[0];
if (parametros.length >= 2 && combinacion) {
if (parametros[0] === "command") {
if (parametros[1] === "volup") {
// console.log('aca');
upVol();
} else if (parametros[1] === "voldown") {
upDown();
}
}
ks.sendCombination(parametros);
} else {
ks.sendKey(parametros[0]);
}
} else if (tipoEvento === "mouse") {
if (parametros[0] === "click") {
if (parametros[1] && parametros[1] === "right") {
robot.mouseClick("right");
} else {
robot.mouseClick();
}
} else {
moveMouse(parseInt(parametros[0]), parseInt(parametros[1]));
}
} else if (tipoEvento === "getBatteryPercentage") {
getBatteryPercentage(val => {
ws.send(
JSON.stringify({
type: "BATTERY_PCTG",
message: val.trim()
})
);
});
}
// console.log(parametros);
});
});