From 0c817e1f964e444e0feb350a51fb8141aecb7c8a Mon Sep 17 00:00:00 2001 From: Philippe Pittoli Date: Tue, 12 Mar 2024 21:51:59 +0100 Subject: [PATCH] token-handler + build only when necessary --- Makefile | 11 ++++++++--- bin/should-update | 17 +++++++++++++++++ shard.yml | 2 ++ tools/token-handler.cr | 9 +++++---- 4 files changed, 32 insertions(+), 7 deletions(-) create mode 100755 bin/should-update diff --git a/Makefile b/Makefile index ef68302..9e40099 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,8 @@ endif Q ?= @ +SHOULD_UPDATE = ./bin/should-update + #################### ### REQUEST EXAMPLES #################### @@ -69,12 +71,15 @@ run-dnsmanagerd: $(Q)$(LD_P) ./bin/dnsmanagerd -v $(VERBOSITY) -r $(DBDIR) build-server: - $(Q)shards build dnsmanagerd + $(Q)-$(SHOULD_UPDATE) bin/dnsmanagerd && shards build dnsmanagerd build-client: - $(Q)shards build dnsmanager-client + $(Q)-$(SHOULD_UPDATE) bin/dnsmanager-client && shards build dnsmanager-client -build: build-server build-client +build-token-handler: + $(Q)-$(SHOULD_UPDATE) bin/token-handler && shards build token-handler + +build: build-server build-client build-token-handler print-messages: cat src/requests/*.cr | ./bin/get-messages.awk diff --git a/bin/should-update b/bin/should-update new file mode 100755 index 0000000..b49e3a0 --- /dev/null +++ b/bin/should-update @@ -0,0 +1,17 @@ +#!/bin/sh + +# Should we run the build? + +if [ $# -lt 1 ]; then + exec >& 2 + echo "Usage: $0 " + exit 1 +fi + +exe=$1 + +# If the binary hasn't already be compiled. +[ -f "${exe}" ] || exit 0 + +v=`find src/ -type f -newer "${exe}" | wc -l` +test "${v}" != "0" diff --git a/shard.yml b/shard.yml index e2308de..36e7177 100644 --- a/shard.yml +++ b/shard.yml @@ -30,5 +30,7 @@ targets: main: tools/write-zone-file.cr write-template-zone-file: main: tools/write-template-zone-file.cr + token-handler: + main: tools/token-handler.cr license: ISC diff --git a/tools/token-handler.cr b/tools/token-handler.cr index e3f18a4..2d573a2 100644 --- a/tools/token-handler.cr +++ b/tools/token-handler.cr @@ -1,23 +1,24 @@ +require "ipc" require "http/server" port = ARGV[0].to_i rescue 8080 addr = ARGV[1] rescue "127.0.0.1" -server = HTTP::Server.new do |context| - request = context.request +# TODO: connect to `dnsmanagerd`. +server = HTTP::Server.new do |context| pp! context.request.remote_address - case request.path + case context.request.path when /^\/token-update\/(?[a-z-]+)/ token = $~["token"] if token.nil? context.response.status_code = 404 - context.response.content_type = "text/html" context.response.print "invalid token" else context.response.content_type = "text/html" context.response.print "coucou, token: #{token}" + # TODO: send update to `dnsmanagerd`. end else context.response.status_code = 404