diff --git a/themes/default/lib/Lufi/I18N/en.po b/themes/default/lib/Lufi/I18N/en.po
index a43b895..c713bf8 100644
--- a/themes/default/lib/Lufi/I18N/en.po
+++ b/themes/default/lib/Lufi/I18N/en.po
@@ -41,7 +41,7 @@ msgstr "%1 sent you files"
msgid "%1 used your invitation to send you files:"
msgstr "%1 used your invitation to send you files:"
-#: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12
+#: lib/Lufi/Controller/Invitation.pm:160 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "%A %d %B %Y at %T"
msgstr "%A %d %B %Y at %T"
@@ -118,7 +118,7 @@ msgstr "Click on the following URL to upload files on Lufi:"
msgid "Click to open the file browser"
msgstr "Click to open the file browser"
-#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80
+#: themes/default/templates/delays.html.ep:42 themes/default/templates/invitations/my_invitations.html.ep:80
msgid "Close"
msgstr "Close"
@@ -178,7 +178,7 @@ msgstr "Delete selected files"
msgid "Deletion link"
msgstr "Deletion link"
-#: themes/default/templates/delays.html.ep:8
+#: themes/default/templates/delays.html.ep:9
msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file."
msgstr "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file."
@@ -339,7 +339,7 @@ msgstr "How to install the software on my server?"
msgid "How to report an illegal file?"
msgstr "How to report an illegal file?"
-#: themes/default/templates/delays.html.ep:7
+#: themes/default/templates/delays.html.ep:8
msgid "If you choose a delay, the file will be deleted after that delay."
msgstr "If you choose a delay, the file will be deleted after that delay."
@@ -364,12 +364,12 @@ msgid "Invert selection"
msgstr "Invert selection"
#. ($i->guest_mail, $url)
-#: lib/Lufi/Controller/Invitation.pm:171
+#: lib/Lufi/Controller/Invitation.pm:172
msgid "Invitation resent to %1.
URL: %2"
msgstr "Invitation resent to %1.
URL: %2"
#. ($invitation->guest_mail, $url)
-#: lib/Lufi/Controller/Invitation.pm:87
+#: lib/Lufi/Controller/Invitation.pm:88
msgid "Invitation sent to %1.
URL: %2"
msgstr "Invitation sent to %1.
URL: %2"
@@ -534,7 +534,7 @@ msgstr "Show zip content"
msgid "Signin"
msgstr "Signin"
-#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16
+#: lib/Lufi/Controller/Invitation.pm:284 themes/default/templates/invitations/exception.html.ep:16
msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?"
msgstr "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?"
@@ -556,7 +556,7 @@ msgid "Sorry, your invitation has expired or has been deleted. Please contact %1
msgstr "Sorry, your invitation has expired or has been deleted. Please contact %1 to have another invitation."
#. ($invitation->ldap_user_mail)
-#: lib/Lufi/Controller/Invitation.pm:276
+#: lib/Lufi/Controller/Invitation.pm:277
msgid "The URLs of your files have been sent by email to %1."
msgstr "The URLs of your files have been sent by email to %1."
@@ -581,7 +581,7 @@ msgid "The email subject can't be empty."
msgstr "The email subject can't be empty."
#. ($expire_at, $max_expire_at)
-#: lib/Lufi/Controller/Invitation.pm:51
+#: lib/Lufi/Controller/Invitation.pm:52
msgid "The expiration delay (%1) is not between 1 and %2 days."
msgstr "The expiration delay (%1) is not between 1 and %2 days."
@@ -599,17 +599,17 @@ msgid "The following email addresses are not valid: %1"
msgstr "The following email addresses are not valid: %1"
#. ($guest_mail)
-#: lib/Lufi/Controller/Invitation.pm:48
+#: lib/Lufi/Controller/Invitation.pm:49
msgid "The guest email address (%1) is unvalid."
msgstr "The guest email address (%1) is unvalid."
#. ($i->token, $i->guest_mail)
-#: lib/Lufi/Controller/Invitation.pm:150
+#: lib/Lufi/Controller/Invitation.pm:151
msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation."
msgstr "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation."
#. ($i->token)
-#: lib/Lufi/Controller/Invitation.pm:130
+#: lib/Lufi/Controller/Invitation.pm:131
msgid "The invitation %1 has been deleted."
msgstr "The invitation %1 has been deleted."
@@ -657,7 +657,7 @@ msgstr "This invitation is normally hidden"
msgid "This invitation is valid until %1."
msgstr "This invitation is valid until %1."
-#: themes/default/templates/delays.html.ep:10
+#: themes/default/templates/delays.html.ep:13
msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:"
msgstr "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:"
@@ -673,6 +673,10 @@ msgstr "URL"
msgid "Unable to copy the link(s) to your clipboard"
msgstr "Unable to copy the link(s) to your clipboard"
+#: themes/default/templates/partial/render.js.ep:13
+msgid "Unable to download the file: too much unsuccessful attempts to open a websocket. Please, contact the administrator."
+msgstr ""
+
#. ($short)
#: lib/Lufi/Controller/Files.pm:433
msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage."
@@ -773,17 +777,17 @@ msgstr "Your file is too big: %1 (maximum size allowed: %2)"
msgid "Your password is not valid. Please refresh the page to retry."
msgstr "Your password is not valid. Please refresh the page to retry."
-#: themes/default/templates/partial/render.js.ep:13
+#: themes/default/templates/partial/render.js.ep:14
msgid "Zip content:"
msgstr "Zip content:"
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:20
+#: themes/default/templates/delays.html.ep:24
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr "between %1 and %2, the file will be kept %3 day(s)."
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:22
+#: themes/default/templates/delays.html.ep:26
msgid "between %1 and %2, the file will be kept forever."
msgstr "between %1 and %2, the file will be kept forever."
@@ -796,12 +800,12 @@ msgid "expires on XXX"
msgstr "expires on XXX"
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:26
+#: themes/default/templates/delays.html.ep:30
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr "for %1 and more, the file will be kept %2 day(s)"
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:28
+#: themes/default/templates/delays.html.ep:32
msgid "for %1 and more, the file will be kept forever."
msgstr "for %1 and more, the file will be kept forever."
diff --git a/themes/default/lib/Lufi/I18N/lufi.pot b/themes/default/lib/Lufi/I18N/lufi.pot
index b0dabbd..13f4672 100644
--- a/themes/default/lib/Lufi/I18N/lufi.pot
+++ b/themes/default/lib/Lufi/I18N/lufi.pot
@@ -41,7 +41,7 @@ msgstr ""
msgid "%1 used your invitation to send you files:"
msgstr ""
-#: lib/Lufi/Controller/Invitation.pm:159 lib/Lufi/Controller/Invitation.pm:84 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12
+#: lib/Lufi/Controller/Invitation.pm:160 lib/Lufi/Controller/Invitation.pm:85 themes/default/templates/invitations/my_invitations.html.ep:51 themes/default/templates/invitations/my_invitations.html.ep:52 themes/default/templates/invitations/my_invitations.html.ep:53 themes/default/templates/invitations/notification_files_sent.mail.ep:12
msgid "%A %d %B %Y at %T"
msgstr ""
@@ -118,7 +118,7 @@ msgstr ""
msgid "Click to open the file browser"
msgstr ""
-#: themes/default/templates/delays.html.ep:38 themes/default/templates/invitations/my_invitations.html.ep:80
+#: themes/default/templates/delays.html.ep:42 themes/default/templates/invitations/my_invitations.html.ep:80
msgid "Close"
msgstr ""
@@ -178,7 +178,7 @@ msgstr ""
msgid "Deletion link"
msgstr ""
-#: themes/default/templates/delays.html.ep:8
+#: themes/default/templates/delays.html.ep:9
msgid "Don't worry: if a user begins to download the file before the expiration and the download ends after the expiration, he will be able to get the file."
msgstr ""
@@ -339,7 +339,7 @@ msgstr ""
msgid "How to report an illegal file?"
msgstr ""
-#: themes/default/templates/delays.html.ep:7
+#: themes/default/templates/delays.html.ep:8
msgid "If you choose a delay, the file will be deleted after that delay."
msgstr ""
@@ -364,12 +364,12 @@ msgid "Invert selection"
msgstr ""
#. ($i->guest_mail, $url)
-#: lib/Lufi/Controller/Invitation.pm:171
+#: lib/Lufi/Controller/Invitation.pm:172
msgid "Invitation resent to %1.
URL: %2"
msgstr ""
#. ($invitation->guest_mail, $url)
-#: lib/Lufi/Controller/Invitation.pm:87
+#: lib/Lufi/Controller/Invitation.pm:88
msgid "Invitation sent to %1.
URL: %2"
msgstr ""
@@ -534,7 +534,7 @@ msgstr ""
msgid "Signin"
msgstr ""
-#: lib/Lufi/Controller/Invitation.pm:283 themes/default/templates/invitations/exception.html.ep:16
+#: lib/Lufi/Controller/Invitation.pm:284 themes/default/templates/invitations/exception.html.ep:16
msgid "Sorry, the invitation doesn’t exist. Are you sure you are on the right URL?"
msgstr ""
@@ -556,7 +556,7 @@ msgid "Sorry, your invitation has expired or has been deleted. Please contact %1
msgstr ""
#. ($invitation->ldap_user_mail)
-#: lib/Lufi/Controller/Invitation.pm:276
+#: lib/Lufi/Controller/Invitation.pm:277
msgid "The URLs of your files have been sent by email to %1."
msgstr ""
@@ -581,7 +581,7 @@ msgid "The email subject can't be empty."
msgstr ""
#. ($expire_at, $max_expire_at)
-#: lib/Lufi/Controller/Invitation.pm:51
+#: lib/Lufi/Controller/Invitation.pm:52
msgid "The expiration delay (%1) is not between 1 and %2 days."
msgstr ""
@@ -599,17 +599,17 @@ msgid "The following email addresses are not valid: %1"
msgstr ""
#. ($guest_mail)
-#: lib/Lufi/Controller/Invitation.pm:48
+#: lib/Lufi/Controller/Invitation.pm:49
msgid "The guest email address (%1) is unvalid."
msgstr ""
#. ($i->token, $i->guest_mail)
-#: lib/Lufi/Controller/Invitation.pm:150
+#: lib/Lufi/Controller/Invitation.pm:151
msgid "The invitation %1 can’t be resent: %2 has already sent files.
Please create a new invitation."
msgstr ""
#. ($i->token)
-#: lib/Lufi/Controller/Invitation.pm:130
+#: lib/Lufi/Controller/Invitation.pm:131
msgid "The invitation %1 has been deleted."
msgstr ""
@@ -657,7 +657,7 @@ msgstr ""
msgid "This invitation is valid until %1."
msgstr ""
-#: themes/default/templates/delays.html.ep:10
+#: themes/default/templates/delays.html.ep:13
msgid "This server sets limitations according to the file size. The expiration delay of your file will be the minimum between what you choose and the following limitations:"
msgstr ""
@@ -673,6 +673,10 @@ msgstr ""
msgid "Unable to copy the link(s) to your clipboard"
msgstr ""
+#: themes/default/templates/partial/render.js.ep:13
+msgid "Unable to download the file: too much unsuccessful attempts to open a websocket. Please, contact the administrator."
+msgstr ""
+
#. ($short)
#: lib/Lufi/Controller/Files.pm:433
msgid "Unable to get counter for %1. The file does not exists. It will be removed from your localStorage."
@@ -773,17 +777,17 @@ msgstr ""
msgid "Your password is not valid. Please refresh the page to retry."
msgstr ""
-#: themes/default/templates/partial/render.js.ep:13
+#: themes/default/templates/partial/render.js.ep:14
msgid "Zip content:"
msgstr ""
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:20
+#: themes/default/templates/delays.html.ep:24
msgid "between %1 and %2, the file will be kept %3 day(s)."
msgstr ""
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:22
+#: themes/default/templates/delays.html.ep:26
msgid "between %1 and %2, the file will be kept forever."
msgstr ""
@@ -796,12 +800,12 @@ msgid "expires on XXX"
msgstr ""
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:26
+#: themes/default/templates/delays.html.ep:30
msgid "for %1 and more, the file will be kept %2 day(s)"
msgstr ""
#. (format_bytes($keys[$i])
-#: themes/default/templates/delays.html.ep:28
+#: themes/default/templates/delays.html.ep:32
msgid "for %1 and more, the file will be kept forever."
msgstr ""
diff --git a/themes/default/public/js/lufi-down.js b/themes/default/public/js/lufi-down.js
index 54d0c87..b117adf 100644
--- a/themes/default/public/js/lufi-down.js
+++ b/themes/default/public/js/lufi-down.js
@@ -47,6 +47,7 @@ function addAlert(msg) {
// Spawn WebSocket
function spawnWebsocket(pa) {
+ console.log('Spawning websocket…');
var ws = new WebSocket(ws_url);
ws.onopen = function() {
console.log('Connection is established!');
@@ -62,8 +63,13 @@ function spawnWebsocket(pa) {
ws.onclose = function() {
console.log('Connection is closed');
if (!window.completed) {
- console.log('Connection closed. Retrying to get slice '+pa);
- window.ws = spawnWebsocket(pa);
+ window.attempts++;
+ if (window.attempts < 10) {
+ console.log('Connection closed. Retrying to get slice '+pa);
+ window.ws = spawnWebsocket(pa);
+ } else {
+ alert(i18n.tooMuchAttempts);
+ }
}
}
ws.onmessage = function(e) {
@@ -71,6 +77,9 @@ function spawnWebsocket(pa) {
var json = res.shift();
var data = JSON.parse(json);
+ // Reset counter since we succeded to open a websocket and got a message
+ window.attempts = 0;
+
if (data.msg !== undefined) {
addAlert(data.msg);
console.log(data.msg);
@@ -78,6 +87,7 @@ function spawnWebsocket(pa) {
$('.file-abort').addClass('hide');
}
window.onbeforeunload = null;
+ window.attempts = 10;
} else {
console.log('Getting slice '+(data.part + 1)+' of '+data.total);
var slice = JSON.parse(res.shift());
@@ -203,8 +213,13 @@ function spawnWebsocket(pa) {
}
}
ws.onerror = function() {
- console.log('Error. Retrying to get slice '+pa);
- window.ws = spawnWebsocket(pa);
+ window.attempts++;
+ if (window.attempts < 10) {
+ console.log('Error. Retrying to get slice '+pa);
+ window.ws = spawnWebsocket(pa);
+ } else {
+ alert(i18n.tooMuchAttempts);
+ }
}
return ws;
}
@@ -225,6 +240,7 @@ $(document).ready(function(){
window.a = new Array();
window.key = pageKey();
window.completed = false;
+ window.attempts = 0;
if (key !== '=') {
var go = true;
diff --git a/themes/default/templates/partial/render.js.ep b/themes/default/templates/partial/render.js.ep
index 4ca1131..beb8dc1 100644
--- a/themes/default/templates/partial/render.js.ep
+++ b/themes/default/templates/partial/render.js.ep
@@ -1,14 +1,15 @@
% # vim:set sts=4 sw=4 ts=4 ft=javascript expandtab:
var ws_url = '<%= url_for('download')->to_abs().stash('file') %>';
var i18n = {
- aborted1: '<%= l('Download aborted.') %>',
- aborted2: '<%= l('Click here to refresh the page and restart the download.') %>',
- badkey: '<%= l('It seems that the key in your URL is incorrect. Please, verify your URL.') %>',
- confirmExit: '<%= l('You have attempted to leave this page. The download will be canceled. Are you sure?') %>',
- download: '<%= l('Get the file') %>',
- fileDownloaded: '<%= l('File downloaded') %>',
- loading: '<%= l('Asking for file part XX1 of %1', stash('nbslices')) %>',
- nokey: '<%= l('You don\'t seem to have a key in your URL. You won\'t be able to decrypt the file. Download canceled.') %>',
- showZipContent: '<%= l('Show zip content') %>',
- zipContent: '<%= l('Zip content:') %>'
+ aborted1: '<%= l('Download aborted.') %>',
+ aborted2: '<%= l('Click here to refresh the page and restart the download.') %>',
+ badkey: '<%= l('It seems that the key in your URL is incorrect. Please, verify your URL.') %>',
+ confirmExit: '<%= l('You have attempted to leave this page. The download will be canceled. Are you sure?') %>',
+ download: '<%= l('Get the file') %>',
+ fileDownloaded: '<%= l('File downloaded') %>',
+ loading: '<%= l('Asking for file part XX1 of %1', stash('nbslices')) %>',
+ nokey: '<%= l('You don\'t seem to have a key in your URL. You won\'t be able to decrypt the file. Download canceled.') %>',
+ showZipContent: '<%= l('Show zip content') %>',
+ tooMuchAttempts: '<%= l('Unable to download the file: too much unsuccessful attempts to open a websocket. Please, contact the administrator.') %>',
+ zipContent: '<%= l('Zip content:') %>'
}