From ad9628e45cdfb451b8b2eba5b2dd899d0c0708b0 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 1 Apr 2026 19:59:17 -0400 Subject: [PATCH] Add malpd daemon executable --- bin/malpd | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 bin/malpd diff --git a/bin/malpd b/bin/malpd new file mode 100755 index 0000000..4476079 --- /dev/null +++ b/bin/malpd @@ -0,0 +1,43 @@ +#!/usr/bin/env ruby + +require "socket" +require "fileutils" + +SOCKET_PATH = "/run/malpd/malpd.sock" + +if Process.uid != 0 + $stderr.puts "malpd must be run as root" + exit(1) +end + +FileUtils.mkdir_p(File.dirname(SOCKET_PATH)) +FileUtils.rm_f(SOCKET_PATH) + +server = UNIXServer.new(SOCKET_PATH) +File.chmod(0660, SOCKET_PATH) +FileUtils.chown(nil, "apache", SOCKET_PATH) + +Signal.trap("TERM") { server.close } +Signal.trap("INT") { server.close } + +$stdout.puts "malpd listening on #{SOCKET_PATH}" + +loop do + conn = server.accept + request = conn.gets&.chomp + + begin + case request + when nil + # empty request + else + conn.puts "unknown request: #{request}" + end + rescue => e + $stderr.puts "error handling request: #{e.message}" + ensure + conn.close + end +rescue IOError + break +end