mirror of
https://gitee.com/mirrors/AllinSSL.git
synced 2026-03-08 15:51:11 +08:00
【新增】申请证书算法配置
【新增】调整证书信息
This commit is contained in:
@@ -9330,5 +9330,22 @@
|
||||
"arDZ": "API Token"
|
||||
},
|
||||
"timestamp": "2025-05-19T01:11:53.092Z"
|
||||
},
|
||||
"证书算法": {
|
||||
"text": "证书算法",
|
||||
"key": "t_0_1747647014927",
|
||||
"translations": {
|
||||
"zhCN": "证书算法",
|
||||
"zhTW": "證書算法",
|
||||
"enUS": "Certificate algorithm",
|
||||
"jaJP": "証明書アルゴリズム",
|
||||
"koKR": "인증서 알고리즘",
|
||||
"ruRU": "Алгоритм сертификата",
|
||||
"ptBR": "Algoritmo de certificado",
|
||||
"frFR": "Algorithme de certificat",
|
||||
"esAR": "Algoritmo de certificado",
|
||||
"arDZ": "خوارزمية الشهادة"
|
||||
},
|
||||
"timestamp": "2025-05-19T09:30:14.927Z"
|
||||
}
|
||||
}
|
||||
BIN
frontend/apps/allin-ssl/public/static/.DS_Store
vendored
BIN
frontend/apps/allin-ssl/public/static/.DS_Store
vendored
Binary file not shown.
3
frontend/apps/allin-ssl/public/static/icons/btssl.svg
Normal file
3
frontend/apps/allin-ssl/public/static/icons/btssl.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 47 KiB |
@@ -23,16 +23,17 @@ export default defineComponent({
|
||||
end_day: 30,
|
||||
name_server: '',
|
||||
skip_check: 1,
|
||||
algorithm: 'RSA2048',
|
||||
},
|
||||
}),
|
||||
},
|
||||
},
|
||||
setup(props) {
|
||||
const { updateNodeConfig, isRefreshNode } = useStore()
|
||||
const { updateNodeConfig, advancedOptions, isRefreshNode } = useStore()
|
||||
// 弹窗辅助
|
||||
const { confirm } = useModalHooks()
|
||||
// 获取表单助手函数
|
||||
const { useFormInput, useFormHelp, useFormSwitch } = useFormHooks()
|
||||
const { useFormInput, useFormSelect, useFormMore, useFormHelp, useFormSwitch } = useFormHooks()
|
||||
// 表单参数
|
||||
const param = ref(deepClone(props.node.config))
|
||||
|
||||
@@ -88,23 +89,42 @@ export default defineComponent({
|
||||
)
|
||||
},
|
||||
},
|
||||
useFormInput(
|
||||
$t('t_0_1747106957037'),
|
||||
'name_server',
|
||||
{
|
||||
placeholder: $t('t_1_1747106961747'),
|
||||
onInput: (val: string) => {
|
||||
param.value.name_server = val.trim() // 去除空格
|
||||
param.value.name_server = param.value.name_server.replace(/,/g, ',') // 中文逗号分隔
|
||||
param.value.name_server = param.value.name_server.replace(/;/g, ',') // 去除分号
|
||||
},
|
||||
onFocus: () => {
|
||||
param.value.name_server = param.value.name_server.replace(/,^/g, '') // 中文逗号分隔
|
||||
},
|
||||
},
|
||||
{ showRequireMark: false },
|
||||
),
|
||||
useFormSwitch($t('t_2_1747106957037'), 'skip_check', {}, { showRequireMark: false }),
|
||||
useFormMore(advancedOptions),
|
||||
...(advancedOptions.value
|
||||
? [
|
||||
useFormSelect(
|
||||
$t('t_0_1747647014927'),
|
||||
'algorithm',
|
||||
[
|
||||
{ label: 'RSA2048', value: 'RSA2048' },
|
||||
{ label: 'RSA3072', value: 'RSA3072' },
|
||||
{ label: 'RSA4096', value: 'RSA4096' },
|
||||
{ label: 'RSA8192', value: 'RSA8192' },
|
||||
{ label: 'EC256', value: 'EC256' },
|
||||
{ label: 'EC384', value: 'EC384' },
|
||||
],
|
||||
{},
|
||||
{ showRequireMark: false },
|
||||
),
|
||||
useFormInput(
|
||||
$t('t_0_1747106957037'),
|
||||
'name_server',
|
||||
{
|
||||
placeholder: $t('t_1_1747106961747'),
|
||||
onInput: (val: string) => {
|
||||
param.value.name_server = val.trim() // 去除空格
|
||||
param.value.name_server = param.value.name_server.replace(/,/g, ',') // 中文逗号分隔
|
||||
param.value.name_server = param.value.name_server.replace(/;/g, ',') // 去除分号
|
||||
},
|
||||
onFocus: () => {
|
||||
param.value.name_server = param.value.name_server.replace(/,^/g, '') // 中文逗号分隔
|
||||
},
|
||||
},
|
||||
{ showRequireMark: false },
|
||||
),
|
||||
useFormSwitch($t('t_2_1747106957037'), 'skip_check', {}, { showRequireMark: false }),
|
||||
]
|
||||
: []),
|
||||
useFormHelp([
|
||||
{
|
||||
content: $t('t_0_1747040228657'),
|
||||
@@ -121,6 +141,10 @@ export default defineComponent({
|
||||
// 创建表单实例
|
||||
const { component: Form, data, example } = useForm<ApplyNodeConfig>({ defaultValue: param, config, rules })
|
||||
|
||||
onMounted(() => {
|
||||
advancedOptions.value = false
|
||||
})
|
||||
|
||||
// 确认事件触发
|
||||
confirm(async (close) => {
|
||||
try {
|
||||
|
||||
@@ -109,6 +109,7 @@ nodeOptions[APPLY] = () =>
|
||||
end_day: 30,
|
||||
provider: '',
|
||||
provider_id: '',
|
||||
algorithm: 'RSA2048',
|
||||
},
|
||||
childNode: null,
|
||||
},
|
||||
|
||||
@@ -20,6 +20,7 @@ export default {
|
||||
provider_id: '',
|
||||
provider: '',
|
||||
end_day: 30,
|
||||
algorithm: 'RSA2048',
|
||||
},
|
||||
childNode: {
|
||||
id: 'deploy-1',
|
||||
|
||||
@@ -203,8 +203,10 @@ export interface ApplyNodeConfig {
|
||||
provider_id: string // DNS提供商授权ID
|
||||
provider: string // DNS提供商
|
||||
end_day: number // 续签间隔
|
||||
// 高级功能
|
||||
name_server: string // DNS递归服务器
|
||||
skip_check: number // 跳过检查
|
||||
algorithm: string // 数字证书算法
|
||||
// 高级功能
|
||||
// algorithm: 'RSA2048' | 'RSA3072' | 'RSA4096' | 'RSA8192' | 'EC256' | 'EC384' // 数字证书算法
|
||||
// dnsServer?: string // 指定DNS解析服务器
|
||||
|
||||
@@ -33,6 +33,7 @@ export const useFlowStore = defineStore('flow-store', () => {
|
||||
},
|
||||
}) // 流程图数据
|
||||
const flowZoom = ref(100) // 流程图缩放比例
|
||||
const advancedOptions = ref(false) // 高级选项
|
||||
const addNodeSelectList = ref<NodeSelect[]>([]) // 添加节点选项列表
|
||||
const excludeNodeSelectList = ref<NodeNum[]>([]) // 排除的节点选项列表
|
||||
const addNodeBtnRef = ref<HTMLElement | null>(null) // 添加节点按钮
|
||||
@@ -536,6 +537,7 @@ export const useFlowStore = defineStore('flow-store', () => {
|
||||
flowZoom, // 流程图缩放比例
|
||||
selectedNodeId, // 当前选中的节点ID
|
||||
isRefreshNode, // 是否刷新节点
|
||||
advancedOptions, // 高级选项
|
||||
|
||||
// 方法
|
||||
initFlowData, // 初始化流程图数据
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "خوارزمية الشهادة",
|
||||
"t_0_1744098811152": "تحذير: لقد دخلتم منطقة غير معروفة، الصفحة التي تحاول زيارتها غير موجودة، يرجى الضغط على الزر للعودة إلى الصفحة الرئيسية.",
|
||||
"t_1_1744098801860": "رجوع إلى الصفحة الرئيسية",
|
||||
"t_2_1744098804908": "نصيحة أمنية: إذا كنت تعتقد أن هذا خطأ، يرجى الاتصال بالمدير على الفور",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "Certificate algorithm",
|
||||
"t_0_1744098811152": "Warning: You have entered an unknown area, the page you are visiting does not exist, please click the button to return to the homepage.",
|
||||
"t_1_1744098801860": "Return Home",
|
||||
"t_2_1744098804908": "Safety Tip: If you think this is an error, please contact the administrator immediately",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "Algoritmo de certificado",
|
||||
"t_0_1744098811152": "Advertencia: Ha ingresado a una zona desconocida, la página que intenta visitar no existe, por favor, haga clic en el botón para regresar a la página de inicio.",
|
||||
"t_1_1744098801860": "Volver al inicio",
|
||||
"t_2_1744098804908": "Consejo de seguridad: Si piensa que es un error, póngase en contacto con el administrador inmediatamente",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "Algorithme de certificat",
|
||||
"t_0_1744098811152": "Avertissement : Vous avez entré dans une zone inconnue, la page que vous visitez n'existe pas, veuillez cliquer sur le bouton pour revenir à la page d'accueil.",
|
||||
"t_1_1744098801860": "Retour à l'accueil",
|
||||
"t_2_1744098804908": "Avis de sécurité : Si vous pensez que c'est une erreur, veuillez contacter l'administrateur immédiatement",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "証明書アルゴリズム",
|
||||
"t_0_1744098811152": "警告:未知のエリアに進入しました。アクセスしようとしたページは存在しません。ボタンをクリックしてホームページに戻ってください。",
|
||||
"t_1_1744098801860": "ホームに戻る",
|
||||
"t_2_1744098804908": "安全注意:これが誤りだと思われる場合は、すぐに管理者に連絡してください",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "인증서 알고리즘",
|
||||
"t_0_1744098811152": "경고: 알 수 없는 영역에 진입했습니다. 방문하려는 페이지가 존재하지 않습니다. 버튼을 클릭하여 홈페이지로 돌아가세요。",
|
||||
"t_1_1744098801860": "홈으로 돌아가기",
|
||||
"t_2_1744098804908": "안전 유의사항: 이가 오류라면 즉시 관리자에게 연락하십시오",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "Algoritmo de certificado",
|
||||
"t_0_1744098811152": "Aviso: Você entrou em uma área desconhecida, a página que você está visitando não existe, por favor, clique no botão para voltar para a página inicial.",
|
||||
"t_1_1744098801860": "Voltar para a homepage",
|
||||
"t_2_1744098804908": "Dica de Segurança: Se você acha que isso é um erro, entre em contato com o administrador imediatamente",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "Алгоритм сертификата",
|
||||
"t_0_1744098811152": "Предупреждение: Вы вошли в неизвестную зону, посещаемая страница не существует, пожалуйста, нажмите кнопку, чтобы вернуться на главную страницу.",
|
||||
"t_1_1744098801860": "Вернуться на главную",
|
||||
"t_2_1744098804908": "Совет по безопасности: Если вы считаете, что это ошибка, немедленно свяжитесь с администратором",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "证书算法",
|
||||
"t_0_1744098811152": "警告:您已进入未知区域,所访问的页面不存在,请点击按钮返回首页。",
|
||||
"t_1_1744098801860": "返回首页",
|
||||
"t_2_1744098804908": "安全提示:如果您认为这是个错误,请立即联系管理员",
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"t_0_1747647014927": "證書算法",
|
||||
"t_0_1744098811152": "警告:您已進入未知區域,所訪問的頁面不存在,請點擊按鈕返回首頁。",
|
||||
"t_1_1744098801860": "返回首頁",
|
||||
"t_2_1744098804908": "安全提示:如果您認為這是個錯誤,請立即聯繫管理員",
|
||||
|
||||
@@ -7,7 +7,7 @@ import { $t } from '@locales/index' // 引入 $t
|
||||
// import ThemeTips from '@baota/naive-ui/components/themeTips'
|
||||
|
||||
// 错误图标
|
||||
const errorIcon = (size: number = 16, color: string = 'var(--n-warning-color)') => {
|
||||
const errorIcon = (size: number = 16, color: string = '#18181c') => {
|
||||
return (
|
||||
<svg width={size} height={size} viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill={color}>
|
||||
<path
|
||||
@@ -25,17 +25,10 @@ export default defineComponent({
|
||||
const router: Router = useRouter()
|
||||
|
||||
// 获取主题变量
|
||||
const cssVar = useThemeCssVar([
|
||||
'cardColor',
|
||||
'warningColor',
|
||||
'textColorSecondary',
|
||||
'textColorDisabled',
|
||||
'textColorInverse',
|
||||
'warningColorHover',
|
||||
])
|
||||
const cssVar = useThemeCssVar(['cardColor', 'textColorSecondary', 'textColorDisabled', 'textColorInverse'])
|
||||
|
||||
return () => (
|
||||
<div class="flex flex-col items-center justify-center min-h-screen" style={cssVar.value}>
|
||||
<div class="flex flex-col items-center justify-center min-h-screen " style={cssVar.value}>
|
||||
{/* <div class="absolute z-[99] top-0 right-0 p-8 flex w-[120px] justify-between">
|
||||
<LocalesTips />
|
||||
<ThemeTips />
|
||||
@@ -44,17 +37,20 @@ export default defineComponent({
|
||||
<div
|
||||
class="text-[8rem] font-bold leading-none mb-4"
|
||||
style={{
|
||||
color: 'var(--n-warning-color)',
|
||||
textShadow: '2px 2px 4px rgba(0, 0, 0, 0.1)',
|
||||
color: '#18181c',
|
||||
textShadow: '2px 2px 8px rgba(0,0,0,0.25)',
|
||||
}}
|
||||
>
|
||||
404
|
||||
</div>
|
||||
<div class="flex items-center justify-center mb-8">{errorIcon(60)}</div>
|
||||
<div class="flex items-center justify-center mb-8">{errorIcon(60, '#18181c')}</div>
|
||||
<div class="text-[1.8rem] mb-8" style={{ color: 'var(--n-text-color-secondary)' }}>
|
||||
{$t('t_0_1744098811152')}
|
||||
</div>
|
||||
<NButton type="warning" onClick={() => router.push('/')}>
|
||||
<NButton
|
||||
style={{ backgroundColor: '#18181c', color: '#fff', border: 'none' }}
|
||||
onClick={() => router.push('/')}
|
||||
>
|
||||
{$t('t_1_1744098801860')}
|
||||
</NButton>
|
||||
<div class="mt-8 text-[1.3rem]" style={{ color: 'var(--n-text-color-disabled)' }}>
|
||||
|
||||
@@ -11,6 +11,7 @@ interface ProductCardProps {
|
||||
num: number
|
||||
price: number
|
||||
discount: number
|
||||
ipssl?: number
|
||||
state: number
|
||||
install_price: number
|
||||
src_price: number
|
||||
@@ -72,21 +73,17 @@ export default defineComponent({
|
||||
props.onBuy(props.product.pid)
|
||||
}
|
||||
|
||||
// 获取品牌图标
|
||||
// 获取品牌图标
|
||||
const getBrandIcon = (brand: string) => {
|
||||
const brandLower = brand.toLowerCase()
|
||||
if (brandLower.includes('sectigo')) return '/static/icons/sectigo-ico.png'
|
||||
if (brandLower.includes('positive')) return '/static/icons/positive-ico.png'
|
||||
if (brandLower.includes('锐安信')) return '/static/icons/ssltrus-ico.png'
|
||||
if (brandLower.includes("let's encrypt")) return '/static/icons/letsencrypt-icon.svg'
|
||||
// return '/static/icons/default.png'
|
||||
if (brandLower.includes('宝塔证书')) return '/static/icons/btssl.svg'
|
||||
|
||||
}
|
||||
|
||||
// // 显示的功能特点
|
||||
// const features = computed(() => {
|
||||
// return ['快速颁发', '支持全部浏览器', isWildcard.value ? '支持所有子域名' : '高安全性', '7*24小时技术支持']
|
||||
// })
|
||||
|
||||
return () => (
|
||||
<div class="relative border border-gray-200 rounded-[0.8rem] p-[2rem] transition-all duration-300 h-full flex flex-col bg-white shadow-sm hover:shadow-md hover:border-blue-100 hover:-translate-y-[0.2rem]">
|
||||
{props.product.discount < 1 && (
|
||||
@@ -107,7 +104,10 @@ export default defineComponent({
|
||||
<div class="flex-1 w-full">
|
||||
<h3 class="font-semibold mb-[0.8rem] text-gray-800 leading-tight">{props.product.title}</h3>
|
||||
<p class="text-[1.3rem] text-gray-500 m-0 leading-relaxed px-[0.8rem]">
|
||||
{props.product.brand}是知名的证书颁发机构,提供高质量的SSL证书解决方案。
|
||||
{props.product.brand === '宝塔证书'
|
||||
? '宝塔证书是新国产证书品牌,支持 ECC、RSA 及我国商用密码 SM2 等标准算法,兼容国密浏览器'
|
||||
: `${props.product.brand}是知名的证书颁发机构,提供高质量的SSL证书解决方案`}
|
||||
。
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -133,13 +133,15 @@ export default defineComponent({
|
||||
<div class="flex mb-[1rem] leading-relaxed whitespace-nowrap overflow-hidden text-ellipsis text-gray-500">
|
||||
<span class="font-medium text-gray-500 flex-none w-[9rem]">适用网站:</span>
|
||||
<span class="flex-1 text-gray-600 whitespace-nowrap overflow-hidden text-ellipsis">
|
||||
{isWildcard.value
|
||||
? isMultiDomain.value
|
||||
? '*.bt.cn、*.btnode.cn'
|
||||
: '*.bt.cn'
|
||||
: isMultiDomain.value
|
||||
? 'bt.cn、btnode.cn'
|
||||
: 'www.bt.cn、bt.cn'}
|
||||
{props.product?.ipssl
|
||||
? '支持IP SSL证书'
|
||||
: isWildcard.value
|
||||
? isMultiDomain.value
|
||||
? '*.bt.cn、*.btnode.cn'
|
||||
: '*.bt.cn'
|
||||
: isMultiDomain.value
|
||||
? 'bt.cn、btnode.cn'
|
||||
: 'www.bt.cn、bt.cn'}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -88,6 +88,7 @@ export const useCertApplyStore = defineStore('cert-apply-store', () => {
|
||||
num: number
|
||||
price: number
|
||||
discount: number
|
||||
ipssl?: number
|
||||
state: number
|
||||
install_price: number
|
||||
src_price: number
|
||||
@@ -103,64 +104,50 @@ export const useCertApplyStore = defineStore('cert-apply-store', () => {
|
||||
const products = ref<ProductsType>({
|
||||
dv: [
|
||||
{
|
||||
pid: 8001,
|
||||
brand: 'Positive',
|
||||
pid: 0,
|
||||
brand: '宝塔证书',
|
||||
type: '域名型(DV)',
|
||||
add_price: 0,
|
||||
other_price: 398,
|
||||
title: 'PositiveSSL 单域名SSL证书',
|
||||
other_price: 128.66,
|
||||
title: '宝塔证书 单域名SSL证书',
|
||||
code: 'comodo-positivessl',
|
||||
num: 1,
|
||||
price: 159,
|
||||
discount: 1,
|
||||
state: 1,
|
||||
install_price: 150,
|
||||
src_price: 159,
|
||||
},
|
||||
{
|
||||
pid: 8002,
|
||||
brand: 'Positive',
|
||||
type: '域名型(DV)',
|
||||
add_price: 98,
|
||||
other_price: 1194,
|
||||
title: 'PositiveSSL 多域名SSL证书',
|
||||
code: 'comodo-positive-multi-domain',
|
||||
num: 3,
|
||||
price: 589,
|
||||
price: 128.66,
|
||||
discount: 1,
|
||||
state: 1,
|
||||
install_price: 200,
|
||||
src_price: 589,
|
||||
src_price: 128.66,
|
||||
},
|
||||
{
|
||||
pid: 8008,
|
||||
brand: 'Positive',
|
||||
pid: 0,
|
||||
brand: '宝塔证书',
|
||||
type: '域名型(DV)',
|
||||
add_price: 0,
|
||||
other_price: 2100,
|
||||
title: 'PositiveSSL 通配符SSL证书',
|
||||
other_price: 1688,
|
||||
title: '宝塔证书 通配符SSL证书',
|
||||
code: 'comodo-positivessl-wildcard',
|
||||
num: 1,
|
||||
price: 1289,
|
||||
price: 1688,
|
||||
discount: 1,
|
||||
state: 1,
|
||||
install_price: 200,
|
||||
src_price: 1289,
|
||||
src_price: 1688,
|
||||
},
|
||||
{
|
||||
pid: 8009,
|
||||
brand: 'Positive',
|
||||
pid: 0,
|
||||
brand: '宝塔证书',
|
||||
type: '域名型(DV)',
|
||||
add_price: 880,
|
||||
other_price: 4500,
|
||||
title: 'PositiveSSL 多域名通配符SSL证书',
|
||||
code: 'comodo-positive-multi-domain-wildcard',
|
||||
num: 2,
|
||||
price: 3789,
|
||||
add_price: 98,
|
||||
other_price: 180,
|
||||
title: '宝塔证书 IP-SSL证书',
|
||||
code: 'comodo-positive-multi-domain',
|
||||
num: 1,
|
||||
price: 180,
|
||||
discount: 1,
|
||||
ipssl: 1,
|
||||
state: 1,
|
||||
install_price: 200,
|
||||
src_price: 3789,
|
||||
src_price: 180,
|
||||
},
|
||||
],
|
||||
ov: [
|
||||
|
||||
@@ -107,7 +107,7 @@ export default defineConfig({
|
||||
},
|
||||
{
|
||||
repo: 'https://github.com/allinssl/allinssl.git',
|
||||
branch: '1.0.2',
|
||||
branch: '1.0.3',
|
||||
targetDir: 'allinssl-github',
|
||||
discardChanges: true,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user