Add e-mail preview to abuse reporter page
This commit is contained in:
@@ -9,10 +9,8 @@ will be removed when reported.
|
||||
|
||||
* **Copyright violation**: Works which are shared without permission from the
|
||||
copyright holder. For copyright reports we need a formal DMCA takedown request
|
||||
originating from the copyright holder or a representative. If your request is
|
||||
not valid it will be ignored. Takedown requests which are sent to any other
|
||||
address than abuse@pixeldrain.com will also be ignored. See the chapter
|
||||
[Copyright infringement](#copyright-infringement) below.
|
||||
originating from the copyright holder or a representative. See the chapter
|
||||
[E-Mail reporting rules](#toc_2) below.
|
||||
* **Porn**: Pornographic material is not strictly banned on pixeldrain. But in
|
||||
order to comply with international regulations I have to prevent it from
|
||||
spreading too far. For this reason pornographic videos and images can be
|
||||
@@ -42,25 +40,46 @@ Violating these rules will result in your IP address being banned from uploading
|
||||
to pixeldrain.
|
||||
|
||||
If you have found content which falls in any of these categories on pixeldrain
|
||||
please report it _using the report button on the download page_ of the file. Do
|
||||
not send an e-mail, it will be ignored. When a file has received enough reports
|
||||
of the same type it will automatically be blocked. I will also manually review
|
||||
reported files occasionally.
|
||||
please report it with the report button on the download page or by sending an
|
||||
e-mail. When reporting links through e-mail pay attention to the rules described
|
||||
below.
|
||||
|
||||
## Copyright infringement
|
||||
## E-Mail reporting rules
|
||||
|
||||
If you have found content which infringes on your copyright you can send a
|
||||
formal DMCA take-down request to
|
||||
[abuse@pixeldrain.com](mailto:abuse@pixeldrain.com) and I will review it. In
|
||||
your e-mail you need to swear under penalty of perjury that you (or your
|
||||
company) own exclusive rights to the claimed content. Please state the name of
|
||||
your organisation so the report can be properly categorised. Please put all
|
||||
relevant information in the e-mail body itself, **no attachments**! PDF files
|
||||
will not be reviewed.
|
||||
Due to the large number of abuse reports pixeldrain receives every day we were
|
||||
forced to automate the process. Messages sent to
|
||||
[abuse@pixeldrain.com](mailto:abuse@pixeldrain.com) are automatically scanned
|
||||
for pixeldrain links and processed. The first report we receive from a sender is
|
||||
manually reviewed. If the report is approved then your e-mail address will be
|
||||
added to our whitelist and all following messages are processed automatically.
|
||||
For this to work efficiently we have to set some requirements on the mails we
|
||||
receive:
|
||||
|
||||
Abuse mails from repeated senders are automatically processed. This only works
|
||||
if you send the reports to abuse@pixeldrain.com. Do **not** send abuse reports
|
||||
to support, sales or any other e-mail address, your report will be ignored.
|
||||
* Messages are categorized based on their contents. Make sure the report
|
||||
contains a description of the type of content and that it mentions one of the
|
||||
abuse categories listed above.
|
||||
* Do not add attachments to your e-mail reports. Only the e-mail body is checked
|
||||
for download links. The message scanning system will not check your
|
||||
attachments and download links within the files are not detected.
|
||||
* Do not obfuscate the pixeldrain links. The reported download links need to be
|
||||
complete and valid.
|
||||
* The e-mail must include a
|
||||
[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
|
||||
not processed.
|
||||
* The e-mail must include either a valid [DKIM
|
||||
signature](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) or a [SPF
|
||||
header](https://en.wikipedia.org/wiki/Sender_Policy_Framework). Since the
|
||||
sender address is used as a verification method we must use these methods to
|
||||
combat message spoofing.
|
||||
* Only send abuse reports to
|
||||
[abuse@pixeldrain.com](mailto:abuse@pixeldrain.com). Messages sent to any
|
||||
other e-mail address are ignored.
|
||||
* Do not repeatedly send reports about files which have already been removed in
|
||||
the past. We will block your e-mail address if this happens.
|
||||
|
||||
If your abuse report is rejected for one of the above reasons then you will
|
||||
receive a reply with instructions on how to fix it.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
|
@@ -1,9 +1,21 @@
|
||||
<script>
|
||||
import { createEventDispatcher } from "svelte";
|
||||
import { formatDate } from "../util/Formatting.svelte";
|
||||
import Modal from "../util/Modal.svelte"
|
||||
|
||||
let dispatch = createEventDispatcher()
|
||||
export let reporters = []
|
||||
|
||||
let modal
|
||||
let preview_subject = ""
|
||||
let preview_html = ""
|
||||
let preview_text = ""
|
||||
const toggle_preview = (rep) => {
|
||||
preview_subject = rep.last_message_subject
|
||||
preview_text = rep.last_message_text
|
||||
preview_html = rep.last_message_html
|
||||
modal.show()
|
||||
}
|
||||
</script>
|
||||
|
||||
<table>
|
||||
@@ -25,6 +37,9 @@ export let reporters = []
|
||||
<td>{formatDate(rep.last_used, true, true, false)}</td>
|
||||
<td>{formatDate(rep.created, false, false, false)}</td>
|
||||
<td>
|
||||
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
|
||||
<i class="icon">visibility</i>
|
||||
</button>
|
||||
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
|
||||
<i class="icon">edit</i>
|
||||
</button>
|
||||
@@ -45,3 +60,26 @@ export let reporters = []
|
||||
</tr>
|
||||
{/each}
|
||||
</table>
|
||||
|
||||
<Modal bind:this={modal} title={preview_subject} width="1000px">
|
||||
{#if preview_html !== ""}
|
||||
<div class="message_html">{@html preview_html}</div>
|
||||
{:else if preview_text !== ""}
|
||||
<div class="message_pre">{preview_text}</div>
|
||||
{/if}
|
||||
</Modal>
|
||||
|
||||
<style>
|
||||
.message_html {
|
||||
padding: 8px;
|
||||
text-align: initial;
|
||||
white-space: normal;
|
||||
overflow: hidden;
|
||||
}
|
||||
.message_pre {
|
||||
padding: 8px;
|
||||
text-align: initial;
|
||||
white-space: pre-wrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
|
@@ -17,11 +17,12 @@ const filter_visual = type => {
|
||||
type.startsWith("video/") ||
|
||||
type === "application/pdf"
|
||||
}
|
||||
const filter_audio = type => {
|
||||
return type.startsWith("audio/")
|
||||
|
||||
}
|
||||
const filter_audiovisual = type => {
|
||||
return type.startsWith("image/") ||
|
||||
type.startsWith("video/") ||
|
||||
type.startsWith("audio/") ||
|
||||
type === "application/pdf"
|
||||
return filter_visual(type) || filter_audio(type)
|
||||
}
|
||||
const filter_app = type => {
|
||||
return type.startsWith("application/") ||
|
||||
@@ -30,10 +31,6 @@ const filter_app = type => {
|
||||
|
||||
const abuse_categories = [
|
||||
{
|
||||
type: "copyright", name: "Copyright",
|
||||
desc: `Protected content which is shared without constent from the
|
||||
rightsholder`,
|
||||
}, {
|
||||
type: "porn", name: "Porn",
|
||||
desc: `Sexually explicit videos or images`,
|
||||
filter: filter_visual,
|
||||
@@ -143,22 +140,10 @@ let submit = async e => {
|
||||
}
|
||||
|
||||
let description = ""
|
||||
let copyright_rightsholder = ""
|
||||
let copyright_email = ""
|
||||
let copyright_sources = ""
|
||||
let malware_proof = ""
|
||||
let child_abuse_password = ""
|
||||
|
||||
const report_description = () => {
|
||||
if (abuse_type === "copyright") {
|
||||
return "Rightholder name: " + copyright_rightsholder + "\n" +
|
||||
"Contact e-mail: " + copyright_email + "\n" +
|
||||
"Sources:\n" + copyright_sources + "\n\n" +
|
||||
"Description:\n" + description;
|
||||
} else if (abuse_type === "malware") {
|
||||
return "Proof: " + malware_proof + "\n" +
|
||||
"Description:\n" + description;
|
||||
} else if (abuse_type === "child_abuse") {
|
||||
if (abuse_type === "child_abuse") {
|
||||
return "Password: " + child_abuse_password + "\n" +
|
||||
"Description:\n" + description;
|
||||
} else {
|
||||
@@ -171,7 +156,8 @@ const report_description = () => {
|
||||
<p>
|
||||
If you think this file violates pixeldrain's
|
||||
<a href="/abuse">content policy</a> you can report it for moderation
|
||||
with this form.
|
||||
with this form. Please submit copyright infringement notices through our
|
||||
<a href="/abuse#toc_2">abuse e-mail address</a>.
|
||||
</p>
|
||||
<form on:submit={submit} style="width: 100%" class="report_form">
|
||||
<h3>Abuse type</h3>
|
||||
@@ -206,38 +192,7 @@ const report_description = () => {
|
||||
|
||||
<h3>Description</h3>
|
||||
|
||||
{#if abuse_type === "copyright"}
|
||||
|
||||
<div class="highlight_yellow" style="text-align: initial;">
|
||||
<p>
|
||||
Copyright claims can only be submitted by the copyright
|
||||
owner or an authorized agent. If you do not own the rights
|
||||
to this file then you don't have the rights to file a
|
||||
copyright claim.
|
||||
</p>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
<div>Name rightsholder (can be a registered company name)</div>
|
||||
<input type="text" bind:value={copyright_rightsholder} required/>
|
||||
|
||||
<div>Contact e-mail</div>
|
||||
<input type="email" bind:value={copyright_email} required/>
|
||||
|
||||
<div>Source URLs (links to the places where the original content was sold/provided)</div>
|
||||
<textarea bind:value={copyright_sources} placeholder="https://some.store.com" required></textarea>
|
||||
|
||||
{:else if abuse_type === "malware"}
|
||||
|
||||
<div>
|
||||
Proof that this file is malware. This can be a link to
|
||||
<a href="https://www.virustotal.com/"target="_blank">VirusTotal</a>
|
||||
scan results, or some other security vendor which has
|
||||
information about this file
|
||||
</div>
|
||||
<input type="text" bind:value={malware_proof} required/>
|
||||
|
||||
{:else if abuse_type === "child_abuse"}
|
||||
{#if abuse_type === "child_abuse"}
|
||||
|
||||
<div class="highlight_yellow" style="text-align: initial;">
|
||||
<p>
|
||||
@@ -340,7 +295,6 @@ input[type="radio"]:checked+div {
|
||||
width: 100%;
|
||||
}
|
||||
.report_form > input[type="text"],
|
||||
.report_form > input[type="email"],
|
||||
.report_form > textarea {
|
||||
width: 100%;
|
||||
margin: 0 0 0.5em 0;
|
||||
|
@@ -59,7 +59,7 @@ onMount(() => {
|
||||
Downloading
|
||||
</div>
|
||||
<div class="feature_cell free_feat">
|
||||
<span class="bold">5 GB per day</span><br/>
|
||||
<span class="bold">6 GB per day</span><br/>
|
||||
|
||||
Download speed is reduced to 1 MiB/s when exceeded. Max 5 concurrent
|
||||
downloads
|
||||
|
@@ -189,7 +189,7 @@ onMount(() => {
|
||||
<div class="feat_normal round_br" class:feat_highlight={subscription === ""}>
|
||||
<ul>
|
||||
<li>Standard free plan, files expire after 120 days.</li>
|
||||
<li>Download limit of 5 GB per day</li>
|
||||
<li>Download limit of 6 GB per day</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user