libdrop is a library for sending/receiving files, primarily over meshnet, but WAN is also an option.
- The version must be set in
LIBDROP_RELEASE_NAMEenv variable before compiling the code. The value is embedded inside the binary as the release version. The format isv{semver}. An API call tonorddrop_version()should be made to ensure that. - Before releasing
changelog.mdmust be updated with the version name being released. Best if the tag is pointing to the commit updatingchangelog.md. - After the release the
mainbranch must be merged into thedevbranch. - After changes are introduced it might need an appsec review. This is especially true if the major semver component is increased.
make -C testTestsuite takes a long time to complete so running specific tests might be preferential and much faster while developing. To run a specific testsuite:
SCENARIO=scenario_name make -C testBefore running the coverage you need to install the rustfilt demangler and grcov tool.
cargo install rustfilt grcovYou also need to include the llvm-tools-preview component
rustup component add llvm-tools-previewSCENARIO=scenario_name make -C test coveragemake -C test coverageudrop is an example client-server to test basic functionality of the library.
A container image can be built with the example binary ready for running:
run.py server runexport DROP_SERVER=172.17.0.2
cargo run --example udrop -- -l 0.0.0.0 transfer $DROP_SERVER <path><path> is whatever file or folder you want to transfer to the server.
You can verify the transfer by checking the file system in the server container under /root/<path>
echo -n "<absolute file path>" | sha256sum | cut -d " " -f1 | xxd -ps -r | basenc --base64url | tr -d '='Whenever IPv6 is used in a text form e.g. it is stored in the DB, included in the event, or passed as a callback argument we use the RFC 5952 for unique text representation.
This project is licensed under the terms of the GNU General Public License v3.0 only