lelegram: init

This is an IRC/Telegram bridge.

It does multi-account puppet-like access to IRC making everyone's life
easier.

Compared to teleirc it also:
 - is smarter about converting messages
 - uses teleimg for public image access
 - is not written in JS

Experimental for now.

Change-Id: I66ba3f83abdfdea6463ab3be5380d8d3f2769291
diff --git a/hswaw/kube/teleimg.libsonnet b/hswaw/kube/teleimg.libsonnet
index 58026fb..29f0c2d 100644
--- a/hswaw/kube/teleimg.libsonnet
+++ b/hswaw/kube/teleimg.libsonnet
@@ -6,14 +6,21 @@
         secret: {
             telegram_token: error "telegram_token must be set",
         },
-        image: "registry.k0.hswaw.net/q3k/teleimg:1578240550-1525c84e4cef4f382e2dca2210f31830533dc7c4",
+        image: {
+            teleimg: "registry.k0.hswaw.net/q3k/teleimg:1578243230-79e4e790f877597c3175823ee7783eb99744dc27",
+            lelegram: "registry.k0.hswaw.net/q3k/lelegram:1578253551-79e4e790f877597c3175823ee7783eb99744dc27",
+        },
+        bridge: {
+            telegram: "-1001345766954",
+            irc: "#hackerspace-krk",
+        },
         webFQDN: error "webFQDN must be set!",
     },
 
-    component(cfg, env):: mirko.Component(env, "teleimg") {
+    teleimg(cfg, env):: mirko.Component(env, "teleimg") {
         local teleimg = self,
         cfg+: {
-            image: cfg.image,
+            image: cfg.image.teleimg,
             container: teleimg.GoContainer("main", "/teleimg/teleimg") {
                 env_: {
                     TELEGRAM_TOKEN: kube.SecretKeyRef(teleimg.secret, "telegram_token"),
@@ -38,4 +45,27 @@
             data: cfg.secret,
         },
     },
+
+    lelegram(cfg, env):: mirko.Component(env, "lelegram") {
+        local lelegram = self,
+        cfg+: {
+            image: cfg.image.lelegram,
+            container: lelegram.GoContainer("main", "/lelegram/lelegram") {
+                env_: {
+                    TELEGRAM_TOKEN: kube.SecretKeyRef(lelegram.secret, "telegram_token"),
+                },
+                command+: [
+                    "-telegram_token", "$(TELEGRAM_TOKEN)",
+                    "-telegram_chat", cfg.bridge.telegram,
+                    "-irc_channel", cfg.bridge.irc,
+                    "-irc_max_connections", "10",
+                ],
+            },
+        },
+
+        secret: kube.Secret("lelegram") {
+            metadata+: lelegram.metadata,
+            data: cfg.secret,
+        },
+    },
 }