resolve conflict
This commit is contained in:
commit
fb06097557
30
LICENSE
30
LICENSE
@ -1,17 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
NOT FOR RECTAL USE PUBLIC LICENSE
|
Copyright (c) 2015 Jeff Becker
|
||||||
Version 1.1, Febuary 2015
|
|
||||||
|
|
||||||
Copyright (C) 2015 Jeff Becker <ampernand@gmail.com>
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
Everyone is permitted to copy and distribute verbatim or modified
|
in the Software without restriction, including without limitation the rights
|
||||||
copies of this license document, and changing it is allowed as long
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
as the name is changed.
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
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.
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
17
README.md
17
README.md
@ -1,16 +1,18 @@
|
|||||||
# NNTPChan #
|
# 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 ##
|
## 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](doc/build.md) and [set up your database](doc/database.md), clone this repository and start up the daemon
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
# clone it
|
# clone it
|
||||||
git clone https://github.com/majestrate/nntpchan
|
git clone https://github.com/majestrate/nntpchan ~/nntpchan
|
||||||
cd nntpchan
|
# get the latest stable release
|
||||||
|
cd ~/nntpchan/
|
||||||
|
git checkout tags/0.2.1
|
||||||
|
|
||||||
# set up the workspace
|
# set up the workspace
|
||||||
srndv2 setup
|
srndv2 setup
|
||||||
@ -18,11 +20,12 @@ After you [built and installed the daemon](build-daemon.md) and [set up your dat
|
|||||||
# run the daemon
|
# run the daemon
|
||||||
srndv2 run
|
srndv2 run
|
||||||
|
|
||||||
|
|
||||||
Then open http://127.0.0.1:18000/ukko.html in your browser.
|
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 (^:
|
*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:
|
Like this project? Fund it:
|
||||||
|
@ -4,6 +4,44 @@
|
|||||||
<title> NNTPChan Frequently Asked Questions</title>
|
<title> NNTPChan Frequently Asked Questions</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<p>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</p>
|
<h2>NNTPChan faq </h2>
|
||||||
|
<br/>
|
||||||
|
<hr />
|
||||||
|
<div id="faq">
|
||||||
|
<p>
|
||||||
|
<div>Question: What is nntpchan?</div>
|
||||||
|
<div>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.</div>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
<div>Question: How is this different from *chan? </div>
|
||||||
|
<div>NNTPChan is by design invulnerable to global censorship. All moderation is local to each server.</div>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
<div>Question: How does moderation work then? </div>
|
||||||
|
<div>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.</div>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
<div>Question: How can I remove content from nntpchan completely? </div>
|
||||||
|
<div>‾\(._.)/‾ 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.</div>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
<div>Question: Do you allow XYZ content? </div>
|
||||||
|
<div>If it violates USA Law or causes problems with my host, no. Otherwise, yes. <b>All posts on this site are the responsibility of the individual poster and not the administration of this server</b>.</div>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
<div>Question: I found a bug or I have a feature request where do I go? </div>
|
||||||
|
<div><a href="https://github.com/majestrate/nntpchan/issues">github</a></div>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
<p>
|
||||||
|
<div>Please send any questions to ampernand [|at\] gmail {dot} com with subject starting with "nntpchan question" </div>
|
||||||
|
</p>
|
||||||
|
<hr />
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -93,7 +93,6 @@ a:visited {
|
|||||||
padding: 5px 5px;
|
padding: 5px 5px;
|
||||||
margin: 5px 5px;
|
margin: 5px 5px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
border-radius: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
th {
|
th {
|
||||||
@ -141,10 +140,51 @@ body {
|
|||||||
color: #de04ef;
|
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 {
|
.memearrows {
|
||||||
color: green;
|
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 {
|
.intro {
|
||||||
margin-bottom: 0.75em;
|
margin-bottom: 0.75em;
|
||||||
}
|
}
|
||||||
@ -160,3 +200,24 @@ body {
|
|||||||
max-width: 300px;
|
max-width: 300px;
|
||||||
max-height: 200px;
|
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;
|
||||||
|
}
|
@ -17,9 +17,11 @@
|
|||||||
<div class="index-outer">
|
<div class="index-outer">
|
||||||
<div class="index-inner">
|
<div class="index-inner">
|
||||||
<h1> {{frontend}} on nntpchan </h1>
|
<h1> {{frontend}} on nntpchan </h1>
|
||||||
|
<h2>View the <a href="ukko.html">overboard</a></h2>
|
||||||
<h3>Read the <a href="{{prefix}}static/faq.html">FAQ</a></h3>
|
<h3>Read the <a href="{{prefix}}static/faq.html">FAQ</a></h3>
|
||||||
<h3>View the <a href="ukko.html">overboard</a></h3>
|
<h3>Join the <a href="https://i2p.rocks/irc/?channels=overchan&nick=nameless">IRC</a></h3>
|
||||||
<h3>We've Had {{totalposts}} Posts Since August 01 2015 </h3>
|
<h3>Fork on github: <a href="https://github.com/majestrate/nntpchan/">frontend</a> and <a href="https://github.com/majestrate/srndv2/">core</a></h3>
|
||||||
|
<h4>We've Had {{totalposts}} Posts Since August 01 2015 </h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="index-inner">
|
<div class="index-inner">
|
||||||
<table id="board_graph">
|
<table id="board_graph">
|
||||||
|
23
contrib/tools/thumbs.sh
Executable file
23
contrib/tools/thumbs.sh
Executable file
@ -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
|
@ -7,6 +7,7 @@
|
|||||||
* go 1.4 or higher
|
* go 1.4 or higher
|
||||||
* libsodium 1.0 or higher
|
* libsodium 1.0 or higher
|
||||||
* imagemagick
|
* imagemagick
|
||||||
|
* RabbitMQ
|
||||||
|
|
||||||
## debian ##
|
## 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
|
# set up a directory for our go distribution
|
||||||
mkdir -p $HOME/local
|
mkdir -p $HOME/local
|
||||||
cd $$HOME/local
|
cd $HOME/local
|
||||||
|
|
||||||
# obtain and unpack go binary distribution
|
# obtain and unpack go binary distribution
|
||||||
wget https://storage.googleapis.com/golang/go1.4.2.linux-amd64.tar.gz -O go-stable.tar.gz
|
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
|
# as root
|
||||||
|
|
||||||
apt-get update
|
apt update
|
||||||
apt-get install libmagickwand-dev libsodium-dev
|
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
|
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``
|
It will create an executable at $GOPATH/bin/srndv2 which is already in our $PATH so it can be run by typing ``srndv2``
|
52
doc/peering.md
Normal file
52
doc/peering.md
Normal file
@ -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
|
Reference in New Issue
Block a user