Giter VIP home page Giter VIP logo

app's Introduction

Freenet Mobile

Release License

English | German | Spanish | Portuguese | French

Freenet is a peer-to-peer platform for censorship-resistant communication and publishing. It lets you anonymously share files, browse and publish "freesites" (web sites accessible only through Freenet) and chat on forums, without fear of censorship.

Freenet is decentralised to make it less vulnerable to attacks. Data is distributed automatically and redundant over the network. If used in "darknet" mode, where users only connect to their friends, is very difficult to detect. To know more about Freenet look here.

The Freenet Mobile app allows you to control Freenet with a single tap, configure it to your needs, and start up your node in a matter of seconds.

Screenshot 1 Screenshot 2 Screenshot 3

Features

  • Simple and intuitive interface for controlling the node: start and stop with a single tap.

  • Runs in background for better performance to access content.

Install

Get it on F-Droid

You can also see the release page for lastest updates and changelogs.

FAQ

Do I need to run a Freenet node?

The App itself runs a Freenet node. No need to have an external node installed and configured anywhere else.

Wouldn't that be a huge battery drain? What about data-plan?

The app is pre-configured to keep battery and network data usage to a minimum. You can configure the app to avoid data-plan use as well.

What about wearing out the phone's storage?

The app is pre-configured to store data on memory only. This way it avoid doing writes and wearing out the flash memory.

Can I use the app on my everyday phone?

Yes, you can. Configure it to "preserve data", so it only connects on Wifi and "preserve battery" to run only when charging.

Does it run on my Android X, Y, Z phone?

The application runs on Android Lollipop 5.1 and above. So any modern phone should work.

What can I do with it?

You can access and create content on Freenet. Access FMS Archive to see what the Freenet community is talking about.

Will there be a "Mobile FMS"?

We'll work on Forums, File sharing, Blogging and Friend-to-friend support on the Mobile app.

Are there plans of putting the app on Google Play Store?

Due to Google's Play Store actions against other apps we're not currently looking into publish the app on this platform.

Will there ever be an iOS version? Is it even possible?

Apparently it's technically possible. We're not sure we'll focus our efforts on it right now.

Contributing

Freenet and Freenet Mobile are open source projects developed entirely by volunteers. If you would like to contribute to the project, you are very welcome.

There are many ways to contribute:

  • Report bugs, suggest features: The easiest way to contribute is to simply use the app and let us know if you find any problems or have any suggestions to improve it.

  • Write some code: If you are a Java or Android developer, you are very welcome to contribute with code. See the issues and project pages.

  • Spread the word: If you like the Freenet share it with the world. You can also create content on Freenet.

  • Donate: Freenet is entitely run by volunteers. You can donate to The Freenet Project Inc, a 501(c)(3) non-profit organization. More here.

License

The project is licensed under the GNU GPL v3 license.

app's People

Contributors

desyncr avatar izzysoft 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

app's Issues

Show version number

I can't seem to find the version number in the user interface. I've looked in settings and the main screen. The version number in the Android application manager entry shows 0.0.9 event though I'm running the latest release. Can it be added to the main screen or in the settings?

Upon restart no seeds/peers are found

This behaviour can be observed when the node is shutdown for a long period of time (say, a month). It could be that the opennet peers are not responding / online and the node doesn't tries to announce itself.

This is how the logs look like when the node is bootstrapped into the network (e.g. has opennet peers):

I/System.out: Read 7 opennet peers from /data/user/0/org.freenetproject.mobile/app_data/openpeers-41027
I/System.out: Read 0 old-opennet-peers from /data/user/0/org.freenetproject.mobile/app_data/openpeers-old-41027
I/System.out: Not attempting immediate announcement: dark peers=0 open peers=7 old open peers=0 - will wait 1 minute...

Otherwise it will report as follows:

I/System.out: Attempting announcement to seednodes...

Related code:

Darknet is not stopped by Preserve Battery

I have Preserve Battery enabled. When I unplug the phone, then opennet is disabled, but darknet is still enabled, meaning it is still running Freenet and sending/receiving data to darknet nodes it is connected it. I'm assuming this will mean it will continue to use power.

Friend-to-Friend connections

Support exchanging noderefs through QR or similar.

https://freenet.mantishub.io/view.php?id=1343

ArneBab: desyncr: a next step for spreading would be to share the app via NFC: https://android.stackexchange.com/questions/39218/sending-an-application-apk-through-nfc
ArneBab: That way you with smartphone could just tell a friend "let’s connect" and tap the phones together. After startup the app of your friend could ask to tap once more to connect.

last release APK unsigned?

Looks like you forgot to sign the freenet-mobile-release-0.2.1.apk before attaching it to its release:

DOES NOT VERIFY
ERROR: No JAR signatures
package: name='org.freenetproject.mobile' versionCode='291' versionName='0.2.1' compileSdkVersion='30' compileSdkVersionCodename='11'

Could you please check and fix? Thanks!

"Error starting Freenet" after it successfully started

Often, (but not always) when re-opening the app after having already started it, it says "Error starting Freenet. Restart the application and try again. If the error persists reinstall the application". Freenet still works if I open a browser and go to 127.0.0.1:8888, but the button to open it in a browser is gone while it is displaying that error. On the web interface clicking the shutdown button causes it to stop, and have the Start Freenet button when the app is next opened, as expected

Add "force quit" when the app get stuck in an anomalous state

There are situations where the app may get stuck in an error status and reports "Error starting Freenet" / "Restart... re-install if error persist".

In these scenarios, where the notification ("Freenet is running") is present it seems the app is stuck for good and ultimately it needs to be uninstalled and installed again.

APK for testing

It should be nice to have a downloadable link for testing in the installation instructons (direct) link to assets.

A download button could be a solution.

Randomize IP binding and Port

To avoid scrapping on known IP and Ports it'd be convenient to randomize them.

Describe the solution you'd like
On setup the IP to bind and the Port should be configured under these ranges: "bindTo 127.x.y.z (with x,y,z each 1-254) with port between 5001 and 32767 (inclusive interval)"

Bindings to look for:

  • Fproxy's
  • FCP's

Additional context
These settings may be changed each start up.

Update toast notification with node status (paused, running, etc)

When out of WiFi I can't to check/verify if Freenet Mobile status is compatible with my configuration of preserving data. For that I check the Toast notification, but it always says "Freenet is running", when I open the app it says it's paused.

I'd like to Toast notification to state the current status: Paused, Running, Stopped etc.

Freenet bootstrap site

Freenet current main page is a mix of admin panel and bootstrap site from where the user can start to explore the network. While it's functional it may expose too much functionality and list indexes with random content that may put off most people.

I'll like to have a clean, sleek, helpful bootstrap site with links to help pages, plugins (default and recommended), and link to the default admin UI.

Action items

  • Mock up / similar pages
  • HTML template (should be only html, css)
  • Content writing, helpful links for a new comer to Freenet
  • Clean enough to be the main page to access daily (no big logos, titles, useless content)

Add about and donate

Add about Freenet mobile and Freenet Project. Add donate link to freenetproject.org

Add version number.

Use Secure RNG to gather entropy

Currently on Android (and other platforms as well, TBC) the following message is shown at start up:

I/System.out: Not enough entropy available.
    Trying to gather entropy (randomness) by reading the disk...
    You should consider installing a better random number generator e.g. haveged.

Describe the solution you'd like
A Secure RNG should be used to generate entropy. On Android: https://developer.android.com/reference/java/security/SecureRandom

Additional context
By gathering entropy from the disk the startup can take various minutes depending on the Device.

please take care for your versionCode!

your latest release, v0.2.2beta, has versionCode 293. The previous one, v0.2.1beta, had versionCode 295 – thus you DECREASED it – which is an absolute no-go: Android refuses to accept this as update, as it considers it a downgrade. Please fix ASAP (setting versionCode to 296 or higher) – and please also replace the APK then 😉 Thanks!

Video tutorial on installing Freenet mobile and running it

Installation steps:

  • Including configuring "unknown sources"
  • Downloading the APK

Usage:

  • Start and stop
  • The notification

Describe the main features and configuration options:

  • Preserve data, preserve battery, Freenet web
  • How to find content and navigate Freenet
  • Point to other resources and mention Darknet
  • Talk about the limitations of using freenet mobile (vs a complete node or darknet)

Walk-through script:

Presentation/Introduction
What is Freenet?
What is Freenet mobile?
    Use cases
Walk-through
    How to install
        Install through F-droid
        Manual install
    Running
        Start and stop, pause and resume
        The notification
        How to find content and navigate Freenet
    Configuration options
        Battery and data saving options
        Freenet Web
        Node configuration with FProxy
Limitations
    When to run a Desktop/server node instead

Notes

Include translations/subtitles for spanish, english, german, portuguese, french

Error

java.lang.NullPointerException: Attempt to invoke virtual method 'void freenet.node.MasterKeys.changePassword(java.io.File, java.lang.String, java.util.Random)' on a null object reference
at freenet.node.Node.changeMasterPassword(Node.java:4642)
at freenet.clients.http.SecurityLevelsToadlet.handleMethodPOST(SecurityLevelsToadlet.java:197)
at java.lang.reflect.Method.invoke(Native Method)
at freenet.clients.http.ToadletContextImpl.callToadletMethod(ToadletContextImpl.java:747)
at freenet.clients.http.ToadletContextImpl.handle(ToadletContextImpl.java:660)
at freenet.clients.http.SimpleToadletServer$SocketHandler.run(SimpleToadletServer.java:1055)
at freenet.support.PooledExecutor$MyThread.innerRun(PooledExecutor.java:249)
at freenet.support.PooledExecutor$MyThread.realRun(PooledExecutor.java:189)
at freenet.support.io.NativeThread.run(NativeThread.java:156)

Export/Import identity

Functionality to export/import WoT identity and node keys (node refs?).

This is important to preserve own pseudo-identity on the network (ie, a journalist)

Migrate dependencies to freenet-mobile org

Move these dependencies:

compile 'com.github.desyncr:onion-common:0.0.2'
compile 'com.github.desyncr:onion-fec:0.0.2'
compile 'com.github.desyncr:mantissa:0.0.2'
compile "com.github.desyncr:lzmajio:0.95.2"
compile "com.github.desyncr:bitcollider-core:0.0.2"
compile 'com.github.desyncr:freenet-ext:0.60.2'

To freenet-mobile org.

Define transitive dependencies on freenet-mobile/fred

In order to pull dependencies without having to copy them from project to project freenet-mobile/fred should define the dependencies as transitive. As well as being able to work with upstream freenet/fred without having to have a custom branch/mirrored repo (since needed changed to work on Android are already present in upstream).

Describe the solution you'd like

  • Define transitive dependencies
  • Investigate a way to have a single build.gradle with both legacy dependencies (fred-ext) and newer ones

Remove need to restart node when changing configurations

When configurations such as "Preserve battery" are changed (on, off) the app don't pick it up. The node needs to be restarted to be taken into account. While this is in general not a problem it can be annoying.

Describe the solution you'd like
The configuration should be picked up without having to restart the node.

Ship App's own default bookmarks configuration

Ship a clean bookmarks configuration for the mobile node. The default bookmarks points to various uncensored indexes that make a bad first impression.

Describe the solution you'd like
Ship a clean bookmark configuration (empty, or with carefully selected non-index freesites).

Describe alternatives you've considered
We currently ship with our own bootstrap site, but the user will eventually land on the index page of Fproxy.

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.