|
@@ -1,15 +1,40 @@
|
|
-import React from 'react'
|
|
|
|
-import { Grid, Box, Typography, List, ListItem, ListItemText, Button, alpha } from "@mui/material";
|
|
|
|
-import Image from 'next/image'
|
|
|
|
|
|
+import React from "react";
|
|
|
|
+import {
|
|
|
|
+ Grid,
|
|
|
|
+ Box,
|
|
|
|
+ Typography,
|
|
|
|
+ List,
|
|
|
|
+ ListItem,
|
|
|
|
+ ListItemText,
|
|
|
|
+ Button,
|
|
|
|
+ alpha,
|
|
|
|
+} from "@mui/material";
|
|
|
|
+import Image from "next/image";
|
|
|
|
|
|
const FEATURE_LIST = [
|
|
const FEATURE_LIST = [
|
|
{
|
|
{
|
|
- title: "语义分析算法,有效保卫网站安全",
|
|
|
|
- desc: "首创语义分析算法,突破传统规则算法的极限,精准检测、低误报、难绕过",
|
|
|
|
|
|
+ title:
|
|
|
|
+ "Semantic analysis algorithms effectively safeguard website security",
|
|
|
|
+ desc: "Pioneering semantic analysis algorithm, breaking through the limits of traditional rule algorithms, precise detection, low false positives, and difficult to bypass",
|
|
icon: "/images/feature1-icon.png",
|
|
icon: "/images/feature1-icon.png",
|
|
content: (
|
|
content: (
|
|
- <Grid container display={'flex'} justifyContent={'flex-end'} position={'relative'} sx={{ mb: 5 }}>
|
|
|
|
- <Grid item xs={0} md={2} sx={{ display: { xs: 'none', md: 'block' }, position: 'absolute', left: 0 }}>
|
|
|
|
|
|
+ <Grid
|
|
|
|
+ container
|
|
|
|
+ display={"flex"}
|
|
|
|
+ justifyContent={"flex-end"}
|
|
|
|
+ position={"relative"}
|
|
|
|
+ sx={{ mb: 5 }}
|
|
|
|
+ >
|
|
|
|
+ <Grid
|
|
|
|
+ item
|
|
|
|
+ xs={0}
|
|
|
|
+ md={2}
|
|
|
|
+ sx={{
|
|
|
|
+ display: { xs: "none", md: "block" },
|
|
|
|
+ position: "absolute",
|
|
|
|
+ left: 0,
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
<Box>
|
|
<Box>
|
|
<Image
|
|
<Image
|
|
src="/images/feature1-left.png"
|
|
src="/images/feature1-left.png"
|
|
@@ -22,13 +47,22 @@ const FEATURE_LIST = [
|
|
<Grid item xs={12} md={4} ml={2} mt={{ xs: 3, md: 14 }}>
|
|
<Grid item xs={12} md={4} ml={2} mt={{ xs: 3, md: 14 }}>
|
|
<List>
|
|
<List>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 国内首创、业内领先的智能语义分析算法" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· The first and industry-leading intelligent semantic analysis algorithm in China"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 基于代码的理解,防御 0day 攻击" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· Based on code understanding, defend against 0day attacks"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 多维度 Web 应用防护" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· Multidimensional Web Application Protection"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
</List>
|
|
</List>
|
|
<Box>
|
|
<Box>
|
|
@@ -40,25 +74,24 @@ const FEATURE_LIST = [
|
|
height: { xs: "72px", sm: "50px" },
|
|
height: { xs: "72px", sm: "50px" },
|
|
ml: { xs: 0, sm: 2 },
|
|
ml: { xs: 0, sm: 2 },
|
|
mb: { xs: 2, sm: 0 },
|
|
mb: { xs: 2, sm: 0 },
|
|
|
|
+ fontFamily: 'GilroyBold',
|
|
fontSize: { xs: "24px", sm: "14px" },
|
|
fontSize: { xs: "24px", sm: "14px" },
|
|
}}
|
|
}}
|
|
href="/docs/about/syntaxanalysis"
|
|
href="/docs/about/syntaxanalysis"
|
|
>
|
|
>
|
|
- 了解详情
|
|
|
|
|
|
+ Learn more
|
|
</Button>
|
|
</Button>
|
|
</Box>
|
|
</Box>
|
|
</Grid>
|
|
</Grid>
|
|
<Grid item xs={12} md={6} mt={7}>
|
|
<Grid item xs={12} md={6} mt={7}>
|
|
- <Box
|
|
|
|
- position={'relative'}
|
|
|
|
- >
|
|
|
|
|
|
+ <Box position={"relative"}>
|
|
<Image
|
|
<Image
|
|
src="/images/feature1-bg.png"
|
|
src="/images/feature1-bg.png"
|
|
alt=""
|
|
alt=""
|
|
layout="responsive"
|
|
layout="responsive"
|
|
width={100}
|
|
width={100}
|
|
height={100}
|
|
height={100}
|
|
- className='absolute left-1/2 top-0'
|
|
|
|
|
|
+ className="absolute left-1/2 top-0"
|
|
/>
|
|
/>
|
|
<Image
|
|
<Image
|
|
src="/images/feature1.svg"
|
|
src="/images/feature1.svg"
|
|
@@ -66,7 +99,7 @@ const FEATURE_LIST = [
|
|
layout="responsive"
|
|
layout="responsive"
|
|
width={100}
|
|
width={100}
|
|
height={100}
|
|
height={100}
|
|
- className='relative'
|
|
|
|
|
|
+ className="relative"
|
|
/>
|
|
/>
|
|
</Box>
|
|
</Box>
|
|
</Grid>
|
|
</Grid>
|
|
@@ -74,51 +107,73 @@ const FEATURE_LIST = [
|
|
),
|
|
),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- title: "化繁为简,智能安全",
|
|
|
|
- desc: "轻松上手,实现躺平式管理",
|
|
|
|
|
|
+ title: "Simplify complexity, intelligent security",
|
|
|
|
+ desc: "Easy to get started with, achieving flat management",
|
|
icon: "/images/feature2-icon.png",
|
|
icon: "/images/feature2-icon.png",
|
|
content: (
|
|
content: (
|
|
<Grid container position="relative" sx={{ mb: 5 }} ml={{ xs: 3, md: 0 }}>
|
|
<Grid container position="relative" sx={{ mb: 5 }} ml={{ xs: 3, md: 0 }}>
|
|
<Grid container>
|
|
<Grid container>
|
|
<Grid item xs={12} md={6} mt={7} order={{ xs: 2, md: 1 }}>
|
|
<Grid item xs={12} md={6} mt={7} order={{ xs: 2, md: 1 }}>
|
|
- <Box
|
|
|
|
- position="relative"
|
|
|
|
- >
|
|
|
|
|
|
+ <Box position="relative">
|
|
<Image
|
|
<Image
|
|
src="/images/feature2-bg.png"
|
|
src="/images/feature2-bg.png"
|
|
alt=""
|
|
alt=""
|
|
layout="responsive"
|
|
layout="responsive"
|
|
width={100}
|
|
width={100}
|
|
height={100}
|
|
height={100}
|
|
- className='absolute right-1/3'
|
|
|
|
|
|
+ className="absolute right-1/3"
|
|
style={{ bottom: "10%" }}
|
|
style={{ bottom: "10%" }}
|
|
/>
|
|
/>
|
|
<Image
|
|
<Image
|
|
src="/images/feature2.svg"
|
|
src="/images/feature2.svg"
|
|
- alt="开箱即用,轻松上手,适配多种运行环境"
|
|
|
|
|
|
+ alt="开箱即用,轻松上手,适配多种运行环境"
|
|
layout="responsive"
|
|
layout="responsive"
|
|
width={100}
|
|
width={100}
|
|
height={100}
|
|
height={100}
|
|
- className='relative'
|
|
|
|
|
|
+ className="relative"
|
|
style={{ right: "43px" }}
|
|
style={{ right: "43px" }}
|
|
/>
|
|
/>
|
|
</Box>
|
|
</Box>
|
|
</Grid>
|
|
</Grid>
|
|
- <Grid item xs={12} md={4} mt={{ xs: 3, md: 14 }} order={{ xs: 1, md: 2 }}>
|
|
|
|
|
|
+ <Grid
|
|
|
|
+ item
|
|
|
|
+ xs={12}
|
|
|
|
+ md={4}
|
|
|
|
+ mt={{ xs: 3, md: 14 }}
|
|
|
|
+ order={{ xs: 1, md: 2 }}
|
|
|
|
+ >
|
|
<List>
|
|
<List>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 一键安装,容器式管理,适配多种运行环境" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· One click installation, containerized management, adaptable to multiple operating environments"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 配置开箱即用,无需大量调整繁琐规则" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· Ready to use configuration out of the box, without the need for extensive adjustments to cumbersome rules"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
<ListItem sx={{ mb: 1 }}>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 简洁操作,专为社区设计" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· Simple operation, designed specifically for the community"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
</List>
|
|
</List>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
- <Grid item xs={0} md={2} sx={{ display: { xs: 'none', md: 'block' }, position: 'absolute', right: 0 }}>
|
|
|
|
|
|
+ <Grid
|
|
|
|
+ item
|
|
|
|
+ xs={0}
|
|
|
|
+ md={2}
|
|
|
|
+ sx={{
|
|
|
|
+ display: { xs: "none", md: "block" },
|
|
|
|
+ position: "absolute",
|
|
|
|
+ right: 0,
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
<Box>
|
|
<Box>
|
|
<Image
|
|
<Image
|
|
src="/images/feature2-right.png"
|
|
src="/images/feature2-right.png"
|
|
@@ -132,12 +187,28 @@ const FEATURE_LIST = [
|
|
),
|
|
),
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- title: "高性能、高并发、高可用性",
|
|
|
|
- desc: "无规则引擎,线性安全检测算法",
|
|
|
|
|
|
+ title: "High performance, high concurrency, and high availability",
|
|
|
|
+ desc: "Irregular engine, linear security detection algorithm",
|
|
icon: "/images/feature3-icon.png",
|
|
icon: "/images/feature3-icon.png",
|
|
content: (
|
|
content: (
|
|
- <Grid container display="flex" justifyContent="flex-end" position="relative" sx={{ mb: 10 }} ml={{ xs: 3, md: 0 }}>
|
|
|
|
- <Grid item xs={0} md={2} sx={{ display: { xs: 'none', md: 'block' }, position: 'absolute', left: 0 }}>
|
|
|
|
|
|
+ <Grid
|
|
|
|
+ container
|
|
|
|
+ display="flex"
|
|
|
|
+ justifyContent="flex-end"
|
|
|
|
+ position="relative"
|
|
|
|
+ sx={{ mb: 10 }}
|
|
|
|
+ ml={{ xs: 3, md: 0 }}
|
|
|
|
+ >
|
|
|
|
+ <Grid
|
|
|
|
+ item
|
|
|
|
+ xs={0}
|
|
|
|
+ md={2}
|
|
|
|
+ sx={{
|
|
|
|
+ display: { xs: "none", md: "block" },
|
|
|
|
+ position: "absolute",
|
|
|
|
+ left: 0,
|
|
|
|
+ }}
|
|
|
|
+ >
|
|
<Box>
|
|
<Box>
|
|
<Image
|
|
<Image
|
|
src="/images/feature3-left.png"
|
|
src="/images/feature3-left.png"
|
|
@@ -150,29 +221,35 @@ const FEATURE_LIST = [
|
|
<Grid item xs={12} md={4} mt={{ xs: 3, md: 14 }}>
|
|
<Grid item xs={12} md={4} mt={{ xs: 3, md: 14 }}>
|
|
<List>
|
|
<List>
|
|
<ListItem>
|
|
<ListItem>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 平均检测延迟 < 1 毫秒,单核轻松检测 2000+ TPS 并发" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· Average detection delay <1 millisecond, single core easily detects 2000+TPS concurrency"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
<ListItem>
|
|
<ListItem>
|
|
- <ListItemText sx={{ textIndent: '-0.75rem' }} primary="· 基于 Nginx 开发,完善的健康检查机制" />
|
|
|
|
|
|
+ <ListItemText
|
|
|
|
+ sx={{ textIndent: "-0.75rem" }}
|
|
|
|
+ primary="· Developing a comprehensive health check mechanism based on Nginx"
|
|
|
|
+ />
|
|
</ListItem>
|
|
</ListItem>
|
|
</List>
|
|
</List>
|
|
</Grid>
|
|
</Grid>
|
|
<Grid item xs={12} md={6} mt={7}>
|
|
<Grid item xs={12} md={6} mt={7}>
|
|
- <Box position={'relative'}>
|
|
|
|
|
|
+ <Box position={"relative"}>
|
|
<Image
|
|
<Image
|
|
src="/images/feature3-bg.png"
|
|
src="/images/feature3-bg.png"
|
|
alt=""
|
|
alt=""
|
|
width={1225}
|
|
width={1225}
|
|
height={1310}
|
|
height={1310}
|
|
- className='absolute -left-1/2 -top-2/3'
|
|
|
|
|
|
+ className="absolute -left-1/2 -top-2/3"
|
|
/>
|
|
/>
|
|
<Image
|
|
<Image
|
|
- src="/images/feature3.svg"
|
|
|
|
|
|
+ src="/images/ability/2000tps.png"
|
|
alt="性能,服务可用性99.99%"
|
|
alt="性能,服务可用性99.99%"
|
|
layout="responsive"
|
|
layout="responsive"
|
|
width={100}
|
|
width={100}
|
|
height={100}
|
|
height={100}
|
|
- className='relative'
|
|
|
|
|
|
+ className="relative"
|
|
/>
|
|
/>
|
|
</Box>
|
|
</Box>
|
|
</Grid>
|
|
</Grid>
|
|
@@ -193,9 +270,9 @@ const Features = () => {
|
|
{FEATURE_LIST.map((feature, index) => (
|
|
{FEATURE_LIST.map((feature, index) => (
|
|
<Grid item xs={12} key={feature.title}>
|
|
<Grid item xs={12} key={feature.title}>
|
|
<Box
|
|
<Box
|
|
- display={{ xs: "block", md: index % 2 == 1 ? 'flex' : ''}}
|
|
|
|
|
|
+ display={{ xs: "block", md: index % 2 == 1 ? "flex" : "" }}
|
|
alignItems="flex-end"
|
|
alignItems="flex-end"
|
|
- flexDirection={index % 2 == 1 ? 'column' : 'row'}
|
|
|
|
|
|
+ flexDirection={index % 2 == 1 ? "column" : "row"}
|
|
>
|
|
>
|
|
<Box>
|
|
<Box>
|
|
<Image
|
|
<Image
|
|
@@ -207,26 +284,23 @@ const Features = () => {
|
|
</Box>
|
|
</Box>
|
|
<Box ml={3}>
|
|
<Box ml={3}>
|
|
<Typography variant="h4">
|
|
<Typography variant="h4">
|
|
- <Box component="span" sx={{ mt: "5px" }}>
|
|
|
|
|
|
+ <Box
|
|
|
|
+ component="span"
|
|
|
|
+ sx={{ mt: "5px", fontFamily: "GilroyBold" }}
|
|
|
|
+ >
|
|
{feature.title}
|
|
{feature.title}
|
|
</Box>
|
|
</Box>
|
|
</Typography>
|
|
</Typography>
|
|
<Typography
|
|
<Typography
|
|
variant="subtitle1"
|
|
variant="subtitle1"
|
|
- sx={{ color: alpha("#000", 0.7), fontWeight: 100 }}
|
|
|
|
|
|
+ sx={{ color: alpha("#000", 0.7), fontWeight: 100, fontFamily: 'GilroyThin' }}
|
|
mt={2}
|
|
mt={2}
|
|
>
|
|
>
|
|
- <Box component="span">
|
|
|
|
- {feature.desc}
|
|
|
|
- </Box>
|
|
|
|
|
|
+ <Box component="span">{feature.desc}</Box>
|
|
</Typography>
|
|
</Typography>
|
|
</Box>
|
|
</Box>
|
|
</Box>
|
|
</Box>
|
|
- <Box
|
|
|
|
- sx={{ whiteSpace: "pre-line" }}
|
|
|
|
- >
|
|
|
|
- {feature.content}
|
|
|
|
- </Box>
|
|
|
|
|
|
+ <Box sx={{ whiteSpace: "pre-line" }}>{feature.content}</Box>
|
|
</Grid>
|
|
</Grid>
|
|
))}
|
|
))}
|
|
</Grid>
|
|
</Grid>
|