open-source, lexicon-agnostic PDS for AI agents. welcome-mat enrollment, AT Proto federation.
agents atprotocol pds cloudflare
0

Configure Feed

Select the types of activity you want to include in your feed.

rookery / src / handle-policy.ts
5.2 kB 392 lines
1// SPDX-License-Identifier: MIT 2// Copyright (c) 2026 sol pbc 3 4/** 5 * Handle blocklist sections: a = infrastructure/phishing-shaped, 6 * b = impersonation/authority, c = offensive. Exact-match on the 7 * whole lowercase name label only; no substring, leetspeak, homoglyph, 8 * or Unicode normalization. 9 */ 10export const BLOCKLIST_INFRASTRUCTURE: readonly string[] = [ 11 "abuse", 12 "access", 13 "account", 14 "accounts", 15 "admin", 16 "administration", 17 "administrator", 18 "administrators", 19 "admins", 20 "alert", 21 "alerts", 22 "alpha", 23 "analytics", 24 "anon", 25 "anonymous", 26 "api", 27 "apis", 28 "app", 29 "apps", 30 "assets", 31 "atom", 32 "auth", 33 "authentication", 34 "authorize", 35 "autoconfig", 36 "autodiscover", 37 "backup", 38 "beta", 39 "billing", 40 "blog", 41 "bot", 42 "bots", 43 "cache", 44 "calendar", 45 "captcha", 46 "cdn", 47 "cgi", 48 "cgi-bin", 49 "chat", 50 "checkout", 51 "client", 52 "clients", 53 "cloud", 54 "cms", 55 "config", 56 "configuration", 57 "connect", 58 "console", 59 "contact", 60 "contacts", 61 "contactus", 62 "copyright", 63 "cpanel", 64 "dashboard", 65 "demo", 66 "dev", 67 "devel", 68 "developer", 69 "developers", 70 "dmca", 71 "dns", 72 "docs", 73 "documentation", 74 "domain", 75 "domains", 76 "download", 77 "downloads", 78 "email", 79 "enterprise", 80 "error", 81 "errors", 82 "example", 83 "faq", 84 "faqs", 85 "feed", 86 "feedback", 87 "feeds", 88 "files", 89 "forgot", 90 "forum", 91 "forums", 92 "ftp", 93 "graphql", 94 "guest", 95 "guests", 96 "handle", 97 "help", 98 "home", 99 "homepage", 100 "host", 101 "hosting", 102 "hostmaster", 103 "hostname", 104 "http", 105 "httpd", 106 "https", 107 "imap", 108 "inbox", 109 "index", 110 "info", 111 "information", 112 "internal", 113 "intranet", 114 "invite", 115 "invites", 116 "invoice", 117 "invoices", 118 "json", 119 "knot", 120 "legal", 121 "lex", 122 "lexicon", 123 "local", 124 "localhost", 125 "login", 126 "logout", 127 "logs", 128 "mail", 129 "mailer", 130 "mailer-daemon", 131 "mailerdaemon", 132 "maintenance", 133 "member", 134 "members", 135 "message", 136 "messages", 137 "metrics", 138 "network", 139 "news", 140 "newsletter", 141 "no-reply", 142 "nobody", 143 "noc", 144 "noreply", 145 "notification", 146 "notifications", 147 "ns1", 148 "ns2", 149 "ns3", 150 "ns4", 151 "nsid", 152 "oauth", 153 "oauth2", 154 "openid", 155 "order", 156 "orders", 157 "panel", 158 "passwd", 159 "password", 160 "pay", 161 "payment", 162 "payments", 163 "pds", 164 "phpmyadmin", 165 "policies", 166 "policy", 167 "pop3", 168 "portal", 169 "postfix", 170 "postmaster", 171 "press", 172 "pricing", 173 "privacy", 174 "private", 175 "prod", 176 "production", 177 "profile", 178 "profiles", 179 "proxy", 180 "public", 181 "register", 182 "registration", 183 "repo", 184 "reset", 185 "root", 186 "rss", 187 "sales", 188 "sandbox", 189 "sdk", 190 "search", 191 "secure", 192 "security", 193 "server", 194 "servers", 195 "service", 196 "services", 197 "session", 198 "sessions", 199 "settings", 200 "setup", 201 "signin", 202 "signout", 203 "signup", 204 "site", 205 "sitemap", 206 "smtp", 207 "sql", 208 "ssh", 209 "ssl", 210 "ssladmin", 211 "sso", 212 "stage", 213 "staging", 214 "static", 215 "statistics", 216 "stats", 217 "status", 218 "store", 219 "subdomain", 220 "subscribe", 221 "sudo", 222 "superuser", 223 "sync", 224 "sysadmin", 225 "system", 226 "telnet", 227 "terms", 228 "test", 229 "testing", 230 "tests", 231 "tid", 232 "tos", 233 "unsubscribe", 234 "update", 235 "updates", 236 "upgrade", 237 "upload", 238 "uploads", 239 "user", 240 "username", 241 "usernames", 242 "users", 243 "verify", 244 "vpn", 245 "webhook", 246 "webhooks", 247 "webmail", 248 "webmaster", 249 "webmasters", 250 "website", 251 "whois", 252 "wiki", 253 "wpad", 254 "www", 255 "www1", 256 "www2", 257 "wwww", 258 "xml", 259 "xrpc", 260]; 261 262export const BLOCKLIST_IMPERSONATION: readonly string[] = [ 263 "aerie", 264 "aha", 265 "atp", 266 "atproto", 267 "atprotocol", 268 "bluesky", 269 "bsky", 270 "ceo", 271 "cfo", 272 "cio", 273 "clo", 274 "cmo", 275 "coo", 276 "cso", 277 "cto", 278 "cxo", 279 "did", 280 "didplc", 281 "extro", 282 "founder", 283 "founders", 284 "jer", 285 "jeremie", 286 "jeremie-miller", 287 "jeremiemiller", 288 "mod", 289 "moderator", 290 "moderators", 291 "mods", 292 "official", 293 "operator", 294 "owner", 295 "owners", 296 "plc", 297 "quartzjer", 298 "rook", 299 "rook-host", 300 "rookery", 301 "rookhost", 302 "rooks", 303 "sol", 304 "sol-pbc", 305 "solpbc", 306 "solstone", 307 "staff", 308 "support", 309 "team", 310 "teams", 311 "thermals", 312 "verified", 313 "vit", 314 "vpe", 315 "vpx", 316]; 317 318export const BLOCKLIST_OFFENSIVE: readonly string[] = [ 319 "arsehole", 320 "asshole", 321 "bastard", 322 "bastardo", 323 "beaner", 324 "beaners", 325 "bitch", 326 "bitches", 327 "bulldyke", 328 "coon", 329 "coons", 330 "cunt", 331 "darkie", 332 "daterape", 333 "fag", 334 "faggot", 335 "fuck", 336 "fuckin", 337 "fucking", 338 "fucktards", 339 "goatcx", 340 "goatse", 341 "honkey", 342 "incest", 343 "jailbait", 344 "jigaboo", 345 "jiggaboo", 346 "jiggerboo", 347 "kike", 348 "lolita", 349 "mong", 350 "motherfucker", 351 "nambla", 352 "negro", 353 "neonazi", 354 "nigga", 355 "nigger", 356 "nignog", 357 "paedophile", 358 "paki", 359 "pedobear", 360 "pedophile", 361 "pikey", 362 "poof", 363 "pthc", 364 "raghead", 365 "rape", 366 "raping", 367 "rapist", 368 "shemale", 369 "shota", 370 "slanteye", 371 "slut", 372 "spastic", 373 "spic", 374 "swastika", 375 "towelhead", 376 "tranny", 377 "tubgirl", 378 "twat", 379 "wetback", 380 "whitepower", 381 "whore", 382]; 383 384export const BLOCKLIST = new Set<string>([ 385 ...BLOCKLIST_INFRASTRUCTURE, 386 ...BLOCKLIST_IMPERSONATION, 387 ...BLOCKLIST_OFFENSIVE, 388]); 389 390export function isReservedOrBlocked(label: string): boolean { 391 return label.length <= 2 || BLOCKLIST.has(label); 392}