summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files/l10n/de.js4
-rw-r--r--apps/files/l10n/de.json4
-rw-r--r--apps/files/l10n/de_DE.js4
-rw-r--r--apps/files/l10n/de_DE.json4
-rw-r--r--apps/files_external/l10n/de_DE.js1
-rw-r--r--apps/files_external/l10n/de_DE.json1
-rw-r--r--apps/systemtags/l10n/de.js10
-rw-r--r--apps/systemtags/l10n/de.json10
-rw-r--r--apps/systemtags/l10n/de_DE.js10
-rw-r--r--apps/systemtags/l10n/de_DE.json10
-rw-r--r--core/js/setupchecks.js19
-rw-r--r--core/js/tests/specs/setupchecksSpec.js211
-rw-r--r--core/l10n/de.js4
-rw-r--r--core/l10n/de.json4
-rw-r--r--core/l10n/de_DE.js4
-rw-r--r--core/l10n/de_DE.json4
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/private/Contacts/ContactsMenu/ContactsStore.php3
-rw-r--r--lib/private/DB/Connection.php2
-rw-r--r--lib/private/DB/ReconnectWrapper.php52
21 files changed, 321 insertions, 42 deletions
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 7aed746d4f7..b4d62d4d1f6 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -86,7 +86,7 @@ OC.L10N.register(
"Not favorited" : "Nicht favorisiert",
"Remove from favorites" : "Von Favoriten entfernen",
"Add to favorites" : "Zu den Favoriten hinzufügen",
- "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
+ "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Schlagworte aufgetreten",
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Du hast {file} zu Deinen Favoriten hinzugefügt",
@@ -151,7 +151,7 @@ OC.L10N.register(
"Shared with you" : "Mit Dir geteilt",
"Shared with others" : "Mit anderen geteilt",
"Shared by link" : "Über einen Link geteilt",
- "Tags" : "Tags",
+ "Tags" : "Schlagworte",
"Deleted files" : "Gelöschte Dateien",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index 5bd4294190f..0e007b348f2 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -84,7 +84,7 @@
"Not favorited" : "Nicht favorisiert",
"Remove from favorites" : "Von Favoriten entfernen",
"Add to favorites" : "Zu den Favoriten hinzufügen",
- "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
+ "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Schlagworte aufgetreten",
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Du hast {file} zu Deinen Favoriten hinzugefügt",
@@ -149,7 +149,7 @@
"Shared with you" : "Mit Dir geteilt",
"Shared with others" : "Mit anderen geteilt",
"Shared by link" : "Über einen Link geteilt",
- "Tags" : "Tags",
+ "Tags" : "Schlagworte",
"Deleted files" : "Gelöschte Dateien",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index e440cdaecd4..bb52c917b39 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -86,7 +86,7 @@ OC.L10N.register(
"Not favorited" : "Nicht favorisiert",
"Remove from favorites" : "Von Favoriten entfernen",
"Add to favorites" : "Zu den Favoriten hinzufügen",
- "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
+ "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Schlagworte aufgetreten",
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Sie haben {file} zu Ihren Favoriten hinzugefügt",
@@ -151,7 +151,7 @@ OC.L10N.register(
"Shared with you" : "Mit Ihnen geteilt",
"Shared with others" : "Mit anderen geteilt",
"Shared by link" : "Über einen Link geteilt",
- "Tags" : "Tags",
+ "Tags" : "Schlagworte",
"Deleted files" : "Gelöschte Dateien",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index 73d1a03ddd5..e553092f94c 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -84,7 +84,7 @@
"Not favorited" : "Nicht favorisiert",
"Remove from favorites" : "Von Favoriten entfernen",
"Add to favorites" : "Zu den Favoriten hinzufügen",
- "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Tags aufgetreten",
+ "An error occurred while trying to update the tags" : "Es ist ein Fehler beim Aktualisieren der Schlagworte aufgetreten",
"Added to favorites" : "Zu den Favoriten hinzugefügt",
"Removed from favorites" : "Aus den Favoriten entfernt",
"You added {file} to your favorites" : "Sie haben {file} zu Ihren Favoriten hinzugefügt",
@@ -149,7 +149,7 @@
"Shared with you" : "Mit Ihnen geteilt",
"Shared with others" : "Mit anderen geteilt",
"Shared by link" : "Über einen Link geteilt",
- "Tags" : "Tags",
+ "Tags" : "Schlagworte",
"Deleted files" : "Gelöschte Dateien",
"Text file" : "Textdatei",
"New text file.txt" : "Neue Textdatei file.txt",
diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js
index 13e44ab0cb9..0911cb5ca2f 100644
--- a/apps/files_external/l10n/de_DE.js
+++ b/apps/files_external/l10n/de_DE.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.",
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.",
"External storage support" : "Unterstützung für externen Speicher",
+ "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
"No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung dies zu tun.",
"Name" : "Name",
"Storage type" : "Speichertyp",
diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json
index 1f19a325427..4d02c9c6d6b 100644
--- a/apps/files_external/l10n/de_DE.json
+++ b/apps/files_external/l10n/de_DE.json
@@ -100,6 +100,7 @@
"The FTP support in PHP is not enabled or installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "Die FTP-Unterstützung von PHP ist deaktiviert oder nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich bezüglich Aktivierung oder Installation an Ihren Administrator.",
"\"%s\" is not installed. Mounting of %s is not possible. Please ask your system administrator to install it." : "\"%s\" ist nicht installiert. Das Hinzufügen von %s ist nicht möglich. Bitte wenden Sie sich zur Installation an Ihren Administrator.",
"External storage support" : "Unterstützung für externen Speicher",
+ "Adds basic external storage support" : "Fügt grundlegende Unterstützung für externen Speicher hinzu",
"No external storage configured or you don't have the permission to configure them" : "Es ist kein externer Speicher eingerichtet oder Sie haben keine Berechtigung dies zu tun.",
"Name" : "Name",
"Storage type" : "Speichertyp",
diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js
index 861905e5814..7c3efa57689 100644
--- a/apps/systemtags/l10n/de.js
+++ b/apps/systemtags/l10n/de.js
@@ -40,11 +40,11 @@ OC.L10N.register(
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat das System-Schlagwort {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>das System-Schlagwörter</strong> für eine Datei wurden geändert",
- "Collaborative tags" : "Gemeinschaftliche Schlagwörter",
- "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt.",
- "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)",
- "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Tags. Diese Tags betreffen alle Benutzer.",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Schlagworte</strong> für eine Datei wurden geändert",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.",
+ "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)",
+ "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Schlagworte. Diese Schlagworte betreffen alle Benutzer.",
"Select tag …" : "Tag wählen…",
"Name" : "Name",
"Delete" : "Löschen",
diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json
index 5912da3584c..5331fc1736c 100644
--- a/apps/systemtags/l10n/de.json
+++ b/apps/systemtags/l10n/de.json
@@ -38,11 +38,11 @@
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat das System-Schlagwort {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>das System-Schlagwörter</strong> für eine Datei wurden geändert",
- "Collaborative tags" : "Gemeinschaftliche Schlagwörter",
- "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt.",
- "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)",
- "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Tags. Diese Tags betreffen alle Benutzer.",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Schlagworte</strong> für eine Datei wurden geändert",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.",
+ "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn Du ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)",
+ "Create and edit collaborative tags. These tags affect all users." : "Erstelle und bearbeite die gemeinsamen Schlagworte. Diese Schlagworte betreffen alle Benutzer.",
"Select tag …" : "Tag wählen…",
"Name" : "Name",
"Delete" : "Löschen",
diff --git a/apps/systemtags/l10n/de_DE.js b/apps/systemtags/l10n/de_DE.js
index 9ea2bfab3cc..a5b266cd2ef 100644
--- a/apps/systemtags/l10n/de_DE.js
+++ b/apps/systemtags/l10n/de_DE.js
@@ -40,11 +40,11 @@ OC.L10N.register(
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat das System-Schlagwort {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>das System-Schlagwörter</strong> für eine Datei wurden geändert",
- "Collaborative tags" : "Gemeinschaftliche Schlagwörter",
- "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt.",
- "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt. Sehr gut für Gruppen.\n\t(Wenn Sie ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)",
- "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie gemeinsamen Tags. Diese Tags betreffen alle Benutzer.",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Schlagworte</strong> für eine Datei wurden geändert",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.",
+ "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt. Sehr gut für Gruppen.\n\t(Wenn Sie ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)",
+ "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie gemeinsamen Schlagworte. Diese Schlagworte betreffen alle Benutzer.",
"Select tag …" : "Tag wählen …",
"Name" : "Name",
"Delete" : "Löschen",
diff --git a/apps/systemtags/l10n/de_DE.json b/apps/systemtags/l10n/de_DE.json
index 45214f18caf..c9d04939c05 100644
--- a/apps/systemtags/l10n/de_DE.json
+++ b/apps/systemtags/l10n/de_DE.json
@@ -38,11 +38,11 @@
"{actor} removed system tag {systemtag} from {file}" : "{actor} hat das System-Schlagwort {systemtag} von {file} entfernt",
"%s (restricted)" : "%s (eingeschränkt)",
"%s (invisible)" : "%s (unsichtbar)",
- "<strong>System tags</strong> for a file have been modified" : "<strong>das System-Schlagwörter</strong> für eine Datei wurden geändert",
- "Collaborative tags" : "Gemeinschaftliche Schlagwörter",
- "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt.",
- "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt. Sehr gut für Gruppen.\n\t(Wenn Sie ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagwörter mit allen Kunden geteilt werden.)",
- "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie gemeinsamen Tags. Diese Tags betreffen alle Benutzer.",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System-Schlagworte</strong> für eine Datei wurden geändert",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "Collaborative tagging functionality which shares tags among users." : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.",
+ "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagwörter unter den Benutzern teilt. Sehr gut für Gruppen.\n\t(Wenn Sie ein Anbieter mit einer Mehrkundeninstallation sind, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)",
+ "Create and edit collaborative tags. These tags affect all users." : "Erstellen und bearbeiten Sie gemeinsamen Schlagworte. Diese Schlagworte betreffen alle Benutzer.",
"Select tag …" : "Tag wählen …",
"Name" : "Name",
"Delete" : "Löschen",
diff --git a/core/js/setupchecks.js b/core/js/setupchecks.js
index af769dd9b7c..a2a75086935 100644
--- a/core/js/setupchecks.js
+++ b/core/js/setupchecks.js
@@ -283,6 +283,25 @@
});
}
}
+
+ if (!xhr.getResponseHeader('Referrer-Policy') ||
+ (xhr.getResponseHeader('Referrer-Policy').toLowerCase() !== 'no-referrer' &&
+ xhr.getResponseHeader('Referrer-Policy').toLowerCase() !== 'no-referrer-when-downgrade' &&
+ xhr.getResponseHeader('Referrer-Policy').toLowerCase() !== 'strict-origin' &&
+ xhr.getResponseHeader('Referrer-Policy').toLowerCase() !== 'strict-origin-when-cross-origin')) {
+ messages.push({
+ msg: t('core', 'The "{header}" HTTP header is not set to "{val1}", "{val2}", "{val3}" or "{val4}". This can leak referer information. See the <a target="_blank" rel="noreferrer noopener" href="{link}">W3C Recommendation</a>.',
+ {
+ header: 'Referrer-Policy',
+ val1: 'no-referrer',
+ val2: 'no-referrer-when-downgrade',
+ val3: 'strict-origin',
+ val4: 'strict-origin-when-cross-origin',
+ link: 'https://www.w3.org/TR/referrer-policy/'
+ }),
+ type: OC.SetupChecks.MESSAGE_TYPE_INFO
+ });
+ }
} else {
messages.push({
msg: t('core', 'Error occurred while checking server setup'),
diff --git a/core/js/tests/specs/setupchecksSpec.js b/core/js/tests/specs/setupchecksSpec.js
index aab72bbc592..feef66c353e 100644
--- a/core/js/tests/specs/setupchecksSpec.js
+++ b/core/js/tests/specs/setupchecksSpec.js
@@ -114,7 +114,7 @@ describe('OC.SetupChecks tests', function() {
done();
});
});
-
+
it('should not return an error if data directory is protected', function(done) {
var async = OC.SetupChecks.checkDataProtected();
@@ -495,7 +495,7 @@ describe('OC.SetupChecks tests', function() {
async.done(function( data, s, x ){
expect(data).toEqual([{
- msg: 'Error occurred while checking server setup',
+ msg: 'Error occurred while checking server setup',
type: OC.SetupChecks.MESSAGE_TYPE_ERROR
},{
msg: 'Error occurred while checking server setup',
@@ -538,7 +538,10 @@ describe('OC.SetupChecks tests', function() {
}, {
msg: 'The "X-Permitted-Cross-Domain-Policies" HTTP header is not set to "none". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly.',
type: OC.SetupChecks.MESSAGE_TYPE_WARNING
- },
+ }, {
+ msg: 'The "Referrer-Policy" HTTP header is not set to "no-referrer", "no-referrer-when-downgrade", "strict-origin" or "strict-origin-when-cross-origin". This can leak referer information. See the <a href="https://www.w3.org/TR/referrer-policy/" rel="noreferrer noopener">W3C Recommendation</a>.',
+ type: OC.SetupChecks.MESSAGE_TYPE_INFO
+ }
]);
done();
});
@@ -556,6 +559,7 @@ describe('OC.SetupChecks tests', function() {
'Strict-Transport-Security': 'max-age=15768000;preload',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
}
);
@@ -585,6 +589,7 @@ describe('OC.SetupChecks tests', function() {
'Strict-Transport-Security': 'max-age=15768000',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer'
}
);
@@ -593,6 +598,196 @@ describe('OC.SetupChecks tests', function() {
done();
});
});
+
+ describe('check Referrer-Policy header', function() {
+ it('should return no message if Referrer-Policy is set to no-referrer', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([]);
+ done();
+ });
+ });
+
+ it('should return no message if Referrer-Policy is set to no-referrer-when-downgrade', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer-when-downgrade',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([]);
+ done();
+ });
+ });
+
+ it('should return no message if Referrer-Policy is set to strict-origin', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'strict-origin',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([]);
+ done();
+ });
+ });
+
+ it('should return no message if Referrer-Policy is set to strict-origin-when-cross-origin', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'strict-origin-when-cross-origin',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([]);
+ done();
+ });
+ });
+
+ it('should return a message if Referrer-Policy is set to same-origin', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'same-origin',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([
+ {
+ msg: 'The "Referrer-Policy" HTTP header is not set to "no-referrer", "no-referrer-when-downgrade", "strict-origin" or "strict-origin-when-cross-origin". This can leak referer information. See the <a href="https://www.w3.org/TR/referrer-policy/" rel="noreferrer noopener">W3C Recommendation</a>.',
+ type: OC.SetupChecks.MESSAGE_TYPE_INFO
+ }
+ ]);
+ done();
+ });
+ });
+
+ it('should return a message if Referrer-Policy is set to origin', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'origin',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([
+ {
+ msg: 'The "Referrer-Policy" HTTP header is not set to "no-referrer", "no-referrer-when-downgrade", "strict-origin" or "strict-origin-when-cross-origin". This can leak referer information. See the <a href="https://www.w3.org/TR/referrer-policy/" rel="noreferrer noopener">W3C Recommendation</a>.',
+ type: OC.SetupChecks.MESSAGE_TYPE_INFO
+ }
+ ]);
+ done();
+ });
+ });
+
+ it('should return a message if Referrer-Policy is set to origin-when-cross-origin', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'origin-when-cross-origin',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([
+ {
+ msg: 'The "Referrer-Policy" HTTP header is not set to "no-referrer", "no-referrer-when-downgrade", "strict-origin" or "strict-origin-when-cross-origin". This can leak referer information. See the <a href="https://www.w3.org/TR/referrer-policy/" rel="noreferrer noopener">W3C Recommendation</a>.',
+ type: OC.SetupChecks.MESSAGE_TYPE_INFO
+ }
+ ]);
+ done();
+ });
+ });
+
+ it('should return a message if Referrer-Policy is set to unsafe-url', function(done) {
+ protocolStub.returns('https');
+ var result = OC.SetupChecks.checkGeneric();
+
+ suite.server.requests[0].respond(200, {
+ 'Strict-Transport-Security': 'max-age=15768000',
+ 'X-XSS-Protection': '1; mode=block',
+ 'X-Content-Type-Options': 'nosniff',
+ 'X-Robots-Tag': 'none',
+ 'X-Frame-Options': 'SAMEORIGIN',
+ 'X-Download-Options': 'noopen',
+ 'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'unsafe-url',
+ });
+
+ result.done(function( data, s, x ){
+ expect(data).toEqual([
+ {
+ msg: 'The "Referrer-Policy" HTTP header is not set to "no-referrer", "no-referrer-when-downgrade", "strict-origin" or "strict-origin-when-cross-origin". This can leak referer information. See the <a href="https://www.w3.org/TR/referrer-policy/" rel="noreferrer noopener">W3C Recommendation</a>.',
+ type: OC.SetupChecks.MESSAGE_TYPE_INFO
+ }
+ ]);
+ done();
+ });
+ });
+ });
});
it('should return a SSL warning if HTTPS is not used', function(done) {
@@ -607,6 +802,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
}
);
@@ -631,7 +827,7 @@ describe('OC.SetupChecks tests', function() {
);
async.done(function( data, s, x ){
expect(data).toEqual([{
- msg: 'Error occurred while checking server setup',
+ msg: 'Error occurred while checking server setup',
type: OC.SetupChecks.MESSAGE_TYPE_ERROR
}, {
msg: 'Error occurred while checking server setup',
@@ -653,6 +849,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
}
);
@@ -678,6 +875,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
}
);
@@ -703,6 +901,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
}
);
@@ -727,6 +926,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
});
async.done(function( data, s, x ){
@@ -747,6 +947,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
});
async.done(function( data, s, x ){
@@ -767,6 +968,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
});
async.done(function( data, s, x ){
@@ -787,6 +989,7 @@ describe('OC.SetupChecks tests', function() {
'X-Frame-Options': 'SAMEORIGIN',
'X-Download-Options': 'noopen',
'X-Permitted-Cross-Domain-Policies': 'none',
+ 'Referrer-Policy': 'no-referrer',
});
async.done(function( data, s, x ){
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 6afe08387a0..7d3ae0c0d1b 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -194,8 +194,8 @@ OC.L10N.register(
"({scope})" : "({scope})",
"Delete" : "Löschen",
"Rename" : "Umbenennen",
- "Collaborative tags" : "Zusammenarbeits-Tags",
- "No tags found" : "Keine Tags gefunden",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "No tags found" : "Keine Schlagworte gefunden",
"unknown text" : "Unbekannter Text",
"Hello world!" : "Hallo Welt!",
"sunny" : "sonnig",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index b8eac02f1bc..cafe81f742c 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -192,8 +192,8 @@
"({scope})" : "({scope})",
"Delete" : "Löschen",
"Rename" : "Umbenennen",
- "Collaborative tags" : "Zusammenarbeits-Tags",
- "No tags found" : "Keine Tags gefunden",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "No tags found" : "Keine Schlagworte gefunden",
"unknown text" : "Unbekannter Text",
"Hello world!" : "Hallo Welt!",
"sunny" : "sonnig",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index a06d31382e4..41607a2d85a 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -194,8 +194,8 @@ OC.L10N.register(
"({scope})" : "({scope})",
"Delete" : "Löschen",
"Rename" : "Umbenennen",
- "Collaborative tags" : "Zusammenarbeits-Tags",
- "No tags found" : "Keine Tags gefunden",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "No tags found" : "Keine Schlagworte gefunden",
"unknown text" : "Unbekannter Text",
"Hello world!" : "Hallo Welt!",
"sunny" : "Sonnig",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index 9501f6a9881..3e5c2242e59 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -192,8 +192,8 @@
"({scope})" : "({scope})",
"Delete" : "Löschen",
"Rename" : "Umbenennen",
- "Collaborative tags" : "Zusammenarbeits-Tags",
- "No tags found" : "Keine Tags gefunden",
+ "Collaborative tags" : "Gemeinschaftliche Schlagworte",
+ "No tags found" : "Keine Schlagworte gefunden",
"unknown text" : "Unbekannter Text",
"Hello world!" : "Hallo Welt!",
"sunny" : "Sonnig",
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index d457d2e758b..27419278633 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -601,6 +601,7 @@ return array(
'OC\\DB\\QueryBuilder\\QueryBuilder' => $baseDir . '/lib/private/DB/QueryBuilder/QueryBuilder.php',
'OC\\DB\\QueryBuilder\\QueryFunction' => $baseDir . '/lib/private/DB/QueryBuilder/QueryFunction.php',
'OC\\DB\\QueryBuilder\\QuoteHelper' => $baseDir . '/lib/private/DB/QueryBuilder/QuoteHelper.php',
+ 'OC\\DB\\ReconnectWrapper' => $baseDir . '/lib/private/DB/ReconnectWrapper.php',
'OC\\DB\\SQLiteMigrator' => $baseDir . '/lib/private/DB/SQLiteMigrator.php',
'OC\\DB\\SQLiteSessionInit' => $baseDir . '/lib/private/DB/SQLiteSessionInit.php',
'OC\\DB\\SchemaWrapper' => $baseDir . '/lib/private/DB/SchemaWrapper.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 88f8248b7f2..fa5e90b2e4c 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -631,6 +631,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\DB\\QueryBuilder\\QueryBuilder' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/QueryBuilder.php',
'OC\\DB\\QueryBuilder\\QueryFunction' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/QueryFunction.php',
'OC\\DB\\QueryBuilder\\QuoteHelper' => __DIR__ . '/../../..' . '/lib/private/DB/QueryBuilder/QuoteHelper.php',
+ 'OC\\DB\\ReconnectWrapper' => __DIR__ . '/../../..' . '/lib/private/DB/ReconnectWrapper.php',
'OC\\DB\\SQLiteMigrator' => __DIR__ . '/../../..' . '/lib/private/DB/SQLiteMigrator.php',
'OC\\DB\\SQLiteSessionInit' => __DIR__ . '/../../..' . '/lib/private/DB/SQLiteSessionInit.php',
'OC\\DB\\SchemaWrapper' => __DIR__ . '/../../..' . '/lib/private/DB/SchemaWrapper.php',
diff --git a/lib/private/Contacts/ContactsMenu/ContactsStore.php b/lib/private/Contacts/ContactsMenu/ContactsStore.php
index 73319151d6e..bfce7deafa4 100644
--- a/lib/private/Contacts/ContactsMenu/ContactsStore.php
+++ b/lib/private/Contacts/ContactsMenu/ContactsStore.php
@@ -200,7 +200,8 @@ class ContactsStore implements IContactsStore {
}
}
if ($shareType === 0 || $shareType === 6) {
- if ($contact['UID'] === $shareWith && $contact['isLocalSystemBook'] === true) {
+ $isLocal = $contact['isLocalSystemBook'] ?? false;
+ if ($contact['UID'] === $shareWith && $isLocal === true) {
$match = $contact;
break;
}
diff --git a/lib/private/DB/Connection.php b/lib/private/DB/Connection.php
index 8a8a2f100ef..8bb959ffbc1 100644
--- a/lib/private/DB/Connection.php
+++ b/lib/private/DB/Connection.php
@@ -43,7 +43,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\PreConditionNotMetException;
-class Connection extends \Doctrine\DBAL\Connection implements IDBConnection {
+class Connection extends ReconnectWrapper implements IDBConnection {
/**
* @var string $tablePrefix
*/
diff --git a/lib/private/DB/ReconnectWrapper.php b/lib/private/DB/ReconnectWrapper.php
new file mode 100644
index 00000000000..27a34c862a7
--- /dev/null
+++ b/lib/private/DB/ReconnectWrapper.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 Robin Appelman <robin@icewind.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OC\DB;
+
+use Doctrine\Common\EventManager;
+use Doctrine\DBAL\Configuration;
+use Doctrine\DBAL\Driver;
+
+class ReconnectWrapper extends \Doctrine\DBAL\Connection {
+ const CHECK_CONNECTION_INTERVAL = 60;
+
+ private $lastConnectionCheck = null;
+
+ public function __construct(array $params, Driver $driver, Configuration $config = null, EventManager $eventManager = null) {
+ parent::__construct($params, $driver, $config, $eventManager);
+ $this->lastConnectionCheck = time();
+ }
+
+ public function connect() {
+ $now = time();
+ $checkTime = $now - self::CHECK_CONNECTION_INTERVAL;
+
+ if ($this->lastConnectionCheck > $checkTime || $this->isTransactionActive()) {
+ return parent::connect();
+ } else {
+ $this->lastConnectionCheck = $now;
+ if (!$this->ping()) {
+ $this->close();
+ }
+ return parent::connect();
+ }
+ }
+}