Homeserver matrix.isaacstuff.com
Web Client synchra.isaacstuff.com
Directory Room #synchra-bridges
G

Google Messages

SMS/RCS through Google Messages for web.

Bot
@gmessagesbot:matrix.isaacstuff.com
Start
login google
Open Bot
M

Meta

Facebook, Messenger, and Instagram through mautrix-meta.

Bot
@metabot:matrix.isaacstuff.com
Start
login facebook, login messenger, or login instagram
Open Bot
S

Signal

Linked-device QR flow from the Signal mobile app.

Bot
@signalbot:matrix.isaacstuff.com
Start
login
Open Bot
L

Slack

Workspace login with token plus browser cookie.

Bot
@slackbot:matrix.isaacstuff.com
Start
login-token <xoxc-token> <d-cookie>
Open Bot
D

Discord

Discord DMs, servers, channels, replies, reactions, and media.

Bot
@discordbot:matrix.isaacstuff.com
Start
login
Open Bot
C

Google Chat

Google Chat spaces, DMs, threads, reactions, read receipts, and media.

Bot
@googlechatbot:matrix.isaacstuff.com
Start
login
Open Bot
U

GroupMe

GroupMe groups and DMs through the Beeper GroupMe bridge.

Bot
@groupmebot:matrix.isaacstuff.com
Start
login
Open Bot

Browser Tools

Console helpers

Google Messages login

Use a private window. Open DevTools Network, reload messages.google.com/web/config, then copy the /web/config request as cURL and paste it to the bot.

(() => {
  const cookies = Object.fromEntries(document.cookie.split(/;\s*/).filter(Boolean).map(c => {
    const i = c.indexOf("=");
    return [decodeURIComponent(c.slice(0, i)), decodeURIComponent(c.slice(i + 1))];
  }));
  const out = JSON.stringify(cookies, null, 2);
  console.log(out);
  copy(out);
  return out;
})()

Meta readable cookies

JavaScript cannot read HttpOnly cookies like xs. If they are missing, copy a Messenger/Facebook graphql request as cURL.

(() => {
  const wanted = ["datr", "c_user", "sb", "xs", "sessionid", "csrftoken", "mid", "ig_did", "ds_user_id"];
  const cookies = Object.fromEntries(document.cookie.split(/;\s*/).filter(Boolean).map(c => {
    const i = c.indexOf("=");
    return [decodeURIComponent(c.slice(0, i)), decodeURIComponent(c.slice(i + 1))];
  }).filter(([key]) => wanted.includes(key)));
  const missing = wanted.filter(key => !(key in cookies));
  const out = JSON.stringify(cookies, null, 2);
  console.log("Copied cookies:", out);
  console.log("Missing, possibly HttpOnly:", missing.join(", ") || "none");
  copy(out);
  return out;
})()

Slack login-token command

Run inside the Slack web client after opening the workspace.

(() => {
  const cfg = JSON.parse(localStorage.localConfig_v2 || "{}");
  const teamId = location.pathname.match(/^\/client\/([A-Z0-9]+)/)?.[1] || Object.keys(cfg.teams || {})[0];
  const token = cfg.teams?.[teamId]?.token;
  const cookie = document.cookie.match(/(?:^|;\s*)d=([^;]+)/)?.[1];
  const command = `login-token ${token || "<missing-xoxc-token>"} ${cookie || "<missing-d-cookie>"}`;
  console.log(command);
  copy(command);
  return command;
})()

Admin

Invite users

Create a private Matrix account and send the printed login block to the new user.

Current server ssh -i ~/.ssh/syncra_deploy_ed25519 -p 2206 [email protected] '/opt/synchra/scripts/invite-user.sh alex'
HTTP target 192.168.3.106:8093