cjdns-admin
A nodejs module for working with the CJDNS admin interface over UDP. It's made to be consistent, robust and easy to use.
Jump:
Install
It's available via npm
npm install cjdns-admin
createAdmin constructor
The createAdmin
function returns an
EventEmitter4 with members for
each admin function and their alternate. It also contains members which
handle automatic paging for functions which
are paged.
Options:
- ip, string, optional
- port, number, optional
- password, string, required
Usage:
var cjdnsAdmin = admin channel; // create a new Adminadmin = cjdnsAdmin; // ping the adminchannel = admin; // create a response handler { // process ping response consoledirres;} // handle the responseadmin;
CJDNS Admin functions
- Original: named the same as CJDNS calls them
- Alternate: consistent with normal JS function nomenclature
- Underneath they call the same function
Admin_asyncEnabled, admin.asyncEnabled
Usage:
channel = admin;admin;
Admin_availableFunctions, admin.availableFunctions
- page, int, optional
Usage:
var channel options; options = page: 0; channel = admin;admin;
AdminLog_logMany, log.logMany
- count, int, required
Usage:
var channel options; options = count: 0; channel = adminlog;admin;
AdminLog_subscribe, log.subscribe
- file, string, optional
- level, string, optional
- line, int, optional
Usage:
var channel options; options = file: '' level: '' line: 0; channel = adminlog;admin;
AdminLog_subscriptions, log.subscriptions
Usage:
channel = adminlog;admin;
AdminLog_unsubscribe, log.unsubscribe
- streamId, string, required
Usage:
var channel options; options = streamId: ''; channel = adminlog;admin;
Allocator_bytesAllocated, allocator.bytesAllocated
Usage:
channel = adminallocator;admin;
Allocator_snapshot, allocator.snapshot
- includeAllocations, int, optional
Usage:
var channel options; options = includeAllocations: 0; channel = adminallocator;admin;
AuthorizedPasswords_add, authorizedPasswords.add
- authType, int, optional
- ipv6, string, optional
- password, string, required
- user, string, required
Usage:
var channel options; options = authType: 0 ipv6: '' password: '' user: ''; channel = adminauthorizedPasswords;admin;
AuthorizedPasswords_list, authorizedPasswords.list
Usage:
channel = adminauthorizedPasswords;admin;
AuthorizedPasswords_remove, authorizedPasswords.remove
- user, string, required
Usage:
var channel options; options = user: ''; channel = adminauthorizedPasswords;admin;
Core_exit, core.exit
Usage:
channel = admincore;admin;
Core_initTunnel, core.initTunnel
- desiredTunName, string, optional
Usage:
var channel options; options = desiredTunName: ''; channel = admincore;admin;
Core_pid, core.pid
Usage:
channel = admincore;admin;
InterfaceController_disconnectPeer, interfaceController.disconnectPeer
- pubkey, string, required
Usage:
var channel options; options = pubkey: ''; channel = admininterfaceController;admin;
InterfaceController_peerStats, interfaceController.peerStats
- page, int, optional
Usage:
var channel options; options = page: 0; channel = admininterfaceController;admin;
IpTunnel_allowConnection, ipTunnel.allowConnection
- ip4Address, string, optional
- ip4Prefix, int, optional
- ip6Address, string, optional
- ip6Prefix, int, optional
- publicKeyOfAuthorizedNode, string, required
Usage:
var channel options; options = ip4Address: '' ip4Prefix: 0 ip6Address: '' ip6Prefix: 0 publicKeyOfAuthorizedNode: ''; channel = adminipTunnel;admin;
IpTunnel_connectTo, ipTunnel.connectTo
- publicKeyOfNodeToConnectTo, string, required
Usage:
var channel options; options = publicKeyOfNodeToConnectTo: ''; channel = adminipTunnel;admin;
IpTunnel_listConnections, ipTunnel.listConnections
Usage:
channel = adminipTunnel;admin;
IpTunnel_removeConnection, ipTunnel.removeConnection
- connection, int, required
Usage:
var channel options; options = connection: 0; channel = adminipTunnel;admin;
IpTunnel_showConnection, ipTunnel.showConnection
- connection, int, required
Usage:
var channel options; options = connection: 0; channel = adminipTunnel;admin;
Janitor_dumpRumorMill, janitor.dumpRumorMill
- mill, string, required
- page, int, required
Usage:
var channel options; options = mill: '' page: 0; channel = adminjanitor;admin;
memory, admin.memory
Usage:
channel = admin;admin;
NodeStore_dumpTable, nodeStore.dumpTable
- page, int, required
Usage:
var channel options; options = page: 0; channel = adminnodeStore;admin;
NodeStore_getLink, nodeStore.getLink
- linkNum, int, required
- parent, string, optional
Usage:
var channel options; options = linkNum: 0 parent: ''; channel = adminnodeStore;admin;
NodeStore_getRouteLabel, nodeStore.getRouteLabel
- pathParentToChild, string, required
- pathToParent, string, required
Usage:
var channel options; options = pathParentToChild: '' pathToParent: ''; channel = adminnodeStore;admin;
NodeStore_nodeForAddr, nodeStore.nodeForAddr
- ip, string, optional
Usage:
var channel options; options = ip: ''; channel = adminnodeStore;admin;
ping, admin.ping
Usage:
channel = admin;admin;
RouterModule_findNode, routerModule.findNode
- nodeToQuery, string, required
- target, string, required
- timeout, int, optional
Usage:
var channel options; options = nodeToQuery: '' target: '' timeout: 0; channel = adminrouterModule;admin;
RouterModule_getPeers, routerModule.getPeers
- nearbyPath, string, optional
- path, string, required
- timeout, int, optional
Usage:
var channel options; options = nearbyPath: '' path: '' timeout: 0; channel = adminrouterModule;admin;
RouterModule_lookup, routerModule.lookup
- address, string, required
Usage:
var channel options; options = address: ''; channel = adminrouterModule;admin;
RouterModule_nextHop, routerModule.nextHop
- nodeToQuery, string, required
- target, string, required
- timeout, int, optional
Usage:
var channel options; options = nodeToQuery: '' target: '' timeout: 0; channel = adminrouterModule;admin;
RouterModule_pingNode, routerModule.pingNode
- path, string, required
- timeout, int, optional
Usage:
var channel options; options = path: '' timeout: 0; channel = adminrouterModule;admin;
SearchRunner_search, searchRunner.search
- ipv6, string, required
- maxRequests, int, optional
Usage:
var channel options; options = ipv6: '' maxRequests: 0; channel = adminsearchRunner;admin;
SearchRunner_showActiveSearch, searchRunner.showActiveSearch
- number, int, required
Usage:
var channel options; options = number: 0; channel = adminsearchRunner;admin;
Security_checkPermissions, security.checkPermissions
Usage:
channel = adminsecurity;admin;
Security_chroot, security.chroot
- root, string, required
Usage:
var channel options; options = root: ''; channel = adminsecurity;admin;
Security_getUser, security.getUser
- user, string, optional
Usage:
var channel options; options = user: ''; channel = adminsecurity;admin;
Security_nofiles, security.nofiles
Usage:
channel = adminsecurity;admin;
Security_noforks, security.noforks
Usage:
channel = adminsecurity;admin;
Security_seccomp, security.seccomp
Usage:
channel = adminsecurity;admin;
Security_setupComplete, security.setupComplete
Usage:
channel = adminsecurity;admin;
Security_setUser, security.setUser
- keepNetAdmin, int, required
- uid, int, required
Usage:
var channel options; options = keepNetAdmin: 0 uid: 0; channel = adminsecurity;admin;
SessionManager_getHandles, sessionManager.getHandles
- page, int, optional
Usage:
var channel options; options = page: 0; channel = adminsessionManager;admin;
SessionManager_sessionStats, sessionManager.sessionStats
- handle, int, required
Usage:
var channel options; options = handle: 0; channel = adminsessionManager;admin;
SwitchPinger_ping, switchPinger.ping
- data, string, optional
- keyPing, int, optional
- path, string, required
- timeout, int, optional
Usage:
var channel options; options = data: '' keyPing: 0 path: '' timeout: 0; channel = adminswitchPinger;admin;
UDPInterface_beginConnection, udpInterface.beginConnection
- address, string, required
- interfaceNumber, int, optional
- password, string, optional
- publicKey, string, required
Usage:
var channel options; options = address: '' interfaceNumber: 0 password: '' publicKey: ''; channel = adminudpInterface;admin;
UDPInterface_new, udpInterface.new
- bindAddress, string, optional
Usage:
var channel options; options = bindAddress: ''; channel = adminudpInterface;admin;
Paged Functions
The paged functions will fetch all pages and return the result. Passing options
is optional. The callback receives err
and results
as arguments and both
are Array
types.
{ if err return console; console;}admin;admininterfaceController;adminnodeStore;adminsessionManager; // mill property is optionaladminjanitor;
Development
Create environment variables that the tests will look for:
# cjdns development environment
export CJDNS_ADMIN_PORT=11234
export CJDNS_ADMIN_IP=127.0.0.1
export CJDNS_ADMIN_PASSWORD=from your cjdroute config
Tools are available via npm scripts. See package.json
in the scripts
section.
npm run lint
# test offline functionality
npm test
npm test -- --watch
# test online, UDP, and potentially dangerous functions
# on an actual node
npm run test-live
npm run test-live -- --watch
# render docs to html for testing
npm run doc-gen
npm run doc-watch