This repository has been archived on 2021-05-18. You can view files and clone it, but cannot push or open issues or pull requests.
website/index.php

317 lines
11 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<title>FediBlock</title>
<meta charset="utf-8">
<meta name="robots" content="noindex, nofollow">
<style>
body
{
max-width: 100ch;
}
label
{
display: block;
float: left;
width: 12ch;
text-align: right;
margin-right: 1ch;
}
input[type=text], input[type=url]
{
width: 60ch;
}
input[type=button]
{
padding: 0;
}
input[type=file], input[list=list_tags], input[type=url]
{
margin-left: 10ch;
}
span.hint
{
font-style: italic;
}
p.footer
{
text-align: right;
}
table
{
width: 80%;
margin: auto auto;
}
table caption, table tr:first-of-type td
{
border-bottom: 1px solid;
}
table td:first-of-type
{
border-right: 1px solid;
}
</style>
<link rel="alternate" type="application/rss+xml" title="The newest FediBlock entries. All tags."
href="/rss">
</head>
<body>
<h1>FediBlock</h1>
<!-- <p>
<a href="https://fediblock.org/">FediBlock.org</a> ·
<a href="http://mzz6cduobh3oemtlou2sssbr4wteglmcabq5exrln3v7puwegfn4qqyd.onion/">
Onion service</a> (Tor)
</p> -->
<h2 id="what">What is this?</h2>
<p>
We aim to build a comprehensive list of #FediBlock posts in order to provide it to
especially new instance admins.
</p>
<p>
The idea of this project is to provide a list of bad actor instances in the Fediverse, in
order to enable instance admins to keep their instances clean of those actors without having
to go through endless and incomplete pages of #FediBlock posts.
</p>
<p>
Everyone can submit instances they suggest to block and provide receipts and reasoning.
Instance admins can subscribe to updates and decide for themselves whether they want to block
that instance or not. Those subscriptions can be limited to specific reasons (enables racism,
“free speech champions”, homomisia, no moderation, etc) or for all block suggestions.
</p>
<p>
The intention is to provide safe spaces in the Fediverse. The blocking suggestions should have
reasons like the above mentioned. If you want to suggest something like “The admin is blocking
my instance just because I used the n-word”, this is no place for you and your suggestion
might be deleted.
</p>
<p>
We recognize the work that others put into the #FediBlock hashtag. This is supposed to be an
archive or extension.
</p>
<h3>What are the advantages over the #FediBlock hashtag?</h3>
<ul>
<li>A list of all instances at a glance. Great for pointing admins of new instances to.</li>
<li>You get all block recommendations, not just the ones that federate to your instance.</li>
<li>Every recommendation has at least one receipt attached.</li>
<li>Entries are editable (with a git pull-request).</li>
<li>
Subscribe to the RSS feed to get all new recommendations or subscribe only to specific tags.
</li>
</ul>
<h2 id="list">Blocklist</h2>
<ul>
<li>Look at <a href="/blocklist/">all block recommendations in one page</a>.</li>
<li>
<a href="/rss">Subscribe to all new recommendations via RSS</a>, or<br>
<form method="get" action="/rss">
<label for="tags_rss" style="width: auto;">subscribe only to these tags:</label>
<input type="text" id="tags_rss" name="tags[]" placeholder="tag1,tag2,tag3"
style="width: 42ch;">
<input type="submit">
</form>
</li>
</ul>
<h2 id="api">API</h2>
<p><a href="/api/v1/list">/api/v1/list</a> returns an array of objects with these properties:</p>
<table>
<tr>
<td id="list_property">Property (type)</td>
<td id="list_description">Description</td>
</tr>
<tr>
<td headers="list_property">instance (string)</td>
<td headers="list_description">The hostname of the instance.</td>
</tr>
<tr>
<td headers="list_property">url (string)</td>
<td headers="list_description">The location of the full data set.</td>
</tr>
</table>
<p>The full data set is an object with these properties:</p>
<table>
<tr>
<td id="data_property">Property (type)</td>
<td id="data_description">Description</td>
</tr>
<tr>
<td headers="data_property">description (string)</td>
<td headers="data_description">The reasons the instance is listed. Can be long. Not sanitized.</td>
</tr>
<tr>
<td headers="data_property">instance (string)</td>
<td headers="data_description">The hostname of the instance. Can be more than one, separated by comma.</td>
</tr>
<tr>
<td headers="data_property">receipts (array of strings)</td>
<td headers="data_description">URLs to prove the claims made in the description and tags.</td>
</tr>
<tr>
<td headers="data_property">report_time (string)</td>
<td headers="data_description">Date and time of reporting, UTC. Format:
<a href="https://man7.org/linux/man-pages/man3/strftime.3.html">%Y-%m-%dT%H:%M:%S</a>.</td>
</tr>
<tr>
<td headers="data_property">screenshots (array of strings)</td>
<td headers="data_description">The file names of the screenshots. Prepend
<code>https://fediblock.org/blocklist/</code> and you have the URL.</td>
</tr>
<tr>
<td headers="data_property">tags (array of strings)</td>
<td headers="data_description">Tags to classify the problems with the instance.</td>
</tr>
<tr>
<td headers="data_property">unreachable (boolean)</td>
<td headers="data_description"><code>true</code> if instance is unreachable. This property may not exist.</td>
</tr>
</table>
<h2 id="contact">Contact</h2>
<p>
You can reach us in the Fediverse at
<a rel="me" href="https://botsin.space/@fediblock_archive">@fediblock_archive@botsin.space</a>.
</p>
<h2 id="suggest"><del>Suggest instance</del></h2>
<div style="font-size: 200%; font-weight: bold;">
<p>
The project is inactive and will be for the forseeable future. You can't
suggest instances at the moment.
</p>
<p>
If you want to adopt the project, get in touch with
<a rel="me" href="https://botsin.space/@fediblock_archive">@fediblock_archive@botsin.space</a>.
</p>
</div>
<!-- <p>
Please make sure to include receipts (hyperlinks and/or screenshots) for all claims you make. We
don't want trust to be necessary to use this list.
</p>
<form method="post" action="/add" enctype="multipart/form-data" id="form_add">
<label for="instance">Instance:</label>
<input type="text" id="instance" name="instance" placeholder="example.com" required>
<span class="hint">(Without the “https://)</span>
<br>
<label for="tags">Tags:</label><span class="hint">(One tag per field or comma separated)</span><br>
<input type="text" list="list_tags" id="tags" name="tags[]" required>
<input type="button" id="add_tag" value="" title="Add tag" onclick="javascript:add_input_tag();">
<br>
<label for="receipts">Receipts:</label><span class="hint">(One receipt per field or comma separated)</span><br>
<input type="url" id="receipts" name="receipts[]" required>
<input type="button" id="add_receipt" value="" title="Add receipt" onclick="javascript:add_input_receipt();">
<br>
<label for="screenshot1">Screenshots:</label><span class="hint">(optional)</span>
<br>
<input type="file" id="screenshot1" name="screenshots[]" accept="image/*">
<br>
<input type="file" id="screenshot2" name="screenshots[]" accept="image/*">
<br>
<input type="file" id="screenshot3" name="screenshots[]" accept="image/*">
<br>
<input type="file" id="screenshot4" name="screenshots[]" accept="image/*">
<br>
<label for="description">Description:</label><br>
<textarea id="description" name="description" cols="80" rows="20" required></textarea><br>
<div style="display:none;">
<label for="url" style="width: 18ch;">Leave this empty:</label>
<input type="text" id="url" name="url">
</div>
<div>Please solve this mathematical question:</div>
<?php
$array = array
(
0 => "1 + 1",
1 => "4 + 2",
2 => "12 + 5",
3 => "15 - 3",
4 => "2 x 2",
5 => "2 - 1"
);
$random_number = rand(0, 5);
printf('<input type="text" id="captcha_id" name="captcha_id" value="%s" style="display:none;">',
$random_number);
printf('<label for="captcha_answer">%s:</label>', $array[$random_number]);
?>
<input type="text" id="captcha_answer" name="captcha_answer" required>
<br>
<input type="submit">
</form> -->
<p class="footer">
<a href="https://schlomp.space/FediBlock">Sourcecode</a> licensed under the
<a href="https://www.gnu.org/licenses/agpl-3.0.html">AGPL-3.0-only</a>.
</p>
<script>
function add_input_tag()
{
const input_text = document.createElement("input");
input_text.setAttribute("type", "text");
input_text.setAttribute("list", "list_tags");
input_text.setAttribute("name", "tags[]");
const form = document.getElementById("form_add");
const btn = document.getElementById("add_tag");
form.insertBefore(document.createElement("br"), btn);
form.insertBefore(input_text, btn);
input_text.focus();
}
function add_input_receipt()
{
const input_text = document.createElement("input");
input_text.setAttribute("type", "url");
input_text.setAttribute("name", "receipts[]");
const form = document.getElementById("form_add");
const btn = document.getElementById("add_receipt");
form.insertBefore(document.createElement("br"), btn);
form.insertBefore(input_text, btn);
input_text.focus();
}
</script>
<datalist id="list_tags">
<?php
if ($file = fopen("tags.lst", "r"))
{
while(!feof($file))
{
$tag = rtrim(fgets($file));
if ($tag != "")
{
printf("<option value=\"%s\">\n", $tag);
}
}
fclose($file);
}
?>
</datalist>
</body>
</html>