Skip to content

Instantly share code, notes, and snippets.

@shawnchin
shawnchin / muc_owner_allow_kick.patch
Created Dec 14, 2021
muc_owner_allow_kick.patch for prosody 0.11.10
View muc_owner_allow_kick.patch
--- muc.lib.lua 2021-12-14 19:48:43.195680418 +0000
+++ muc.lib.lua 2021-12-14 20:01:22.865824156 +0000
@@ -1390,15 +1390,16 @@
if actor == true then
actor = nil -- So we can pass it safely to 'publicise_occupant_status' below
else
+ local actor_affiliation = self:get_affiliation(actor);
+
-- Can't do anything to other owners or admins
local occupant_affiliation = self:get_affiliation(occupant.bare_jid);
@shawnchin
shawnchin / mod_close_on_mod_leave.lua
Last active Dec 14, 2021
Jisi Prosody plugin to close room when last moderator leaves
View mod_close_on_mod_leave.lua
--- Jitsi prosody module to delete room after all moderators left room.
--- Installation:
--- 1. Download this script to the Prosody plugins folder (/usr/share/jitsi-meet/prosody-plugins/)
--- 2. Enable module in your prosody config. E.g.
---
--- Component "conference.meet.mydomain.com" "muc"
--- modules_enabled = {
--- ...
--- ...
--- "close_on_mod_leave";
View mod_muc_per_room_max_occupants.lua
local jid = require("util.jid")
local is_healthcheck_room = module:require 'util'.is_healthcheck_room;
local max_occupants_for_room = module:get_option("max_occupants_for_room", {});
if next(max_occupants_for_room) ~= nil then
module:hook("muc-room-created", function(event)
local room = event.room;
@shawnchin
shawnchin / body.html
Last active Sep 8, 2021
Jitsi Prejoin Page -- inject email input field
View body.html
<script>
const INCLUDE_LABEL = false; // "false" to match new prejoin page UX, "true" to match jitsi meet 6173 or earlier
function getLocallyStoredEmail() {
// loads email from localStorage so we can pre-populate with email users set before
const settings = JSON.parse(window.localStorage.getItem('features/base/settings') || '{}');
return settings.email || ''
}
function injectEmailInputsToPrejoinForm(formContainer) {
@shawnchin
shawnchin / mod_event_sync_component.lua
Last active Jul 8, 2021
Jitsi prosody component to POST to external API on room/occupant events
View mod_event_sync_component.lua
--- Component to trigger an HTTP POST call on room/occupant events
--
-- Example config:
--
-- Component "event_sync.mydomain.com" "event_sync_component"
-- muc_component = "conference.mydomain.com"
--
-- api_prefix = "http://external_app.mydomain.com/api"
--
-- --- The following are all optional
@shawnchin
shawnchin / mod_frozen_nick.lua
Created Jun 9, 2021
Jitsi prosody plugin to stop users from changing display name if name provided by JWT
View mod_frozen_nick.lua
--- Stop users from changing nick (display name) if name is provided provided by jisi_meet_context_user
-- For all received presence messages, if jitsi_meet_context_user.name value is set in the session, then we simply
-- override nick with that value.
function on_message(event)
if event and event["stanza"] then
if event.origin and event.origin.jitsi_meet_context_user then
local name = event.origin.jitsi_meet_context_user['name'];
View coin_change.py
# https://www.hackerrank.com/challenges/coin-change/problem
def cc_dp(target, coins):
current = [0] * (target + 1)
current[0] = 1
prev = current[:]
for c in coins:
for t in xrange(target + 1):
View palette_pubu.py
colours = [(255.0, 245.0, 250.0),
(255.0, 244.0, 253.0),
(253.0, 244.0, 255.0),
(249.0, 244.0, 255.0),
(244.0, 243.0, 255.0),
(243.0, 245.0, 255.0),
(242.0, 249.0, 255.0),
(242.0, 253.0, 254.0),
(242.0, 254.0, 251.0),
(241.0, 254.0, 246.0),
View index.html
<html>
<head>
<meta http-equiv="refresh" content="60" />
<!--link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" -->
<!-- link href="picwall.css" rel="stylesheet" /-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/3.3.1/masonry.pkgd.min.js"></script>
<!--script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script-->
<!--script src="picwall.js"></script-->