From a2e649bb343a08e8efda37c5c02b2f789109cec6 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Tue, 24 Dec 2019 15:29:08 +0000 Subject: [PATCH] first commit --- LICENSE | 12 ++++++++++ Tupfile | 2 ++ Tuprules.tup | 1 + ketracel-scm-1.rockspec | 27 +++++++++++++++++++++ scripts/run.sh | 4 ++++ set_paths.lua | 4 ++++ src/Tupfile | 3 +++ src/ketracel.moon | 53 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 106 insertions(+) create mode 100644 LICENSE create mode 100644 Tupfile create mode 100644 Tuprules.tup create mode 100644 ketracel-scm-1.rockspec create mode 100755 scripts/run.sh create mode 100644 set_paths.lua create mode 100644 src/Tupfile create mode 100644 src/ketracel.moon diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..87df039 --- /dev/null +++ b/LICENSE @@ -0,0 +1,12 @@ +Copyright (c) 2019 Christine Dodrill + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/Tupfile b/Tupfile new file mode 100644 index 0000000..0e95ac4 --- /dev/null +++ b/Tupfile @@ -0,0 +1,2 @@ +include_rules +.gitignore diff --git a/Tuprules.tup b/Tuprules.tup new file mode 100644 index 0000000..9fc88ad --- /dev/null +++ b/Tuprules.tup @@ -0,0 +1 @@ +: foreach *.moon |> ^ Moon: %f -> %o^ moonc %f 2> /dev/null |> %B.lua diff --git a/ketracel-scm-1.rockspec b/ketracel-scm-1.rockspec new file mode 100644 index 0000000..039c8ea --- /dev/null +++ b/ketracel-scm-1.rockspec @@ -0,0 +1,27 @@ +package = "ketracel" +version = "scm-1" +source = { + url = "https://tulpa.dev/cadey/ketracel" +} +description = { + homepage = "https://tulpa.dev/cadey/ketracel", + license = "0bsd", + summary = "a small security bot for ngircd", + labels = { + "irc", + "security" + } +} +dependencies = { + "lua ~> 5.3", + "irc-engine", + "luasocket", +} +build_dependencies = { + "moonscript", + "busted", +} +build = { + type = "builtin", + modules = {} +} diff --git a/scripts/run.sh b/scripts/run.sh new file mode 100755 index 0000000..e251972 --- /dev/null +++ b/scripts/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +tup +lua5.3 -l set_paths ./src/ketracel.lua diff --git a/set_paths.lua b/set_paths.lua new file mode 100644 index 0000000..425f2d7 --- /dev/null +++ b/set_paths.lua @@ -0,0 +1,4 @@ +-- set_paths.lua +local version = _VERSION:match("%d+%.%d+") +package.path = 'lua_modules/share/lua/' .. version .. '/?.lua;lua_modules/share/lua/' .. version .. '/?/init.lua;' .. package.path +package.cpath = 'lua_modules/lib/lua/' .. version .. '/?.so;' .. package.cpath diff --git a/src/Tupfile b/src/Tupfile new file mode 100644 index 0000000..591db9c --- /dev/null +++ b/src/Tupfile @@ -0,0 +1,3 @@ +include_rules +.gitignore + diff --git a/src/ketracel.moon b/src/ketracel.moon new file mode 100644 index 0000000..bfae132 --- /dev/null +++ b/src/ketracel.moon @@ -0,0 +1,53 @@ +irce = require "irce" +socket = require "socket" +print irce._VERSION .. " running on " .. _VERSION + +config = + server: "127.0.0.1" + nick: os.getenv("IRC_NICK") or "Ketracel" + user: os.getenv("IRC_USER") or "white" + real: os.getenv("IRC_REAL") or "The favorite of the Jem'Hadar" + oper: os.getenv("IRC_OPER") + channels: { "#ketracel", "#opers" } + +irc = irce.new! +running = true + +assert irc\load_module require "irce.modules.base" +assert irc\load_module require "irce.modules.message" +assert irc\load_module require "irce.modules.channel" +assert irc\load_module require "irce.modules.motd" + +client = socket.tcp! +irc\set_send_func (message) => + client\send message +client\settimeout 1 + +irc\set_callback irce.RAW, (send, message) => + print string.format "%s %s", (send and ">" or "<"), message + +irc\set_callback "CTCP", (sender, origin, command, params, pm) => + if command == "VERSION" + self\CTCP_REPLY origin, "VERSION", string.format("Ketracel white - dev (%s, %s)", irce._VERSION, _VERSION) + +irc\set_callback "001", (...) => + for k, chan in ipairs config.channels + assert irc\JOIN chan + +irc\set_callback "PRIVMSG", (sender, origin, message, pm) => + if message == "?quit" + assert self\QUIT "Ran out of white" + running = false + +assert client\connect config.server, 6667 + +assert irc\NICK config.nick +assert irc\USER config.user, config.real + +if config.oper + client\send "OPER " .. config.nick .. " " .. config.oper .. "\r\n" + +while running + irc\process client\receive! + +client\close!