onboardconnect-agent 0.1.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/dist/crypto.d.ts +3 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +12 -0
- package/dist/crypto.js.map +1 -0
- package/dist/heartbeat.d.ts +17 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +86 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/ldap.d.ts +31 -0
- package/dist/ldap.d.ts.map +1 -0
- package/dist/ldap.js +420 -0
- package/dist/ldap.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +47 -0
- package/dist/logger.js.map +1 -0
- package/dist/relay.d.ts +38 -0
- package/dist/relay.d.ts.map +1 -0
- package/dist/relay.js +347 -0
- package/dist/relay.js.map +1 -0
- package/dist/request-log.d.ts +24 -0
- package/dist/request-log.d.ts.map +1 -0
- package/dist/request-log.js +52 -0
- package/dist/request-log.js.map +1 -0
- package/dist/server.d.ts +30 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +509 -0
- package/dist/server.js.map +1 -0
- package/dist/setup.d.ts +3 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +342 -0
- package/dist/setup.js.map +1 -0
- package/dist/store.d.ts +53 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +170 -0
- package/dist/store.js.map +1 -0
- package/dist/uninstall.d.ts +2 -0
- package/dist/uninstall.d.ts.map +1 -0
- package/dist/uninstall.js +127 -0
- package/dist/uninstall.js.map +1 -0
- package/dist/updater.d.ts +4 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +30 -0
- package/dist/updater.js.map +1 -0
- package/package.json +62 -0
- package/scripts/install.ps1 +133 -0
- package/scripts/install.sh +132 -0
- package/scripts/postinstall.js +21 -0
- package/scripts/postinstall.ts +24 -0
- package/scripts/uninstall.ps1 +93 -0
- package/scripts/uninstall.sh +85 -0
- package/ui/assets/index-Bf505_Hi.css +1 -0
- package/ui/assets/index-zxbHz6zx.js +71 -0
- package/ui/index.html +23 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import inquirer from "inquirer";
|
|
4
|
+
import { existsSync, rmSync } from "fs";
|
|
5
|
+
import { execSync } from "child_process";
|
|
6
|
+
import { join } from "path";
|
|
7
|
+
const OC_CONFIG_DIR = process.platform === "win32"
|
|
8
|
+
? join(process.env["PROGRAMDATA"] ?? "C:\\ProgramData", "OnboardConnect")
|
|
9
|
+
: "/etc/onboardconnect";
|
|
10
|
+
const OC_LOG_DIR = process.platform === "win32"
|
|
11
|
+
? join(process.env["USERPROFILE"] ?? "C:\\Users\\Default", ".oc-agent")
|
|
12
|
+
: join(process.env["HOME"] ?? "/root", ".oc-agent");
|
|
13
|
+
async function ocStopAndRemoveService() {
|
|
14
|
+
const spinner = ora("Stopping OC Agent service...").start();
|
|
15
|
+
if (process.platform === "win32") {
|
|
16
|
+
try {
|
|
17
|
+
const { Service } = await import("node-windows");
|
|
18
|
+
const svc = new Service({
|
|
19
|
+
name: "OnboardConnect Agent",
|
|
20
|
+
script: "",
|
|
21
|
+
});
|
|
22
|
+
await new Promise((resolve) => {
|
|
23
|
+
svc.on("stop", () => {
|
|
24
|
+
spinner.text = "Removing OC Agent service...";
|
|
25
|
+
svc.uninstall();
|
|
26
|
+
});
|
|
27
|
+
svc.on("uninstall", resolve);
|
|
28
|
+
svc.on("error", () => resolve());
|
|
29
|
+
try {
|
|
30
|
+
svc.stop();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
resolve();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
spinner.succeed("Service stopped and removed ✓");
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
spinner.warn("Service stop/remove skipped (may not be installed as a service)");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
try {
|
|
44
|
+
execSync("systemctl stop oc-agent 2>/dev/null || true", { stdio: "pipe" });
|
|
45
|
+
execSync("systemctl disable oc-agent 2>/dev/null || true", { stdio: "pipe" });
|
|
46
|
+
const unitPath = "/etc/systemd/system/oc-agent.service";
|
|
47
|
+
if (existsSync(unitPath)) {
|
|
48
|
+
rmSync(unitPath);
|
|
49
|
+
execSync("systemctl daemon-reload", { stdio: "pipe" });
|
|
50
|
+
}
|
|
51
|
+
spinner.succeed("Service stopped and removed ✓");
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
spinner.warn("Service stop/remove skipped (service may not be installed)");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function ocDeleteConfigDir(removeLogs) {
|
|
59
|
+
if (existsSync(OC_CONFIG_DIR)) {
|
|
60
|
+
const spinner = ora(`Deleting config directory: ${OC_CONFIG_DIR}`).start();
|
|
61
|
+
try {
|
|
62
|
+
rmSync(OC_CONFIG_DIR, { recursive: true, force: true });
|
|
63
|
+
spinner.succeed("Config directory deleted ✓");
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
spinner.fail(`Failed to delete config dir: ${err instanceof Error ? err.message : String(err)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log(chalk.gray(` Config directory not found, skipping: ${OC_CONFIG_DIR}`));
|
|
71
|
+
}
|
|
72
|
+
if (removeLogs && existsSync(OC_LOG_DIR)) {
|
|
73
|
+
const spinner = ora(`Deleting log directory: ${OC_LOG_DIR}`).start();
|
|
74
|
+
try {
|
|
75
|
+
rmSync(OC_LOG_DIR, { recursive: true, force: true });
|
|
76
|
+
spinner.succeed("Log directory deleted ✓");
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
spinner.fail(`Failed to delete log dir: ${err instanceof Error ? err.message : String(err)}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function ocUninstallPackage() {
|
|
84
|
+
const spinner = ora("Removing npm global package...").start();
|
|
85
|
+
try {
|
|
86
|
+
execSync("npm uninstall -g onboardconnect-agent", { stdio: "pipe" });
|
|
87
|
+
spinner.succeed("Package removed ✓");
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
spinner.warn("npm uninstall skipped (package may not be globally installed)");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export async function ocUninstall() {
|
|
94
|
+
console.log(chalk.bold.red("\n OnboardConnect Local Agent — Uninstall\n"));
|
|
95
|
+
console.log(chalk.gray(" This will stop the agent service, remove all configuration,\n and optionally uninstall the npm package.\n"));
|
|
96
|
+
const { confirm } = await inquirer.prompt([{
|
|
97
|
+
type: "confirm",
|
|
98
|
+
name: "confirm",
|
|
99
|
+
message: chalk.yellow("Are you sure you want to uninstall the OC Agent?"),
|
|
100
|
+
default: false,
|
|
101
|
+
}]);
|
|
102
|
+
if (!confirm) {
|
|
103
|
+
console.log(chalk.gray("\n Uninstall cancelled.\n"));
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const { removeLogs } = await inquirer.prompt([{
|
|
107
|
+
type: "confirm",
|
|
108
|
+
name: "removeLogs",
|
|
109
|
+
message: "Also delete agent log files?",
|
|
110
|
+
default: false,
|
|
111
|
+
}]);
|
|
112
|
+
const { removePackage } = await inquirer.prompt([{
|
|
113
|
+
type: "confirm",
|
|
114
|
+
name: "removePackage",
|
|
115
|
+
message: "Remove the onboardconnect-agent npm package?",
|
|
116
|
+
default: true,
|
|
117
|
+
}]);
|
|
118
|
+
console.log("");
|
|
119
|
+
await ocStopAndRemoveService();
|
|
120
|
+
ocDeleteConfigDir(removeLogs);
|
|
121
|
+
if (removePackage) {
|
|
122
|
+
ocUninstallPackage();
|
|
123
|
+
}
|
|
124
|
+
console.log(chalk.bold.green("\n ✓ Uninstall complete.\n"));
|
|
125
|
+
console.log(chalk.gray(" To reinstall, run: npm install -g onboardconnect-agent\n"));
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../src/uninstall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAKA,qBAAa,SAAS;IACd,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;CA+BvC"}
|
package/dist/updater.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { OcLogger } from "./logger.js";
|
|
2
|
+
import { createRequire } from "module";
|
|
3
|
+
const logger = new OcLogger("updater");
|
|
4
|
+
export class OcUpdater {
|
|
5
|
+
async checkForUpdates() {
|
|
6
|
+
try {
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
const pkg = require("../package.json");
|
|
9
|
+
const current = pkg.version;
|
|
10
|
+
const response = await fetch("https://registry.npmjs.org/onboardconnect-agent/latest", {
|
|
11
|
+
signal: AbortSignal.timeout(5000),
|
|
12
|
+
});
|
|
13
|
+
if (!response.ok)
|
|
14
|
+
return;
|
|
15
|
+
const data = await response.json();
|
|
16
|
+
const latest = data.version;
|
|
17
|
+
if (latest !== current) {
|
|
18
|
+
logger.warn(`⚠️ New version available: ${latest} (current: ${current})`, { current, latest });
|
|
19
|
+
console.log(`\n ╔══════════════════════════════════════════════╗\n` +
|
|
20
|
+
` ║ Update available: v${current} → v${latest} ║\n` +
|
|
21
|
+
` ║ Run: npx onboardconnect-agent@latest upgrade ║\n` +
|
|
22
|
+
` ╚══════════════════════════════════════════════╝\n`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Non-fatal — agent proceeds without update check if npm is unreachable
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../src/updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;AAEvC,MAAM,OAAO,SAAS;IACpB,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;YAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAE5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,wDAAwD,EAAE;gBACrF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO;YAEzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAyB,CAAC;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAE5B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CACT,8BAA8B,MAAM,cAAc,OAAO,GAAG,EAC5D,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,wDAAwD;oBACxD,2BAA2B,OAAO,OAAO,MAAM,OAAO;oBACtD,uDAAuD;oBACvD,sDAAsD,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;QAC1E,CAAC;IACH,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "onboardconnect-agent",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "OnboardConnect On-Prem Agent — LDAP provisioning bridge for on-premises Active Directory",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"onboardconnect",
|
|
7
|
+
"active-directory",
|
|
8
|
+
"ldap",
|
|
9
|
+
"provisioning",
|
|
10
|
+
"slate-crm"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://onboardconnectapp.com/docs/agent",
|
|
13
|
+
"license": "UNLICENSED",
|
|
14
|
+
"type": "module",
|
|
15
|
+
"bin": {
|
|
16
|
+
"oc-agent": "dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"main": "./dist/index.js",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"scripts",
|
|
22
|
+
"ui"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"dev": "tsx watch src/index.ts",
|
|
27
|
+
"setup": "tsx src/setup.ts",
|
|
28
|
+
"start": "node dist/index.js",
|
|
29
|
+
"typecheck": "tsc --noEmit",
|
|
30
|
+
"test:unit": "vitest run",
|
|
31
|
+
"clean": "rimraf dist *.tsbuildinfo",
|
|
32
|
+
"uninstall": "tsx src/uninstall.ts",
|
|
33
|
+
"postinstall": "node scripts/postinstall.js"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"ldapts": "^7.2.0",
|
|
37
|
+
"ssh2": "^1.16.0",
|
|
38
|
+
"winston": "^3.17.0",
|
|
39
|
+
"winston-daily-rotate-file": "^5.0.0",
|
|
40
|
+
"lru-cache": "^11.0.0",
|
|
41
|
+
"inquirer": "^12.0.0",
|
|
42
|
+
"chalk": "^5.4.0",
|
|
43
|
+
"ora": "^8.0.0",
|
|
44
|
+
"ws": "^8.18.0",
|
|
45
|
+
"zod": "^3.24.0",
|
|
46
|
+
"semver": "^7.7.0"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@oc/types": "workspace:*",
|
|
50
|
+
"@types/node": "^22.0.0",
|
|
51
|
+
"@types/ssh2": "^1.15.0",
|
|
52
|
+
"@types/ws": "^8.5.0",
|
|
53
|
+
"@types/semver": "^7.5.0",
|
|
54
|
+
"tsx": "^4.19.0",
|
|
55
|
+
"typescript": "^5.7.0",
|
|
56
|
+
"vitest": "^2.0.0",
|
|
57
|
+
"rimraf": "^6.0.0"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=18"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
#Requires -RunAsAdministrator
|
|
2
|
+
<#
|
|
3
|
+
.SYNOPSIS
|
|
4
|
+
OnboardConnect Local Agent — Windows Installer
|
|
5
|
+
.DESCRIPTION
|
|
6
|
+
Installs the OnboardConnect On-Prem Agent as a Windows service.
|
|
7
|
+
Requires: Windows 10/11 or Server 2016+, outbound HTTPS on port 443.
|
|
8
|
+
.EXAMPLE
|
|
9
|
+
# Run from an elevated PowerShell prompt:
|
|
10
|
+
iwr https://api.onboardconnectapp.com/api/public/agent/install.ps1 -UseBasicParsing | iex
|
|
11
|
+
#>
|
|
12
|
+
|
|
13
|
+
param(
|
|
14
|
+
[string]$ApiBase = "https://api.onboardconnectapp.com"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
$ErrorActionPreference = "Stop"
|
|
18
|
+
$ProgressPreference = "SilentlyContinue" # faster Invoke-WebRequest
|
|
19
|
+
|
|
20
|
+
# ─── Banner ───────────────────────────────────────────────────────────────────
|
|
21
|
+
|
|
22
|
+
Write-Host ""
|
|
23
|
+
Write-Host " ╔══════════════════════════════════════════════════════╗" -ForegroundColor Cyan
|
|
24
|
+
Write-Host " ║ OnboardConnect On-Prem Agent — Installer ║" -ForegroundColor Cyan
|
|
25
|
+
Write-Host " ╚══════════════════════════════════════════════════════╝" -ForegroundColor Cyan
|
|
26
|
+
Write-Host ""
|
|
27
|
+
|
|
28
|
+
# ─── Helper ───────────────────────────────────────────────────────────────────
|
|
29
|
+
|
|
30
|
+
function Write-Step([int]$n, [int]$total, [string]$text) {
|
|
31
|
+
Write-Host " [$n/$total] $text" -ForegroundColor White
|
|
32
|
+
}
|
|
33
|
+
function Write-OK([string]$text) { Write-Host " $text" -ForegroundColor Green }
|
|
34
|
+
function Write-Warn([string]$text) { Write-Host " $text" -ForegroundColor Yellow }
|
|
35
|
+
function Write-Fail([string]$text) { Write-Host " ERROR: $text" -ForegroundColor Red }
|
|
36
|
+
|
|
37
|
+
# ─── Step 1: Node.js ──────────────────────────────────────────────────────────
|
|
38
|
+
|
|
39
|
+
Write-Step 1 4 "Checking Node.js (>= 18 required)..."
|
|
40
|
+
|
|
41
|
+
$nodeOk = $false
|
|
42
|
+
try {
|
|
43
|
+
$nodeRaw = (& node --version 2>$null).TrimStart("v")
|
|
44
|
+
$nodeMajor = [int]($nodeRaw -split "\.")[0]
|
|
45
|
+
if ($nodeMajor -ge 18) {
|
|
46
|
+
Write-OK "Node.js $nodeRaw found ✓"
|
|
47
|
+
$nodeOk = $true
|
|
48
|
+
} else {
|
|
49
|
+
Write-Warn "Node.js $nodeRaw found — version 18+ required. Will upgrade."
|
|
50
|
+
}
|
|
51
|
+
} catch {
|
|
52
|
+
Write-Warn "Node.js not found. Installing via winget..."
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (-not $nodeOk) {
|
|
56
|
+
try {
|
|
57
|
+
winget install --id OpenJS.NodeJS.LTS `
|
|
58
|
+
--accept-source-agreements `
|
|
59
|
+
--accept-package-agreements `
|
|
60
|
+
--silent | Out-Null
|
|
61
|
+
|
|
62
|
+
# Refresh PATH for current session
|
|
63
|
+
$machinePath = [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
|
|
64
|
+
$userPath = [System.Environment]::GetEnvironmentVariable("PATH", "User")
|
|
65
|
+
$env:PATH = "$machinePath;$userPath"
|
|
66
|
+
|
|
67
|
+
$newVer = (& node --version 2>$null).TrimStart("v")
|
|
68
|
+
Write-OK "Node.js $newVer installed ✓"
|
|
69
|
+
} catch {
|
|
70
|
+
Write-Fail "Could not auto-install Node.js. Please install Node.js 18+ from https://nodejs.org and re-run this script."
|
|
71
|
+
exit 1
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
# ─── Step 2: Install agent package ───────────────────────────────────────────
|
|
76
|
+
|
|
77
|
+
Write-Step 2 4 "Installing onboardconnect-agent via npm..."
|
|
78
|
+
try {
|
|
79
|
+
& npm install -g onboardconnect-agent --quiet 2>&1 | Out-Null
|
|
80
|
+
$agentVer = (& npm list -g onboardconnect-agent --depth=0 --json 2>$null | ConvertFrom-Json).dependencies."onboardconnect-agent".version
|
|
81
|
+
Write-OK "onboardconnect-agent@$agentVer installed ✓"
|
|
82
|
+
} catch {
|
|
83
|
+
Write-Fail "npm install failed: $_"
|
|
84
|
+
Write-Warn "Ensure npm is in your PATH and you have internet access."
|
|
85
|
+
exit 1
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
# ─── Step 3: Prerequisites reminder ──────────────────────────────────────────
|
|
89
|
+
|
|
90
|
+
Write-Step 3 4 "Prerequisites checklist"
|
|
91
|
+
Write-Host ""
|
|
92
|
+
Write-Host " Before continuing, confirm the following:" -ForegroundColor DarkGray
|
|
93
|
+
Write-Host " ✦ A service account with LDAP bind rights is ready." -ForegroundColor DarkGray
|
|
94
|
+
Write-Host " ✦ Port 636 (LDAPS) or 389 (LDAP) is reachable from this server." -ForegroundColor DarkGray
|
|
95
|
+
Write-Host " ✦ Outbound HTTPS (port 443) to $ApiBase is allowed." -ForegroundColor DarkGray
|
|
96
|
+
Write-Host " ✦ You have a one-time Setup Token from your Tenant Portal." -ForegroundColor DarkGray
|
|
97
|
+
Write-Host " (Connections → New Connection → On-Prem Agent → Generate Setup Token)" -ForegroundColor DarkGray
|
|
98
|
+
Write-Host ""
|
|
99
|
+
$confirm = Read-Host " Ready to continue? (Y/N)"
|
|
100
|
+
if ($confirm -notmatch "^[Yy]") {
|
|
101
|
+
Write-Host " Setup cancelled. Re-run this script when ready." -ForegroundColor Yellow
|
|
102
|
+
exit 0
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
# ─── Step 4: Run setup wizard ────────────────────────────────────────────────
|
|
106
|
+
|
|
107
|
+
Write-Step 4 4 "Launching OnboardConnect Agent Setup Wizard..."
|
|
108
|
+
Write-Host ""
|
|
109
|
+
|
|
110
|
+
$env:OC_API_BASE = $ApiBase
|
|
111
|
+
try {
|
|
112
|
+
& oc-agent setup
|
|
113
|
+
} catch {
|
|
114
|
+
Write-Fail "Setup wizard failed: $_"
|
|
115
|
+
Write-Warn "You can re-run setup at any time with: oc-agent setup"
|
|
116
|
+
exit 1
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
# ─── Done ────────────────────────────────────────────────────────────────────
|
|
120
|
+
|
|
121
|
+
Write-Host ""
|
|
122
|
+
Write-Host " ╔══════════════════════════════════════════════════════╗" -ForegroundColor Green
|
|
123
|
+
Write-Host " ║ Installation complete! ║" -ForegroundColor Green
|
|
124
|
+
Write-Host " ╚══════════════════════════════════════════════════════╝" -ForegroundColor Green
|
|
125
|
+
Write-Host ""
|
|
126
|
+
Write-Host " The agent is now running as a Windows service." -ForegroundColor DarkGray
|
|
127
|
+
Write-Host " View status in your Tenant Portal → Connections." -ForegroundColor DarkGray
|
|
128
|
+
Write-Host ""
|
|
129
|
+
Write-Host " Useful commands:" -ForegroundColor DarkGray
|
|
130
|
+
Write-Host " Get-Service OnboardConnectAgent # Service status" -ForegroundColor DarkGray
|
|
131
|
+
Write-Host " sc query OnboardConnectAgent # Detailed status" -ForegroundColor DarkGray
|
|
132
|
+
Write-Host " oc-agent setup # Re-run setup" -ForegroundColor DarkGray
|
|
133
|
+
Write-Host ""
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# OnboardConnect Local Agent — Linux / macOS Installer
|
|
3
|
+
#
|
|
4
|
+
# Run as root:
|
|
5
|
+
# curl -sSL https://api.onboardconnectapp.com/api/public/agent/install.sh | sudo bash
|
|
6
|
+
#
|
|
7
|
+
# Or download and inspect first:
|
|
8
|
+
# curl -fsSLO https://api.onboardconnectapp.com/api/public/agent/install.sh
|
|
9
|
+
# chmod +x install.sh && sudo ./install.sh
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
OC_API_BASE="${OC_API_BASE:-https://api.onboardconnectapp.com}"
|
|
14
|
+
OC_NODE_MIN=18
|
|
15
|
+
|
|
16
|
+
# ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
CYAN='\033[0;36m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'
|
|
19
|
+
GRAY='\033[0;90m'; BOLD='\033[1m'; RESET='\033[0m'
|
|
20
|
+
|
|
21
|
+
step() { echo -e "\n ${BOLD}[$1/$2]${RESET} $3"; }
|
|
22
|
+
ok() { echo -e " ${GREEN}$1${RESET}"; }
|
|
23
|
+
warn() { echo -e " ${YELLOW}$1${RESET}"; }
|
|
24
|
+
fail() { echo -e "\n ${RED}ERROR: $1${RESET}\n"; exit 1; }
|
|
25
|
+
info() { echo -e " ${GRAY}$1${RESET}"; }
|
|
26
|
+
|
|
27
|
+
# ─── Root check ───────────────────────────────────────────────────────────────
|
|
28
|
+
|
|
29
|
+
if [ "$EUID" -ne 0 ]; then
|
|
30
|
+
fail "This installer must be run as root. Use: sudo bash install.sh"
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
# ─── Banner ───────────────────────────────────────────────────────────────────
|
|
34
|
+
|
|
35
|
+
echo ""
|
|
36
|
+
echo -e " ${CYAN}╔══════════════════════════════════════════════════════╗${RESET}"
|
|
37
|
+
echo -e " ${CYAN}║ OnboardConnect Local Agent — Installer ║${RESET}"
|
|
38
|
+
echo -e " ${CYAN}╚══════════════════════════════════════════════════════╝${RESET}"
|
|
39
|
+
echo ""
|
|
40
|
+
|
|
41
|
+
# ─── Step 1: Node.js ──────────────────────────────────────────────────────────
|
|
42
|
+
|
|
43
|
+
step 1 4 "Checking Node.js (>= $OC_NODE_MIN required)..."
|
|
44
|
+
|
|
45
|
+
NODE_OK=false
|
|
46
|
+
if command -v node &>/dev/null; then
|
|
47
|
+
NODE_VER=$(node --version | tr -d 'v')
|
|
48
|
+
NODE_MAJOR=$(echo "$NODE_VER" | cut -d. -f1)
|
|
49
|
+
if [ "$NODE_MAJOR" -ge "$OC_NODE_MIN" ]; then
|
|
50
|
+
ok "Node.js $NODE_VER found ✓"
|
|
51
|
+
NODE_OK=true
|
|
52
|
+
else
|
|
53
|
+
warn "Node.js $NODE_VER found — version $OC_NODE_MIN+ required. Will install."
|
|
54
|
+
fi
|
|
55
|
+
else
|
|
56
|
+
warn "Node.js not found. Installing..."
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
if [ "$NODE_OK" = false ]; then
|
|
60
|
+
# Detect OS and install accordingly
|
|
61
|
+
if [ -f /etc/debian_version ] || grep -qi ubuntu /etc/os-release 2>/dev/null; then
|
|
62
|
+
info "Detected Debian/Ubuntu. Installing via NodeSource..."
|
|
63
|
+
apt-get update -qq
|
|
64
|
+
apt-get install -y curl gnupg
|
|
65
|
+
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - >/dev/null 2>&1
|
|
66
|
+
apt-get install -y nodejs >/dev/null 2>&1
|
|
67
|
+
elif [ -f /etc/redhat-release ] || grep -qi "centos\|rhel\|fedora" /etc/os-release 2>/dev/null; then
|
|
68
|
+
info "Detected RHEL/CentOS/Fedora. Installing via NodeSource..."
|
|
69
|
+
curl -fsSL https://rpm.nodesource.com/setup_20.x | bash - >/dev/null 2>&1
|
|
70
|
+
yum install -y nodejs >/dev/null 2>&1
|
|
71
|
+
elif [[ "$(uname)" == "Darwin" ]]; then
|
|
72
|
+
info "Detected macOS. Installing via Homebrew..."
|
|
73
|
+
if ! command -v brew &>/dev/null; then
|
|
74
|
+
fail "Homebrew not found. Install it from https://brew.sh then re-run."
|
|
75
|
+
fi
|
|
76
|
+
brew install node@20 >/dev/null 2>&1
|
|
77
|
+
else
|
|
78
|
+
fail "Unsupported OS. Install Node.js 18+ manually from https://nodejs.org and re-run."
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
NODE_VER=$(node --version | tr -d 'v')
|
|
82
|
+
ok "Node.js $NODE_VER installed ✓"
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# ─── Step 2: Install agent package ───────────────────────────────────────────
|
|
86
|
+
|
|
87
|
+
step 2 4 "Installing onboardconnect-agent via npm..."
|
|
88
|
+
|
|
89
|
+
npm install -g onboardconnect-agent --quiet >/dev/null 2>&1
|
|
90
|
+
AGENT_VER=$(npm list -g onboardconnect-agent --depth=0 --json 2>/dev/null | node -e "process.stdin||(p=require('/dev/stdin')),process.stdout.write(JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')).dependencies['onboardconnect-agent'].version)" 2>/dev/null || echo "installed")
|
|
91
|
+
ok "onboardconnect-agent@${AGENT_VER} installed ✓"
|
|
92
|
+
|
|
93
|
+
# ─── Step 3: Prerequisites reminder ──────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
step 3 4 "Prerequisites checklist"
|
|
96
|
+
echo ""
|
|
97
|
+
echo -e " ${GRAY}Before continuing, confirm the following:${RESET}"
|
|
98
|
+
echo -e " ${GRAY} ✦ A service account with LDAP bind rights is ready.${RESET}"
|
|
99
|
+
echo -e " ${GRAY} ✦ Port 636 (LDAPS) or 389 (LDAP) is reachable from this server.${RESET}"
|
|
100
|
+
echo -e " ${GRAY} ✦ Outbound HTTPS (port 443) to ${OC_API_BASE} is allowed.${RESET}"
|
|
101
|
+
echo -e " ${GRAY} ✦ You have a one-time Setup Token from your Tenant Portal.${RESET}"
|
|
102
|
+
echo -e " ${GRAY} (Connections → New Connection → On-Prem Agent → Generate Setup Token)${RESET}"
|
|
103
|
+
echo ""
|
|
104
|
+
read -rp " Ready to continue? (y/N) " CONFIRM
|
|
105
|
+
if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then
|
|
106
|
+
echo -e "\n Setup cancelled. Re-run when ready.\n"
|
|
107
|
+
exit 0
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
# ─── Step 4: Run setup wizard ────────────────────────────────────────────────
|
|
111
|
+
|
|
112
|
+
step 4 4 "Launching OnboardConnect Agent Setup Wizard..."
|
|
113
|
+
echo ""
|
|
114
|
+
|
|
115
|
+
export OC_API_BASE
|
|
116
|
+
oc-agent setup
|
|
117
|
+
|
|
118
|
+
# ─── Done ────────────────────────────────────────────────────────────────────
|
|
119
|
+
|
|
120
|
+
echo ""
|
|
121
|
+
echo -e " ${GREEN}╔══════════════════════════════════════════════════════╗${RESET}"
|
|
122
|
+
echo -e " ${GREEN}║ Installation complete! ║${RESET}"
|
|
123
|
+
echo -e " ${GREEN}╚══════════════════════════════════════════════════════╝${RESET}"
|
|
124
|
+
echo ""
|
|
125
|
+
echo -e " ${GRAY}The agent is now running as a systemd service.${RESET}"
|
|
126
|
+
echo -e " ${GRAY}View status in your Tenant Portal → Connections.${RESET}"
|
|
127
|
+
echo ""
|
|
128
|
+
echo -e " ${GRAY}Useful commands:${RESET}"
|
|
129
|
+
echo -e " ${GRAY} systemctl status oc-agent # Service status${RESET}"
|
|
130
|
+
echo -e " ${GRAY} journalctl -u oc-agent -f # Live logs${RESET}"
|
|
131
|
+
echo -e " ${GRAY} oc-agent setup # Re-run setup${RESET}"
|
|
132
|
+
echo ""
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
if (process.env["CI"] || process.env["npm_config_yes"]) process.exit(0);
|
|
2
|
+
|
|
3
|
+
console.log(`
|
|
4
|
+
╔═══════════════════════════════════════════════════════╗
|
|
5
|
+
║ OnboardConnect Local Agent installed ║
|
|
6
|
+
╚═══════════════════════════════════════════════════════╝
|
|
7
|
+
|
|
8
|
+
To configure this agent for the first time, run:
|
|
9
|
+
|
|
10
|
+
npx oc-agent setup
|
|
11
|
+
|
|
12
|
+
You will need a one-time setup token from your Tenant Portal:
|
|
13
|
+
https://portal.onboardconnectapp.com/agents
|
|
14
|
+
|
|
15
|
+
Prerequisites:
|
|
16
|
+
• Node.js >= 18
|
|
17
|
+
• cloudflared (https://developers.cloudflare.com/cloudflare-one/
|
|
18
|
+
connections/connect-networks/downloads/)
|
|
19
|
+
• LDAP/AD service account credentials
|
|
20
|
+
|
|
21
|
+
`);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Runs after `npm install` / `pnpm install` to print first-run guidance.
|
|
2
|
+
// Skipped automatically in CI environments.
|
|
3
|
+
|
|
4
|
+
if (process.env["CI"] || process.env["npm_config_yes"]) process.exit(0);
|
|
5
|
+
|
|
6
|
+
console.log(`
|
|
7
|
+
╔═══════════════════════════════════════════════════════╗
|
|
8
|
+
║ OnboardConnect Local Agent installed ║
|
|
9
|
+
╚═══════════════════════════════════════════════════════╝
|
|
10
|
+
|
|
11
|
+
To configure this agent for the first time, run:
|
|
12
|
+
|
|
13
|
+
npx oc-agent setup
|
|
14
|
+
|
|
15
|
+
You will need a one-time setup token from your Tenant Portal:
|
|
16
|
+
https://portal.onboardconnectapp.com/agents
|
|
17
|
+
|
|
18
|
+
Prerequisites:
|
|
19
|
+
• Node.js >= 18
|
|
20
|
+
• cloudflared (https://developers.cloudflare.com/cloudflare-one/
|
|
21
|
+
connections/connect-networks/downloads/)
|
|
22
|
+
• LDAP/AD service account credentials
|
|
23
|
+
|
|
24
|
+
`);
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#Requires -RunAsAdministrator
|
|
2
|
+
<#
|
|
3
|
+
.SYNOPSIS
|
|
4
|
+
Uninstalls the OnboardConnect Local Agent from Windows.
|
|
5
|
+
|
|
6
|
+
.DESCRIPTION
|
|
7
|
+
Stops and removes the Windows service, deletes the config directory
|
|
8
|
+
(C:\ProgramData\OnboardConnect), and optionally removes the npm package.
|
|
9
|
+
|
|
10
|
+
.PARAMETER KeepLogs
|
|
11
|
+
If specified, the log directory (~\.oc-agent) is NOT deleted.
|
|
12
|
+
|
|
13
|
+
.PARAMETER KeepPackage
|
|
14
|
+
If specified, the npm global package is NOT removed.
|
|
15
|
+
|
|
16
|
+
.EXAMPLE
|
|
17
|
+
.\uninstall.ps1
|
|
18
|
+
.\uninstall.ps1 -KeepLogs -KeepPackage
|
|
19
|
+
#>
|
|
20
|
+
|
|
21
|
+
param(
|
|
22
|
+
[switch]$KeepLogs,
|
|
23
|
+
[switch]$KeepPackage
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
$ErrorActionPreference = "Continue"
|
|
27
|
+
|
|
28
|
+
Write-Host ""
|
|
29
|
+
Write-Host " OnboardConnect Local Agent — Uninstall" -ForegroundColor Red
|
|
30
|
+
Write-Host ""
|
|
31
|
+
Write-Host " This will stop and remove the OC Agent Windows Service" -ForegroundColor Gray
|
|
32
|
+
Write-Host " and delete all configuration files." -ForegroundColor Gray
|
|
33
|
+
Write-Host ""
|
|
34
|
+
|
|
35
|
+
$answer = Read-Host " Are you sure? Type YES to continue"
|
|
36
|
+
if ($answer -ne "YES") {
|
|
37
|
+
Write-Host " Cancelled." -ForegroundColor Yellow
|
|
38
|
+
exit 0
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
Write-Host ""
|
|
42
|
+
|
|
43
|
+
# ── 1. Stop and remove service ─────────────────────────────────────────────────
|
|
44
|
+
Write-Host " Stopping OnboardConnect Agent service..." -ForegroundColor Cyan
|
|
45
|
+
|
|
46
|
+
$svc = Get-Service -Name "OnboardConnectAgent" -ErrorAction SilentlyContinue
|
|
47
|
+
if ($svc) {
|
|
48
|
+
if ($svc.Status -eq "Running") {
|
|
49
|
+
Stop-Service -Name "OnboardConnectAgent" -Force -ErrorAction SilentlyContinue
|
|
50
|
+
Write-Host " Service stopped." -ForegroundColor Green
|
|
51
|
+
}
|
|
52
|
+
sc.exe delete "OnboardConnectAgent" | Out-Null
|
|
53
|
+
Write-Host " Service removed." -ForegroundColor Green
|
|
54
|
+
} else {
|
|
55
|
+
Write-Host " Service not found (may not have been installed as a service)." -ForegroundColor Gray
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
# ── 2. Delete config directory ─────────────────────────────────────────────────
|
|
59
|
+
$configDir = "$env:PROGRAMDATA\OnboardConnect"
|
|
60
|
+
if (Test-Path $configDir) {
|
|
61
|
+
Write-Host " Deleting config directory: $configDir ..." -ForegroundColor Cyan
|
|
62
|
+
Remove-Item -Path $configDir -Recurse -Force -ErrorAction SilentlyContinue
|
|
63
|
+
Write-Host " Config directory deleted." -ForegroundColor Green
|
|
64
|
+
} else {
|
|
65
|
+
Write-Host " Config directory not found, skipping." -ForegroundColor Gray
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
# ── 3. Delete log directory (optional) ────────────────────────────────────────
|
|
69
|
+
if (-not $KeepLogs) {
|
|
70
|
+
$logDir = "$env:USERPROFILE\.oc-agent"
|
|
71
|
+
if (Test-Path $logDir) {
|
|
72
|
+
Write-Host " Deleting log directory: $logDir ..." -ForegroundColor Cyan
|
|
73
|
+
Remove-Item -Path $logDir -Recurse -Force -ErrorAction SilentlyContinue
|
|
74
|
+
Write-Host " Log directory deleted." -ForegroundColor Green
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
# ── 4. Remove npm package (optional) ──────────────────────────────────────────
|
|
79
|
+
if (-not $KeepPackage) {
|
|
80
|
+
Write-Host " Removing onboardconnect-agent npm package..." -ForegroundColor Cyan
|
|
81
|
+
try {
|
|
82
|
+
npm uninstall -g onboardconnect-agent 2>&1 | Out-Null
|
|
83
|
+
Write-Host " Package removed." -ForegroundColor Green
|
|
84
|
+
} catch {
|
|
85
|
+
Write-Host " npm uninstall skipped (package may not be installed globally)." -ForegroundColor Gray
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
Write-Host ""
|
|
90
|
+
Write-Host " Uninstall complete." -ForegroundColor Green
|
|
91
|
+
Write-Host ""
|
|
92
|
+
Write-Host " To reinstall: npm install -g onboardconnect-agent" -ForegroundColor Gray
|
|
93
|
+
Write-Host ""
|