@networkpro/web 1.12.7 → 1.12.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -2
- package/README.md +27 -0
- package/cspell.json +3 -0
- package/package.json +7 -7
- package/src/app.html +1 -1
- package/src/lib/components/foss/FossItemContent.svelte +2 -2
- package/src/lib/data/fossData.js +8 -1
- package/src/lib/images.js +15 -8
- package/src/lib/img/qr/pgp-contact.webp +0 -0
- package/src/lib/img/qr/pgp-github.webp +0 -0
- package/src/lib/img/qr/pgp-security.png +0 -0
- package/src/lib/img/qr/pgp-security.webp +0 -0
- package/src/lib/img/qr/pgp-support.webp +0 -0
- package/src/lib/img/qr/vcard.webp +0 -0
- package/src/lib/meta.js +5 -0
- package/src/lib/pages/AboutContent.svelte +62 -32
- package/src/lib/pages/LicenseContent.svelte +13 -19
- package/src/lib/pages/PGPContent.svelte +110 -0
- package/src/lib/pages/TermsConditionsContent.svelte +1 -1
- package/src/lib/styles/css/default.css +18 -0
- package/src/lib/styles/css/style.css +13 -4
- package/src/lib/styles/global.min.css +1 -1
- package/src/routes/pgp/+page.server.js +18 -0
- package/src/routes/pgp/+page.svelte +61 -0
- package/src/routes/pgp/[key]/+server.js +35 -0
- package/src/service-worker.js +16 -5
- package/static/{assets → bin}/license/CC-BY-4.0.html +1 -1
- package/static/{assets → bin}/license/COPYING.html +1 -1
- package/static/pgp/pgp-contact.webp +0 -0
- package/static/pgp/pgp-github.webp +0 -0
- package/static/pgp/pgp-security.png +0 -0
- package/static/pgp/pgp-security.webp +0 -0
- package/static/pgp/pgp-support.webp +0 -0
- package/static/pgp/security@s.neteng.pro.asc +22 -0
- package/static/pgp/vcard.webp +0 -0
- package/static/sitemap.xml +13 -13
- package/static/assets/bin/contact.vcf +0 -13
- package/static/assets/bin/contact@s.neteng.pro.asc +0 -17
- package/static/assets/bin/github@sl.neteng.cc.asc +0 -29
- package/static/assets/bin/linksheet.json +0 -8
- package/static/assets/bin/support@neteng.pro.asc +0 -47
- package/static/assets/consulting-terms.pdf +0 -0
- /package/{assets → static/bin}/consulting-terms.pdf +0 -0
- /package/{assets → static}/bin/contact.vcf +0 -0
- /package/static/{assets → bin}/license/CC-BY-4.0-rdfa.xml +0 -0
- /package/static/{assets → bin}/license/CC-BY-4.0.md +0 -0
- /package/static/{assets → bin}/license/CC-BY-4.0.txt +0 -0
- /package/static/{assets → bin}/license/CC-BY-4.0.xml +0 -0
- /package/static/{assets → bin}/license/COPYING-rdfa.xml +0 -0
- /package/static/{assets → bin}/license/COPYING.md +0 -0
- /package/static/{assets → bin}/license/COPYING.odt +0 -0
- /package/static/{assets → bin}/license/COPYING.txt +0 -0
- /package/{assets → static}/bin/linksheet.json +0 -0
- /package/{assets/bin → static/pgp}/contact@s.neteng.pro.asc +0 -0
- /package/{assets/bin → static/pgp}/github@sl.neteng.cc.asc +0 -0
- /package/static/{img/qr → pgp}/pgp-contact.png +0 -0
- /package/static/{img/qr → pgp}/pgp-github.png +0 -0
- /package/static/{img/qr → pgp}/pgp-support.png +0 -0
- /package/{assets/bin → static/pgp}/support@neteng.pro.asc +0 -0
- /package/static/{img/qr → pgp}/vcard.png +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -22,7 +22,58 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
|
-
## [1.12.
|
|
25
|
+
## [1.12.8] - 2025-06-11
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- Created `/pgp` route with `+page.svelte`, `+page.server.js`, and supporting structure.
|
|
30
|
+
- Added `src/lib/pages/PGPContent.svelte` for rendering PGP key information.
|
|
31
|
+
- Dynamic routing with `src/routes/pgp/[key]/+server.js` for serving `.asc` files with correct MIME type (`application/pgp-keys`).
|
|
32
|
+
- Support for serving QR code images statically in `/pgp` and dynamically in `/about`.
|
|
33
|
+
- Added WebP versions of QR code images in `static/pgp/` and `src/lib/img/qr/`.
|
|
34
|
+
- Set up dynamic import for QR images in `/about` route via `src/lib/images.js`.
|
|
35
|
+
- Enhanced accessibility styles for focus-visible states on links.
|
|
36
|
+
- Improved copy-to-clipboard buttons for PGP fingerprints.
|
|
37
|
+
- Defined `ContactAssets` typedef and expanded `pgpKeys` data structure for strict typing.
|
|
38
|
+
- README updated with new section: `static/pgp/` Directory Structure.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Modified `/about` route to reference `/pgp` and use dynamic WebP images for PGP keys.
|
|
43
|
+
- Adjusted `src/lib/meta.js` to include metadata for the `/pgp` route.
|
|
44
|
+
- Canonical links in `static/bin/CC-BY-4.0.html` and `static/bin/COPYING.html` updated to reflect new paths.
|
|
45
|
+
- Service worker updated to exclude `.asc` files in `/pgp`, while continuing to cache QR image assets.
|
|
46
|
+
- Moved license and binary files from `static/assets` to `static/bin`.
|
|
47
|
+
- File paths updated on the `/license` route to reflect the new `/bin/license` location.
|
|
48
|
+
- Updated sitemap.xml.
|
|
49
|
+
- Updated `.prettierignore` to ignore `static/bin/license`.
|
|
50
|
+
- Updated LinkSheet download in `FossItemContent.svelte` to reference `bin/linksheet.json`.
|
|
51
|
+
- Added dynamic `lsheetDl` constant in `fossData.js`.
|
|
52
|
+
- Updated `TermsConditionsContent.svelte` to point to `bin/consulting-terms.pdf`.
|
|
53
|
+
- Updated `LicenseContent.svelte` to:
|
|
54
|
+
- View HTML license file.
|
|
55
|
+
- Use `download` attribute for all other formats.
|
|
56
|
+
- Updated `generator` meta tag to reflect `SvelteKit 2.21.4`
|
|
57
|
+
- Upgraded dependencies:
|
|
58
|
+
- `@playwright/test` updated from `^1.52.0` → `^1.53.0`
|
|
59
|
+
- `@sveltejs/kit` updated from `2.21.3` → `2.21.4`
|
|
60
|
+
- `eslint-plugin-svelte` updated from `^3.9.1` → `^3.9.2`
|
|
61
|
+
- `playwright` updated from `^1.52.0` → `^1.53.0`
|
|
62
|
+
- `posthog-js` updated from `^1.249.5` → `^1.250.1`
|
|
63
|
+
- `svelte` updated from `5.33.18` → `5.33.19`
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
|
|
67
|
+
- Resolved TypeScript and JSDoc typing errors in `AboutContent.svelte` and `PGPContent.svelte`.
|
|
68
|
+
- Verified fallback behavior on `/pgp/[key]` for unknown files:
|
|
69
|
+
- `.asc` files return "File not found".
|
|
70
|
+
- All others fall through to 404.
|
|
71
|
+
- Adjusted `function copy(text)` with explicit JSDoc type for parameter.
|
|
72
|
+
- Removed stale references to deleted assets in service worker config.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## [1.12.7] - 2025-06-09
|
|
26
77
|
|
|
27
78
|
### Changed
|
|
28
79
|
|
|
@@ -198,7 +249,8 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
198
249
|
|
|
199
250
|
<!-- Link references -->
|
|
200
251
|
|
|
201
|
-
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.12.
|
|
252
|
+
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.12.8...HEAD
|
|
253
|
+
[1.12.8]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.12.8
|
|
202
254
|
[1.12.7]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.12.7
|
|
203
255
|
[1.12.6]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.12.6
|
|
204
256
|
[1.12.5]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.12.5
|
package/README.md
CHANGED
|
@@ -105,6 +105,33 @@ This project follows the principles of [Keep a Changelog](https://keepachangelog
|
|
|
105
105
|
|
|
106
106
|
|
|
107
107
|
|
|
108
|
+
### 🔐 `static/pgp/` Directory Structure
|
|
109
|
+
|
|
110
|
+
This directory contains public PGP key files and their corresponding QR codes.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
static/
|
|
114
|
+
├── pgp/
|
|
115
|
+
│ ├── contact@s.neteng.pro.asc # Public key for secure email
|
|
116
|
+
│ ├── pgp-contact.png # QR code (PNG) for secure email key
|
|
117
|
+
│ ├── pgp-contact.webp # Optimized WebP version of the QR code
|
|
118
|
+
│ ├── pgp-security.png # QR code (PNG) for security contact key
|
|
119
|
+
│ ├── pgp-security.webp # WebP version of the security QR code
|
|
120
|
+
│ ├── pgp-support.png # QR code (PNG) for support key
|
|
121
|
+
│ ├── pgp-support.webp # WebP version of the support QR code
|
|
122
|
+
│ ├── security@s.neteng.pro.asc # Public key for security contact
|
|
123
|
+
│ ├── support@neteng.pro.asc # Public key for general support
|
|
124
|
+
└── ...
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- `.asc` files are **excluded from service worker precaching** but served directly via the `/pgp/[key]` route.
|
|
128
|
+
- QR code images are **served statically** by the `/pgp` route using `<picture>` elements.
|
|
129
|
+
- **WebP versions** are also used in the `/pgp` route, while the `/about` route imports **dynamic equivalents** from `src/lib/img/qr`.
|
|
130
|
+
- This route does **not use fallback rendering**; only explicitly defined files are available and expected to resolve.
|
|
131
|
+
- A dynamic `[key]/+server.js` handler under `src/routes/pgp/` serves the `.asc` files with appropriate `Content-Type` and download headers.
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
108
135
|
### E2E Test Structure
|
|
109
136
|
|
|
110
137
|
End-to-end tests are located in `tests/e2e/` and organized by feature or route:
|
package/cspell.json
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"lighthouserc",
|
|
34
34
|
"lightningcss",
|
|
35
35
|
"linksheet",
|
|
36
|
+
"lsheet",
|
|
36
37
|
"Mailvelope",
|
|
37
38
|
"Maricopa",
|
|
38
39
|
"mdsvex",
|
|
@@ -51,7 +52,9 @@
|
|
|
51
52
|
"NWPRO",
|
|
52
53
|
"obtainium",
|
|
53
54
|
"openpgp",
|
|
55
|
+
"opgp",
|
|
54
56
|
"posthog",
|
|
57
|
+
"precaching",
|
|
55
58
|
"prefs",
|
|
56
59
|
"publickey",
|
|
57
60
|
"reconsent",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@networkpro/web",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.12.
|
|
4
|
+
"version": "1.12.8",
|
|
5
5
|
"description": "Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro Strategies",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"advisory",
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"dompurify": "^3.2.6",
|
|
83
|
-
"posthog-js": "^1.
|
|
83
|
+
"posthog-js": "^1.250.1",
|
|
84
84
|
"semver": "^7.7.2",
|
|
85
|
-
"svelte": "5.33.
|
|
85
|
+
"svelte": "5.33.19"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
88
|
"@eslint/compat": "^1.2.9",
|
|
89
89
|
"@eslint/js": "^9.28.0",
|
|
90
90
|
"@lhci/cli": "^0.15.0",
|
|
91
|
-
"@playwright/test": "^1.
|
|
91
|
+
"@playwright/test": "^1.53.0",
|
|
92
92
|
"@sveltejs/adapter-netlify": "^5.0.2",
|
|
93
|
-
"@sveltejs/kit": "2.21.
|
|
93
|
+
"@sveltejs/kit": "2.21.4",
|
|
94
94
|
"@sveltejs/vite-plugin-svelte": "5.1.0",
|
|
95
95
|
"@testing-library/jest-dom": "^6.6.3",
|
|
96
96
|
"@testing-library/svelte": "^5.2.8",
|
|
@@ -100,14 +100,14 @@
|
|
|
100
100
|
"eslint": "^9.28.0",
|
|
101
101
|
"eslint-config-prettier": "^10.1.5",
|
|
102
102
|
"eslint-plugin-jsdoc": "^50.7.1",
|
|
103
|
-
"eslint-plugin-svelte": "^3.9.
|
|
103
|
+
"eslint-plugin-svelte": "^3.9.2",
|
|
104
104
|
"globals": "^16.2.0",
|
|
105
105
|
"jsdom": "^26.1.0",
|
|
106
106
|
"lightningcss": "^1.30.1",
|
|
107
107
|
"markdownlint": "^0.38.0",
|
|
108
108
|
"markdownlint-cli2": "^0.18.1",
|
|
109
109
|
"mdsvex": "^0.12.6",
|
|
110
|
-
"playwright": "^1.
|
|
110
|
+
"playwright": "^1.53.0",
|
|
111
111
|
"postcss": "^8.5.4",
|
|
112
112
|
"prettier": "^3.5.3",
|
|
113
113
|
"prettier-plugin-svelte": "^3.4.0",
|
package/src/app.html
CHANGED
|
@@ -126,11 +126,11 @@ This file is part of Network Pro.
|
|
|
126
126
|
><i class="fas fa-file-arrow-down" style="margin-left: 8px;"></i
|
|
127
127
|
></span>
|
|
128
128
|
<a
|
|
129
|
-
href="/
|
|
129
|
+
href="/bin/linksheet.json"
|
|
130
130
|
type="application/json"
|
|
131
131
|
download
|
|
132
132
|
style="margin-left: 8px;"
|
|
133
|
-
target=
|
|
133
|
+
target={PAGE.BLANK}>
|
|
134
134
|
Obtainium App Config
|
|
135
135
|
</a>
|
|
136
136
|
</p>
|
package/src/lib/data/fossData.js
CHANGED
|
@@ -7,8 +7,15 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== */
|
|
8
8
|
|
|
9
9
|
// Import FOSS images
|
|
10
|
+
import { base } from "$app/paths";
|
|
10
11
|
import { acodePng, acodeWbp, eauthPng, eauthWbp, hboardPng, hboardWbp, lsheetPng, lsheetWbp, pmxPng, pmxWbp, squirclePng, squircleWbp, tosPng, tosWbp, urlPng, urlWbp } from "$lib";
|
|
11
12
|
|
|
13
|
+
/**
|
|
14
|
+
* URL to the LinkSheet config file, using the base path
|
|
15
|
+
* @type {string}
|
|
16
|
+
*/
|
|
17
|
+
const lsheetDl = `${base}/bin/linksheet.json`;
|
|
18
|
+
|
|
12
19
|
export const fossData = [
|
|
13
20
|
{
|
|
14
21
|
id: "squircle",
|
|
@@ -510,7 +517,7 @@ export const fossData = [
|
|
|
510
517
|
hideLabels: true, // Special flag to control rendering
|
|
511
518
|
downloadText: "Obtainium App Config",
|
|
512
519
|
downloadHref:
|
|
513
|
-
|
|
520
|
+
{lsheetDl},
|
|
514
521
|
},
|
|
515
522
|
{
|
|
516
523
|
label: "GitHub",
|
package/src/lib/images.js
CHANGED
|
@@ -15,7 +15,7 @@ This file is part of Network Pro.
|
|
|
15
15
|
* @description Provides convenient access to images in the src/lib/img directory
|
|
16
16
|
* @module src/lib
|
|
17
17
|
* @author SunDevil311
|
|
18
|
-
* @updated 2025-
|
|
18
|
+
* @updated 2025-06-09
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
// Import favicon images
|
|
@@ -55,9 +55,14 @@ import urlPng from "$lib/img/posts/urlcheck.png";
|
|
|
55
55
|
import urlWbp from "$lib/img/posts/urlcheck.webp";
|
|
56
56
|
|
|
57
57
|
// Import QR code images
|
|
58
|
-
import
|
|
59
|
-
import
|
|
60
|
-
import
|
|
58
|
+
import pgpContactPng from "$lib/img/qr/pgp-contact.png";
|
|
59
|
+
import pgpContactWbp from "$lib/img/qr/pgp-contact.webp";
|
|
60
|
+
import pgpSecurityPng from "$lib/img/qr/pgp-security.png";
|
|
61
|
+
import pgpSecurityWbp from "$lib/img/qr/pgp-security.webp";
|
|
62
|
+
import pgpSupportPng from "$lib/img/qr/pgp-support.png";
|
|
63
|
+
import pgpSupportWbp from "$lib/img/qr/pgp-support.webp";
|
|
64
|
+
import vcfPng from "$lib/img/qr/vcard.png";
|
|
65
|
+
import vcfWbp from "$lib/img/qr/vcard.webp";
|
|
61
66
|
|
|
62
67
|
// Re-export all imports
|
|
63
68
|
export {
|
|
@@ -79,9 +84,10 @@ export {
|
|
|
79
84
|
lsheetWbp,
|
|
80
85
|
obtainiumPng,
|
|
81
86
|
obtainiumWbp,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
87
|
+
pgpContactPng,
|
|
88
|
+
pgpContactWbp, pgpSecurityPng,
|
|
89
|
+
pgpSecurityWbp, pgpSupportPng,
|
|
90
|
+
pgpSupportWbp, pmxPng,
|
|
85
91
|
pmxWbp,
|
|
86
92
|
squirclePng,
|
|
87
93
|
squircleWbp,
|
|
@@ -89,7 +95,8 @@ export {
|
|
|
89
95
|
tosWbp,
|
|
90
96
|
urlPng,
|
|
91
97
|
urlWbp,
|
|
92
|
-
|
|
98
|
+
vcfPng,
|
|
99
|
+
vcfWbp
|
|
93
100
|
};
|
|
94
101
|
|
|
95
102
|
// cspell:ignore eauth hboard
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/src/lib/meta.js
CHANGED
|
@@ -56,6 +56,11 @@ const meta = {
|
|
|
56
56
|
description:
|
|
57
57
|
"Privacy Dashboard | Security, Networking, Privacy — Network Pro™",
|
|
58
58
|
},
|
|
59
|
+
"/pgp": {
|
|
60
|
+
title: "Public PGP Keys — Network Pro™",
|
|
61
|
+
description:
|
|
62
|
+
"Public encryption keys for secure communication | Security, Networking, Privacy — Network Pro™",
|
|
63
|
+
},
|
|
59
64
|
// Excludes redirect-only routes like /contact, /consultation, /privacy-rights
|
|
60
65
|
};
|
|
61
66
|
|
|
@@ -7,14 +7,21 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== -->
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
pgpContactPng,
|
|
12
|
+
pgpContactWbp,
|
|
13
|
+
pgpSupportPng,
|
|
14
|
+
pgpSupportWbp,
|
|
15
|
+
vcfPng,
|
|
16
|
+
vcfWbp,
|
|
17
|
+
} from "$lib";
|
|
11
18
|
import { base } from "$app/paths";
|
|
12
19
|
import { CONSTANTS } from "$lib";
|
|
13
20
|
|
|
14
21
|
// Log the base path to verify its value
|
|
15
22
|
//console.log("Base path:", base);
|
|
16
23
|
|
|
17
|
-
console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
24
|
+
//console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
18
25
|
|
|
19
26
|
const { COMPANY_INFO, PAGE } = CONSTANTS;
|
|
20
27
|
|
|
@@ -24,6 +31,12 @@ This file is part of Network Pro.
|
|
|
24
31
|
*/
|
|
25
32
|
const contactLink = `${base}/contact`;
|
|
26
33
|
|
|
34
|
+
/**
|
|
35
|
+
* URL to the PGP route, using the base path
|
|
36
|
+
* @type {string}
|
|
37
|
+
*/
|
|
38
|
+
const pgpLink = `${base}/pgp`;
|
|
39
|
+
|
|
27
40
|
/**
|
|
28
41
|
* HTML attribute for async image decoding
|
|
29
42
|
* @type {"async" | "sync" | "auto"}
|
|
@@ -70,6 +83,7 @@ This file is part of Network Pro.
|
|
|
70
83
|
* @type {Array<{
|
|
71
84
|
* label: string,
|
|
72
85
|
* qrSrc: string,
|
|
86
|
+
* qrWbp: string,
|
|
73
87
|
* keySearch: string,
|
|
74
88
|
* fingerprint: string[]
|
|
75
89
|
* }>}
|
|
@@ -77,13 +91,15 @@ This file is part of Network Pro.
|
|
|
77
91
|
const pgpKeys = [
|
|
78
92
|
{
|
|
79
93
|
label: "support@neteng.pro",
|
|
80
|
-
qrSrc:
|
|
94
|
+
qrSrc: pgpSupportPng,
|
|
95
|
+
qrWbp: pgpSupportWbp,
|
|
81
96
|
keySearch: "https://keys.openpgp.org/search?q=support%40neteng.pro",
|
|
82
97
|
fingerprint: ["6590B992E2E3EFF12738", "7BCE2AF093E9DEC61BA0"],
|
|
83
98
|
},
|
|
84
99
|
{
|
|
85
100
|
label: "contact@s.neteng.pro",
|
|
86
|
-
qrSrc:
|
|
101
|
+
qrSrc: pgpContactPng,
|
|
102
|
+
qrWbp: pgpContactWbp,
|
|
87
103
|
keySearch: "https://keys.openpgp.org/search?q=contact%40s.neteng.pro",
|
|
88
104
|
fingerprint: ["DF118BAA6C2D9DCDEBDC", "2DDCF99373499495F957"],
|
|
89
105
|
},
|
|
@@ -91,18 +107,20 @@ This file is part of Network Pro.
|
|
|
91
107
|
|
|
92
108
|
/**
|
|
93
109
|
* @typedef {Object} ContactAssets
|
|
94
|
-
* @property {string} vcf
|
|
95
|
-
* @property {string} qrSrc
|
|
96
|
-
* @property {string}
|
|
97
|
-
* @property {string}
|
|
110
|
+
* @property {string} vcf
|
|
111
|
+
* @property {string} qrSrc
|
|
112
|
+
* @property {string} qrWbp
|
|
113
|
+
* @property {string} supportAsc
|
|
114
|
+
* @property {string} contactAsc
|
|
98
115
|
*/
|
|
99
116
|
|
|
100
117
|
/** @type {ContactAssets} */
|
|
101
118
|
const contactAssets = {
|
|
102
|
-
vcf: "/
|
|
103
|
-
qrSrc:
|
|
104
|
-
|
|
105
|
-
|
|
119
|
+
vcf: "/bin/contact.vcf",
|
|
120
|
+
qrSrc: vcfPng,
|
|
121
|
+
qrWbp: vcfWbp,
|
|
122
|
+
supportAsc: "/pgp/support@neteng.pro.asc",
|
|
123
|
+
contactAsc: "/pgp/contact@s.neteng.pro.asc",
|
|
106
124
|
};
|
|
107
125
|
</script>
|
|
108
126
|
|
|
@@ -210,8 +228,11 @@ This file is part of Network Pro.
|
|
|
210
228
|
<div class="spacer"></div>
|
|
211
229
|
|
|
212
230
|
<p>
|
|
213
|
-
You can find our PGP keys and a vCard
|
|
214
|
-
below.
|
|
231
|
+
You can find our PGP keys and a downloadable vCard with contact information
|
|
232
|
+
below. For a complete list of public keys, visit the <a
|
|
233
|
+
href={pgpLink}
|
|
234
|
+
target={PAGE.SELF}>dedicated PGP page</a
|
|
235
|
+
>.
|
|
215
236
|
</p>
|
|
216
237
|
|
|
217
238
|
<!-- BEGIN PGP KEYS -->
|
|
@@ -221,12 +242,15 @@ This file is part of Network Pro.
|
|
|
221
242
|
<!-- Row 0 (First row) remains unchanged -->
|
|
222
243
|
<tr>
|
|
223
244
|
<td class="pgp-col1">
|
|
224
|
-
<
|
|
225
|
-
{
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
245
|
+
<picture>
|
|
246
|
+
<source srcset={pgpKeys[0].qrWbp} type="image/webp" />
|
|
247
|
+
<img
|
|
248
|
+
{decoding}
|
|
249
|
+
{loading}
|
|
250
|
+
src={pgpKeys[0].qrSrc}
|
|
251
|
+
class="pgp-image"
|
|
252
|
+
alt={`PGP Key - ${pgpKeys[0].label}`} />
|
|
253
|
+
</picture>
|
|
230
254
|
</td>
|
|
231
255
|
<td class="pgp-col2">
|
|
232
256
|
<a rel={PAGE.REL} href={pgpKeys[0].keySearch} target={PAGE.BLANK}>
|
|
@@ -275,24 +299,30 @@ This file is part of Network Pro.
|
|
|
275
299
|
</p>
|
|
276
300
|
</td>
|
|
277
301
|
<td class="pgp-col2">
|
|
278
|
-
<
|
|
279
|
-
{
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
302
|
+
<picture>
|
|
303
|
+
<source srcset={pgpKeys[1].qrWbp} type="image/webp" />
|
|
304
|
+
<img
|
|
305
|
+
{decoding}
|
|
306
|
+
{loading}
|
|
307
|
+
src={pgpKeys[1].qrSrc}
|
|
308
|
+
class="pgp-image"
|
|
309
|
+
alt={`PGP Key - ${pgpKeys[1].label}`} />
|
|
310
|
+
</picture>
|
|
284
311
|
</td>
|
|
285
312
|
</tr>
|
|
286
313
|
|
|
287
314
|
<!-- Row 2 (Third row) remains unchanged -->
|
|
288
315
|
<tr>
|
|
289
316
|
<td class="pgp-col1">
|
|
290
|
-
<
|
|
291
|
-
{
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
317
|
+
<picture>
|
|
318
|
+
<source srcset={contactAssets.qrWbp} type="image/webp" />
|
|
319
|
+
<img
|
|
320
|
+
{decoding}
|
|
321
|
+
{loading}
|
|
322
|
+
src={contactAssets.qrSrc}
|
|
323
|
+
class="pgp-image"
|
|
324
|
+
alt="vCard" />
|
|
325
|
+
</picture>
|
|
296
326
|
</td>
|
|
297
327
|
<td class="pgp-col2">
|
|
298
328
|
<strong>vCard</strong>
|
|
@@ -218,22 +218,19 @@ This file is part of Network Pro.
|
|
|
218
218
|
</ul>
|
|
219
219
|
{:else if link.id === "cc-by"}
|
|
220
220
|
<p class={constants.classSmall}>
|
|
221
|
-
Download:
|
|
222
|
-
<a href="/
|
|
223
|
-
>HTML</a>
|
|
221
|
+
View / Download:
|
|
222
|
+
<a href="/bin/license/CC-BY-4.0.html" target={PAGE.BLANK}>HTML</a>
|
|
224
223
|
|
|
|
225
|
-
<a href="/
|
|
224
|
+
<a href="/bin/license/CC-BY-4.0.md" download target={PAGE.BLANK}
|
|
226
225
|
>Markdown</a>
|
|
227
226
|
|
|
|
228
|
-
<a href="/
|
|
227
|
+
<a href="/bin/license/CC-BY-4.0.txt" download target={PAGE.BLANK}
|
|
229
228
|
>Text</a>
|
|
230
229
|
|
|
|
231
|
-
<a
|
|
232
|
-
|
|
233
|
-
download
|
|
234
|
-
target={PAGE.BLANK}>RDFa</a>
|
|
230
|
+
<a href="/bin/license/CC-BY-4.0-rdfa.xml" download target={PAGE.BLANK}
|
|
231
|
+
>RDFa</a>
|
|
235
232
|
|
|
|
236
|
-
<a href="/
|
|
233
|
+
<a href="/bin/license/CC-BY-4.0.xml" download target={PAGE.BLANK}
|
|
237
234
|
>XMP</a>
|
|
238
235
|
</p>
|
|
239
236
|
|
|
@@ -314,21 +311,18 @@ This file is part of Network Pro.
|
|
|
314
311
|
</code>
|
|
315
312
|
{:else if link.id === "gnu-gpl"}
|
|
316
313
|
<p class={constants.classSmall}>
|
|
317
|
-
Download:
|
|
318
|
-
<a href="/
|
|
319
|
-
>HTML</a>
|
|
314
|
+
View / Download:
|
|
315
|
+
<a href="/bin/license/COPYING.html" target={PAGE.BLANK}>HTML</a>
|
|
320
316
|
|
|
|
321
|
-
<a href="/
|
|
317
|
+
<a href="/bin/license/COPYING.md" download target={PAGE.BLANK}
|
|
322
318
|
>Markdown</a>
|
|
323
319
|
|
|
|
324
|
-
<a href="/
|
|
325
|
-
>Text</a>
|
|
320
|
+
<a href="/bin/license/COPYING.txt" download target={PAGE.BLANK}>Text</a>
|
|
326
321
|
|
|
|
327
|
-
<a href="/
|
|
322
|
+
<a href="/bin/license/COPYING-rdfa.xml" download target={PAGE.BLANK}
|
|
328
323
|
>RDFa</a>
|
|
329
324
|
|
|
|
330
|
-
<a href="/
|
|
331
|
-
>ODT</a>
|
|
325
|
+
<a href="/bin/license/COPYING.odt" download target={PAGE.BLANK}>ODT</a>
|
|
332
326
|
</p>
|
|
333
327
|
|
|
334
328
|
<p>
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
<!-- ==========================================================================
|
|
2
|
+
src/lib/pages/PGPContent.svelte
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== -->
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import { base } from "$app/paths";
|
|
11
|
+
import { CONSTANTS } from "$lib";
|
|
12
|
+
|
|
13
|
+
// Log the base path to verify its value
|
|
14
|
+
//console.log("Base path:", base);
|
|
15
|
+
|
|
16
|
+
//console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
17
|
+
|
|
18
|
+
const { COMPANY_INFO, PAGE } = CONSTANTS;
|
|
19
|
+
|
|
20
|
+
const keys = [
|
|
21
|
+
{
|
|
22
|
+
name: "General Contact & Support",
|
|
23
|
+
email: "support (at) neteng.pro",
|
|
24
|
+
fingerprint: "6590 B992 E2E3 EFF1 2738 7BCE 2AF0 93E9 DEC6 1BA0",
|
|
25
|
+
opgp: "https://keys.openpgp.org/search?q=support%40neteng.pro",
|
|
26
|
+
file: "/pgp/support@neteng.pro.asc",
|
|
27
|
+
img: "pgp-support",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "Secure Email",
|
|
31
|
+
email: "contact (at) s.neteng.pro",
|
|
32
|
+
fingerprint: "DF11 8BAA 6C2D 9DCD EBDC 2DDC F993 7349 9495 F957",
|
|
33
|
+
opgp: "https://keys.openpgp.org/search?q=contact%40s.neteng.pro",
|
|
34
|
+
file: "/pgp/contact@s.neteng.pro.asc",
|
|
35
|
+
img: "pgp-contact",
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "Security Contact",
|
|
39
|
+
email: "security (at) s.neteng.pro",
|
|
40
|
+
fingerprint: "B7FE 1D4E 6CAB 3E71 4A9F DF6E 48CB 7290 C00D 0DA5",
|
|
41
|
+
opgp: null,
|
|
42
|
+
file: "/pgp/security@s.neteng.pro.asc",
|
|
43
|
+
img: "pgp-security",
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Copy a string to the clipboard
|
|
49
|
+
* @param {string} text
|
|
50
|
+
*/
|
|
51
|
+
function copy(text) {
|
|
52
|
+
navigator.clipboard.writeText(text);
|
|
53
|
+
}
|
|
54
|
+
</script>
|
|
55
|
+
|
|
56
|
+
<h1>🔐 Public PGP Keys</h1>
|
|
57
|
+
<p
|
|
58
|
+
>Below are our public encryption keys. Use them to securely send email or
|
|
59
|
+
verify signed messages.</p>
|
|
60
|
+
|
|
61
|
+
{#each keys as key}
|
|
62
|
+
<section class="pgp-entry" aria-labelledby={`pgp-${key.img}`}>
|
|
63
|
+
<div class="pgp-text">
|
|
64
|
+
<h2 id={`pgp-${key.img}`}>{key.name}</h2>
|
|
65
|
+
<h3>
|
|
66
|
+
<
|
|
67
|
+
{#if key.opgp}
|
|
68
|
+
<a rel={PAGE.REL} href={key.opgp} target={PAGE.BLANK}>
|
|
69
|
+
{key.email}
|
|
70
|
+
</a>
|
|
71
|
+
{:else}
|
|
72
|
+
{key.email}
|
|
73
|
+
{/if}
|
|
74
|
+
>
|
|
75
|
+
</h3>
|
|
76
|
+
<pre><code>{key.fingerprint}</code></pre>
|
|
77
|
+
<p>
|
|
78
|
+
<button
|
|
79
|
+
type="button"
|
|
80
|
+
on:click={() => copy(key.fingerprint)}
|
|
81
|
+
aria-label={`Copy PGP fingerprint for ${key.name}`}
|
|
82
|
+
title="Copy fingerprint to clipboard">
|
|
83
|
+
Copy fingerprint
|
|
84
|
+
</button>
|
|
85
|
+
</p>
|
|
86
|
+
<p>
|
|
87
|
+
<a
|
|
88
|
+
href={key.file}
|
|
89
|
+
download
|
|
90
|
+
aria-label={`Download PGP key for ${key.name}`}
|
|
91
|
+
title="Download PGP key">
|
|
92
|
+
Download Key
|
|
93
|
+
</a>
|
|
94
|
+
</p>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="pgp-qr">
|
|
97
|
+
<picture>
|
|
98
|
+
<source srcset={`/pgp/${key.img}.webp`} type="image/webp" />
|
|
99
|
+
<img
|
|
100
|
+
src={`/pgp/${key.img}.png`}
|
|
101
|
+
alt={`QR code for ${key.email}`}
|
|
102
|
+
loading="lazy"
|
|
103
|
+
decoding="async"
|
|
104
|
+
style="width: 150px; height: 150px;" />
|
|
105
|
+
</picture>
|
|
106
|
+
</div>
|
|
107
|
+
</section>
|
|
108
|
+
{/each}
|
|
109
|
+
|
|
110
|
+
<!-- cspell:ignore ebdc -->
|
|
@@ -112,7 +112,7 @@ This file is part of Network Pro.
|
|
|
112
112
|
|
|
|
113
113
|
<a href={tandcLink} target={PAGE.SELF}>Docs</a>
|
|
114
114
|
|
|
|
115
|
-
<a href="/
|
|
115
|
+
<a href="/bin/consulting-terms.pdf" download target={PAGE.BLANK}>
|
|
116
116
|
PDF <span class="fas fa-file-arrow-down"></span>
|
|
117
117
|
</a>
|
|
118
118
|
</sup>
|
|
@@ -518,3 +518,21 @@ footer .container {
|
|
|
518
518
|
overflow: hidden;
|
|
519
519
|
white-space: nowrap;
|
|
520
520
|
}
|
|
521
|
+
|
|
522
|
+
.pgp-entry {
|
|
523
|
+
display: flex;
|
|
524
|
+
align-items: center;
|
|
525
|
+
flex-wrap: wrap;
|
|
526
|
+
gap: 2rem;
|
|
527
|
+
margin-bottom: 2rem;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
.pgp-text {
|
|
531
|
+
flex: 2;
|
|
532
|
+
min-width: 250px;
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.pgp-qr {
|
|
536
|
+
flex: 1;
|
|
537
|
+
min-width: 150px;
|
|
538
|
+
}
|
|
@@ -129,15 +129,24 @@ a:active {
|
|
|
129
129
|
text-decoration: underline;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
+
/* visited link */
|
|
133
|
+
a:visited {
|
|
134
|
+
color: #7f6227;
|
|
135
|
+
}
|
|
136
|
+
|
|
132
137
|
/* focused link */
|
|
133
|
-
a:focus {
|
|
138
|
+
a:focus-visible {
|
|
134
139
|
color: #191919; /* Black text when focused */
|
|
135
140
|
background-color: #ffc627; /* Gold background when focused */
|
|
141
|
+
outline: 2px solid #ffc627;
|
|
142
|
+
outline-offset: 4px;
|
|
136
143
|
}
|
|
137
144
|
|
|
138
|
-
/*
|
|
139
|
-
a:
|
|
140
|
-
color:
|
|
145
|
+
/* Reset focus style to avoid duplication */
|
|
146
|
+
a:focus:not(:focus-visible) {
|
|
147
|
+
color: inherit;
|
|
148
|
+
background-color: transparent;
|
|
149
|
+
outline: none;
|
|
141
150
|
}
|
|
142
151
|
|
|
143
152
|
/* visited and mouse over */
|
|
@@ -3,4 +3,4 @@ Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
|
3
3
|
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
4
4
|
This file is part of Network Pro.
|
|
5
5
|
========================================================================== */
|
|
6
|
-
html{-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{color:inherit;box-sizing:border-box;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details{display:block}summary{display:list-item}template{display:none}html{color:#222;scroll-behavior:smooth;font-size:1em;line-height:1.4}::-moz-selection{text-shadow:none;background:#191919}::selection{text-shadow:none;background:#191919}hr{border:0;border-top:1px solid #ccc;height:1px;margin:1em 0;padding:0;display:block;overflow:visible}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}body{color:#fafafa;background-color:#191919;margin:10px;font-family:Arial,Helvetica,sans-serif}a{text-decoration:none}a:link{color:#ffc627}a:hover,a:active{color:#ffc627;text-decoration:underline}a:focus{color:#191919;background-color:#ffc627}a:
|
|
6
|
+
html{-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted buttontext}fieldset{padding:.35em .75em .625em}legend{color:inherit;box-sizing:border-box;white-space:normal;max-width:100%;padding:0;display:table}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}details{display:block}summary{display:list-item}template{display:none}html{color:#222;scroll-behavior:smooth;font-size:1em;line-height:1.4}::-moz-selection{text-shadow:none;background:#191919}::selection{text-shadow:none;background:#191919}hr{border:0;border-top:1px solid #ccc;height:1px;margin:1em 0;padding:0;display:block;overflow:visible}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}body{color:#fafafa;background-color:#191919;margin:10px;font-family:Arial,Helvetica,sans-serif}a{text-decoration:none}a:link{color:#ffc627}a:hover,a:active{color:#ffc627;text-decoration:underline}a:visited{color:#7f6227}a:focus-visible{color:#191919;outline-offset:4px;background-color:#ffc627;outline:2px solid #ffc627}a:focus:not(:focus-visible){color:inherit;background-color:#0000;outline:none}a:visited:hover{color:#7f6227}.hidden,[hidden]{display:none!important}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visually-hidden.focusable:active,.visually-hidden.focusable:focus{clip:auto;width:auto;height:auto;white-space:inherit;margin:0;position:static;overflow:visible}.invisible{visibility:hidden}.clearfix:before,.clearfix:after{content:"";display:table}.clearfix:after{clear:both}@media print{*,:before,:after{color:#000!important;box-shadow:none!important;text-shadow:none!important;background:#fff!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href)")"}abbr[title]:after{content:" (" attr(title)")"}a[href^=\#]:after,a[href^=javascript\:]:after{content:""}pre{white-space:pre-wrap!important}pre,blockquote{page-break-inside:avoid;border:1px solid #999}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.full-width-section{background-position:50%;background-size:cover;width:100%;max-width:1920px;margin:0 auto}.container{max-width:1200px;margin:0 auto;padding:0 12px}.readable{max-width:900px;margin:0 auto}header,footer{width:100%}header .container,footer .container{max-width:1200px;margin:0 auto;padding:20px 12px}.gh{border-collapse:collapse;border-spacing:0;margin:0 auto}.gh td,.gh th{border-collapse:collapse;word-break:normal;padding:10px 5px;overflow:hidden}.gh .gh-tcell{text-align:center;vertical-align:middle}@media screen and (width<=767px){.gh,.gh col{width:auto!important}.gh-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.soc{border-collapse:collapse;border-spacing:0;margin:0 auto}.soc td,.soc th{border-collapse:collapse;word-break:normal;padding:8px;overflow:hidden}.soc .soc-fa{text-align:center;vertical-align:middle}@media screen and (width<=767px){.soc,.soc col{width:auto!important}.soc-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.foss{border-collapse:collapse;border-spacing:0}.foss td,.foss th{border-collapse:collapse;word-break:normal;padding:10px 5px;overflow:hidden}.foss .foss-cell{text-align:center;vertical-align:middle}@media screen and (width<=767px){.foss,.foss col{width:auto!important}.foss-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}}.bnav{text-align:center;border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav td,.bnav th{text-align:center;vertical-align:middle;word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;line-height:1.125rem;overflow:hidden}.bnav .bnav-cell{text-align:center;vertical-align:middle;align-content:center}@media screen and (width<=767px){.bnav,.bnav col{width:auto!important}.bnav-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.bnav2{border-collapse:collapse;border-spacing:0;margin:0 auto}.bnav2 td{word-break:normal;border-style:none;padding:10px;font-size:.875rem;font-weight:700;line-height:1.125rem;overflow:hidden}.bnav2 th{word-break:normal;border-style:none;padding:12px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.bnav2 .bnav2-cell{text-align:center;vertical-align:middle;align-content:center}@media screen and (width<=767px){.bnav2,.bnav2 col{width:auto!important}.bnav2-wrap{-webkit-overflow-scrolling:touch;margin:auto 0;overflow-x:auto}}.pgp{border-collapse:collapse;border-spacing:0;margin:0 auto}.pgp td{word-break:normal;border-style:none;padding:10px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.pgp th{word-break:normal;border:1px solid #000;padding:10px;font-size:.875rem;line-height:1.125rem;overflow:hidden}.pgp .pgp-col1{text-align:right;vertical-align:middle;padding-right:1rem}.pgp .pgp-col2{text-align:left;vertical-align:middle;padding-left:1rem}@media screen and (width<=767px){.pgp,.pgp col{width:auto!important}.pgp-wrap{-webkit-overflow-scrolling:touch;margin:2rem 0 auto;overflow-x:auto}}.logo{margin-left:auto;margin-right:auto;display:block}.index-title1{text-align:center;font-style:italic;font-weight:700}.index-title2{letter-spacing:-.015em;text-align:center;font-variant:small-caps;font-size:1.25rem;line-height:1.625rem}.index1{letter-spacing:-.035em;text-align:center;font-style:italic;font-weight:700;line-height:2.125rem}.index2{letter-spacing:-.035em;text-align:center;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.index3{letter-spacing:-.035em;text-align:center;font-size:1.5rem;line-height:1.75rem}.index4{letter-spacing:-.035em;text-align:center;font-size:1.5rem;line-height:1.75rem;text-decoration:underline}.subhead{letter-spacing:-.035em;font-variant:small-caps;font-size:1.5rem;line-height:1.75rem}.bold{font-weight:700}.emphasis{font-style:italic}.uline{text-decoration:underline}.bolditalic{font-style:italic;font-weight:700}.bquote{border-left:3px solid #9e9e9e;margin-left:30px;padding-left:10px;font-style:italic}.small-text{font-size:.75rem;line-height:1.125rem}.large-text-center{text-align:center;font-size:1.25rem;line-height:1.75rem}.prewrap{white-space:pre-wrap;display:block}.hr-styled{width:75%;margin:auto}.center-text{text-align:center}.copyright{text-align:center;font-size:.75rem;line-height:1.125rem}.gold{color:#ffc627}.visited{color:#7f6227}.goldseparator{color:#ffc627;margin:0 .5rem}.center-nav{text-align:center;padding:5px;font-size:1rem;line-height:1.5rem}.block{resize:none;background:0 0;border:none;border-radius:0;outline:none;width:100%;font-size:.75rem;line-height:1.125rem}.fingerprint{white-space:pre-line;font-weight:700;display:block}.pgp-image{width:150px;height:150px}.spacer{margin:2rem 0}.separator{margin:0 .5rem}.emoji{margin-right:8px}.headline{margin-bottom:4px;font-style:italic;font-weight:700;display:block}.label{font-family:inherit;font-weight:700}.description{font-family:inherit;font-style:normal;font-weight:400;display:inline}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pgp-entry{flex-wrap:wrap;align-items:center;gap:2rem;margin-bottom:2rem;display:flex}.pgp-text{flex:2;min-width:250px}.pgp-qr{flex:1;min-width:150px}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/routes/pgp/+page.server.js
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
import { defaultMeta, meta } from "$lib/meta.js";
|
|
10
|
+
|
|
11
|
+
export const prerender = false;
|
|
12
|
+
|
|
13
|
+
/** @type {import('./$types').PageServerLoad} */
|
|
14
|
+
export function load() {
|
|
15
|
+
return {
|
|
16
|
+
meta: meta["/pgp"] || defaultMeta,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<!-- ==========================================================================
|
|
2
|
+
src/routes/pgp/+page.svelte
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== -->
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import PGPContent from "$lib/pages/PGPContent.svelte";
|
|
11
|
+
import Badges from "$lib/components/Badges.svelte";
|
|
12
|
+
import FullWidthSection from "$lib/components/FullWidthSection.svelte";
|
|
13
|
+
import LegalNav from "$lib/components/LegalNav.svelte";
|
|
14
|
+
import SocialMedia from "$lib/components/SocialMedia.svelte";
|
|
15
|
+
import MetaTags from "$lib/components/MetaTags.svelte";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @type {string}
|
|
19
|
+
* Style class for the div element.
|
|
20
|
+
*/
|
|
21
|
+
const spaceStyle = "spacer";
|
|
22
|
+
|
|
23
|
+
export let data;
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<MetaTags title={data.meta.title} description={data.meta.description} />
|
|
27
|
+
|
|
28
|
+
<link rel="canonical" href="https://netwk.pro/pgp" />
|
|
29
|
+
|
|
30
|
+
<section id="about">
|
|
31
|
+
<FullWidthSection containerClass="readable">
|
|
32
|
+
<!-- BEGIN MAIN CONTENT -->
|
|
33
|
+
<section id="main-content">
|
|
34
|
+
<PGPContent />
|
|
35
|
+
</section>
|
|
36
|
+
<!-- END MAIN CONTENT -->
|
|
37
|
+
|
|
38
|
+
<div class={spaceStyle}></div>
|
|
39
|
+
|
|
40
|
+
<!-- SOCIAL MEDIA -->
|
|
41
|
+
<section id="social-media">
|
|
42
|
+
<SocialMedia />
|
|
43
|
+
</section>
|
|
44
|
+
|
|
45
|
+
<hr />
|
|
46
|
+
|
|
47
|
+
<div class={spaceStyle}></div>
|
|
48
|
+
|
|
49
|
+
<!-- LEGAL NAVIGATION -->
|
|
50
|
+
<section id="legal-nav">
|
|
51
|
+
<LegalNav />
|
|
52
|
+
</section>
|
|
53
|
+
|
|
54
|
+
<div class={spaceStyle}></div>
|
|
55
|
+
|
|
56
|
+
<!-- BADGES -->
|
|
57
|
+
<section id="badges">
|
|
58
|
+
<Badges />
|
|
59
|
+
</section>
|
|
60
|
+
</FullWidthSection>
|
|
61
|
+
</section>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
src/routes/pgp/[key]/+server.js
|
|
3
|
+
|
|
4
|
+
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
5
|
+
SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
|
|
6
|
+
This file is part of Network Pro.
|
|
7
|
+
========================================================================== */
|
|
8
|
+
|
|
9
|
+
import { error } from "@sveltejs/kit";
|
|
10
|
+
import fs from "fs/promises";
|
|
11
|
+
import path from "path";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @type {import('@sveltejs/kit').RequestHandler}
|
|
15
|
+
*/
|
|
16
|
+
export async function GET({ params, setHeaders }) {
|
|
17
|
+
const key = params.key;
|
|
18
|
+
|
|
19
|
+
if (!key || !key.endsWith(".asc")) {
|
|
20
|
+
throw error(400, "Invalid or missing file name");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const filePath = path.resolve("static/pgp", key);
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
const file = await fs.readFile(filePath);
|
|
27
|
+
setHeaders({
|
|
28
|
+
"Content-Type": "application/pgp-keys",
|
|
29
|
+
"Content-Disposition": `attachment; filename="${key}"`,
|
|
30
|
+
});
|
|
31
|
+
return new Response(file);
|
|
32
|
+
} catch {
|
|
33
|
+
return new Response("File not found", { status: 404 });
|
|
34
|
+
}
|
|
35
|
+
}
|
package/src/service-worker.js
CHANGED
|
@@ -32,6 +32,14 @@ const IGNORE_PATHS = new Set([
|
|
|
32
32
|
"/img/logo-transparent.png",
|
|
33
33
|
"/img/logo.png",
|
|
34
34
|
"/img/svelte.png",
|
|
35
|
+
"/pgp/pgp-github.png",
|
|
36
|
+
"/pgp/pgp-github.webp",
|
|
37
|
+
"/pgp/contact@s.neteng.pro.asc",
|
|
38
|
+
"/pgp/github@sl.neteng.cc.asc",
|
|
39
|
+
"/pgp/security@s.neteng.pro.asc",
|
|
40
|
+
"/pgp/support@neteng.pro.asc",
|
|
41
|
+
"/pgp/vcard.png",
|
|
42
|
+
"/pgp/vcard.webp",
|
|
35
43
|
"/screenshots/desktop-foss.png",
|
|
36
44
|
"/webfonts/fa-brands-400.ttf",
|
|
37
45
|
"/webfonts/fa-solid-900.ttf",
|
|
@@ -50,7 +58,7 @@ const ASSETS = [
|
|
|
50
58
|
|
|
51
59
|
const shouldExclude =
|
|
52
60
|
path.startsWith("http") ||
|
|
53
|
-
path.startsWith("/
|
|
61
|
+
path.startsWith("/bin/") ||
|
|
54
62
|
disallowedHosts.some(
|
|
55
63
|
(host) => hostname === host || hostname.endsWith(`.${host}`),
|
|
56
64
|
) ||
|
|
@@ -81,10 +89,12 @@ const REQUIRED_ASSETS = [
|
|
|
81
89
|
"/icon-services.png",
|
|
82
90
|
"/icon-splash.png",
|
|
83
91
|
"/img/banner-og-1200x630.png",
|
|
84
|
-
"/
|
|
85
|
-
"/
|
|
86
|
-
"/
|
|
87
|
-
"/
|
|
92
|
+
"/pgp/pgp-contact.png",
|
|
93
|
+
"/pgp/pgp-contact.webp",
|
|
94
|
+
"/pgp/pgp-security.png",
|
|
95
|
+
"/pgp/pgp-security.webp",
|
|
96
|
+
"/pgp/pgp-support.png",
|
|
97
|
+
"/pgp/pgp-support.webp",
|
|
88
98
|
"/manifest.json",
|
|
89
99
|
"/offline.html",
|
|
90
100
|
"/offline.min.css",
|
|
@@ -99,6 +109,7 @@ const REQUIRED_ASSETS = [
|
|
|
99
109
|
"/webfonts/fa-brands-400.woff2",
|
|
100
110
|
"/webfonts/fa-solid-900.woff2",
|
|
101
111
|
"/.well-known/dnt-policy-1.0.txt",
|
|
112
|
+
"/.well-known/gpc.json",
|
|
102
113
|
];
|
|
103
114
|
|
|
104
115
|
if (isDev) {
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
2
|
+
Comment: User ID: security@s.neteng.pro <security@s.neteng.pro>
|
|
3
|
+
Comment: Valid from: 1/6/25 8:36 AM
|
|
4
|
+
Comment: Type: 255-bit EdDSA (secret key available)
|
|
5
|
+
Comment: Usage: Signing, Encryption, Certifying User IDs
|
|
6
|
+
Comment: Fingerprint: B7FE1D4E6CAB3E714A9FDF6E48CB7290C00D0DA5
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
mDMEZ3v4eRYJKwYBBAHaRw8BAQdAFxcxIifN3QdPmjnVFLXkCueQBV+GCpybLTgw
|
|
10
|
+
FPqMNvi0LXNlY3VyaXR5QHMubmV0ZW5nLnBybyA8c2VjdXJpdHlAcy5uZXRlbmcu
|
|
11
|
+
cHJvPojRBBMWCgCDBYJne/h5AwsJBwmQSMtykMANDaVFFAAAAAAAHAAgc2FsdEBu
|
|
12
|
+
b3RhdGlvbnMub3BlbnBncGpzLm9yZ3rrat4fGUXd3ubqU+S6lJBxikUj2XJHnG3R
|
|
13
|
+
dledkYRnAxUKCAQWAAIBAhkBApsDAh4BFiEEt/4dTmyrPnFKn99uSMtykMANDaUA
|
|
14
|
+
AM61AQCadROujMKqyuGezv9/l2bqY2TCwxlU6pt2OP2kBaGawQEA56C1AnZ4j43c
|
|
15
|
+
VnMVc66lGoTzyTceHJRtC4OF+BT2TQW4OARne/h5EgorBgEEAZdVAQUBAQdAeH9H
|
|
16
|
+
BjnnWYk6uRjTz/rD8XKuyVmK+M2FkvwwTGnp41UDAQgHiL4EGBYKAHAFgmd7+HkJ
|
|
17
|
+
kEjLcpDADQ2lRRQAAAAAABwAIHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmec
|
|
18
|
+
Wa0ZrRuAVXctQtSq1NG+iidE0NBjZDHAgMnyMjEhIAKbDBYhBLf+HU5sqz5xSp/f
|
|
19
|
+
bkjLcpDADQ2lAAADagD/VgytFYartgP6AuqYOgbFd+n25ziiFX936t+ooCLvhcwB
|
|
20
|
+
AO6Mwo291bBwCIFNJ8gA1P7P02UsXvFOO+GGgaHlff8K
|
|
21
|
+
=Wt2X
|
|
22
|
+
-----END PGP PUBLIC KEY BLOCK-----
|
|
Binary file
|
package/static/sitemap.xml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!-- Sitemap last updated on 2025-06-
|
|
2
|
+
<!-- Sitemap last updated on 2025-06-11 -->
|
|
3
3
|
|
|
4
4
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<loc>https://netwk.pro</loc>
|
|
9
9
|
|
|
10
|
-
<lastmod>2025-
|
|
10
|
+
<lastmod>2025-06-10</lastmod>
|
|
11
11
|
|
|
12
12
|
<changefreq>weekly</changefreq>
|
|
13
13
|
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
<loc>https://netwk.pro/about</loc>
|
|
33
33
|
|
|
34
|
-
<lastmod>2025-
|
|
34
|
+
<lastmod>2025-06-10</lastmod>
|
|
35
35
|
|
|
36
36
|
<changefreq>monthly</changefreq>
|
|
37
37
|
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
|
|
68
68
|
<loc>https://netwk.pro/license</loc>
|
|
69
69
|
|
|
70
|
-
<lastmod>2025-06-
|
|
70
|
+
<lastmod>2025-06-10</lastmod>
|
|
71
71
|
|
|
72
72
|
<changefreq>monthly</changefreq>
|
|
73
73
|
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
|
|
92
92
|
<loc>https://netwk.pro/terms-conditions</loc>
|
|
93
93
|
|
|
94
|
-
<lastmod>2025-
|
|
94
|
+
<lastmod>2025-06-10</lastmod>
|
|
95
95
|
|
|
96
96
|
<changefreq>monthly</changefreq>
|
|
97
97
|
|
|
@@ -101,25 +101,25 @@
|
|
|
101
101
|
|
|
102
102
|
<url>
|
|
103
103
|
|
|
104
|
-
<loc>https://netwk.pro/
|
|
104
|
+
<loc>https://netwk.pro/bin/CC-BY-4.0.html</loc>
|
|
105
105
|
|
|
106
|
-
<lastmod>2025-
|
|
106
|
+
<lastmod>2025-06-10</lastmod>
|
|
107
107
|
|
|
108
|
-
<changefreq>
|
|
108
|
+
<changefreq>monthly</changefreq>
|
|
109
109
|
|
|
110
|
-
<priority>0.
|
|
110
|
+
<priority>0.5</priority>
|
|
111
111
|
|
|
112
112
|
</url>
|
|
113
113
|
|
|
114
114
|
<url>
|
|
115
115
|
|
|
116
|
-
<loc>https://netwk.pro/
|
|
116
|
+
<loc>https://netwk.pro/bin/COPYING.html</loc>
|
|
117
117
|
|
|
118
|
-
<lastmod>2025-
|
|
118
|
+
<lastmod>2025-06-10</lastmod>
|
|
119
119
|
|
|
120
|
-
<changefreq>
|
|
120
|
+
<changefreq>monthly</changefreq>
|
|
121
121
|
|
|
122
|
-
<priority>0.
|
|
122
|
+
<priority>0.5</priority>
|
|
123
123
|
|
|
124
124
|
</url>
|
|
125
125
|
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
BEGIN:VCARD
|
|
2
|
-
VERSION:3.0
|
|
3
|
-
FN:Scott Lopez
|
|
4
|
-
N:Lopez;Scott
|
|
5
|
-
TEL;TYPE=WORK,PREF=1:(623) 252-4350
|
|
6
|
-
EMAIL;TYPE=HOME:github@sl.neteng.cc
|
|
7
|
-
EMAIL;TYPE=WORK:support@neteng.pro
|
|
8
|
-
EMAIL;TYPE=Secure:business@s.neteng.pro
|
|
9
|
-
ADR;TYPE=WORK:;;Peoria\, AZ 85382\nUS
|
|
10
|
-
ORG:Network Pro Strategies
|
|
11
|
-
TITLE:Security Consultant
|
|
12
|
-
URL:https://netwk.pro
|
|
13
|
-
END:VCARD
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
2
|
-
|
|
3
|
-
xjMEaA9hQBYJKwYBBAHaRw8BAQdA0plJIVADzWGVQtDnYcjtokJN+xTURRDx
|
|
4
|
-
+bPQWsRCCMrNK2NvbnRhY3RAcy5uZXRlbmcucHJvIDxjb250YWN0QHMubmV0
|
|
5
|
-
ZW5nLnBybz7CwBEEExYKAIMFgmgPYUADCwkHCZD5k3NJlJX5V0UUAAAAAAAc
|
|
6
|
-
ACBzYWx0QG5vdGF0aW9ucy5vcGVucGdwanMub3Jn7SJZvz9xzMXAz0AK0oap
|
|
7
|
-
2J4yPfF5ITdHI3E4NrGhHiUDFQoIBBYAAgECGQECmwMCHgEWIQTfEYuqbC2d
|
|
8
|
-
zevcLdz5k3NJlJX5VwAA3lgBAPlvilH7QBDdourj+ndUWOlkN/UK5GVZFNdl
|
|
9
|
-
Wtz+yqO9AQDi6ZJvz4FXtnLpiDnrGLl+XtS9mpb9W1K6veAfq9EPDs44BGgP
|
|
10
|
-
YUASCisGAQQBl1UBBQEBB0CH4STLqhXPigKwiTqgROmO9+ZBwLULvQIr/opO
|
|
11
|
-
xkvFcgMBCAfCvgQYFgoAcAWCaA9hQAmQ+ZNzSZSV+VdFFAAAAAAAHAAgc2Fs
|
|
12
|
-
dEBub3RhdGlvbnMub3BlbnBncGpzLm9yZzQ5Pg7sTb37RQ0E0xHK7uw476sQ
|
|
13
|
-
4ReUd+a+A2uSan3wApsMFiEE3xGLqmwtnc3r3C3c+ZNzSZSV+VcAALq5AQDJ
|
|
14
|
-
bhqyY8dg25WXFPtL8TgeK8BP+d4y5IaobKuZ2gHh2wD+MmeUZZBNiIM/QPMo
|
|
15
|
-
Pgm5czd9ckE/aknVqJZPLx7KJAQ=
|
|
16
|
-
=o5rM
|
|
17
|
-
-----END PGP PUBLIC KEY BLOCK-----
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
2
|
-
Comment: User ID: SunDevil311 <github@sl.neteng.cc>
|
|
3
|
-
Comment: Valid from: 1/7/24 2:11 AM
|
|
4
|
-
Comment: Valid until: 1/8/29 11:58 PM
|
|
5
|
-
Comment: Type: 255-bit EdDSA (secret key available)
|
|
6
|
-
Comment: Usage: Signing, Encryption, Certifying User IDs
|
|
7
|
-
Comment: Fingerprint: E8B4F1193B21601207B080BBAEBBB8F6D4BB723B
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
mDMEZZpquxYJKwYBBAHaRw8BAQdAk/oCPQnD4FIVgyVsugXB/Sq8Rp+b9Ahz31KY
|
|
11
|
-
EOTyuIW0IVN1bkRldmlsMzExIDxnaXRodWJAc2wubmV0ZW5nLmNjPoiWBBMWCAA+
|
|
12
|
-
AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEE6LTxGTshYBIHsIC7rru49tS7
|
|
13
|
-
cjsFAmeBrNgFCQlrKHgACgkQrru49tS7cjujpQEA9LtzB8R+5kwSnjM3mU+ZOK2X
|
|
14
|
-
370iUAOrDOI41/Xzdi4BAJbImQxZCPHWpNEysPkpf5OYIQhBljYGBLyPlgbqKl8B
|
|
15
|
-
iHUEEBYKAB0WIQTzG0myNw5BdXuKqI/DoNSOqcFPXgUCZZpwcwAKCRDDoNSOqcFP
|
|
16
|
-
XrtIAQC4+QUJEFHFaW1hePdF0k8OMVm7YX6B2ReccN7JV6WIggD/SULjDjEa59/R
|
|
17
|
-
e3QovTnGE/+JQl7WnMG7wIWWt7AsyAyIkAQTFggAOBYhBOi08Rk7IWASB7CAu667
|
|
18
|
-
uPbUu3I7BQJlmmq7AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEK67uPbU
|
|
19
|
-
u3I7V7cA/3VdMTkltx5d9mqOl8azXkXEeInblf/GHqp9gD/ziCRcAP4rifnkxfYp
|
|
20
|
-
z8Xkl/YtqWNUqMU/AbTqLXrNrj6Ld6L4CYiWBBMWCAA+AhsDBQsJCAcCBhUKCQgL
|
|
21
|
-
AgQWAgMBAh4BAheAFiEE6LTxGTshYBIHsIC7rru49tS7cjsFAma5TVIFCQbC4ngA
|
|
22
|
-
CgkQrru49tS7cjsh+QEAzgTKYSbMAsJrgQrLZ+gTuZjtP2cf4LNplwVyyOW+ZBEB
|
|
23
|
-
AK99IZScLbf0QOJowg4XXds02yKG6pB/9BhTf0gfbq4JuDgEZZpquxIKKwYBBAGX
|
|
24
|
-
VQEFAQEHQPUDNJbixlUJE10/uCSaxUcly4+YB6aDP+qt6kYw+ExRAwEIB4h4BBgW
|
|
25
|
-
CAAgFiEE6LTxGTshYBIHsIC7rru49tS7cjsFAmWaarsCGwwACgkQrru49tS7cjtS
|
|
26
|
-
9AEA9bv6Zq/PcRL25QM4NlvJDsKjePihgaYav+4ekdk0tkoA/02QjSNlzIL/CpRF
|
|
27
|
-
540gKvILQXFUuoPAKBL+sEggB+8D
|
|
28
|
-
=iL2v
|
|
29
|
-
-----END PGP PUBLIC KEY BLOCK-----
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "fe.linksheet.nightly",
|
|
3
|
-
"url": "https://github.com/LinkSheet/nightly",
|
|
4
|
-
"author": "1fexd",
|
|
5
|
-
"name": "LinkSheet Nightly",
|
|
6
|
-
"preferredApkIndex": 0,
|
|
7
|
-
"additionalSettings": "{\"includePrereleases\":true,\"fallbackToOlderReleases\":true,\"filterReleaseTitlesByRegEx\":\"\",\"filterReleaseNotesByRegEx\":\"\",\"verifyLatestTag\":false,\"dontSortReleasesList\":false,\"useLatestAssetDateAsReleaseDate\":false,\"trackOnly\":false,\"versionExtractionRegEx\":\"\",\"matchGroupToUse\":\"\",\"versionDetection\":false,\"releaseDateAsVersion\":false,\"useVersionCodeAsOSVersion\":false,\"apkFilterRegEx\":\"LinkSheet.Nightly\",\"invertAPKFilter\":true,\"autoApkFilterByArch\":true,\"appName\":\"LinkSheet Nightly\",\"shizukuPretendToBeGooglePlay\":false,\"exemptFromBackgroundUpdates\":false,\"skipUpdateNotifications\":false,\"about\":\"Restore link control on Android 12+\",\"appAuthor\":\"1fexd\"}"
|
|
8
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
2
|
-
Comment: User ID: Network Pro Strategies <support@neteng.pro>
|
|
3
|
-
Comment: a.k.a.: Network Pro Strategies <contact@neteng.pro>
|
|
4
|
-
Comment: a.k.a.: Network Pro Strategies <github@neteng.pro>
|
|
5
|
-
Comment: a.k.a.: Network Pro Strategies <no-reply@neteng.pro>
|
|
6
|
-
Comment: a.k.a.: Network Pro Strategies <social@neteng.pro>
|
|
7
|
-
Comment: a.k.a.: Network Pro Strategies <website@neteng.pro>
|
|
8
|
-
Comment: Valid from: 3/28/25 5:16 PM
|
|
9
|
-
Comment: Valid until: 3/27/28 5:16 PM
|
|
10
|
-
Comment: Type: 255-bit EdDSA (secret key available)
|
|
11
|
-
Comment: Usage: Signing, Encryption, Certifying User IDs
|
|
12
|
-
Comment: Fingerprint: 6590B992E2E3EFF127387BCE2AF093E9DEC61BA0
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
mDMEZ+c71xYJKwYBBAHaRw8BAQdAXrXB9LKKHj7tgAzrCkheQe+yJ0KD50yVrHM7
|
|
16
|
-
yOopYuW0K05ldHdvcmsgUHJvIFN0cmF0ZWdpZXMgPHN1cHBvcnRAbmV0ZW5nLnBy
|
|
17
|
-
bz6InAQTFgoARAIbAwUJBaOagAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgBYh
|
|
18
|
-
BGWQuZLi4+/xJzh7zirwk+nexhugBQJn5zzLAhkBAAoJECrwk+nexhugp9UBAJ4O
|
|
19
|
-
J4aR6SBdYCInPri4DuRrLeLtMIT6yPN2XP0+aRH5AP4piPrWA5Qx22t7DZTF8S08
|
|
20
|
-
6rhDtFuslGkMab4ITA+8AbQrTmV0d29yayBQcm8gU3RyYXRlZ2llcyA8Y29udGFj
|
|
21
|
-
dEBuZXRlbmcucHJvPoiZBBMWCgBBFiEEZZC5kuLj7/EnOHvOKvCT6d7GG6AFAmfn
|
|
22
|
-
PJgCGwMFCQWjmoAFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQKvCT6d7G
|
|
23
|
-
G6CBCgD/aC/WM7bOfQoTZitpluifrEQIjP6RelCpksULK7jcEzkA/iTuessO95fe
|
|
24
|
-
72MtCRiOjFlcVXuXfgaap0PwNmwfMz0GtCpOZXR3b3JrIFBybyBTdHJhdGVnaWVz
|
|
25
|
-
IDxnaXRodWJAbmV0ZW5nLnBybz6ImQQTFgoAQRYhBGWQuZLi4+/xJzh7zirwk+ne
|
|
26
|
-
xhugBQJn5zyiAhsDBQkFo5qABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJ
|
|
27
|
-
ECrwk+nexhug0tsBAKjrZMO7wfGUOiNQQr5IPzSEwOLYy0hkxq4SqOuMuPpVAP9/
|
|
28
|
-
b3sZ0BbmTaU/+gnuXyUbMRQHLDqHh7ESRxSgll3WDLQsTmV0d29yayBQcm8gU3Ry
|
|
29
|
-
YXRlZ2llcyA8bm8tcmVwbHlAbmV0ZW5nLnBybz6ImQQTFgoAQRYhBGWQuZLi4+/x
|
|
30
|
-
Jzh7zirwk+nexhugBQJn5zywAhsDBQkFo5qABQsJCAcCAiICBhUKCQgLAgQWAgMB
|
|
31
|
-
Ah4HAheAAAoJECrwk+nexhugjAQA+gNrz3htQtHPTifyIps/p8CuA6LR/5F99jip
|
|
32
|
-
5obARSaLAQDuodGbF3NIZ5b6C98aoNQ7adj/Neg53z6rgVRHkNuiCrQqTmV0d29y
|
|
33
|
-
ayBQcm8gU3RyYXRlZ2llcyA8c29jaWFsQG5ldGVuZy5wcm8+iJkEExYKAEEWIQRl
|
|
34
|
-
kLmS4uPv8Sc4e84q8JPp3sYboAUCZ+c8vAIbAwUJBaOagAULCQgHAgIiAgYVCgkI
|
|
35
|
-
CwIEFgIDAQIeBwIXgAAKCRAq8JPp3sYboE6hAQCLyAl45ty3muvvw7vpkJjhbkyp
|
|
36
|
-
daLVTIltW6x+cotifQEAqbXMngGnwAZPxiZH/r/NbopqD57YTT+HXx62thwefw+0
|
|
37
|
-
K05ldHdvcmsgUHJvIFN0cmF0ZWdpZXMgPHdlYnNpdGVAbmV0ZW5nLnBybz6ImQQT
|
|
38
|
-
FgoAQRYhBGWQuZLi4+/xJzh7zirwk+nexhugBQJn5zzHAhsDBQkFo5qABQsJCAcC
|
|
39
|
-
AiICBhUKCQgLAgQWAgMBAh4HAheAAAoJECrwk+nexhugRUcA/RHfApSl1S+APoXN
|
|
40
|
-
jmTki5pUk8+AD1kveRymT9g49FIVAQCtX8+cbM+9jLrg9EyyJ6kvE9btGExOOufA
|
|
41
|
-
JNY15IdwBbg4BGfnO9cSCisGAQQBl1UBBQEBB0BiSu/MobXZljtB25Inf4cJwdoH
|
|
42
|
-
z+gqapJHs+5y9mNPCgMBCAeIfgQYFgoAJhYhBGWQuZLi4+/xJzh7zirwk+nexhug
|
|
43
|
-
BQJn5zvXAhsMBQkFo5qAAAoJECrwk+nexhugsXoA+QHr0FAorF0ZEgDA4wL/oZpB
|
|
44
|
-
oIARdo9kYzL+cTi/F3g6AQCtbupe/JymVJuwLUcq3AsxXe0DLyoodT7CpOdVpYLV
|
|
45
|
-
DQ==
|
|
46
|
-
=pBLp
|
|
47
|
-
-----END PGP PUBLIC KEY BLOCK-----
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|