Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hyphanet/fred
Freenet REference Daemon
https://github.com/hyphanet/fred
Last synced: 3 days ago
JSON representation
Freenet REference Daemon
- Host: GitHub
- URL: https://github.com/hyphanet/fred
- Owner: hyphanet
- License: gpl-2.0
- Created: 2009-04-25T01:00:27.000Z (over 15 years ago)
- Default Branch: next
- Last Pushed: 2024-05-19T02:47:59.000Z (6 months ago)
- Last Synced: 2024-05-22T09:05:10.763Z (6 months ago)
- Language: Java
- Homepage: https://www.hyphanet.org/
- Size: 57.5 MB
- Stars: 994
- Watchers: 93
- Forks: 204
- Open Issues: 53
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-homelab - Freenet
README
[![Build Status](https://travis-ci.org/freenet/fred.svg?branch=next)](https://travis-ci.org/freenet/fred)
[![Coverity status](https://scan.coverity.com/projects/2316/badge.svg?flat=1)](https://scan.coverity.com/projects/freenet-fred)# Freenet
Freenet is a platform for censorship-resistant communication and publishing. It is peer-to-peer
software which provides a distributed, encrypted, decentralized datastore. Websites and applications
providing things like forums and chat are built on top of it.Fred stands for Freenet REference Daemon.
## Building
We've included the [Gradle Wrapper](https://docs.gradle.org/3.2/userguide/gradle_wrapper.html) as
recommended by the Gradle project. If you trust the version we've committed you can build
immediately:#### POSIX / Windows PowerShell:
$ ./gradlew jar
#### Windows cmd:
> gradlew jar
We've [configured it](gradle/wrapper/gradle-wrapper.properties) to [verify the checksum](https://docs.gradle.org/3.2/userguide/gradle_wrapper.html#sec:verification)
of the archive it downloads from `https://services.gradle.org`.### Build with ant
$ mkdir -p lib; cd lib && grep -o CHK.* ../dependencies.properties | xargs -P16 -I {} bash -c 'fcpget -v {} "$(echo {} | sed s,^.*/,,)"'
$ ant -propertyfile build.properties -f build-clean.xml -Dtest.skip=true -Dfindbugs.skip=true## Building the installers
The installers are built from specialized repositories:
- The GNU/Linux, macOS and *nix installer is built from [hyphanet/java_installer](https://github.com/hyphanet/java_installer).
- The Windows installer is built from [hyphanet/wininstaller-innosetup](https://github.com/hyphanet/wininstaller-innosetup) and signed with [hyphanet/sign-windows-installer](https://github.com/hyphanet/sign-windows-installer).Free code signing for the Windows installer is provided by [SignPath.io](https://about.signpath.io/?), the certificate by the [SignPath Foundation](https://signpath.org/).
## Testing
### Run Tests
To run all unit tests, use
./gradlew --parallel test
You can run specifics tests with a test filter similar to the following:
./gradlew --parallel test --tests *M3UFilterTest
TODO: how to run integration tests.
### Run your changes as node
To test your version of Freenet, build it with ,./gradlew jar`,
stop your node, replace `freenet.jar` in your
Freenet directory with `build/libs/freenet.jar`, and start your node again.To override values set in `build.gradle` put them into [the file](https://docs.gradle.org/3.2/userguide/build_environment.html)
`gradle.properties` in the format `variable = value`. For instance:org.gradle.parallel = true
org.gradle.daemon = true
org.gradle.jvmargs=-Xms256m -Xmx1024m
org.gradle.configureondemand=truetasks.withType(Test) {
maxParallelForks = Runtime.runtime.availableProcessors()
}## Contributing
See our [contributor guidelines](CONTRIBUTING.md).
### Get in contact
* Ask the [development mailing list](https://freenetproject.org/pages/help.html#mailing-lists)
or join us in [IRC](https://web.libera.chat/?nick=Rabbit|?#freenet) - `#freenet` on
`irc.libera.chat`.
* You can file problems in the [bug tracker](https://bugs.freenetproject.org/my_view_page.php).## Add a new dependency
All dependencies must be available via Freenet, so it must be added to
dependencies.properties.- Add it to build.gradle dependencies *and* dependencyVerification.
Run `./gradlew jar --debug` to find files that fail the
verification.
- fcpupload {dependencyfile.jar}
- add it to all installers: wininstaller-innosetup, java_installer, mactray. Search for `jna-platform` to find out where to put and register the dependency.
- add dependency and the CHK to `dependencies.properties`.
- update `scripts/update.sh` and `res/wrapper.conf` and `res/unix/run.sh` in java_installer to include the dependency.With the example of pebble: The filename is just the jarfile. The key is what fcpupload returns. Size is `wc -c filename.jar`, sha256 is `sha256sum filename.jar`, order is where it should be put in `wrapper.conf` in wrapper.java.classpath.
```
pebble.version=3.1.5
pebble.filename=pebble-3.1.5.jar
pebble.filename-regex=pebble-*.jar
pebble.key=CHK@y~p8HMUVXmVgfSnrmUyu2UNXMO9uMDHS5nwo2YuOKvw,yzwLFP0GXa8RjwRpicQCPFKNggDXLkTQKH8nISe0qUY,AAMC--8/pebble-3.1.5.jar
pebble.size=318169
pebble.sha256=85e77f9fd64c0a1f85569db8f95c1fb8e6ef8b296f4d6206440dc6306140c1a1
pebble.type=CLASSPATH
pebble.order=4
```## Licensing
Freenet is under the GPL, version 2 or later - see LICENSE.Freenet. We use some
code under the Apache license version 2 (mostly apache commons stuff), and some
modified BSD code (Mantissa). All of which is compatible with the GPL, although
arguably ASL2 is only compatible with GPL3. Some plugins are GPL3.