- based on 2.15.4
- alpha release
- passing publicKey back with login response on encrypted payloads
- security audits and modifiedBy
- modified login method to be simpler, check for secure - then set auth type to digest if no password
- have layered security more, not so many conditional statements, now have distinct login, and processLogin methods
- fixed issue where onEvent in client was not pushing the actual event data, as the data was being pushed into the scope argument for a "call"
- fixed bug in client, with incorrcetly spelled enum STATE.diconnected
- update to default policies, both now have no ttl
- fix the session service disconnect to allow client reconnections (reconnect true if options.reconnect == null)
- inbound and outbound layer plugins
- services other than system services can now be loaded
- proper error returned when token from deleted user is used in an attempt to access a resource
- upgrade from node-uuid to uuid
- fix to pubsub, allow for noCluster option
- added mergeObjects function to utils
- client connect timeout
- made getConnection more logical
- token login reuse
- fix to test c1
- have correct management of connection timeout
- upgrade to primus 6
- downgrade to primus 5.2.2 (support node 0.10)
- downgrade to primus 4.0.5 (last known good version)
- upgrade to primus 5.2.2 (didnt make a difference)
- update to __getConnection
- safeSession and updateSession returns null if session booted
- major updates to disconnect
- fix to browser (Primus now attached to window)
- happner-mocha-serial tests
- disabled benchmarket on all tests except benchmarket
- changed config on client to not have config.config
- changed client.options.config to just client.options
- server shutdown, if connections are destroyed by primus, destroy not called in transport.stop
- made call timeout configurable in client, defaults to 30 seconds
- updated README
- added migration plan
- protocol update!: error in message now has separate name and message, ie: {error:{name:'AccessDenied', message:'unauthorised'}} previous {error:{name:'AccessDenied: unauthorised'}}
- updated __createResponse to include the message of the error (was previously looping through the properties - 'message' was non-iterable)
- fixed issue where outbound responses where not going through layers if custom outbound layers configured
- fixed persisted cache does not set __sync flag, when db is empty
- fixed outbound system messages to include logging and custom outbound layers
- fixed issue with tags working regardless of whether the data to tag exists or not
- allow for event_type * as well as 'all' in client 'on' option
- protocol version update 1.2.0
- happn protocol 0.1.1 in place
- default protocol is 1.1.0 (oldest)
- error serialization enhancement
- targetClients enhancement
- removed benchmarket
- fixed bug with subscribe on keys without preceding '/'
- client disconnect improvements and test
- added support for passing custom _meta into
set()
options
- dataprovider functionality
- updates to tests
- fixed issue where the options where getting attached to request options in dataprovider
- updates to tests
- refactored this.STATE to this.state in client
- publisher/subscription services
- consistency ACKNOWLEDGED/TRANSACTIONAL/DEFERRED
- packager, with browser client caching
- added homedir and fs-extra dependancies
- updates to utilities
- client.disconnect() supports server offline
- forked primus
- bucket optimisations, trie segmentation
- happn-tcp-port-used
- fixed bucket to use the wildcardMatch on subscriptions, updated f7 test
- fixed collisions on multiple servers in same process deleting the cached-to-disk browserclient
- updated forked primus to only dodge missing options on destroy if configured to do so
- forked primus closing process.env, switched to global
- strict bucket
- redundant connections
- updated README (subscription service)
- socketCleanup method on client
- socket connect timeout is 30 seconds
- socket pool reconnect interval
- getBuckets optimisation, also bucket fix * = ALL
- socket pool reconnect delay, 0 by default
- socket pool secure service tests
- moved transform and transformAll to dataProvider
- updated documentation
- happn-util-crypto 0.2.2
- happn-util-crypto 0.2.3
- __ensureCryptoLibrary only happens if encryptPayloads || loginType === 'digest'
- removed var Primus from lib/client because Primus is in window in browser client
- account lockout
- revoke session
- revoke-session backward compatible with happn 2 clients
- fixed issue with services, where initializeServices was a global variable
- updated with happn-2 changes
- fix: event subscriptions don't resume with subscriptionId causing server-side .subscriptionData to be empty
- fix: resumed event subscriptions no longer contain meta
- fix: .off(listenerIdNumber) failing for explicit (no wildcard) paths
- fix: options passed into the client with a null or empty options, but a connection default to 127.0.0.1:55000
- enhancement: login with a token is now possible
- test: default profiles, client options, login using tokens
- fix: issue #49 strict bucket events dont work
- update to forked sillyname (removed objectionable words)
- updated password-salt-and-hash to happn-password-salt-and-hash
- updates to travis node 8
- updates to .gitignore
- fixed issue with protocol 1.1.0, protocol field missing
- fixed issue with protocols, protocol field "harded coded in emit and response on all plugins"
- updated g6 test, timeout
- updated parseFields in dataprovider to not append data.data
- fixed delegate.runCount issue
- updated data.
- released changes _data.
- updated wildcard, fixed bug where db path was stripping / unintentionally
- wildcard fix may break existing systems that are inadvertantly making use of the bugs permissiveness
- Bearer token authorization header
- moved getting session from req to security service
- added happn_session property to req, for repeated calls of the sessionFromRequest method in one request
- breaking changes, protocol 2.0.0:
- server
- set requests can not contain *'s
- doing away with integer listener ids
- off cannot take a string now, it is the reference not the path
- offPath takes in the path
- server
- no more buckets, wild-pare integrated
- backward compatible protocol 1 & 2
- memory leak fixes in protocol service and checkpoint
- uses less memory for subscriptions, not storing the whole session
- tested subscriptions leaks on session disconnect
- integrated happn-stats
- fixed use of undefined variable in property
- added happn-stats and dependency
- only test master and PR in travis
- expand stats to include queue messages/second (rate)
- fixed invalid credentials error code to 401
- all tests refactored
- able to add custom data to groups, tested
- fixed browser tests
- fixed prepareOptions in client for redundant connections
- replicate security changes where happn-cluster is present
- db is versioned, and can be upgraded
- cookie token permissionSetKey removed
- fixed group deleted but not unlinked properly
- updated 401 return on http calls
- fixed 401 issue with auth invalid credentials failure
- merge only subscriptions
- local admin login
- tested _ADMIN password can be changed
- activate session management no longer calls dataChanged
- lisUsers optimised
- listUsers criteria
- removed unnecessary bindings
- removed unnecessary try catch blocks
- security caches refactor
- security caches extended tests
- lru cache now has getSync and setSync methods
- lru cache now has values method
- security users and groups refactor
- allowed set and on paths are more permissive with regards to special characters '(' ')' '&'
- set paths are not allowed to contain the * character
- server side path checking
- increment set functionality and tests
- added the includeGroups:false functionality in getUser
- groups no longer in session passed back on login, smaller on the wire
- more permissive paths in set and on, now % : is also allowed
- handle_error now unit tested
- handle_error now has fatal option, only puts client into ERROR state if fatal
- fixed intermittent issue with removal of decoupled session groups in security
- feature: templated permissions
- fix: login lockout bug
- fix: error when login locks not explicitly enabled
- refactor: jshint integration
- dep: package pem updated for new openssl libs
- refactor: client unit tests
- jshint syntax fixes
- feature: getUsersByGroup
- fix: deleteUser removes tree first then user
- change: removed wild-pare, and included tame-search, wildcards now dealt with differently
- change: client now has state property holding all mutable state
- change: client now uses status property to indicate connection state
- change: happn-3 protocol now sends back a security-directory-changed system event
- change: protocol now logs a verbose error on AccessDenied
- fix: disconnect issue with protocol 2 client and protocol 2 server
- fix: nedb provider now clones incoming data
- security patch: cookie client adds is now secure
- security patch: hsts header when https mode
- security enhancement: allow _ADMIN connections on intra-process only by configuration
- fix: scope issue with middleware
- refactor: service.js cleaned up
- fix: issue with __transformResponse protocol happn_1, bad callback
- fix: security, users that are substrings of other users get returned by getUser
- test: updated travis.yml
- fix: protocol fail for encrypted payloads issue
- feature: variable depth subscriptions
- fix: overlapping variable depth subscriptions, different depths
- doc: updated variable depth on readme
- fix #172: remove large unused 'trie-search' dep
- fix: happn_1.3.0 protocol backward compatibility
- fix: happn_1.3.0 protocol backward compatibility - outbound
- fix: listUserNamesByGroup does not work on mongodb (issue 180 workaround)
- issue #184 fix: cannot read status of null in .on response of client
- lru cache issue
- client now disregards permission change errors when reattaching sessions
- using dezalgo in more obvious security methods that early exit with callbacks
- performance optimizations for embedded version: issue #170
- session service configures session correctly for heartbeats
- latest primus-wrapper
- patch: regenerated browser_primus
- issue #181,#196,
- happn-logger version 0.1.0
- configurable iteration count pbkdf2
- fix: $regex filter
- feature: skip capability for client search/get
- doc: updated README
- fix: parseFields issue with $or operator
- authority delegation, onBehalfOf
- cleanup: removed range code from client
- doc: updated readme
- dep: updated ws
- dep: updated happn-stats
- fix #209 - implement ability to respond with a HTML file for unauthorized/forbidden requests
- fix #210 - respond with status code '401 Unauthorized' for invalid or missing token instead of '403 Forbidden'
- fix: issue with client error and ws v7
- fix: opts on convenience client methods for auth delegation
- fix: 217 Update bluebird dependency
- security update: include happn leaf in permission identity
- fix: issue with client error and ws v7, handle old ws
- Issue #222 - Add count capability to data provider
- Issue: access denied security logs username and password via JSON.stringify
- session logs browser primus writer
- revokeSession revokes token, including across the cluster
- reverted to v6.1 of ws - backward compatibility issue, ws 6.2+ checks sec header format causing failures of devices in the field
- getOnBehalfOfSession now includes the delegate sessions happn property
- sessionFromRequest includes happn property fetched from system service
- prettier and eslint updates
- using uglify-es for minify in packager
- listUsers and listGroups now allow for mongo filters
- listUsers and listGroups now allow for extended search options (sort, limit, skip, count)
- updates to data provider to allow for aggregate, collation and count in mongodb
- listUsers collation fix
- mongodb listUsers and listGroups tests
- fix: broken browser client, due to lint fix, undeclared _this
- Object.assign polyfill (IE11 support)
- lint prettier tests
- cache fixes - clearTimeout on persisted cache
- test: user deletion and recreation token reuse (test/integration/security/access_sanity)
- feature: client session end events
- chore: lint fixes
- feature: happner-2 #158, configure usernames to be case-insensitive
- test: happner-2 #179, client testing to ensure retries still happen after ENOTFOUND
- dep: happner-2 #186, using version 1.0.0 of happn-util-crypto, latest bitcore
- feature: happner-2 #188, happn client saved to .happner by packager
- feature: security config setting: lockTokenToUserId: users now created with userid which is embedded in the token, which is checked against token logins and HTTP requests
- fix: packager ensure .happner home directory
- feature: sessionTokenSecret is retained between startups
- fix: __cleanseRequestForLogs fails when message.request is undefined, happner-2 #226
- feature: allow for volatile permissions via the persistPermissions security config setting, happn-3 #245
- fix: client Socket is constructed with the pingTimeout option set to a default of 45e3, this is configurable
- fix: upsertUser and upsertGroup and deleteUser and deleteGroup check for undefined or not object user or group
- fix #254: include port number in listen error log msg
- fix: client login failure (ECONNREFUSED) memory leak
- fix: session-end on expired token after system time change
- fix: double error is not emitted on connection failure when failure occurs in callback
- feature: unconfigured session removal
- fix: client reconnect strategy only for reconnections, not for initial connection timeouts
- optimisation: setImmediate on incoming data from socket in session service
- fix #274: Bring back IE11 compatibility.
- fix: #272 - primus leaks on client __endSocket
- fix: removed Promisify of handleMessage in session service
- refactor: prioritization of data providers by length of filter pattern desc
- fix: when using volatile permissions, system permissions starting with _ are retained in same datastore as groups
- fix #283: client connection status is set to ACTIVE before authentication happens, added new status RECONNECT_ACTIVE
- test: per message deflate compression configuration, issue #282
- doc: per message deflate compression README update
- fix: 403 returned on token ttl, issue #287
- feature: leaner publish functionality on the client, issue #281
- refactor: CONSTANTS being used for authorization failure messages
- fixes #290 cookie name appended with _https if protocol is https
- feature login with cookie fixes #297
- possible breaking: stats now only being created if emit:true in config (no-one really uses the stats...)
- fixes #292 - eat the rest of the post after sending an unauthorized/forbidden
- fixes #295 - _ADMIN user locked out of web requests causes crash
- feature: IP address whitelisting fixes #299
- fix #303 - upgrade to async@3 throughout
- fix: publication count functionality in client, adjusted backward compatibility tests for this
- feature - new connect event #300
- feature - connect, authentic, configure-session, disconnect events have more client data #300
- fix: safeSessionData no longer includes token
- protocol feature: client now sends happn version up with configure session
- neatened up security directory changes event names into constants
- feature: configurable http/s keepalive
- fix: added eachSeries to subscription service securityDirectoryChanged
- fix #309: added slice to doHandover in client, as in place modification of the state.events causes follow on handlers to be missed
- feature: explicit promisify on .on and onAll for client, allows for subscription promises to work
- feature: once convenience method on client subscriptions
- fixes #313 #314 - permissions tree and regex caching optimisations
- wrapImmediate utility function and wrapImmediate of nedb provider functions
- test: renamed _ security integration tests to use -
- test: user deleted backward compatibility and integration tests
- log: delete and add user or group info logs
- fix #316: merge upsert mutates input data
- refactor: removed bluebird dependency
- optimisation: tame-search upgrade for faster unsubscribes
- feature: default info level log in JSON format on session attach and detach - SMC-729
- test: scripts for client connection leaks and infinite loop issue - SMC-731
- feature: ability to switch off info level log in JSON format on session attach and detach - SMC-775
- bug: maybePromisify does not call resolve the promise if options and an undefined callback is passed - SMC-1108
- patch: race condition on load permissionset - SMC-1028
- patch: selective security cache clearing and concurrency 1 queue on dataChanged event - SMC-1189
- feature: ability to switch off removal of subscriptions on security directory changed effected sessions
- fix #180: path_only selects now work on mongo
- feature: SMC-1269 - logging a JSON object on socket error
- feature: SMC-1321 - only print error message for fail to decode JSON socket error, also just warning
- SMC-1482 - fix: redirected logs not in correct format
- [ERRONEOUS PUBLISH - on tag dep-updates]
- feature: SMC-1808 - Add support for permissions on the happn user
- feature: SMC-1897 - nedb data provider must sync db file after each persistent write
- fix: SMC-1425 - maybePromisify and stale token, after server token change causing unhandled error
- fix: SMC-2474 - client fixed to be backward compatible with <11.10.0 servers, which do not send back user with permissions on dataChanged
- feature: SMC-1810 - added support for getting and listening on nested permissions.
- feature: SMC-3460 - added support for anonymous user.
- process: SMC-3646 - set up coveralls and github actions
- bugfix: SMC-3682 - only add criteria to db query if passed in
- optimisation: SMC-3720 - in Publication.prototype.publish, don't call async.eachLimit on empty array
- feature: SMC-2717 - cookie lifecycle events
- fix: SMC-3807 - adding multiple user permissions
- fix: SMC-3242 - Will correctly listRelevantPermissions for onBehalfOf sessions
- fix: SMC-4044 - cookie events not dependent on client login
- fix: SMC-4161 - user permissions not cleaned up on user deletion
- fix: SMC-4209 - concurrency issue, user created logged on deleted, causes security directory update to fatal
- fix: SMC-4208 - merge insert now uses upsert, moved constants out of data service
- fix: SMC-4512 - data provider get action causes fatal when allowNestedPermissions switched on
- feature: SMC-2954 - Allows for configuration and use of multiple authentication providers.
- fix: SMC-4386 - upsertMultiplePermissions will now allow for removing permissions/prohibitions as well as upserting permissions or prohibitions
- fix: SMC-2716 - fatal caused when message passed to processAuthorize (security service) has no message.request.path
- fixed test was leaking clients
- feature: SMC-734: Updated happn-util-crypto - removed bitcore, changes to crypto calls, removed payload encryption
- maybe-breaking: SMC-734: removed encrypted payloads as it is not being used anywhere
- lintignored session-management test, may be breaking eslint due to callback hell
- SMC-4466: light client modifications - able to pass null options into create
- SMC-4550: Feature - added lookup tables and permissions
- SMC-4901: Fix - bad cookieName set on session
- SMC-4938: Fix - lookup tables fail for rest request
- SMC-4938: Fix - dont delete session.username
- SMC-4550: Fix -correctly calling securityDirectoryChanged on permission removal and group/permission table unlinking
- SMC-4550: Fixed array templated permission substitution
- SMC-4550: subscriptions service does not pollute request with parsed path info
- SMC-4550: unification of templated paths parser
- SMC-5125: Permissions-sets now accurately reflect templated paths
- SMC-5146: startup fail due to needless KEYPAIR ensure in security (only used by payload encryption - no longer supported)
- TEN-126: reconnect on socket error
- TEN-126: correct cleanup of timeouts on disconnection