summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/deployment/wiki-irc-bot
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-08-22 11:21:32 +0200
committermakefu <github@syntax-fehler.de>2017-08-22 11:21:35 +0200
commitbbdbee4d2785c5e7a7ae99aba515556a856f4511 (patch)
treef5a58b9860c8b6ed1552a2fb2c8d3d8c9b42978a /makefu/2configs/deployment/wiki-irc-bot
parent7fa9cb75cbadd9e16c0616ee3ee16f731e647d19 (diff)
ma wiki-irc-bot: use newsbot-js instead of logstash
Diffstat (limited to 'makefu/2configs/deployment/wiki-irc-bot')
-rw-r--r--makefu/2configs/deployment/wiki-irc-bot/default.nix74
-rw-r--r--makefu/2configs/deployment/wiki-irc-bot/irc-out-notice.patch26
-rw-r--r--makefu/2configs/deployment/wiki-irc-bot/wiki-output.patch45
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)