Fix search with bad webfinger handles

pull/1935/head
Chocobozzz 2019-05-28 10:04:07 +02:00
parent 964298de4e
commit c56b774d05
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 13 additions and 3 deletions

View File

@ -59,10 +59,12 @@ function searchVideoChannels (req: express.Request, res: express.Response) {
// Handle strings like @toto@example.com
if (parts.length === 3 && parts[0].length === 0) parts.shift()
const isWebfingerSearch = parts.length === 2 && parts.every(p => p.indexOf(' ') === -1)
const isWebfingerSearch = parts.length === 2 && parts.every(p => p && p.indexOf(' ') === -1)
if (isURISearch || isWebfingerSearch) return searchVideoChannelURI(search, isWebfingerSearch, res)
// @username -> username to search in DB
if (query.search.startsWith('@')) query.search = query.search.replace(/^@/, '')
return searchVideoChannelsDB(query, res)
}
@ -85,7 +87,15 @@ async function searchVideoChannelURI (search: string, isWebfingerSearch: boolean
let videoChannel: VideoChannelModel
let uri = search
if (isWebfingerSearch) uri = await loadActorUrlOrGetFromWebfinger(search)
if (isWebfingerSearch) {
try {
uri = await loadActorUrlOrGetFromWebfinger(search)
} catch (err) {
logger.warn('Cannot load actor URL or get from webfinger.', { search, err })
return res.json({ total: 0, data: [] })
}
}
if (isUserAbleToSearchRemoteURI(res)) {
try {

View File

@ -19,7 +19,7 @@ async function loadActorUrlOrGetFromWebfinger (uriArg: string) {
const [ name, host ] = uri.split('@')
let actor: ActorModel
if (host === WEBSERVER.HOST) {
if (!host || host === WEBSERVER.HOST) {
actor = await ActorModel.loadLocalByName(name)
} else {
actor = await ActorModel.loadByNameAndHost(name, host)