From ef6e2087aeff1cf76cd4e5a3f04685e228c169d4 Mon Sep 17 00:00:00 2001 From: Shpuld Shpludson Date: Tue, 5 Jan 2021 08:09:08 +0000 Subject: fix #1036 convert screen name to unicode with punycode --- .../entity_normalizer/entity_normalizer.service.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index b1e68df5..206e6281 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -1,6 +1,7 @@ import escape from 'escape-html' import parseLinkHeader from 'parse-link-header' import { isStatusNotification } from '../notification_utils/notification_utils.js' +import punycode from 'punycode.js' /** NOTICE! ** * Do not initialize UI-generated data here. @@ -197,6 +198,19 @@ export const parseUser = (data) => { output.rights = output.rights || {} output.notification_settings = output.notification_settings || {} + // Convert punycode to unicode + if (output.screen_name.includes('@')) { + const parts = output.screen_name.split('@') + console.log(parts) + let unicodeDomain = punycode.toUnicode(parts[1]) + if (unicodeDomain !== parts[1]) { + // Add some identifier so users can potentially spot spoofing attempts: + // lain.com and xn--lin-6cd.com would appear identical otherwise. + unicodeDomain = '🌏' + unicodeDomain + output.screen_name = [parts[0], unicodeDomain].join('@') + } + } + return output } -- cgit v1.2.3-70-g09d2