ActivityPub Viewer

A small tool to view real-world ActivityPub objects as JSON! Enter a URL or username from Mastodon or a similar service below, and we'll send a request with the right Accept header to the server to view the underlying object.

Open in browser →
{ "@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "id": "https://snac.bsd.cafe/r1w1s1/p/1744940033.555056", "published": "2025-04-18T01:33:53Z", "attributedTo": "https://snac.bsd.cafe/r1w1s1", "summary": "", "content": "Comparing firewall syntax for SSH (port 22) with default-deny:<br>================================================<br><br><a href=\"https://snac.bsd.cafe?t=iptables\" class=\"mention hashtag\" rel=\"tag\">#iptables</a> (Linux)<br>iptables -A INPUT -p tcp --dport 22 -j ACCEPT<br>iptables -P INPUT DROP<br><br><a href=\"https://snac.bsd.cafe?t=nftables\" class=\"mention hashtag\" rel=\"tag\">#nftables</a> (Linux)<br>nft add rule inet my_filter input tcp dport 22 accept<br>nft add rule inet my_filter input drop<br><br><a href=\"https://snac.bsd.cafe?t=ufw\" class=\"mention hashtag\" rel=\"tag\">#ufw</a> (Linux - simplified frontend to iptables)<br>ufw allow 22/tcp<br>ufw default deny incoming<br><br><a href=\"https://snac.bsd.cafe?t=pf\" class=\"mention hashtag\" rel=\"tag\">#pf</a> (OpenBSD)<br>pass in proto tcp to port 22<br>block all<br><br>pf’s syntax feels so elegant, human-readable, & minimal!<br><br>After 20years scripting iptables, I’m ready to try UFW on my laptop.<br><a href=\"https://snac.bsd.cafe?t=firewall\" class=\"mention hashtag\" rel=\"tag\">#firewall</a> <a href=\"https://snac.bsd.cafe?t=sysadmin\" class=\"mention hashtag\" rel=\"tag\">#sysadmin</a> <a href=\"https://snac.bsd.cafe?t=pf\" class=\"mention hashtag\" rel=\"tag\">#pf</a> <a href=\"https://snac.bsd.cafe?t=iptables\" class=\"mention hashtag\" rel=\"tag\">#iptables</a> <a href=\"https://snac.bsd.cafe?t=ufw\" class=\"mention hashtag\" rel=\"tag\">#ufw</a> <a href=\"https://snac.bsd.cafe?t=nftables\" class=\"mention hashtag\" rel=\"tag\">#nftables</a><br>", "context": "https://snac.bsd.cafe/r1w1s1/p/1744940033.555056#ctxt", "url": "https://snac.bsd.cafe/r1w1s1/p/1744940033.555056", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [], "inReplyTo": null, "tag": [ { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=iptables", "name": "#iptables" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=nftables", "name": "#nftables" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=ufw", "name": "#ufw" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=pf", "name": "#pf" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=firewall", "name": "#firewall" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=sysadmin", "name": "#sysadmin" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=pf", "name": "#pf" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=iptables", "name": "#iptables" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=ufw", "name": "#ufw" }, { "type": "Hashtag", "href": "https://snac.bsd.cafe?t=nftables", "name": "#nftables" } ], "sourceContent": "Comparing firewall syntax for SSH (port 22) with default-deny:\n================================================\n\n#iptables (Linux)\niptables -A INPUT -p tcp --dport 22 -j ACCEPT\niptables -P INPUT DROP\n\n#nftables (Linux)\nnft add rule inet my_filter input tcp dport 22 accept\nnft add rule inet my_filter input drop\n\n#ufw (Linux - simplified frontend to iptables)\nufw allow 22/tcp\nufw default deny incoming\n\n#pf (OpenBSD)\npass in proto tcp to port 22\nblock all\n\npf’s syntax feels so elegant, human-readable, & minimal!\n\nAfter 20years scripting iptables, I’m ready to try UFW on my laptop. \n#firewall #sysadmin #pf #iptables #ufw #nftables", "updated": "2025-04-18T02:02:49Z" }