fix: Add basic user-agent to all mastodon-bound requests (#2277)

This commit is contained in:
Markus Unterwaditzer 2024-11-27 16:32:44 +01:00 committed by GitHub
parent 008248ee0f
commit 302da09248
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 0 deletions

View file

@ -1,5 +1,7 @@
import { stringifyQuery } from 'ufo' import { stringifyQuery } from 'ufo'
import { defaultUserAgent } from '~/server/utils/shared'
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
let { server, origin } = getRouterParams(event) let { server, origin } = getRouterParams(event)
server = server.toLocaleLowerCase().trim() server = server.toLocaleLowerCase().trim()
@ -24,6 +26,9 @@ export default defineEventHandler(async (event) => {
try { try {
const result: any = await $fetch(`https://${server}/oauth/token`, { const result: any = await $fetch(`https://${server}/oauth/token`, {
method: 'POST', method: 'POST',
headers: {
'user-agent': defaultUserAgent,
},
body: { body: {
client_id: app.client_id, client_id: app.client_id,
client_secret: app.client_secret, client_secret: app.client_secret,

View file

@ -13,6 +13,7 @@ import { env } from '#build-info'
// @ts-expect-error virtual import // @ts-expect-error virtual import
import { driver } from '#storage-config' import { driver } from '#storage-config'
import { version } from '~/config/env'
import { APP_NAME } from '~/constants' import { APP_NAME } from '~/constants'
import type { AppInfo } from '~/types' import type { AppInfo } from '~/types'
@ -48,9 +49,14 @@ export function getRedirectURI(origin: string, server: string) {
return `${origin}/api/${server}/oauth/${encodeURIComponent(origin)}` return `${origin}/api/${server}/oauth/${encodeURIComponent(origin)}`
} }
export const defaultUserAgent = `${APP_NAME}/${version}`
async function fetchAppInfo(origin: string, server: string) { async function fetchAppInfo(origin: string, server: string) {
const app: AppInfo = await $fetch(`https://${server}/api/v1/apps`, { const app: AppInfo = await $fetch(`https://${server}/api/v1/apps`, {
method: 'POST', method: 'POST',
headers: {
'user-agent': defaultUserAgent,
},
body: { body: {
client_name: APP_NAME + (env !== 'release' ? ` (${env})` : ''), client_name: APP_NAME + (env !== 'release' ? ` (${env})` : ''),
website: 'https://elk.zone', website: 'https://elk.zone',