summary refs log tree commit diff
path: root/etc
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-08-17 14:35:03 -0400
committerJune McEnroe <june@causal.agency>2018-08-17 14:35:03 -0400
commit33409e7498923a56aed290d933ea5401085556ec (patch)
treefd33e8f9f8d4cc8118746034c6aab518c03afca7 /etc
parentRemove zshrc (diff)
downloadsrc-33409e7498923a56aed290d933ea5401085556ec.tar.gz
src-33409e7498923a56aed290d933ea5401085556ec.zip
Add gitea2mastodon CGI script
If you're seeing this on Mastodon, it works.
Diffstat (limited to 'etc')
-rwxr-xr-xetc/gitea2mastodon.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/etc/gitea2mastodon.rb b/etc/gitea2mastodon.rb
new file mode 100755
index 00000000..d2eaafd0
--- /dev/null
+++ b/etc/gitea2mastodon.rb
@@ -0,0 +1,33 @@
+#!/usr/bin/env ruby
+require 'cgi'
+require 'json'
+require 'mastodon'
+
+require_relative 'secret'
+
+cgi = CGI.new
+begin
+	payload = JSON.parse(cgi.params['payload'].first)
+rescue
+	cgi.out('status' => 'BAD_REQUEST', 'type' => 'text/plain') { 'bad' }
+	exit
+end
+if payload['secret'] != GITEA_SECRET
+	cgi.out('status' => 'FORBIDDEN', 'type' => 'text/plain') { 'no' }
+	exit
+end
+
+client = Mastodon::REST::Client.new(
+	base_url: MASTODON_URL,
+	bearer_token: MASTODON_TOKEN,
+)
+
+payload['commits'].reverse.each do |commit|
+	message = commit['message']
+		.split("\n\n")
+		.map {|p| p.split("\n").join(' ') }
+		.join("\n")
+	client.create_status("🚽 #{message}\n#{commit['url']}")
+end
+
+cgi.out('text/plain') { 'ok' }
>June McEnroe 2019-10-28Lock save fileJune McEnroe 2019-10-28Add option to save and load ring contents across restartsJune McEnroe 2019-10-28Use "producer/consumer" consistently in ring codeJune McEnroe 2019-10-28Add quit message optionJune McEnroe 2019-10-28Specify when command is allowed in Handlers listJune McEnroe 2019-10-28Disallow PRIVMSG/NOTICE before registrationJune McEnroe 2019-10-28Move entire login flow to state and reorganize itJune McEnroe 2019-10-27Wait for SASL success before sending CAP ENDJune McEnroe Also refuse to continue logging in if SASL authentication fails. I should really just move all of log in and authentication from server.c to state.c... 2019-10-27Only increment consumer after successful sendJune McEnroe 2019-10-27Set SO_REUSEADDR on bindsJune McEnroe 2019-10-27Output ring info on SIGINFOJune McEnroe 2019-10-27Improve client/server error messagesJune McEnroe 2019-10-27Add reload cmd to rc scriptJune McEnroe Using daemon(8) makes this way more awkward than it should be. 2019-10-27Reload certificate on SIGUSR1June McEnroe 2019-10-27Drop clients on zero-length readsJune McEnroe 2019-10-27Explicitly tls_handshake new clientsJune McEnroe This prevents a client connecting, sending nothing, and getting blocked in tls_read immediately. 2019-10-26Document rationaleJune McEnroe 2019-10-26Handle nick collisionJune McEnroe 2019-10-26Wait for AUTHENTICATE + from serverJune McEnroe 2019-10-26Respond to PING with same parameterJune McEnroe 2019-10-26Add undocumented flag to disable verificationJune McEnroe 2019-10-26Do not require RPL_ISUPPORT for stateReadyJune McEnroe 2019-10-26Implement graceful shutdownJune McEnroe 2019-10-26Require PASS before USERJune McEnroe Prevent creating a ring consumer without authentication. 2019-10-26Track channel topicsJune McEnroe 2019-10-26Set AWAY when no clients are connectedJune McEnroe 2019-10-26Add flags to request TOPIC and NAMES on client connectJune McEnroe 2019-10-26OopsJune McEnroe 2019-10-26Disconnect client on unknown commandJune McEnroe During registration, no other commands should be sent. Afterwards, only intercepted commands will get parsed. 2019-10-26Allow reading sensitive information from filesJune McEnroe 2019-10-26Add rc scriptJune McEnroe 2019-10-25Add install and uninstall targetsJune McEnroe 2019-10-25Expand documentationJune McEnroe 2019-10-25Add AGPLv3 notice on client registrationJune McEnroe OwO 2019-10-25Rename project pounceJune McEnroe