feat: implement mirror download for CA certificates

This commit is contained in:
dyzulk
2025-12-31 09:40:14 +07:00
parent 0290333e97
commit 8e0f97dbc2
2 changed files with 110 additions and 8 deletions

View File

@@ -248,7 +248,7 @@ export default function HomeClient() {
<div className="space-y-3">
<div className="grid grid-cols-2 gap-3">
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download`}
href={`/download/ca-certificate?serial=${cert.serial}`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-xl border border-gray-200 dark:border-gray-700 font-medium text-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
title={t('download_standard_title')}
>
@@ -258,7 +258,7 @@ export default function HomeClient() {
{t('download_standard')}
</a>
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download?format=der`}
href={`/download/ca-certificate?serial=${cert.serial}&format=der`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400 rounded-xl border border-green-200 dark:border-green-500/20 font-medium text-sm hover:bg-green-100 dark:hover:bg-green-500/20 transition-colors"
title={t('download_android_title')}
>
@@ -270,7 +270,7 @@ export default function HomeClient() {
</div>
<div className="grid grid-cols-2 gap-3">
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download/windows`}
href={`/download/ca-certificate?serial=${cert.serial}&target=windows`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-blue-50 dark:bg-blue-500/10 text-blue-700 dark:text-blue-400 rounded-xl border border-blue-200 dark:border-blue-500/20 font-medium text-sm hover:bg-blue-100 dark:hover:bg-blue-500/20 transition-colors"
title={t('download_windows_title')}
>
@@ -280,7 +280,7 @@ export default function HomeClient() {
{t('download_windows')}
</a>
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download/mac`}
href={`/download/ca-certificate?serial=${cert.serial}&target=mac`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 rounded-xl border border-gray-200 dark:border-gray-600 font-medium text-sm hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors"
title={t('download_macos_title')}
>
@@ -317,7 +317,7 @@ export default function HomeClient() {
<div className="space-y-3">
<div className="grid grid-cols-2 gap-3">
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download`}
href={`/download/ca-certificate?serial=${cert.serial}`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-xl border border-gray-200 dark:border-gray-700 font-medium text-sm hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors"
title={t('download_standard_title')}
>
@@ -327,7 +327,7 @@ export default function HomeClient() {
{t('download_standard')}
</a>
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download?format=der`}
href={`/download/ca-certificate?serial=${cert.serial}&format=der`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-green-50 dark:bg-green-500/10 text-green-700 dark:text-green-400 rounded-xl border border-green-200 dark:border-green-500/20 font-medium text-sm hover:bg-green-100 dark:hover:bg-green-500/20 transition-colors"
title={t('download_android_title')}
>
@@ -339,7 +339,7 @@ export default function HomeClient() {
</div>
<div className="grid grid-cols-2 gap-3">
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download/windows`}
href={`/download/ca-certificate?serial=${cert.serial}&target=windows`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-blue-50 dark:bg-blue-500/10 text-blue-700 dark:text-blue-400 rounded-xl border border-blue-200 dark:border-blue-500/20 font-medium text-sm hover:bg-blue-100 dark:hover:bg-blue-500/20 transition-colors"
title={t('download_windows_title')}
>
@@ -349,7 +349,7 @@ export default function HomeClient() {
{t('download_windows')}
</a>
<a
href={`${process.env.NEXT_PUBLIC_BACKEND_URL}/api/public/ca-certificates/${cert.serial}/download/mac`}
href={`/download/ca-certificate?serial=${cert.serial}&target=mac`}
className="flex items-center justify-center gap-2 px-4 py-3 bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-100 rounded-xl border border-gray-200 dark:border-gray-600 font-medium text-sm hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors"
title={t('download_macos_title')}
>