Skip to content

🟡 7. Weak Contact Field Detection #160

@juancolchete

Description

@juancolchete

Location: templates/add_area.html:435-453

Problems:

  • {name:"contact:email",index:/@/} matches ANY @ symbol (will match "twitter.com/@username")
  • {name:"contact:website",index:/https[://]/} is malformed - matches "https" OR ":" OR "/"
  • Phone regex is complex and untested

Fix: Use more specific patterns:

const contactTagsInfo = [
    {name:"contact:email", index: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/},
    {name:"contact:discord", index: /discord\.gg|discord\.com/i},
    {name:"contact:twitter", index: /(?:x\.com|twitter\.com)\/[\w]+/i},
    {name:"contact:telegram", index: /t\.me\/[\w]+/i},
    {name:"contact:signal", index: /signal\.group\//i},
    {name:"contact:whatsapp", index: /chat\.whatsapp\.com\//i},
    {name:"contact:facebook", index: /facebook\.com\/[\w.]+/i},
    {name:"contact:instagram", index: /instagram\.com\/[\w._]+/i},
    {name:"contact:youtube", index: /(?:youtu\.be|youtube\.com)\//i},
    {name:"contact:github", index: /github\.com\/[\w-]+/i},
    {name:"contact:linkedin", index: /linkedin\.com\//i},
    {name:"contact:matrix", index: /@[\w._-]+:[\w.-]+/}, // Matrix ID format
    {name:"contact:meetup", index: /meetup\.com\//i},
    {name:"contact:nostr", index: /^npub1[a-z0-9]{58}$/},
    {name:"contact:geyser", index: /geyser\.fund\//i},
    {name:"contact:rss", index: /\/(?:feed|rss)/i},
    {name:"contact:phone", index: /^\+?[\d\s\-()]+$/},
    {name:"contact:website", index: /^https?:\/\//i}  // Must be last
]

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions