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