Files
dl/dl-0.18.1-pre0.19changes20210316.patch

8561 lines
291 KiB
Diff
Raw 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.

diff -Nur dl-0.18.1/AUTHORS.html dl-master/AUTHORS.html
--- dl-0.18.1/AUTHORS.html 2017-09-06 12:09:38.000000000 -0400
+++ dl-master/AUTHORS.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,467 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title></title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document">
-
-
-<div class="section" id="main-program">
-<h1>Main program</h1>
-<div class="line-block">
-<div class="line">Copyright(c) 2007-2017 Yuri D'Elia &lt;<a class="reference external" href="mailto:wavexx&#64;thregr.org">wavexx&#64;thregr.org</a>&gt;</div>
-<div class="line">License: GNU GPL 2+ (see COPYING)</div>
-</div>
-</div>
-<div class="section" id="localization">
-<h1>Localization</h1>
-<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name" colspan="2">Brazilian Portuguese:</th></tr>
-<tr class="field"><td>&nbsp;</td><td class="field-body">Guilherme Benkenstein &lt;<a class="reference external" href="mailto:gb&#64;gbti.com.br">gb&#64;gbti.com.br</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">Czech:</th><td class="field-body">Jan Štětina &lt;<a class="reference external" href="mailto:zaantar&#64;gmail.com">zaantar&#64;gmail.com</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">Dutch:</th><td class="field-body">Maarten Schoonman &lt;<a class="reference external" href="mailto:m.s.schoonman&#64;home.nl">m.s.schoonman&#64;home.nl</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">French:</th><td class="field-body">Daniel Berteaud &lt;<a class="reference external" href="mailto:daniel&#64;firewall-services.com">daniel&#64;firewall-services.com</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">German:</th><td class="field-body">Clemens Egger &lt;<a class="reference external" href="mailto:clemens.egger&#64;eurac.edu">clemens.egger&#64;eurac.edu</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">Italian:</th><td class="field-body">Yuri D'Elia &lt;<a class="reference external" href="mailto:wavexx&#64;thregr.org">wavexx&#64;thregr.org</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">Japanese:</th><td class="field-body">Teruo IWAI &lt;<a class="reference external" href="mailto:teruo.iwai&#64;gmail.com">teruo.iwai&#64;gmail.com</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">Russian:</th><td class="field-body">Олейник О.В &lt;<a class="reference external" href="mailto:oleg_oleinik&#64;mail.ru">oleg_oleinik&#64;mail.ru</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name">Spanish:</th><td class="field-body">Roberto Salgado &lt;<a class="reference external" href="mailto:drober&#64;gmail.com">drober&#64;gmail.com</a>&gt;</td>
-</tr>
-<tr class="field"><th class="field-name" colspan="2">Simplified Cinese:</th></tr>
-<tr class="field"><td>&nbsp;</td><td class="field-body">Guangyu Dong &lt;<a class="reference external" href="mailto:skyerce&#64;gmail.com">skyerce&#64;gmail.com</a>&gt;</td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="section" id="bundled-code">
-<h1>Bundled code</h1>
-<ul>
-<li><p class="first">PHP-Gettext:</p>
-<div class="line-block">
-<div class="line">Copyright(c) 2005 Steven Armstrong &lt;sa at c-area dot ch&gt;</div>
-<div class="line">Copyright(c) 2003, 2009 Danilo Segan &lt;<a class="reference external" href="mailto:danilo&#64;kvota.net">danilo&#64;kvota.net</a>&gt;</div>
-<div class="line">Copyright(c) 2005 Nico Kaiser &lt;<a class="reference external" href="mailto:nico&#64;siriux.net">nico&#64;siriux.net</a>&gt;</div>
-<div class="line">License: GNU GPL 2+ (see COPYING)</div>
-<div class="line"><a class="reference external" href="https://launchpad.net/php-gettext/">https://launchpad.net/php-gettext/</a></div>
-</div>
-</li>
-<li><p class="first">iepngfix.htc:</p>
-<div class="line-block">
-<div class="line">Copyright(c) 2004-2005 Angus Turnbull <a class="reference external" href="http://www.twinhelix.com">http://www.twinhelix.com</a></div>
-<div class="line">This is licensed under the CC-GNU LGPL, version 2.1 or later.</div>
-<div class="line">For details, see: <a class="reference external" href="http://creativecommons.org/licenses/LGPL/2.1/">http://creativecommons.org/licenses/LGPL/2.1/</a></div>
-</div>
-</li>
-<li><p class="first">progress-polyfill:</p>
-<div class="line-block">
-<div class="line">Copyright(c) 2013 Jonathan Stipe</div>
-<div class="line">Dual licensed under the MIT or GPL Version 2 licenses.</div>
-<div class="line"><a class="reference external" href="https://github.com/jonstipe/progress-polyfill">https://github.com/jonstipe/progress-polyfill</a></div>
-</div>
-</li>
-<li><p class="first">jQuery:</p>
-<div class="line-block">
-<div class="line">Copyright(c) 2005, 2014 jQuery Foundation, Inc.</div>
-<div class="line">Dual licensed under the MIT or GPL Version 2 licenses.</div>
-<div class="line"><a class="reference external" href="http://jquery.org/license">http://jquery.org/license</a></div>
-</div>
-</li>
-<li><p class="first">stupidtable:</p>
-<div class="line-block">
-<div class="line">Copyright(c) 2012 Joseph McCullough</div>
-<div class="line">Licensed under the MIT licenses.</div>
-<div class="line"><a class="reference external" href="https://github.com/joequery/Stupid-Table-Plugin">https://github.com/joequery/Stupid-Table-Plugin</a></div>
-</div>
-</li>
-</ul>
-</div>
-<div class="section" id="bundled-media">
-<h1>Bundled media</h1>
-<ul>
-<li><p class="first"><tt class="docutils literal">cross.png</tt>, <tt class="docutils literal">edit.png</tt>, <tt class="docutils literal">tick.png</tt>:</p>
-<div class="line-block">
-<div class="line">Copyright(c) 2014 Joseph North</div>
-<div class="line">Licensed under a Creative Commons BY-SA 3.0 license.</div>
-<div class="line"><a class="reference external" href="http://sublink.ca/icons/sweetieplus/">http://sublink.ca/icons/sweetieplus/</a></div>
-</div>
-</li>
-<li><p class="first"><tt class="docutils literal">save.png</tt>, <tt class="docutils literal">upload.png</tt>:</p>
-<div class="line-block">
-<div class="line">Copyright(c) 2011 Yusuke Kamiyamane</div>
-<div class="line">Licensed under a Creative Commons Attribution 3.0 license.</div>
-<div class="line"><a class="reference external" href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</a></div>
-</div>
-</li>
-</ul>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/AUTHORS.rst dl-master/AUTHORS.rst
--- dl-0.18.1/AUTHORS.rst 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/AUTHORS.rst 2021-03-16 18:59:58.000000000 -0400
@@ -1,7 +1,7 @@
Main program
------------
-| Copyright(c) 2007-2017 Yuri D'Elia <wavexx@thregr.org>
+| Copyright(c) 2007-2021 Yuri D'Elia <wavexx@thregr.org>
| License: GNU GPL 2+ (see COPYING)
Localization
@@ -24,9 +24,10 @@
* PHP-Gettext:
- | Copyright(c) 2005 Steven Armstrong <sa at c-area dot ch>
- | Copyright(c) 2003, 2009 Danilo Segan <danilo@kvota.net>
+ | Copyright(c) 2005-2006 Steven Armstrong <sa at c-area dot ch>
+ | Copyright(c) 2003-2009 Danilo Segan <danilo@kvota.net>
| Copyright(c) 2005 Nico Kaiser <nico@siriux.net>
+ | Copyright(c) 2006 Marcelo Jorge Vieira <metal@debian.org>
| License: GNU GPL 2+ (see COPYING)
| https://launchpad.net/php-gettext/
diff -Nur dl-0.18.1/client/dl-cli.py dl-master/client/dl-cli.py
--- dl-0.18.1/client/dl-cli.py 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/client/dl-cli.py 2021-03-16 18:59:58.000000000 -0400
@@ -26,7 +26,7 @@
import httplib
-DL_VERSION = "0.18"
+DL_VERSION = "0.19"
DL_AGENT = "dl-cli/" + DL_VERSION
@@ -69,7 +69,8 @@
if not filename:
filename = os.path.basename(path)
c.setopt(c.HTTPPOST, [
- ("file", (c.FORM_FILE, path, c.FORM_FILENAME, filename)),
+ ("file", (c.FORM_FILE, path.encode(sys.getfilesystemencoding()),
+ c.FORM_FILENAME, filename.encode('utf8'))),
("msg", json.dumps({}))])
try:
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/en-US/compose.properties dl-master/client/thunderbird-filelink-dl/chrome/locale/en-US/compose.properties
--- dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/en-US/compose.properties 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/client/thunderbird-filelink-dl/chrome/locale/en-US/compose.properties 2021-03-16 18:59:58.000000000 -0400
@@ -1,4 +1,4 @@
-accountNeededTitle=A DL account is required
+accountNeededTitle=A DL FileLink account is required
accountNeededMsg=Do you want to create an account now?
newGrantFailure=Cannot generate a new grant
-newGrantProgress=Requesting new grant...
+newGrantProgress=Requesting new grant…
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/en-US/management.dtd dl-master/client/thunderbird-filelink-dl/chrome/locale/en-US/management.dtd
--- dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/en-US/management.dtd 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/client/thunderbird-filelink-dl/chrome/locale/en-US/management.dtd 2021-03-16 18:59:58.000000000 -0400
@@ -1,4 +1,4 @@
-<!ENTITY DL_mngt.name "DL for Thunderbird">
+<!ENTITY DL_mngt.name "DL FileLink Provider for Thunderbird">
<!ENTITY DL_mngt.maxSize "Maximum file size:">
<!ENTITY DL_mngt.total "Expire in total # of days:">
<!ENTITY DL_mngt.lastdl "Expire in # of days after last download:">
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/compose.dtd dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/compose.dtd
--- dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/compose.dtd 1969-12-31 19:00:00.000000000 -0500
+++ dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/compose.dtd 2021-03-16 18:59:58.000000000 -0400
@@ -0,0 +1 @@
+<!ENTITY DL_compose.insertGrant "Feltöltési támogatás beszúrása">
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/compose.properties dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/compose.properties
--- dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/compose.properties 1969-12-31 19:00:00.000000000 -0500
+++ dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/compose.properties 2021-03-16 18:59:58.000000000 -0400
@@ -0,0 +1,4 @@
+accountNeededTitle=A DL-fájlhivatkozás fiók szükséges
+accountNeededMsg=Fiók létrehozása most?
+newGrantFailure=Nem lehet új támogatást létrehozni
+newGrantProgress=Új támogatás kérése…
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/management.dtd dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/management.dtd
--- dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/management.dtd 1969-12-31 19:00:00.000000000 -0500
+++ dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/management.dtd 2021-03-16 18:59:58.000000000 -0400
@@ -0,0 +1,5 @@
+<!ENTITY DL_mngt.name "A „DL” fájlhivatkozás szolgáltató a Thunderbird számára (DL FileLink Provider for Thunderbird)">
+<!ENTITY DL_mngt.maxSize "Maximális fájlméret:">
+<!ENTITY DL_mngt.total "Lejárat a teljes napok számában:">
+<!ENTITY DL_mngt.lastdl "Lejárat az utolsó letöltés utáni napok számával:">
+<!ENTITY DL_mngt.maxdl "Lejárat a letöltések száma után:">
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/settings.dtd dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/settings.dtd
--- dl-0.18.1/client/thunderbird-filelink-dl/chrome/locale/hu/settings.dtd 1969-12-31 19:00:00.000000000 -0500
+++ dl-master/client/thunderbird-filelink-dl/chrome/locale/hu/settings.dtd 2021-03-16 18:59:58.000000000 -0400
@@ -0,0 +1,3 @@
+<!ENTITY DL_settings.restURL "REST URL:">
+<!ENTITY DL_settings.username "Felhasználónév:">
+<!ENTITY DL_settings.password "Jelszó:">
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/chrome.manifest dl-master/client/thunderbird-filelink-dl/chrome.manifest
--- dl-0.18.1/client/thunderbird-filelink-dl/chrome.manifest 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/client/thunderbird-filelink-dl/chrome.manifest 2021-03-16 18:59:58.000000000 -0400
@@ -1,6 +1,7 @@
content thunderbird-filelink-dl chrome/content/
skin thunderbird-filelink-dl default chrome/skin/
locale thunderbird-filelink-dl en-US chrome/locale/en-US/
+locale thunderbird-filelink-dl en-US chrome/locale/hu/
component {c0bee36d-3c0d-460b-bb9a-f0e9c873a833} components/nsDL.js
contract @thregr.org/thunderbird-filelink-dl;1 {c0bee36d-3c0d-460b-bb9a-f0e9c873a833}
Les fichiers binaires dl-0.18.1/client/thunderbird-filelink-dl/components/nsDL.xpt et dl-master/client/thunderbird-filelink-dl/components/nsDL.xpt sont différents
diff -Nur dl-0.18.1/client/thunderbird-filelink-dl/install.rdf dl-master/client/thunderbird-filelink-dl/install.rdf
--- dl-0.18.1/client/thunderbird-filelink-dl/install.rdf 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/client/thunderbird-filelink-dl/install.rdf 2021-03-16 18:59:58.000000000 -0400
@@ -4,11 +4,13 @@
<Description about="urn:mozilla:install-manifest">
<!-- Front End MetaData -->
<em:id>thunderbird-filelink-dl@thregr.org</em:id>
- <em:name>DL for Thunderbird</em:name>
- <em:description>DL support for Thunderbird's Filelink</em:description>
+ <em:name>DL FileLink Provider for Thunderbird</em:name>
+ <em:description>Convert large attachments to links automatically, directly within the Composer window, using your own “DL” server/service instead of relying on 3rd-party providers</em:description>
<em:homepageURL>https://www.thregr.org/~wavexx/software/dl/</em:homepageURL>
<em:creator>Yuri D'Elia</em:creator>
- <em:version>0.17.2</em:version>
+ <em:translator>Yuri D'Elia (en-US)</em:translator>
+ <em:translator>Óvári (hu)</em:translator>
+ <em:version>0.17.3</em:version>
<em:type>2</em:type>
<!-- Thunderbird -->
@@ -19,5 +21,17 @@
<em:maxVersion>52.*</em:maxVersion>
</Description>
</em:targetApplication>
+
+ <!-- Hungarian -->
+ <em:localized>
+ <Description>
+ <em:locale>hu</em:locale>
+ <em:name>A „DL” fájlhivatkozás szolgáltató a Thunderbird számára (DL FileLink Provider for Thunderbird)</em:name>
+ <em:description>Átalakítja a nagy mellékleteket önműködően az üzenetszerkesztő ablakban lévő hivatkozásoké, saját „DL” kiszolgálóéval/szolgáltatásával, a harmadik féltől származó szolgáltatókra való hivatkozás helyett</em:description>
+ <em:translator>Yuri D'Elia (en-US)</em:translator>
+ <em:translator>Óvári (hu)</em:translator>
+ </Description>
+ </em:localized>
+
</Description>
</RDF>
Les fichiers binaires dl-0.18.1/client/thunderbird-filelink-dl.xpi et dl-master/client/thunderbird-filelink-dl.xpi sont différents
diff -Nur dl-0.18.1/.gitignore dl-master/.gitignore
--- dl-0.18.1/.gitignore 1969-12-31 19:00:00.000000000 -0500
+++ dl-master/.gitignore 2021-03-16 18:59:58.000000000 -0400
@@ -0,0 +1,7 @@
+*.mo
+*~
+*.pyc
+.*.swp
+*.html
+/htdocs/include/config.php
+/htdocs/static/guide/*/*.html
diff -Nur dl-0.18.1/htdocs/include/basefuncs.php dl-master/htdocs/include/basefuncs.php
--- dl-0.18.1/htdocs/include/basefuncs.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/basefuncs.php 2021-03-16 18:59:58.000000000 -0400
@@ -3,8 +3,17 @@
function returnBytes($val)
{
+ if(is_int($val)) return $val;
+ if(!strlen($val)) return 0;
+
+ // parse suffix (if any)
$val = trim($val);
- $last = strtolower($val{strlen($val)-1});
+ $last = strtolower($val[strlen($val)-1]);
+ if($last === (string)(int)$last || $last === ".")
+ return (int)$val; // no sfx
+
+ // handle mulitiplier
+ $val = (int)substr($val, 0, -1);
switch($last)
{
case 'g': $val *= 1024;
diff -Nur dl-0.18.1/htdocs/include/config.php.dist dl-master/htdocs/include/config.php.dist
--- dl-0.18.1/htdocs/include/config.php.dist 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/config.php.dist 2021-03-16 18:59:58.000000000 -0400
@@ -64,16 +64,16 @@
//$maxSize = ini_get('upload_max_filesize');
// dateFmtShort: Date format as used in the listings.
-// See http://it2.php.net/manual/en/function.date.php for the
+// See http://php.net/manual/en/function.date.php for the
// format specification. Useful choices are:
// - "d/m/Y": day/month/year
// - "d/m/Y T": day/month/year timezone
//$dateFmtShort = "Y-m-d";
// dateFmtFull: Full date/time format as used in ticket/grant details.
-// See http://it2.php.net/manual/en/function.date.php for the
+// See http://php.net/manual/en/function.date.php for the
// format specification.
-//$dateFmtFull = "Y-m-d H:m:s T";
+//$dateFmtFull = "Y-m-d H:i:s T";
// authRealm: Enables HTTP authentication
// When using HTTP authentication, you should set authRealm to the
diff -Nur dl-0.18.1/htdocs/include/confwrap.php dl-master/htdocs/include/confwrap.php
--- dl-0.18.1/htdocs/include/confwrap.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/confwrap.php 2021-03-16 18:59:58.000000000 -0400
@@ -27,7 +27,7 @@
if(!isset($gcLimit)) $gcLimit = 0;
if(!isset($defTimezone)) $defTimezone = @date_default_timezone_get();
if(!isset($dateFmtShort)) $dateFmtShort = "Y-m-d";
-if(!isset($dateFmtFull)) $dateFmtFull = "Y-m-d H:m:s T";
+if(!isset($dateFmtFull)) $dateFmtFull = "Y-m-d H:i:s T";
if(!isset($emailSubjectPrefix)) $emailSubjectPrefix = "[dl] ";
// default style
@@ -103,7 +103,7 @@
);
// constants
-$dlVersion = "0.18.1";
+$dlVersion = "0.19";
$schemaVersion = "0.18";
$bannerUrl = 'https://www.thregr.org/~wavexx/software/dl/';
$banner = '<a href="' . htmlentities($bannerUrl) . '">dl ticket service</a>'
diff -Nur dl-0.18.1/htdocs/include/dbfuncs.php dl-master/htdocs/include/dbfuncs.php
--- dl-0.18.1/htdocs/include/dbfuncs.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/dbfuncs.php 2021-03-16 18:59:58.000000000 -0400
@@ -22,19 +22,19 @@
{
case "sqlite":
// enforce foreign keys by default
- $ret = $this->exec('PRAGMA foreign_keys = ON');
+ $this->exec('PRAGMA foreign_keys = ON');
break;
case "mysql":
// put MySQL into ANSI mode
- $ret = $this->exec('SET SQL_MODE = ANSI_QUOTES');
+ $this->exec('SET SQL_MODE = ANSI');
break;
}
}
public function ping()
{
- try { return ($this->exec('SELECT 1') == 1); }
+ try { return (@$this->exec('SELECT 1') == 1); }
catch(PDOException $e) { return false; }
}
}
diff -Nur dl-0.18.1/htdocs/include/editgrants.php dl-master/htdocs/include/editgrants.php
--- dl-0.18.1/htdocs/include/editgrants.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/editgrants.php 2021-03-16 18:59:58.000000000 -0400
@@ -97,7 +97,7 @@
{
$addrs = array();
foreach(getEMailAddrs($DATA['sent_email']) as $email)
- $addrs[] = '<a href="mailto:' . urlencode($email) . '">' . htmlEntUTF8($email) . '</a>';
+ $addrs[] = '<a href="mailto:' . rawurlencode($email) . '">' . htmlEntUTF8($email) . '</a>';
$details[T_("Initially sent to")] = implode(", ", $addrs);
}
diff -Nur dl-0.18.1/htdocs/include/edittickets.php dl-master/htdocs/include/edittickets.php
--- dl-0.18.1/htdocs/include/edittickets.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/edittickets.php 2021-03-16 18:59:58.000000000 -0400
@@ -76,7 +76,7 @@
{
$addrs = array();
foreach(getEMailAddrs($DATA['sent_email']) as $email)
- $addrs[] = '<a href="mailto:' . urlencode($email) . '">' . htmlEntUTF8($email) . '</a>';
+ $addrs[] = '<a href="mailto:' . rawurlencode($email) . '">' . htmlEntUTF8($email) . '</a>';
$details[T_("Initially sent to")] = implode(", ", $addrs);
}
diff -Nur dl-0.18.1/htdocs/include/funcs.php dl-master/htdocs/include/funcs.php
--- dl-0.18.1/htdocs/include/funcs.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/funcs.php 2021-03-16 18:59:58.000000000 -0400
@@ -308,12 +308,12 @@
function tokenUrl($url, $params = array())
{
- $url .= '?token=' . urlencode($_SESSION['token']);
+ $url .= '?token=' . rawurlencode($_SESSION['token']);
foreach($params as $k => $v)
{
- $url .= '&' . urlencode($k);
+ $url .= '&' . rawurlencode($k);
if(!is_null($v))
- $url .= '=' . urlencode($v);
+ $url .= '=' . rawurlencode($v);
}
return $url;
}
@@ -359,7 +359,7 @@
foreach($v['funcs'] as $i)
{
- if(!call_user_func($i, $p))
+ if(!call_user_func_array($i, array(&$p)))
{
$error = true;
unset($array[$k]);
@@ -545,16 +545,25 @@
else
{
$zip = new ZipArchive();
- if($zip->open($tmpFile, ZipArchive::CREATE) !== true)
+ if($zip->open($tmpFile, ZipArchive::CREATE|ZipArchive::OVERWRITE) !== true)
+ {
+ logError("cannot create ZIP file $tmpFile");
goto error;
+ }
foreach($FILES as $FILE)
{
$name = uniqueFileName(mb_sane_base($FILE["name"]), $files);
if(!$zip->addFile($FILE["tmp_name"], $name))
+ {
+ logError("cannot add file " . $FILE["tmp_name"] . " to $tmpFile");
goto error;
+ }
}
if(!$zip->close())
+ {
+ logError("cannot close ZIP file $tmpFile");
goto error;
+ }
$name = "Archive-" . date("Y-m-d") . ".zip";
$size = filesize($tmpFile);
}
diff -Nur dl-0.18.1/htdocs/include/.htaccess dl-master/htdocs/include/.htaccess
--- dl-0.18.1/htdocs/include/.htaccess 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/.htaccess 2021-03-16 18:59:58.000000000 -0400
@@ -1,4 +1,9 @@
<Limit GET POST>
- Order allow,deny
- Deny from all
+ <IfVersion >= 2.4>
+ Require all denied
+ </IfVersion>
+ <IfVersion < 2.4>
+ Order allow,deny
+ Deny from all
+ </IfVersion>
</Limit>
diff -Nur dl-0.18.1/htdocs/include/init.php dl-master/htdocs/include/init.php
--- dl-0.18.1/htdocs/include/init.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/init.php 2021-03-16 18:59:58.000000000 -0400
@@ -21,6 +21,8 @@
$ret = $logFd = fopen($logFile, "at");
if(@$ret === false)
die("cannot initialize logging\n");
+else
+ ini_set('display_errors', 0);
// initialize the db
connectDB();
diff -Nur dl-0.18.1/htdocs/include/lang.php dl-master/htdocs/include/lang.php
--- dl-0.18.1/htdocs/include/lang.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/lang.php 2021-03-16 18:59:58.000000000 -0400
@@ -71,9 +71,11 @@
{
global $helpPath, $helpRoot, $masterPath, $defLocale, $incPath;
- T_setlocale(LC_ALL, $locale . ".utf8");
- T_bindtextdomain('messages', "$incPath/locale");
- T_textdomain('messages');
+ $domain = 'messages';
+ T_setlocale(LC_ALL, $locale);
+ T_bindtextdomain($domain, "$incPath/locale");
+ T_bind_textdomain_codeset($domain, 'UTF-8');
+ T_textdomain($domain);
if(file_exists("$helpRoot/$locale"))
$helpPath = "$masterPath$helpRoot/$locale/";
diff -Nur dl-0.18.1/htdocs/include/lib/gettext/gettext.inc dl-master/htdocs/include/lib/gettext/gettext.inc
--- dl-0.18.1/htdocs/include/lib/gettext/gettext.inc 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/lib/gettext/gettext.inc 2021-03-16 18:59:58.000000000 -0400
@@ -32,7 +32,6 @@
LC_ALL 6
*/
-
// LC_MESSAGES is not available if php-gettext is not loaded
// while the other constants are already available from session extension.
if (!defined('LC_MESSAGES')) {
@@ -175,14 +174,13 @@
* Convert the given string to the encoding set by bind_textdomain_codeset.
*/
function _encode($text) {
+ $target_encoding = _get_codeset();
+ if (function_exists("mb_detect_encoding")) {
$source_encoding = mb_detect_encoding($text);
- $target_encoding = _get_codeset();
- if ($source_encoding != $target_encoding) {
- return mb_convert_encoding($text, $target_encoding, $source_encoding);
- }
- else {
- return $text;
- }
+ if ($source_encoding != $target_encoding)
+ $text = mb_convert_encoding($text, $target_encoding, $source_encoding);
+ }
+ return $text;
}
@@ -229,7 +227,9 @@
}
// Allow locale to be changed on the go for one translation domain.
global $text_domains, $default_domain;
- unset($text_domains[$default_domain]->l10n);
+ if (array_key_exists($default_domain, $text_domains)) {
+ unset($text_domains[$default_domain]->l10n);
+ }
return $CURRENTLOCALE;
}
}
@@ -288,9 +288,9 @@
/**
* Plural version of gettext.
*/
-function _ngettext($single, $plural, $number) {
+function _ngettext($singular, $plural, $number) {
$l10n = _get_reader();
- return _encode($l10n->ngettext($single, $plural, $number));
+ return _encode($l10n->ngettext($singular, $plural, $number));
}
/**
@@ -304,9 +304,9 @@
/**
* Plural version of dgettext.
*/
-function _dngettext($domain, $single, $plural, $number) {
+function _dngettext($domain, $singular, $plural, $number) {
$l10n = _get_reader($domain);
- return _encode($l10n->ngettext($single, $plural, $number));
+ return _encode($l10n->ngettext($singular, $plural, $number));
}
/**
@@ -319,9 +319,9 @@
/**
* Plural version of dcgettext.
*/
-function _dcngettext($domain, $single, $plural, $number, $category) {
+function _dcngettext($domain, $singular, $plural, $number, $category) {
$l10n = _get_reader($domain, $category);
- return _encode($l10n->ngettext($single, $plural, $number));
+ return _encode($l10n->ngettext($singular, $plural, $number));
}
/**
@@ -405,29 +405,29 @@
if (_check_locale_and_function()) return _($msgid);
return __($msgid);
}
-function T_ngettext($single, $plural, $number) {
+function T_ngettext($singular, $plural, $number) {
if (_check_locale_and_function())
- return ngettext($single, $plural, $number);
- else return _ngettext($single, $plural, $number);
+ return ngettext($singular, $plural, $number);
+ else return _ngettext($singular, $plural, $number);
}
function T_dgettext($domain, $msgid) {
if (_check_locale_and_function()) return dgettext($domain, $msgid);
else return _dgettext($domain, $msgid);
}
-function T_dngettext($domain, $single, $plural, $number) {
+function T_dngettext($domain, $singular, $plural, $number) {
if (_check_locale_and_function())
- return dngettext($domain, $single, $plural, $number);
- else return _dngettext($domain, $single, $plural, $number);
+ return dngettext($domain, $singular, $plural, $number);
+ else return _dngettext($domain, $singular, $plural, $number);
}
function T_dcgettext($domain, $msgid, $category) {
if (_check_locale_and_function())
return dcgettext($domain, $msgid, $category);
else return _dcgettext($domain, $msgid, $category);
}
-function T_dcngettext($domain, $single, $plural, $number, $category) {
+function T_dcngettext($domain, $singular, $plural, $number, $category) {
if (_check_locale_and_function())
- return dcngettext($domain, $single, $plural, $number, $category);
- else return _dcngettext($domain, $single, $plural, $number, $category);
+ return dcngettext($domain, $singular, $plural, $number, $category);
+ else return _dcngettext($domain, $singular, $plural, $number, $category);
}
function T_pgettext($context, $msgid) {
@@ -451,26 +451,27 @@
return _dcpgettext($domain, $context, $msgid, $category);
}
-function T_npgettext($context, $singular, $plural) {
+function T_npgettext($context, $singular, $plural, $number) {
if (_check_locale_and_function('npgettext'))
- return npgettext($context, $single, $plural, $number);
+ return npgettext($context, $singular, $plural, $number);
else
- return _npgettext($context, $single, $plural, $number);
+ return _npgettext($context, $singular, $plural, $number);
}
-function T_dnpgettext($domain, $context, $singular, $plural) {
+function T_dnpgettext($domain, $context, $singular, $plural, $number) {
if (_check_locale_and_function('dnpgettext'))
- return dnpgettext($domain, $context, $single, $plural, $number);
+ return dnpgettext($domain, $context, $singular, $plural, $number);
else
- return _dnpgettext($domain, $context, $single, $plural, $number);
+ return _dnpgettext($domain, $context, $singular, $plural, $number);
}
-function T_dcnpgettext($domain, $context, $singular, $plural, $category) {
+function T_dcnpgettext($domain, $context, $singular, $plural,
+ $number, $category) {
if (_check_locale_and_function('dcnpgettext'))
- return dcnpgettext($domain, $context, $single,
+ return dcnpgettext($domain, $context, $singular,
$plural, $number, $category);
else
- return _dcnpgettext($domain, $context, $single,
+ return _dcnpgettext($domain, $context, $singular,
$plural, $number, $category);
}
@@ -494,39 +495,39 @@
function _($msgid) {
return __($msgid);
}
- function ngettext($single, $plural, $number) {
- return _ngettext($single, $plural, $number);
+ function ngettext($singular, $plural, $number) {
+ return _ngettext($singular, $plural, $number);
}
function dgettext($domain, $msgid) {
return _dgettext($domain, $msgid);
}
- function dngettext($domain, $single, $plural, $number) {
- return _dngettext($domain, $single, $plural, $number);
+ function dngettext($domain, $singular, $plural, $number) {
+ return _dngettext($domain, $singular, $plural, $number);
}
function dcgettext($domain, $msgid, $category) {
return _dcgettext($domain, $msgid, $category);
}
- function dcngettext($domain, $single, $plural, $number, $category) {
- return _dcngettext($domain, $single, $plural, $number, $category);
+ function dcngettext($domain, $singular, $plural, $number, $category) {
+ return _dcngettext($domain, $singular, $plural, $number, $category);
}
function pgettext($context, $msgid) {
return _pgettext($context, $msgid);
}
- function npgettext($context, $single, $plural, $number) {
- return _npgettext($context, $single, $plural, $number);
+ function npgettext($context, $singular, $plural, $number) {
+ return _npgettext($context, $singular, $plural, $number);
}
function dpgettext($domain, $context, $msgid) {
return _dpgettext($domain, $context, $msgid);
}
- function dnpgettext($domain, $context, $single, $plural, $number) {
- return _dnpgettext($domain, $context, $single, $plural, $number);
+ function dnpgettext($domain, $context, $singular, $plural, $number) {
+ return _dnpgettext($domain, $context, $singular, $plural, $number);
}
function dcpgettext($domain, $context, $msgid, $category) {
return _dcpgettext($domain, $context, $msgid, $category);
}
- function dcnpgettext($domain, $context, $single, $plural,
+ function dcnpgettext($domain, $context, $singular, $plural,
$number, $category) {
- return _dcnpgettext($domain, $context, $single, $plural,
+ return _dcnpgettext($domain, $context, $singular, $plural,
$number, $category);
}
}
diff -Nur dl-0.18.1/htdocs/include/lib/gettext/gettext.php dl-master/htdocs/include/lib/gettext/gettext.php
--- dl-0.18.1/htdocs/include/lib/gettext/gettext.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/lib/gettext/gettext.php 2021-03-16 18:59:58.000000000 -0400
@@ -21,6 +21,8 @@
*/
+require('plurals.php');
+
/**
* Provides a simple gettext replacement that works independently from
* the system's gettext abilities.
@@ -270,41 +272,6 @@
}
/**
- * Sanitize plural form expression for use in PHP eval call.
- *
- * @access private
- * @return string sanitized plural form expression
- */
- function sanitize_plural_expression($expr) {
- // Get rid of disallowed characters.
- $expr = preg_replace('@[^a-zA-Z0-9_:;\(\)\?\|\&=!<>+*/\%-]@', '', $expr);
-
- // Add parenthesis for tertiary '?' operator.
- $expr .= ';';
- $res = '';
- $p = 0;
- for ($i = 0; $i < strlen($expr); $i++) {
- $ch = $expr[$i];
- switch ($ch) {
- case '?':
- $res .= ' ? (';
- $p++;
- break;
- case ':':
- $res .= ') : (';
- break;
- case ';':
- $res .= str_repeat( ')', $p) . ';';
- $p = 0;
- break;
- default:
- $res .= $ch;
- }
- }
- return $res;
- }
-
- /**
* Parse full PO header and extract only plural forms line.
*
* @access private
@@ -330,14 +297,14 @@
$this->load_tables();
// cache header field for plural forms
- if (! is_string($this->pluralheader)) {
+ if ($this->pluralheader === NULL) {
if ($this->enable_cache) {
$header = $this->cache_translations[""];
} else {
$header = $this->get_translation_string(0);
}
$expr = $this->extract_plural_forms_header_from_po_header($header);
- $this->pluralheader = $this->sanitize_plural_expression($expr);
+ $this->pluralheader = new PluralHeader($expr);
}
return $this->pluralheader;
}
@@ -350,16 +317,16 @@
* @return int array index of the right plural form
*/
function select_string($n) {
- $string = $this->get_plural_forms();
- $string = str_replace('nplurals',"\$total",$string);
- $string = str_replace("n",$n,$string);
- $string = str_replace('plural',"\$plural",$string);
+ if (!is_int($n)) {
+ throw new InvalidArgumentException(
+ "Select_string only accepts integers: " . $n);
+ }
+ $plural_header = $this->get_plural_forms();
+ $plural = $plural_header->expression->evaluate($n);
- $total = 0;
- $plural = 0;
+ if ($plural < 0) $plural = 0;
+ if ($plural >= $plural_header->total) $plural = $plural_header->total - 1;
- eval("$string");
- if ($plural >= $total) $plural = $total - 1;
return $plural;
}
@@ -409,12 +376,23 @@
function pgettext($context, $msgid) {
$key = $context . chr(4) . $msgid;
- return $this->translate($key);
+ $ret = $this->translate($key);
+ if (strpos($ret, "\004") !== FALSE) {
+ return $msgid;
+ } else {
+ return $ret;
+ }
}
function npgettext($context, $singular, $plural, $number) {
- $singular = $context . chr(4) . $singular;
- return $this->ngettext($singular, $plural, $number);
+ $key = $context . chr(4) . $singular;
+ $ret = $this->ngettext($key, $plural, $number);
+ if (strpos($ret, "\004") !== FALSE) {
+ return $singular;
+ } else {
+ return $ret;
+ }
+
}
}
diff -Nur dl-0.18.1/htdocs/include/lib/gettext/plurals.php dl-master/htdocs/include/lib/gettext/plurals.php
--- dl-0.18.1/htdocs/include/lib/gettext/plurals.php 1969-12-31 19:00:00.000000000 -0500
+++ dl-master/htdocs/include/lib/gettext/plurals.php 2021-03-16 18:59:58.000000000 -0400
@@ -0,0 +1,461 @@
+<?php
+/*
+ Copyright (c) 2020 Sunil Mohan Adapa <sunil at medhas dot org>
+
+ Drop in replacement for native gettext.
+
+ This file is part of PHP-gettext.
+
+ PHP-gettext is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ PHP-gettext is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with PHP-gettext; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+
+/**
+ * Lexical analyzer for gettext plurals expression. Takes a string to parse
+ * during construction and returns a single token every time peek() or
+ * fetch_token() are called. The special string '__END__' is returned if there
+ * are no more tokens to be read. Spaces are ignored during tokenization.
+ */
+class PluralsLexer {
+ private $string;
+ private $position;
+
+ /**
+ * Constructor
+ *
+ * @param string string Contains the value gettext plurals expression to
+ * analyze.
+ */
+ public function __construct(string $string) {
+ $this->string = $string;
+ $this->position = 0;
+ }
+
+ /**
+ * Return the next token and the length to advance the read position without
+ * actually advancing the read position. Tokens for operators and variables
+ * are simple strings containing the operator or variable. If there are no
+ * more token to provide, the special value ['__END__', 0] is returned. If
+ * there was an unexpected input an Exception is raised.
+ *
+ * @access private
+ * @throws Exception If there is unexpected input in the provided string.
+ * @return array The next token and length to advance the current position.
+ */
+ private function _tokenize() {
+ $buf = $this->string;
+
+ // Consume all spaces until the next token
+ $index = $this->position;
+ while ($index < strlen($buf) && $buf[$index] == ' ') {
+ $index++;
+ }
+ $this->position = $index;
+
+ // Return special token if next of the string is reached.
+ if (strlen($buf) - $index == 0) {
+ return ['__END__', 0];
+ }
+
+ // Operators with two characters
+ $doubles = ['==', '!=', '>=', '<=', '&&', '||'];
+ $next = substr($buf, $index, 2);
+ if (in_array($next, $doubles)) {
+ return [$next, 2];
+ }
+
+ // Operators with single character or variable 'n'.
+ $singles = [
+ 'n', '(', ')', '?', ':', '+', '-', '*', '/', '%', '!', '>', '<'];
+ if (in_array($buf[$index], $singles)) {
+ return [$buf[$index], 1];
+ }
+
+ // Whole number constants, return an integer.
+ $digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
+ $pos = $index;
+ while ($pos < strlen($buf) && in_array($buf[$pos], $digits)) {
+ $pos++;
+ }
+ if ($pos != $index) {
+ $length = $pos - $index;
+ return [(int)substr($buf, $index, $length), $length];
+ }
+
+ // Throw and exception for all other unexpected input in the string.
+ throw new Exception('Lexical analysis failed');
+ }
+
+ /**
+ * Return the next token without actually advancing the read position.
+ * Tokens for operators and variables are simple strings containing the
+ * operator or variable. If there are no more tokens to provide, the special
+ * value '__END__' is returned. If there was an unexpected input an
+ * Exception is raised.
+ *
+ * @throws Exception If there is unexpected input in the provided string.
+ * @return string The next token.
+ */
+ public function peek() {
+ list($token, $length) = $this->_tokenize();
+ return $token;
+ }
+
+ /**
+ * Return the next token after advancing the read position. Tokens for
+ * operators and variables are simple strings containing the operator or
+ * variable. If there are no more token to provide, the special value
+ * '__END__' is returned. If there was an unexpected input an Exception is
+ * raised.
+ *
+ * @throws Exception If there is unexpected input in the provided string.
+ * @return string The next token.
+ */
+ public function fetch_token() {
+ list($token, $length) = $this->_tokenize();
+ $this->position += $length;
+ return $token;
+ }
+}
+
+/**
+ * A parsed representation of the gettext plural expression. This is a tree
+ * containing further expressions depending on how nested the given input is.
+ * Calling the evaluate() function computes the value of the expression if the
+ * variable 'n' is set a certain value. This is used to decide which plural
+ * string translation to use based on the number items at hand.
+ */
+class PluralsExpression {
+ private $operator;
+ private $operands;
+
+ const BINARY_OPERATORS = [
+ '==', '!=', '>=', '<=', '&&', '||', '+', '-', '*', '/', '%', '>', '<'];
+ const UNARY_OPERATORS = ['!'];
+
+ /**
+ * Constructor
+ *
+ * @param string Operator for the expression.
+ * @param (int|string|PuralsExpression)[] Variable number of operands of the
+ * expression. One int operand is expected in case the operator is 'const'.
+ * One string operand with value 'n' is expected in case the operator is
+ * 'var'. For all other operators, the operands much be objects of type
+ * PluralExpression. Unary operators expect one operand, binary operators
+ * expect two operands and trinary operators expect three operands.
+ */
+ public function __construct($operator, ...$operands) {
+ $this->operator = $operator;
+ $this->operands = $operands;
+ }
+
+ /**
+ * Return a parenthesized string representation of the expression for
+ * debugging purposes.
+ *
+ * @return string A string representation of the expression.
+ */
+ public function to_string() {
+ if ($this->operator == 'const' || $this->operator == 'var') {
+ return $this->operands[0];
+ } elseif (in_array($this->operator, self::BINARY_OPERATORS)) {
+ return sprintf(
+ "(%s %s %s)", $this->operands[0]->to_string(), $this->operator,
+ $this->operands[1]->to_string());
+ } elseif (in_array($this->operator, self::UNARY_OPERATORS)) {
+ return sprintf(
+ "(%s %s)", $this->operator, $this->operands[0]->to_string());
+ } elseif ($this->operator == '?') {
+ return sprintf(
+ "(%s ? %s : %s)", $this->operands[0]->to_string(),
+ $this->operands[1]->to_string(),
+ $this->operands[2]->to_string());
+ }
+ }
+
+ /**
+ * Return the computed value of the expression if the variable 'n' is set to
+ * a certain value.
+ *
+ * @param int The value of the variable n to use when evaluating.
+ * @throws Exception If the expression has been constructed incorrectly.
+ * @return int The value of the expression after evaluation.
+ */
+ public function evaluate($n) {
+ if (!in_array($this->operator, ['const', 'var'])) {
+ $operand1 = $this->operands[0]->evaluate($n);
+ }
+ if (in_array($this->operator, self::BINARY_OPERATORS) ||
+ $this->operator == '?') {
+ $operand2 = $this->operands[1]->evaluate($n);
+ }
+ if ($this->operator == '?') {
+ $operand3 = $this->operands[2]->evaluate($n);
+ }
+
+ switch ($this->operator) {
+ case 'const':
+ return $this->operands[0];
+ case 'var':
+ return $n;
+ case '!':
+ return !($operand1);
+ case '==':
+ return $operand1 == $operand2;
+ case '!=':
+ return $operand1 != $operand2;
+ case '>=':
+ return $operand1 >= $operand2;
+ case '<=':
+ return $operand1 <= $operand2;
+ case '>':
+ return $operand1 > $operand2;
+ case '<':
+ return $operand1 < $operand2;
+ case '&&':
+ return $operand1 && $operand2;
+ case '||':
+ return $operand1 || $operand2;
+ case '+':
+ return $operand1 + $operand2;
+ case '-':
+ return $operand1 - $operand2;
+ case '*':
+ return $operand1 * $operand2;
+ case '/':
+ return (int)($operand1 / $operand2);
+ case '%':
+ return $operand1 % $operand2;
+ case '?':
+ return $operand1 ? $operand2 : $operand3;
+ default:
+ throw new Exception('Invalid expression');
+ }
+ }
+}
+
+/**
+ * A simple operator-precedence parser for gettext plural expressions. Takes a
+ * string during construction and returns a PluralsExpression tree when
+ * parse() is called.
+ */
+class PluralsParser {
+ private $lexer;
+
+ /*
+ * Operator precedence. The parsing only happens with minimum precedence of
+ * 0. However, ':' and ')' exist here to make sure that parsing does not
+ * proceed beyond them when they are not to be parsed.
+ */
+ private const PREC = [
+ ':' => -1, '?' => 0, '||' => 1, '&&' => 2, '==' => 3, '!=' => 3,
+ '>' => 4, '<' => 4, '>=' => 4, '<=' => 4, '+' => 5, '-' => 5, '*' => 6,
+ '/' => 6, '%' => 6, '!' => 7, '__END__' => -1, ')' => -1
+ ];
+
+ // List of right associative operators
+ private const RIGHT_ASSOC = ['?'];
+
+ /**
+ * Constructor
+ *
+ * @param string string the plural expression to be parsed.
+ */
+ public function __construct(string $string) {
+ $this->lexer = new PluralsLexer($string);
+ }
+
+ /**
+ * Expect a primary next for parsing and return a PluralsExpression or throw
+ * and exception otherwise. A primary can be the variable 'n', an whole
+ * number constant, a unary operator expression string with '!', or a
+ * parenthesis expression.
+ *
+ * @throws Exception If the next token is not a primary or if parenthesis
+ * expression is not closes properly with ')'.
+ * @return PluralsExpression That is constructed from the parsed primary.
+ */
+ private function _parse_primary() {
+ $token = $this->lexer->fetch_token();
+ if ($token === 'n') {
+ return new PluralsExpression('var', 'n');
+ } elseif (is_int($token)) {
+ return new PluralsExpression('const', (int)$token);
+ } elseif ($token === '!') {
+ return new PluralsExpression('!', $this->_parse_primary());
+ } elseif ($token === '(') {
+ $result = $this->_parse($this->_parse_primary(), 0);
+ if ($this->lexer->fetch_token() != ')') {
+ throw new Exception('Mismatched parenthesis');
+ }
+ return $result;
+ }
+
+ throw new Exception('Primary expected');
+ }
+
+ /**
+ * Fetch an operator from the lexical analyzer and test for it. Optionally
+ * advance the position of the lexical analyzer to next token. Raise
+ * exception if the token retrieved is not an operator.
+ *
+ * @access private
+ * @param bool peek A flag to indicate whether the position of the lexical
+ * analyzer should *not* be advanced. If false, the lexical analyzer is
+ * advanced by one token.
+ * @throws Exception If the token read is not an operator.
+ * @return string The operator that has been fetched from the lexical
+ * analyzer.
+ */
+ private function _parse_operator($peek) {
+ if ($peek) {
+ $token = $this->lexer->peek();
+ } else {
+ $token = $this->lexer->fetch_token();
+ }
+
+ if ($token !== NULL && !array_key_exists($token, self::PREC)) {
+ throw new Exception('Operator expected');
+ }
+ return $token;
+ }
+
+ /**
+ * A parsing method suitable for recursion.
+ *
+ * @access private
+ * @param ParserExpression left_side A pre-parsed left-hand side expression
+ * of the file expression to be constructed. This helps with recursion.
+ * @param int min_precedence The minimum value of precedence for the
+ * operators to be considered for parsing. Parsing will stop and current
+ * expression is returned if an operator of a lower precedence is
+ * encountered.
+ * @throws Exception If the input string does not conform to the grammar of
+ * the gettext plural expression.
+ * @return ParserExpression A complete expression after parsing.
+ */
+ private function _parse($left_side, $min_precedence) {
+ $next_token = $this->_parse_operator(true);
+
+ while (self::PREC[$next_token] >= $min_precedence) {
+ $operator = $this->_parse_operator(false);
+ $right_side = $this->_parse_primary();
+
+ $next_token = $this->_parse_operator(true);
+
+ /*
+ * Consume (recursively) into right hand side all expressions of higher
+ * precedence.
+ */
+ while ((self::PREC[$operator] < self::PREC[$next_token]) ||
+ ((self::PREC[$operator] == self::PREC[$next_token]) &&
+ in_array($operator, self::RIGHT_ASSOC))) {
+ $right_side = $this->_parse(
+ $right_side, self::PREC[$next_token]);
+ $next_token = $this->_parse_operator(true);
+ }
+
+ if ($operator != '?') {
+ /*
+ * Handling for all binary operators. Consume into left hand side all
+ * expressions of equal precedence.
+ */
+ $left_side = new PluralsExpression($operator, $left_side, $right_side);
+ } else {
+ // Special handling for (a ? b : c) expression
+ $operator = $this->lexer->fetch_token();
+ if ($operator != ':') {
+ throw new Exception('Invalid ? expression');
+ }
+
+ $right_side2 = $this->_parse(
+ $this->_parse_primary(), self::PREC[$operator] + 1);
+ $next_token = $this->_parse_operator(true);
+ $left_side = new PluralsExpression(
+ '?', $left_side, $right_side, $right_side2);
+ }
+ }
+ return $left_side;
+ }
+
+ /**
+ * A simple implementation of an operator-precedence parser. See:
+ * https://en.wikipedia.org/wiki/Operator-precedence_parser for an analysis
+ * of the algorithm.
+ *
+ * @throws Exception If the input string does not conform to the grammar of
+ * the gettext plural expression.
+ * @return ParserExpression A complete expression after parsing.
+ */
+ public function parse() {
+ $expression = $this->_parse($this->_parse_primary(), 0);
+ // Special handling for an extra ')' at the end.
+ if ($this->lexer->peek() != '__END__') {
+ throw new Exception('Could not parse completely');
+ }
+ return $expression;
+ }
+}
+
+/**
+ * Provides a class to parse the value of the 'Plural-Forms:' header in the
+ * gettext translation files. Holds the expression tree and the number of
+ * plurals after parsing. Parsing happens during construction which takes as
+ * its only argument the string to parse. Error during parsing are silently
+ * suppressed and the fallback behavior is used with the value for Germanic
+ * languages as follows: "nplurals=2; plural=n == 1 ? 0 : 1;".
+ */
+class PluralHeader {
+ public $total;
+ public $expression;
+
+ /**
+ * Constructor
+ *
+ * @param string The value of the Plural-Forms: header as seen in .po files.
+ */
+ function __construct($string) {
+ try {
+ list($total, $expression) = $this->parse($string);
+ } catch (Exception $e) {
+ $string = "nplurals=2; plural=n == 1 ? 0 : 1;";
+ list($total, $expression) = $this->parse($string);
+ }
+ $this->total = $total;
+ $this->expression = $expression;
+ }
+
+ /**
+ * Return the number of plural forms and the parsed expression tree.
+ *
+ * @access private
+ * @param string string The value of the Plural-Forms: header.
+ * @throws Exception If the string could not be parsed.
+ * @return array The number of plural forms and parsed expression tree.
+ */
+ private function parse($string) {
+ $regex = "/^\s*nplurals\s*=\s*(\d+)\s*;\s*plural\s*=([^;]+);/i";
+ if (preg_match($regex, $string, $matches)) {
+ $total = (int)$matches[1];
+ $expression_string = $matches[2];
+ } else {
+ throw new Exception('Invalid header value');
+ }
+
+ $parser = new PluralsParser($expression_string);
+ $expression = $parser->parse();
+ return [$total, $expression];
+ }
+}
Les fichiers binaires dl-0.18.1/htdocs/include/locale/cs_CZ/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/cs_CZ/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/de_DE/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/de_DE/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/es_ES/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/es_ES/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/fr_FR/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/fr_FR/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/it_IT/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/it_IT/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/ja_JP/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/ja_JP/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/nl_NL/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/nl_NL/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/pt_BR/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/pt_BR/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/ru_RU/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/ru_RU/LC_MESSAGES/messages.mo sont différents
Les fichiers binaires dl-0.18.1/htdocs/include/locale/zh_CN/LC_MESSAGES/messages.mo et dl-master/htdocs/include/locale/zh_CN/LC_MESSAGES/messages.mo sont différents
diff -Nur dl-0.18.1/htdocs/include/msg.php dl-master/htdocs/include/msg.php
--- dl-0.18.1/htdocs/include/msg.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/msg.php 2021-03-16 18:59:58.000000000 -0400
@@ -5,6 +5,7 @@
{
global $emailSubjectPrefix;
$subject = $emailSubjectPrefix . sprintf(T_("download link to %s"), $DATA['name']);
+ $body = "";
if(!empty($DATA['cmt']))
$body .= T_("Ticket comment:") . " " . $DATA['cmt'] . ".\n\n";
$body .= T_("URL:") . " " . ticketUrl($DATA) . "\n";
@@ -44,6 +45,7 @@
{
global $emailSubjectPrefix;
$subject = $emailSubjectPrefix . T_("upload grant link");
+ $body = "";
if(!empty($DATA['cmt']))
$body .= T_("Grant comment:") . " " . $DATA['cmt'] . ".\n\n";
$body .= T_("URL:") . " " . grantUrl($DATA) . "\n";
@@ -73,7 +75,7 @@
global $dateFmtShort, $emailSubjectPrefix;
$subject = $emailSubjectPrefix . sprintf(T_("download link for grant %s"), grantStr($GRANT));
$body = sprintf(T_("Your grant %s has been used on %s by %s."),
- grantStr($GRANT), date($dateFmtShort, $GRANT["time"]),
+ grantStr($GRANT), date($dateFmtShort, $GRANT["last_stamp"]),
$_SERVER["REMOTE_ADDR"]) . "\n";
if(!empty($GRANT['cmt']))
$body .= T_("Grant comment:") . " " . $GRANT['cmt'] . ".\n\n";
diff -Nur dl-0.18.1/htdocs/include/newgrantr.php dl-master/htdocs/include/newgrantr.php
--- dl-0.18.1/htdocs/include/newgrantr.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/newgrantr.php 2021-03-16 18:59:58.000000000 -0400
@@ -12,13 +12,14 @@
<div>
<label class="description">
<?php printf(T_("Your grant %s"), htmlEntUTF8(grantStr($DATA))); ?>
- </label>
- <p><span class="ticketid"><?php echo htmlentities($url); ?></span></p>
-<?php
+ </label><p><a class="ticketid" href="<?php echo $url; ?>">
+ <?php echo htmlentities($url); ?>
+ </a></p>
+ <?php
if($DATA['pass'])
{
echo "<p>" . T_("The required password is:") . " <tt>"
- . htmlEntUTF8($DATA['pass']) . "</tt></p>";
+ . htmlEntUTF8($DATA['pass']) . "</tt></p>";
}
if($DATA['sent_email'])
@@ -27,18 +28,18 @@
$addrs = getEMailAddrs($DATA['sent_email']);
foreach($addrs as &$addr)
{
- $addr = '<a href="mailto:' . urlencode($addr) . '">'
- . htmlentities($addr) . '</a>';
+ $addr = '<a href="mailto:' . rawurlencode($addr) . '">'
+ . htmlentities($addr) . '</a>';
}
echo join(', ', $addrs);
echo '</p>';
}
-?>
+ ?>
</div>
<span class="buttons">
+ <input type="button" onclick="copyToClipboard('<?php echo htmlentities($url); ?>');" value="<?php echo T_("Copy to clipboard"); ?>"/>
<input type="button" onclick="document.location='<?php echo htmlentities($mailto); ?>';" value="<?php echo T_("Send via e-mail"); ?>"/>
- <input type="button" onclick="document.location='<?php echo htmlentities($url); ?>';" value="<?php echo T_("Upload"); ?>"/>
</span>
<?php
diff -Nur dl-0.18.1/htdocs/include/newticketr.php dl-master/htdocs/include/newticketr.php
--- dl-0.18.1/htdocs/include/newticketr.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/newticketr.php 2021-03-16 18:59:58.000000000 -0400
@@ -12,13 +12,14 @@
<div>
<label class="description">
<?php printf(T_("Your ticket %s"), htmlEntUTF8(ticketStr($DATA))); ?>
- </label>
- <p><span class="ticketid"><?php echo htmlentities($url); ?></span></p>
-<?php
+ </label><p><a class="ticketid" href="<?php echo $url; ?>">
+ <?php echo htmlentities($url); ?>
+ </a></p>
+ <?php
if($DATA['pass'])
{
echo "<p>" . T_("The required password is:") . " <tt>"
- . htmlEntUTF8($DATA['pass']) . "</tt></p>";
+ . htmlEntUTF8($DATA['pass']) . "</tt></p>";
}
if($DATA['sent_email'])
@@ -27,18 +28,18 @@
$addrs = getEMailAddrs($DATA['sent_email']);
foreach($addrs as &$addr)
{
- $addr = '<a href="mailto:' . urlencode($addr) . '">'
- . htmlentities($addr) . '</a>';
+ $addr = '<a href="mailto:' . rawurlencode($addr) . '">'
+ . htmlentities($addr) . '</a>';
}
echo join(', ', $addrs);
echo '</p>';
}
-?>
+ ?>
</div>
<span class="buttons">
+ <input type="button" onclick="copyToClipboard('<?php echo htmlentities($url); ?>');" value="<?php echo T_("Copy to clipboard"); ?>"/>
<input type="button" onclick="document.location='<?php echo htmlentities($mailto); ?>';" value="<?php echo T_("Send via e-mail"); ?>"/>
- <input type="button" onclick="document.location='<?php echo htmlentities($url); ?>';" value="<?php echo T_("Download"); ?>"/>
</span>
<?php
diff -Nur dl-0.18.1/htdocs/include/scripts/db/mysql.sql dl-master/htdocs/include/scripts/db/mysql.sql
--- dl-0.18.1/htdocs/include/scripts/db/mysql.sql 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/scripts/db/mysql.sql 2021-03-16 18:59:58.000000000 -0400
@@ -1,4 +1,4 @@
-SET SQL_MODE=ANSI_QUOTES;
+SET SQL_MODE = ANSI;
CREATE TABLE config (name VARCHAR(255) PRIMARY KEY, value VARCHAR(255));
INSERT INTO config (name, value) VALUES('version','0.18');
CREATE TABLE role (id INTEGER PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) UNIQUE NOT NULL, admin BOOLEAN NOT NULL, parent_role_id INTEGER REFERENCES role (id));
diff -Nur dl-0.18.1/htdocs/include/users.php dl-master/htdocs/include/users.php
--- dl-0.18.1/htdocs/include/users.php 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/include/users.php 2021-03-16 18:59:58.000000000 -0400
@@ -124,7 +124,7 @@
echo "<td>" . htmlEntUTF8($DATA['name']) . "</td>";
echo "<td><input type=\"hidden\" name=\"user[]\" value=\""
. htmlEntUTF8($DATA['name']) . "\"/><input class=\"element text\""
- . " type=\"text\" name=\"pass[]\"></td>";
+ . " type=\"password\" name=\"pass[]\"></td>";
// role
echo '<td data-sort-value="' . $DATA['admin'] . '">'
diff -Nur dl-0.18.1/htdocs/static/dl.js dl-master/htdocs/static/dl.js
--- dl-0.18.1/htdocs/static/dl.js 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/static/dl.js 2021-03-16 18:59:58.000000000 -0400
@@ -117,6 +117,28 @@
}
+// clipboard related
+function copyToClipboard(str)
+{
+ if('queryCommandSupported' in document && document.queryCommandSupported("copy"))
+ {
+ // the "proper" way
+ var el = document.createElement('textarea');
+ el.value = str;
+ document.body.appendChild(el);
+ el.focus();
+ el.setSelectionRange(0, str.length);
+ document.execCommand('copy');
+ document.body.removeChild(el);
+ }
+ else if("clipboardData" in window)
+ {
+ // the way it *should* be
+ window.clipboardData.setData('Text', str);
+ }
+}
+
+
// UI/form
function toggleAdvanced(set)
{
@@ -238,6 +260,7 @@
// replace current document with response
document.documentElement.innerHTML = ev.target.response;
+ window.scrollTo(0, 0);
$.cache = {};
}
diff -Nur dl-0.18.1/htdocs/static/guide/de_DE/index.html dl-master/htdocs/static/guide/de_DE/index.html
--- dl-0.18.1/htdocs/static/guide/de_DE/index.html 2017-09-06 12:09:36.000000000 -0400
+++ dl-master/htdocs/static/guide/de_DE/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,467 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de_DE" lang="de_DE">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>Download ticket service</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="download-ticket-service">
-<h1 class="title">Download ticket service</h1>
-
-<div class="contents topic" id="inhalt">
-<p class="topic-title first">Inhalt</p>
-<ul class="simple">
-<li><a class="reference internal" href="#kurze-schritt-fur-schritt-anleitung-zum-senden-von-anhangen" id="id1">Kurze Schritt-für-Schritt Anleitung zum Senden von Anhängen</a></li>
-<li><a class="reference internal" href="#kurze-schritt-fur-schritt-anleitung-zum-empfangen-von-anhangen" id="id2">Kurze Schritt-für-Schritt Anleitung zum Empfangen von Anhängen</a></li>
-<li><a class="reference internal" href="#erweiterte-einstellungen" id="id3">Erweiterte Einstellungen</a></li>
-</ul>
-</div>
-<div class="section" id="kurze-schritt-fur-schritt-anleitung-zum-senden-von-anhangen">
-<h1><a class="toc-backref" href="#id1">Kurze Schritt-für-Schritt Anleitung zum Senden von Anhängen</a></h1>
-<p>Rufen Sie die Webseite <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> auf und melden Sie sich mit
-Ihrem Benutzernamen und Passwort an. Nach der Anmeldung erscheint die folgende
-Seite:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>Klicken Sie, wie in der Abbildung gezeigt, auf &quot;Durchsuchen&quot; und wählen Sie
-die zu sendende Datei aus.</li>
-<li>Klicken Sie auf &quot;Senden&quot; und warten Sie, bis die Datei hochgeladen wurde,
-siehe folgende Abbildung.</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>Klicken Sie auf &quot;Per E-Mail verschicken&quot;, um den Link zur gerade
-hochgeladenen Datei einem beliebigen Empfänger über Ihr E-Mail Programm zu
-schicken.</li>
-</ol>
-<p>Bei Verwendung der Standardeinstellungen hat der Empfänger eine Woche Zeit, um
-die Datei herunterzuladen, bevor diese automatisch gelöscht wird. Diese Frist
-kann jedoch geändert werden indem Sie die entsprechenden Parameter vor dem
-hochladen anpassen.</p>
-<p>Durch einen Klick auf &quot;Aktive Tickets&quot; am unteren Ende der Seite, kann die
-Liste der hochgeladenen Dateien eingesehen und einzelne Tickets verwaltet
-werden.</p>
-</div>
-<div class="section" id="kurze-schritt-fur-schritt-anleitung-zum-empfangen-von-anhangen">
-<h1><a class="toc-backref" href="#id2">Kurze Schritt-für-Schritt Anleitung zum Empfangen von Anhängen</a></h1>
-<p>Rufen Sie die Webseite <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> auf und melden Sie sich mit
-Ihrem Benutzernamen und Passwort an. Nach der Anmeldung erscheint die folgende
-Seite:</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>Klicken Sie auf &quot;Neue Upload-Erlaubnis&quot; am unteren Ende der Seite</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li>Geben Sie Ihre E-Mailadresse an.</li>
-<li>Klicken Sie auf &quot;Erstellen&quot; um die Erlaubnis zu erstellen.</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>Klicken Sie auf &quot;Per E-Mail verschicken&quot;, um die Upload-Erlaubnis an einen
-beliebigen Empfänger zu schicken.</li>
-</ol>
-<p>Der Empfänger braucht nach Erhalt der Upload-Erlaubnis den darin enthaltenen
-Link lediglich in einem Browser aufzurufen und die Anweisungen am Bildschirm zu
-befolgen. Sobald der Empfänger die Datei hochgeladen hat, wird Ihnen eine
-Bestätigungs-E-Mail mit einem Link zur hochgeladenen Datei zugeschickt.</p>
-</div>
-<div class="section" id="erweiterte-einstellungen">
-<h1><a class="toc-backref" href="#id3">Erweiterte Einstellungen</a></h1>
-<p>Vor dem Versand einer Datei ist es möglich die Verfallsfristen unter dem Abschnitt &quot;Weitere Optionen&quot; anzupassen.</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<p>Wenn Sie möchten, dass die Datei nicht automatisch gelöscht wird, aktivieren
-Sie die Option &quot;Ticket ohne Verfallsfrist &quot;, die Sie unter &quot;Weitere Optionen&quot;
-finden. Die Datei wird dann solange zur Verfügung stehen, bis sie manuell
-gelöscht wird.</p>
-<p>Wenn Sie für jeden einzelnen Download einer Datei eine Meldung erhalten
-möchten, geben Sie Ihre E-Mail-Adresse im Feld &quot;Bei Download folgende
-E-Mailadresse benachrichtigen&quot; ein. Sie finden das Feld unter &quot;Weitere
-Optionen&quot;.</p>
-<p>Frist in # Tagen:</p>
-<blockquote>
-Hier können Sie die maximale Anzahl von Tagen angeben, welche die gesendete
-Datei auf dem Server erhalten bleibt. Nach Ablauf dieser Frist wird die Datei
-automatisch gelöscht, unabhängig davon ob sie heruntergeladen wurde oder
-nicht.</blockquote>
-<p>Frist in # Stunden, nach dem letzten Download:</p>
-<blockquote>
-<p>Hier können Sie die maximale Anzahl von Stunden angeben, für welche die Datei
-nach dem letzten Download noch auf dem Server verbleiben soll. Jeder weiterer
-Download legt die Verfallsfrist um die angegebene Stundenanzahl erneut fest.
-Ist die Frist abgelaufen, wird die Datei automatisch gelöscht.</p>
-<p>Diese Frist-Angabe ermöglicht Ihnen bei Verwendung von großen Zeiträumen
-(Tage/Wochen) häufig verwendete Tickets für einen unbestimmten Zeitraum aktiv
-zu erhalten und sie automatisch zu löschen, sobald sie nicht mehr verwendet
-werden.</p>
-<p>Wird die Frist-Angabe hingegen mit kurzen Zeiträumen verwendet (bis zu 24
-Stunden), wird das Ticket nach dem Herunterladen schnell entfernt, gibt dem
-Empfänger aber noch einen kleinen Spielraum für weitere Downloads.</p>
-</blockquote>
-<p>Frist in # Downloads:</p>
-<blockquote>
-Hier können Sie festlegen, wie oft eine Datei insgesamt vom Server
-heruntergeladen werden kann. Bei Erreichen dieser Anzahl wird die Datei
-automatisch gelöscht.</blockquote>
-<p>Wird mindestens eine der oben beschriebenen Fristen überschritten, verfällt das
-Ticket und wird somit automatisch gelöscht. Sie können eine oder mehrere
-Fristen deaktivieren, indem Sie den entsprechenden Parameter auf &quot;0&quot; setzen.</p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/static/guide/en_EN/index.html dl-master/htdocs/static/guide/en_EN/index.html
--- dl-0.18.1/htdocs/static/guide/en_EN/index.html 2017-09-06 12:09:37.000000000 -0400
+++ dl-master/htdocs/static/guide/en_EN/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,464 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en_EN" lang="en_EN">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>Download ticket service</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="download-ticket-service">
-<h1 class="title">Download ticket service</h1>
-
-<div class="contents topic" id="contents">
-<p class="topic-title first">Contents</p>
-<ul class="simple">
-<li><a class="reference internal" href="#short-step-by-step-guide-to-send-attachments" id="id1">Short Step-by-step guide to send attachments</a></li>
-<li><a class="reference internal" href="#short-step-by-step-guide-to-receive-attachments" id="id2">Short Step-by-step guide to receive attachments</a></li>
-<li><a class="reference internal" href="#advanced-upload-parameters" id="id3">Advanced upload parameters</a></li>
-</ul>
-</div>
-<div class="section" id="short-step-by-step-guide-to-send-attachments">
-<h1><a class="toc-backref" href="#id1">Short Step-by-step guide to send attachments</a></h1>
-<p>First, go to <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> and authenticate with your username and
-password.</p>
-<p>You should be presented with this page:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>Click on the button under &quot;Upload File&quot; (labelled either &quot;Browse&quot; or &quot;Choose
-File&quot;) as outlined in the picture and pick the file you need to send.</li>
-<li>Click &quot;Upload&quot;, and wait until the file is uploaded as shown:</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>Click &quot;Send via E-Mail&quot; to send an e-mail to someone, containing the link
-to the file you just uploaded.</li>
-</ol>
-<p>By default, the recipient has one week to download the file before it is
-automatically cleaned up. You can change this behavior by setting some
-parameters before uploading.</p>
-<p>You can see a list of files you have uploaded and manage them by clicking on
-the &quot;List active tickets&quot; button, at the bottom of the page.</p>
-</div>
-<div class="section" id="short-step-by-step-guide-to-receive-attachments">
-<h1><a class="toc-backref" href="#id2">Short Step-by-step guide to receive attachments</a></h1>
-<p>First, go to <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> and authenticate with your username and
-password.</p>
-<p>You should be presented with this page:</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>Click on the &quot;New grant&quot; link at the bottom of the page to start a new
-grant:</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li>Enter <em>your</em> email address.</li>
-<li>Click &quot;Create&quot; to generate an upload grant:</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>Click &quot;Send via E-Mail&quot; to send an e-mail to someone, containing the link
-that will allow him to send you any file.</li>
-</ol>
-<p>Your recipient simply needs to follow the instructions contained in the link
-itself. Once he uploads the file into the server, you will receive an email
-containing another link to the file just uploaded.</p>
-</div>
-<div class="section" id="advanced-upload-parameters">
-<h1><a class="toc-backref" href="#id3">Advanced upload parameters</a></h1>
-<p>Before uploading a file, you can customize how the download and cleanup is
-performed by setting some &quot;Advanced&quot; parameters:</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<ul class="simple">
-<li><em>If you want your file to never be deleted</em> please check the &quot;Permanent
-ticket&quot; checkbox. Your file will always be available until you manually
-remove it.</li>
-<li><em>If you want to be notified every time someone downloads the file</em> you can
-write your e-mail in the &quot;Get notified by email&quot; box. You'll receive
-notifications every time the file is successfully downloaded or removed from
-the server. This is great if you want extra confirmation that your email has
-been acted upon.</li>
-</ul>
-<p>Expire in total # of hours:</p>
-<blockquote>
-Type the maximal number of hours the uploaded file is allowed to be kept on
-the server. After this period is passed the file will be deleted from the
-server whether is was downloaded or not.</blockquote>
-<p>Expire in # of hours after last dl:</p>
-<blockquote>
-<p>Type the number of hours the uploaded file is allowed to be kept on the
-server after being downloaded. Another download will extend the lifetime of
-the ticket for the specified number of hours. After this period is passed
-without activity, the file is be deleted from the server.</p>
-<p>This feature, when used with a long period (days or weeks), allows &quot;hot&quot;
-tickets to be kept alive only until used, and be deleted automatically
-afterward.</p>
-<p>When used with a short period (24 hours or less), allows to remove the ticket
-as soon as being downloaded, allowing the recipient some margin to download
-the file more than once.</p>
-</blockquote>
-<p>Expire after # of downloads:</p>
-<blockquote>
-Type the number of times the uploaded file is allowed to be downloaded in
-total. After this amount is reached the file will be deleted from the
-server. Handy if you need to ensure the file is downloaded just once from a
-single person.</blockquote>
-<p>If at least one of these parameters expires the file will be deleted. You can
-set any parameter to &quot;0&quot; to disable the condition.</p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/static/guide/es_ES/index.html dl-master/htdocs/static/guide/es_ES/index.html
--- dl-0.18.1/htdocs/static/guide/es_ES/index.html 2017-09-06 12:09:37.000000000 -0400
+++ dl-master/htdocs/static/guide/es_ES/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,465 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es_ES" lang="es_ES">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>Download ticket service</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="download-ticket-service">
-<h1 class="title">Download ticket service</h1>
-
-<div class="contents topic" id="contenido">
-<p class="topic-title first">Contenido</p>
-<ul class="simple">
-<li><a class="reference internal" href="#breve-guia-paso-a-paso-para-subir-ficheros" id="id1">Breve guía paso a paso para subir ficheros</a></li>
-<li><a class="reference internal" href="#breve-guia-paso-a-paso-para-recibir-ficheros" id="id2">Breve guía paso a paso para recibir ficheros</a></li>
-<li><a class="reference internal" href="#parametros-avanzados-de-subida" id="id3">Parámetros Avanzados de subida</a></li>
-</ul>
-</div>
-<div class="section" id="breve-guia-paso-a-paso-para-subir-ficheros">
-<h1><a class="toc-backref" href="#id1">Breve guía paso a paso para subir ficheros</a></h1>
-<p>Primero, diríjase a <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> y autentíquese usando su usuario y
-contraseña.</p>
-<p>Esta página debería ser mostrada:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>Cliquee en el botón bajo &quot;Subir fichero&quot; (llamado &quot;Examinar&quot; or &quot;Escoja
-fichero&quot;) como se ve en la imagen y seleccione el fichero que necesita subir.</li>
-<li>Click en &quot;Subir&quot; y espere mientras el fichero es subido como aquí se muestra:</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>Click en &quot;Enviar vía e-mail&quot; para enviar un e-mail a alguien con el enlace
-al fichero que acaba de subir.</li>
-</ol>
-<p>Por defecto, el receptor tiene una semana para descargar el fichero antes de
-este sea eliminado automáticamente. Puede cambiar este comportamiento
-configurando algunos parámetros antes de la subida.</p>
-<p>Puede ver una lista de ficheros que ha subido y administrarlos cliqueando en el
-botón &quot;Listar tickets activos&quot; a pie de página.</p>
-</div>
-<div class="section" id="breve-guia-paso-a-paso-para-recibir-ficheros">
-<h1><a class="toc-backref" href="#id2">Breve guía paso a paso para recibir ficheros</a></h1>
-<p>Primero, diríjase a <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> y autentíquese usando su usuario y
-contraseña.</p>
-<p>Esta página debería ser mostrada:</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>Click en el enlace &quot;Nueva concesión&quot; al pie de página para empezar una nueva
-concesión:</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li>Introduzca <em>su</em> dirección de e-mail.</li>
-<li>Click en &quot;Crear&quot; para generar una concesión de subida:</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>Click en &quot;Enviar vía E-Mail&quot; para enviar un e-mail a alguien con el enlace
-a quién le permitirá subir un fichero para usted.</li>
-</ol>
-<p>El receptor simplemente necesitará seguir las instrucciones contenidas en el
-propio enlace. Una vez este suba un fichero al servidor, usted recibirá un
-e-mail que contendrá un enlace a el fichero que ha sido subido.</p>
-</div>
-<div class="section" id="parametros-avanzados-de-subida">
-<h1><a class="toc-backref" href="#id3">Parámetros Avanzados de subida</a></h1>
-<p>Antes de subir un fichero, puede personalizar cómo se realizará su descarga y
-su limpieza configurando algunos parámetros &quot;avanzados&quot;:</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<ul class="simple">
-<li><em>Si quiere que su fichero nunca sea eliminado</em>, por favor, marque la casilla
-&quot;Ticket permanente&quot;. Su fichero estará disponible hasta que usted lo elimine
-manualmente.</li>
-<li><em>Si quiere ser notificado cada vez que alguien descargue el fichero</em> puede
-escribir una dirección de e-mail en el campo &quot;Notificar vía e-mail&quot;. Recibirá
-notificaciones cada vez que el fichero sea correctamente descargado o
-eliminado del servidor. Esto es genial si desea una confirmación extra de que
-su e-mail actúa en consecuencia.</li>
-</ul>
-<p>Expirar en un total de # horas:</p>
-<blockquote>
-Introduzca el número máximo de horas que a un fichero subido le está
-permitido permanecer en el servidor. Pasado este período el fichero será
-eliminado del servidor independientemente de si fue descargado o no.</blockquote>
-<p>Expirar en # horas tras la última descarga:</p>
-<blockquote>
-<p>Introduzca el número de horas que a un fichero subido se le permite
-permanecer en el servidor tras haber sido descargado. Una nueva descarga
-alargará el tiempo de vida del ticket durante el número de horas
-especificado. Pasado este período sin actividad el fichero será eliminado del
-servidor.</p>
-<p>Esta funcionalidad, cuando es usada con un largo período (días o semanas),
-permite a los &quot;hot&quot; tickets permanecer vivos mientras están en uso y ser
-elimindos automáticamente cuando ya no son demandados.</p>
-<p>Cuando es usado en un período corto (24 horas o menos), permite eliminar el
-ticket tan pronto como sea descargado, permitiendo al receptor algo de margen
-para descargar el fichero más de una vez.</p>
-</blockquote>
-<p>Expirar tras # descargas:</p>
-<blockquote>
-Introduce el número total de veces que es permitido descargar un fichero
-subido. Alcanzado este número el fichero será eliminado del servidor. Útil si
-quiere asegurarse de que el fichero es descargado sólo una vez por una sola
-persona.</blockquote>
-<p>Si al menos uno de estos parámetros expira el fichero será eliminado. Puede
-configurar cualquier parámetro a &quot;0&quot; para deshabilitar la condición.</p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/static/guide/fr_FR/index.html dl-master/htdocs/static/guide/fr_FR/index.html
--- dl-0.18.1/htdocs/static/guide/fr_FR/index.html 2017-09-06 12:09:37.000000000 -0400
+++ dl-master/htdocs/static/guide/fr_FR/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,451 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr_FR" lang="fr_FR">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>Service de téléchargement de ticket</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="service-de-telechargement-de-ticket">
-<h1 class="title">Service de téléchargement de ticket</h1>
-
-<div class="contents topic" id="sommaire">
-<p class="topic-title first">Sommaire</p>
-<ul class="simple">
-<li><a class="reference internal" href="#guide-rapide-pour-envoyer-des-pieces-jointes" id="id1">Guide rapide pour envoyer des pièces jointes</a></li>
-<li><a class="reference internal" href="#guide-rapide-pour-recevoir-des-pieces-jointes" id="id2">Guide rapide pour recevoir des pièces jointes</a></li>
-<li><a class="reference internal" href="#parametres-avances" id="id3">Paramètres avancés</a></li>
-</ul>
-</div>
-<div class="section" id="guide-rapide-pour-envoyer-des-pieces-jointes">
-<h1><a class="toc-backref" href="#id1">Guide rapide pour envoyer des pièces jointes</a></h1>
-<p>Tout d'abord, allez sur <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> et authentifier vous avec votre
-nom d'utilisateur et votre mot de passe.</p>
-<p>Vous devriez voir la page ci-dessous:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>Sélectionnez le fichier à envoyer avec le bouton &quot;Parcourir&quot;</li>
-<li>Cliquer sur le bouton &quot;Télécharger&quot; pour envoyer votre fichier.</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>Cliquez sur le bouton &quot;Envoyer par e-mail&quot; pour envoyer par e-mail le lien
-contenant le fichier que vous venez de télécharger.</li>
-</ol>
-<p>Par défaut, le destinataire dispose d'une semaine pour télécharger le fichier
-avant qu'il ne soit automatiquement supprimé. Vous pouvez modifier ce
-comportement en définissant certains paramètres avant de le télécharger.</p>
-<p>Vous pouvez voir la liste des fichiers que vous avez téléchargés et aussi les
-gérer en cliquant sur &quot;Tickets actifs&quot;, au bas de la page.</p>
-</div>
-<div class="section" id="guide-rapide-pour-recevoir-des-pieces-jointes">
-<h1><a class="toc-backref" href="#id2">Guide rapide pour recevoir des pièces jointes</a></h1>
-<p>Tout d'abord, allez sur <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> et authentifier vous avec votre
-nom d'utilisateur et votre mot de passe.</p>
-<p>Vous devriez voir la page ci-dessous:</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>Cliquez sur &quot;Nouvelle concession&quot; au bas de la page :</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li>Entrer <em>votre</em> adresse email.</li>
-<li>Cliquez sur &quot;Créer&quot; pour générer une concession:</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>Cliquez sur &quot;Envoyer par e-mail&quot; pour envoyer par e-mail le lien qui
-permettra de vous faire parvenir un fichier.</li>
-</ol>
-<p>Le destinataire devra simplement suivre les instructions contenues dans le
-mail. Une fois, le fichier téléchargé sur le serveur, vous recevrez un e-mail
-contenant un autre lien vers le fichier que vous pourrez télécharger.</p>
-</div>
-<div class="section" id="parametres-avances">
-<h1><a class="toc-backref" href="#id3">Paramètres avancés</a></h1>
-<p>Avant de télécharger un fichier, vous pouvez personnaliser les paramètres de
-téléchargement et de supression en modifiant les &quot;Paramètres avancés&quot;:</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<ul class="simple">
-<li><em>Si vous souhaitez que votre fichier ne soit jamais supprimé</em> cocher &quot;Ticket
-permanent/téléchargement&quot;. Ceci rendra votre fichier toujours disponible
-jusqu'à ce que vous le retiriez manuellement.</li>
-<li><em>Si vous voulez être averti chaque fois que quelqu'un télécharge le fichier</em>,
-vous pouvez renseigner votre adresse e-mail dans le champs &quot;Notifier par
-e-mail&quot;. Vous recevrez une notification chaque fois que le fichier sera
-téléchargé avec succès ou retiré du serveur.</li>
-</ul>
-<p>Expirera dans # jours:</p>
-<blockquote>
-Indiquer le nombre de jours maximal durant lesquels ce fichier pourra être
-téléchargé. Passé ce délai ce fichier ne pourra plus être téléchargé et sera
-automatiquement supprimé.</blockquote>
-<p>Expirera dans # heures après le dernier téléchargement:</p>
-<blockquote>
-Indiquer le nombre d'heures pendant lesquelles ce fichier restera disponible
-après avoir été téléchargé. Si celui-ci n'est pas téléchargé pendant le délai
-indiqué, il sera automatiquement supprimé.</blockquote>
-<p>Expirera après # téléchargement:</p>
-<blockquote>
-Indiquer le nombre total de téléchargements autorisé pour ce fichier. Au-delà
-de cette limite, ce fichier sera automatiquement supprimé.</blockquote>
-<p>Si au moins un de ces paramètres est appliqué le fichier sera supprimé. Mettre
-n'importe quel paramètre à &quot;0&quot; pour désactiver son état.</p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/static/guide/it_IT/index.html dl-master/htdocs/static/guide/it_IT/index.html
--- dl-0.18.1/htdocs/static/guide/it_IT/index.html 2017-09-06 12:09:37.000000000 -0400
+++ dl-master/htdocs/static/guide/it_IT/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,461 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it_IT" lang="it_IT">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>Download ticket service</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="download-ticket-service">
-<h1 class="title">Download ticket service</h1>
-
-<div class="contents topic" id="indice">
-<p class="topic-title first">Indice</p>
-<ul class="simple">
-<li><a class="reference internal" href="#guida-rapida-passo-passo-all-invio-degli-allegati" id="id1">Guida rapida passo-passo all'invio degli allegati</a></li>
-<li><a class="reference internal" href="#guida-rapida-passo-passo-alla-ricezione-degli-allegati" id="id2">Guida rapida passo-passo alla ricezione degli allegati</a></li>
-<li><a class="reference internal" href="#parametri-avanzati" id="id3">Parametri avanzati</a></li>
-</ul>
-</div>
-<div class="section" id="guida-rapida-passo-passo-all-invio-degli-allegati">
-<h1><a class="toc-backref" href="#id1">Guida rapida passo-passo all'invio degli allegati</a></h1>
-<p>Collegarsi al sito <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> ed autenticarsi col proprio nome
-utente e password.</p>
-<p>La schermata iniziale si presenta come segue:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>Cliccare su &quot;Sfoglia&quot;, come indicato nell'immagine e selezionare il file
-desiderato da inviare.</li>
-<li>Cliccare su &quot;Invia&quot; ed attendere fino al completamento dell'operazione,
-indicata dalla seguente schermata:</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>Cliccare su &quot;Invia per e-mail&quot; per inviare il collegamento al file appena
-caricato via e-mail ad un qualsiasi destinatario usando il proprio programma
-di posta elettronica.</li>
-</ol>
-<p>Con le impostazioni predefinite, il destinatario avrà una settimana di tempo
-per scaricare il file prima che venga eliminato automaticamente. È possibile
-cambiare la scadenza impostando alcuni parametri prima dell'invio del file.</p>
-<p>La lista dei file caricati è gestibile cliccando sul collegamento &quot;Ticket
-attivi&quot;, disponibile in basso alla pagina.</p>
-</div>
-<div class="section" id="guida-rapida-passo-passo-alla-ricezione-degli-allegati">
-<h1><a class="toc-backref" href="#id2">Guida rapida passo-passo alla ricezione degli allegati</a></h1>
-<p>Collegarsi al sito <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> ed autenticarsi col proprio nome
-utente e password.</p>
-<p>La schermata iniziale si presenta come segue:</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>Cliccare su &quot;Nuova concessione&quot;, in basso alla pagina.</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li>Inserire il <em>proprio</em> indirizzo e-mail.</li>
-<li>Cliccare su &quot;Crea&quot; per generare la concessione.</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>Cliccare su &quot;Invia per email&quot; per inviare la concessione e le istruzioni di
-utilizzo tramite e-mail ad un qualsiasi destinatario.</li>
-</ol>
-<p>Il destinatario, una volta ricevuto il collegamento alla concessione, dovrà
-semplicemente seguire le indicazioni. Quando il destinatario avrà terminato
-l'invio del file, riceverete immediatamente (tramite e-mail) conferma ed un
-collegamento al file appena trasferito.</p>
-</div>
-<div class="section" id="parametri-avanzati">
-<h1><a class="toc-backref" href="#id3">Parametri avanzati</a></h1>
-<p>Prima di procedere all'invio di un file, è possibile impostare la sua
-scadenza accedendo ai parametri avanzati:</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<ul class="simple">
-<li><em>Se desiderate che il file non venga mai eliminato</em>, abilitare l'opzione
-&quot;Nessuna scadenza&quot;, disponibile nel pannello &quot;Avanzate&quot;.</li>
-<li><em>Se desiderate ricevere notifica per ogni singolo scaricamento</em>, inserite il
-vostro indirizzo e-mail nella casella &quot;Notifica via e-mail&quot;, disponibile nel
-pannello avanzate.</li>
-</ul>
-<p>Scadenza in # giorni:</p>
-<blockquote>
-Inserire il numero massimo di giorni che il file inviato verrà mantenuto nel
-server. Passato il termine, il file viene eliminato automaticamente, sia che
-venga scaricato o meno.</blockquote>
-<p>Scadenza in # ore dopo l'ultimo scaricamento:</p>
-<blockquote>
-<p>Inserire il numero ore che il file inviato verrà mantenuto nel server dopo
-essere stato scaricato. Ogni scaricamento estende il termine del numero di
-ore specificato. Passato il termine, il file viene eliminato automaticamente.</p>
-<p>Questa funzionalità, usata insieme ad un lungo periodo (giorni o settimane),
-permette di mantenere ticket molto utilizzati attivi per un periodo
-indefinito, e rimuoverli automaticamente alla cessazione di utilizzo.</p>
-<p>Usata invece con periodi brevi (24 ore o meno), consente di eliminare il
-ticket rapidamente dopo lo scaricamento, dando al destinatario del margine
-per effettuarne altri.</p>
-</blockquote>
-<p>Scadenza in # scaricamenti</p>
-<blockquote>
-Inserire il numero di volte che il file può venire scaricato in totale dal
-server. Passato il termine, il file viene eliminato automaticamente.</blockquote>
-<p>La scadenza del ticket viene effettuata alla scadenza di uno qualsiasi dei
-termini impostati (solitamente del termine che arriva prima). È possibile
-impostare un parametro a &quot;0&quot; per disabilitarne il relativo termine.</p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/static/guide/ja_JP/index.html dl-master/htdocs/static/guide/ja_JP/index.html
--- dl-0.18.1/htdocs/static/guide/ja_JP/index.html 2017-09-06 12:09:37.000000000 -0400
+++ dl-master/htdocs/static/guide/ja_JP/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,442 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja_JP" lang="ja_JP">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>ダウンロードチケットサービス</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="id1">
-<h1 class="title">ダウンロードチケットサービス</h1>
-
-<div class="contents topic" id="id2">
-<p class="topic-title first">目次</p>
-<ul class="simple">
-<li><a class="reference internal" href="#id3" id="id6">簡易版 添付送信ガイド</a></li>
-<li><a class="reference internal" href="#id4" id="id7">簡易版 添付受信ガイド</a></li>
-<li><a class="reference internal" href="#id5" id="id8">詳細アップロードのパラメーター</a></li>
-</ul>
-</div>
-<div class="section" id="id3">
-<h1><a class="toc-backref" href="#id6">簡易版 添付送信ガイド</a></h1>
-<p>はじめに、<a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> をブラウザで開き、ユーザ名とパスワードで認証を行います。</p>
-<p>このページになります。:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>&quot;ファイルのアップロード&quot; ( &quot;ブラウズ&quot; または &quot;参照...&quot; と書かれている部分) の下のボタンをクリックします。図に書かれているように、送りたいファイルを選択します。</li>
-<li>&quot;アップロード&quot; をクリックして、図のようにファイルがアップロードが終わるまで待ちます。:</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>&quot;電子メールで送る&quot; をクリックして、今アップロードしたファイルをダウンロードするためのリンクが入ったEメールを特定の人にメールを送ります。</li>
-</ol>
-<p>標準設定では、受け手側は、ファイルが自動的に消される前の1週間以内にファイルのダウンロードを行う必要があります。この動作については、アップロードする前にパラメータを変更することができます。</p>
-<p>このページの一番下の &quot;有効なチケット&quot; ボタンをクリックすることで、アップロードしたファイルリストを見ることができ、それを管理することができます。</p>
-</div>
-<div class="section" id="id4">
-<h1><a class="toc-backref" href="#id7">簡易版 添付受信ガイド</a></h1>
-<p>最初に、 <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> をブラウザで開き、ユーザ名とパスワードで認証を行います。</p>
-<p>このページが見えるはずです :</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>このページの一番下の &quot;新規のグラント&quot; のリンクをクリックすると新しいグラントを作ることができます。:</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li><em>あなた自身の</em> Eメールアドレスを入力してください。</li>
-<li>&quot;作成&quot; をクリックすると、アップロードのグラントが生成されます。:</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>&quot;電子メールで送る&quot; をクリックすると、特定の人がファイルをあなたに送るのを許可するリンクが入ったEメールをその人に送ります。</li>
-</ol>
-<p>受け取った人は、メールのリンクに先に書かれている操作に従う必要があります。受け取った人がファイルをサーバにアップロードした後、あなたに別なリンクが入ったメールが自動的に送られます。</p>
-</div>
-<div class="section" id="id5">
-<h1><a class="toc-backref" href="#id8">詳細アップロードのパラメーター</a></h1>
-<p>&quot;詳細&quot; のパメラーターで、ファイルをアップロードする前に、ダウンロードとその消去の実行がどのようにおこなうかを設定することができます</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<ul class="simple">
-<li><em>ファイルを自動的に削除したくない場合</em> &quot;永続のチケット&quot; のチェックボックスにチェックをいれてください。 そのファイルは手動で削除するまでいつでも有効となります。</li>
-<li><em>毎回ダウンロードされる毎に通知をうけとりたい場合</em> &quot;電子メールで通知されます&quot; にあなたのEメールアドレス入力することで受け取ることができます。ファイルのダウンロード、またはサーバからの削除が起きた時ごとに受け取ることができます。あなたのメールが届いているかどうかの追加の確認が必要な場合は、これは有効な機能です。</li>
-</ul>
-<p>全体で以下の日で公開満了します:</p>
-<blockquote>
-サーバにファイルを保持する最大日数を入力します。この期間が過ぎると、
-ファイルがダウンロードされていても、されていなくても、そのファイルはサーバ
-から削除されます。</blockquote>
-<p>最終ダウンロードから以下の日で公開満了になります:</p>
-<blockquote>
-<p>ダウンロードした後、サーバでアップロードされたファイルを保持する時間を入力してください。
-別なダウンロード操作があればチケットを消すまでの時間が延びます。この期間を何も操作なく超えると、
-ファイルはサーバから削除されます。</p>
-<p>この機能は、長い期間(何日とか、何週間とか)で使う時に使うことができ、使われるまで
-チケットを &quot;有効&quot; にすることができ、その後で自動的に削除されます。</p>
-<p>短い期間24時間以内などで使うときは、ダウンロードされたすぐに、チケットを削除し、
-ファイルを一度以上ダウンロードするための予備時間となります。</p>
-</blockquote>
-<p>以下の回数のダウンロードで公開終了となります:</p>
-<blockquote>
-アップロードされたファイルのダウンロードされる全体の回数を入力してください。
-この回数になると、ファイルは、サーバから削除されます。
-1人の人から1度ダウンロードされたかどうかを確認するには、便利です。</blockquote>
-<p>これらのパラメータの1つで公開解除となると、ファイルは削除されます。いくつかの
-パラメターを &quot;0&quot; にすると、条件は満たさなくなります。</p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/static/guide/nl_NL/index.html dl-master/htdocs/static/guide/nl_NL/index.html
--- dl-0.18.1/htdocs/static/guide/nl_NL/index.html 2017-09-06 12:09:38.000000000 -0400
+++ dl-master/htdocs/static/guide/nl_NL/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,474 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl_NL" lang="nl_NL">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>Download ticket service</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="download-ticket-service">
-<h1 class="title">Download ticket service</h1>
-
-<div class="contents topic" id="inhoud">
-<p class="topic-title first">Inhoud</p>
-<ul class="simple">
-<li><a class="reference internal" href="#korte-stap-voor-stap-handleiding-om-attachments-te-versturen" id="id1">Korte stap voor stap handleiding om attachments te versturen</a></li>
-<li><a class="reference internal" href="#korte-stap-voor-stap-handleiding-om-attachments-te-ontvangen" id="id2">Korte stap voor stap handleiding om attachments te ontvangen</a></li>
-<li><a class="reference internal" href="#geavanceerde-upload-parameters" id="id3">Geavanceerde upload parameters</a></li>
-</ul>
-</div>
-<div class="section" id="korte-stap-voor-stap-handleiding-om-attachments-te-versturen">
-<h1><a class="toc-backref" href="#id1">Korte stap voor stap handleiding om attachments te versturen</a></h1>
-<p>Ga alleereerst naar <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> en log in met uw gebruikersnaam en
-wachtwoord.</p>
-<p>U ziet nu onderstaande pagina:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>Klik op de knop &quot;Bestand kiezen&quot; (of &quot;Browse&quot;) onder &quot;Een bestand uploaden&quot;
-zoals aangegeven op bovenstaand figuur. Selecteer vervolgens het bestand
-dat u wilt versturen.</li>
-<li>Klik op &quot;Bestand uploaden&quot; en wacht totdat het bestand is geüpload. Als het
-uploaden is gelukt verschijnt de volgende figuur:</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>Klik &quot;Verstuurd per e-mail&quot; om de e-mail naar de gewenste persoon te
-versturen. Deze mail bevat de link naar het bestand dat u zojuist heeft
-geüpload.</li>
-</ol>
-<p>Standaard heeft de ontvanger één week de tijd om het bestand te downloaden
-voordat dit bestand automatisch verwijderd wordt. U kunt dit gedrag wijzigen
-door een aantal parameters in te stellen voordat u het bestand upload.</p>
-<p>U kunt een lijst van bestanden die u heeft geüpload zien en wijzigen door op
-&quot;Actieve tickets&quot; onderaan de pagina te klikken.</p>
-</div>
-<div class="section" id="korte-stap-voor-stap-handleiding-om-attachments-te-ontvangen">
-<h1><a class="toc-backref" href="#id2">Korte stap voor stap handleiding om attachments te ontvangen</a></h1>
-<p>Ga alleereerst naar <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> en log in met uw gebruikersnaam en
-wachtwoord.</p>
-<p>U ziet nu onderstaande pagina:</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>Klik op de &quot;Nieuwe toekenning&quot; link onderaan de pagina om een nieuwe
-toekenning te maken.</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li>Vul uw eigen e-mail adres in.</li>
-<li>Klik op &quot;Maak&quot; om een upload toekenning te maken.</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>Klik op &quot;Verstuurd per e-mail&quot; om een e-mail naar iemand te versturen. Deze
-e-mail bevat een link die het de ontvanger mogelijk maakt om u een groot
-bestand terug te sturen.</li>
-</ol>
-<p>Uw ontvanger hoeft alleen maar de instructies te volgen zoals aangegeven in de
-mail. Als de ontvanger van de link zijn bestand heeft geüpload naar de server
-ontvangt u een notificatie e-mail met daarin een link naar het geüploade
-bestand.</p>
-</div>
-<div class="section" id="geavanceerde-upload-parameters">
-<h1><a class="toc-backref" href="#id3">Geavanceerde upload parameters</a></h1>
-<p>Voordat u een bestand upload kunt u met geavancceerde parameters instellen hoe
-vaak het bestand gedownload kan worden en of en wanneer het bestand automatisch
-wordt verwijderd.</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<ul class="simple">
-<li><em>Als u niet wilt dat uw bestand ooit automatisch wordt verwijderd</em> zet dan
-een vinkje bij &quot;Ticket permanent maken&quot;. Uw bestand zal altijd beschikbaar
-blijven totdat u het bestand zelf handmatig verwijderd.</li>
-<li><em>Als u iedere keer als iemand uw bestand download een melding wilt ontvangen</em>
-vul dan uw e-mail adres in bij &quot;Ontvang een e-mail notificatie nadat het
-bestand is gedownload&quot;. U ontvangt nu iedere keer een melding als uw bestand
-succesvol is gedownload of wanneer het automatisch van de server is
-verwijderd. Deze functie is erg handig als u er zeker van wilt zijn dat men
-gereageerd heeft op de door u verstuurde e-mail.</li>
-</ul>
-<p>Vervalt na # dagen:</p>
-<blockquote>
-Vul hier het maximaal aantal dagen in dat een geüpload bestand op de server
-blijft staan. Na deze periode wordt het bestand automatisch van de server
-verwijderd. Het maakt hierbij niet uit of het bestand wel of niet
-gedownload was tijdens het ingestelde tijdsinterval.</blockquote>
-<p>Vervalt na # dagen na de laatste download:</p>
-<blockquote>
-<p>Vul hier het maximaal aantal dagen in dat een geüpload bestand op de server
-blijft staan nadat het gedownload is. Een volgende download zorgt ervoor
-dat de teller weer wordt gereset. Nadat het ingestelde aantal dagen is
-verstreken zonder dat er een download van het bestand heeft plaatsgevonden,
-zal het bestand automatisch van de server verwijderd worden.</p>
-<p>Deze functie zorgt ervoor dat populaire bestanden bewaard blijven maar
-nadat deze is gezakt automatisch verwijderd worden. Het is aan
-te raden om het tijdsinterval in te stellen op meerdere dagen of weken.</p>
-<p>Zorg er altijd voor dat u het tijdsinterval zodanig instelt dat een
-ontvanger van uw e-mail het bestand indien nodig twee keer kan downloaden.</p>
-</blockquote>
-<p>Vervalt na # downloads:</p>
-<blockquote>
-Vul het aantal keer in dat het geüploade bestand gedownload kan worden. Als
-het ingestelde aantal downloads bereikt is zal het bestand automatisch van
-de server verwijderd worden. Deze functie is handig als u er bijvoorbeeld
-zeker van wilt zijn dat uw bestand één keer gedownload wordt door één
-persoon.</blockquote>
-<p>Als één van bovenstaande ingestelde parameters verloopt dan zal het bestand
-verwijderd worden. Als u &quot;0&quot; invult bij een parameter dan zal deze
-uitgeschakeld worden.</p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/static/guide/zh_CN/index.html dl-master/htdocs/static/guide/zh_CN/index.html
--- dl-0.18.1/htdocs/static/guide/zh_CN/index.html 2017-09-06 12:09:38.000000000 -0400
+++ dl-master/htdocs/static/guide/zh_CN/index.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,434 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_CN" lang="zh_CN">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>鉴权下载服务系统</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="id1">
-<h1 class="title">鉴权下载服务系统</h1>
-
-<div class="contents topic" id="id2">
-<p class="topic-title first">目录</p>
-<ul class="simple">
-<li><a class="reference internal" href="#id3" id="id6">简明步骤:上传附件</a></li>
-<li><a class="reference internal" href="#id4" id="id7">简明步骤:接收(他人上传)附件</a></li>
-<li><a class="reference internal" href="#id5" id="id8">高级上传参数</a></li>
-</ul>
-</div>
-<div class="section" id="id3">
-<h1><a class="toc-backref" href="#id6">简明步骤:上传附件</a></h1>
-<p>首先,访问 <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> 并使用正确的用户名、密码完成登陆认证。</p>
-<p>如果一切正常,你应该可以看到和下图类似的页面:</p>
-<img alt="t-step-1.png" src="t-step-1.png" />
-<ol class="arabic simple">
-<li>如上图框线所示,单击“上传文件”下方的按钮(按钮上一般会显示“选择文件”或者是“浏览”字样),选择需要上传的文件。</li>
-<li>单击“上传”,然后等待,直至文件上传成功,如下图所示:</li>
-</ol>
-<img alt="t-step-2.png" src="t-step-2.png" />
-<ol class="arabic simple" start="3">
-<li>单击“使用电子邮件发送”,可以给对方发送邮件,邮件中会包含你刚刚上传文件的地址。</li>
-</ol>
-<p>默认情况下,文件接收人有一周的时间下载这个文件,超时后,该文件将被自动清除。要变更这一设置,可在上传前设置对应的参数。</p>
-<p>你可通过点击页面底部的“所有提取码”链接来查看、管理的所有上传的文件。</p>
-</div>
-<div class="section" id="id4">
-<h1><a class="toc-backref" href="#id7">简明步骤:接收(他人上传)附件</a></h1>
-<p>首先,访问 <a class="reference external" href="https://dl.example.com/">https://dl.example.com/</a> 并使用正确的用户名、密码完成登陆认证。</p>
-<p>你应该可以看到和下图类似的页面:</p>
-<img alt="g-step-1.png" src="g-step-1.png" />
-<ol class="arabic simple">
-<li>单击页面底部的“新建授权”链接,来新建单次上传文件授权:</li>
-</ol>
-<img alt="g-step-2.png" src="g-step-2.png" />
-<ol class="arabic simple" start="2">
-<li>输入 <em>你的</em> 电子邮件地址。</li>
-<li>单击“创建”,即可生成新的文件上传授权。</li>
-</ol>
-<img alt="g-step-3.png" src="g-step-3.png" />
-<ol class="arabic simple" start="4">
-<li>单击“使用电子邮件发送”,可以向对方发送邮件,邮件中会包含一个链接,使用该链接,对方可以上传任意文件。</li>
-</ol>
-<p>邮件接收者只需要按照链接的指示,完成对应的上传动作,即可上传文件。文件上传到服务器后,你将立刻收到邮件提醒,该邮件中将包含对应已上传文件的文件地址。</p>
-</div>
-<div class="section" id="id5">
-<h1><a class="toc-backref" href="#id8">高级上传参数</a></h1>
-<p>上传文件前,你可通过“高级设置”中的参数定义服务器的文件下载、清除行为:</p>
-<img alt="t-advanced.png" src="t-advanced.png" />
-<ul class="simple">
-<li><em>如果你需要服务器永远不删除一个文件</em> 请勾选“本文件不过期”选项。该文件将永远可用,直到您从服务器上将其手动删除。</li>
-<li><em>如果你希望每次有人下载文件后都收到通知</em> 可在“通过电子邮件接收通知”文本框内输入你的电子邮件地址。这样一来,你将在每次该文件被下载、或是从服务器被删除后收到邮件通知。该功能在您需要确认电子邮箱是否正常工作时十分有用。</li>
-</ul>
-<p>在指定天数后过期:</p>
-<blockquote>
-在“在多少天内过期?”文本框处输入数字,系统将以该数字作为保留该文件的最长期限。超过该期限后,该文件无论是否被下载过,都将被删除。</blockquote>
-<p>从最后一次下载算起,在指定天数后过期:</p>
-<blockquote>
-<p>在“从最后一次下载算起,几天后过期?”文本框中输入数字,在文件被下载后,系统将以该数字作为保留该文件的最长期限。如果期间有他人再次下载文件,则该文件的保留期限将按照对应有效天数被适当延长。如果保留期限内内无人再下载此文件,该文件将被清除。</p>
-<p>该功能在用于长期保存(几天、几周)的文件时,可以让高人气的提取码在被使用时一直保持激活状态,并在无人使用后,被马上删除。</p>
-<p>在用于短期保存(小于一天/24小时的文件时该功能可以让文件在下载后立即消失但同时也给收件人提供了一定缓冲时间来多次下载文件。</p>
-</blockquote>
-<p>在下载指定次数后过期:</p>
-<blockquote>
-<p>在“下载几次后过期?”文本框中输入数字,系统将以该数字作为对应文件能被下载的最多次数。在文件下载次数达到这个数字后,文件将从服务器上清除。如果您只想让一个人下载该文件,且只下载一次,该功能非常方便。</p>
-<p>这些设置参数是并列的任何一个参数过期都会导致文件清除。如果您想禁用这些设置请在对应参数中输入“0”。</p>
-</blockquote>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/htdocs/style/default/include/.htaccess dl-master/htdocs/style/default/include/.htaccess
--- dl-0.18.1/htdocs/style/default/include/.htaccess 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/htdocs/style/default/include/.htaccess 2021-03-16 18:59:58.000000000 -0400
@@ -1,4 +1,9 @@
<Limit GET POST>
- Order allow,deny
- Deny from all
+ <IfVersion >= 2.4>
+ Require all denied
+ </IfVersion>
+ <IfVersion < 2.4>
+ Order allow,deny
+ Deny from all
+ </IfVersion>
</Limit>
diff -Nur dl-0.18.1/.mailmap dl-master/.mailmap
--- dl-0.18.1/.mailmap 1969-12-31 19:00:00.000000000 -0500
+++ dl-master/.mailmap 2021-03-16 18:59:58.000000000 -0400
@@ -0,0 +1,2 @@
+Yuri D'Elia <wavexx@thregr.org> wavexx <wavexx@thregr.org>
+Yuri D'Elia <wavexx@thregr.org> Yuri D'Elia <yuri.delia@eurac.edu>
diff -Nur dl-0.18.1/NEWS.html dl-master/NEWS.html
--- dl-0.18.1/NEWS.html 2017-09-06 12:09:38.000000000 -0400
+++ dl-master/NEWS.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,707 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title></title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document">
-
-
-<div class="section" id="dl-0-18-1-2017-09-06">
-<h1>dl 0.18.1: 2017-09-06</h1>
-<ul class="simple">
-<li>Fix upgrade script and incompatibilities when using MySQL.
-Thanks to Daniel Berteaud.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-18-2017-09-04">
-<h1>dl 0.18: 2017-09-04</h1>
-<p>Major new features:</p>
-<ul class="simple">
-<li>Support for multiple file uploads in both tickets and grants. When multiple
-files are attached, a Zip archive is automatically created with the contents.
-The PHP &quot;Zip&quot; extension is now required.</li>
-<li>Grants are now reusable. With the new defaults, senders are no longer
-restricted to a single use/file per grant, but can keep reusing the same link
-as needed. The grant, just like a ticket, is then automatically expired when
-left unused for a certain amount of time.</li>
-<li>Tickets generated while using a grant are now split into a separated
-&quot;Received files&quot; page. The &quot;All tickets&quot; page reserved to administrators
-still shows all tickets combined and color-coded.</li>
-<li>A new Android client is now available: <tt class="docutils literal">PokéDL</tt>.</li>
-</ul>
-<p>Enhancements:</p>
-<ul class="simple">
-<li>The ticket and grant expiration parameters have been streamlined for common
-usage patterns, becoming mostly self-explanatory.</li>
-<li>When using a grant, the user can now attach a comment alongside the uploaded
-file/s. The comment is sent back to the grant owner in the notification.</li>
-<li>Tickets now show the generating grant ID in the edit/detailed view.</li>
-<li>The grant comment assigned during creation is now shown in both the tooltip
-of the grant list and in email notifications involving grant usage.</li>
-<li>Ticket/grant passwords were previously always included in notifications. The
-password sending policy can now be controlled at creation time, and defaults
-to sending the password only when automatically generated.</li>
-<li>The subject prefix in email notifications can now be customized.</li>
-<li><tt class="docutils literal"><span class="pre">dl-wx</span></tt> now allows to generate grants.</li>
-<li>General <tt class="docutils literal"><span class="pre">dl-cli</span></tt> overhaul:<ul>
-<li>dl-cli now runs under both python 3 and python 2.7, preferring python 3</li>
-<li>The password can be read from an external command using <tt class="docutils literal">passcmd</tt></li>
-<li>Public-key pinning is now supported through the <tt class="docutils literal">fingerprint</tt> option</li>
-<li>Multiple files can now be uploaded in a single ticket (for efficiency,
-dl-cli generates a Zip archive locally before uploading)</li>
-<li>When generating a grant, the email address is now optional if available
-in the configuration file</li>
-<li>The ConfigObj module is now required</li>
-</ul>
-</li>
-</ul>
-<p>Bug fixes:</p>
-<ul class="simple">
-<li>Tickets generated while using a grant were incorrectly calculating the expiry
-from the grant <em>creation</em> time, resulting in premature expiration. Ticket
-expiry is now calculated starting at actual <em>upload</em> time.</li>
-<li>Download of files larger than 2GB would previously fail when using DL with
-MySQL or Postgres. Fix by Daniel Berteaud.</li>
-<li>Ticket and grant invalid access or invalid password attempts are now logged.</li>
-<li>Left-clicking on the <tt class="docutils literal"><span class="pre">dl-wx</span></tt> tray's icon on Linux now works as expected.</li>
-</ul>
-<p>Other changes:</p>
-<ul class="simple">
-<li>The minimum required PHP version has been raised to 5.5 or higher.</li>
-<li>Important PHP settings are now preset in the bundled <tt class="docutils literal"><span class="pre">htdocs/.htaccess</span></tt>
-file for the Apache/mod_php combination.</li>
-<li>Simplified Chinese translation by Guangyu Dong.</li>
-<li>Russian translation by Олейник О.В.</li>
-<li>The Thunderbird add-on has been updated to support Thunderbird 52.</li>
-<li>The Windows <tt class="docutils literal"><span class="pre">dl-wx</span></tt> executable has been rebuilt with SNI support.</li>
-</ul>
-<p>Please note: DL 0.18 requires a database schema update! Please read the
-database upgrade procedure in the README!</p>
-</div>
-<div class="section" id="dl-0-17-1-2016-05-01">
-<h1>dl 0.17.1: 2016-05-01</h1>
-<ul class="simple">
-<li>Filenames are now sanitized more aggressively when received. This avoids
-browser/client failures when receiving files that contain illegal characters
-for the current platform (which might be legal in another).</li>
-<li>Filenames containing multibyte characters could previously result in
-unexpected truncation; they're now handled correctly.</li>
-<li>The uploaded filename is included in grant notifications.</li>
-<li>The Thunderbird add-on has been updated to support Thunderbird 45.</li>
-<li>In the ticket details, the full timestamp of the download is now shown.</li>
-<li>Minor code and documentation fixes.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-17-2015-06-26">
-<h1>dl 0.17: 2015-06-26</h1>
-<ul class="simple">
-<li>Login attempts are now logged.</li>
-<li>Log messages are now more uniform, always including the remote address and
-username (when available).</li>
-<li>The Thunderbird add-on has been updated to support Thunderbird 38.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-16-2015-01-22">
-<h1>dl 0.16: 2015-01-22</h1>
-<ul class="simple">
-<li>The database connection is automatically re-established when timed out after
-slow uploads/downloads (affects systems not using sqlite).</li>
-<li>dl-cli can now prompt for a password when left unspecified in the
-<tt class="docutils literal"><span class="pre">~/.dl.rc</span></tt> configuration file.</li>
-<li>Added Japanese translation by Teruo IWAI.</li>
-<li>Dutch user-guide translation by Maarten Schoonman.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-15-2014-11-28">
-<h1>dl 0.15: 2014-11-28</h1>
-<ul class="simple">
-<li>File names with special and/or UTF-8 characters are now correctly preserved
-on all browsers.</li>
-<li>Added Dutch translation by Maarten Schoonman.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-14-2014-10-16">
-<h1>dl 0.14: 2014-10-16</h1>
-<ul class="simple">
-<li>Fixed broken <tt class="docutils literal"><span class="pre">Content-Length</span></tt> header with the Apache/mod_php/mod_deflate
-combination, which would prevent downloads to be resumed.</li>
-<li>The built-in skin has been updated.</li>
-<li>The skin can now be customized and set in the configuration file.</li>
-<li>A work-around has been found to allow PHP 5.4-5.5 to upload files up to 4GB
-(note that starting with PHP 5.6 there is no upload size limitation).</li>
-<li>Logging of server-side errors has been improved.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-13-2014-07-31">
-<h1>dl 0.13: 2014-07-31</h1>
-<ul class="simple">
-<li>The &quot;Active tickets/grants&quot; pages for administrators now show only their own
-tickets, like for normal users. Other tickets are visible in the new &quot;All
-tickets/grants&quot; pages.</li>
-<li>Upload progress information is now implemented client-side using HTML5/JS,
-which is both more responsive and waives any PHP configuration/version
-restrictions.</li>
-<li>Ticket/grant/user listings can now be sorted by clicking on the table header.</li>
-<li>The date/time format can now be customized.</li>
-<li>Spaces in uploaded file names are now correctly preserved.</li>
-<li>The REST interface can now be used with the built-in authentication method
-without additional configuration <em>also</em> when using apache/fcgi.</li>
-<li>The REST interface now supports a method to generate grants.</li>
-<li>The Thunderbird add-on now includes a new menu command (under &quot;Tools&quot;) and a
-new toolbar icon in the composer window to generate and insert grants in the
-current message.</li>
-<li>Added Brazilian Portuguese and Czech localizations (thanks to Guilherme
-Benkenstein and Jan Štětina).</li>
-<li>Minor bug/cosmetic fixes.</li>
-</ul>
-<p>DL 0.12 is the last release offering an upgrade path from DL 0.3. Version 0.13
-can only upgrade from 0.4 and above. If you have an old installation, you'll
-need to perform a two step upgrade using an earlier release.</p>
-</div>
-<div class="section" id="dl-0-12-2013-12-10">
-<h1>dl 0.12: 2013-12-10</h1>
-<ul class="simple">
-<li>Add a new configurable &quot;e-mail&quot; address in the preferences, which is used as
-a default when creating grants and receiving notifications.</li>
-<li>Support for MySQL and PostgreSQL.</li>
-<li>Support for provided e-mail address with external authentication using
-<tt class="docutils literal">USER_EMAIL</tt> header (useful for LemonLDAP::NG/webSSO).</li>
-<li>Fix REST interface when used in combination with LemonLDAP::NG/webSSO.</li>
-<li>Improved French localization.</li>
-<li>The timezone of the web interface is now customizable.</li>
-<li>Minor bug/cosmetic fixes.</li>
-</ul>
-<p>Please note: DL 0.12 requires a database schema update! Please read the
-database upgrade procedure in the README!</p>
-</div>
-<div class="section" id="dl-0-11-2013-07-05">
-<h1>dl 0.11: 2013-07-05</h1>
-<ul class="simple">
-<li>Fixed CSRF vulnerability of the admin interface (discovered by Dirk Reimers).</li>
-<li>Mitigations against session fixation attacks (discovered by Dirk Reimers).</li>
-<li>Fixed CSRF vulnerability of the REST interface when used in combination with
-HTTP/external authentication.</li>
-<li>Improved client-side validation of the forms (with HTML5/JS where available).</li>
-<li>Password hashing for the user/ticket/grant DB switched to PHPass.</li>
-<li>Progress bar updating improvements.</li>
-<li>Thunderbird integration is now available through the new included extension
-&quot;Thunderbird-Filelink-DL&quot;, which converts attachments to links automatically.</li>
-<li>Minor bug/cosmetic fixes.</li>
-</ul>
-<p>Please note: DL 0.11 requires a database schema update! Please read the
-database upgrade procedure in the README!</p>
-<p>Upgrading to DL 0.11 has implication for existing users. The new hashing scheme
-limits usernames to 60 characters and passwords to 72 to prevent DoS attacks.
-Users having usernames/passwords exceeding these limits won't be able to login
-after the upgrade, and can only be managed manually through the command line.</p>
-<p>The password hash of existing users is automatically rehashed using the new
-scheme upon a successful login (no password change is required).</p>
-<p>The optional password of tickets and grants is similarly affected and upgraded
-transparently upon successful usage. Tickets/grants having passwords longer
-than 72 characters though will require a manual password reset.</p>
-<p>To fully prevent CSRF attacks on the REST interface when used in combination
-with HTTP authentication the protocol has been broken. Clients (such as the
-supplied &quot;dl-wx&quot;) require an upgrade, though new clients can still communicate
-to an old server.</p>
-</div>
-<div class="section" id="dl-0-10-1-2012-03-09">
-<h1>dl 0.10.1: 2012-03-09</h1>
-<ul class="simple">
-<li>A bug was fixed in the initialization code that could cause grant uploads to
-fail in certain configurations.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-10-2012-02-06">
-<h1>dl 0.10: 2012-02-06</h1>
-<ul class="simple">
-<li>The default configuration file has been renamed to &quot;config.php.dist&quot; and must
-now be manually copied/renamed to be used. If a suitable &quot;config.php&quot; is not
-found in the include/ directory, then the configuration is read from
-&quot;/etc/dl.php&quot;. This will allow smoother release upgrades in the future.</li>
-<li>Notifications of tickets and grants now use the same locale that was used
-during the creation of the ticket/grant itself.</li>
-<li>A new &quot;Preferences&quot; page has been added, allowing users to change their
-password (currently supported only for internal authentication).</li>
-<li>Changing &quot;hours after last download&quot; while editing a ticket didn't actually
-extend the ticket lifetime. Changing the ticket lifetime now works correctly.</li>
-<li>&quot;hours after last download&quot; has been changed to &quot;days after last download&quot;.</li>
-<li>Default ticket/grant expiration settings have been increased significantly.</li>
-<li>A new REST API has been implemented, allowing external applications to use the
-service programmatically.</li>
-<li>Two python clients have been added to the distribution: a command-line python
-client &quot;dl-cli&quot; and a graphical client &quot;dl-wx&quot;.</li>
-<li>Minor bug and UI fixes.</li>
-</ul>
-<p>Please note: DL 0.10 requires a database schema and webserver configuration
-update! Please read the database upgrade procedure in the README and the
-relevant notes about web server configuration.</p>
-</div>
-<div class="section" id="dl-0-9-1-2011-12-31">
-<h1>dl 0.9.1: 2011-12-31</h1>
-<ul class="simple">
-<li>Fixed a grave security issue: unauthorized parties can perform login as any
-arbitrary user when using the built-in authentication mechanism by supplying
-an authorization header. DL versions down to 0.3 are affected.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-9-2011-04-06">
-<h1>dl 0.9: 2011-04-06</h1>
-<ul class="simple">
-<li>The settings of tickets and grants are now stored independently.</li>
-<li>Default ticket/grant settings can be specified in the config file.</li>
-<li>Most ticket and grant options are now moved into an &quot;advanced&quot; panel.</li>
-<li>Grant notifications now include the ticket password in the message.</li>
-<li>Form validation is now also performed in JavaScript.</li>
-<li>Enlarged the width of the interface to 800px.</li>
-<li>Users management is now available through the web interface.</li>
-<li>French, Italian, Spanish and German translation.</li>
-<li>Multi-line comments can be attached to tickets and grants.</li>
-<li>Improved the e-mail notification text.</li>
-<li>Improved ticket and grant listings.</li>
-<li>Tickets can now be edited after being created.</li>
-<li>Minor bug and UI fixes.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-8-2010-07-10">
-<h1>dl 0.8: 2010-07-10</h1>
-<ul class="simple">
-<li>Update PHP-Gettext to 1.1.10 (fixing several PHP Notices).</li>
-<li>Fix browser language autodetection (typo, thanks to Bert-Jan Kamp).</li>
-<li>Fix ticket expiration when using sqlite3 (table locking issues).</li>
-<li>Do not purge tickets prematurely after an unsuccessful download.</li>
-<li>Purge tickets immediately after the download, when possible.</li>
-<li>&quot;useradmin.php&quot; now allows to reset/change user role and password.</li>
-<li>All notifications are now sent using the default locale.</li>
-<li>Ticket expiration can be performed with an external utility.</li>
-<li>The user-guide is now included in the admin interface.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-7-2010-03-10">
-<h1>dl 0.7: 2010-03-10</h1>
-<ul class="simple">
-<li>Fix XSS vulnerability for unknown ticket IDs (discovered by Sven Eric Neuz)</li>
-</ul>
-</div>
-<div class="section" id="dl-0-6-2010-03-03">
-<h1>dl 0.6: 2010-03-03</h1>
-<ul class="simple">
-<li>Remember the selected language with a cookie.</li>
-<li>Allow to tune the DB expiration process to improve the performance.</li>
-<li>Fixed E-Mail subject encoding.</li>
-<li>German translation update.</li>
-<li>PHP 5.3 warning fixes.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-5-2010-02-09">
-<h1>dl 0.5: 2010-02-09</h1>
-<ul class="simple">
-<li>Fix upload progress-bar on Chrome and Safari.</li>
-<li>Minor bug, UI and usability fixes.</li>
-<li>Internationalization support.</li>
-<li>Italian and German translation.</li>
-<li>License changed to GNU GPL 2.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-4-2009-11-24">
-<h1>dl 0.4: 2009-11-24</h1>
-<ul class="simple">
-<li>Ticket activity can be logged to syslog or a file.</li>
-<li>The minimal required PHP version is now 5.0.</li>
-<li>PDO is now used for the users/tickets database (defaulting to a sqlite
-database). Upgrading instructions in the README.</li>
-<li>The submission form now allows to automatically send a link of the ticket to
-the specified address/es.</li>
-<li>A ticket can now require a password to be downloaded.</li>
-<li>&quot;Upload grants&quot; can now be created, allowing others to send you a single file
-through DL.</li>
-<li>Progress-bar indicator during uploads.</li>
-<li>Required fields are highlighted when missing.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-3-2009-09-02">
-<h1>dl 0.3: 2009-09-02</h1>
-<ul class="simple">
-<li>CSS-ification, with new skin from Kim Thostrup &lt;<a class="reference external" href="mailto:kim&#64;thostrup.dk">kim&#64;thostrup.dk</a>&gt;.</li>
-<li>Include IE5/6 PNG fix from Angus Turnbull <a class="reference external" href="http://www.twinhelix.com">http://www.twinhelix.com</a></li>
-<li>Multiuser support with HTTP authentication or internal user database.</li>
-<li>License changed to LGPL 3</li>
-</ul>
-</div>
-<div class="section" id="dl-0-2-2007-10-10">
-<h1>dl 0.2: 2007-10-10</h1>
-<ul class="simple">
-<li>Renamed &quot;aux.php&quot; to &quot;funcs.php&quot; to avoid &quot;reserved file name&quot; errors
-under Windows.</li>
-<li>Support commas in addition to semicolons as e-mail separators in the
-notify field.</li>
-<li>Removed the 'ID' field in &quot;active tickets&quot; listings.</li>
-<li>Allow to attach a comment in any ticket.</li>
-<li>Byte-ranges support.</li>
-</ul>
-</div>
-<div class="section" id="dl-0-1-2007-06-15">
-<h1>dl 0.1: 2007-06-15</h1>
-<ul class="simple">
-<li>First release.</li>
-</ul>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/NEWS.rst dl-master/NEWS.rst
--- dl-0.18.1/NEWS.rst 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/NEWS.rst 2021-03-16 18:59:58.000000000 -0400
@@ -1,3 +1,15 @@
+dl 0.19: 2021-??-??
+-------------------
+
+* Fix compatibility with PHP 8 (includes an update of the built-in
+ PHP-Gettext to 1.0.12).
+* Enforce display_errors=Off once logging is setup.
+* Fix temporary ZIP file creation (thanks to @SQ-SEN).
+* Fix spurious notices in basefuncs.php (thanks to Emanuele Rosati).
+* Fix warning in parameter validation with PHP 8.
+* Allow unicode filenames in ``dl-cli`` (thanks to @mjg)
+
+
dl 0.18.1: 2017-09-06
---------------------
@@ -266,7 +278,7 @@
dl 0.8: 2010-07-10
------------------
-* Update PHP-Gettext to 1.1.10 (fixing several PHP Notices).
+* Update PHP-Gettext to 1.0.10 (fixing several PHP Notices).
* Fix browser language autodetection (typo, thanks to Bert-Jan Kamp).
* Fix ticket expiration when using sqlite3 (table locking issues).
* Do not purge tickets prematurely after an unsuccessful download.
diff -Nur dl-0.18.1/README.html dl-master/README.html
--- dl-0.18.1/README.html 2017-09-06 12:09:39.000000000 -0400
+++ dl-master/README.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,1108 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>dl: download ticket service</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="dl-download-ticket-service">
-<h1 class="title">dl: download ticket service</h1>
-
-<div class="contents topic" id="contents">
-<p class="topic-title first">Contents</p>
-<ul class="simple">
-<li><a class="reference internal" href="#requirements" id="id1">Requirements</a></li>
-<li><a class="reference internal" href="#installation" id="id2">Installation</a><ul>
-<li><a class="reference internal" href="#dl-installation" id="id3">DL installation</a></li>
-<li><a class="reference internal" href="#database-setup" id="id4">Database setup</a></li>
-<li><a class="reference internal" href="#php-setup" id="id5">PHP setup</a></li>
-<li><a class="reference internal" href="#user-setup" id="id6">User setup</a><ul>
-<li><a class="reference internal" href="#internal-authentication" id="id7">Internal authentication</a></li>
-<li><a class="reference internal" href="#external-authentication" id="id8">External authentication</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#large-file-support" id="id9">Large file support</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#web-server-configuration" id="id10">Web-server Configuration</a><ul>
-<li><a class="reference internal" href="#apache-mod-php" id="id11">Apache/mod_php</a></li>
-<li><a class="reference internal" href="#apache-fastcgi" id="id12">Apache/FastCGI</a></li>
-<li><a class="reference internal" href="#lighttpd-fastcgi" id="id13">Lighttpd/FastCGI</a></li>
-<li><a class="reference internal" href="#nginx-fastcgi" id="id14">Nginx/FastCGI</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#ticket-expiration" id="id15">Ticket expiration</a><ul>
-<li><a class="reference internal" href="#internal-method" id="id16">Internal method</a></li>
-<li><a class="reference internal" href="#external-method" id="id17">External method</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#upgrading-from-an-earlier-version" id="id18">Upgrading from an earlier version</a></li>
-<li><a class="reference internal" href="#internationalization-support" id="id19">Internationalization support</a><ul>
-<li><a class="reference internal" href="#contributing-updating-a-translation" id="id20">Contributing/updating a translation</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#usage" id="id21">Usage</a><ul>
-<li><a class="reference internal" href="#command-line-client-dl-cli" id="id22">Command-line client: <tt class="docutils literal"><span class="pre">dl-cli</span></tt></a></li>
-<li><a class="reference internal" href="#graphical-client-dl-wx" id="id23">Graphical client: <tt class="docutils literal"><span class="pre">dl-wx</span></tt></a></li>
-<li><a class="reference internal" href="#public-key-pinning" id="id24">Public key pinning</a></li>
-<li><a class="reference internal" href="#thunderbird-integration" id="id25">Thunderbird integration</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#general-support-mailing-list" id="id26">General/support mailing list</a></li>
-<li><a class="reference internal" href="#customisation-and-development" id="id27">Customisation and development</a><ul>
-<li><a class="reference internal" href="#development-releases" id="id28">Development releases</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#authors-and-copyright" id="id29">Authors and Copyright</a></li>
-</ul>
-</div>
-<p>&quot;dl&quot; is a simple file sharing service for quick/one-off file transfers. Upload
-a file to get a link you can share. Or create a sharing link to receive files
-from others. The uploaded files are automatically removed when left unused,
-requiring zero additional maintenance.</p>
-<p>&quot;dl&quot; is <em>built for your users</em>: easy to use with any browser, integrates
-smoothly with Thunderbird for large attachments, works on Android, Windows
-and OSX or straight from the command line for maximum convenience.</p>
-<div class="section" id="requirements">
-<h1><a class="toc-backref" href="#id1">Requirements</a></h1>
-<ul class="simple">
-<li>PHP 5.5 or higher.</li>
-<li>PHP SQLite module (or another PDO database module).</li>
-<li>PHP mbstring module.</li>
-<li>PHP OpenSSL module.</li>
-<li>PHP Zip module.</li>
-<li>Web server access for installation and setup.</li>
-</ul>
-</div>
-<div class="section" id="installation">
-<h1><a class="toc-backref" href="#id2">Installation</a></h1>
-<p>The installation is divided into three steps:</p>
-<ol class="arabic simple">
-<li>Installation of the files</li>
-<li>Database creation/setup or database upgrade</li>
-<li>Initial user creation</li>
-</ol>
-<p>Due to the number of possible configurations, the installation must be carried
-on manually.</p>
-<div class="section" id="dl-installation">
-<h2><a class="toc-backref" href="#id3">DL installation</a></h2>
-<ul>
-<li><p class="first">Copy the <tt class="docutils literal">htdocs</tt> directory contained in the archive to a directory of
-choice under your web server.</p>
-</li>
-<li><p class="first">Copy <tt class="docutils literal">include/config.php.dist</tt> to either <tt class="docutils literal">include/config.php</tt> or
-<tt class="docutils literal">/etc/dl.php</tt> and customize as needed. This usually means changing the URL
-and E-Mail of the service.</p>
-</li>
-<li><p class="first">Ensure the <tt class="docutils literal">include</tt> and <tt class="docutils literal"><span class="pre">style/*/include</span></tt> directories are <em>not</em> directly
-accessible externally. Type <tt class="docutils literal"><span class="pre">http://dl.example.com/include/config.php</span></tt> and
-verify that you <em>correctly</em> get an &quot;Access Denied&quot; error.</p>
-<p>If you use Apache, the provided <tt class="docutils literal">.htaccess</tt> files should be already
-sufficient; consult your web server documentation otherwise.</p>
-</li>
-<li><p class="first">Create a spool directory that will be used by the service to store the files,
-user and ticket information. This directory <em>should</em> be outside of the
-document root of your web server. Fix the permissions so that PHP has
-read/write access to it.</p>
-<p>In the provided <tt class="docutils literal">include/config.php</tt> this is configured as
-<tt class="docutils literal">/var/spool/dl</tt>. If you web server runs as &quot;nobody:nogroup&quot;, issue:</p>
-<pre class="literal-block">
-mkdir -p -m770 /var/spool/dl
-chgrp nogroup /var/spool/dl
-</pre>
-<p>to create correctly this directory.</p>
-</li>
-<li><p class="first">Create a database (as described in <a class="reference internal" href="#database-setup">Database setup</a>).</p>
-</li>
-<li><p class="first">Create at least one user (as described in <a class="reference internal" href="#internal-authentication">Internal authentication</a>).</p>
-</li>
-</ul>
-</div>
-<div class="section" id="database-setup">
-<h2><a class="toc-backref" href="#id4">Database setup</a></h2>
-<p>DL needs a database to store the ticket and user information. By default, DL
-will use an embedded &quot;sqlite&quot; database stored within the spool directory, but
-some manual setup is still required.</p>
-<p>To create the database, you need the <tt class="docutils literal">sqlite3</tt> command.
-On Ubuntu/Debian, <tt class="docutils literal">sqlite3</tt> can by installed by executing:</p>
-<pre class="literal-block">
-sudo apt-get install sqlite3
-</pre>
-<p>You should then execute the provided SQL batch for SQLite <em>with the same user
-as your web server</em> (by using <tt class="docutils literal">su</tt> or <tt class="docutils literal">sudo</tt> if necessary):</p>
-<pre class="literal-block">
-cd /var/spool/dl/
-sqlite3 data.sdb &lt; /your-installation-directory/include/scripts/db/sqlite.sql
-chmod 660 data.sdb
-</pre>
-<p>If you want to change the database path, or use a real database server, you
-need to properly configure the <tt class="docutils literal">$dsn</tt> parameters in <tt class="docutils literal">include/config.php</tt>
-according to your setup. The DSN string changes according to the PDO module
-that you want to use. Please see one of:</p>
-<ul class="simple">
-<li><a class="reference external" href="http://www.php.net/manual/en/ref.pdo-sqlite.connection.php">SQLite DSN</a></li>
-<li><a class="reference external" href="http://php.net/manual/en/ref.pdo-mysql.connection.php">MySQL DSN</a></li>
-<li><a class="reference external" href="http://www.php.net/manual/en/ref.pdo-pgsql.connection.php">PostgreSQL DSN</a></li>
-</ul>
-<p>for the most popular configuration choices. When a username/password is
-required, using the appropriate variables <tt class="docutils literal">$dbUser</tt>/<tt class="docutils literal">$dbPassword</tt> is
-preferred instead of embedding the values in the DSN string.</p>
-<p>The directory <tt class="docutils literal">include/scripts/db/</tt> provides SQL initialization scripts for
-SQLite, MySQL and PostgreSQL.</p>
-</div>
-<div class="section" id="php-setup">
-<h2><a class="toc-backref" href="#id5">PHP setup</a></h2>
-<p>The following parameters are <em>required</em> to be set in your <tt class="docutils literal">php.ini</tt>:</p>
-<ul class="simple">
-<li><tt class="docutils literal">date.timezone</tt>: must be set to your system preference.</li>
-<li><tt class="docutils literal">session.auto_start</tt>: must be &quot;Off&quot;.</li>
-</ul>
-<p>The maximal upload limit is determined by several PHP configuration parameters.
-Check your <tt class="docutils literal">php.ini</tt> for:</p>
-<ul class="simple">
-<li><tt class="docutils literal">upload_max_filesize</tt>: change as needed.</li>
-<li><tt class="docutils literal">post_max_size</tt>: must be at least 1M larger than upload_max_filesize.</li>
-<li><tt class="docutils literal">session.gc_maxlifetime</tt>: must be long enough to allow large uploads to finish.</li>
-</ul>
-<p>All the above settings can be configured per-directory and affect only DL. In
-addition, the following parameters need to be set for the entire PHP server:</p>
-<ul class="simple">
-<li><tt class="docutils literal">file_uploads</tt>: must be &quot;On&quot;.</li>
-<li><tt class="docutils literal">upload_tmp_dir</tt>: ensure enough space is available for temporary files.</li>
-<li><tt class="docutils literal">max_file_uploads</tt>: change as needed.</li>
-</ul>
-<p>The upload limit as shown in the submission form is determined automatically
-from the <tt class="docutils literal">upload_max_filesize</tt> parameter.</p>
-<p>Any upload beyond <tt class="docutils literal">post_max_size</tt> will be completely ignored: users will get
-a blank page instead of an error message. You should raise <tt class="docutils literal">post_max_size</tt>
-above <tt class="docutils literal">upload_max_filesize</tt> to get an acceptable &quot;error window&quot; in old
-browsers or browsers with JavaScript disabled.</p>
-<p><tt class="docutils literal">session.gc_maxlifetime</tt> (which is in seconds) needs to be long enough for
-your users to complete a large upload. Uploading 500MB on a slow ADSL
-connection can take as much as 12 hours, so set it to <em>at least</em> 43200.</p>
-<p>If PHP was built as an Apache module you can set per-directory parameters
-through <tt class="docutils literal">.htaccess</tt> (see
-<a class="reference external" href="http://www.php.net/manual/en/configuration.changes.php">http://www.php.net/manual/en/configuration.changes.php</a>) or directly inside your
-Apache's configuration (see <a class="reference internal" href="#apache-mod-php">Apache/mod_php</a> for an example). The provided
-<tt class="docutils literal"><span class="pre">htdocs/.htaccess</span></tt> contains a reasonable pre-set, but requires
-<tt class="docutils literal">AllowOverride All</tt> to be set for the directory in your main configuration.</p>
-</div>
-<div class="section" id="user-setup">
-<h2><a class="toc-backref" href="#id6">User setup</a></h2>
-<p>DL can use both an internal and an external user database, by trusting the
-authentication credentials provided by your web server.</p>
-<p>dl supports both &quot;normal&quot; users and &quot;administrators&quot;. A normal user can only
-see and manage tickets created by himself. Administrators can see/manage all
-the tickets.</p>
-<div class="section" id="internal-authentication">
-<h3><a class="toc-backref" href="#id7">Internal authentication</a></h3>
-<p>Once dl has been installed and PHP is set-up correctly, you have to create at
-least one user to be able to log in. User management is handled through the
-command line by using the bundled <tt class="docutils literal">useradmin.php</tt> utility.</p>
-<p>On the server, execute the following commands <em>with the same user as your web
-server</em> (by using <tt class="docutils literal">su</tt> or <tt class="docutils literal">sudo</tt> if necessary):</p>
-<pre class="literal-block">
-cd /your-installation-directory/include/scripts
-php useradmin.php add &quot;admin&quot; &quot;true&quot; &quot;change me&quot;
-</pre>
-<p>where:</p>
-<ul class="simple">
-<li><tt class="docutils literal">admin</tt> is the user name</li>
-<li><tt class="docutils literal">true</tt> (or <tt class="docutils literal">false</tt>) sets the administrator status</li>
-<li><tt class="docutils literal">change me</tt> is the password</li>
-</ul>
-<p>Repeat as many times as necessary. You should now be able to use the web
-service. Other users/administrators can be added through the web interface.</p>
-</div>
-<div class="section" id="external-authentication">
-<h3><a class="toc-backref" href="#id8">External authentication</a></h3>
-<p>External authentication should be the preferred form of authentication for
-corporate use since it supports whatever authentication scheme your web server
-already supports (for example, LDAP, ActiveDirectory, etc).</p>
-<p>To enable external authentication you have to protect the two files:</p>
-<ul class="simple">
-<li><tt class="docutils literal">admin.php</tt></li>
-<li><tt class="docutils literal">rest.php</tt></li>
-</ul>
-<p>using a &quot;Basic&quot; authentication scheme. You should then set <tt class="docutils literal">$authRealm</tt> to
-the same authentication realm used in your web server. The other files <em>must
-not</em> be protected.</p>
-<p>DL will implicitly trust the credentials provided by the web server. All users
-are logged in as &quot;normal&quot; by default. The only setup required is adding the
-administrators with <tt class="docutils literal">useradmin.php</tt> without using any password.</p>
-<p>Logout with HTTP authentication is not guaranteed to work: users should simply
-<strong>close their browser</strong> to clear their session (closing a tab or window is not
-enough in many browsers). Currently, logout works as expected on:</p>
-<ul class="simple">
-<li>Firefox</li>
-<li>Safari</li>
-<li>Google Chrome/Chromium</li>
-</ul>
-<p>Logout does not work on:</p>
-<ul class="simple">
-<li>Internet Explorer 7/8.</li>
-<li>Opera 9/10.</li>
-</ul>
-<p>Again, only the <em>Basic</em> authentication is supported, which transmits the
-password in clear-text unless you use SSL.</p>
-<p>When using external authentication, the HTTP header <tt class="docutils literal">USER_EMAIL</tt> can
-additionally provide the user's default email address. Such header is provided
-automatically, for example, when using &quot;LemonLDAP::NG&quot;.</p>
-</div>
-</div>
-<div class="section" id="large-file-support">
-<h2><a class="toc-backref" href="#id9">Large file support</a></h2>
-<p>Large file support (for uploads larger than 2GB) requires a combination of PHP
-version, web server and browser support.</p>
-<p>Apache 2.2 and above support large request bodies but needs to be built for
-64bit (see <tt class="docutils literal">LimitRequestBody</tt>). Same for Lighttpd 1.4 (&gt;2gb but only for
-64bit builds, see <tt class="docutils literal"><span class="pre">server.max-request-size</span></tt>).</p>
-<p>Due to several bugs in PHP prior to 5.6, <tt class="docutils literal">upload_max_filesize</tt> and
-<tt class="docutils literal">post_max_size</tt> are limited to a 31/32bit integer, which limits the upload
-size to 2/4GB even on 64bit systems. The maximal uploadable sizes are shown
-below:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="27%" />
-<col width="73%" />
-</colgroup>
-<thead valign="bottom">
-<tr><th class="head">PHP Version</th>
-<th class="head">Upload limit</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr><td>&lt;5.4</td>
-<td>2gb: <tt class="docutils literal">post_max_size = 2147483647</tt></td>
-</tr>
-<tr><td>5.4-5.5</td>
-<td>4gb: <tt class="docutils literal">post_max_size = 4294967295</tt></td>
-</tr>
-<tr><td>&gt;=5.6</td>
-<td>no limit</td>
-</tr>
-</tbody>
-</table>
-<p>Note that PHP versions before 5.5 are no longer supported, and older versions
-are shown here for reference purposes only.</p>
-<p>Finally, not all browsers support large file uploads:</p>
-<table border="1" class="docutils">
-<colgroup>
-<col width="52%" />
-<col width="48%" />
-</colgroup>
-<thead valign="bottom">
-<tr><th class="head">Browser</th>
-<th class="head">Upload limit</th>
-</tr>
-</thead>
-<tbody valign="top">
-<tr><td>IE &lt;= 8</td>
-<td>2gb</td>
-</tr>
-<tr><td>IE &gt;= 9</td>
-<td>no limit</td>
-</tr>
-<tr><td>Firefox &lt;= 16</td>
-<td>2gb</td>
-</tr>
-<tr><td>Firefox &gt;= 17</td>
-<td>no limit</td>
-</tr>
-<tr><td>Chrome</td>
-<td>no limit</td>
-</tr>
-<tr><td>Opera &gt;= 10</td>
-<td>no limit</td>
-</tr>
-</tbody>
-</table>
-<p>Sources:</p>
-<ul class="simple">
-<li><a class="reference external" href="http://www.motobit.com/help/scptutl/pa98.htm">http://www.motobit.com/help/scptutl/pa98.htm</a></li>
-<li><a class="reference external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=215450">https://bugzilla.mozilla.org/show_bug.cgi?id=215450</a></li>
-<li><a class="reference external" href="http://blogs.msdn.com/b/ieinternals/archive/2011/03/10/wininet-internet-explorer-file-download-and-upload-maximum-size-limits.aspx">http://blogs.msdn.com/b/ieinternals/archive/2011/03/10/wininet-internet-explorer-file-download-and-upload-maximum-size-limits.aspx</a></li>
-</ul>
-</div>
-</div>
-<div class="section" id="web-server-configuration">
-<h1><a class="toc-backref" href="#id10">Web-server Configuration</a></h1>
-<div class="section" id="apache-mod-php">
-<h2><a class="toc-backref" href="#id11">Apache/mod_php</a></h2>
-<p>With internal authentication:</p>
-<pre class="literal-block">
-&lt;Directory /your-installation-directory&gt;
- AcceptPathInfo On
- AllowOverride Limit
- Options -Indexes
- DirectoryIndex index.php index.html
-&lt;/Directory&gt;
-</pre>
-<p>With external authentication:</p>
-<pre class="literal-block">
-&lt;Directory /your-installation-directory&gt;
- # Normal DL configuration
- AcceptPathInfo On
- AllowOverride Limit
- Options -Indexes
- DirectoryIndex index.php index.html
-
- # Require a Basic authentication scheme for admin/rest.php
- &lt;FilesMatch &quot;^(admin|rest)\.php$&quot;&gt;
- # The scheme must be Basic
- AuthType Basic
- AuthName &quot;Restricted Area&quot;
- Require valid-user
- Satisfy any
-
- # You'll need to provide a valid source for passwords using either the
- # following or some other authentication source (such as LDAP)
- AuthBasicProvider file
- AuthUserFile /path/to/passwd/file
- &lt;/FilesMatch&gt;
-&lt;/Directory&gt;
-</pre>
-<p>With LDAP or ActiveDirectory authentication:</p>
-<pre class="literal-block">
-&lt;Directory /your-installation-directory&gt;
- # Normal DL configuration
- AcceptPathInfo On
- AllowOverride Limit
- Options -Indexes
- DirectoryIndex index.php index.html
-
- # Require a Basic authentication scheme for admin/rest.php
- &lt;FilesMatch &quot;^(admin|rest)\.php$&quot;&gt;
- # The scheme must be Basic
- AuthType Basic
- AuthName &quot;Restricted Area&quot;
- Require valid-user
- Satisfy any
-
- # Use the LDAP provider (just an example query)
- AuthBasicProvider ldap
- AuthzLDAPAuthoritative off
- AuthLDAPURL ldap://XXXXXX:XXXX/ou=XXXX,dc=XXXX,dc=XXX?sAMAccountName?sub?(objectClass=*)
- AuthLDAPBindDN &quot;cn=XXXX,ou=XXXXX,dc=XXX,dc=XXX&quot;
- AuthLDAPBindPassword &quot;XXXXX&quot;
- &lt;/FilesMatch&gt;
-&lt;/Directory&gt;
-</pre>
-</div>
-<div class="section" id="apache-fastcgi">
-<h2><a class="toc-backref" href="#id12">Apache/FastCGI</a></h2>
-<p>FastCGI support in Apache up to 2.2.x is severely lacking with all the
-available modules: <tt class="docutils literal">mod_fcgi</tt>, <tt class="docutils literal">mod_fcgid</tt> (now merged officially into
-Apache's <tt class="docutils literal">mod_fcgi</tt>) and <tt class="docutils literal">mod_fastcgi</tt>.</p>
-<ul class="simple">
-<li><tt class="docutils literal">mod_fcgi</tt> and <tt class="docutils literal">mod_fcgid</tt> buffer the entire request in memory before
-handing-off the request to PHP, meaning that the maximal upload limit is
-bound to your available memory at the time of the request, independently of
-how PHP is setup. This is a known, old <a class="reference external" href="http://sourceforge.net/mailarchive/forum.php?thread_name=48485BDC.1020204&#64;oxeva.fr&amp;forum_name=mod-fcgid-users">bug</a> that's still present in both
-<tt class="docutils literal">mod_fcgi</tt> 2.2.14 and <tt class="docutils literal">mod_fcgid</tt> 2.3.4. There is no known work-around:
-either use <tt class="docutils literal">mod_php</tt> or use a different server.</li>
-<li><tt class="docutils literal">mod_fastcgi</tt> has been proved to be slow (and sometimes unstable) in most
-configurations. It is not advisable to use PHP with <tt class="docutils literal">mod_fastcgi</tt>.</li>
-</ul>
-<p>For the REST service to work, independently of the authentication method,
-<tt class="docutils literal">mod_rewrite</tt> needs to be enabled and configured as follows:</p>
-<pre class="literal-block">
-&lt;Directory /your-installation-directory&gt;
- # Normal DL configuration
- AcceptPathInfo On
- AllowOverride Limit
- Options -Indexes
- DirectoryIndex index.php index.html
-
- &lt;FilesMatch &quot;^(admin|rest)\.php$&quot;&gt;
- # Forward the credentials for the PHP process
- RewriteEngine on
- RewriteCond %{HTTP:Authorization} ^(.*)
- RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
- &lt;/FilesMatch&gt;
-&lt;/Directory&gt;
-</pre>
-<p>This is required to correctly pass the <tt class="docutils literal">Authorization</tt> header to the PHP
-process.</p>
-<p>If you want to enable HTTP/External authentication, just add the usual
-authorization configuration as well:</p>
-<pre class="literal-block">
-&lt;Directory /your-installation-directory&gt;
- # Normal DL configuration
- AcceptPathInfo On
- AllowOverride Limit
- Options -Indexes
- DirectoryIndex index.php index.html
- &lt;FilesMatch &quot;^(admin|rest)\.php$&quot;&gt;
- # Forward the credentials for the PHP process
- RewriteEngine on
- RewriteCond %{HTTP:Authorization} ^(.*)
- RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
-
- # Require a Basic authentication scheme for admin/rest.php
- AuthType Basic
- AuthName &quot;Restricted Area&quot;
- ...
- Require valid-user
- &lt;/FilesMatch&gt;
-&lt;/Directory&gt;
-</pre>
-</div>
-<div class="section" id="lighttpd-fastcgi">
-<h2><a class="toc-backref" href="#id13">Lighttpd/FastCGI</a></h2>
-<p>PHP/FastCGI works fine with Lighttpd 1.4.x without any special setup. The
-following configuration is required to protect the include directories:</p>
-<pre class="literal-block">
-$HTTP[&quot;url&quot;] =~ &quot;^/dl(?:/|/.*/)include/&quot; {
- url.access-deny = ( &quot;&quot; )
-}
-</pre>
-<p>You can also enable external authentication with the following:</p>
-<pre class="literal-block">
-$HTTP[&quot;url&quot;] =~ &quot;^/dl/(?:admin|rest)\.php$&quot; {
- auth.require += ( &quot;&quot; =&gt; (
- &quot;method&quot; =&gt; &quot;basic&quot;,
- &quot;realm&quot; =&gt; &quot;Restricted Area&quot;,
- &quot;require&quot; =&gt; &quot;valid-user&quot;
- ) )
-}
-</pre>
-</div>
-<div class="section" id="nginx-fastcgi">
-<h2><a class="toc-backref" href="#id14">Nginx/FastCGI</a></h2>
-<p>Nginx in combination with PHP/FastCGI works fine but needs special configuration to
-setup <tt class="docutils literal">PATH_INFO</tt> correctly. Here is an example configuration with DL
-installed as a subdirectory in the document root:</p>
-<pre class="literal-block">
-location ^~ /dl {
- # Protect the include directories
- location ~ ^/dl(?:/|/.*/)include {
- deny all;
- }
-
- index index.php index.html;
- try_files $uri $uri/ =404;
-
- # Enable PHP
- location ~ \.php(?:$|/) {
- include fastcgi_params;
-
- # Set maximum body size (should be the same as PHP's post_max_size)
- client_max_body_size 512M;
-
- # Setup PATH_INFO (http://trac.nginx.org/nginx/ticket/321)
- fastcgi_split_path_info ^(.+\.php)(/.+)$;
- set $path_info $fastcgi_path_info;
- fastcgi_param PATH_INFO $path_info;
-
- try_files $fastcgi_script_name =404;
-
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_index index.php;
- fastcgi_pass unix:/var/run/php5-fpm.sock;
- }
-}
-</pre>
-</div>
-</div>
-<div class="section" id="ticket-expiration">
-<h1><a class="toc-backref" href="#id15">Ticket expiration</a></h1>
-<p>Ticket expiration can be either performed internally to DL (the default), or by
-using the external <tt class="docutils literal">include/scripts/expire.php</tt> utility with a cron job. This
-preference can be set by controlling the <tt class="docutils literal">$gcInternal</tt> parameter.</p>
-<p>The internal method requires no setup, but the external method has the added
-advantage of not interrupting the web interface during the expiration process,
-and also ensures that the spool is emptied when DL itself is not used actively.</p>
-<div class="section" id="internal-method">
-<h2><a class="toc-backref" href="#id16">Internal method</a></h2>
-<p>Expiration is usually performed aggressively at every page request. You can
-control this behavior (thus reducing the DB pressure) by tuning the
-<tt class="docutils literal">$gcProbability</tt> and <tt class="docutils literal">$gcLimit</tt> parameters.</p>
-<p>If you notice too much load on your DB, start by lowering <tt class="docutils literal">$gcProbability</tt> to
-0.5 and set <tt class="docutils literal">$gcLimit</tt> to roughly the number of active tickets currently
-present in your DB.</p>
-<p>Continue to lower <tt class="docutils literal">$gcProbability</tt> even further until the load becomes
-acceptable. When the load is acceptable, but queries take too long, reduce
-<tt class="docutils literal">$gcLimit</tt>.</p>
-</div>
-<div class="section" id="external-method">
-<h2><a class="toc-backref" href="#id17">External method</a></h2>
-<p>Simply call <tt class="docutils literal">include/scripts/expire.php</tt> within a cron job, which should be
-executed with <em>the same user as the web server</em>. Executing the script once a
-day is sufficient for low traffic websites, but can be executed as often as
-needed. <tt class="docutils literal">$gcLimit</tt> still controls how many tickets are expired for each run
-to limit the execution time.</p>
-</div>
-</div>
-<div class="section" id="upgrading-from-an-earlier-version">
-<h1><a class="toc-backref" href="#id18">Upgrading from an earlier version</a></h1>
-<ul>
-<li><p class="first">Backup your current <tt class="docutils literal">config.php</tt> file and spool directory.</p>
-</li>
-<li><p class="first">Overwrite the DL installation directory with the new copy.</p>
-</li>
-<li><p class="first">Either copy over the old <tt class="docutils literal">config.php</tt> file or customize the new version.</p>
-</li>
-<li><p class="first">Run <tt class="docutils literal">dbupgrade.php</tt> as your web server user:</p>
-<pre class="literal-block">
-cd /your-installation-directory/include/scripts
-php dbupgrade.php
-</pre>
-</li>
-<li><p class="first">Test your new setup.</p>
-</li>
-</ul>
-</div>
-<div class="section" id="internationalization-support">
-<h1><a class="toc-backref" href="#id19">Internationalization support</a></h1>
-<p>DL has been translated in several languages and will attempt to detect the
-correct locale of the browser and use it automatically when available. If no
-matching translation can be found, a default will be used, which is configured
-to be English in the main distribution. The user can however switch the
-language anytime.</p>
-<p>Adding a new translation is easy for anyone familiar with the <cite>gettext</cite> tools:
-you don't need programming knowledge. If you want to contribute a new language,
-or suggest a better translation, we recommend to subscribe to the mailing list
-and ask for guidance. We really appreciate your help.</p>
-<div class="section" id="contributing-updating-a-translation">
-<h2><a class="toc-backref" href="#id20">Contributing/updating a translation</a></h2>
-<p>Contributing a new translation is easy enough:</p>
-<ul>
-<li><p class="first">Edit <tt class="docutils literal">htdocs/include/lang.php</tt> and add your new language name and alias to
-<tt class="docutils literal">$langData</tt>, as done for the other languages.</p>
-</li>
-<li><p class="first">Execute:</p>
-<pre class="literal-block">
-cd htdocs/include/scripts/
-./langgen.php
-</pre>
-<p>to freshen the strings to be translated.</p>
-</li>
-<li><p class="first">Translate the generated <tt class="docutils literal">messages.po</tt> in the directory
-<tt class="docutils literal"><span class="pre">htdocs/include/locale/&lt;locale_NAME&gt;/LC_MESSAGES/</span></tt> using a text editor, or
-by using <a class="reference external" href="http://poedit.sourceforge.net/">PoEdit</a>, or any other &quot;po&quot; editing tool.</p>
-</li>
-<li><p class="first">Optionally translate the user guide, which is located in
-<tt class="docutils literal">htdocs/include/static/guide/</tt>.</p>
-<p>Copy the english directory tree into a new tree with the new locale name and
-translate <tt class="docutils literal">index.rst</tt>. <tt class="docutils literal">index.html</tt> is regenerated automatically.</p>
-</li>
-<li><p class="first">To test/update the translations run <tt class="docutils literal">langupd.php</tt>:</p>
-<pre class="literal-block">
-cd htdocs/include/scripts/
-./langupd.php
-</pre>
-</li>
-</ul>
-</div>
-</div>
-<div class="section" id="usage">
-<h1><a class="toc-backref" href="#id21">Usage</a></h1>
-<p>DL should be usable by users without any training. The web interface must be
-self-explanatory. If you find the usage to be difficult or that the interface
-could be improved, <strong>it's a bug</strong>. Please let us know.</p>
-<div class="section" id="command-line-client-dl-cli">
-<h2><a class="toc-backref" href="#id22">Command-line client: <tt class="docutils literal"><span class="pre">dl-cli</span></tt></a></h2>
-<p>A command-line client to the REST interface is included in the distribution in
-<tt class="docutils literal"><span class="pre">client/dl-cli.py</span></tt>. This client requires a simple text configuration file, by
-default stored in <tt class="docutils literal"><span class="pre">~/.dl.rc</span></tt>, containing the following values:</p>
-<ul class="simple">
-<li>url: REST URL of the service</li>
-<li>user: your user name</li>
-<li>pass (optional): your password (if not specified, you will be prompted for it
-by the client)</li>
-<li>passcmd (optional): invoke the supplied command to obtain the password</li>
-<li>verify (optional): &quot;true&quot; or &quot;false&quot;: enable/disable SSL verification
-(might be required for testing, but defaults to true)</li>
-<li>email (optional): default email address for grant notifications</li>
-<li>fingerprint: Validate the server against the specified certificate or
-fingerprint (See <a class="reference internal" href="#public-key-pinning">Public key pinning</a>).</li>
-</ul>
-<p>An example:</p>
-<pre class="literal-block">
-url=https://dl.example.com/rest.php
-user=test
-pass=test
-</pre>
-<p>Simply run the command with no arguments to see usage information. At least
-Python 2.7 is required (with Python 3+ being recommended), with the &quot;PycURL&quot;
-and &quot;ConfigObj&quot; modules installed. Under Debian/Ubuntu systems you can install
-the required dependencies by doing the following:</p>
-<pre class="literal-block">
-sudo apt-get install python3-pycurl python3-configobj
-</pre>
-</div>
-<div class="section" id="graphical-client-dl-wx">
-<h2><a class="toc-backref" href="#id23">Graphical client: <tt class="docutils literal"><span class="pre">dl-wx</span></tt></a></h2>
-<p>A graphical client is also included in the distribution, which allows to create
-tickets easily from the system's taskbar. The client can be run by executing
-<tt class="docutils literal"><span class="pre">client/dl-wx/dl-wx.py</span></tt> or by downloading an <a class="reference external" href="https://www.thregr.org/~wavexx/software/dl/dl-wx.html">executable client</a>.</p>
-<p>Upon first execution the user will be prompted for the basic configuration.
-After that all DL functions can be operated through the taskbar icon:</p>
-<ul class="simple">
-<li>Left-clicking on the taskbar will create a new ticket using the default
-settings.</li>
-<li>Right-clicking allows to select different actions.</li>
-<li>On OSX, you can drop files directly on the dock.</li>
-</ul>
-<p>At least Python 2.7 is required, with the &quot;ConfigObj&quot;, &quot;PycURL&quot; and &quot;wxPython&quot;
-modules installed. Under Debian/Ubuntu systems you can install the required
-dependencies by doing the following:</p>
-<pre class="literal-block">
-sudo apt-get install python-pycurl python-configobj python-wxgtk2.8
-</pre>
-<p><tt class="docutils literal"><span class="pre">dl-cli</span></tt> and <tt class="docutils literal"><span class="pre">dl-wx</span></tt> share the same configuration file, so both can be used
-interchangeably.</p>
-<p>A <tt class="docutils literal"><span class="pre">dl-wx</span></tt> pre-built binary is also available online on the <a class="reference external" href="https://www.thregr.org/~wavexx/software/dl/dl-wx.html">dl-wx</a> page, which
-includes installation instructions and a simple tutorial.</p>
-</div>
-<div class="section" id="public-key-pinning">
-<h2><a class="toc-backref" href="#id24">Public key pinning</a></h2>
-<p>The <cite>fingerprint</cite> option in the <tt class="docutils literal"><span class="pre">~/.dl.rc</span></tt> configuration file implements
-public key pinning, and supports any value directly accepted by <a class="reference external" href="https://curl.haxx.se/libcurl/c/CURLOPT_PINNEDPUBLICKEY.html">cURL</a>.</p>
-<p>It can be a path to a DER/PEM certificate file, or a SHA256 hash of the public
-key of the host. The hash can be either a hex-encoded string (with optional
-colon separators), or a string starting with <tt class="docutils literal">sha256//</tt> and followed by a
-base64-encoded value of the hash.</p>
-<p>The quickest way to obtain the fingerprint is to use curl directly:</p>
-<pre class="literal-block">
-curl -vkI --pinnedpubkey 'sha256//' https://example.com/
-</pre>
-<p>Look for the &quot;public key hash&quot; in the generated output.</p>
-</div>
-<div class="section" id="thunderbird-integration">
-<h2><a class="toc-backref" href="#id25">Thunderbird integration</a></h2>
-<p>The bundled extension &quot;Thunderbird-Filelink-DL&quot; integrates with the new
-Thunderbird's <a class="reference external" href="https://support.mozillamessaging.com/en-US/kb/filelink-large-attachments">Filelink</a> functionality, by using the REST service provided by DL
-0.10 and onward. The extension allows to convert large attachments to links
-automatically, directly within the Composer window.</p>
-<p>The extension also allows the user to generate/insert a new upload grant in the
-current message from the composer window. Both a menu command (under &quot;Tools&quot; ..
-&quot;Insert upload grant&quot;) and a toolbar item (that you manually need to drag in
-the composer toolbar) are provided.</p>
-<p>To install the extension, go to Thunderbird's &quot;Tools&quot; .. &quot;Addons&quot; menu, and
-click on the &quot;Settings&quot; icon just next to the search bar. Select &quot;Install
-Add-on from file...&quot; and choose the file <tt class="docutils literal"><span class="pre">client/thunderbird-filelink-dl.xpi</span></tt>
-as provided in the distribution.</p>
-<p>See full installation and usage instructions on the <a class="reference external" href="https://www.thregr.org/~wavexx/software/dl/thunderbird.html">extension</a> web page.</p>
-</div>
-</div>
-<div class="section" id="general-support-mailing-list">
-<h1><a class="toc-backref" href="#id26">General/support mailing list</a></h1>
-<dl class="docutils">
-<dt>&lt;<a class="reference external" href="mailto:dl-ticket-service&#64;thregr.org">dl-ticket-service&#64;thregr.org</a>&gt;:</dt>
-<dd>Go-to list for general discussions, troubleshooting and suggestions. You can
-subscribe to <cite>dl-ticket-service</cite> by either sending an empty email to
-&lt;<a class="reference external" href="mailto:dl-ticket-service+subscribe&#64;thregr.org">dl-ticket-service+subscribe&#64;thregr.org</a>&gt; or by using <a class="reference external" href="http://www.gmane.org/">GMane</a> (group
-&quot;gmane.comp.web.dl-ticket-service.general&quot;). The archives are accessible via
-web through <a class="reference external" href="https://www.mail-archive.com/dl-ticket-service&#64;thregr.org/">https://www.mail-archive.com/dl-ticket-service&#64;thregr.org/</a> or
-via news directly.</dd>
-<dt>&lt;<a class="reference external" href="mailto:dl-announces&#64;thregr.org">dl-announces&#64;thregr.org</a>&gt;:</dt>
-<dd>DL release (and release candidate) announcements (<em>read-only</em> list). Very low
-traffic. To subscribe, send an email to &lt;<a class="reference external" href="mailto:dl-announces+subscribe&#64;thregr.org">dl-announces+subscribe&#64;thregr.org</a>&gt;.</dd>
-<dt>&lt;<a class="reference external" href="mailto:dl-translators&#64;thregr.org">dl-translators&#64;thregr.org</a>&gt;:</dt>
-<dd>Mailing list reserved for translators coordination.</dd>
-</dl>
-<p>You can contact the main author directly at &lt;<a class="reference external" href="mailto:wavexx&#64;thregr.org">wavexx&#64;thregr.org</a>&gt;, though using
-the general list is encouraged.</p>
-</div>
-<div class="section" id="customisation-and-development">
-<h1><a class="toc-backref" href="#id27">Customisation and development</a></h1>
-<p>You are encouraged to change DL as you see fit under the terms of the GNU GPL 2
-license, or (at your option) any later version. DL's GIT repository is publicly
-accessible at:</p>
-<blockquote>
-<a class="reference external" href="https://github.com/DownloadTicketService/dl">https://github.com/DownloadTicketService/dl</a></blockquote>
-<p>or at <tt class="docutils literal"><span class="pre">git://src.thregr.org/dl</span></tt></p>
-<div class="section" id="development-releases">
-<h2><a class="toc-backref" href="#id28">Development releases</a></h2>
-<p>Development releases directly downloaded from git do not include pre-processed
-files. To build the localization data <cite>gettext</cite> and <a class="reference external" href="http://docutils.sourceforge.net/">docutils</a> need to be
-installed. You'll then need to execute:</p>
-<pre class="literal-block">
-cd htdocs/include/scripts/
-./langupd.php
-</pre>
-<p>To build the Thunderbird add-on, the Thunderbird SDK needs to be installed as
-well. You might need to change the paths inside
-<tt class="docutils literal"><span class="pre">client/thunderbird-filelink-dl/config_build.sh</span></tt> (which is tuned for Debian's
-<tt class="docutils literal"><span class="pre">thunderbird-dev</span></tt> package) and execute:</p>
-<pre class="literal-block">
-cd client/thunderbird-filelink-dl/
-./build.sh
-</pre>
-<p>Database schema changes are <em>not</em> gracefully handled while following a
-development release. Do not run development releases on a production
-environment.</p>
-</div>
-</div>
-<div class="section" id="authors-and-copyright">
-<h1><a class="toc-backref" href="#id29">Authors and Copyright</a></h1>
-<p>&quot;dl&quot; can be found at <a class="reference external" href="https://www.thregr.org/~wavexx/software/dl/">https://www.thregr.org/~wavexx/software/dl/</a></p>
-<div class="line-block">
-<div class="line">&quot;dl&quot; is distributed under GNU GPLv2+, WITHOUT ANY WARRANTY.</div>
-<div class="line">Copyright(c) 2007-2017 by Yuri D'Elia &lt;<a class="reference external" href="mailto:wavexx&#64;thregr.org">wavexx&#64;thregr.org</a>&gt;.</div>
-</div>
-<p>dl's GIT repository is publicly accessible at:</p>
-<blockquote>
-<a class="reference external" href="https://github.com/DownloadTicketService/dl">https://github.com/DownloadTicketService/dl</a></blockquote>
-<p>or at <tt class="docutils literal"><span class="pre">git://src.thregr.org/dl</span></tt></p>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/README.rst dl-master/README.rst
--- dl-0.18.1/README.rst 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/README.rst 2021-03-16 18:59:58.000000000 -0400
@@ -302,7 +302,6 @@
AuthType Basic
AuthName "Restricted Area"
Require valid-user
- Satisfy any
# You'll need to provide a valid source for passwords using either the
# following or some other authentication source (such as LDAP)
@@ -326,7 +325,6 @@
AuthType Basic
AuthName "Restricted Area"
Require valid-user
- Satisfy any
# Use the LDAP provider (just an example query)
AuthBasicProvider ldap
@@ -697,7 +695,7 @@
You can contact the main author directly at <wavexx@thregr.org>, though using
the general list is encouraged.
-.. _GMane: http://www.gmane.org/
+.. _GMane: https://news.gmane.io/
Customisation and development
diff -Nur dl-0.18.1/RESTAPI.html dl-master/RESTAPI.html
--- dl-0.18.1/RESTAPI.html 2017-09-06 12:09:40.000000000 -0400
+++ dl-master/RESTAPI.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,656 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>DL REST API</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="dl-rest-api">
-<h1 class="title">DL REST API</h1>
-
-<div class="contents topic" id="contents">
-<p class="topic-title first">Contents</p>
-<ul class="simple">
-<li><a class="reference internal" href="#outline-of-the-api" id="id1">Outline of the API</a></li>
-<li><a class="reference internal" href="#available-requests" id="id2">Available requests</a><ul>
-<li><a class="reference internal" href="#info" id="id3">info</a></li>
-<li><a class="reference internal" href="#newticket" id="id4">newticket</a></li>
-<li><a class="reference internal" href="#newgrant" id="id5">newgrant</a></li>
-<li><a class="reference internal" href="#purgeticket" id="id6">purgeticket</a></li>
-</ul>
-</li>
-<li><a class="reference internal" href="#curl-examples" id="id7"><tt class="docutils literal">curl</tt> examples</a></li>
-<li><a class="reference internal" href="#programming-apis" id="id8">Programming APIs</a><ul>
-<li><a class="reference internal" href="#python" id="id9">Python</a></li>
-</ul>
-</li>
-</ul>
-</div>
-<p>Since version 0.10 DL offers a &quot;RESTful&quot; HTTP API that allows inter-operation
-between other services and/or native programs easily.</p>
-<div class="section" id="outline-of-the-api">
-<h1><a class="toc-backref" href="#id1">Outline of the API</a></h1>
-<p>Every request is gated through the &quot;/rest.php&quot; page (or simply &quot;/rest&quot;,
-depending on the configuration), which is directly on the root of the web
-service, for example:</p>
-<pre class="literal-block">
-https://dl.example.com/rest.php
-</pre>
-<p>Each action is directly appended to the URI space, followed by parameters (if
-any):</p>
-<pre class="literal-block">
-/rest/request[/parameters]
-</pre>
-<p>Every request must be performed via the appropriate HTTP method (either &quot;GET&quot;
-or &quot;POST&quot;), and must always include HTTP's &quot;Basic&quot; authorization credentials.</p>
-<p>The credentials must also be replicated in a second header &quot;X-Authorization&quot;
-(which follows the same syntax as a normal &quot;Basic&quot; authorization scheme).</p>
-<p>&quot;POST&quot; requests are <tt class="docutils literal"><span class="pre">x-www-form-urlencoded</span></tt> and must also include:</p>
-<ul class="simple">
-<li>A JSON-encoded &quot;msg&quot; parameter, with arguments defined by the request. This
-parameter should always be present, even when empty.</li>
-<li>When needed, a &quot;file&quot; parameter with the file to be attached.</li>
-</ul>
-<p>The output of every request can be:</p>
-<ul>
-<li><p class="first">An HTTP error code only (400, 401, 500, etc).</p>
-</li>
-<li><p class="first">An HTTP error code with a JSON-encoded message with an &quot;error&quot; term:</p>
-<pre class="literal-block">
-{&quot;error&quot;:&quot;error description&quot;}
-</pre>
-</li>
-<li><p class="first">A successful HTTP status (200), with a JSON-encoded message (even if empty)
-containing the specific request output.</p>
-</li>
-</ul>
-</div>
-<div class="section" id="available-requests">
-<h1><a class="toc-backref" href="#id2">Available requests</a></h1>
-<div class="section" id="info">
-<h2><a class="toc-backref" href="#id3">info</a></h2>
-<p>An &quot;info&quot; request returns the service defaults and statistics.</p>
-<p>Since: 0.10</p>
-<p>Request method: &quot;GET&quot;</p>
-<p>Request parameters: None</p>
-<p>Returned values:</p>
-<ul class="simple">
-<li>version (string): DL version.</li>
-<li>masterpath (string): root URL of the service.</li>
-<li>url (string): configurable reference URL for the service.</li>
-<li>maxsize (integer): maximum upload size (in bytes).</li>
-<li>defaults: service defaults:<ul>
-<li>grant:<ul>
-<li>total (integer): maximal number of seconds for grants.</li>
-<li>lastul (integer, since 0.18): maximal number of seconds after last upload for grants.</li>
-<li>maxul (integer, since 0.18): maximal number of uploads for grants.</li>
-</ul>
-</li>
-<li>ticket:<ul>
-<li>total (integer): maximal number of seconds for tickets.</li>
-<li>lastdl (integer): maximal number of seconds after last download for tickets.</li>
-<li>maxdl (integer): maximal number of downloads for tickets.</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-<p>Example request:</p>
-<pre class="code http literal-block">
-<span class="name function">GET</span> <span class="name namespace">/rest/info</span> <span class="keyword reserved">HTTP</span><span class="operator">/</span><span class="literal number">1.0</span>
-<span class="name attribute">Host</span><span class="operator">:</span> <span class="literal">dl.example.com</span>
-<span class="name attribute">Authorization</span><span class="operator">:</span> <span class="literal">Basic dGVzdDp0ZXN0</span>
-<span class="name attribute">X-Authorization</span><span class="operator">:</span> <span class="literal">Basic dGVzdDp0ZXN0</span>
-</pre>
-<p>Example answer:</p>
-<pre class="code http literal-block">
-<span class="keyword reserved">HTTP</span><span class="operator">/</span><span class="literal number">1.1</span> <span class="literal number">200</span> <span class="name exception">OK</span>
-<span class="name attribute">Content-Type</span><span class="operator">:</span> <span class="literal">application/json</span>
-</pre>
-<pre class="code json literal-block">
-<span class="punctuation">{</span>
- <span class="name tag">&quot;version&quot;</span><span class="punctuation">:</span> <span class="literal string double">&quot;0.11&quot;</span><span class="punctuation">,</span>
- <span class="name tag">&quot;url&quot;</span><span class="punctuation">:</span> <span class="literal string double">&quot;http:\/\/www.thregr.org\/~wavexx\/software\/dl\/&quot;</span><span class="punctuation">,</span>
- <span class="name tag">&quot;masterpath&quot;</span><span class="punctuation">:</span> <span class="literal string double">&quot;http:\/\/dl.example.com\/&quot;</span><span class="punctuation">,</span>
- <span class="name tag">&quot;maxsize&quot;</span><span class="punctuation">:</span> <span class="literal number integer">209715200</span><span class="punctuation">,</span>
- <span class="name tag">&quot;defaults&quot;</span><span class="punctuation">:</span>
- <span class="punctuation">{</span>
- <span class="name tag">&quot;grant&quot;</span><span class="punctuation">:</span>
- <span class="punctuation">{</span>
- <span class="name tag">&quot;total&quot;</span><span class="punctuation">:</span> <span class="literal number integer">31536000</span>
- <span class="punctuation">},</span>
- <span class="name tag">&quot;ticket&quot;</span><span class="punctuation">:</span>
- <span class="punctuation">{</span>
- <span class="name tag">&quot;total&quot;</span><span class="punctuation">:</span> <span class="literal number integer">31536000</span><span class="punctuation">,</span>
- <span class="name tag">&quot;lastdl&quot;</span><span class="punctuation">:</span> <span class="literal number integer">2592000</span><span class="punctuation">,</span>
- <span class="name tag">&quot;maxdl&quot;</span><span class="punctuation">:</span> <span class="literal number integer">0</span>
- <span class="punctuation">}</span>
- <span class="punctuation">}</span>
-<span class="punctuation">}</span>
-</pre>
-</div>
-<div class="section" id="newticket">
-<h2><a class="toc-backref" href="#id4">newticket</a></h2>
-<p>A &quot;newticket&quot; request creates a new ticket.</p>
-<p>Since: 0.10</p>
-<p>Request method: &quot;POST&quot;</p>
-<p>Request parameters: None</p>
-<p>POST &quot;msg&quot; object parameters:</p>
-<ul class="simple">
-<li>comment (string): comment for the ticket.</li>
-<li>pass (string): password required for the ticket.</li>
-<li>pass_send (boolean, since: 0.18): send password in email notifications
-(defaults to true when unset)</li>
-<li>ticket_total (integer): maximal number of seconds.</li>
-<li>ticket_lastdl (integer): maximal number of seconds after last download.</li>
-<li>ticket_maxdl (integer): maximal number of downloads for the ticket.</li>
-<li>notify (string): notification addresses (comma-separated list of e-mails).</li>
-<li>send_to (string): send-link-to addresses (comma-separated list of e-mails).</li>
-<li>permanent (boolean): Same as ticket_expiry=never.</li>
-<li>ticket_expiry (choice: auto/once/never/custom, since: 0.18):<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">auto:</th><td class="field-body">use server's defaults for ticket expiration</td>
-</tr>
-<tr class="field"><th class="field-name">once:</th><td class="field-body">same as ticket_maxdl=1 with server's default ticket_total</td>
-</tr>
-<tr class="field"><th class="field-name">never:</th><td class="field-body">same as ticket_total/ticket_lastdl/ticket_maxdl=0</td>
-</tr>
-<tr class="field"><th class="field-name">custom:</th><td class="field-body">requires explicit ticket_total/ticket_lastdl/ticket_maxdl</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-<p>POST &quot;file&quot; parameter:</p>
-<ul class="simple">
-<li>File to be attached (mandatory).</li>
-</ul>
-<p>Returned values:</p>
-<ul class="simple">
-<li>id (string): ticket ID.</li>
-<li>url (string): ticket URL.</li>
-</ul>
-</div>
-<div class="section" id="newgrant">
-<h2><a class="toc-backref" href="#id5">newgrant</a></h2>
-<p>A &quot;newgrant&quot; request creates a new grant.</p>
-<p>Since: 0.13</p>
-<p>Request method: &quot;POST&quot;</p>
-<p>Request parameters: None</p>
-<p>POST &quot;msg&quot; object parameters:</p>
-<ul class="simple">
-<li>notify (string): notification address (mandatory).</li>
-<li>comment (string): comment for the grant/ticket.</li>
-<li>pass (string): password required for the grant/ticket.</li>
-<li>pass_send (boolean, since: 0.18): send password in email notifications
-(defaults to true when unset)</li>
-<li>grant_total (integer): maximal number of seconds.</li>
-<li>grant_lastul (integer, since: 0.18): maximal number of seconds after the last
-upload has been triggered.</li>
-<li>grant_maxul (integer, since: 0.18): maximal number of uploads for the grant.</li>
-<li>grant_expiry (choice: auto/once/never/custom, since: 0.18):<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">auto:</th><td class="field-body">use server's defaults for grant expiration</td>
-</tr>
-<tr class="field"><th class="field-name">once:</th><td class="field-body">same as grant_maxul=1 with server's default grant_total</td>
-</tr>
-<tr class="field"><th class="field-name">never:</th><td class="field-body">same as grant_total/grant_lastul/grant_maxul=0</td>
-</tr>
-<tr class="field"><th class="field-name">custom:</th><td class="field-body">requires explicit grant_total/grant_lastul/grant_maxul</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li>ticket_total (integer): maximal number of seconds.</li>
-<li>ticket_lastdl (integer): maximal number of seconds after last download.</li>
-<li>ticket_maxdl (integer): maximal number of downloads for the ticket.</li>
-<li>send_to (string): send-link-to addresses (comma-separated list of e-mails).</li>
-<li>ticket_permanent (boolean): Same as ticket_expiry=never.</li>
-<li>ticket_expiry (choice: auto/once/never/custom, since: 0.18):<table class="docutils field-list" frame="void" rules="none">
-<col class="field-name" />
-<col class="field-body" />
-<tbody valign="top">
-<tr class="field"><th class="field-name">auto:</th><td class="field-body">use server's defaults for ticket expiration</td>
-</tr>
-<tr class="field"><th class="field-name">once:</th><td class="field-body">same as ticket_maxdl=1 with server's default ticket_total</td>
-</tr>
-<tr class="field"><th class="field-name">never:</th><td class="field-body">same as ticket_total/ticket_lastdl/ticket_maxdl=0</td>
-</tr>
-<tr class="field"><th class="field-name">custom:</th><td class="field-body">requires explicit ticket_total/ticket_lastdl/ticket_maxdl</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-<p>Returned values:</p>
-<ul class="simple">
-<li>id (string): grant ID.</li>
-<li>url (string): grant URL.</li>
-</ul>
-</div>
-<div class="section" id="purgeticket">
-<h2><a class="toc-backref" href="#id6">purgeticket</a></h2>
-<p>A &quot;purgeticket&quot; request deletes a ticket ID and its associated file, notifying
-the owner (if requested).</p>
-<p>Since: 0.11</p>
-<p>Request method: &quot;POST&quot;</p>
-<p>Request parameters:</p>
-<ul class="simple">
-<li>ticket-id: mandatory</li>
-</ul>
-<p>POST &quot;msg&quot; object parameters: None</p>
-<p>Returned values: None</p>
-<p>Example request:</p>
-<pre class="code http literal-block">
-<span class="name function">POST</span> <span class="name namespace">/rest/purgeticket/c1e3c2e0b6d5d0f0ada292c081fc4c49</span> <span class="keyword reserved">HTTP</span><span class="operator">/</span><span class="literal number">1.0</span>
-<span class="name attribute">Host</span><span class="operator">:</span> <span class="literal">dl.example.com</span>
-<span class="name attribute">Authorization</span><span class="operator">:</span> <span class="literal">Basic dGVzdDp0ZXN0</span>
-<span class="name attribute">X-Authorization</span><span class="operator">:</span> <span class="literal">Basic dGVzdDp0ZXN0</span>
-<span class="name attribute">Content-Type</span><span class="operator">:</span> <span class="literal">application/x-www-form-urlencoded</span>
-
-msg={}
-</pre>
-<p>Example answer:</p>
-<pre class="code http literal-block">
-<span class="keyword reserved">HTTP</span><span class="operator">/</span><span class="literal number">1.1</span> <span class="literal number">200</span> <span class="name exception">OK</span>
-<span class="name attribute">Content-Type</span><span class="operator">:</span> <span class="literal">application/json</span>
-
-<span class="punctuation">{}</span>
-</pre>
-</div>
-</div>
-<div class="section" id="curl-examples">
-<h1><a class="toc-backref" href="#id7"><tt class="docutils literal">curl</tt> examples</a></h1>
-<p><a class="reference external" href="https://curl.haxx.se/">curl</a> can be used to easily fiddle with the REST API.</p>
-<p>A minimal request to create a new ticket can be performed with the following
-command:</p>
-<pre class="literal-block">
-curl https://dl.example.com/rest.php/newticket \
- -F file=&#64;filename -F msg={} \
- -H 'Authorization: Basic dGVzdDp0ZXN0' \
- -H 'X-Authorization: Basic dGVzdDp0ZXN0'
-</pre>
-<p><tt class="docutils literal">&#64;filename</tt> is a special curl syntax that specifies the path to the
-filename to be posted. The basic authorization data is provided manually, as
-it needs to be replicated in the non-standard header &quot;X-Authorization&quot; anyway
-(this is used as a secondary token to prevent CSRF). You can construct the
-authorization hash on the command-line as well with the following:</p>
-<pre class="literal-block">
-echo -n 'user:password' | base64
-</pre>
-<p>Please keep in mind command-line arguments are usually visible to other users
-running on the same system, potentially exposing your password.</p>
-</div>
-<div class="section" id="programming-apis">
-<h1><a class="toc-backref" href="#id8">Programming APIs</a></h1>
-<div class="section" id="python">
-<h2><a class="toc-backref" href="#id9">Python</a></h2>
-<p>A Python API, supporting both asynchronous/synchronous operations and progress
-support can be found in the <tt class="docutils literal"><span class="pre">client/dl-wx/dl.py</span></tt> file. The API is used both
-by <tt class="docutils literal"><span class="pre">dl-wx.py</span></tt> and <tt class="docutils literal"><span class="pre">dl-cli.py</span></tt> in the same directory.</p>
-<p>A simpler stand-alone implementation which can be helpful for testing can be
-found at <tt class="docutils literal"><span class="pre">client/dl-cli.py</span></tt>.</p>
-</div>
-</div>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/THANKS.html dl-master/THANKS.html
--- dl-0.18.1/THANKS.html 2017-09-06 12:09:40.000000000 -0400
+++ dl-master/THANKS.html 1969-12-31 19:00:00.000000000 -0500
@@ -1,464 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" />
-<title>Download Ticket Service credits</title>
-<style type="text/css">
-
-/*
-:Author: David Goodger (goodger@python.org)
-:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
-:Copyright: This stylesheet has been placed in the public domain.
-
-Default cascading style sheet for the HTML output of Docutils.
-
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th {
- border: 0 }
-
-table.borderless td, table.borderless th {
- /* Override padding for "table.docutils td" with "! important".
- The right padding separates the table cells. */
- padding: 0 0.5em 0 0 ! important }
-
-.first {
- /* Override more specific margin styles with "! important". */
- margin-top: 0 ! important }
-
-.last, .with-subtitle {
- margin-bottom: 0 ! important }
-
-.hidden {
- display: none }
-
-.subscript {
- vertical-align: sub;
- font-size: smaller }
-
-.superscript {
- vertical-align: super;
- font-size: smaller }
-
-a.toc-backref {
- text-decoration: none ;
- color: black }
-
-blockquote.epigraph {
- margin: 2em 5em ; }
-
-dl.docutils dd {
- margin-bottom: 0.5em }
-
-object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
- overflow: hidden;
-}
-
-/* Uncomment (and remove this text!) to get bold-faced definition list terms
-dl.docutils dt {
- font-weight: bold }
-*/
-
-div.abstract {
- margin: 2em 5em }
-
-div.abstract p.topic-title {
- font-weight: bold ;
- text-align: center }
-
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
- margin: 2em ;
- border: medium outset ;
- padding: 1em }
-
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title {
- font-weight: bold ;
- font-family: sans-serif }
-
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title, .code .error {
- color: red ;
- font-weight: bold ;
- font-family: sans-serif }
-
-/* Uncomment (and remove this text!) to get reduced vertical space in
- compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
- margin-bottom: 0.5em }
-
-div.compound .compound-last, div.compound .compound-middle {
- margin-top: 0.5em }
-*/
-
-div.dedication {
- margin: 2em 5em ;
- text-align: center ;
- font-style: italic }
-
-div.dedication p.topic-title {
- font-weight: bold ;
- font-style: normal }
-
-div.figure {
- margin-left: 2em ;
- margin-right: 2em }
-
-div.footer, div.header {
- clear: both;
- font-size: smaller }
-
-div.line-block {
- display: block ;
- margin-top: 1em ;
- margin-bottom: 1em }
-
-div.line-block div.line-block {
- margin-top: 0 ;
- margin-bottom: 0 ;
- margin-left: 1.5em }
-
-div.sidebar {
- margin: 0 0 0.5em 1em ;
- border: medium outset ;
- padding: 1em ;
- background-color: #ffffee ;
- width: 40% ;
- float: right ;
- clear: right }
-
-div.sidebar p.rubric {
- font-family: sans-serif ;
- font-size: medium }
-
-div.system-messages {
- margin: 5em }
-
-div.system-messages h1 {
- color: red }
-
-div.system-message {
- border: medium outset ;
- padding: 1em }
-
-div.system-message p.system-message-title {
- color: red ;
- font-weight: bold }
-
-div.topic {
- margin: 2em }
-
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
- margin-top: 0.4em }
-
-h1.title {
- text-align: center }
-
-h2.subtitle {
- text-align: center }
-
-hr.docutils {
- width: 75% }
-
-img.align-left, .figure.align-left, object.align-left, table.align-left {
- clear: left ;
- float: left ;
- margin-right: 1em }
-
-img.align-right, .figure.align-right, object.align-right, table.align-right {
- clear: right ;
- float: right ;
- margin-left: 1em }
-
-img.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left }
-
-.align-center {
- clear: both ;
- text-align: center }
-
-.align-right {
- text-align: right }
-
-/* reset inner alignment in figures */
-div.align-right {
- text-align: inherit }
-
-/* div.align-center * { */
-/* text-align: left } */
-
-.align-top {
- vertical-align: top }
-
-.align-middle {
- vertical-align: middle }
-
-.align-bottom {
- vertical-align: bottom }
-
-ol.simple, ul.simple {
- margin-bottom: 1em }
-
-ol.arabic {
- list-style: decimal }
-
-ol.loweralpha {
- list-style: lower-alpha }
-
-ol.upperalpha {
- list-style: upper-alpha }
-
-ol.lowerroman {
- list-style: lower-roman }
-
-ol.upperroman {
- list-style: upper-roman }
-
-p.attribution {
- text-align: right ;
- margin-left: 50% }
-
-p.caption {
- font-style: italic }
-
-p.credits {
- font-style: italic ;
- font-size: smaller }
-
-p.label {
- white-space: nowrap }
-
-p.rubric {
- font-weight: bold ;
- font-size: larger ;
- color: maroon ;
- text-align: center }
-
-p.sidebar-title {
- font-family: sans-serif ;
- font-weight: bold ;
- font-size: larger }
-
-p.sidebar-subtitle {
- font-family: sans-serif ;
- font-weight: bold }
-
-p.topic-title {
- font-weight: bold }
-
-pre.address {
- margin-bottom: 0 ;
- margin-top: 0 ;
- font: inherit }
-
-pre.literal-block, pre.doctest-block, pre.math, pre.code {
- margin-left: 2em ;
- margin-right: 2em }
-
-pre.code .ln { color: grey; } /* line numbers */
-pre.code, code { background-color: #eeeeee }
-pre.code .comment, code .comment { color: #5C6576 }
-pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
-pre.code .literal.string, code .literal.string { color: #0C5404 }
-pre.code .name.builtin, code .name.builtin { color: #352B84 }
-pre.code .deleted, code .deleted { background-color: #DEB0A1}
-pre.code .inserted, code .inserted { background-color: #A3D289}
-
-span.classifier {
- font-family: sans-serif ;
- font-style: oblique }
-
-span.classifier-delimiter {
- font-family: sans-serif ;
- font-weight: bold }
-
-span.interpreted {
- font-family: sans-serif }
-
-span.option {
- white-space: nowrap }
-
-span.pre {
- white-space: pre }
-
-span.problematic {
- color: red }
-
-span.section-subtitle {
- /* font-size relative to parent (h1..h6 element) */
- font-size: 80% }
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px }
-
-table.docinfo {
- margin: 2em 4em }
-
-table.docutils {
- margin-top: 0.5em ;
- margin-bottom: 0.5em }
-
-table.footnote {
- border-left: solid 1px black;
- margin-left: 1px }
-
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {
- padding-left: 0.5em ;
- padding-right: 0.5em ;
- vertical-align: top }
-
-table.docutils th.field-name, table.docinfo th.docinfo-name {
- font-weight: bold ;
- text-align: left ;
- white-space: nowrap ;
- padding-left: 0 }
-
-/* "booktabs" style (no vertical lines) */
-table.docutils.booktabs {
- border: 0px;
- border-top: 2px solid;
- border-bottom: 2px solid;
- border-collapse: collapse;
-}
-table.docutils.booktabs * {
- border: 0px;
-}
-table.docutils.booktabs th {
- border-bottom: thin solid;
- text-align: left;
-}
-
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
- font-size: 100% }
-
-ul.auto-toc {
- list-style-type: none }
-
-</style>
-</head>
-<body>
-<div class="document" id="download-ticket-service-credits">
-<h1 class="title">Download Ticket Service credits</h1>
-
-<blockquote>
-Development for &quot;Download Ticket Service&quot; has been sponsored in large part by
-the EURAC's <a class="reference external" href="http://www.eurac.edu/en/research/health/biomed/Pages/default.aspx">Institute of Genetic Medicine</a>.</blockquote>
-<hr class="docutils" />
-<p>List of major contributors in alphabetical order:</p>
-<p>Arthur Fabre [<a class="reference external" href="https://github.com/arthurfabre">https://github.com/arthurfabre</a>]:</p>
-<ul class="simple">
-<li><tt class="docutils literal"><span class="pre">dl-cli</span></tt> improvements.</li>
-</ul>
-<p>Clemens Egger &lt;<a class="reference external" href="mailto:clemens.egger&#64;eurac.edu">clemens.egger&#64;eurac.edu</a>&gt;:</p>
-<ul class="simple">
-<li>Suggestions and testing.</li>
-<li>German UI/Guide translation.</li>
-</ul>
-<p>Daniel Berteaud &lt;<a class="reference external" href="mailto:daniel&#64;firewall-services.com">daniel&#64;firewall-services.com</a>&gt;:</p>
-<ul class="simple">
-<li>French translation.</li>
-<li>Several patches, webSSO support.</li>
-<li>Additional testing.</li>
-</ul>
-<p>Daniele Di Domizio &lt;<a class="reference external" href="mailto:daniele.didomizio&#64;eurac.edu">daniele.didomizio&#64;eurac.edu</a>&gt;:</p>
-<ul class="simple">
-<li>Additional testing.</li>
-</ul>
-<p>Emanuele Rosati &lt;<a class="reference external" href="mailto:emanuele.rosati&#64;gmail.com">emanuele.rosati&#64;gmail.com</a>&gt;:</p>
-<ul class="simple">
-<li>Suggestions and layout fixes.</li>
-</ul>
-<p>Fabiola Del Greco &lt;<a class="reference external" href="mailto:fabiola.delgreco&#64;eurac.edu">fabiola.delgreco&#64;eurac.edu</a>&gt;:</p>
-<ul class="simple">
-<li>Spanish UI translation.</li>
-</ul>
-<p>Guangyu Dong &lt;<a class="reference external" href="mailto:skyerce&#64;gmail.com">skyerce&#64;gmail.com</a>&gt;:</p>
-<ul class="simple">
-<li>Simplified Chinese translation.</li>
-</ul>
-<p>Guilherme Benkenstein &lt;<a class="reference external" href="mailto:gb&#64;gbti.com.br">gb&#64;gbti.com.br</a>&gt;:</p>
-<ul class="simple">
-<li>Brazilian Portuguese translation.</li>
-</ul>
-<p>Hervé Commowick &lt;<a class="reference external" href="mailto:hcommowick&#64;exosec.fr">hcommowick&#64;exosec.fr</a>&gt;:</p>
-<ul class="simple">
-<li>Progress bar patch.</li>
-</ul>
-<p>Jan Štětina &lt;<a class="reference external" href="mailto:zaantar&#64;gmail.com">zaantar&#64;gmail.com</a>&gt;:</p>
-<ul class="simple">
-<li>Czech translation.</li>
-</ul>
-<p>Johannes Martin &lt;<a class="reference external" href="mailto:johannes.martin&#64;eurac.edu">johannes.martin&#64;eurac.edu</a>&gt;:</p>
-<ul class="simple">
-<li>Android client.</li>
-</ul>
-<p>Kim Thostrup &lt;<a class="reference external" href="mailto:kim&#64;thostrup.dk">kim&#64;thostrup.dk</a>&gt;:</p>
-<ul class="simple">
-<li>DL 0.3 Skin.</li>
-<li>Suggestions and testing.</li>
-</ul>
-<p>Larissa de Clauser &lt;<a class="reference external" href="mailto:larissa.declauser&#64;eurac.edu">larissa.declauser&#64;eurac.edu</a>&gt;:</p>
-<ul class="simple">
-<li>German Guide translation.</li>
-</ul>
-<p>Maarten Schoonman &lt;<a class="reference external" href="mailto:m.s.schoonman&#64;home.nl">m.s.schoonman&#64;home.nl</a>&gt;:</p>
-<ul class="simple">
-<li>Dutch translation.</li>
-</ul>
-<p>Mokrani Rachid &lt;<a class="reference external" href="mailto:rachid.mokrani&#64;ifpenergiesnouvelles.fr">rachid.mokrani&#64;ifpenergiesnouvelles.fr</a>&gt;:</p>
-<ul class="simple">
-<li>Suggestions and testing.</li>
-<li>French UI/Guide translation.</li>
-</ul>
-<p>Олейник О.В &lt;<a class="reference external" href="mailto:oleg_oleinik&#64;mail.ru">oleg_oleinik&#64;mail.ru</a>&gt;:</p>
-<ul class="simple">
-<li>Russian translation.</li>
-</ul>
-<p>Roberto Salgado &lt;<a class="reference external" href="mailto:drober&#64;gmail.com">drober&#64;gmail.com</a>&gt;:</p>
-<ul class="simple">
-<li>Spanish UI/Guide translation.</li>
-<li>Docker image maintenance.</li>
-</ul>
-<p>RustyPixel [<a class="reference external" href="https://github.com/RustyPixel">https://github.com/RustyPixel</a>]:</p>
-<ul class="simple">
-<li>DL 0.14 Skin.</li>
-</ul>
-<p>Sébastien Le Ray &lt;<a class="reference external" href="mailto:sebastien-github&#64;orniz.org">sebastien-github&#64;orniz.org</a>&gt;:</p>
-<ul class="simple">
-<li>Thunderdbird and DL code fixes.</li>
-<li>French translation.</li>
-</ul>
-<p>Teruo IWAI &lt;<a class="reference external" href="mailto:oteru&#64;nak.ics.keio.ac.jp">oteru&#64;nak.ics.keio.ac.jp</a>&gt;:</p>
-<ul class="simple">
-<li>Japanese localization.</li>
-</ul>
-<p>Tim Booth &lt;<a class="reference external" href="mailto:tbooth&#64;ceh.ac.uk">tbooth&#64;ceh.ac.uk</a>&gt;:</p>
-<ul class="simple">
-<li>Suggestions and fixes.</li>
-</ul>
-</div>
-</body>
-</html>
diff -Nur dl-0.18.1/THANKS.rst dl-master/THANKS.rst
--- dl-0.18.1/THANKS.rst 2017-09-06 12:08:38.000000000 -0400
+++ dl-master/THANKS.rst 2021-03-16 18:59:58.000000000 -0400
@@ -29,6 +29,10 @@
* Additional testing.
+Dirk Reimers <dirk.reimers@secunet.com>:
+
+* Code auditing
+
Emanuele Rosati <emanuele.rosati@gmail.com>:
* Suggestions and layout fixes.