Basic SSH daemon.
authorlain <lain@soykaf.club>
Sun, 31 Mar 2019 12:55:09 +0000 (14:55 +0200)
committerlain <lain@soykaf.club>
Sun, 31 Mar 2019 12:55:09 +0000 (14:55 +0200)
lib/pleroma/bbs/bbs.ex [new file with mode: 0644]

diff --git a/lib/pleroma/bbs/bbs.ex b/lib/pleroma/bbs/bbs.ex
new file mode 100644 (file)
index 0000000..486ab91
--- /dev/null
@@ -0,0 +1,34 @@
+defmodule Pleroma.BBS do
+  def start_daemon do
+    :ok = :ssh.start()
+
+    options = [
+      system_dir: 'ssh_keys',
+      auth_method_kb_interactive_data: fn (_, user, _) -> {
+        'Welcome to Pleroma BBS',
+        'Hello #{user}',
+        'Password: ',
+        false }
+      end,
+      auth_methods: 'keyboard-interactive,password',
+      pwdfun: fn(user, password) -> true end,
+      shell: &start_prompt/1
+    ]
+    :ssh.daemon(13121, options)
+  end
+
+  def start_prompt(user) do
+    spawn(__MODULE__, :prompt, [user])
+  end
+
+  def prompt(user) do
+    IO.puts("Hey #{user}.\n")
+    IO.puts("Here's your timeline:\n")
+
+    user = Pleroma.User.get_cached_by_nickname(to_string(user))
+    Pleroma.Web.TwitterAPI.TwitterAPI.fetch_friend_statuses(user)
+    |> Enum.each(fn (status) ->
+      IO.puts("#{status["user"]["name"]} (#{status["user"]["screen_name"]}): #{status["text"]}")
+    end)
+  end
+end