@networkpro/web 1.21.1 → 1.22.1
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 +102 -2
- package/README.md +3 -10
- package/package.json +8 -8
- package/src/app.html +1 -12
- package/src/lib/components/Logo.svelte +2 -7
- package/src/lib/components/layout/HeaderDefault.svelte +2 -3
- package/src/lib/data/fossData.js +8 -0
- package/src/lib/data/pgpKeys.js +82 -0
- package/src/lib/images.js +46 -17
- package/src/lib/index.js +8 -2
- package/src/lib/pages/AboutContent.svelte +107 -111
- package/src/lib/pages/FossContent.svelte +1 -1
- package/src/lib/pages/HomeContent.svelte +11 -8
- package/src/lib/pages/LicenseContent.svelte +1 -1
- package/src/lib/pages/PGPContent.svelte +19 -40
- package/src/lib/pages/PrivacyContent.svelte +6 -3
- package/src/lib/pages/PrivacyDashboard.svelte +5 -2
- package/src/lib/pages/ServicesContent.svelte +7 -4
- package/src/lib/pages/TermsConditionsContent.svelte +1 -1
- package/src/lib/pages/TermsUseContent.svelte +3 -3
- package/src/lib/styles/css/default.css +1 -1
- package/src/lib/styles/global.min.css +1 -1
- package/src/lib/types/appConstants.js +6 -3
- package/src/service-worker.js +3 -11
- package/static/icon-about.png +0 -0
- package/static/manifest.json +17 -4
- package/static/pgp/support@netwk.pro.asc +77 -0
- package/static/sitemap.xml +5 -5
- package/tests/e2e/app.spec.js +8 -3
- package/tests/e2e/mobile.spec.js +12 -3
- package/src/lib/img/qr/pgp-github.png +0 -0
- package/src/lib/img/qr/pgp-github.webp +0 -0
- package/static/pgp/pgp-contact.png +0 -0
- package/static/pgp/pgp-contact.webp +0 -0
- package/static/pgp/pgp-github.png +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.png +0 -0
- package/static/pgp/pgp-support.webp +0 -0
- package/static/pgp/support@neteng.pro.asc +0 -47
- package/static/pgp/vcard.png +0 -0
- package/static/pgp/vcard.webp +0 -0
- /package/{static → src/lib}/img/powered-by-proton.svg +0 -0
|
@@ -7,16 +7,8 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== -->
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
|
-
import {
|
|
11
|
-
pgpContactPng,
|
|
12
|
-
pgpContactWbp,
|
|
13
|
-
pgpSupportPng,
|
|
14
|
-
pgpSupportWbp,
|
|
15
|
-
vcfPng,
|
|
16
|
-
vcfWbp,
|
|
17
|
-
} from '$lib';
|
|
10
|
+
import { CONSTANTS, getQR, PGP_KEYS } from '$lib';
|
|
18
11
|
import { base } from '$app/paths';
|
|
19
|
-
import { CONSTANTS } from '$lib';
|
|
20
12
|
|
|
21
13
|
// Log the base path to verify its value
|
|
22
14
|
//console.log("Base path:", base);
|
|
@@ -24,6 +16,9 @@ This file is part of Network Pro.
|
|
|
24
16
|
//console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
25
17
|
|
|
26
18
|
const { COMPANY_INFO, CONTACT, PAGE } = CONSTANTS;
|
|
19
|
+
const pgpKeys = PGP_KEYS.filter(
|
|
20
|
+
(k) => k.id === 'pgp-support' || k.id === 'pgp-contact',
|
|
21
|
+
);
|
|
27
22
|
|
|
28
23
|
/**
|
|
29
24
|
* URL to the Contact Form route, using the base path
|
|
@@ -37,6 +32,12 @@ This file is part of Network Pro.
|
|
|
37
32
|
*/
|
|
38
33
|
const consultLink = `${base}/consultation`;
|
|
39
34
|
|
|
35
|
+
/**
|
|
36
|
+
* URL to the Services route, using the base path
|
|
37
|
+
* @type {string}
|
|
38
|
+
*/
|
|
39
|
+
const servLink = `${base}/services`;
|
|
40
|
+
|
|
40
41
|
/**
|
|
41
42
|
* URL to the PGP route, using the base path
|
|
42
43
|
* @type {string}
|
|
@@ -72,62 +73,37 @@ This file is part of Network Pro.
|
|
|
72
73
|
*/
|
|
73
74
|
const navLinks = [
|
|
74
75
|
{
|
|
75
|
-
label: 'SPDX
|
|
76
|
+
label: 'SPDX-License-Identifier',
|
|
76
77
|
href: 'https://spdx.dev/learn/handling-license-info',
|
|
77
|
-
target:
|
|
78
|
+
target: PAGE.BLANK,
|
|
78
79
|
text: 'CC-BY-4.0 OR GPL-3.0-or-later',
|
|
79
80
|
},
|
|
80
81
|
{
|
|
81
82
|
label: 'Docs',
|
|
82
83
|
href: 'https://docs.netwk.pro',
|
|
83
|
-
target:
|
|
84
|
-
},
|
|
85
|
-
];
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* PGP key information for contact emails
|
|
89
|
-
* @type {Array<{
|
|
90
|
-
* label: string,
|
|
91
|
-
* qrSrc: string,
|
|
92
|
-
* qrWbp: string,
|
|
93
|
-
* keySearch: string,
|
|
94
|
-
* fingerprint: string[]
|
|
95
|
-
* }>}
|
|
96
|
-
*/
|
|
97
|
-
const pgpKeys = [
|
|
98
|
-
{
|
|
99
|
-
label: 'support@neteng.pro',
|
|
100
|
-
qrSrc: pgpSupportPng,
|
|
101
|
-
qrWbp: pgpSupportWbp,
|
|
102
|
-
keySearch: 'https://keys.openpgp.org/search?q=support%40neteng.pro',
|
|
103
|
-
fingerprint: ['6590B992E2E3EFF12738', '7BCE2AF093E9DEC61BA0'],
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
label: 'contact@s.neteng.pro',
|
|
107
|
-
qrSrc: pgpContactPng,
|
|
108
|
-
qrWbp: pgpContactWbp,
|
|
109
|
-
keySearch: 'https://keys.openpgp.org/search?q=contact%40s.neteng.pro',
|
|
110
|
-
fingerprint: ['DF118BAA6C2D9DCDEBDC', '2DDCF99373499495F957'],
|
|
84
|
+
target: PAGE.SELF,
|
|
111
85
|
},
|
|
112
86
|
];
|
|
113
87
|
|
|
114
88
|
/**
|
|
115
89
|
* @typedef {Object} ContactAssets
|
|
116
|
-
* @property {string} vcf
|
|
117
|
-
* @property {string}
|
|
118
|
-
* @property {string}
|
|
119
|
-
* @property {string} supportAsc
|
|
120
|
-
* @property {string} contactAsc
|
|
90
|
+
* @property {string} vcf - Path to the downloadable vCard file.
|
|
91
|
+
* @property {string} [png] - PNG version of the vCard QR code.
|
|
92
|
+
* @property {string} [webp] - WebP version of the vCard QR code.
|
|
93
|
+
* @property {string} supportAsc - Path to the general support PGP key.
|
|
94
|
+
* @property {string} contactAsc - Path to the secure contact PGP key.
|
|
121
95
|
*/
|
|
122
96
|
|
|
123
97
|
/** @type {ContactAssets} */
|
|
124
98
|
const contactAssets = {
|
|
125
99
|
vcf: '/bin/contact.vcf',
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
supportAsc: '/pgp/support@neteng.pro.asc',
|
|
100
|
+
...getQR('vcard'),
|
|
101
|
+
supportAsc: '/pgp/support@netwk.pro.asc',
|
|
129
102
|
contactAsc: '/pgp/contact@s.neteng.pro.asc',
|
|
130
103
|
};
|
|
104
|
+
|
|
105
|
+
$: supportFp = pgpKeys[0]?.fingerprint?.split(' ') ?? [];
|
|
106
|
+
$: contactFp = pgpKeys[1]?.fingerprint?.split(' ') ?? [];
|
|
131
107
|
</script>
|
|
132
108
|
|
|
133
109
|
<!-- BEGIN TITLE -->
|
|
@@ -144,11 +120,11 @@ This file is part of Network Pro.
|
|
|
144
120
|
<p>
|
|
145
121
|
<strong>{COMPANY_INFO.NAME} ({COMPANY_INFO.APP_NAME}™)</strong>
|
|
146
122
|
<br />
|
|
147
|
-
<em>
|
|
123
|
+
<em>Security, Networking, Privacy</em>
|
|
148
124
|
</p>
|
|
149
125
|
</section>
|
|
150
126
|
|
|
151
|
-
|
|
127
|
+
<div class="spacer"></div>
|
|
152
128
|
|
|
153
129
|
<section id="subhead">
|
|
154
130
|
<h2>Security That Respects You</h2>
|
|
@@ -168,11 +144,10 @@ This file is part of Network Pro.
|
|
|
168
144
|
|
|
169
145
|
<p>
|
|
170
146
|
At <strong>{COMPANY_INFO.NAME} ({COMPANY_INFO.APP_NAME}™)</strong>, we
|
|
171
|
-
deliver network security and engineering,
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
can be both practical and powerful.
|
|
147
|
+
deliver network security and engineering, cybersecurity, and digital privacy
|
|
148
|
+
consulting with clarity, credibility, and care. We believe that real security
|
|
149
|
+
doesn't have to come at the cost of user autonomy, and that privacy-minded
|
|
150
|
+
solutions can be both practical and powerful.
|
|
176
151
|
</p>
|
|
177
152
|
|
|
178
153
|
<p>
|
|
@@ -211,10 +186,11 @@ This file is part of Network Pro.
|
|
|
211
186
|
<div class="spacer"></div>
|
|
212
187
|
|
|
213
188
|
<p>
|
|
214
|
-
Additionally, {COMPANY_INFO.APP_NAME}™ provides
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
189
|
+
Additionally, {COMPANY_INFO.APP_NAME}™ provides
|
|
190
|
+
<a href={servLink} target={PAGE.SELF}>on-site services</a>
|
|
191
|
+
in the Greater Phoenix Metropolitan Area (Maricopa County, AZ). Our
|
|
192
|
+
<a href={servLink} target={PAGE.SELF}>on-site services</a> are available to both
|
|
193
|
+
consumers and businesses. In addition to consulting, we offer the following services:
|
|
218
194
|
</p>
|
|
219
195
|
|
|
220
196
|
<ul>
|
|
@@ -227,14 +203,14 @@ This file is part of Network Pro.
|
|
|
227
203
|
<li><strong>Add or Configure a Printer</strong></li>
|
|
228
204
|
</ul>
|
|
229
205
|
|
|
206
|
+
<div class="spacer"></div>
|
|
207
|
+
|
|
230
208
|
<p>
|
|
231
209
|
We also believe education is a core pillar of real-world security. That's why
|
|
232
210
|
we invest in raising awareness—across both technical and general audiences—on
|
|
233
211
|
best practices in digital privacy, secure design, and threat mitigation.
|
|
234
212
|
</p>
|
|
235
213
|
|
|
236
|
-
<div class="spacer"></div>
|
|
237
|
-
|
|
238
214
|
<p>
|
|
239
215
|
At {COMPANY_INFO.APP_NAME}™, we deliver robust, intentional solutions
|
|
240
216
|
for individuals and organizations that prioritize integrity — without
|
|
@@ -246,15 +222,21 @@ This file is part of Network Pro.
|
|
|
246
222
|
Ready to take the next step? <a href={contactLink} target={PAGE.BLANK}
|
|
247
223
|
>Let's connect</a>
|
|
248
224
|
to explore how we can help fortify your home or business.
|
|
249
|
-
<a href={consultLink} target={PAGE.BLANK}
|
|
250
|
-
|
|
225
|
+
<a href={consultLink} target={PAGE.BLANK}
|
|
226
|
+
>Schedule a free, initial consultation</a> today and discover what's possible.
|
|
251
227
|
</p>
|
|
252
228
|
|
|
253
229
|
<p>
|
|
254
230
|
<strong>{COMPANY_INFO.NAME}</strong><br />
|
|
255
231
|
📞 Phone: {CONTACT.PHONE}<br />
|
|
256
|
-
📧 General Inquiries:
|
|
257
|
-
|
|
232
|
+
📧 General Inquiries:
|
|
233
|
+
<a href={`mailto:${CONTACT.EMAIL_LINK}`} target={PAGE.BLANK}>
|
|
234
|
+
{CONTACT.EMAIL_LINK}
|
|
235
|
+
</a><br />
|
|
236
|
+
🔐 Secure Email:
|
|
237
|
+
<a href={`mailto:${CONTACT.SECURE_LINK}`} target={PAGE.BLANK}>
|
|
238
|
+
{CONTACT.SECURE_LINK}
|
|
239
|
+
</a>
|
|
258
240
|
</p>
|
|
259
241
|
|
|
260
242
|
<div class="spacer"></div>
|
|
@@ -275,74 +257,84 @@ This file is part of Network Pro.
|
|
|
275
257
|
<div class="pgp-wrap">
|
|
276
258
|
<table class="pgp">
|
|
277
259
|
<tbody>
|
|
278
|
-
<!-- Row 0 (
|
|
260
|
+
<!-- Row 0 (Support) -->
|
|
279
261
|
<tr>
|
|
280
262
|
<td class="pgp-col1">
|
|
281
263
|
<picture>
|
|
282
|
-
<source srcset={pgpKeys[0].
|
|
264
|
+
<source srcset={pgpKeys[0].webp} type="image/webp" />
|
|
283
265
|
<img
|
|
284
266
|
{decoding}
|
|
285
267
|
{loading}
|
|
286
|
-
src={pgpKeys[0].
|
|
268
|
+
src={pgpKeys[0].png}
|
|
287
269
|
class="pgp-image"
|
|
288
|
-
alt={`
|
|
270
|
+
alt={`QR code for ${pgpKeys[0].email}`} />
|
|
289
271
|
</picture>
|
|
290
272
|
</td>
|
|
291
273
|
<td class="pgp-col2">
|
|
292
|
-
<
|
|
293
|
-
<strong
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
274
|
+
<p>
|
|
275
|
+
<strong
|
|
276
|
+
><a rel={PAGE.REL} href={pgpKeys[0].opgp} target={PAGE.BLANK}>
|
|
277
|
+
{pgpKeys[0].email}
|
|
278
|
+
</a></strong>
|
|
279
|
+
</p>
|
|
280
|
+
<p>
|
|
281
|
+
<a
|
|
282
|
+
href={pgpKeys[0].file}
|
|
283
|
+
type="application/pgp-keys"
|
|
284
|
+
download
|
|
285
|
+
target={PAGE.BLANK}>
|
|
286
|
+
asc <span class="fas fa-file-arrow-down"></span>
|
|
287
|
+
</a>
|
|
304
288
|
</p>
|
|
305
|
-
<p
|
|
306
|
-
>Fingerprint
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
289
|
+
<p>
|
|
290
|
+
<strong>Fingerprint:</strong><br />
|
|
291
|
+
{#if supportFp.length}
|
|
292
|
+
<span class="fingerprint">
|
|
293
|
+
{supportFp.slice(0, supportFp.length / 2).join(' ')}<br />
|
|
294
|
+
{supportFp.slice(supportFp.length / 2).join(' ')}
|
|
295
|
+
</span>
|
|
296
|
+
{/if}
|
|
310
297
|
</p>
|
|
311
298
|
</td>
|
|
312
299
|
</tr>
|
|
313
300
|
|
|
314
|
-
<!-- Row 1 (
|
|
301
|
+
<!-- Row 1 (Secure Contact) -->
|
|
315
302
|
<tr>
|
|
316
303
|
<td class="pgp-col1">
|
|
317
|
-
<a rel={PAGE.REL} href={pgpKeys[1].keySearch} target={PAGE.BLANK}>
|
|
318
|
-
<strong>{pgpKeys[1].label}</strong>
|
|
319
|
-
</a>
|
|
320
304
|
<p>
|
|
321
305
|
<strong
|
|
322
|
-
><a
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
306
|
+
><a rel={PAGE.REL} href={pgpKeys[1].opgp} target={PAGE.BLANK}>
|
|
307
|
+
{pgpKeys[1].email}
|
|
308
|
+
</a></strong>
|
|
309
|
+
</p>
|
|
310
|
+
<p>
|
|
311
|
+
<a
|
|
312
|
+
href={pgpKeys[1].file}
|
|
313
|
+
type="application/pgp-keys"
|
|
314
|
+
download
|
|
315
|
+
target={PAGE.BLANK}>
|
|
316
|
+
asc <span class="fas fa-file-arrow-down"></span>
|
|
317
|
+
</a>
|
|
329
318
|
</p>
|
|
330
|
-
<p
|
|
331
|
-
>Fingerprint
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
319
|
+
<p>
|
|
320
|
+
<strong>Fingerprint:</strong><br />
|
|
321
|
+
{#if contactFp.length}
|
|
322
|
+
<span class="fingerprint">
|
|
323
|
+
{contactFp.slice(0, contactFp.length / 2).join(' ')}<br />
|
|
324
|
+
{contactFp.slice(contactFp.length / 2).join(' ')}
|
|
325
|
+
</span>
|
|
326
|
+
{/if}
|
|
335
327
|
</p>
|
|
336
328
|
</td>
|
|
337
329
|
<td class="pgp-col2">
|
|
338
330
|
<picture>
|
|
339
|
-
<source srcset={pgpKeys[1].
|
|
331
|
+
<source srcset={pgpKeys[1].webp} type="image/webp" />
|
|
340
332
|
<img
|
|
341
333
|
{decoding}
|
|
342
334
|
{loading}
|
|
343
|
-
src={pgpKeys[1].
|
|
335
|
+
src={pgpKeys[1].png}
|
|
344
336
|
class="pgp-image"
|
|
345
|
-
alt={`
|
|
337
|
+
alt={`QR code for ${pgpKeys[1].email}`} />
|
|
346
338
|
</picture>
|
|
347
339
|
</td>
|
|
348
340
|
</tr>
|
|
@@ -351,13 +343,17 @@ This file is part of Network Pro.
|
|
|
351
343
|
<tr>
|
|
352
344
|
<td class="pgp-col1">
|
|
353
345
|
<picture>
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
346
|
+
{#if contactAssets.webp}
|
|
347
|
+
<source srcset={contactAssets.webp} type="image/webp" />
|
|
348
|
+
{/if}
|
|
349
|
+
{#if contactAssets.png}
|
|
350
|
+
<img
|
|
351
|
+
{decoding}
|
|
352
|
+
{loading}
|
|
353
|
+
src={contactAssets.png}
|
|
354
|
+
class="pgp-image"
|
|
355
|
+
alt="vCard" />
|
|
356
|
+
{/if}
|
|
361
357
|
</picture>
|
|
362
358
|
</td>
|
|
363
359
|
<td class="pgp-col2">
|
|
@@ -61,7 +61,7 @@ This file is part of Network Pro.
|
|
|
61
61
|
rel={PAGE.REL}
|
|
62
62
|
href="https://spdx.dev/learn/handling-license-info"
|
|
63
63
|
target={PAGE.BLANK}>
|
|
64
|
-
SPDX
|
|
64
|
+
SPDX-License-Identifier
|
|
65
65
|
</a>: <code>CC-BY-4.0 OR GPL-3.0-or-later</code>
|
|
66
66
|
</span>
|
|
67
67
|
</section>
|
|
@@ -46,17 +46,17 @@ This file is part of Network Pro.
|
|
|
46
46
|
<h3 class={classIndex}>🔒 Practical Cybersecurity. Trusted Expertise.</h3>
|
|
47
47
|
|
|
48
48
|
<p class={classCenter}>
|
|
49
|
-
At <strong>{COMPANY_INFO.NAME}</strong>, we specialize in network
|
|
50
|
-
cybersecurity, and digital privacy consulting that meets today's
|
|
51
|
-
demands. Our remote-first approach combines technical depth with
|
|
52
|
-
solutions—leveraging a strategic mix of open source and proprietary
|
|
49
|
+
At <strong>{COMPANY_INFO.NAME}</strong>, we specialize in network engineering
|
|
50
|
+
and security, cybersecurity, and digital privacy consulting that meets today's
|
|
51
|
+
real-world demands. Our remote-first approach combines technical depth with
|
|
52
|
+
practical solutions—leveraging a strategic mix of open source and proprietary
|
|
53
53
|
technologies based on performance, scalability, and trustworthiness.
|
|
54
54
|
</p>
|
|
55
55
|
|
|
56
56
|
<p class={classCenter}>
|
|
57
57
|
From secure network design to cloud infrastructure and perimeter defense, we
|
|
58
|
-
help organizations build stronger, smarter security
|
|
59
|
-
compromising flexibility or transparency.
|
|
58
|
+
help individuals and organizations build stronger, smarter security
|
|
59
|
+
postures—without compromising flexibility or transparency.
|
|
60
60
|
</p>
|
|
61
61
|
|
|
62
62
|
<p class={classCenter}>
|
|
@@ -76,9 +76,12 @@ This file is part of Network Pro.
|
|
|
76
76
|
📞 <strong>Phone:</strong>
|
|
77
77
|
{CONTACT.PHONE}<br />
|
|
78
78
|
📧 <strong>General Inquiries:</strong>
|
|
79
|
-
{CONTACT.
|
|
79
|
+
<a href={`mailto:${CONTACT.EMAIL_LINK}`} target={PAGE.BLANK}
|
|
80
|
+
>{CONTACT.EMAIL_LINK}</a
|
|
81
|
+
><br />
|
|
80
82
|
🔐 <strong>Secure Email:</strong>
|
|
81
|
-
{CONTACT.
|
|
83
|
+
<a href={`mailto:${CONTACT.SECURE_LINK}`} target={PAGE.BLANK}
|
|
84
|
+
>{CONTACT.SECURE_LINK}</a>
|
|
82
85
|
</p>
|
|
83
86
|
|
|
84
87
|
|
|
@@ -77,7 +77,7 @@ This file is part of Network Pro.
|
|
|
77
77
|
rel={PAGE.REL}
|
|
78
78
|
href="https://spdx.dev/learn/handling-license-info"
|
|
79
79
|
target={PAGE.BLANK}>
|
|
80
|
-
SPDX
|
|
80
|
+
SPDX-License-Identifier
|
|
81
81
|
</a>: <code>CC-BY-4.0 OR GPL-3.0-or-later</code>
|
|
82
82
|
</span>
|
|
83
83
|
</section>
|
|
@@ -7,43 +7,16 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== -->
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
|
-
import
|
|
10
|
+
import { CONSTANTS, protonPower, getQR, PGP_KEYS as keys } from '$lib';
|
|
11
|
+
import { CodeBlock } from '$lib/components';
|
|
11
12
|
import { base } from '$app/paths';
|
|
12
|
-
import { CONSTANTS } from '$lib';
|
|
13
13
|
|
|
14
14
|
// Log the base path to verify its value
|
|
15
15
|
//console.log("Base path:", base);
|
|
16
16
|
|
|
17
17
|
//console.log(CONSTANTS.COMPANY_INFO.APP_NAME);
|
|
18
18
|
|
|
19
|
-
const { PAGE } = CONSTANTS;
|
|
20
|
-
|
|
21
|
-
const keys = [
|
|
22
|
-
{
|
|
23
|
-
name: 'General Contact & Support',
|
|
24
|
-
email: 'support (at) neteng.pro',
|
|
25
|
-
fingerprint: '6590 B992 E2E3 EFF1 2738 7BCE 2AF0 93E9 DEC6 1BA0',
|
|
26
|
-
opgp: 'https://keys.openpgp.org/search?q=support%40neteng.pro',
|
|
27
|
-
file: '/pgp/support@neteng.pro.asc',
|
|
28
|
-
img: 'pgp-support',
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
name: 'Secure Email',
|
|
32
|
-
email: 'contact (at) s.neteng.pro',
|
|
33
|
-
fingerprint: 'DF11 8BAA 6C2D 9DCD EBDC 2DDC F993 7349 9495 F957',
|
|
34
|
-
opgp: 'https://keys.openpgp.org/search?q=contact%40s.neteng.pro',
|
|
35
|
-
file: '/pgp/contact@s.neteng.pro.asc',
|
|
36
|
-
img: 'pgp-contact',
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: 'Security Contact',
|
|
40
|
-
email: 'security (at) s.neteng.pro',
|
|
41
|
-
fingerprint: 'B7FE 1D4E 6CAB 3E71 4A9F DF6E 48CB 7290 C00D 0DA5',
|
|
42
|
-
opgp: 'https://keys.openpgp.org/search?q=security%40s.neteng.pro',
|
|
43
|
-
file: '/pgp/security@s.neteng.pro.asc',
|
|
44
|
-
img: 'pgp-security',
|
|
45
|
-
},
|
|
46
|
-
];
|
|
19
|
+
const { CONTACT, PAGE } = CONSTANTS;
|
|
47
20
|
|
|
48
21
|
/**
|
|
49
22
|
* Tracks which PGP key's fingerprint was last copied.
|
|
@@ -81,7 +54,7 @@ This file is part of Network Pro.
|
|
|
81
54
|
</p>
|
|
82
55
|
<p>
|
|
83
56
|
<img
|
|
84
|
-
src=
|
|
57
|
+
src={protonPower}
|
|
85
58
|
alt="Powered by Proton"
|
|
86
59
|
class="proton-img"
|
|
87
60
|
loading="eager"
|
|
@@ -93,9 +66,9 @@ This file is part of Network Pro.
|
|
|
93
66
|
</p>
|
|
94
67
|
|
|
95
68
|
{#each keys as key, i}
|
|
96
|
-
<section class="pgp-entry" aria-labelledby={`pgp-${key.
|
|
69
|
+
<section class="pgp-entry" aria-labelledby={`pgp-${key.id}`}>
|
|
97
70
|
<div class="pgp-text">
|
|
98
|
-
<h2 id={`pgp-${key.
|
|
71
|
+
<h2 id={`pgp-${key.id}`}>{key.name}</h2>
|
|
99
72
|
<h3>
|
|
100
73
|
<
|
|
101
74
|
{#if key.opgp}
|
|
@@ -129,13 +102,19 @@ This file is part of Network Pro.
|
|
|
129
102
|
</div>
|
|
130
103
|
<div class="pgp-qr">
|
|
131
104
|
<picture>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
105
|
+
{#if key.webp}
|
|
106
|
+
<source srcset={key.webp} type="image/webp" />
|
|
107
|
+
{/if}
|
|
108
|
+
{#if key.png}
|
|
109
|
+
<img
|
|
110
|
+
src={key.png}
|
|
111
|
+
alt={`QR code for ${key.email}`}
|
|
112
|
+
class="pgp-image"
|
|
113
|
+
loading={i === 0 ? 'eager' : 'lazy'}
|
|
114
|
+
decoding={i === 0 ? 'sync' : 'async'} />
|
|
115
|
+
{:else}
|
|
116
|
+
<p>QR image missing for {key.id}</p>
|
|
117
|
+
{/if}
|
|
139
118
|
</picture>
|
|
140
119
|
</div>
|
|
141
120
|
</section>
|
|
@@ -55,7 +55,7 @@ This file is part of Network Pro.
|
|
|
55
55
|
];
|
|
56
56
|
|
|
57
57
|
/** @type {string} */
|
|
58
|
-
const effectiveDate = 'October
|
|
58
|
+
const effectiveDate = 'October 21, 2025';
|
|
59
59
|
|
|
60
60
|
/** @type {string} */
|
|
61
61
|
const classSmall = 'small-text';
|
|
@@ -112,7 +112,7 @@ This file is part of Network Pro.
|
|
|
112
112
|
rel={PAGE.REL}
|
|
113
113
|
href="https://spdx.dev/learn/handling-license-info"
|
|
114
114
|
target={PAGE.BLANK}>
|
|
115
|
-
SPDX
|
|
115
|
+
SPDX-License-Identifier
|
|
116
116
|
</a>: <code>CC-BY-4.0 OR GPL-3.0-or-later</code>
|
|
117
117
|
</span>
|
|
118
118
|
</section>
|
|
@@ -432,7 +432,10 @@ This file is part of Network Pro.
|
|
|
432
432
|
href={prightsLink}
|
|
433
433
|
target={PAGE.BLANK}>Privacy Rights Request Form</a
|
|
434
434
|
>. Alternatively, you can email us at
|
|
435
|
-
<strong
|
|
435
|
+
<strong
|
|
436
|
+
><a href={`mailto:${CONTACT.PRIVACY_LINK}`} target={PAGE.BLANK}
|
|
437
|
+
>{CONTACT.PRIVACY_LINK}</a
|
|
438
|
+
></strong>
|
|
436
439
|
with the subject line: "<strong>Privacy Rights Preferences</strong>".
|
|
437
440
|
</p>
|
|
438
441
|
{:else if link.id === 'third-party'}
|
|
@@ -87,7 +87,7 @@ This file is part of Network Pro.
|
|
|
87
87
|
rel={PAGE.REL}
|
|
88
88
|
href="https://spdx.dev/learn/handling-license-info"
|
|
89
89
|
target={PAGE.BLANK}>
|
|
90
|
-
SPDX
|
|
90
|
+
SPDX-License-Identifier
|
|
91
91
|
</a>: <code>CC-BY-4.0 OR GPL-3.0-or-later</code>
|
|
92
92
|
</span>
|
|
93
93
|
</section>
|
|
@@ -240,7 +240,10 @@ This file is part of Network Pro.
|
|
|
240
240
|
href={prightsLink}
|
|
241
241
|
target={PAGE.BLANK}>Privacy Rights Request Form</a
|
|
242
242
|
>. Alternatively, you can email us at
|
|
243
|
-
<strong
|
|
243
|
+
<strong
|
|
244
|
+
><a href={`mailto:${CONTACT.PRIVACY_LINK}`} target={PAGE.BLANK}
|
|
245
|
+
>{CONTACT.PRIVACY_LINK}</a
|
|
246
|
+
></strong>
|
|
244
247
|
with the subject line: "<strong>Privacy Rights Preferences</strong>".
|
|
245
248
|
</p>
|
|
246
249
|
</section>
|
|
@@ -44,7 +44,7 @@ This file is part of Network Pro.
|
|
|
44
44
|
* @type {{ effectiveDate: string, classSmall: string }}
|
|
45
45
|
*/
|
|
46
46
|
const constants = {
|
|
47
|
-
effectiveDate: 'October
|
|
47
|
+
effectiveDate: 'October 21, 2025',
|
|
48
48
|
classSmall: 'small-text',
|
|
49
49
|
};
|
|
50
50
|
</script>
|
|
@@ -56,7 +56,7 @@ This file is part of Network Pro.
|
|
|
56
56
|
rel={PAGE.REL}
|
|
57
57
|
href="https://spdx.dev/learn/handling-license-info"
|
|
58
58
|
target={PAGE.BLANK}>
|
|
59
|
-
SPDX
|
|
59
|
+
SPDX-License-Identifier
|
|
60
60
|
</a>: <code>CC-BY-4.0 OR GPL-3.0-or-later</code>
|
|
61
61
|
</span>
|
|
62
62
|
</section>
|
|
@@ -83,7 +83,7 @@ This file is part of Network Pro.
|
|
|
83
83
|
If you're a business seeking similar on-site solutions, we've got you covered!
|
|
84
84
|
We offer tailored services to meet the unique needs of commercial clients as
|
|
85
85
|
well. Simply <a href={consultLink} target={PAGE.BLANK}
|
|
86
|
-
>schedule a consultation</a>
|
|
86
|
+
>schedule a free, initial consultation</a>
|
|
87
87
|
or <a href={contactLink} target={PAGE.BLANK}>contact us directly</a> — we'd be
|
|
88
88
|
happy to discuss how {COMPANY_INFO.APP_NAME}™ can support your business
|
|
89
89
|
on-site.
|
|
@@ -92,7 +92,10 @@ This file is part of Network Pro.
|
|
|
92
92
|
<p>
|
|
93
93
|
<strong>{COMPANY_INFO.NAME}</strong><br />
|
|
94
94
|
📞 Phone: {CONTACT.PHONE}<br />
|
|
95
|
-
📧 General Inquiries:
|
|
95
|
+
📧 General Inquiries:
|
|
96
|
+
<a href={`mailto:${CONTACT.EMAIL_LINK}`} target={PAGE.BLANK}
|
|
97
|
+
>{CONTACT.EMAIL_LINK}</a
|
|
98
|
+
><br />
|
|
96
99
|
</p>
|
|
97
100
|
|
|
98
101
|
<div class="spacer"></div>
|
|
@@ -67,7 +67,7 @@ This file is part of Network Pro.
|
|
|
67
67
|
rel={PAGE.REL}
|
|
68
68
|
href="https://spdx.dev/learn/handling-license-info"
|
|
69
69
|
target={PAGE.BLANK}>
|
|
70
|
-
SPDX
|
|
70
|
+
SPDX-License-Identifier
|
|
71
71
|
</a>: <code>CC-BY-4.0 OR GPL-3.0-or-later</code>
|
|
72
72
|
</span>
|
|
73
73
|
</section>
|
|
@@ -65,7 +65,7 @@ This file is part of Network Pro.
|
|
|
65
65
|
* @type {{ effectiveDate: string, classSmall: string }}
|
|
66
66
|
*/
|
|
67
67
|
const constants = {
|
|
68
|
-
effectiveDate: '
|
|
68
|
+
effectiveDate: 'October 21, 2025',
|
|
69
69
|
classSmall: 'small-text',
|
|
70
70
|
};
|
|
71
71
|
</script>
|
|
@@ -77,7 +77,7 @@ This file is part of Network Pro.
|
|
|
77
77
|
rel={PAGE.REL}
|
|
78
78
|
href="https://spdx.dev/learn/handling-license-info"
|
|
79
79
|
target={PAGE.BLANK}>
|
|
80
|
-
SPDX
|
|
80
|
+
SPDX-License-Identifier
|
|
81
81
|
</a>: <code>CC-BY-4.0 OR GPL-3.0-or-later</code>
|
|
82
82
|
</span>
|
|
83
83
|
</section>
|
|
@@ -142,7 +142,7 @@ This file is part of Network Pro.
|
|
|
142
142
|
These Terms of Use apply to all platforms associated with the Company,
|
|
143
143
|
including but not limited to:
|
|
144
144
|
<strong>
|
|
145
|
-
GitHub, our main website (hosted via
|
|
145
|
+
GitHub, our main website (hosted via Vercel and GitHub Pages), Stack
|
|
146
146
|
Overflow Teams, Nextcloud, communications on Discord and/or Slack, and
|
|
147
147
|
our social media presence (e.g., Facebook, Instagram, X, and similar
|
|
148
148
|
platforms).
|