xynginc 1.0.98 → 1.0.99
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/README.md +170 -241
- package/bin/xynginc +0 -0
- package/package.json +3 -2
- package/xypriss.plugin.xsig +4 -4
package/README.md
CHANGED
|
@@ -1,65 +1,72 @@
|
|
|
1
|
-
# XyNginC
|
|
1
|
+
# XyNginC (XNCP)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
XyPriss Nginx Controller (XNCP) is an enterprise-grade infrastructure controller providing automated reverse proxy configuration, Let's Encrypt SSL/TLS lifecycle management, and systemd service orchestration for the XyPriss web ecosystem.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
[](https://www.npmjs.com/package/xynginc)
|
|
5
|
+
[](https://www.npmjs.com/package/xynginc)
|
|
8
6
|
[](https://dll.nehonix.com/licenses/NOSL)
|
|
7
|
+
[](https://github.com/Nehonix-Team/xynginc/releases)
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
---
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
## 1. Architectural Overview
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
> XyNginC is a plugin **exclusively designed for XyPriss projects**. It is not intended for use outside the XyPriss ecosystem, in development environments, or on non-Linux systems. For the best integration experience, **XFPM** (XyPriss Fast Package Manager) is required — see [Installation](#installation).
|
|
13
|
+
XyNginC eliminates manual web server configuration by bridging application-level declarations in XyPriss directly with Linux system-level primitives. The architecture is composed of two primary layers:
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
1. **TypeScript Controller Plugin**: Integrates into the XyPriss lifecycle, validates domain declarations, enforces security boundaries, and prevents execution conflicts in multi-tenant or multi-server topologies.
|
|
16
|
+
2. **Native Go Engine (`core-go`)**: A compiled binary that interacts directly with host system utilities (`nginx`, `certbot`, `ufw`, `systemd`). It executes operations with deterministic speed, zero runtime overhead, and strict isolation.
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
```mermaid
|
|
19
|
+
graph TD
|
|
20
|
+
A[XyPriss Application Server] -->|TypeScript API / Zero-Trust| B(XyNginC Plugin Wrapper)
|
|
21
|
+
B -->|Encrypted IPC / Temp Configuration| C(XyNginC Native Go Engine)
|
|
22
|
+
C -->|Configuration & Service Reload| D[Nginx Reverse Proxy & Headers-More]
|
|
23
|
+
C -->|ACME Automation| E[Let's Encrypt SSL / Certbot]
|
|
24
|
+
C -->|Process Supervision| F[Linux Systemd Daemon]
|
|
25
|
+
```
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
- **One-Command SSL**: Integrated Let's Encrypt and Certbot support for automatic HTTPS.
|
|
24
|
-
- **Automatic Nginx Reload**: Applies configuration changes without manual service restarts.
|
|
25
|
-
- **Multi-Domain Support**: Manages multiple domains and subdomains within a single configuration.
|
|
26
|
-
- **Optimized Configuration**: Generates production-ready Nginx configuration files via dynamic GitHub template fetching.
|
|
27
|
-
- **High Performance**: Core logic executed via a Go-based CLI for speed and reliability.
|
|
28
|
-
- **Type Safety**: Full TypeScript support with comprehensive type definitions.
|
|
27
|
+
---
|
|
29
28
|
|
|
30
|
-
##
|
|
29
|
+
## 2. Core Capabilities
|
|
31
30
|
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
- **Automated Reverse Proxy**: Generates hardened Nginx virtual host declarations matching local application ports.
|
|
32
|
+
- **Automated TLS Lifecycle**: Manages certificate issuance and HTTP-01 challenge completion via Certbot without service interruption.
|
|
33
|
+
- **Production Hardening**: Implements CIS and OWASP-aligned configuration baselines, HTTP/2 termination, and connection pooling.
|
|
34
|
+
- **Header Obfuscation**: Integrates `libnginx-mod-http-headers-more-filter` to strip default web server identification tokens and enforce `Server: NEHONIX/XNCP`.
|
|
35
|
+
- **Systemd Process Supervision**: Provides one-command deployment to transform XyPriss applications into self-healing, auto-restarting systemd daemons.
|
|
36
|
+
- **Multi-Server Deduplication**: Synchronizes state across multiple sub-instances sharing identical domain configurations to prevent redundant Nginx reloads.
|
|
37
|
+
- **Firewall Integration**: Optionally verifies and provisions access rules on active Uncomplicated Firewall (UFW) configurations.
|
|
34
38
|
|
|
35
|
-
|
|
39
|
+
---
|
|
36
40
|
|
|
37
|
-
|
|
41
|
+
## 3. System Requirements & Compatibility
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
- **Operating System**: Linux (Ubuntu 22.04+, Debian 11+ recommended).
|
|
44
|
+
- **Architectures**: x86_64 (`amd64`), ARM64 (`aarch64`), x86 (`386`).
|
|
45
|
+
- **Runtimes**: Bun (v1.2+), Node.js (v18.0+).
|
|
46
|
+
- **Package Manager**: XFPM (XyPriss Fast Package Manager).
|
|
40
47
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
```
|
|
48
|
+
> [!IMPORTANT]
|
|
49
|
+
> XyNginC is designed specifically for Linux server environments in production. Windows and macOS are not supported for production deployments.
|
|
44
50
|
|
|
45
|
-
|
|
46
|
-
xfpm --version
|
|
47
|
-
```
|
|
51
|
+
---
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
## 4. Installation
|
|
54
|
+
|
|
55
|
+
XyNginC is distributed through the official XyPriss registry using XFPM:
|
|
50
56
|
|
|
51
57
|
```bash
|
|
52
58
|
xfpm install xynginc
|
|
53
59
|
```
|
|
54
60
|
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
The package registers two CLI aliases in the workspace environment: `xynginc` and `xncp`.
|
|
62
|
+
|
|
63
|
+
---
|
|
57
64
|
|
|
58
|
-
##
|
|
65
|
+
## 5. Integration
|
|
59
66
|
|
|
60
|
-
### Basic
|
|
67
|
+
### Basic Server Declaration
|
|
61
68
|
|
|
62
|
-
|
|
69
|
+
Register XyNginC within the server initialization pipeline:
|
|
63
70
|
|
|
64
71
|
```typescript
|
|
65
72
|
import { createServer } from "xypriss";
|
|
@@ -72,11 +79,22 @@ const app = createServer({
|
|
|
72
79
|
domains: [
|
|
73
80
|
{
|
|
74
81
|
domain: "api.example.com",
|
|
75
|
-
port:
|
|
82
|
+
port: 8088,
|
|
76
83
|
ssl: true,
|
|
77
|
-
email: "
|
|
84
|
+
email: "ops@example.com",
|
|
85
|
+
maxBodySize: "25M",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
domain: "auth.example.com",
|
|
89
|
+
port: 8089,
|
|
90
|
+
ssl: true,
|
|
91
|
+
email: "ops@example.com",
|
|
78
92
|
},
|
|
79
93
|
],
|
|
94
|
+
installRequirements: true,
|
|
95
|
+
autoReload: true,
|
|
96
|
+
autoFixFirewall: true,
|
|
97
|
+
sudoPassword: process.env.SUDO_PASSWORD,
|
|
80
98
|
}),
|
|
81
99
|
],
|
|
82
100
|
},
|
|
@@ -85,249 +103,160 @@ const app = createServer({
|
|
|
85
103
|
app.start();
|
|
86
104
|
```
|
|
87
105
|
|
|
88
|
-
|
|
106
|
+
---
|
|
89
107
|
|
|
90
|
-
|
|
108
|
+
## 6. Process Supervision & Service Management
|
|
91
109
|
|
|
92
|
-
|
|
93
|
-
XNCP({
|
|
94
|
-
domains: [
|
|
95
|
-
{
|
|
96
|
-
domain: "api.example.com",
|
|
97
|
-
port: 3000,
|
|
98
|
-
ssl: true,
|
|
99
|
-
email: "admin@example.com",
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
domain: "admin.example.com",
|
|
103
|
-
port: 3001,
|
|
104
|
-
ssl: true,
|
|
105
|
-
email: "admin@example.com",
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
domain: "dev.example.com",
|
|
109
|
-
port: 3002,
|
|
110
|
-
ssl: false,
|
|
111
|
-
},
|
|
112
|
-
],
|
|
113
|
-
autoReload: true,
|
|
114
|
-
});
|
|
115
|
-
```
|
|
110
|
+
XyNginC includes dedicated systemd management commands to ensure persistent execution, crash resilience, and automatic startup upon system boot.
|
|
116
111
|
|
|
117
|
-
###
|
|
112
|
+
### Service Deployment
|
|
118
113
|
|
|
119
|
-
|
|
114
|
+
From the root directory of your project:
|
|
120
115
|
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
// Add a new domain
|
|
124
|
-
await app.xynginc.addDomain(
|
|
125
|
-
"new.example.com",
|
|
126
|
-
4000,
|
|
127
|
-
true,
|
|
128
|
-
"admin@example.com",
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
// List configured domains
|
|
132
|
-
const domains = await app.xynginc.listDomains();
|
|
133
|
-
console.log("Configured domains:", domains);
|
|
134
|
-
|
|
135
|
-
// Validate XCNP configuration
|
|
136
|
-
const isValid = await app.xynginc.test();
|
|
137
|
-
|
|
138
|
-
// Reload XyNginC service
|
|
139
|
-
await app.xynginc.reload();
|
|
140
|
-
|
|
141
|
-
// Remove a domain
|
|
142
|
-
await app.xynginc.removeDomain("old.example.com");
|
|
143
|
-
});
|
|
116
|
+
```bash
|
|
117
|
+
sudo xfpmx xncp service install
|
|
144
118
|
```
|
|
145
119
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
domain: string; // Domain name (e.g., api.example.com)
|
|
155
|
-
port: number; // Local port to proxy (e.g., 3000)
|
|
156
|
-
ssl?: boolean; // Enable SSL via Let's Encrypt
|
|
157
|
-
email?: string; // Email for Let's Encrypt registration (required if ssl=true)
|
|
158
|
-
}>;
|
|
120
|
+
The installer automatically:
|
|
121
|
+
1. Detects the execution runtime (`bun` or `node`).
|
|
122
|
+
2. Detects the project entrypoint (`src/server.ts`, `server.ts`, `dist/index.js`).
|
|
123
|
+
3. Discovers and binds the local `.env` configuration (`EnvironmentFile`).
|
|
124
|
+
4. Configures process execution under the non-root owner (`SUDO_USER` or `ubuntu`).
|
|
125
|
+
5. Enforces resource limits (`LimitNOFILE=65535`, `LimitNPROC=4096`).
|
|
126
|
+
6. Configures auto-restart policies (`Restart=always`, `RestartSec=5s`).
|
|
127
|
+
7. Enables and immediately launches the service unit via systemd.
|
|
159
128
|
|
|
160
|
-
|
|
161
|
-
autoReload?: boolean;
|
|
129
|
+
### Service Operations
|
|
162
130
|
|
|
163
|
-
|
|
164
|
-
|
|
131
|
+
```bash
|
|
132
|
+
# List all services managed by XyNginC
|
|
133
|
+
xfpmx xncp service list # or: xfpmx xncp services
|
|
165
134
|
|
|
166
|
-
|
|
167
|
-
|
|
135
|
+
# Display service status and Nginx health
|
|
136
|
+
xfpmx xncp service status [service-name]
|
|
168
137
|
|
|
169
|
-
|
|
170
|
-
|
|
138
|
+
# Follow live application log output
|
|
139
|
+
xfpmx xncp logs -f
|
|
171
140
|
|
|
172
|
-
|
|
173
|
-
|
|
141
|
+
# Restart, stop, or start service
|
|
142
|
+
sudo xfpmx xncp service restart [service-name]
|
|
143
|
+
sudo xfpmx xncp service stop [service-name]
|
|
144
|
+
sudo xfpmx xncp service start [service-name]
|
|
174
145
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}
|
|
146
|
+
# Uninstall and deregister service unit
|
|
147
|
+
sudo xfpmx xncp service uninstall [service-name]
|
|
178
148
|
```
|
|
179
149
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
The following methods are exposed on `server.xynginc` after the plugin is registered:
|
|
183
|
-
|
|
184
|
-
```typescript
|
|
185
|
-
// Add a domain configuration
|
|
186
|
-
await server.xynginc.addDomain(
|
|
187
|
-
domain: string,
|
|
188
|
-
port: number,
|
|
189
|
-
ssl: boolean,
|
|
190
|
-
email?: string
|
|
191
|
-
): Promise<void>
|
|
192
|
-
|
|
193
|
-
// Remove a domain configuration
|
|
194
|
-
await server.xynginc.removeDomain(domain: string): Promise<void>
|
|
150
|
+
---
|
|
195
151
|
|
|
196
|
-
|
|
197
|
-
await server.xynginc.listDomains(): Promise<string[]>
|
|
152
|
+
## 7. Command-Line Interface Reference
|
|
198
153
|
|
|
199
|
-
|
|
200
|
-
await server.xynginc.reload(): Promise<void>
|
|
201
|
-
|
|
202
|
-
// Test XyNginC configuration validity
|
|
203
|
-
await server.xynginc.test(): Promise<boolean>
|
|
204
|
-
|
|
205
|
-
// Get status of managed sites
|
|
206
|
-
await server.xynginc.status(): Promise<string>
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
## CLI Usage
|
|
210
|
-
|
|
211
|
-
The `xynginc` command-line interface allows for direct management without the XyPriss application context.
|
|
154
|
+
The CLI can be invoked globally as `xynginc` / `xncp` or locally via `xfpmx xncp`:
|
|
212
155
|
|
|
213
156
|
```bash
|
|
214
|
-
#
|
|
215
|
-
sudo xynginc check
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
# List
|
|
157
|
+
# Infrastructure Diagnostics & Setup
|
|
158
|
+
sudo xynginc check # Verify system dependencies
|
|
159
|
+
sudo xynginc install # Install missing system requirements
|
|
160
|
+
|
|
161
|
+
# Service Supervision
|
|
162
|
+
sudo xynginc service install [name] # Provision and start systemd service
|
|
163
|
+
xynginc service list # List all managed background services (alias: services)
|
|
164
|
+
sudo xynginc service start [name] # Start managed service
|
|
165
|
+
sudo xynginc service stop [name] # Stop managed service
|
|
166
|
+
sudo xynginc service restart [name] # Restart managed service
|
|
167
|
+
xynginc service status [name] # Inspect unit status and reverse proxy state
|
|
168
|
+
xynginc service logs [name] -f # Stream live service logs
|
|
169
|
+
sudo xynginc service uninstall [name] # Remove service unit
|
|
170
|
+
|
|
171
|
+
# Direct Aliases
|
|
172
|
+
xynginc services # List all background services
|
|
173
|
+
xynginc logs -f # Stream logs of default service
|
|
174
|
+
|
|
175
|
+
# Virtual Host Management
|
|
176
|
+
sudo xynginc add --domain example.com --port 8080 --ssl --email ops@example.com
|
|
177
|
+
sudo xynginc remove example.com
|
|
221
178
|
sudo xynginc list
|
|
222
179
|
|
|
223
|
-
#
|
|
224
|
-
sudo xynginc
|
|
225
|
-
|
|
226
|
-
#
|
|
227
|
-
sudo xynginc
|
|
228
|
-
|
|
229
|
-
# Reload Nginx
|
|
230
|
-
sudo xynginc reload
|
|
231
|
-
|
|
232
|
-
# Remove a domain
|
|
233
|
-
sudo xynginc remove api.example.com
|
|
234
|
-
|
|
235
|
-
# View status
|
|
236
|
-
sudo xynginc status
|
|
180
|
+
# Server Validation & Maintenance
|
|
181
|
+
sudo xynginc test # Validate current Nginx syntax
|
|
182
|
+
sudo xynginc reload # Safely reload Nginx configuration
|
|
183
|
+
sudo xynginc clean # Purge conflicting or broken virtual hosts
|
|
184
|
+
sudo xynginc restore <backup_id> # Revert to a previous configuration backup
|
|
237
185
|
```
|
|
238
186
|
|
|
239
|
-
###
|
|
240
|
-
|
|
241
|
-
```json
|
|
242
|
-
{
|
|
243
|
-
"domains": [
|
|
244
|
-
{
|
|
245
|
-
"domain": "api.example.com",
|
|
246
|
-
"port": 3000,
|
|
247
|
-
"ssl": true,
|
|
248
|
-
"email": "admin@example.com"
|
|
249
|
-
}
|
|
250
|
-
],
|
|
251
|
-
"auto_reload": true,
|
|
252
|
-
"autofix_firewall": true
|
|
253
|
-
}
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
## Architecture
|
|
257
|
-
|
|
258
|
-
The system operates through a three-tier architecture:
|
|
187
|
+
### Options for `service install`
|
|
259
188
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
189
|
+
| Parameter | Alias | Description | Default |
|
|
190
|
+
|---|---|---|---|
|
|
191
|
+
| `--name` | `-n` | Systemd service unit identifier | `name` in `package.json` |
|
|
192
|
+
| `--runtime` | `-r` | Absolute path to runtime binary | Auto-detected (`bun`/`node`) |
|
|
193
|
+
| `--entrypoint` | `-e` | Path to server bootstrap file | Auto-detected (`src/server.ts`...) |
|
|
194
|
+
| `--user` | `-u` | Linux system user for process execution | `SUDO_USER` / current user |
|
|
195
|
+
| `--env-file` | | Path to environment file | Auto-detected `.env` in directory |
|
|
263
196
|
|
|
264
|
-
|
|
197
|
+
---
|
|
265
198
|
|
|
266
|
-
|
|
199
|
+
## 8. TypeScript Plugin Options
|
|
267
200
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
- **Sudoers**: We recommend configuring `sudoers` to allow specific commands for the user.
|
|
277
|
-
- **Sudo Password**: If your application runs in the background (e.g. using PM2), you can use the `sudoPassword` option or the `SUDO_PASSWORD` environment variable.
|
|
278
|
-
- **Reassurance**: The password is used **only** to execute the local `xynginc` binary and system commands like `ufw` or `service`. It is never stored, logged, or transmitted outside of your server.
|
|
279
|
-
- **Firewall**: The `autoFixFirewall` option allows XyNginC to automatically detect and open Port 80/443 if `ufw` is active. This is useful for automated SSL validation.
|
|
280
|
-
|
|
281
|
-
## Troubleshooting
|
|
201
|
+
```typescript
|
|
202
|
+
interface XyNginCDomainConfig {
|
|
203
|
+
domain: string; // Target host (e.g., "api.example.com")
|
|
204
|
+
port: number; // Local listener port
|
|
205
|
+
ssl?: boolean; // Enable Let's Encrypt TLS (default: false)
|
|
206
|
+
email?: string; // Registration email for ACME notifications
|
|
207
|
+
maxBodySize?: string; // Client request limit, e.g., "50M" (default: "10M")
|
|
208
|
+
}
|
|
282
209
|
|
|
283
|
-
|
|
210
|
+
interface XyNginCPluginOptions {
|
|
211
|
+
domains: XyNginCDomainConfig[];
|
|
212
|
+
installRequirements?: boolean; // Provision system dependencies if missing (default: false)
|
|
213
|
+
autoReload?: boolean; // Reload Nginx upon successful configuration (default: true)
|
|
214
|
+
autoFixFirewall?: boolean; // Provision UFW rules for 80/443 (default: false)
|
|
215
|
+
sudoPassword?: string; // Password for non-interactive privilege escalation
|
|
216
|
+
binaryPath?: string; // Custom path to xynginc Go binary
|
|
217
|
+
autoDownload?: boolean; // Automatically retrieve binary if not present (default: true)
|
|
218
|
+
version?: string; // Specific Go core release tag (default: "latest")
|
|
219
|
+
}
|
|
220
|
+
```
|
|
284
221
|
|
|
285
|
-
|
|
222
|
+
---
|
|
286
223
|
|
|
287
|
-
|
|
288
|
-
# Manually trigger with XFPM
|
|
289
|
-
xfpm run postinstall
|
|
290
|
-
|
|
291
|
-
# Or specify the path manually in options
|
|
292
|
-
XNCP({
|
|
293
|
-
binaryPath: "/usr/local/bin/xynginc",
|
|
294
|
-
autoDownload: false,
|
|
295
|
-
})
|
|
296
|
-
```
|
|
224
|
+
## 9. Programmatic Server API
|
|
297
225
|
|
|
298
|
-
|
|
226
|
+
When registered, XyNginC attaches management methods directly to `server.xynginc`:
|
|
299
227
|
|
|
300
|
-
|
|
228
|
+
```typescript
|
|
229
|
+
// Dynamically register a domain at runtime
|
|
230
|
+
await server.xynginc.addDomain(domain, port, ssl, email, maxBodySize);
|
|
301
231
|
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
sudo node server.js
|
|
305
|
-
```
|
|
232
|
+
// Unregister a domain and remove virtual host
|
|
233
|
+
await server.xynginc.removeDomain(domain);
|
|
306
234
|
|
|
307
|
-
|
|
235
|
+
// Query configured domain inventory
|
|
236
|
+
const domains: string[] = await server.xynginc.listDomains();
|
|
308
237
|
|
|
309
|
-
|
|
238
|
+
// Execute Nginx configuration test
|
|
239
|
+
const isSyntacticallyValid: boolean = await server.xynginc.test();
|
|
310
240
|
|
|
311
|
-
|
|
312
|
-
|
|
241
|
+
// Trigger safe service reload
|
|
242
|
+
await server.xynginc.reload();
|
|
313
243
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
sudo ufw allow 443
|
|
244
|
+
// Retrieve aggregate infrastructure status
|
|
245
|
+
const summary: string = await server.xynginc.status();
|
|
317
246
|
```
|
|
318
247
|
|
|
319
|
-
|
|
320
|
-
> Certbot requires ports 80 and 443 to be publicly accessible for domain validation. Make sure your cloud provider's security groups also allow this traffic, not just UFW.
|
|
248
|
+
---
|
|
321
249
|
|
|
322
|
-
##
|
|
250
|
+
## 10. Security & Compliance Specifications
|
|
323
251
|
|
|
324
|
-
|
|
252
|
+
- **Privilege Separation**: Application services execute strictly under unprivileged user accounts. Privilege escalation via `sudo` is scoped exclusively to configuration files and service reloads.
|
|
253
|
+
- **Secure File Passing**: Configurations are passed to the Go core via transient, restricted-permission files (`/tmp/.xynginc-config-*.json`) that are deleted immediately after parsing to prevent sensitive data leakage.
|
|
254
|
+
- **Signature Integrity**: Distributed with an official cryptographic manifest (`xypriss.plugin.xsig`) validated by the XyPriss runtime against unauthorized modification.
|
|
255
|
+
- **Network Boundaries**: Nginx reverse proxy templates restrict upstream listeners to loopback interfaces (`127.0.0.1`) by default, preventing direct public exposure of internal microservices.
|
|
325
256
|
|
|
326
|
-
|
|
327
|
-
2. Install dependencies
|
|
328
|
-
3. Build the Go CLI and TypeScript package (`xfpm run build:all`)
|
|
329
|
-
4. Run tests
|
|
257
|
+
---
|
|
330
258
|
|
|
331
|
-
## License
|
|
259
|
+
## 11. License
|
|
332
260
|
|
|
333
|
-
NOSL
|
|
261
|
+
This software is licensed under the **NEHONIX Open Source License (NOSL) v1.0**.
|
|
262
|
+
Copyright © 2025-2026 [NEHONIX](https://www.nehonix.com). All rights reserved.
|
package/bin/xynginc
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xynginc",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.99",
|
|
4
4
|
"description": "XyPriss Nginx Controller - Automatic Nginx & SSL management for XyPriss servers",
|
|
5
5
|
"author": "Seth Eleazar - iDevo",
|
|
6
6
|
"license": "NOSL",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"xypriss.config.jsonc"
|
|
15
15
|
],
|
|
16
16
|
"bin": {
|
|
17
|
-
"xynginc": "./bin/xynginc"
|
|
17
|
+
"xynginc": "./bin/xynginc",
|
|
18
|
+
"xncp": "./bin/xynginc"
|
|
18
19
|
},
|
|
19
20
|
"engines": {
|
|
20
21
|
"node": ">=18.0.0"
|
package/xypriss.plugin.xsig
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
--- XYPRISS SIGNATURE (G3) ---
|
|
2
|
-
Manifest: xynginc@1.0.
|
|
2
|
+
Manifest: xynginc@1.0.99
|
|
3
3
|
Min-Engine: 1.0.81
|
|
4
|
-
Fingerprint: sha256:
|
|
4
|
+
Fingerprint: sha256:460ca9bd2d503063a12a86c92d768deb5085da7f6da8607afec24e326f9c7a53
|
|
5
5
|
Identity: ed25519:0e2e1accdbba45480979305256d50d368ae6cc2c0d7ee378c5f1999ae834cf58
|
|
6
6
|
Privileges: XHS.HOOK.LIFECYCLE.REGISTER,XHS.HOOK.LIFECYCLE.SERVER_START,XHS.HOOK.LIFECYCLE.SERVER_STOP,XHS.HOOK.LIFECYCLE.SERVER_READY
|
|
7
|
-
Expires: 2027-09-
|
|
7
|
+
Expires: 2027-09-14T06:50:38Z
|
|
8
8
|
Revision: sha256:none
|
|
9
9
|
--- BEGIN CRYPTOGRAPHIC PROOF ---
|
|
10
|
-
base64:
|
|
10
|
+
base64:HdYiyjSlrYZS7CRh9xojf0E91Kt7oo452cEWgdd1BceBpDfHX1XB253auA058m6MDxnAJPgqU+6Vm/1Ml1cTAQ==
|
|
11
11
|
--- END XYPRISS SIGNATURE ---
|