4879769cc7
- Add standalone.enabled config flag to switch between LDAP+SSO and ORM-backed backends without changing the production code path - New ORM models: StandaloneUser (uid, passwordHash, sshPublicKeys, groups) and StandaloneHost (slug, displayName, kind, metadata) - user_file.js and hosts_file.js implement the same interfaces as the LDAP client and accessibleHosts() respectively - models/user_ldap.js and utils/access.js become conditional facades that delegate based on conf.standalone.enabled at require time - Zero changes to ssh_server.js core logic, bridge.js, key_inject.js, tui_picker.js, or any other consumer - Fix ssh_server.js: use ?? instead of || for listenPort (0 is falsy) - Fix ssh_server.js: register session listeners before awaiting audit.create() so client exec/shell requests aren't rejected - Patch StringField.toSequelize() and IntegerField.toSequelize() to pass through primaryKey (the ORM's UUIDField already does this) - 47 tests pass (24 existing + 15 new unit + 3 existing integration + 5 new standalone integration) - Defaults to SQLite; any Sequelize dialect works via conf.orm Co-Authored-By: Claude <noreply@anthropic.com>
54 lines
1.5 KiB
JSON
54 lines
1.5 KiB
JSON
{
|
|
"name": "t42-jump-host",
|
|
"version": "1.3.0",
|
|
"description": "SSH jump host for the theta42 stack — LDAP-authenticated, directory-driven host bridging with audit and metrics",
|
|
"author": [
|
|
{
|
|
"name": "William Mantly",
|
|
"email": "wmantly@gmail.com"
|
|
}
|
|
],
|
|
"engines": {
|
|
"node": ">=20.14"
|
|
},
|
|
"scripts": {
|
|
"start": "node ./bin/www",
|
|
"dev": "npx nodemon --ignore public/ ./bin/www",
|
|
"test": "NODE_ENV=test node --test --test-force-exit test/unit/*.test.js test/integration/*.test.js",
|
|
"test:unit": "NODE_ENV=test node --test --test-force-exit test/unit/*.test.js",
|
|
"test:integration": "NODE_ENV=test node --test --test-force-exit test/integration/*.test.js"
|
|
},
|
|
"dependencies": {
|
|
"@fortawesome/fontawesome-free": "^7.3.0",
|
|
"@simpleworkjs/conf": "^1.2.0",
|
|
"@simpleworkjs/app-stack": "^1.0.0",
|
|
"@simpleworkjs/ldap": "^1.0.0",
|
|
"@simpleworkjs/directory-schema": "^1.0.0",
|
|
"@simpleworkjs/oidc-client": "^1.0.0",
|
|
"@simpleworkjs/orm": "^0.2.8",
|
|
"bcrypt": "^6.0.0",
|
|
"bootstrap": "^5.3.8",
|
|
"compression": "^1.8.1",
|
|
"ejs": "^3.1.10",
|
|
"express": "^5.2.1",
|
|
"express-rate-limit": "^8.5.2",
|
|
"jq-repeat": "^2.2.0",
|
|
"jquery": "^4.0.0",
|
|
"ldapts": "^8.1.8",
|
|
"model-redis": "^1.6.0",
|
|
"moment": "^2.30.1",
|
|
"mustache": "^4.2.0",
|
|
"redis": "^6.1.0",
|
|
"socket.io": "^4.8.3",
|
|
"ssh2": "^1.16.0"
|
|
},
|
|
"devDependencies": {
|
|
"nodemon": "^3.1.11"
|
|
},
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/theta42/jump-host.git"
|
|
}
|
|
}
|