electron-builder extraResources bundled ../dashcaddy-api wholesale, so every
built AppImage/deb/NSIS/mac-zip carried Sami's PRODUCTION pki/root.key,
pki/intermediate.key, generated-certs/* TLS keys, data/, logs.
Fix: denylist excludes all key/cert extensions, secret dirs, pki/**,
generated-certs/**, data/**, .env*; Dockerfile needs only *.js,src/,routes/,
openapi.yaml,VERSION (verified). New scripts/check-artifact-secrets.sh
(build:scan) greps built trees for key material + PRIVATE KEY----- blocks.
Verified: pre-fix build leaked keys (find . -name '*.key' -> root.key etc);
post-fix build clean on linux/win/mac resource trees (scanner passes).
Judge: qwen3.8-max stand-in lane, round1 B+7 polish, polish folded,
round2 A 0 blocking. Verdicts /tmp/judge-batch3a-{verdict,r2-verdict}.json
145 lines
3.3 KiB
JSON
145 lines
3.3 KiB
JSON
{
|
|
"name": "dashcaddy-installer",
|
|
"version": "1.0.0",
|
|
"description": "Cross-platform installer for DashCaddy platform",
|
|
"main": "src/main/index.js",
|
|
"scripts": {
|
|
"start": "electron .",
|
|
"dev": "electron . --dev",
|
|
"test": "jest",
|
|
"test:watch": "jest --watch",
|
|
"build": "electron-builder",
|
|
"build:win": "electron-builder --win",
|
|
"build:mac": "electron-builder --mac",
|
|
"build:linux": "electron-builder --linux",
|
|
"build:scan": "bash scripts/check-artifact-secrets.sh build-output"
|
|
},
|
|
"keywords": [
|
|
"dashcaddy",
|
|
"installer",
|
|
"docker",
|
|
"caddy"
|
|
],
|
|
"author": {
|
|
"name": "DashCaddy Team",
|
|
"email": "dashcaddy@sami.cloud"
|
|
},
|
|
"homepage": "https://github.com/dashcaddy/dashcaddy",
|
|
"license": "MIT",
|
|
"devDependencies": {
|
|
"electron": "^28.3.3",
|
|
"electron-builder": "^24.9.1",
|
|
"fast-check": "^3.15.0",
|
|
"jest": "^29.7.0"
|
|
},
|
|
"build": {
|
|
"appId": "com.dashcaddy.installer",
|
|
"productName": "DashCaddy Installer",
|
|
"asar": true,
|
|
"directories": {
|
|
"output": "build-output"
|
|
},
|
|
"files": [
|
|
"src/**/*",
|
|
"assets/**/*",
|
|
"templates/**/*"
|
|
],
|
|
"extraResources": [
|
|
{
|
|
"from": "../status",
|
|
"to": "status",
|
|
"filter": [
|
|
"**/*",
|
|
"!node_modules/**",
|
|
"!.git/**",
|
|
"!**/*.test.js",
|
|
"!**/*.spec.js"
|
|
]
|
|
},
|
|
{
|
|
"from": "../dashcaddy-api",
|
|
"to": "dashcaddy-api",
|
|
"filter": [
|
|
"**/*",
|
|
"!node_modules/**",
|
|
"!.git/**",
|
|
"!**/*.test.js",
|
|
"!**/*.spec.js",
|
|
"!**/*.key",
|
|
"!**/*.pem",
|
|
"!**/*.p12",
|
|
"!**/*.pfx",
|
|
"!**/*.jks",
|
|
"!**/*.keystore",
|
|
"!**/*.ppk",
|
|
"!**/*.asc",
|
|
"!**/id_rsa*",
|
|
"!**/id_ed25519*",
|
|
"!**/secrets/**",
|
|
"!**/.ssh/**",
|
|
"!**/.aws/**",
|
|
"!**/.gnupg/**",
|
|
"!**/*.local",
|
|
"!**/.npmrc",
|
|
"!**/.netrc",
|
|
"!pki/**",
|
|
"!ca/**/*.key",
|
|
"!ca/**/*.der",
|
|
"!ca/**/*.mobileconfig",
|
|
"!ca/**/*.p12",
|
|
"!ca/**/*.pem",
|
|
"!ca/intermediate.crt",
|
|
"!ca/root.crt",
|
|
"!ca/scripts/**",
|
|
"!generated-certs/**",
|
|
"!data/**",
|
|
"!coverage/**",
|
|
"!audit-log.json",
|
|
"!error.log",
|
|
"!.env",
|
|
"!.env.*",
|
|
"!openapi.yaml.bak",
|
|
"!dist/**"
|
|
]
|
|
}
|
|
],
|
|
"icon": "assets/favicon.ico",
|
|
"win": {
|
|
"target": [
|
|
"nsis",
|
|
"portable"
|
|
],
|
|
"icon": "assets/favicon.ico",
|
|
"signAndEditExecutable": false
|
|
},
|
|
"mac": {
|
|
"target": [
|
|
"zip"
|
|
],
|
|
"icon": "assets/dashcaddy-logo.png"
|
|
},
|
|
"linux": {
|
|
"target": [
|
|
"AppImage",
|
|
"deb"
|
|
],
|
|
"icon": "assets/dashcaddy-logo.png",
|
|
"category": "Utility"
|
|
},
|
|
"nsis": {
|
|
"oneClick": false,
|
|
"allowToChangeInstallationDirectory": true,
|
|
"installerIcon": "assets/icon.ico",
|
|
"uninstallerIcon": "assets/icon.ico",
|
|
"installerHeaderIcon": "assets/icon.ico"
|
|
},
|
|
"publish": {
|
|
"provider": "generic",
|
|
"url": "https://get.dashcaddy.net/release/"
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"electron-updater": "^6.8.9"
|
|
}
|
|
}
|