summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/deployment/wiki-irc-bot
diff options
context:
space:
mode:
Diffstat (limited to 'makefu/2configs/deployment/wiki-irc-bot')
-rw-r--r--makefu/2configs/deployment/wiki-irc-bot/default.nix67
-rw-r--r--makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch26
2 files changed, 93 insertions, 0 deletions
diff --git a/makefu/2configs/deployment/wiki-irc-bot/default.nix b/makefu/2configs/deployment/wiki-irc-bot/default.nix
new file mode 100644
index 00000000..7ab31e69
--- /dev/null
+++ b/makefu/2configs/deployment/wiki-irc-bot/default.nix
@@ -0,0 +1,67 @@
+{ pkgs, lib, ... }:
+
+with lib;
+let
+ port = 18872;
+in {
+ nixpkgs.config.packageOverrides = pkgs: with pkgs; {
+ logstash = pkgs.stdenv.lib.overrideDerivation pkgs.logstash (old: {
+ patches = [ ./irc-out-notice.patch ]; });
+ };
+ services.logstash = {
+ enable = true;
+ inputConfig = ''
+ http {
+ port => ${toString port}
+ host => "127.0.0.1"
+ }
+ '';
+ filterConfig = ''
+ if ([pages]) {
+ ruby {
+ code => '
+ 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")
+ '
+ }
+ }
+ '';
+ outputConfig = ''
+ file { path => "/tmp/logs.json" codec => "json_lines" }
+ if [output] {
+ irc {
+ channels => [ "#krebs", "#nixos" ]
+ host => "irc.freenode.net"
+ nick => "nixos-users-wiki"
+ format => "%{output}"
+ notice => true
+ }
+ }
+ '';
+ plugins = [ ];
+ };
+
+ services.nginx = {
+ enable = lib.mkDefault true;
+ virtualHosts."ghook.krebsco.de" = {
+ locations."/".proxyPass = "http://localhost:${toString port}/";
+ enableSSL = true;
+ enableACME = true;
+ forceSSL = true;
+ };
+ };
+}
diff --git a/makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch b/makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch
new file mode 100644
index 00000000..040643f8
--- /dev/null
+++ b/makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch
@@ -0,0 +1,26 @@
+index b63339d..8c8c747 100644
+--- a/vendor/bundle/jruby/1.9/gems/logstash-output-irc-2.0.4/lib/logstash/outputs/irc.rb
++++ b/vendor/bundle/jruby/1.9/gems/logstash-output-irc-2.0.4/lib/logstash/outputs/irc.rb
+@@ -48,6 +48,9 @@ class LogStash::Outputs::Irc < LogStash::Outputs::Base
+ # Static string after event
+ config :post_string, :validate => :string, :required => false
+
++ # Set this to true to send messages as notice
++ config :notice, :validate => :boolean, :default => false
++
+ public
+
+ def inject_bot(bot)
+@@ -90,9 +93,9 @@ class LogStash::Outputs::Irc < LogStash::Outputs::Base
+
+ @bot.channels.each do |channel|
+ @logger.debug("Sending to...", :channel => channel, :text => text)
+- channel.msg(pre_string) if !@pre_string.nil?
+- channel.msg(text)
+- channel.msg(post_string) if !@post_string.nil?
++ channel.send(pre_string, :notice => @notice) if !@pre_string.nil?
++ channel.send(text, :notice => @notice)
++ channel.send(post_string, :notice => @notice) if !@post_string.nil?
+ end # channels.each
+ end # def receive
+ end # class LogStash::Outputs::Irc