<commit_before># CeNo

**Censorship, no thank you!**

CeNo is innovative censorship circumvention technology based on a p2p distributed caching network.

The goal of CeNo is to make access to restricted content in areas facing
censorship easy and more reliable.  CeNo exfiltrates document requests out of
a censored area using an anonymous transport layer. It then uses networks such
as Freenet to store encrypted documents in such a way that they can be easily
retrieved securely by individuals in the censored area.

## For Users

The CeNo client offers individuals an easy-to-use portal into the CeNo
network. Once configured, it will automatically handle your regular browsing
activity, retrieving the web pages you want to navigate to from a secure,
distributed storage medium.

Occasionally some lookups may take a new time, such as when your request must
be exfiltrated out of your censored area. The CeNo client will present you with
helpful web pages when this happens or an error occurs that will give you
simple instructions about what to do. Using CeNo should be as easy as using
the regular web.

### Running the client

The CeNo client must currently be built from its source. To do this, you must
have the most recent version of Google's Golang compiler installed on your.
See the [official site](https://golang.org/doc/install) for instructions.

If you have already configured the client or would like to stick with the
default configuration, you can run the client by executing the following
commands into your operating system's `terminal` program.

```
# <path-to-ceno> must be replaced with the path to where you installed CeNo
cd <path-to-ceno>/ceno-node/src/
go build client.go clientconfig.go
./client
```

Next you must configure your browser or operating system to use CeNo client as
an HTTP proxy.  The address/hostname you will want to use is `localhost` and
the port number is specified in the `PortNumber` field of `ceno-node/config/client.json`, the default being `3090`.

[Instructions for Google Chrome](https://support.google.com/chrome/answer/96815?hl=en)

[Instructions for Firefox](http://www.wikihow.com/Enter-Proxy-Settings-in-Firefox)

[Instructions for Internet Explorer](http://windows.microsoft.com/en-ca/windows/change-internet-explorer-proxy-server-settings#1TC=windows-7)

[Instructions for Safari](http://www.ehow.com/how_8186045_change-proxy-safari.html)

**Congrats! You're done!**

Now you can browse the web like you normally would, and all your requests will
be securely handled by CeNo.

### Configuring the client

The `ceno-node/config/client.json` file contains the configuration settings
for the client. You can change any setting you like by modifying the value
between quotation marks on the right side of the colon (:) symbol. The fields
in the configuration file are as follows.

`PortNumber` is the port the CeNo client server should listen on. It must be of the format `:<number>` where `<number>` is an integer value greater than 1024 and less than 65536.

`CacheServer` is the full address of the Local Cache Server (LCS) responsible for searching for documents in the local and distributed storage mediums. Chances are you may only want to change the port number, after the colon (:).

`RequestServer` is the full address of the local Request Server (RS) responsible for starting the request exfiltration process that will get the document you want access to into the distributed cache. Like with the cache server, you are likely to only want to change the port number.

`ErrorMsg` is the error message that will be displayed on the page that the client will serve you in the case that an attempt at exfiltrating your request fails.

`PleaseWaitPage` is the path to the page that will be served to you while CeNo looks for the documents you have requested.

## For Admins<commit_msg>Added a section to the README explaining how to report errors<commit_after># CeNo

**Censorship, no thank you!**

CeNo is innovative censorship circumvention technology based on a p2p distributed caching network.

The goal of CeNo is to make access to restricted content in areas facing
censorship easy and more reliable.  CeNo exfiltrates document requests out of
a censored area using an anonymous transport layer. It then uses networks such
as Freenet to store encrypted documents in such a way that they can be easily
retrieved securely by individuals in the censored area.

## For Users

The CeNo client offers individuals an easy-to-use portal into the CeNo
network. Once configured, it will automatically handle your regular browsing
activity, retrieving the web pages you want to navigate to from a secure,
distributed storage medium.

Occasionally some lookups may take a new time, such as when your request must
be exfiltrated out of your censored area. The CeNo client will present you with
helpful web pages when this happens or an error occurs that will give you
simple instructions about what to do. Using CeNo should be as easy as using
the regular web.

### Running the client

The CeNo client must currently be built from its source. To do this, you must
have the most recent version of Google's Golang compiler installed on your.
See the [official site](https://golang.org/doc/install) for instructions.

If you have already configured the client or would like to stick with the
default configuration, you can run the client by executing the following
commands into your operating system's `terminal` program.

```
# <path-to-ceno> must be replaced with the path to where you installed CeNo
cd <path-to-ceno>/ceno-node/src/
go build client.go clientconfig.go
./client
```

Next you must configure your browser or operating system to use CeNo client as
an HTTP proxy.  The address/hostname you will want to use is `localhost` and
the port number is specified in the `PortNumber` field of `ceno-node/config/client.json`, the default being `3090`.

[Instructions for Google Chrome](https://support.google.com/chrome/answer/96815?hl=en)

[Instructions for Firefox](http://www.wikihow.com/Enter-Proxy-Settings-in-Firefox)

[Instructions for Internet Explorer](http://windows.microsoft.com/en-ca/windows/change-internet-explorer-proxy-server-settings#1TC=windows-7)

[Instructions for Safari](http://www.ehow.com/how_8186045_change-proxy-safari.html)

**Congrats! You're done!**

Now you can browse the web like you normally would, and all your requests will
be securely handled by CeNo.

### Configuring the client

The `ceno-node/config/client.json` file contains the configuration settings
for the client. You can change any setting you like by modifying the value
between quotation marks on the right side of the colon (:) symbol. The fields
in the configuration file are as follows.

`PortNumber` is the port the CeNo client server should listen on. It must be of the format `:<number>` where `<number>` is an integer value greater than 1024 and less than 65536.

`CacheServer` is the full address of the Local Cache Server (LCS) responsible for searching for documents in the local and distributed storage mediums. Chances are you may only want to change the port number, after the colon (:).

`RequestServer` is the full address of the local Request Server (RS) responsible for starting the request exfiltration process that will get the document you want access to into the distributed cache. Like with the cache server, you are likely to only want to change the port number.

`ErrorMsg` is the error message that will be displayed on the page that the client will serve you in the case that an attempt at exfiltrating your request fails.

`PleaseWaitPage` is the path to the page that will be served to you while CeNo looks for the documents you have requested.

### Reporting Errors

CeNo is designed to handle errors and misconfiguration issues as gracefully as possible, but from time to time,
something will happen that could not be perfectly anticipated and recovered from.  In such cases you will be presented
with an error page upon requesting a document from the web.  Before reporting your error to the developers, you should
try to troubleshoot the problem in reference to the **Handling Errors** section of this document.

In the case that an error that CeNo cannot recover from on its own occurs, you will be presented with a message
instructing you that it may be worthwhile to contact the developers.  If this is the case, or there is an issue you have
encountered and cannot find a solution for, you can report issues using either of the following methods:

1. Create an issue ticket on the [public issue tracker](https://github.com/equalitie/ceno/issues). This will require
that you possess and use a Github account, however it will give your problem more visibility and open up a space for
other users and developers to discuss the issue and collaborate to find a solution.
2. You can also email either or both of CeNo's primary developers. The public keys for both are available in the
`/resources` directory of your distribution (and the repository) if you would like to use PGP to encrypt your email.
  * <NAME> - <EMAIL>
  * Prometheas   - <EMAIL>

Whether you publish a new issue or send an email, please try to be as clear and specific about your issue as possible.
Some useful information to include in your report:

1. The website/page you were attempting to visit
2. Your browser's proxy configuration
3. Your client configuration

TODO - List LCS-specific information and instructions on how to obtain it

## For Admins
{'fraction_non_alphanumeric': 0.05128205128205128, 'fraction_numerical': 0.00641025641025641, 'mean_word_length': 4.549271137026239, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 14, 'https://': 5, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2692652', 'n_tokens_mistral': 2461, 'n_tokens_neox': 2348, 'n_words': 1411}