Drasyl

Latest version: v0.10.0

Safety actively analyzes 688486 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 3

0.6.0

Upgrade Notes

- We did it again: The overlay protocol has been changed with breaking changes making it impossible
to communicate with peers running older drasyl versions.
- New Javadoc website: https://api.drasyl.org/

Added

- [Netty](https://netty.io/) based channels are now used to process all overlay network I/O
operations. This change allows you to use/add many netty handlers with the drasyl overlay.
- [`DrasylNoderesolve(...)`](./drasyl-node/src/main/java/org/drasyl/DrasylNode.java) will now
return a dedicated [`Channel`](https://netty.io/4.1/api/io/netty/channel/Channel.html) for
communication with the given peer.
- The above mentioned [`Channel`](https://netty.io/4.1/api/io/netty/channel/Channel.html) comes with
a backpressure mechanism (`ChannelisWritable`/`ChannelbytesBeforeWritable`
/`ChannelbytesBeforeUnwritable`) allowing the application to control how fast traffic is written
to the overlay.
- The encryption of overlay management messages and application messages can now be disabled
separately in
the [config](drasyl-node/src/main/resources/reference.conf) (`drasyl.remote.message.arm.protocol.enabled`
/`drasyl.remote.message.arm.application.enabled`).
- CLI: `wormhole` sub-command is now able to send files as well.
- CLI: `tunnel` sub-command added.

Changed

- The classes `DrasylNode`, `DrasylConfig`, `DrasylException`, all `Event`s has been moved to the
Maven module `org.drasyl:drasyl-node` and java packages `org.drasyl.node.*`.
- Dependencies have been updated.
- The monitoring feature was outdated/mostly unusable and has therefore been removed.
- Replaced protobuf with own message serialization allowing us to reduce the overlay overhead.

Fixed

- Overwhelming application traffic will no longer cause the node to drop out of the overlay.

0.5.1

Changed

- Bump lazysodium-java from 5.0.1 to 5.1.1

Fixed

- Fix visibility of InboundExceptionEventgetError.
- Allow protobuf build on Apple Silicon and Linux ARM.
- Fix problem with lazysodium finding dependencies when drasyl is embedded in a fat jar.

0.5.0

Upgrade Notes

- The identities must be replaced by a new one. Just delete the old `drasyl.identity.json` and let
drasyl generate a new one.
- If you're using a custom configuration with super peer defined, make sure to use (our) super peers
running 0.5.0.

Added

- Multicast is used to discovery other nodes running within the same network.
- TCP is used as fallback if UDP traffic is blocked.
- Experimental support for native image added.
- All traffic is now end-to-end encrypted 🎉.
- kqueue is used on macOS based systems for better performance.
- epoll is used on linux based systems for better performance.
- An `InboundExceptionEvent` is emitted every time an inbound message could not be processed.
- Support for Apple Silicon added.
- Backpressure mechanism for outbound messages added.

Changed

- Switched to MIT License.
- `DrasylNodesend()` will now return an `CompletationStage` instead of an `CompletableFuture`.
- Dependencies have been updated.
- Maven module `parent` has been renamed to `drasyl-parent`.
- Class `CompressedPublicKey` has been renamed to `IdentityPublicKey`.

0.4.1

Changed

- Dependencies were updated.

Fixed

- Fixed an NPE when requesting a port forwarding if the Internet Gateway Device responds with an
error.
- Since the super peer sp-ham1 has connectivity problems, this has been replaced by the sp-fra1.
- Public and private keys are now displayed everywhere in the classic format.
- Unused dependencies removed.
- Some additional minor fixes.

0.4.0

Added

- Hole Punching is now used to traverse NATs. This should dramatically increase the proportion of
direct connections between peers.
- Messages that are too large for a single UDP datagram are now automatically split into multiple
datagrams (and re-assembled on the receiving side).
- When changing the network, new port mappings are now automatically created on the new network.
- `DrasylNode`'s API has been enhanced with `NotNull` and `Nullable` annotations.
- Messages that can be delivered within the same JVM are now passed by reference (previously these
messages have been unnecessarily serialized).
**So make sure you either send copies of your objects or it's fine for other nodes to make changes
to that object.**
- Static routes to other remote peers can now be defined. This allows discovery to be omitted in
static environments (or test setups).
- **Messages with content `null` are now possible.**
- `perf` command has been added to the CLI. This allows you to run performance tests of connections.
- Each node can now have several super peers simultaneously. The fastest super peer will
automatically be used. If one or more super peers fail (temporarily), one of the remaining super
peers will automatically be used. By default, each node will use two of our super peers.
- New examples have been added:
https://github.com/drasyl-overlay/drasyl/tree/master/drasyl-examples/src/main/java/org/drasyl/example
- Nodes can now be implemented as finite state machines (see our example of the philosopher
problem: https://github.com/drasyl-overlay/drasyl/tree/master/drasyl-examples/src/main/java/org/drasyl/example/diningphilosophers)
.

Changed

- By default, each node now listens on a port in the range 22528 and 65528, which is derived from
its identity. This means that the chance for a port collision is now reduced when multiple nodes
are running on one computer.
- UDP is now used instead of TCP for communication with remote peers.
- The entire protocol for constructing the overlay network has been revised (it's far better now!).
- Messages are now serialized in binary. This is faster and creates smaller messages on the wire.
- If possible, messages are processed using zero-copy.
- Documentation has been revised (Javadoc and/or documentation at https://docs.drasyl.org).
- Messages can now be additionally serialized by protobuf or Java. Furthermore, own serializers can
be implemented. Read more at https://docs.drasyl.org.
- The third-party portmapper library has been replaced with our own more lightweight and more
resilient implementation.
- All dependencies have been updated to the latest versions.

Fixed

- `IntraVmDiscovery`: Other nodes running within the same JVM that belongs to a different overlay
network are now ignored.
- `LocalHostDiscovery`: Other nodes running on the same local computer that belong to a different
overlay network are now ignored.
- Content of received messages is now better verified before it is deserialized.
- Unchecked exceptions thrown by `DrasylNode.onEvent` no longer produce ridiculously long error
messages.

0.3.0

Added

- Each node now belongs to a certain network ID. Connections between nodes will occur only if both.
peers use the same network ID. The main network has ID 1 (see configuration `drasyl.network.id`).
- Added drasyl groups plugin for membership management.
- Added support for netty's Epoll channels and event loops.
- Plugins can now access the node's identity.

Changed

- All `drasyl.marshalling` config properties will now distinct between allowed outgoing and ingoing
types. Config must be updated according to our documentation.
- `drasyl-core` now only depends on slf4j and no longer on logback. As part of this, the methods.
`DrasylNode.getLogLevel()` and `DrasylNode.setLogLevel()` have been removed and the configuration.
`drasyl.loglevel` has been removed.
- Nodes now only accept children joins if they are configured as a
super-peer (`drasyl.super-peer.enabled = false`).
- Removed grandchildren nodes. The hierarchy is now limited in depth.
- All-new plugin interface.
- Changed docker base image from `drasyl/drasyl-build-images:jre-11-curl-7.64.0`
to `openjdk:11-jre-slim` and removed default HEALTHCHECK.
- Enhanced JavaDoc.
- Changed `TypeValidator` to distinguish between in- and outbound messages.
- EmbeddedPipeline was generalized to simplify handler testing.
- Node now checks if the permissions of the identity file are too open (POSIX file systems only).
- Changed `Pipeline.processInbound` to accept `RelayableMessage`.
- Endpoints defined in `drasyl.super-peer.endpoints` must now always include the super peer's public
key.

Fixed

- Fixed memory-leaks of certain immutable classes.
- Fixed `DefaultPipeline.addBefore` method.
- Fixed error in IntraVM discovery which has delivered events around the pipeline directly to the
application.
- Several minor bug fixes.

Page 2 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.