diff --git a/LICENSE b/LICENSE index 3d043e9..2259bdd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,17 +1,21 @@ +The MIT License (MIT) - NOT FOR RECTAL USE PUBLIC LICENSE - Version 1.1, Febuary 2015 +Copyright (c) 2015 Jeff Becker - Copyright (C) 2015 Jeff Becker - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - NOT FOR RECTAL USE PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. NOT for rectal use. - 1. Don't sue me, it's your fault. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md index 1b1ca47..954c52b 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,18 @@ # NNTPChan # -NNTPChan (previously known as overchan) is a decentralized imageboard that uses nntp to synchronize content between many different servers. It utilizes cryptograpghicly signed posts to perform optional/opt-in decentralized moderation (currently work-in-progress) +NNTPChan (previously known as overchan) is a decentralized imageboard that uses nntp to synchronize content between many different servers. It utilizes cryptographically signed posts to perform optional/opt-in decentralized moderation. + +This repository contains resources used by the core daemon which is located [here](https://github.com/majestrate/srndv2) along with general documentation, [here](doc/) ## getting started ## -If you don't want to compile from source, you can download a precompiled binary [here](https://github.com/majestrate/srndv2/releases) when they are released. - -After you [built and installed the daemon](build-daemon.md) and [set up your database](database-setup.md), clone this repository and start up the daemon +After you [built and installed the daemon](doc/build.md) and [set up your database](doc/database.md), clone this repository and start up the daemon # clone it - git clone https://github.com/majestrate/nntpchan - cd nntpchan + git clone https://github.com/majestrate/nntpchan ~/nntpchan + # get the latest stable release + cd ~/nntpchan/ + git checkout tags/0.2.1 # set up the workspace srndv2 setup @@ -18,11 +20,12 @@ After you [built and installed the daemon](build-daemon.md) and [set up your dat # run the daemon srndv2 run + Then open http://127.0.0.1:18000/ukko.html in your browser. *PLEASE* report any bugs you find while setting up or building [(here)](https://github.com/majestrate/nntpchan/issues) so that the problems get fixed (^: -For peering requests, questions or support find me on [rizon](https://qchat.rizon.net/?channels=#8chan-dev) as \__uguu\__ +For peering requests, questions or support find me on [rizon](https://qchat.rizon.net/?channels=#nntpchan) as \__uguu\__ Like this project? Fund it: diff --git a/contrib/static/faq.html b/contrib/static/faq.html index e393977..3bcfd64 100644 --- a/contrib/static/faq.html +++ b/contrib/static/faq.html @@ -4,6 +4,44 @@ NNTPChan Frequently Asked Questions -

No CP or anything illegal under United States law allowed. All posts on this site are the responsibility of the individual poster and not the administration of this site

+

NNTPChan faq

+
+
+
+

+

Question: What is nntpchan?
+
NNTPCchan is a federated imageboard that spans across several networks including tor, i2p and anonet. There are no central servers so that as long as 1 server is left the forum will continue to function.
+

+
+

+

Question: How is this different from *chan?
+
NNTPChan is by design invulnerable to global censorship. All moderation is local to each server.
+

+
+

+

Question: How does moderation work then?
+
Moderation is done with our special tripcodes (ed25519-sha512 signed posts). Anyone can give moderation suggestions, but that doesn't mean anyone will accept them. Those who trust the actions of a moderator can have their frontend whitelist the moderation actions and have them performed without oversight by another moderator.
+

+
+

+

Question: How can I remove content from nntpchan completely?
+
‾\(._.)/‾ I don't know. You probably can't unless every server agrees to remove the content, even then, nothing prevents someone from reposting it. You can't delete what you post on the internet.
+

+
+

+

Question: Do you allow XYZ content?
+
If it violates USA Law or causes problems with my host, no. Otherwise, yes. All posts on this site are the responsibility of the individual poster and not the administration of this server.
+

+
+

+

Question: I found a bug or I have a feature request where do I go?
+
github
+

+
+

+

Please send any questions to ampernand [|at\] gmail {dot} com with subject starting with "nntpchan question"
+

+
+
diff --git a/contrib/static/site.css b/contrib/static/site.css index bbf2b76..0c205f7 100644 --- a/contrib/static/site.css +++ b/contrib/static/site.css @@ -93,7 +93,6 @@ a:visited { padding: 5px 5px; margin: 5px 5px; display: inline-block; - border-radius: 10px; } th { @@ -141,10 +140,51 @@ body { color: #de04ef; } +@keyframes psych +{ + 0% {background-color: red; color: blue; } + 10% {background-color: yellow; color: red; } + 20% {background-color: blue; color: green; } + 30% {background-color: green; color: yellow; } + 40% {background-color: red; color: blue; } + 50% {background-color: yellow; color: green; } + 60% {background-color: blue; color: yellow; } + 70% {background-color: green; color: blue; } + 80% {background-color: red; color: green; } + 90% {background-color: yellow; color: red; } + 95% {background-color: blue; color: yellow; } + 100% {background-color: green; color: white; } +} + +.psy > p { + animation: psych 2s linear infinite; + display: inline-block; +} + + .memearrows { color: green; } +.redtext { + color: #d50505; + font-weight: bold; +} + +.spoiler { + display: inline-block; +} + +.spoiler > p { + background: black; + color: black; +} + +.spoiler:hover > p { + background: black; + color: white; +} + .intro { margin-bottom: 0.75em; } @@ -159,4 +199,25 @@ body { border: medium none; max-width: 300px; max-height: 200px; +} + +pre > p { + margin: 0px 0px; +} + +.reply , .post_body > pre , .ukko_thread_header { + padding: 7px 7px; + border-radius: 5px; + box-shadow: 1px 1px 3px black; +} + +.post_body > pre { + background: #3f3f3f; + color: #d17600; +} + +#faq > div { + margin-left: 20%; + width: 50%; + padding: 10px; } \ No newline at end of file diff --git a/contrib/templates/default/frontpage.mustache b/contrib/templates/default/frontpage.mustache index 1754904..c04a431 100644 --- a/contrib/templates/default/frontpage.mustache +++ b/contrib/templates/default/frontpage.mustache @@ -17,9 +17,11 @@

{{frontend}} on nntpchan

+

View the overboard

Read the FAQ

-

View the overboard

-

We've Had {{totalposts}} Posts Since August 01 2015

+

Join the IRC

+

Fork on github: frontend and core

+

We've Had {{totalposts}} Posts Since August 01 2015

diff --git a/contrib/tools/thumbs.sh b/contrib/tools/thumbs.sh new file mode 100755 index 0000000..0c38ef2 --- /dev/null +++ b/contrib/tools/thumbs.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# +# shell script for regenerating thumbnails +# + +if [ "$1" == "" ] ; then + echo "usage: $0 webroot_dir" +else + cd $1 + echo "regenerate missing thumbs in $(pwd)" + find img/ \ + -type f \ + -regextype posix-extended \ + -iregex '.*\.(png|jpg|gif)$' \ + -not -execdir test -f '../thm/{}' \; \ + -exec echo 'generating missing thumb for {}' \; \ + -exec mogrify \ + -define jpeg:size=500x500 \ + -thumbnail '250>x250>' \ + -path thm/ \ + -strip \ + '{}' \; +fi diff --git a/build-daemon.md b/doc/build.md similarity index 90% rename from build-daemon.md rename to doc/build.md index 745622c..85e7267 100644 --- a/build-daemon.md +++ b/doc/build.md @@ -7,6 +7,7 @@ * go 1.4 or higher * libsodium 1.0 or higher * imagemagick +* RabbitMQ ## debian ## @@ -22,7 +23,7 @@ Debian Jessie has go 1.3, we need 1.4 or higher to build the nntpchan daemon so # set up a directory for our go distribution mkdir -p $HOME/local - cd $$HOME/local + cd $HOME/local # obtain and unpack go binary distribution wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz -O go-stable.tar.gz @@ -43,12 +44,12 @@ We'll also need to install some dependancies that come with debian: # as root - apt-get update - apt-get install libmagickwand-dev libsodium-dev + apt update + apt install imagemagick libsodium-dev +Now build the daemon: -Now you can build the daemon: - + go get github.com/majestrate/srndv2 go install github.com/majestrate/srndv2 It will create an executable at $GOPATH/bin/srndv2 which is already in our $PATH so it can be run by typing ``srndv2`` diff --git a/database-setup.md b/doc/database.md similarity index 100% rename from database-setup.md rename to doc/database.md diff --git a/doc/peering.md b/doc/peering.md new file mode 100644 index 0000000..f794335 --- /dev/null +++ b/doc/peering.md @@ -0,0 +1,52 @@ +## peering with other nodes ## + +In order to actually be distributed, you need another person to sync posts with, otherwise what's the point right? + +Right now peering information is private, there is no link level authenticatio (yet) so everything is done via either a vpn tunnel or a tor hidden service. + +### Peering via cjdns vpn tunnel ### + +Set up cjdns, read more [here](https://github.com/cjdelisle/cjdns/blob/master/doc/configure.md#connection-interfaces) + + git clone https://github.com/cjdelisle/cjdns + cd cjdns && ./do + ./cjdroute --genconf >> cjdroute.conf + ./cjdroute < cjdroute.conf + +Get your ipv6 address for cjdns + + ip addr show tun0 + +Edit srnd.ini to bind nntp on that ipv6 address, make sure to use the square brances `[` and `]` + + [nntp] + ... + bind=[xxxx:xxxx:xxxx:xxx:xx....]:1199 + + +say you have 2 friends at fc33:3:3::aadd and fc03:9f:123::a3df. right now feeds.ini can't take raw ipv6 addresses so add them to `/etc/hosts` + + # add these lines to /etc/hosts + fc33:3:3::aadd bob + fc03:9f:123::a3df charlie + +then add to feeds.ini the following: + + + [feed-bob] + proxy-type=none + + [bob] + overchan.*=1 + ctl=1 + + [feed-charlie] + proxy-type=none + + [charlie] + overchan.*=1 + ctl=1 + +then restart srndv2 + +**TODO:** firewalling