Merge pull request #2 from ekreten/main

Sync upstream
This commit is contained in:
Satoko 2024-01-24 14:57:22 +01:00 committed by GitHub
commit aa57e82a71
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 44 additions and 27 deletions

View file

@ -1,12 +1,33 @@
import { Footer } from '@/components/Footer'
import { Button } from '@nextui-org/button'
import Link from 'next/link'
import type { GetServerSideProps, GetServerSidePropsContext } from 'next'
interface ErrorProps {
statusCode: number
}
const NotFound: React.FC = () => (
<>
<p className='mt-2'>Az keresett oldal nem található.</p>
<p className='mt-8 text-center'>
<Button color='primary' onPress={() => (window.location.href = '/')}>
Vissza
</Button>
</p>
</>
)
const Unexpected: React.FC = () => (
<>
<p className='mt-2'>Váratlan hiba történt.</p>
<p className='mt-8 text-center'>
<Button color='primary' onPress={() => (window.location.href = '/')}>
Vissza
</Button>
</p>
</>
)
const ErrorPage: React.FC<ErrorProps> = ({ statusCode }) => {
return (
<>
@ -19,25 +40,14 @@ const ErrorPage: React.FC<ErrorProps> = ({ statusCode }) => {
<div className='flex flex-col items-center justify-center'>
<div className='mt-5 mb-3'>
<div className='text-2xl font-semibold text-gray-600'>
{statusCode == 404 ? (
<>
<p className='mt-2'>Az keresett oldal nem található.</p>
<p className='mt-8 text-center'>
<Button color='primary'>
<Link href='/'>{'Vissza'}</Link>
</Button>
</p>
</>
) : (
<>
<p className='mt-2'>Váratlan hiba történt.</p>
<p className='mt-8 text-center'>
<Button color='primary'>
<Link href='/'>{'Vissza'}</Link>
</Button>
</p>
</>
)}
{(() => {
switch (statusCode) {
case 404:
return <NotFound />
default:
return <Unexpected />
}
})()}
</div>
</div>
</div>

View file

@ -6,6 +6,7 @@ export default async function handler(
) {
const { link } = req.query as { link: string }
let missingParam: string | null = null
if (!link) {
missingParam = 'link'
}
@ -15,20 +16,26 @@ export default async function handler(
}
const domain = link.split('/')[2]
if (domain !== 'erettsegi.albert.lol') {
if (domain !== 'localhost:3000' && domain !== 'erettsegi.albert.lol') {
return res.status(400).json({ error: 'Érvénytelen link' })
}
try {
res.setHeader('Cache-Control', 's-maxage=31536000')
const { protocol, host } = new URL(link)
if (protocol && host) {
const response = await fetch(link, { method: 'HEAD' })
const status = response.status
res.status(200).json({ status })
} else {
if (!protocol || !host) {
return res.status(400).json({ error: 'Érvénytelen link' })
}
const response = await fetch(link, { method: 'OPTIONS' })
if (!response.ok) {
return res
.status(400)
.json({ error: 'Invalid host or network unreachable' })
}
const status = response.status
res.status(200).json({ status })
} catch (error) {
res.status(500).json({ error: 'Internal Server Error' })
}