96 Commits
0.2 ... liveui

Author SHA1 Message Date
jeff
9405848c07 initial base, probably will not work 2015-10-07 13:50:15 -04:00
jeff
758a2c6bbb newboard.js prepends 'overchan.' if it's not present in the name 2015-10-04 06:38:17 -04:00
jeff
b3f104a80a update faq 2015-10-04 06:34:01 -04:00
jeff
8608d222c3 add link to /new/ 2015-10-03 22:07:19 -04:00
jeff
fcca345ba1 fix nginx config 2015-10-03 10:31:32 -04:00
jeff
bc81c8e251 add example nginx config, probably works 2015-10-03 10:14:25 -04:00
jeff
7727fc76f8 add message field 2015-10-02 15:46:52 -04:00
jeff
bb676336db fix 2015-10-02 15:45:22 -04:00
jeff
6194db1941 Merge branch 'master' into devel
Conflicts:
	contrib/static/site.css
2015-10-02 15:41:44 -04:00
jeff
229ef83e35 add initial newboard stuff 2015-10-02 15:38:59 -04:00
jeff
12e887316a remove dank maymz 2015-10-02 12:04:49 -04:00
jeff
441be15845 add pubkey.* admin functions 2015-10-02 11:00:26 -04:00
jeff
2366781282 Merge branch 'devel'
Conflicts:
	contrib/templates/default/post.mustache
2015-10-01 14:28:36 -04:00
jeff
69adbaca5a fix irc link 2015-10-01 14:27:46 -04:00
jeff
dd2f916aed wrong placement again 2015-10-01 14:02:45 -04:00
jeff
ef71260653 wrong placement of icons 2015-10-01 14:02:30 -04:00
jeff
ac3f0eab94 add css and images for origins 2015-10-01 13:55:17 -04:00
jeff
c5605a4412 add post origin awareness 2015-10-01 13:51:01 -04:00
jeff
3b1d09072c change id so that backlinks work 2015-09-30 17:39:56 -04:00
jeff
7f56d35762 remove memes 2015-09-23 20:08:42 -04:00
jeff
3360eaf924 add css rule 2015-09-23 18:54:26 -04:00
jeff
51041e2dc9 case matters for real 2015-09-23 09:07:53 -04:00
jeff
6e20cb270e case matters 2015-09-23 09:07:25 -04:00
jeff
6019d70382 ammend mod panel js more 2015-09-23 09:06:44 -04:00
jeff
cec6f7cef5 ammend mod panel js 2015-09-23 09:04:37 -04:00
jeff
40b7e0a88b fix js 2015-09-23 08:59:56 -04:00
jeff
b595024585 ammend mod panel 2015-09-23 08:59:02 -04:00
jeff
00fbc305be add more actions to mod panel 2015-09-23 08:54:49 -04:00
jeff
5e3f2eea03 try using 1 thread for regenerating thumbnails 2015-09-22 12:41:10 -04:00
jeff
7f721eefea fix mod panel a bit 2015-09-22 10:34:38 -04:00
jeff
866196e810 add more info in mod panel, add admin action to rethumb 2015-09-22 10:33:01 -04:00
jeff
8c18b4405d make captcha image background not dark 2015-09-22 07:28:26 -04:00
jeff
578d9f44b3 add regen all threads button 2015-09-20 19:33:31 -04:00
Jeff
ab38445555 Merge pull request #4 from 4cdn/master
user interface changes
2015-09-19 19:39:09 -04:00
4cdn
98cf765690 Update README.md 2015-09-19 19:32:15 -04:00
4cdn
d742af18b5 removing reliance on external file hosting 2015-09-19 19:31:03 -04:00
4cdn
74a1c044f0 removing reliance on external file hosting 2015-09-19 19:30:05 -04:00
4cdn
adb3e54212 new file: contrib/static/fieri.png 2015-09-19 23:28:02 +00:00
4cdn
1cc4d4e858 new file: contrib/static/about.mp3 2015-09-19 23:21:45 +00:00
4cdn
ec8db8121f Update README.md 2015-09-19 16:24:09 -04:00
4cdn
9cb8998302 faq page more entertaining
encourages users to read completely
2015-09-19 16:22:37 -04:00
4cdn
2f8fd2f2b5 improved visual aesthetics 2015-09-19 16:21:22 -04:00
jeff
790c61cfdb ammend templates to use stylesheets 2015-09-19 13:54:10 -04:00
jeff
7b3ec70a80 css tweak 2015-09-19 13:50:19 -04:00
jeff
fcbae8cea1 captcha background consistance 2015-09-19 13:45:49 -04:00
jeff
569727cc96 css tweak 2015-09-19 13:41:00 -04:00
jeff
f7fc61d493 css tweak 2015-09-19 13:39:41 -04:00
jeff
8cbf1f217d css tweak 2015-09-19 13:37:57 -04:00
jeff
458232d402 css tweak 2015-09-19 13:36:33 -04:00
jeff
fcfd010e5c css tweak 2015-09-19 13:34:46 -04:00
jeff
dca5ee7561 css tweak 2015-09-19 13:33:26 -04:00
jeff
108f05da32 css tweak 2015-09-19 13:33:00 -04:00
jeff
a515ba9d1f css tweak 2015-09-19 13:29:25 -04:00
jeff
8611e2e768 css tweak 2015-09-19 13:28:48 -04:00
jeff
20dd0c215e css tweaks 2015-09-19 13:28:20 -04:00
jeff
c91c8c08b1 change bg.jpg 2015-09-19 13:27:44 -04:00
jeff
9321a65f1c css tweak 2015-09-19 13:25:32 -04:00
jeff
b2a71e1877 change background 2015-09-19 13:22:10 -04:00
jeff
045e3140ad css tweak 2015-09-19 13:18:34 -04:00
jeff
d6f073943e css tweaks 2015-09-19 13:17:30 -04:00
jeff
47f884ce98 css tweaks 2015-09-19 13:16:51 -04:00
jeff
9d815479b2 add background image 2015-09-19 13:15:54 -04:00
jeff
2aa2405ba7 css tweaks 2015-09-19 13:03:41 -04:00
jeff
40d6cf77ad use correct parameter in admin command 2015-09-19 09:02:08 -04:00
jeff
e70c4ed84e syntax error 2015-09-19 08:58:33 -04:00
jeff
1c61de8880 add admin stuff to mod panel 2015-09-19 08:54:54 -04:00
jeff
8d146ed6cd change background gradient 2015-09-19 07:39:36 -04:00
jeff
9a807bbebf do not use red 2015-09-17 16:52:28 -04:00
jeff
61fc6d076f make dark 2015-09-17 16:50:32 -04:00
jeff
5a2500dffc make dark 2015-09-17 16:46:21 -04:00
jeff
021721d21e ammend build docs 2015-09-08 22:32:28 -04:00
jeff
2304d3d8fa css tweaks 2015-09-08 22:30:41 -04:00
jeff
c340d215e0 css tweaks 2015-09-08 22:29:26 -04:00
jeff
9e0029772c css tweaks 2015-09-08 22:27:29 -04:00
jeff
1663abcbec css tweaks 2015-09-08 22:26:07 -04:00
jeff
b58e582f0a css tweaks 2015-09-08 22:20:20 -04:00
jeff
1cfa104e4c ammend css 2015-09-08 22:04:39 -04:00
jeff
dc06baba37 fix templates 2015-09-05 15:36:36 -04:00
jeff
838bbc20cd add reply link to posts 2015-09-05 15:29:14 -04:00
jeff
487e392d76 fix thumbnailer 2015-09-05 11:05:32 -04:00
jeff
90276293e1 change thumbs.sh tool to use new thumbnailing 2015-09-05 11:03:04 -04:00
jeff
8411568530 make it so that we don't error when we have no postform, i.e. ukko 2015-09-04 17:20:02 -04:00
jeff
de51b912ff have ukko load nntpchan.js 2015-09-04 17:18:36 -04:00
jeff
8b206740f8 forgot a brace 2015-09-04 17:16:43 -04:00
jeff
be7e510519 try fixing backlinks 2015-09-04 17:14:05 -04:00
jeff
abefe50eb6 make post numbers insert backlink on click 2015-09-04 17:09:43 -04:00
jeff
fb06097557 resolve conflict 2015-09-04 16:51:19 -04:00
jeff
7ba0e728af truncate posts and threads 2015-09-04 16:47:52 -04:00
jeff
f9ea948071 psy tag 2015-08-31 16:58:30 -04:00
jeff
a2fd94a83e add spoiler css 2015-08-31 16:41:25 -04:00
jeff
fd1193f73a add redtext css rules 2015-08-31 16:14:32 -04:00
Jeff
64cd178b2a Merge pull request #1 from Erkan-Yilmaz/patch-1
change 1 word
2015-08-31 15:46:31 -04:00
jeff
fffd5beea5 update readme 2015-08-31 13:33:08 -04:00
Erkan Yilmaz
4b56272fdd change 1 word
to: cryptographically
2015-08-31 18:25:45 +02:00
jeff
1f346b9da7 ammend readme to have users check out stable tags 2015-08-31 11:09:26 -04:00
jeff
cb5f7f2453 add thumb.sh tool 2015-08-31 10:58:28 -04:00
27 changed files with 452 additions and 39 deletions

View File

@@ -1,6 +1,6 @@
# 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.
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/)
@@ -10,7 +10,9 @@ After you [built and installed the daemon](doc/build.md) and [set up your databa
# clone it
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
srndv2 setup

View File

@@ -0,0 +1,11 @@
# using srndv2 behind nginx with a prefix
# make sure to set prefix=/nntpchan/ for section frontend in srnd.ini
server {
listen 80;
location /nntpchan/(.*) {
client_max_body_size 50M;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://[::1]:18000/$1;
}
}

16
contrib/live/index.html Normal file
View File

@@ -0,0 +1,16 @@
<html>
<head>
<title> nntpchan liveposting </title>
<link rel="stylesheet" src="live.css" />
<script type="text/javascript" src="live.js">
</script>
</head>
<body>
<noscript>
<p>nntpchan liveposting is done entirly via javascript and websockets</P>
<p>this frontend will not work without javascript enabled</p>
</noscript>
<div onload="nntpchan_load_ui(this)">
</div>
</body>
</html>

83
contrib/live/live.js Normal file
View File

@@ -0,0 +1,83 @@
function create_captcha_pane() {
var elem = document.createElement("div");
elem.setAttribute("class", "nntpchan_captcha_slash");
}
// create the base ui
// pass in a function that does posting
// return the model
function create_ui(elem) {
var pane = document.createElement("div");
var output = document.createElement("div");
output.setAttribute("class", "nntpchan_output");
var output_elem = document.createElemen("div");
output_elem.setAttribute("class", "nntpchan_output_root");
output.appendChild(output_elem);
pane.appendChild(output);
var input = document.createElement("div");
input.setAttribute("class", "nntpchan_input");
var input_elem = document.createElement("textarea");
input_elem.setAttribute("class", "nntpchan_textarea");
input.appendChild(input_elem);
var submit_elem = document.createElement("input");
submit_elem.setAttrbute("type", "button");
input.appendChild(submit_elem);
pane.appendChild(input);
elem.appendChild(pane);
var captcha_elem = create_captcha_pane();
elem.appendChild(captcha_elem);
return {
input: input_elem,
submit: submit_elem,
output: output_elem,
captcha: captcha_elem
}
}
// load ui elements and start stuff up
function nntpchan_load_ui(elem) {
// check for websockets
if (!("WebSocket" in window)) {
elem.value = "websockets are needed for nntpchan liveposting";
return;
}
// TODO: make configurable url
var url = "ws://" + location.hostname + ":18080/ws";
var socket = new WebSocket(url);
var send = function(obj) {
socket.send(JSON.stringify(obj));
}
var ui = create_ui(elem);
ui.submit.addEventListener("click", function(ev) {
});
socket.onopen = function() {
}
socket.onmessage = function() {
}
}

BIN
contrib/static/about.mp3 Normal file

Binary file not shown.

BIN
contrib/static/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

BIN
contrib/static/clearnet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

View File

@@ -27,10 +27,19 @@
<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>
<p>
<div>Question: Do you allow child porn? </div>
<div>No, fuck off and die in a fire. All infringing posts are nuked.</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>
<div>If it violates USA Law or causes problems with my host, no. Otherwise, probably.</div>
</p>
<hr />
<p>
<div>Question: Someone posted something I don't like but it's not illegal</div>
<div>That is not my problem. All posts on this site are the responsibility of the individual poster and not the administration of this server</div>
</p>
<hr />
<p>
@@ -39,9 +48,13 @@
</p>
<hr />
<p>
<div>Please send any questions to ampernand [|at\] gmail {dot} com with subject starting with "nntpchan question" </div>
<div>Please send any gripes/questions/inqueries/suggestions/complaints to ampernand [|at\] gmail {dot} com with subject starting with "nntpchan question" </div>
</p>
<hr />
</div>
<audio autoplay="autoplay" loop="loop">
<source src="about.mp3" type="audio/mpeg">
<embed src="about.mp3">
</audio>
</body>
</html>

BIN
contrib/static/fieri.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 KiB

BIN
contrib/static/i2p.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -42,6 +42,53 @@ function nntpchan_unban() {
})
}
function get_board_target() {
var e = document.getElementById("nntpchan_board_target");
return e.value;
}
function get_key_target() {
var e = document.getElementById("nntpchan_key_target");
return e.value;
}
function nntpchan_key_del() {
nntpchan_admin("pubkey.del", {
pubkey: get_key_target()
});
}
function nntpchan_key_add() {
nntpchan_admin("pubkey.add", {
pubkey: get_key_target()
});
}
function nntpchan_admin_board(method) {
nntpchan_admin(method, {
newsgroup: get_board_target()
})
}
function nntpchan_admin(method, param) {
nntpchan_mod({
name:"admin",
parser: function(target) {
return method;
},
handle: function(j) {
if (j.result) {
return document.createTextNode(j.result);
} else {
return "nothing happened?";
}
},
method: ( param && "POST" ) || "GET",
data: param
})
}
// handle delete command
function nntpchan_delete() {
nntpchan_mod({
@@ -127,8 +174,14 @@ function nntpchan_mod(mod_action) {
}
if (mod_action.name) {
var url = mod_action.name + "/" + target;
ajax.open("GET", url);
ajax.send();
ajax.open(mod_action.method || "GET", url);
var data = mod_action.data;
if (data) {
ajax.setRequestHeader("Content-type","text/json");
ajax.send(JSON.stringify(data));
} else {
ajax.send();
}
} else {
alert("mod action has no name");
}

View File

@@ -0,0 +1,10 @@
function createBoard() {
var form = document.getElementById("postform");
var e = document.getElementById("boardname");
var board = e.value;
if ( ! board.startsWith("overchan.") ) {
board = "overchan." + board;
}
form.action = form.action + board;
form.submit();
}

View File

@@ -0,0 +1,14 @@
//
// nntpchan.js -- frontend ui niceness
//
// insert a backlink for a post given its short hash
function nntpchan_backlink(shorthash)
{
var elem = document.getElementById("postform_message");
if ( elem )
{
elem.value += ">>" + shorthash + "\n";
}
}

View File

@@ -1,5 +1,4 @@
.thread {
margin-right: 20px;
margin-bottom: 1em;
display: inline-block;
word-wrap: break-word;
@@ -7,7 +6,7 @@
}
.frontend , .subject {
color: #0f0d2d;
color: #928BFF;
}
.name {
@@ -44,8 +43,16 @@ textarea {
padding: 10px 10px;
}
pre > p {
display: block-inline;
}
.reply, th, .ukko_thread_header {
background: #d6daf0;
background: #202331;
}
tr {
background: #202123;
}
hr {
@@ -61,11 +68,11 @@ a:hover , a:visited:hover {
}
a {
color: blue;
color: #4A4AFF;
}
a:visited {
color: #414383;
color: #5E00A0;
}
.navbar {
@@ -76,7 +83,7 @@ a:visited {
margin-top: 0px;
z-index: 20;
box-shadow: 0px 1px 20px rgba(0, 0, 0, 0.15);
background: #CFD8EF;
background: #202331;
color: #616383;
}
@@ -101,8 +108,21 @@ th {
padding-right: 15px;
}
body {
background: linear-gradient(to top, #eef2ff, #eaf1ff) repeat scroll;
#captcha_img {
background: #d3d3d3;
}
input, textarea {
color: whitesmoke;
background: #2d2d2d;
border-color: #4D28CA;
border-radius: 3px;
}
html {
color: #ededed;
background: #262230;
height: 100%;
font-family: arial,helvetica,sans-serif;
font-size: 10pt;
margin: 0 4px;
@@ -118,7 +138,6 @@ body {
.frontend {
margin-top: 0px;
background: #e0f0f0;
display: inline-block;
}
@@ -127,23 +146,61 @@ body {
margin-bottom: 10px;
}
.post, .post_body {
.post {
display: inline;
margin-bottom: 5px;
}
.post_body > p {
margin: 2px;
}
.tripcode {
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;
}
@@ -160,11 +217,7 @@ body {
max-height: 200px;
}
pre > p {
margin: 0px 0px;
}
.reply , .post_body > pre , .ukko_thread_header {
.reply, .ukko_thread_header , pre {
padding: 7px 7px;
border-radius: 5px;
box-shadow: 1px 1px 3px black;
@@ -175,8 +228,26 @@ pre > p {
color: #d17600;
}
.post_body > p {
margin: 0px 0px;
}
.post_body {
display: inline;
width: inherit;
}
.post {
display: inline-block;
width: 80%;
}
#faq > div {
margin-left: 20%;
width: 50%;
padding: 10px;
}
#captcha_img {
background: grey;
}

BIN
contrib/static/tor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -15,6 +15,7 @@
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="{{board.Prefix}}static/site.css"></link>
<script type="text/javascript" src="{{board.Prefix}}static/nntpchan.js"></script>
<title>{{board.Board}}</title>
</head>
<body>

View File

@@ -19,7 +19,8 @@
<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>Join the <a href="https://i2p.rocks/irc/?channels=overchan&nick=nameless">IRC</a></h3>
<h3>Join the <a href="https://qchat.rizon.net/?channels=#nntpchan">IRC</a></h3>
<h3>Create a <a href="{{prefix}}new/">new board</a></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>

View File

@@ -25,6 +25,53 @@
<button onclick="nntpchan_unban()">unban (ip)</button>
</div>
</div>
<hr />
<div>
<div> key actions </div>
<div>
<label for="nntpchan_board_target">pubkey:</label>
<input type="text" id="nntpchan_key_target" />
</div>
<div>
<button onclick="nntpchan_key_add()">add key</button>
<button onclick="nntpchan_key_del()">remove key</button>
</div>
</div>
<hr />
<div>
<div> board actions </div>
<div>
<label for="nntpchan_board_target">board name:</label>
<input type="text" id="nntpchan_board_target" />
</div>
<div>
<button onclick="nntpchan_admin_board('frontend.regen')">regenerate</button>
</div>
<div>
<button onclick="nntpchan_admin_board('frontend.ban')">ban</button>
<button onclick="nntpchan_admin_board('frontend.unban')">unban</button>
</div>
<div>
<button onclick="nntpchan_admin_board('frontend.nuke')">nuke</button>
</div>
</div>
<hr />
<div>
<div>
lightweight actions
</div>
<div>
<button onclick="nntpchan_admin('template.reload')">reload all templates</button>
</div>
</div>
<hr />
<div>
<label>very load heavy actions, use with care</label>
<div>
<button onclick="nntpchan_admin('frontend.regen')">regenerate all pages</button>
<button onclick="nntpchan_admin('thumbnail.regen', {threads:1})">regenerate all thumbnails</button>
</div>
</div>
<div id="nntpchan_mod_result"></div>
<noscript>
<b>enable js to use the mod panel kthx</b>

View File

@@ -0,0 +1,55 @@
<html>
<head>
<title>create new board</title>
<link rel="stylesheet" href="{{prefix}}static/site.css" />
<script type="text/javascript" src="{{prefix}}static/newboard.js">
</script>
</head>
<body>
<p>make your first post</p>
<hr />
<form action="{{prefix}}post/" enctype="multipart/form-data" name="post" method="post" id="postform" >
<div id="postform-outer">
<div id="postform-inner">
<table class="postform">
<tbody>
<tr>
<th>
Board Name
</th>
<td>
<input type="text" name="name" value="" id="boardname" />
<button onclick="createBoard()">Create Board</button>
</td>
</tr>
<tr>
<th>
Comment
</th>
<td>
<textarea id="postform_message" type="text" name="message" cols=40 rows=5></textarea>
</td>
</tr>
<tr>
<th>
Captcha
</th>
<td>
<img id="captcha_img" src="{{prefix}}captcha/img" alt="captcha" />
</td>
</tr>
<tr>
<th>
Solution
</th>
<td>
<input type="text" name="captcha" />
</td>
</tr>
</tbody>
</table>
</div>
</div>
</form>
</body>
</html>

View File

@@ -1,9 +1,20 @@
<div class="{{{CSSClass}}}" id="post_{{PostHash}}">
<div class="{{CSSClass}}" id="{{PostHash}}">
<p class="intro">
<label for="delete_{{PostHash}}">
<span class="frontend">
[[ {{Frontend}} ]]
</span>
<span class="origin">
{{#IsI2P}}
<img src="{{Prefix}}static/i2p.png" alt="post from i2p" />
{{/IsI2P}}
{{#IsTor}}
<img src="{{Prefix}}static/tor.png" alt="post from tor" />
{{/IsTor}}
{{#IsClearnet}}
<img src="{{Prefix}}static/clearnet.png" alt="post from clearnet" />
{{/IsClearnet}}
</span>
<span class="subject">
{{Subject}}
</span>
@@ -21,10 +32,8 @@
{{Date}}
</span>
</label>
<a href="{{PostURL}}" onclick="">No. {{ShortHash}}</a>
{{#OP}}
<a href="{{PostURL}}">[reply]</a>
{{/OP}}
<a onclick="nntpchan_backlink('{{ShortHash}}');">No. {{ShortHash}}</a>
<a href="{{PostURL}}">[reply]</a>
<span class="tripcode">{{{Pubkey}}}</span>
</p>
<div class="files">

View File

@@ -1,4 +1,6 @@
<html>
<meta charset="utf-8" />
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
<meta http-equiv="refresh" content="1; {{redirect_url}}" />
<body>
<p>post failed: {{reason}}</p>

View File

@@ -5,6 +5,8 @@
- message_id ( the value of the Message-ID header in the post we made, the truncated sha1 of this is the >>posthash )
}}
<html>
<meta charset="utf-8" />
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
<meta http-equiv="refresh" content="2; {{redirect_url}}" />
<body>
<pre>posted as {{message_id}}</pre>

View File

@@ -34,7 +34,7 @@
Comment
</th>
<td>
<textarea type="text" name="message" cols=40 rows=5></textarea>
<textarea id="postform_message" type="text" name="message" cols=40 rows=5></textarea>
</td>
</tr>
<tr>

View File

@@ -15,6 +15,7 @@
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="{{thread.Prefix}}static/site.css"></link>
<script type="text/javascript" src="{{thread.Prefix}}static/nntpchan.js"></script>
<title> {{thread.OP.Subject}} </title>
</head>
<body>

View File

@@ -9,11 +9,9 @@
<title> ukko / overboard </title>
<meta charset="utf-8" />
<link rel="stylesheet" href="{{prefix}}static/site.css"></link>
</head>
<script type="text/javascript" src="{{prefix}}static/nntpchan.js"></script>
</head>
<body>
<div id="ukko-topbar">
<a href="{{prefix}}">Front Page</a>
</div>
<div id="ukko_threads" class="threads_container">
{{#threads}}
<div class="ukko_thread_header">
@@ -22,7 +20,7 @@
<div class="thread" id="thread_{{OP.PostHash}}">
<div clsss="thread_header">
</div>
{{{OP.RenderPost}}}
{{{OP.Truncate.RenderPost}}}
{{#Truncate.Replies}}
{{{Truncate.RenderPost}}}
<br />

23
contrib/tools/thumbs.sh Executable file
View 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/img
echo "regenerate missing thumbs in $(pwd)"
find . \
-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/{}.jpg' \
-strip \
'{}' \;
fi

View File

@@ -7,7 +7,8 @@
* go 1.4 or higher
* libsodium 1.0 or higher
* imagemagick
* RabbitMQ
* ffmpegthumbnailer
* sox
## debian ##
@@ -45,7 +46,7 @@ We'll also need to install some dependancies that come with debian:
# as root
apt update
apt install imagemagick libsodium-dev
apt install imagemagick libsodium-dev ffmpegthumbnailer sox
Now build the daemon: