2017-04-26 12:42:52 +00:00
|
|
|
{ pkgs, lib, ... }:
|
|
|
|
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
port = 18872;
|
|
|
|
in {
|
2017-05-24 08:53:08 +00:00
|
|
|
nixpkgs.config.packageOverrides = pkgs: with pkgs; {
|
|
|
|
logstash = pkgs.stdenv.lib.overrideDerivation pkgs.logstash (old: {
|
|
|
|
patches = [ ./irc-out-notice.patch ]; });
|
|
|
|
};
|
2017-04-26 12:42:52 +00:00
|
|
|
services.logstash = {
|
|
|
|
enable = true;
|
|
|
|
inputConfig = ''
|
|
|
|
http {
|
|
|
|
port => ${toString port}
|
|
|
|
host => "127.0.0.1"
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
filterConfig = ''
|
|
|
|
if ([pages]) {
|
|
|
|
ruby {
|
|
|
|
code => '
|
2017-04-28 10:43:20 +00:00
|
|
|
require "net/http"
|
|
|
|
require "net/https"
|
|
|
|
http = Net::HTTP.new("git.io", 443)
|
|
|
|
http.use_ssl = true
|
|
|
|
lines = []
|
|
|
|
event["pages"].each {|p|
|
|
|
|
url = "#{p["html_url"]}/_compare/#{p["sha"]}"
|
|
|
|
short_url = begin
|
|
|
|
request = Net::HTTP::Post.new "/"
|
|
|
|
request.set_form_data ({"url" => url })
|
|
|
|
response = http.request(request)
|
|
|
|
response["location"]
|
|
|
|
end
|
|
|
|
lines << "\"#{p["title"]}\" #{p["action"]} by #{event["sender"]["login"]} #{short_url}"
|
|
|
|
}
|
|
|
|
event["output"] = lines.join("\n")
|
2017-04-26 12:42:52 +00:00
|
|
|
'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
outputConfig = ''
|
|
|
|
file { path => "/tmp/logs.json" codec => "json_lines" }
|
|
|
|
if [output] {
|
|
|
|
irc {
|
2017-05-24 08:53:08 +00:00
|
|
|
channels => [ "#krebs", "#nixos" ]
|
2017-04-26 12:42:52 +00:00
|
|
|
host => "irc.freenode.net"
|
2017-05-16 14:49:40 +00:00
|
|
|
nick => "nixos-users-wiki"
|
2017-04-26 12:42:52 +00:00
|
|
|
format => "%{output}"
|
2017-05-24 08:53:08 +00:00
|
|
|
notice => true
|
2017-04-26 12:42:52 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
plugins = [ ];
|
|
|
|
};
|
|
|
|
|
|
|
|
services.nginx = {
|
|
|
|
enable = lib.mkDefault true;
|
|
|
|
virtualHosts."ghook.krebsco.de" = {
|
|
|
|
locations."/".proxyPass = "http://localhost:${toString port}/";
|
|
|
|
enableSSL = true;
|
|
|
|
enableACME = true;
|
|
|
|
forceSSL = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|