Premium Only Content

NodeJS HTTP Server Controlling A Relay With A Hold Button
CODE:
const http = require('http');//require HTTP
const querystring = require('querystring');//require query string
const url = require('url');//require url
const { exec } = require("child_process");//require EXEC
http.createServer((req, res) => {//CREATE WEB SERVER
let runcommand = (command) => {//CREATE A FUNCTION THAT CAN BE CALLED TO RUN COMMANDS
exec(`${command}`, (error, stdout, stderr) => {
if (error) {///CONSOLE LOG ERRORS
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
});
}
let htmlMessage = '';//THIS VARIABLE WILL CONTAIN THE MESSAGE THAT WILL BE DISPLAYED TO THE USERS
let getValues = querystring.parse(url.parse(req.url).query);
if(getValues.onoff == "on")//IF /?onoff=on is sent then run the code in the if block that will call the runcommand function
{
runcommand('echo "The pin was turned on "`date` >> ./log');//THIS COMMAND WILL LOG THE ACTION TAKEN USING THE ECHO COMMAND
runcommand('sudo pon 255');//THIS COMMAND WILL TURN ON THE parallel port
htmlMessage = "<h1>The pin was turned on!</h1>";//THIS IS THE MESSAGE THAT WILL BE SENT TO THE USER
} else if(getValues.onoff == "off"){//IF /?onoff=off is sent then run the code in the if block that will call the runcommand function
runcommand('echo "The pin was turned off "`date` >> ./log');//LOG THE ACTION WITH THE ECHO COMMAND
runcommand('sudo pon 0');//THIS COMMAND WILL TURN OFF THE parallel port
htmlMessage = "<h1>The pin was turned off!</h1>";//THIS IS THE MESSAGE THAT WILL BE SENT TO THE USER
}
res.setHeader('Content-Type', 'text/html');//SET THE HEAD FOR HTML
res.writeHead(200, { 'Content-Type': 'text/html' });//WRITE THE HEAD
console.log(htmlMessage);
//BELOW IS THE SIMPLE HTML IT ONLY HAS TWO LINKS, A H1 ELEMENT AND A LITTLE CSS. THE LINKS WILL SEND THE GET INFO TO TURN ON AND OFF THE PINS
let html = `
<!DOCTYPE html>
<html>
<head>
<style>
input {
display: block;
padding: 30px;
margin: 30px;
size: 90px;
background-color: pink;
}
</style>
</head>
<script>
let hold = () => {
console.log("HOLD ON");
fetch("./?onoff=on");
}
let up = () => {
console.log("Let up");
fetch("./?onoff=off");
}
</script>
<body>
${htmlMessage}
<input type="button"
onmousedown="hold()"
ontouchstart="hold()"
onmouseup="up()"
ontouchend="up()"
value="HOLD ON"
/>
<input type="button" onclick="hold()" value="ON" />
<input type="button" onclick="up()" value="OFF" />
</body>
</html>
`;
console.log("Running port 3000");
res.write(html);//WRITE THE HTML
res.end();//END
}).listen(3000);
-
6:38
Mrgunsngear
10 hours ago $0.41 earnedTrump's ATF Removes Zero Tolerance Policy For FFLs & More 🇺🇸
3.4K15 -
22:07
JasminLaine
11 hours agoWatch CBC Realize They Can’t Save Carney—Poilievre Calls Him a “Political Grifter”
1.24K12 -
13:19
Bearing
20 hours agoAustralian Prime Minister FALLS OFF STAGE Then Denies it Happened 🤣😂
3.89K40 -
2:44:48
Price of Reason
12 hours agoTrump Tariff Mania CONTINUES! China vs Hollywood! Bezos Under FIRE! Sweet Baby Inc FAILS Again!
31K4 -
2:39:40
TimcastIRL
9 hours agoTrump To Impose 104% TARIFF On China At Midnight In NUCLEAR BOMB On Global Trade | Timcast IRL
248K122 -
1:54:27
Glenn Greenwald
11 hours agoAs Tariffs Dominate News, Trump and Netanyahu Make Increasingly Militaristic Threats; Plus: Mixed Supreme Court Ruling on Deportation Powers | SYSTEM UPDATE #435
162K184 -
1:01:27
Man in America
11 hours agoMAHA Feels Betrayed by RFK Jr.—What's REALLY Happening? w/ Sayer Ji
80.6K58 -
1:15:15
Savanah Hernandez
9 hours agoToxic Empathy Is Ruining America
60K49 -
1:39
Stephen Gardner
12 hours ago🚨BREAKING: Karoline Leavitt MAKES STUNNING announcement about Trump's Assassin!
66.4K22 -
1:32:10
Joker Effect
7 hours agoRumble is about to get a new genre!! Are you ready to take it on? Time to fight fire with fire!
65.3K8