This commit is contained in:
unknown
2026-02-04 20:27:13 +08:00
commit 3b042d1dad
9410 changed files with 1488147 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
#!/usr/bin/env bash
./build.sh linux amd64
#./build.sh linux 386
./build.sh linux arm64
#./build.sh linux mips64
#./build.sh linux mips64le
#./build.sh darwin amd64
#./build.sh darwin arm64

118
EdgeUser/build/build.sh Normal file
View File

@@ -0,0 +1,118 @@
#!/usr/bin/env bash
function build() {
ROOT=$(dirname "$0")
NAME="edge-user"
DIST=$ROOT/"../dist/${NAME}"
OS=${1}
ARCH=${2}
JS_ROOT=$ROOT/../web/public/js
if [ -z "$OS" ]; then
echo "usage: build.sh OS ARCH"
exit
fi
if [ -z "$ARCH" ]; then
echo "usage: build.sh OS ARCH"
exit
fi
VERSION=$(lookup-version "$ROOT"/../internal/const/const.go)
ZIP="${NAME}-${OS}-${ARCH}-v${VERSION}.zip"
# generate files
echo "generating files ..."
go run -tags=plus "$ROOT"/../cmd/edge-user/main.go generate
if [ "$(which uglifyjs)" ]; then
echo "compress to component.js ..."
uglifyjs --compress --mangle -- "${JS_ROOT}"/components.src.js > "${JS_ROOT}"/components.js
uglifyjs --compress --mangle -- "${JS_ROOT}"/utils.js > "${JS_ROOT}"/utils.min.js
else
echo "copy to component.js ..."
cp "${JS_ROOT}"/components.src.js "${JS_ROOT}"/components.js
cp "${JS_ROOT}"/utils.js "${JS_ROOT}"/utils.min.js
fi
# create dir & copy files
echo "copying ..."
if [ ! -d "$DIST" ]; then
mkdir "$DIST"
mkdir "$DIST"/bin
mkdir "$DIST"/configs
mkdir "$DIST"/logs
mkdir "$DIST"/www
fi
cp -R "$ROOT"/../web "$DIST"/
rm -f "$DIST"/web/tmp/*
rm -rf "$DIST"/web/public/js/components
rm -f "$DIST"/web/public/js/components.src.js
cp "$ROOT"/configs/server.template.yaml "$DIST"/configs/
cp "$ROOT"/configs/api_user.template.yaml "$DIST"/configs/
cp -R "$ROOT"/portal "$DIST"/
# find gcc
GCC_DIR=""
CC_PATH=""
CXX_PATH=""
if [ "${ARCH}" == "amd64" ]; then
GCC_DIR="/usr/local/gcc/x86_64-unknown-linux-gnu/bin"
CC_PATH="x86_64-unknown-linux-gnu-gcc"
CXX_PATH="x86_64-unknown-linux-gnu-g++"
fi
if [ "${ARCH}" == "arm64" ]; then
GCC_DIR="/usr/local/gcc/aarch64-unknown-linux-gnu/bin"
CC_PATH="aarch64-unknown-linux-gnu-gcc"
CXX_PATH="aarch64-unknown-linux-gnu-g++"
fi
# build
echo "building v${VERSION}/${OS}/${ARCH} ..."
if [ -f "${GCC_DIR}/${CC_PATH}" ]; then
echo " building ${NAME} with gcc ..."
env CC="${GCC_DIR}/${CC_PATH}" \
CXX="${GCC_DIR}/${CXX_PATH}" \
CGO_ENABLED=1 \
GOOS="$OS" GOARCH="$ARCH" go build -tags="plus gcc" -trimpath -ldflags="-linkmode external -extldflags -static -s -w" -o "$DIST"/bin/${NAME} "$ROOT"/../cmd/edge-user/main.go
else
env GOOS="$OS" GOARCH="$ARCH" go build -tags="plus" -trimpath -ldflags="-s -w" -o "$DIST"/bin/${NAME} "$ROOT"/../cmd/edge-user/main.go
fi
if [ ! -f "${DIST}/bin/${NAME}" ]; then
echo "build failed!"
exit
fi
# delete hidden files
find "$DIST" -name ".DS_Store" -delete
find "$DIST" -name ".gitignore" -delete
find "$DIST" -name "*.less" -delete
#find "$DIST" -name "*.css.map" -delete
#find "$DIST" -name "*.js.map" -delete
# zip
echo "zip files ..."
cd "${DIST}/../" || exit
if [ -f "${ZIP}" ]; then
rm -f "${ZIP}"
fi
zip -r -X -q "${ZIP}" ${NAME}/
rm -rf ${NAME}
cd - || exit
echo "[done]"
}
function lookup-version() {
FILE=$1
VERSION_DATA=$(cat "$FILE")
re="Version[ ]+=[ ]+\"([0-9.]+)\""
if [[ $VERSION_DATA =~ $re ]]; then
VERSION=${BASH_REMATCH[1]}
echo "$VERSION"
else
echo "could not match version"
exit
fi
}
build "$1" "$2"

5
EdgeUser/build/configs/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
server.yaml
api.yaml
api_user.yaml
*.pem
*.key

View File

@@ -0,0 +1,3 @@
rpc.endpoints: [ "http://127.0.0.1:8003" ]
nodeId: ""
secret: ""

View File

@@ -0,0 +1,16 @@
# environment code
env: prod
# http
http:
"on": true
listen: [ "0.0.0.0:7799" ]
# https
https:
"on": false
listen: [ "0.0.0.0:443"]
cert: ""
key: ""

View File

@@ -0,0 +1,22 @@
#!/usr/bin/env bash
JS_ROOT=../web/public/js
echo "generating component.src.js ..."
go run -tags=plus ../cmd/edge-user/main.go generate
if [ "$(which uglifyjs)" ]; then
echo "compress to component.js ..."
uglifyjs --compress --mangle -- ${JS_ROOT}/components.src.js > ${JS_ROOT}/components.js
echo "compress to utils.min.js ..."
uglifyjs --compress --mangle -- ${JS_ROOT}/utils.js > ${JS_ROOT}/utils.min.js
else
echo "copy to component.js ..."
cp ${JS_ROOT}/components.src.js ${JS_ROOT}/components.js
echo "copy to utils.min.js ..."
cp ${JS_ROOT}/utils.js ${JS_ROOT}/utils.min.js
fi
echo "ok"

1
EdgeUser/build/logs/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
*.log

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

View File

@@ -0,0 +1 @@
import{c as e,o as a,L as t,S as c}from"./app-xg-RHuhr.js";const o={__name:"index",setup(p){return(r,s)=>(a(),e(t,{"active-top-menu":"products"}))}};c({app:o});

Binary file not shown.

View File

@@ -0,0 +1 @@
import{D as c,c as i,w as _,L as l,o as a,a as t,u as e,e as o,t as n,S as d}from"./app-xg-RHuhr.js";const r={class:"block"},u={class:"inner-block"},p={key:0},h={class:"text-3xl font-normal mb-2"},f={class:"text-gray-600"},m=["innerHTML"],k={key:1},v={__name:"post",setup(b){const s=c.ref().value.post;return(x,T)=>(a(),i(l,null,{default:_(()=>[t("div",r,[t("div",u,[e(s)!=null?(a(),o("div",p,[t("h1",h,n(e(s).subject),1),t("div",f,n(e(s).publishedTime),1),t("div",{innerHTML:e(s).body},null,8,m)])):(a(),o("div",k,"POST NOT FOUND"))])])]),_:1}))}};d({app:v});

View File

@@ -0,0 +1 @@
.p-breadcrumb[data-v-3cc2e4a8]{border:none;margin-left:-1rem}h2[data-v-3cc2e4a8]{text-align:center;margin-bottom:2rem}.summary-box[data-v-3cc2e4a8]{position:relative}.summary-box .description-box[data-v-3cc2e4a8]{margin-right:42rem}.summary-box .description-box p.title[data-v-3cc2e4a8]{font-weight:700}.summary-box .description-box i.pi-check[data-v-3cc2e4a8]{color:var(--primary-600);font-size:.9rem}.summary-box .image-box[data-v-3cc2e4a8]{position:absolute;top:0;right:2rem}.summary-box .image-box[data-v-3cc2e4a8] img{width:26rem!important}.summary-box .second-menubar[data-v-3cc2e4a8]{margin-top:4rem}.news-box[data-v-3cc2e4a8]{padding:0}.news-box li[data-v-3cc2e4a8]{width:33%}.news-box li a[data-v-3cc2e4a8]{color:var(--text-color);text-decoration:none}.news-box li a[data-v-3cc2e4a8]:hover{color:var(--primary-color)}.news-box li span.date-span[data-v-3cc2e4a8]{color:var(--gray-600)}.plans-box .plan-box[data-v-3cc2e4a8]{border:1px var(--gray-400) solid;width:16rem;margin-right:1.5rem;margin-top:1.5rem;padding:1rem}.plans-box .plan-box .value[data-v-3cc2e4a8]{font-size:1.4rem}.scenes-box[data-v-3cc2e4a8]{height:21rem}.scenes-box .p-tabview-panel .content-box[data-v-3cc2e4a8]{position:relative}.scenes-box .p-tabview-panel .content-box .description-box[data-v-3cc2e4a8]{margin-right:40rem}.scenes-box .p-tabview-panel .content-box .description-box p.title[data-v-3cc2e4a8]{font-weight:700;font-size:1.1rem}.scenes-box .p-tabview-panel .content-box .description-box i.pi-check[data-v-3cc2e4a8]{color:var(--primary-600);font-size:.9rem}.scenes-box .p-tabview-panel .content-box .image-box[data-v-3cc2e4a8]{position:absolute;top:0;right:2rem}.scenes-box .p-tabview-panel .content-box .image-box[data-v-3cc2e4a8] img{width:26rem!important}.docs-box .card[data-v-3cc2e4a8]{width:14rem;border:1px solid var(--gray-300);position:relative;color:var(--text-color);text-decoration:none;padding-left:1rem;padding-top:1.1rem;cursor:pointer}.docs-box .card p[data-v-3cc2e4a8]{display:block;color:var(--gray-600)}.docs-box .card i[data-v-3cc2e4a8]{position:absolute;top:1rem;right:1rem;color:var(--primary-color);display:none}.docs-box .card[data-v-3cc2e4a8]:hover{background:var(--gray-100)}.docs-box .card:hover i[data-v-3cc2e4a8]{display:inline}

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 285 KiB

View File

@@ -0,0 +1 @@
.summary-box[data-v-d88b0aa3]{position:relative;height:20rem}.summary-box .description-box[data-v-d88b0aa3]{margin-right:42rem}.summary-box .description-box p.title[data-v-d88b0aa3]{font-weight:700}.summary-box .description-box i.pi-check[data-v-d88b0aa3]{color:var(--primary-600);font-size:.9rem}.summary-box .image-box[data-v-d88b0aa3]{position:absolute;top:0;right:2rem}.summary-box .image-box[data-v-d88b0aa3] img{width:26rem!important}

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View File

@@ -0,0 +1 @@
import{_ as c,c as e,w as i,L as _,o as n,a as s,b as a,u as d,p as r,d as p,S as l}from"./app-xg-RHuhr.js";import{_ as h,a as u,c as m}from"./app-y9DE6Loj.js";const o=t=>(r("data-v-d88b0aa3"),t=t(),p(),t),b={class:"block"},v={class:"inner-block"},x={class:"summary-box"},f={class:"description-box"},C=o(()=>s("h1",{class:"text-4xl font-normal"},"CDN",-1)),N=o(()=>s("p",null," CDN是内容分发网络Content Delivery Network的简称可以帮助我们将内容快速地分发到不同的区域和运营商包括HTML页面、Javascript文件、CSS文件及音视频文件等。 ",-1)),S=o(()=>s("p",null," 同时CDN也能保护我们的网站免受攻击比如常见的CC攻击和SQL注入攻击。 ",-1)),g={class:"button-box"},k={href:"/portal/products/cdn"},w={class:"image-box mt-6"},D={__name:"index",setup(t){return(L,y)=>(n(),e(_,{"active-top-menu":"index"},{default:i(()=>[s("div",b,[s("div",v,[s("div",x,[s("div",f,[C,N,S,s("div",g,[s("a",k,[a(h,{label:"查看CDN产品",icon:"pi pi-arrow-right right","icon-pos":"right"})])])]),s("div",w,[a(u,{src:d(m)},null,8,["src"])])])])])]),_:1}))}},I=c(D,[["__scopeId","data-v-d88b0aa3"]]);l({app:I});

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>首页</title>
<script type="module" crossorigin src="/portal/assets/app-s2Be9d_l.js"></script>
<link rel="modulepreload" crossorigin href="/portal/assets/app-xg-RHuhr.js">
<link rel="modulepreload" crossorigin href="/portal/assets/app-y9DE6Loj.js">
<link rel="stylesheet" crossorigin href="/portal/assets/app-Sl5tMoza.css">
<link rel="stylesheet" crossorigin href="/portal/assets/app-c0y2cgnM.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>文章详情</title>
<script type="module" crossorigin src="/portal/assets/app-PJ3xFsWk.js"></script>
<link rel="modulepreload" crossorigin href="/portal/assets/app-xg-RHuhr.js">
<link rel="stylesheet" crossorigin href="/portal/assets/app-Sl5tMoza.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

View File

@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CDN</title>
<script type="module" crossorigin src="/portal/assets/app-bCBw0IDq.js"></script>
<link rel="modulepreload" crossorigin href="/portal/assets/app-xg-RHuhr.js">
<link rel="modulepreload" crossorigin href="/portal/assets/app-y9DE6Loj.js">
<link rel="stylesheet" crossorigin href="/portal/assets/app-Sl5tMoza.css">
<link rel="stylesheet" crossorigin href="/portal/assets/app-Pf8WSNyw.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>产品</title>
<script type="module" crossorigin src="/portal/assets/app-IZWrvoZF.js"></script>
<link rel="modulepreload" crossorigin href="/portal/assets/app-xg-RHuhr.js">
<link rel="stylesheet" crossorigin href="/portal/assets/app-Sl5tMoza.css">
</head>
<body>
<div id="app"></div>
</body>
</html>