Further clarify e-mail policy
This commit is contained in:
@@ -10,7 +10,10 @@ will be removed when reported.
|
|||||||
* **Copyright violation**: Works which are shared without permission from the
|
* **Copyright violation**: Works which are shared without permission from the
|
||||||
copyright holder. For copyright reports we need a formal DMCA takedown request
|
copyright holder. For copyright reports we need a formal DMCA takedown request
|
||||||
originating from the copyright holder or a representative. See the chapter
|
originating from the copyright holder or a representative. See the chapter
|
||||||
[E-Mail reporting rules](#toc_2) below.
|
[E-Mail reporting rules](#toc_2) below. When sending a copyright infringement
|
||||||
|
notice to our abuse address, please state clearly that it is a copyright
|
||||||
|
infringement notice so that we can properly detect the type of report. Using
|
||||||
|
words like 'theft' or 'stolen' won't work because piracy is not theft.
|
||||||
* **Porn**: Pornographic material is not strictly banned on pixeldrain. But in
|
* **Porn**: Pornographic material is not strictly banned on pixeldrain. But in
|
||||||
order to comply with international regulations I have to prevent it from
|
order to comply with international regulations I have to prevent it from
|
||||||
spreading too far. For this reason pornographic videos and images can be
|
spreading too far. For this reason pornographic videos and images can be
|
||||||
@@ -67,11 +70,13 @@ receive:
|
|||||||
[Message-ID](https://en.wikipedia.org/wiki/Message-ID) header. The Message-ID
|
[Message-ID](https://en.wikipedia.org/wiki/Message-ID) header. The Message-ID
|
||||||
is used to reference messages in our system, mails without a Message-ID are
|
is used to reference messages in our system, mails without a Message-ID are
|
||||||
not processed.
|
not processed.
|
||||||
* The e-mail must include either a valid [DKIM
|
* The abuse system uses e-mail addresses for authenctication so we need to be
|
||||||
signature](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) or a [SPF
|
wary of [message spoofing](https://en.wikipedia.org/wiki/Email_spoofing). To
|
||||||
header](https://en.wikipedia.org/wiki/Sender_Policy_Framework). Since the
|
combat this we require both
|
||||||
sender address is used as a verification method we must use these methods to
|
[DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) and
|
||||||
combat message spoofing.
|
[SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework) validation before
|
||||||
|
we can accept e-mails. If either of these checks fail we assume the message
|
||||||
|
was spoofed and it goes straight to the spambox.
|
||||||
* Only send abuse reports to
|
* Only send abuse reports to
|
||||||
[abuse@pixeldrain.com](mailto:abuse@pixeldrain.com). Messages sent to any
|
[abuse@pixeldrain.com](mailto:abuse@pixeldrain.com). Messages sent to any
|
||||||
other e-mail address are ignored.
|
other e-mail address are ignored.
|
||||||
|
@@ -15,7 +15,6 @@ let block_form = {
|
|||||||
label: "Type",
|
label: "Type",
|
||||||
type: "radio",
|
type: "radio",
|
||||||
radio_values: [
|
radio_values: [
|
||||||
"unknown",
|
|
||||||
"copyright",
|
"copyright",
|
||||||
"porn",
|
"porn",
|
||||||
"child_abuse",
|
"child_abuse",
|
||||||
|
@@ -157,37 +157,33 @@ onMount(get_reporters);
|
|||||||
{/if}
|
{/if}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<br/>
|
<h2>Pending reporters</h2>
|
||||||
|
<EmailReportersTable
|
||||||
<div class="table_scroll">
|
|
||||||
<h2>Pending reporters</h2>
|
|
||||||
<EmailReportersTable
|
|
||||||
reporters={reporters_pending}
|
reporters={reporters_pending}
|
||||||
on:edit={e => edit_reporter(e.detail)}
|
on:edit={e => edit_reporter(e.detail)}
|
||||||
on:approve={e => approve_reporter(e.detail)}
|
on:approve={e => approve_reporter(e.detail)}
|
||||||
on:spam={e => spam_reporter(e.detail)}
|
on:spam={e => spam_reporter(e.detail)}
|
||||||
on:delete={e => delete_reporter(e.detail)}>
|
on:delete={e => delete_reporter(e.detail)}>
|
||||||
</EmailReportersTable>
|
</EmailReportersTable>
|
||||||
|
|
||||||
|
|
||||||
<h2>Trusted reporters</h2>
|
<h2>Trusted reporters</h2>
|
||||||
<EmailReportersTable
|
<EmailReportersTable
|
||||||
reporters={reporters_trusted}
|
reporters={reporters_trusted}
|
||||||
on:edit={e => edit_reporter(e.detail)}
|
on:edit={e => edit_reporter(e.detail)}
|
||||||
on:approve={e => approve_reporter(e.detail)}
|
on:approve={e => approve_reporter(e.detail)}
|
||||||
on:spam={e => spam_reporter(e.detail)}
|
on:spam={e => spam_reporter(e.detail)}
|
||||||
on:delete={e => delete_reporter(e.detail)}>
|
on:delete={e => delete_reporter(e.detail)}>
|
||||||
</EmailReportersTable>
|
</EmailReportersTable>
|
||||||
|
|
||||||
<h2>Rejected reporters</h2>
|
<h2>Rejected reporters</h2>
|
||||||
<EmailReportersTable
|
<EmailReportersTable
|
||||||
reporters={reporters_rejected}
|
reporters={reporters_rejected}
|
||||||
on:edit={e => edit_reporter(e.detail)}
|
on:edit={e => edit_reporter(e.detail)}
|
||||||
on:approve={e => approve_reporter(e.detail)}
|
on:approve={e => approve_reporter(e.detail)}
|
||||||
on:spam={e => spam_reporter(e.detail)}
|
on:spam={e => spam_reporter(e.detail)}
|
||||||
on:delete={e => delete_reporter(e.detail)}>
|
on:delete={e => delete_reporter(e.detail)}>
|
||||||
</EmailReportersTable>
|
</EmailReportersTable>
|
||||||
</div>
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@@ -198,7 +194,4 @@ onMount(get_reporters);
|
|||||||
}
|
}
|
||||||
.toolbar > * { flex: 0 0 auto; }
|
.toolbar > * { flex: 0 0 auto; }
|
||||||
.toolbar_spacer { flex: 1 1 auto; }
|
.toolbar_spacer { flex: 1 1 auto; }
|
||||||
.table_scroll {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
@@ -52,7 +52,8 @@ const toggle_preview = (rep) => {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<table>
|
<div class="table_scroll">
|
||||||
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><SortButton field="from_address" active_field={sort_field} asc={asc} sort_func={sort}>Address</SortButton></td>
|
<td><SortButton field="from_address" active_field={sort_field} asc={asc} sort_func={sort}>Address</SortButton></td>
|
||||||
<td><SortButton field="name" active_field={sort_field} asc={asc} sort_func={sort}>Name</SortButton></td>
|
<td><SortButton field="name" active_field={sort_field} asc={asc} sort_func={sort}>Name</SortButton></td>
|
||||||
@@ -72,7 +73,7 @@ const toggle_preview = (rep) => {
|
|||||||
<td>{formatDate(rep.created, false, false, false)}</td>
|
<td>{formatDate(rep.created, false, false, false)}</td>
|
||||||
<td>
|
<td>
|
||||||
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
|
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
|
||||||
<i class="icon">visibility</i>
|
<i class="icon">email</i>
|
||||||
</button>
|
</button>
|
||||||
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
|
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
|
||||||
<i class="icon">edit</i>
|
<i class="icon">edit</i>
|
||||||
@@ -93,7 +94,8 @@ const toggle_preview = (rep) => {
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{/each}
|
{/each}
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
<Modal bind:this={modal} title={preview_subject} width="1000px">
|
<Modal bind:this={modal} title={preview_subject} width="1000px">
|
||||||
{#if preview_html !== ""}
|
{#if preview_html !== ""}
|
||||||
@@ -104,6 +106,9 @@ const toggle_preview = (rep) => {
|
|||||||
</Modal>
|
</Modal>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.table_scroll {
|
||||||
|
text-align: initial;
|
||||||
|
}
|
||||||
.message_html {
|
.message_html {
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
text-align: initial;
|
text-align: initial;
|
||||||
|
@@ -4,6 +4,18 @@ import { formatDate } from "../util/Formatting.svelte";
|
|||||||
import Expandable from "../util/Expandable.svelte";
|
import Expandable from "../util/Expandable.svelte";
|
||||||
import LoadingIndicator from "../util/LoadingIndicator.svelte";
|
import LoadingIndicator from "../util/LoadingIndicator.svelte";
|
||||||
|
|
||||||
|
const abuse_types = [
|
||||||
|
"copyright",
|
||||||
|
"child_abuse",
|
||||||
|
"terrorism",
|
||||||
|
"gore",
|
||||||
|
"zoophilia",
|
||||||
|
"malware",
|
||||||
|
"doxing",
|
||||||
|
"revenge_porn",
|
||||||
|
"porn",
|
||||||
|
]
|
||||||
|
|
||||||
let loading = true
|
let loading = true
|
||||||
let rows = []
|
let rows = []
|
||||||
let total_offences = 0
|
let total_offences = 0
|
||||||
@@ -11,7 +23,7 @@ let total_offences = 0
|
|||||||
let expanded = false
|
let expanded = false
|
||||||
let creating = false
|
let creating = false
|
||||||
let new_ban_address
|
let new_ban_address
|
||||||
let new_ban_reason = "unknown"
|
let new_ban_reason = abuse_types[0]
|
||||||
|
|
||||||
const get_bans = async () => {
|
const get_bans = async () => {
|
||||||
loading = true;
|
loading = true;
|
||||||
@@ -114,23 +126,11 @@ onMount(get_bans);
|
|||||||
<input id="field_address" type="text" bind:this={new_ban_address}/>
|
<input id="field_address" type="text" bind:this={new_ban_address}/>
|
||||||
<label for="field_reason">Reason</label>
|
<label for="field_reason">Reason</label>
|
||||||
<div id="field_reason">
|
<div id="field_reason">
|
||||||
<input id="reason_unknown" name="reporter_type" type="radio" bind:group={new_ban_reason} value="unknown" />
|
{#each abuse_types as t (t)}
|
||||||
<label for="reason_unknown">unknown</label>
|
<input id="reason_{t}" name="reporter_type" type="radio" bind:group={new_ban_reason} value="{t}" />
|
||||||
|
<label for="reason_{t}">{t}</label>
|
||||||
<br/>
|
<br/>
|
||||||
<input id="reason_copyright" name="reporter_type" type="radio" bind:group={new_ban_reason} value="copyright" />
|
{/each}
|
||||||
<label for="reason_copyright">copyright</label>
|
|
||||||
<br/>
|
|
||||||
<input id="reason_child_abuse" name="reporter_type" type="radio" bind:group={new_ban_reason} value="child_abuse" />
|
|
||||||
<label for="reason_child_abuse">child_abuse</label>
|
|
||||||
<br/>
|
|
||||||
<input id="reason_terrorism" name="reporter_type" type="radio" bind:group={new_ban_reason} value="terorrism" />
|
|
||||||
<label for="reason_terrorism">terrorism</label>
|
|
||||||
<br/>
|
|
||||||
<input id="reason_gore" name="reporter_type" type="radio" bind:group={new_ban_reason} value="gore" />
|
|
||||||
<label for="reason_gore">gore</label>
|
|
||||||
<br/>
|
|
||||||
<input id="reason_malware" name="reporter_type" type="radio" bind:group={new_ban_reason} value="malware" />
|
|
||||||
<label for="reason_malware">malware</label>
|
|
||||||
</div>
|
</div>
|
||||||
<button class="button_highlight" type="submit" style="float: right;">
|
<button class="button_highlight" type="submit" style="float: right;">
|
||||||
<i class="icon">save</i> Save
|
<i class="icon">save</i> Save
|
||||||
|
Reference in New Issue
Block a user