Mercurial > prosody-modules
view mod_pubsub_forgejo/webhook-examples/push/slidge.rss @ 6299:5cf5ee23b361
mod_voipms: New Module to send and receive SMS/MMS via VoIP.ms APIs.
diff --git a/mod_voipms/README.md b/mod_voipms/README.md
new file mode 100644
--- /dev/null
+++ b/mod_voipms/README.md
@@ -0,0 +1,51 @@
+---
+labels:
+- 'Stage-Alpha'
+- 'Type-Web'
+summary: Send and receive SMS/MMS via VoIP.ms APIs.
+rockspec:
+ build:
+ modules:
+ mod_voipms: mod_voipms.lua
+...
+
+Introduction
+============
+
+This is a Prosody module to map JIDs to DIDs on VoIP.ms and support sending/receiving SMS/MMS.
+
+Configuration
+=============
+
+| option | type | default |
+|-----------------------|--------|---------|
+| voipms\_api\_username | string | nil |
+| voipms\_api\_password | string | nil |
+| voipms\_query\_key | string | nil |
+| voipms\_jid\_map | table | nil |
+```
+VirtualHost "sms.example.com"
+modules_enabled = {
+ "voipms";
+}
+voipms_api_username = john@example.com -- E-mail registered with VoIP.ms
+voipms_api_password = abcd1234 -- API password configured in VoIP.ms
+voipms_query_key = some_query_key -- query param 'key' part of your URL callback
+voipms_jid_map = {
+ ["your_jid@your_domain.com"] = "+1234567890"
+}
+```
+
+HTTP
+====
+
+The module is served on Prosody's default HTTP ports at the path /voipms. More details on configuring HTTP modules in Prosody can be found in the HTTP documentation.
+
+VoIP.ms Webhook URL
+===================
+
+This module receives the VoIP.ms Webhook URL (POST) at the /voipms endpoint. It uses the sendSMS/sendMMS GET methods against the VoIP.ms APIs. This is an example webhook to use in VoIP.ms:
+
+```
+https://sms.example.com/voipms?key=some_query_key
+```
diff --git a/mod_voipms/mod_voipms.lua b/mod_voipms/mod_voipms.lua
new file mode 100644
--- /dev/null
+++ b/mod_voipms/mod_voipms.lua
@@ -0,0 +1,166 @@
+local http = require "net.http"
+local json = require "util.json"
+local st = require "util.stanza"
+
+local api_username = module:get_option_string("voipms_api_username")
+local api_password = module:get_option_string("voipms_api_password")
+local query_key = module:get_option("voipms_query_key")
+local jid_map = module:get_option("voipms_jid_map") or {}
+local rest_endpoint = "https://voip.ms/api/v1/rest.php"
+
+if not api_username or not api_password or not query_key then
+ module:log("error", "Missing required config values (voipms_api_username, voipms_api_password, voipms_query_key)")
+ return
+end
+
+module:depends("http")
+
+local function normalize_number(num)
+ if not num then return nil end
+ if num:sub(1, 1) ~= "+" then
+ return "+1" .. num
+ end
+ return num
+end
+
+local function extract_query_key(event)
+ return (event.request.url.query or ""):match("key=([^&]+)")
+end
+
+module:provides("http", {
+ route = {
+ ["POST"] = function(event)
+ local req = event.request
+ local body = req.body or ""
+
+ if extract_query_key(event) ~= query_key then
+ module:log("warn", "Unauthorized webhook: missing or invalid key")
+ return { status_code = 403 }
+ end
+
+ local json_payload, err = json.decode(body)
+ if not json_payload then
+ module:log("warn", "Invalid JSON: %s", err or "unknown error")
+ return { status_code = 400 }
+ end
+
+ local payload = json_payload.data and json_payload.data.payload
+ if not payload then
+ module:log("warn", "Missing payload in JSON")
+ return { status_code = 400 }
+ end
+
+ local from = payload.from and payload.from.phone_number
+ local to_list = payload.to or {}
+ local to = #to_list > 0 and to_list[1].phone_number or nil
+
+ if not from or not to then
+ module:log("warn", "Missing phone numbers (from: %s, to: %s)", tostring(from), tostring(to))
+ return { status_code = 400 }
+ end
+
+ local normalized_to = normalize_number(to)
+ local target_jid = nil
+
+ for jid, did in pairs(jid_map) do
+ if normalize_number(did) == normalized_to then
+ target_jid = jid
+ break
+ end
+ end
+
+ if not target_jid then
+ module:log("warn", "No JID mapping for DID %s", normalized_to)
+ return { status_code = 404 }
+ end
+
+ local normalized_from = normalize_number(from)
+ local message_text = payload.text or ""
+
+ local message = st.message({
+ from = normalized_from .. "@" .. module.host,
+ to = target_jid,
+ type = "chat"
+ }):tag("body"):text(message_text):up()
+
+ if payload.media and #payload.media > 0 then
+ for _, media_item in ipairs(payload.media) do
+ if media_item.url then
+ message_text = message_text .. "\n" .. media_item.url
+ message:tag("x", { xmlns = "jabber:x:oob" })
+ :tag("url"):text(media_item.url):up():up()
+ end
+ end
+ end
+
+ module:send(message)
+ module:log("info", "Delivered SMS from %s to %s", normalized_from, target_jid)
+
+ return { status_code = 204 }
+ end
+ }
+})
+
+module:hook("message/bare", function(event)
+ local stanza = event.stanza
+ if stanza.attr.type ~= "chat" then return end
+
+ local from_jid = stanza.attr.from
+ local to_jid = stanza.attr.to
+ local body = stanza:get_child_text("body")
+ if not body or body == "" then return end
+
+ local from_number = jid_map[from_jid]
+ if not from_number then
+ module:log("warn", "No DID mapping for JID %s", from_jid)
+ return
+ end
+
+ local to_number = to_jid:match("^([^@]+)")
+ if not to_number then
+ module:log("warn", "Malformed JID in message.to: %s", to_jid)
+ return
+ end
+
+ to_number = normalize_number(to_number)
+
+ local media_urls = {}
+ for line in body:gmatch("[^\r\n]+") do
+ if line:match("^https?://") then
+ table.insert(media_urls, line)
+ end
+ end
+
+ local method = (#media_urls > 0) and "sendMMS" or "sendSMS"
+ local query = {
+ api_username = api_username,
+ api_password = api_password,
+ method = method,
+ did = from_number,
+ dst = to_number,
+ message = body
+ }
+
+ if method == "sendMMS" then
+ for i, url in ipairs(media_urls) do
+ query["media_url[" .. (i - 1) .. "]"] = url
+ end
+ end
+
+ local query_str = http.formencode(query)
+
+ http.request(rest_endpoint .. "?" .. query_str, {
+ method = "GET";
+ }, function(response_body, code)
+ if code == 200 then
+ local resp, err = json.decode(response_body)
+ if not resp or resp.status ~= "success" then
+ module:log("error", "Failed to send %s: %s", method, err or (resp and resp.status) or "unknown")
+ else
+ module:log("info", "Sent %s from %s to %s", method, from_number, to_number)
+ end
+ else
+ module:log("error", "HTTP error sending %s: code %s", method, tostring(code))
+ end
+ end)
+end)
| author | Chaz <menel@snikket.de> |
|---|---|
| date | Mon, 21 Jul 2025 23:57:37 +0200 |
| parents | 131b8bfbefb4 |
| children |
line wrap: on
line source
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"> <channel> <title>Feed of "slidge"</title> <link>https://codeberg.org/slidge</link> <description></description> <pubDate>Fri, 17 Jan 2025 12:15:21 +0000</pubDate> <item> <title>aereaux commented on issue slidge/slidge#36</title> <link>https://codeberg.org/slidge/slidge/issues/36#issuecomment-2590246</link> <description>Error on startup

<p dir="auto">It does continue to run, but it doesn&#39;t set my avatar. I do seem to see my own avatar in group chats, at least in cheogram.</p>
</description> <content:encoded><![CDATA[Error on startup <p dir="auto">It does continue to run, but it doesn't set my avatar. I do seem to see my own avatar in group chats, at least in cheogram.</p> ]]></content:encoded> <author>aereaux</author> <guid isPermaLink="false">22108577: https://codeberg.org/slidge/slidge/issues/36#issuecomment-2590246</guid> <pubDate>Thu, 16 Jan 2025 15:32:41 +0000</pubDate> </item> <item> <title>nicoco commented on issue slidge/slidge#36</title> <link>https://codeberg.org/slidge/slidge/issues/36#issuecomment-2590128</link> <description>Error on startup

<p dir="auto">I&#39;m not sure why this happens but it is non fatal, right? I suspect you don&#39;t see your own avatar in group chats though.</p>
</description> <content:encoded><![CDATA[Error on startup <p dir="auto">I'm not sure why this happens but it is non fatal, right? I suspect you don't see your own avatar in group chats though.</p> ]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22106314: https://codeberg.org/slidge/slidge/issues/36#issuecomment-2590128</guid> <pubDate>Thu, 16 Jan 2025 14:28:29 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidgram</title> <link>/slidge/slidgram/compare/3f8b7a2f69c6c891d8ab07700f113103db73faa3...dd7c6923c788b38312fbc27cffba3b7007d0126e</link> <description><a href="https://codeberg.org/slidge/slidgram/commit/dd7c6923c788b38312fbc27cffba3b7007d0126e">dd7c6923c788b38312fbc27cffba3b7007d0126e</a>
build: update pre-commit hooks

<a href="https://codeberg.org/slidge/slidgram/commit/790116333966f395cc268b032c7a6173486955f4">790116333966f395cc268b032c7a6173486955f4</a>
chore: update lockfile

<a href="https://codeberg.org/slidge/slidgram/commit/776de82113f8a860408f78c22e8539e73306ac87">776de82113f8a860408f78c22e8539e73306ac87</a>
ci: use woodpecker</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidgram/commit/dd7c6923c788b38312fbc27cffba3b7007d0126e" rel="nofollow">dd7c6923c788b38312fbc27cffba3b7007d0126e</a> build: update pre-commit hooks <a href="https://codeberg.org/slidge/slidgram/commit/790116333966f395cc268b032c7a6173486955f4" rel="nofollow">790116333966f395cc268b032c7a6173486955f4</a> chore: update lockfile <a href="https://codeberg.org/slidge/slidgram/commit/776de82113f8a860408f78c22e8539e73306ac87" rel="nofollow">776de82113f8a860408f78c22e8539e73306ac87</a> ci: use woodpecker]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22100038: /slidge/slidgram/compare/3f8b7a2f69c6c891d8ab07700f113103db73faa3...dd7c6923c788b38312fbc27cffba3b7007d0126e</guid> <pubDate>Thu, 16 Jan 2025 12:40:29 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidgram</title> <link>https://codeberg.org/slidge/slidgram/commit/3f8b7a2f69c6c891d8ab07700f113103db73faa3</link> <description><a href="https://codeberg.org/slidge/slidgram/commit/3f8b7a2f69c6c891d8ab07700f113103db73faa3">3f8b7a2f69c6c891d8ab07700f113103db73faa3</a>
fixup! ci: use woodpecker</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidgram/commit/3f8b7a2f69c6c891d8ab07700f113103db73faa3" rel="nofollow">3f8b7a2f69c6c891d8ab07700f113103db73faa3</a> fixup! ci: use woodpecker]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22099622: https://codeberg.org/slidge/slidgram/commit/3f8b7a2f69c6c891d8ab07700f113103db73faa3</guid> <pubDate>Thu, 16 Jan 2025 12:15:22 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidgram</title> <link>https://codeberg.org/slidge/slidgram/commit/6a1c45d27839cc1d4db0edd0fbe074171b89fcc0</link> <description><a href="https://codeberg.org/slidge/slidgram/commit/6a1c45d27839cc1d4db0edd0fbe074171b89fcc0">6a1c45d27839cc1d4db0edd0fbe074171b89fcc0</a>
fixup! ci: use woodpecker</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidgram/commit/6a1c45d27839cc1d4db0edd0fbe074171b89fcc0" rel="nofollow">6a1c45d27839cc1d4db0edd0fbe074171b89fcc0</a> fixup! ci: use woodpecker]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22099101: https://codeberg.org/slidge/slidgram/commit/6a1c45d27839cc1d4db0edd0fbe074171b89fcc0</guid> <pubDate>Thu, 16 Jan 2025 11:53:46 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidgram</title> <link>/slidge/slidgram/compare/2dfc9cc3916e91cf1db677771bc1a41ba55f50aa...d818b8518ce676361e3d694ff9b14ec86cb7e31c</link> <description><a href="https://codeberg.org/slidge/slidgram/commit/d818b8518ce676361e3d694ff9b14ec86cb7e31c">d818b8518ce676361e3d694ff9b14ec86cb7e31c</a>
fixup! ci: use woodpecker

<a href="https://codeberg.org/slidge/slidgram/commit/2e52e2170caeb1a2ac28635dd766e32a79dcbae9">2e52e2170caeb1a2ac28635dd766e32a79dcbae9</a>
chore: update lockfile

<a href="https://codeberg.org/slidge/slidgram/commit/31d0ee7595b08be34255add47e2b569ba1b05ac4">31d0ee7595b08be34255add47e2b569ba1b05ac4</a>
fixup! ci: use woodpecker

<a href="https://codeberg.org/slidge/slidgram/commit/e8530a185c5a783b1a98a3183326b1954f92997b">e8530a185c5a783b1a98a3183326b1954f92997b</a>
chore: update lockfile

<a href="https://codeberg.org/slidge/slidgram/commit/acf27d0ca32c4e193451fcb5025db0e9820380f8">acf27d0ca32c4e193451fcb5025db0e9820380f8</a>
ci: use woodpecker</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidgram/commit/d818b8518ce676361e3d694ff9b14ec86cb7e31c" rel="nofollow">d818b8518ce676361e3d694ff9b14ec86cb7e31c</a> fixup! ci: use woodpecker <a href="https://codeberg.org/slidge/slidgram/commit/2e52e2170caeb1a2ac28635dd766e32a79dcbae9" rel="nofollow">2e52e2170caeb1a2ac28635dd766e32a79dcbae9</a> chore: update lockfile <a href="https://codeberg.org/slidge/slidgram/commit/31d0ee7595b08be34255add47e2b569ba1b05ac4" rel="nofollow">31d0ee7595b08be34255add47e2b569ba1b05ac4</a> fixup! ci: use woodpecker <a href="https://codeberg.org/slidge/slidgram/commit/e8530a185c5a783b1a98a3183326b1954f92997b" rel="nofollow">e8530a185c5a783b1a98a3183326b1954f92997b</a> chore: update lockfile <a href="https://codeberg.org/slidge/slidgram/commit/acf27d0ca32c4e193451fcb5025db0e9820380f8" rel="nofollow">acf27d0ca32c4e193451fcb5025db0e9820380f8</a> ci: use woodpecker]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22099034: /slidge/slidgram/compare/2dfc9cc3916e91cf1db677771bc1a41ba55f50aa...d818b8518ce676361e3d694ff9b14ec86cb7e31c</guid> <pubDate>Thu, 16 Jan 2025 11:49:45 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>/slidge/slidge/compare/f2700e77b26f3a1391a3bcecc0db758398b9db73...9440989ef8c9b751eb4153f1e20e55627f8f548e</link> <description><a href="https://codeberg.org/slidge/slidge/commit/9440989ef8c9b751eb4153f1e20e55627f8f548e">9440989ef8c9b751eb4153f1e20e55627f8f548e</a>
docs: readme: freshen up

<a href="https://codeberg.org/slidge/slidge/commit/43ea9bf36f1d74e09154e0a9d46e5f67e778fb74">43ea9bf36f1d74e09154e0a9d46e5f67e778fb74</a>
ci: factorisation, cron jobs, manual pipelines</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/9440989ef8c9b751eb4153f1e20e55627f8f548e" rel="nofollow">9440989ef8c9b751eb4153f1e20e55627f8f548e</a> docs: readme: freshen up <a href="https://codeberg.org/slidge/slidge/commit/43ea9bf36f1d74e09154e0a9d46e5f67e778fb74" rel="nofollow">43ea9bf36f1d74e09154e0a9d46e5f67e778fb74</a> ci: factorisation, cron jobs, manual pipelines]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22097690: /slidge/slidge/compare/f2700e77b26f3a1391a3bcecc0db758398b9db73...9440989ef8c9b751eb4153f1e20e55627f8f548e</guid> <pubDate>Thu, 16 Jan 2025 10:42:40 +0000</pubDate> </item> <item> <title>nicoco deleted branch buildx from slidge/slidge</title> <link>https://codeberg.org/slidge/slidge</link> <description></description> <author>nicoco</author> <guid isPermaLink="false">22096886: https://codeberg.org/slidge/slidge</guid> <pubDate>Thu, 16 Jan 2025 10:13:13 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/f2700e77b26f3a1391a3bcecc0db758398b9db73</link> <description><a href="https://codeberg.org/slidge/slidge/commit/f2700e77b26f3a1391a3bcecc0db758398b9db73">f2700e77b26f3a1391a3bcecc0db758398b9db73</a>
ci: cache virtualenv; factorisation</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/f2700e77b26f3a1391a3bcecc0db758398b9db73" rel="nofollow">f2700e77b26f3a1391a3bcecc0db758398b9db73</a> ci: cache virtualenv; factorisation]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22096805: https://codeberg.org/slidge/slidge/commit/f2700e77b26f3a1391a3bcecc0db758398b9db73</guid> <pubDate>Thu, 16 Jan 2025 10:08:14 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/b25334774b74b5d88572694a10ecf451282639b4</link> <description><a href="https://codeberg.org/slidge/slidge/commit/b25334774b74b5d88572694a10ecf451282639b4">b25334774b74b5d88572694a10ecf451282639b4</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/b25334774b74b5d88572694a10ecf451282639b4" rel="nofollow">b25334774b74b5d88572694a10ecf451282639b4</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22096514: https://codeberg.org/slidge/slidge/commit/b25334774b74b5d88572694a10ecf451282639b4</guid> <pubDate>Thu, 16 Jan 2025 09:51:06 +0000</pubDate> </item> <item> <title>c3p0-slidge pushed to main at slidge/pages</title> <link>https://codeberg.org/slidge/pages/commit/4688fe65212fee04717f4b466185ba05ac0ccba0</link> <description><a href="https://codeberg.org/slidge/pages/commit/4688fe65212fee04717f4b466185ba05ac0ccba0">4688fe65212fee04717f4b466185ba05ac0ccba0</a>
deploy docs for 03adac6ec948d70934756626ce9183b9321523dc</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/pages/commit/4688fe65212fee04717f4b466185ba05ac0ccba0" rel="nofollow">4688fe65212fee04717f4b466185ba05ac0ccba0</a> deploy docs for 03adac6ec948d70934756626ce9183b9321523dc]]></content:encoded> <author>c3p0-slidge</author> <guid isPermaLink="false">22096350: https://codeberg.org/slidge/pages/commit/4688fe65212fee04717f4b466185ba05ac0ccba0</guid> <pubDate>Thu, 16 Jan 2025 09:40:36 +0000</pubDate> </item> <item> <title>c3p0-slidge pushed to main at slidge/pages</title> <link>https://codeberg.org/slidge/pages/commit/c9ae413a9966ff51af5d4d4281e74001a1e8677d</link> <description><a href="https://codeberg.org/slidge/pages/commit/c9ae413a9966ff51af5d4d4281e74001a1e8677d">c9ae413a9966ff51af5d4d4281e74001a1e8677d</a>
deploy docs for 03adac6ec948d70934756626ce9183b9321523dc</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/pages/commit/c9ae413a9966ff51af5d4d4281e74001a1e8677d" rel="nofollow">c9ae413a9966ff51af5d4d4281e74001a1e8677d</a> deploy docs for 03adac6ec948d70934756626ce9183b9321523dc]]></content:encoded> <author>c3p0-slidge</author> <guid isPermaLink="false">22096294: https://codeberg.org/slidge/pages/commit/c9ae413a9966ff51af5d4d4281e74001a1e8677d</guid> <pubDate>Thu, 16 Jan 2025 09:38:07 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/03adac6ec948d70934756626ce9183b9321523dc</link> <description><a href="https://codeberg.org/slidge/slidge/commit/03adac6ec948d70934756626ce9183b9321523dc">03adac6ec948d70934756626ce9183b9321523dc</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/03adac6ec948d70934756626ce9183b9321523dc" rel="nofollow">03adac6ec948d70934756626ce9183b9321523dc</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22096251: https://codeberg.org/slidge/slidge/commit/03adac6ec948d70934756626ce9183b9321523dc</guid> <pubDate>Thu, 16 Jan 2025 09:36:07 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/6e945b3eae118271d19c5d94aa1bdbe8006b0267</link> <description><a href="https://codeberg.org/slidge/slidge/commit/6e945b3eae118271d19c5d94aa1bdbe8006b0267">6e945b3eae118271d19c5d94aa1bdbe8006b0267</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/6e945b3eae118271d19c5d94aa1bdbe8006b0267" rel="nofollow">6e945b3eae118271d19c5d94aa1bdbe8006b0267</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22095628: https://codeberg.org/slidge/slidge/commit/6e945b3eae118271d19c5d94aa1bdbe8006b0267</guid> <pubDate>Thu, 16 Jan 2025 09:17:04 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/e27df12d6d6a950c4d6ba28c568f6d45fb7456ea</link> <description><a href="https://codeberg.org/slidge/slidge/commit/e27df12d6d6a950c4d6ba28c568f6d45fb7456ea">e27df12d6d6a950c4d6ba28c568f6d45fb7456ea</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/e27df12d6d6a950c4d6ba28c568f6d45fb7456ea" rel="nofollow">e27df12d6d6a950c4d6ba28c568f6d45fb7456ea</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22095366: https://codeberg.org/slidge/slidge/commit/e27df12d6d6a950c4d6ba28c568f6d45fb7456ea</guid> <pubDate>Thu, 16 Jan 2025 09:02:26 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/f2c028957dbf2447ae54a0e7d9e94b7145d856d1</link> <description><a href="https://codeberg.org/slidge/slidge/commit/f2c028957dbf2447ae54a0e7d9e94b7145d856d1">f2c028957dbf2447ae54a0e7d9e94b7145d856d1</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/f2c028957dbf2447ae54a0e7d9e94b7145d856d1" rel="nofollow">f2c028957dbf2447ae54a0e7d9e94b7145d856d1</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22094639: https://codeberg.org/slidge/slidge/commit/f2c028957dbf2447ae54a0e7d9e94b7145d856d1</guid> <pubDate>Thu, 16 Jan 2025 08:34:20 +0000</pubDate> </item> <item> <title>nicoco pushed to buildx at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/6c6a79b6b74c684585fca23910d29859253741e4</link> <description><a href="https://codeberg.org/slidge/slidge/commit/6c6a79b6b74c684585fca23910d29859253741e4">6c6a79b6b74c684585fca23910d29859253741e4</a>
ci: fix auth</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/6c6a79b6b74c684585fca23910d29859253741e4" rel="nofollow">6c6a79b6b74c684585fca23910d29859253741e4</a> ci: fix auth]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22094450: https://codeberg.org/slidge/slidge/commit/6c6a79b6b74c684585fca23910d29859253741e4</guid> <pubDate>Thu, 16 Jan 2025 08:26:14 +0000</pubDate> </item> <item> <title>nicoco pushed to buildx at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/af5cb61652c159ea382a3df7cc0711df82e2c6f3</link> <description><a href="https://codeberg.org/slidge/slidge/commit/af5cb61652c159ea382a3df7cc0711df82e2c6f3">af5cb61652c159ea382a3df7cc0711df82e2c6f3</a>
ci: just build all the time</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/af5cb61652c159ea382a3df7cc0711df82e2c6f3" rel="nofollow">af5cb61652c159ea382a3df7cc0711df82e2c6f3</a> ci: just build all the time]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22094328: https://codeberg.org/slidge/slidge/commit/af5cb61652c159ea382a3df7cc0711df82e2c6f3</guid> <pubDate>Thu, 16 Jan 2025 08:18:02 +0000</pubDate> </item> <item> <title>nicoco pushed to buildx at slidge/slidge</title> <link>/slidge/slidge/compare/6e77ed7510a1dfd23f35b81affc90ded895515e6...3efecf7655b24623a122170b872782ac9cab9344</link> <description><a href="https://codeberg.org/slidge/slidge/commit/3efecf7655b24623a122170b872782ac9cab9344">3efecf7655b24623a122170b872782ac9cab9344</a>
feat: allow multiple values for --cache-from

<a href="https://codeberg.org/slidge/slidge/commit/d689954ee5afee840d9c3ccb37eeb434c5554325">d689954ee5afee840d9c3ccb37eeb434c5554325</a>
chore(deps): update docker.io/mstruebing/editorconfig-checker docker tag to v3.1.2

<a href="https://codeberg.org/slidge/slidge/commit/3e6c614b92c907987cf50029eb4512dba44dadd2">3e6c614b92c907987cf50029eb4512dba44dadd2</a>
fix(deps): update module github.com/go-git/go-git/v5 to v5.13.1

<a href="https://codeberg.org/slidge/slidge/commit/9ff0fa678dccd7fc4be7cace72073b8d5fefd60a">9ff0fa678dccd7fc4be7cace72073b8d5fefd60a</a>
chore(deps): update davidanson/markdownlint-cli2 docker tag to v0.17.1

<a href="https://codeberg.org/slidge/slidge/commit/c8666a5831ecafa5c60450128f459191cd94c88a">c8666a5831ecafa5c60450128f459191cd94c88a</a>
fix(deps): update module github.com/go-git/go-git/v5 to v5.13.0</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/3efecf7655b24623a122170b872782ac9cab9344" rel="nofollow">3efecf7655b24623a122170b872782ac9cab9344</a> feat: allow multiple values for --cache-from <a href="https://codeberg.org/slidge/slidge/commit/d689954ee5afee840d9c3ccb37eeb434c5554325" rel="nofollow">d689954ee5afee840d9c3ccb37eeb434c5554325</a> chore(deps): update docker.io/mstruebing/editorconfig-checker docker tag to v3.1.2 <a href="https://codeberg.org/slidge/slidge/commit/3e6c614b92c907987cf50029eb4512dba44dadd2" rel="nofollow">3e6c614b92c907987cf50029eb4512dba44dadd2</a> fix(deps): update module github.com/go-git/go-git/v5 to v5.13.1 <a href="https://codeberg.org/slidge/slidge/commit/9ff0fa678dccd7fc4be7cace72073b8d5fefd60a" rel="nofollow">9ff0fa678dccd7fc4be7cace72073b8d5fefd60a</a> chore(deps): update davidanson/markdownlint-cli2 docker tag to v0.17.1 <a href="https://codeberg.org/slidge/slidge/commit/c8666a5831ecafa5c60450128f459191cd94c88a" rel="nofollow">c8666a5831ecafa5c60450128f459191cd94c88a</a> fix(deps): update module github.com/go-git/go-git/v5 to v5.13.0]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22094312: /slidge/slidge/compare/6e77ed7510a1dfd23f35b81affc90ded895515e6...3efecf7655b24623a122170b872782ac9cab9344</guid> <pubDate>Thu, 16 Jan 2025 08:16:32 +0000</pubDate> </item> <item> <title>nicoco created branch buildx in slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/src/branch/buildx</link> <description></description> <author>nicoco</author> <guid isPermaLink="false">22094307: https://codeberg.org/slidge/slidge/src/branch/buildx</guid> <pubDate>Thu, 16 Jan 2025 08:16:31 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/97a2c6d48ec1fc2fd085c3e4ff49ac60a17a76f9</link> <description><a href="https://codeberg.org/slidge/slidge/commit/97a2c6d48ec1fc2fd085c3e4ff49ac60a17a76f9">97a2c6d48ec1fc2fd085c3e4ff49ac60a17a76f9</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/97a2c6d48ec1fc2fd085c3e4ff49ac60a17a76f9" rel="nofollow">97a2c6d48ec1fc2fd085c3e4ff49ac60a17a76f9</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22077338: https://codeberg.org/slidge/slidge/commit/97a2c6d48ec1fc2fd085c3e4ff49ac60a17a76f9</guid> <pubDate>Wed, 15 Jan 2025 21:03:37 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/3100ed625b7c10eac11161b0aa89f8947ed93df9</link> <description><a href="https://codeberg.org/slidge/slidge/commit/3100ed625b7c10eac11161b0aa89f8947ed93df9">3100ed625b7c10eac11161b0aa89f8947ed93df9</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/3100ed625b7c10eac11161b0aa89f8947ed93df9" rel="nofollow">3100ed625b7c10eac11161b0aa89f8947ed93df9</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22077169: https://codeberg.org/slidge/slidge/commit/3100ed625b7c10eac11161b0aa89f8947ed93df9</guid> <pubDate>Wed, 15 Jan 2025 20:57:50 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/f1b58dc97cd7ecef06d4a37466021854ff32d801</link> <description><a href="https://codeberg.org/slidge/slidge/commit/f1b58dc97cd7ecef06d4a37466021854ff32d801">f1b58dc97cd7ecef06d4a37466021854ff32d801</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/f1b58dc97cd7ecef06d4a37466021854ff32d801" rel="nofollow">f1b58dc97cd7ecef06d4a37466021854ff32d801</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22076086: https://codeberg.org/slidge/slidge/commit/f1b58dc97cd7ecef06d4a37466021854ff32d801</guid> <pubDate>Wed, 15 Jan 2025 20:22:45 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/c3445fd943872f214535621e901aaa364ed7f195</link> <description><a href="https://codeberg.org/slidge/slidge/commit/c3445fd943872f214535621e901aaa364ed7f195">c3445fd943872f214535621e901aaa364ed7f195</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/c3445fd943872f214535621e901aaa364ed7f195" rel="nofollow">c3445fd943872f214535621e901aaa364ed7f195</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22075973: https://codeberg.org/slidge/slidge/commit/c3445fd943872f214535621e901aaa364ed7f195</guid> <pubDate>Wed, 15 Jan 2025 20:15:09 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/ff2e19117bc440b1de05acc78a4c6f0c6f072262</link> <description><a href="https://codeberg.org/slidge/slidge/commit/ff2e19117bc440b1de05acc78a4c6f0c6f072262">ff2e19117bc440b1de05acc78a4c6f0c6f072262</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/ff2e19117bc440b1de05acc78a4c6f0c6f072262" rel="nofollow">ff2e19117bc440b1de05acc78a4c6f0c6f072262</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22075651: https://codeberg.org/slidge/slidge/commit/ff2e19117bc440b1de05acc78a4c6f0c6f072262</guid> <pubDate>Wed, 15 Jan 2025 19:59:07 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/c18cdbb3238b81ba30b259c5e31de843e0014d6f</link> <description><a href="https://codeberg.org/slidge/slidge/commit/c18cdbb3238b81ba30b259c5e31de843e0014d6f">c18cdbb3238b81ba30b259c5e31de843e0014d6f</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/c18cdbb3238b81ba30b259c5e31de843e0014d6f" rel="nofollow">c18cdbb3238b81ba30b259c5e31de843e0014d6f</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22075168: https://codeberg.org/slidge/slidge/commit/c18cdbb3238b81ba30b259c5e31de843e0014d6f</guid> <pubDate>Wed, 15 Jan 2025 19:45:33 +0000</pubDate> </item> <item> <title>c3p0-slidge pushed to main at slidge/pages</title> <link>https://codeberg.org/slidge/pages/commit/40966a722929d092bb3eebc4729dfa73d47fde6d</link> <description><a href="https://codeberg.org/slidge/pages/commit/40966a722929d092bb3eebc4729dfa73d47fde6d">40966a722929d092bb3eebc4729dfa73d47fde6d</a>
deploy docs for dfa0cd369d50fac8a4afb121a0a84dd43b310da7</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/pages/commit/40966a722929d092bb3eebc4729dfa73d47fde6d" rel="nofollow">40966a722929d092bb3eebc4729dfa73d47fde6d</a> deploy docs for dfa0cd369d50fac8a4afb121a0a84dd43b310da7]]></content:encoded> <author>c3p0-slidge</author> <guid isPermaLink="false">22068872: https://codeberg.org/slidge/pages/commit/40966a722929d092bb3eebc4729dfa73d47fde6d</guid> <pubDate>Wed, 15 Jan 2025 15:54:01 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/dfa0cd369d50fac8a4afb121a0a84dd43b310da7</link> <description><a href="https://codeberg.org/slidge/slidge/commit/dfa0cd369d50fac8a4afb121a0a84dd43b310da7">dfa0cd369d50fac8a4afb121a0a84dd43b310da7</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/dfa0cd369d50fac8a4afb121a0a84dd43b310da7" rel="nofollow">dfa0cd369d50fac8a4afb121a0a84dd43b310da7</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22063456: https://codeberg.org/slidge/slidge/commit/dfa0cd369d50fac8a4afb121a0a84dd43b310da7</guid> <pubDate>Wed, 15 Jan 2025 14:27:05 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/3686603bae3b714f831e11714e0774707c26562b</link> <description><a href="https://codeberg.org/slidge/slidge/commit/3686603bae3b714f831e11714e0774707c26562b">3686603bae3b714f831e11714e0774707c26562b</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/3686603bae3b714f831e11714e0774707c26562b" rel="nofollow">3686603bae3b714f831e11714e0774707c26562b</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22063164: https://codeberg.org/slidge/slidge/commit/3686603bae3b714f831e11714e0774707c26562b</guid> <pubDate>Wed, 15 Jan 2025 14:23:05 +0000</pubDate> </item> <item> <title>nicoco pushed to dev at slidge/slidge</title> <link>https://codeberg.org/slidge/slidge/commit/c6387ee4f1303de3cc3d1d1d0857c9062cbae795</link> <description><a href="https://codeberg.org/slidge/slidge/commit/c6387ee4f1303de3cc3d1d1d0857c9062cbae795">c6387ee4f1303de3cc3d1d1d0857c9062cbae795</a>
fixup! ci</description> <content:encoded><![CDATA[<a href="https://codeberg.org/slidge/slidge/commit/c6387ee4f1303de3cc3d1d1d0857c9062cbae795" rel="nofollow">c6387ee4f1303de3cc3d1d1d0857c9062cbae795</a> fixup! ci]]></content:encoded> <author>nicoco</author> <guid isPermaLink="false">22063114: https://codeberg.org/slidge/slidge/commit/c6387ee4f1303de3cc3d1d1d0857c9062cbae795</guid> <pubDate>Wed, 15 Jan 2025 14:20:08 +0000</pubDate> </item> </channel> </rss>
