Added files.
This commit is contained in:
commit
5bed031dbe
|
@ -0,0 +1,16 @@
|
||||||
|
.dub
|
||||||
|
docs.json
|
||||||
|
__dummy.html
|
||||||
|
docs/
|
||||||
|
/service-ping
|
||||||
|
service-ping.so
|
||||||
|
service-ping.dylib
|
||||||
|
service-ping.dll
|
||||||
|
service-ping.a
|
||||||
|
service-ping.lib
|
||||||
|
service-ping-test-*
|
||||||
|
*.exe
|
||||||
|
*.pdb
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.lst
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
USER=pi
|
||||||
|
HOST=192.168.0.82
|
||||||
|
ADDR=$USER@$HOST
|
||||||
|
|
||||||
|
echo "Stopping service-ping"
|
||||||
|
ssh $ADDR "sudo systemctl stop service-ping"
|
||||||
|
echo "Removing old source"
|
||||||
|
ssh $ADDR "rm -rf /opt/service-ping/source/*"
|
||||||
|
echo "Uploading latest source"
|
||||||
|
scp -r ${PWD}/* $ADDR:/opt/service-ping/source/
|
||||||
|
echo "Building application"
|
||||||
|
ssh $ADDR "cd /opt/service-ping/source && /opt/ldc2-1.37.0/bin/dub build --compiler=/opt/ldc2-1.37.0/bin/ldc2 --build=release"
|
||||||
|
echo "Copying app to final location"
|
||||||
|
ssh $ADDR "sudo cp -f /opt/service-ping/source/service-ping /opt/service-ping/app"
|
||||||
|
echo "Starting service-ping"
|
||||||
|
ssh $ADDR "sudo systemctl start service-ping"
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"authors": [
|
||||||
|
"Andrew Lalis"
|
||||||
|
],
|
||||||
|
"copyright": "Copyright © 2024, Andrew Lalis",
|
||||||
|
"dependencies": {
|
||||||
|
"handy-httpd": "~>8.3.2"
|
||||||
|
},
|
||||||
|
"description": "A minimal D application.",
|
||||||
|
"license": "proprietary",
|
||||||
|
"name": "service-ping"
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"fileVersion": 1,
|
||||||
|
"versions": {
|
||||||
|
"handy-httpd": "8.3.2",
|
||||||
|
"httparsed": "1.2.1",
|
||||||
|
"path-matcher": "1.1.4",
|
||||||
|
"slf4d": "3.0.0",
|
||||||
|
"streams": "3.5.0"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
[Unit]
|
||||||
|
Description=service-ping
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/service-ping
|
||||||
|
ExecStart=/opt/service-ping/app 192.168.0.82 8100
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,38 @@
|
||||||
|
import handy_httpd;
|
||||||
|
|
||||||
|
import std.conv : to;
|
||||||
|
|
||||||
|
void main(string[] args) {
|
||||||
|
ServerConfig cfg;
|
||||||
|
cfg.workerPoolSize = 5;
|
||||||
|
cfg.defaultHeaders["Access-Control-Allow-Origin"] = "*";
|
||||||
|
|
||||||
|
if (args.length >= 2) cfg.hostname = args[1];
|
||||||
|
if (args.length >= 3) cfg.port = args[2].to!ushort;
|
||||||
|
|
||||||
|
new HttpServer(new RequestHandler(), cfg).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
class RequestHandler : HttpRequestHandler {
|
||||||
|
void handle(ref HttpRequestContext ctx) {
|
||||||
|
auto maybeParam = ctx.request.queryParams.getFirst("address");
|
||||||
|
if (!maybeParam) {
|
||||||
|
ctx.response.status = HttpStatus.BAD_REQUEST;
|
||||||
|
ctx.response.writeBodyString("Required query parameter \"address\" is missing.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string address = maybeParam.value;
|
||||||
|
bool pingSuccessful = doPing(address);
|
||||||
|
import std.json;
|
||||||
|
JSONValue responseBody = JSONValue.emptyObject;
|
||||||
|
responseBody.object["success"] = JSONValue(pingSuccessful);
|
||||||
|
ctx.response.writeBodyString(responseBody.toJSON, "application/json");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool doPing(string address) {
|
||||||
|
import std.process;
|
||||||
|
auto result = execute(["ping", address, "-c", "1", "-W", "1"]);
|
||||||
|
const int status = result.status;
|
||||||
|
return status == 0;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue