Add malpd daemon executable
This commit is contained in:
parent
1eb58f87d2
commit
ad9628e45c
43
bin/malpd
Executable file
43
bin/malpd
Executable file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user