Coder Social home page Coder Social logo

purplebote / pboted Goto Github PK

View Code? Open in Web Editor NEW
23.0 23.0 5.0 5.32 MB

Standalone C++ client for I2P/Bote (server-less encrypted KademliaDHT-based email protocol).

Home Page: https://pboted.readthedocs.io/

License: BSD 3-Clause "New" or "Revised" License

CMake 1.08% C++ 89.27% C 9.61% Shell 0.04%
c-plus-plus cpp cryptography dht email i2p i2p-bote i2p-sam i2p-samv3 pop3 privacy smtp

pboted's People

Contributors

polistern avatar r4sas avatar yhaenggi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pboted's Issues

High CPU usage

Description

The description will be further updated.

There is a high CPU usage when SMTP and POP3 enabled in the configuration.
The high load disappears when both are disabled.

Additionally

It is necessary to check the behavior when switching on one by one.

Add removal of old packages

Description

The Java version allows you to store a package for 100 days, if during this time the package has not been removed by a corresponding request upon receipt.
Need to add this logic to application, otherwise it will affect saving relevant new packages.

Necessary

  • add removal of stored packages upon expiration of the retention period (100 days)

BOOST and pboted

@majestrate raised very important question about the rationality of using BOOST in the project.
The project architecture allows us to replace BOOST with alternatives at this stage.

I prepared small table about used components:

BOOST component Alternative
program_options CLI11 (just as example)
filesystem std::filesystem in C++17 (but then it will be necessary to drop support of old C++ standards)
asio removed from PacketHandler

Regarding BOOST in parts of libi2pd - these components are not used by the application and have been removed.

I'll post all latest changes soon.

At the moment, I see only one requirement for any BOOST alternatives:
users should not notice any changes and should not be required to make any changes themselves to be compatible with new components.

Decision will be made on the future fate of BOOST in the project after the discussion.

Let me know if anyone has ideas about it.

Thanks

Add disk space usage limit

Description

As it stands, the application allows you to add packages until the disk limit is reached.

Necessary

  • add the corresponding parameter to the configuration
  • add logic for processing packets after reaching the limit

Optional

  • error handling when the disk limit is reached

Refactoring of Email Identity

Description

This class was rather crudely borrowed.

Necessarily

  • Unused code must be removed (it will be added if necessary).
  • Check anything that might interfere with the implementation of Ed25519.
  • The class must be renamed to BoteIdentity.
  • Loading and parsing of Bote Identity should be optimized whenever possible.

Add ZLIB support

Description

Add ZLIB support to compress packages (preparing to remove LZMA support)

Post-quantum encryption and signature algorithms

For greater security, it is necessary to add support for one of the post-quantum encryption and signature algorithms.

So far, only NTRU Encrypt/Sign support are in mind, because it was available for Java I2P-Bote applications.
It will also add backwards compatibility and allow users to more easily migrate to pboted.

Any proposed algorithms will be considered.
The decision to add will be made after discussion.

Improve network stack

Description

At the moment, the application can only work over IPv4.

Necessarily

  • Add support for IPv6
  • Add correct error handling
  • Add functionality to handle disconnection: re-create UDP sockets, re-create SAM session

Optional

  • Consider using Boost instead of STL sockets
  • Optimization

Add email delivery confirmation

Description

The protocol allows to determine that the message has been delivered.
To do this, the presence of sent packets is checked on the closest nodes.
If the message is delivered (there are no packets for the bote identity) - the corresponding header is added to it.

False positive delivery is possible if the packages were removed after the expiration date.

Binaries for Bullseye?

Just officially requesting binaries for Debian Bullseye. Thank you for this consideration.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.