• Stars
    star
    928
  • Rank 49,232 (Top 1.0 %)
  • Language
    Java
  • License
    GNU General Publi...
  • Created over 15 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Freenet REference Daemon

Build Status Coverity status

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 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 to verify the checksum 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

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.jarin your Freenet directory withbuild/libs/freenet.jar`, and start your node again.

To override values set in build.gradle put them into the file 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=true

tasks.withType(Test)  {
  maxParallelForks = Runtime.runtime.availableProcessors()
}

Contributing

See our contributor guidelines.

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.

More Repositories

1

wiki

Emacs Lisp
79
star
2

pyFreenet

Python FCPv2 library and utilities
Python
61
star
3

plugin-WebOfTrust

Collaborative spam filter for Freenet. Short overview: https://goo.gl/ZR3zg5 Whitepaper: https://git.io/vXtHN Suppor contact & maintainer: @xor-freenet
Java
50
star
4

plugin-Freetalk

Anonymous forum system for Freenet. Resistant against censorship. Currently in development. Uses plugin-WebOfTrust as spam filter. Support contact & maintainer: @xor-freenet
Java
35
star
5

java_installer

The java-based installer
Shell
24
star
6

website

Hyphanet static website generator
CSS
22
star
7

debian

Debian package (semi-official)
21
star
8

contrib

Stuff needed for freenet-ext.jar
Java
19
star
9

wininstaller-innosetup

Windows installer for Freenet
Inno Setup
18
star
10

plugin-Freemail

Freemail plugin
Java
16
star
11

mactray

Freenet control Mac OS X tray application
Objective-C
15
star
12

website-old

Old PHP website - used until 2015-10-21
PHP
14
star
13

plugin-Library

Plugin to handle indexes on freenet
Java
14
star
14

plugin-FlogHelper

Easy to use plugin for publishing flog's (blogs over Freenet), staging version
Java
11
star
15

plugin-XMLSpider

XMLSpider plugin (staging area, writable by any developer)
Java
10
star
16

scripts

Maintenance scripts (whitespace checking, auto-update insert etc)
Shell
9
star
17

plugin-Freereader

A newsfeed importer for Freenet
Java
9
star
18

plugin-UPnP

UPnP plugin
Java
8
star
19

plugin-KeyUtils

Freenet utility plugin for inspecting keys, sites, and splitfiles
Java
7
star
20

wininstaller

Legacy Windows installer that is no longer used; see wininstaller-innosetup
Shell
6
star
21

lib-AdaFN

Ada Freenet library (unofficial at present so no staging/stable)
Ada
6
star
22

plugin-Spider

New spider with new index format support and no support for old index formats
Java
5
star
23

plugin-XMLLibrarian

XMLLibrarian plugin (staging area, writable by any developer)
Java
5
star
24

simulator-freenet-caching

Freenet (0.7) caching simulation
Java
3
star
25

seedrefs

Seednode references for Freenet Opennet
3
star
26

pyFreenetHg

Mercurial support for Freenet
Python
3
star
27

plugin-ThawIndexBrowser

ThawIndexBrowser plugin
Java
3
star
28

wintray

Freenet control Windows tray application
C#
3
star
29

plugin-HelloWorld

HelloWorld plugin (staging area, writable by any developer)
Java
3
star
30

lib-perlFreenet

Perl FCPv2 library
Perl
3
star
31

simulator-simsalabim

A recent fast freenet simulator mostly dealing with network merging issues
Java
3
star
32

wxFCP

wxWebkit support for Freenet, eventually aimed at a custom Freenet browser
C++
2
star
33

plugin-TestGallery

TestGallery plugin (staging area, writable by any developer)
Java
2
star
34

lib-libfcp2

Old C FCPv2 library, unofficial
C
2
star
35

plugin-Librarian

Librarian plugin (UNMAINTAINED)
Java
2
star
36

plugins

This repository is the master build-file for all the official freenet plugins
2
star
37

DarknetSpiderBot

An old spider written in php
PHP
2
star
38

plugin-Echo

Echo plugin, an old, unfinished XSLT-based blog generator (staging area, writable by any developer)
Java
2
star
39

plugin-SNMP

SNMP plugin (staging area, writable by any developer)
Java
2
star
40

legacy

Frenet 0.5 (stable and unstable branches, UNMAINTAINED)
Java
2
star
41

plugin-MDNSDiscovery

MDNSDiscovery plugin (staging area, writable by all devs)
Java
2
star
42

plugin-HelloFCP

HelloFCP plugin (staging area, writable by any developer)
Java
2
star
43

rpm

Unofficial updater-based RPM spec file
2
star
44

simulator-freeviz

Scripts to visualise topology data captured from a testnet
Python
2
star
45

plugin-JSTUN

JSTUN plugin (staging area, writable by any developer)
Java
2
star
46

lib-CppFCPLib

C++ FCP library (unfinished, writable by any developer)
C++
2
star
47

Thingamablog-Freenet

Freenet port of Thingamablog (has been reviewed and bundled in the past but not any more)
Java
2
star
48

win-freenetupdater

Windows dependency updater application
Pascal
1
star
49

simulator-load-balancing-sims

Oldish low-level event based simulations
Java
1
star
50

lib-jfcp

Old Java FCP2 library
Java
1
star
51

old-LibrarianSpider

another old spider, generates Librarian style indexes
Java
1
star
52

blueBunny

Rabbit systray icon
Java
1
star