diff options
3 files changed, 58 insertions, 87 deletions
diff --git a/makefu/2configs/deployment/wiki-irc-bot/default.nix b/makefu/2configs/deployment/wiki-irc-bot/default.nix index 7ab31e698..12686efba 100644 --- a/makefu/2configs/deployment/wiki-irc-bot/default.nix +++ b/makefu/2configs/deployment/wiki-irc-bot/default.nix @@ -1,67 +1,19 @@ -{ pkgs, lib, ... }: +{ config, pkgs, ... }: -with lib;  let -  port = 18872; +  pkg = pkgs.lib.overrideDerivation pkgs.newsbot-js (original: { +    patches = [ ./wiki-output.patch ]; +  }); +  newsfile = pkgs.writeText "feeds" '' +    nixoswiki-bot|https://nixos.wiki/api.php?days=7&limit=50&hidecategorization=1&action=feedrecentchanges&feedformat=rss|#krebs +  '';  in { -  nixpkgs.config.packageOverrides = pkgs: with pkgs; { -    logstash = pkgs.stdenv.lib.overrideDerivation  pkgs.logstash (old: { -      patches = [ ./irc-out-notice.patch ]; }); -  }; -  services.logstash = { +  krebs.newsbot-js = {      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; -    }; +    package = pkg; +    ircServer = "chat.freenode.net"; +    feeds = newsfile; +    urlShortenerHost = "go"; +    urlShortenerPort = "80";    };  } diff --git a/makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch b/makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch deleted file mode 100644 index 040643f81..000000000 --- a/makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch +++ /dev/null @@ -1,26 +0,0 @@ -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 diff --git a/makefu/2configs/deployment/wiki-irc-bot/wiki-output.patch b/makefu/2configs/deployment/wiki-irc-bot/wiki-output.patch new file mode 100644 index 000000000..6e1e27853 --- /dev/null +++ b/makefu/2configs/deployment/wiki-irc-bot/wiki-output.patch @@ -0,0 +1,45 @@ +diff --git a/newsbot.js b/newsbot.js +index 42d0666..a284011 100644 +--- a/newsbot.js ++++ b/newsbot.js +@@ -92,8 +92,9 @@ function create_feedbot (nick, uri, channels) { +   } +  +   function broadcast_new_item (item) { ++    console.log('Broadcasting item ',item.link) +     return getShortLink(item.link, function (error, shortlink) { +-      return broadcast(item.title + ' ' + shortlink) ++      return broadcast('"'+ item.title + '" edited by ' + item.author +  ' ' + shortlink) +     }) +   } +    +@@ -152,15 +153,18 @@ function create_feedbot (nick, uri, channels) { +  +       if (client.lastItems) { +         items.forEach(function (item) { +-          if (!client.lastItems.hasOwnProperty(item.title)) { ++ ++          if (!client.lastItems.hasOwnProperty(item.guid)) { +             broadcast_new_item(item) ++          }else { ++            console.log("Item already seen:",item.guid) +           } +         }) +       } +  +       client.lastItems = {} +       items.forEach(function (item) { +-        client.lastItems[item.title] = true ++        client.lastItems[item.guid] = true +       }) +  +       return continue_loop() +@@ -199,6 +203,8 @@ function run_command (methodname, params, callback) { + } +  + function getShortLink (link, callback) { ++  callback(null,link) ++  return +   var form = new FormData() +   try { +     form.append('uri', link)  | 
