Giter Club home page Giter Club logo

end_to_end_encryption's Introduction

End-to-End Encryption App

This app provides all the necessary APIs to implement End-to-End encryption on the client side. Additionally it makes sure that End-to-End encrypted files are not accessible with the web interface and other WebDAV clients.

Screenshots

Nextcloud Web

Found under Personal settings -> Security:

image

Nextcloud Android App

When the E2EE server app has been successfully enabled and the client app awaits initial setup:

image

Documentation

Client API

Here you can find the API documentation. Also some typical client operations and how to use the API to perform them are documented too.

Specification (RFC)

The end-to-end encryption implemented by the Nextcloud sync and mobile clients, as well as the functionality provided by this app to faciliate it, is based on the approach documented in the RFC repository.

Server-side Encryption

Warning

E2EE is currently not compatible with server-side encryption and thus should not be used with the server-side encryption app enabled

Installing

  1. Make sure the Server-Side Encryption app is disabled (or uninstalled)
  2. Install then enable the End-to-End Encryption app on your server. No configuration is required on the server other than this.

Configuring

  1. Trigger the "Setup end-to-end encryption" under settings within your favorite client app (all official clients support E2EE).
  2. Carefully note your mnemonic (encryption passphrase) generated by your first client. The mnemonic is needed to: recover access to your data (i.e. if your device is lost or you need to reinstall the app) as well as to setup additional clients.

Caution

The mnenomnic is not recoverable by a server administrator. If you lose your mnemonic you will lose access to your encrypted data.

Using

Establishing a folder to encrypt

  1. Within your favorite client app, create a dedicated folder - or folders - that you wish to have be encrypted.
  2. Place the data (including other folders which will be encrypted)

Troubleshooting

General
  • Since all encryption is handled by the clients, it is important that all client versions in-use be kept relatively aligned (in terms of release version/period) to maintain end-to-end compatibility.
  • Since most operations are performed by the clients, in most cases potential bugs will need to be addressed in the clients (though sometimes in coordination with development occurring here with the server app).
  • Be careful not to configure different mnemonics across your devices. They must all share the same mnemonic (created on the first device you provision E2EE on) or undefined behavior will occur.
  • Keep in mind that using end-to-end encryption has trade-offs. Some functions will never be supported because they are inherently incompatible with the threat model of E2EE. In other cases, functionality may not yet be implemented in your favorite client (in this case you're encouraged to visit the Issues of your respective client and upvote the existing enhancement idea and/or submit your own where one does not already exist).
  • E2EE files are inaccessible (by design) from the Nextcloud Web UI (client) in order to minimize needing to trust the server.
Data not being encrypted
  • E2EE focuses on protecting your file-based data, but not other application data (e.g. calendars).
User agent configuraiton

The default user agent configuration is reasonable for all current official stable client releases, but sometimes needs to be adjusted when running custom or development client builds.

// config/config.php

    ...,
    // Allow to configure which client are supported (e.g. custom clients)
    'end_to_end_encryption.supported-user-agents' => [
        '/^Mozilla\/5\.0 \(Android\) Nextcloud\-android\/(?<version>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)).*$/' => '3.13.0',
        '/^Mozilla\/5\.0 \([A-Za-z ]+\) (mirall|csyncoC)\/(?<version>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)).*$/' => '3.0.0',
        '/^Mozilla\/5\.0 \(iOS\) Nextcloud\-iOS\/(?<version>(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)).*$/' => '3.0.5',
    ]
Recovery

There are various recovery scenarios where it may be useful to access (decrypt) your files independent of your Nextcloud installation. A separate set of tools called the encryption-recovery-tools can be used for this.

Additional Screenshots

Nextcloud Web

Personal -> Security

image

Nextcloud Web

Admininistration settings -> Security

image

Nextcloud Desktop Client

image

end_to_end_encryption's People

Contributors

ahangarha avatar altahrim avatar artificialowl avatar artonge avatar carlschwan avatar come-nc avatar comradekingu avatar dependabot[bot] avatar georgehrke avatar imarkus avatar joshtrichards avatar jospoortvliet avatar juliushaertl avatar kesselb avatar lufthans avatar lukasreschke avatar mawumag avatar morrisjobke avatar n4ir0 avatar nextcloud-bot avatar nextcloud-command avatar nickvergessen avatar pvince81 avatar pytal avatar rakekniven avatar rullzer avatar schiessle avatar skjnldsv avatar tobiaskaminsky avatar valdnet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

end_to_end_encryption's Issues

E2E not working on Pixel2XL device

I successfully upgraded from 13 beta 4 to the first initial 13 release.

I have the E2E app enabled in my NC instance.

I am unable to enable encryption on mobile phone (Pixel2XL). Whenever I try, I seem to successfully "retrieve keys" - I get the dialog box with a dozen phrases in. I click "Set U Encryption" and it reports "generating keys" then it immediately fails and reports "Keys could not be stored, please try again". I see the SAME ERROR on a different android device so I suspect it's either me being an idiot or a server setting?

No messages in Nextcloud server logs (not even at debug level). No information in my stream relevant to the attempt (it shows I creted a test directory, then nothing else).

My Windows Desktop app does not have a setting for encryption (or if it does, I sure as heck can't find it - Version 2.3.3 (build 1) and "no updates" reported).

I suspect I am doing something dumb, but if so at least you know the app is not idiot proof.

I am happy to provide any information you might be interested in. My Nextcloud instance otherwise seems to work flawlessly other than one small but potentially important detail: since I am unable to enable E2E, I tried to enable server side encryption. And even after logging out/in, I have not been given a chance to set encryption keys. Maybe my whole install has something miss-set for encryption?

Either way, thanks for a SUPERB product - it's made my compliance issues and privacy concerns (I am a former OneDrive user...) practically disappear. :-)

Metadata corruption after uploading encrypted files

Server: Nextcloud 3.0.1
End-to-End Encryption App: 1.0.5
Client: Nextcloud Dev (Android, F-Droid) v20180330

I created an encrypted Music folder via the Android client and tried to upload about 100 music files. After a certain point, every upload began to fail. I looked in the folder and the filenames are a series of hex characters (encrypted).

To test, I also created a folder of 200 tiny text files using:
for i in $(seq 1001 1200); do echo $i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i > garbage$i.txt; done
I tried to upload these to a new encrypted folder called "garbagetest". Problem was the same as with the music. Uploads began to fail after uploading 11 of them, and as expected, metadata was lost. (The number of files it takes for failure to begin varies.)

For the test, when problems began, Android's logcat showed:
E UploadFileOperation: Upload of /storage/emulated/0/garbage/garbage1171.txt to /garbagetest/null: Unexpected exception E UploadFileOperation: java.security.InvalidAlgorithmParameterException: Expected IV length of 12 but was 0 E UploadFileOperation: at com.android.org.conscrypt.OpenSSLCipher$EVP_AEAD.engineInitInternal(OpenSSLCipher.java:1082) E UploadFileOperation: at com.android.org.conscrypt.OpenSSLCipher$EVP_AEAD$AES$GCM.engineInitInternal(OpenSSLCipher.java:1290) E UploadFileOperation: at com.android.org.conscrypt.OpenSSLCipher.engineInit(OpenSSLCipher.java:274) E UploadFileOperation: at javax.crypto.Cipher.tryTransformWithProvider(Cipher.java:2664) E UploadFileOperation: at javax.crypto.Cipher.tryCombinations(Cipher.java:2575) E UploadFileOperation: at javax.crypto.Cipher$SpiAndProviderUpdater.updateAndGetSpiAndProvider(Cipher.java:2480) E UploadFileOperation: at javax.crypto.Cipher.chooseProvider(Cipher.java:567) E UploadFileOperation: at javax.crypto.Cipher.init(Cipher.java:975) E UploadFileOperation: at javax.crypto.Cipher.init(Cipher.java:910) E UploadFileOperation: at com.owncloud.android.utils.EncryptionUtils.decryptStringSymmetric(EncryptionUtils.java:487) E UploadFileOperation: at com.owncloud.android.utils.EncryptionUtils.decryptFolderMetaData(EncryptionUtils.java:196) E UploadFileOperation: at com.owncloud.android.operations.UploadFileOperation.encryptedUpload(UploadFileOperation.java:485) E UploadFileOperation: at com.owncloud.android.operations.UploadFileOperation.run(UploadFileOperation.java:415) E UploadFileOperation: at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:145) E UploadFileOperation: at com.owncloud.android.lib.common.operations.RemoteOperation.execute(RemoteOperation.java:149) E UploadFileOperation: at com.owncloud.android.operations.common.SyncOperation.execute(SyncOperation.java:93) E UploadFileOperation: at com.owncloud.android.files.services.FileUploader.uploadFile(FileUploader.java:1097) E UploadFileOperation: at com.owncloud.android.files.services.FileUploader$ServiceHandler.handleMessage(FileUploader.java:1030) E UploadFileOperation: at android.os.Handler.dispatchMessage(Handler.java:106) E UploadFileOperation: at android.os.Looper.loop(Looper.java:164) E UploadFileOperation: at android.os.HandlerThread.run(HandlerThread.java:65) D UploadsStorageManager: updateDatabaseUploadResult uploadResult: com.owncloud.android.lib.common.operations.RemoteOperationResult@b006c40 upload: com.owncloud.android.operations.UploadFileOperation@9a9c779 V UploadsStorageManager: Updating /storage/emulated/0/garbage/garbage1171.txt with status:UPLOAD_FAILED and result:UNKNOWN (old:/storage/emulated/0/garbage/garbage1171.txt status:UPLOAD_IN_PROGRESS result:-1) V UploadsStorageManager: Updating /storage/emulated/0/garbage/garbage1171.txt with status=UPLOAD_FAILED D UploadsStorageManager: updateUpload returns with: 1 for file: /storage/emulated/0/garbage/garbage1171.txt

Error enabling app when using PostgreSQL

When trying to enable app (version 1.0.5) on Nextcloud 13.0.1 with PostgreSQL 9.6.6 as a backend, I get the following error:

An exception occurred while executing 'CREATE UNIQUE INDEX id ON "oc_e2e_encryption_lock" ("id")':

SQLSTATE[42P07]: Duplicate table: 7 ERROR:  relation "id" already exists

The reason for this error is that the index cannot have the name ("id" in this case) already used as a column name. I solved the problem by changing the line 31 in the file /appinfo/database.xml so that the index name is "idx_id" instead of the "id". So the relevant part of the XML is as follows:

<index>
	<name>idx_id</name>
	<unique>true</unique>
	<field>
		<name>id</name>
		<sorting>ascending</sorting>
	</field>
</index>

iOS Question - Start

Hi @tobiasKaminsky & @schiessle,

First question :

On start I Get private key & Get public keys if private key and/or public keys do not exists I generates a private key and a public key ... why I have 4 API

get private key -> store private key
get public keys -> Sign public key

why not :

get private key + public keys
put private key + public key

Thanks

Encrypted Files become inaccessible when E2E App is enabled

After updating to the latest 13.0.0 from the stable channel and enabling the E2E app from the store, files previously encrypted with the Serverside Encryption App become inaccessible with the following error:

OCA\DAV\Connector\Sabre\Exception\Forbidden: client not allowed to access end-to-end encrypted content
    /var/www/virtual/[redacted]/nextcloud-13.0.0/nextcloud/apps/end_to_end_encryption/lib/Connector/Sabre/LockPlugin.php - line 124: OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->checkUserAgent('Mozilla/5.0 (X1...', '[redacted]')
    [internal function] OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->checkLock(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))
    /var/www/virtual/[redacted]/nextcloud-13.0.0/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array)
    /var/www/virtual/[redacted]/nextcloud-13.0.0/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 466: Sabre\Event\EventEmitter->emit('beforeMethod', Array)
    /var/www/virtual/[redacted]/nextcloud-13.0.0/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 254: Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))
    /var/www/virtual/[redacted]/nextcloud-13.0.0/nextcloud/apps/dav/appinfo/v1/webdav.php - line 80: Sabre\DAV\Server->exec()
    /var/www/virtual/[redacted]/nextcloud-13.0.0/nextcloud/remote.php - line 164: require_once('/var/www/virtua...')
    {main}

The files in question have NOT been encrypted with E2E and are accessible when disabling E2E encryption in the browser and any client. There are no E2E folders setup as none of my clients have updated to the appropriate versions yet.

The server runs on an up-to-date Ubuntu 17.10 with Nginx + FPM behind a HAProxy installation. The database is PGSQL and I used APCu and Redis for locking.

how to enable e2e in nextcloud 13?

is an android application that is compatible with e2e but I do not see the option enabled, should anything be enabled in nextcloud 13 server side? if so?

Failing to use end to end encryption

I'm using NextCloud 13 Beta 4 with the end to end encryption 1.0.1 plugin.

I'm also using the beta app of NextCloud for Android, and whenever i try to create a new folder and encrypt it, i get the error message "Retrieving keys was unsucessful, please try it again!".

Any help?

Lock file API

@schiessle

If I call Lock API and after I lose the token, the file remains locked and can not be longer locked, return always error 403.

Encryption OCA\DAV\Connector\Sabre\Exception\Forbidden: client not allowed to access end-to-end encrypted content

Server configuration detail

Operating system: Linux 3.16.6-042stab123.8 #1 SMP Fri Jun 23 18:45:27 MSK 2017 x86_64

Webserver: Apache/2.4.10 (Debian) (apache2handler)

Database: mysql 5.7.20

PHP version: 5.6.30-0+deb8u1
Modules loaded: Core, date, ereg, libxml, openssl, pcre, zlib, bcmath, bz2, calendar, ctype, dba, dom, hash, fileinfo, filter, ftp, gettext, SPL, iconv, mbstring, session, posix, Reflection, standard, shmop, SimpleXML, soap, sockets, Phar, exif, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, apache2handler, PDO, apcu, curl, gd, imagick, intl, json, ldap, smbclient, mcrypt, memcache, memcached, mysql, mysqli, pdo_mysql, pdo_sqlite, readline, redis, sqlite3, mhash, apc, libsmbclient, Zend OPcache

Nextcloud version: 13.0.0 Beta 3 - 13.0.0.8

Updated from an older Nextcloud/ownCloud or fresh install: new install

Where did you install Nextcloud from: unknown

Signing status

Array

List of activated apps
Enabled:
 - activity: 2.6.1
 - comments: 1.3.0
 - dav: 1.4.5
 - encryption: 2.0.0
 - end_to_end_encryption: 1.0.1
 - federatedfilesharing: 1.3.1
 - federation: 1.3.0
 - files: 1.8.0
 - files_pdfviewer: 1.2.0
 - files_sharing: 1.5.0
 - files_texteditor: 2.5.1
 - files_trashbin: 1.3.0
 - files_versions: 1.6.0
 - files_videoplayer: 1.2.0
 - firstrunwizard: 2.2.1
 - gallery: 18.0.0
 - issuetemplate: 0.3.0
 - logreader: 2.0.0
 - lookup_server_connector: 1.1.0
 - nextcloud_announcements: 1.2.0
 - notifications: 2.1.2
 - oauth2: 1.1.0
 - password_policy: 1.3.0
 - provisioning_api: 1.3.0
 - serverinfo: 1.3.0
 - sharebymail: 1.3.0
 - survey_client: 1.1.0
 - systemtags: 1.3.0
 - theming: 1.4.1
 - twofactor_backupcodes: 1.2.3
 - updatenotification: 1.3.0
 - workflowengine: 1.3.0
Disabled:
 - admin_audit
 - bruteforcesettings
 - files_external
 - user_external
 - user_ldap

Configuration (config/config.php)
{
    "passwordsalt": "***REMOVED SENSITIVE VALUE***",
    "secret": "***REMOVED SENSITIVE VALUE***",
    "trusted_domains": [
        "xxxx"
    ],
    "datadirectory": "***REMOVED SENSITIVE VALUE***",
    "overwrite.cli.url": "http:\/\/localhost",
    "dbtype": "mysql",
    "version": "13.0.0.8",
    "dbname": "***REMOVED SENSITIVE VALUE***",
    "dbhost": "***REMOVED SENSITIVE VALUE***",
    "dbport": "",
    "dbtableprefix": "oc_",
    "mysql.utf8mb4": true,
    "dbuser": "***REMOVED SENSITIVE VALUE***",
    "dbpassword": "***REMOVED SENSITIVE VALUE***",
    "installed": true,
    "instanceid": "***REMOVED SENSITIVE VALUE***",
    "maintenance": false,
    "tempdirectory": "\/tmp"
}

Are you using external storage, if yes which one: local/smb/sftp/...

Are you using encryption: yes

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...

Client configuration

Browser: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36

Operating system:

Logs

Browser log
Fatal | webdav | OCA\DAV\Connector\Sabre\Exception\Forbidden: client not allowed to access end-to-end encrypted content/home/apps/cloud2/apps/end_to_end_encryption/lib/Connector/Sabre/LockPlugin.php - line 119: OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->checkUserAgent('Mozilla/5.0 (Wi...', '138542782628a24...')[internal function] OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->checkLock(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))/home/apps/cloud2/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array)/home/apps/cloud2/3rdparty/sabre/dav/lib/DAV/Server.php - line 466: Sabre\Event\EventEmitter->emit('beforeMethod', Array)/home/apps/cloud2/3rdparty/sabre/dav/lib/DAV/Server.php - line 254: Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))/home/apps/cloud2/apps/dav/appinfo/v1/webdav.php - line 80: Sabre\DAV\Server->exec()/home/apps/cloud2/remote.php - line 164: require_once('/home/apps/clou...'){main}
-- | -- | --
Nextcloud log
{"reqId":"Ztd3pvTopQNozyHO1U5g","level":3,"time":"2017-12-19T11:25:30+00:00","remoteAddr":"xxxx","user":"xxxx","app":"no app in context","method":"GET","url":"\/index.php\/settings\/admin\/logging","message":"issuetemplate","userAgent":"Mozilla\/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/63.0.3239.84 Safari\/537.36","version":"13.0.0.8"}
{"reqId":"FESeUgDYx4lmqyXCOZxl","level":4,"time":"2017-12-19T11:26:30+00:00","remoteAddr":"xxxx","user":"xxxx","app":"webdav","method":"PROPFIND","url":"\/remote.php\/webdav\/0d29088885cfa89c88a1e61bd8.jpg","message":"Exception: {\"Exception\":\"OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Exception\\\\Forbidden\",\"Message\":\"client not allowed to access end-to-end encrypted content\",\"Code\":0,\"Trace\":\"#0 \\\/home\\\/apps\\\/cloud2\\\/apps\\\/end_to_end_encryption\\\/lib\\\/Connector\\\/Sabre\\\/LockPlugin.php(119): OCA\\\\EndToEndEncryption\\\\Connector\\\\Sabre\\\\LockPlugin->checkUserAgent('Mozilla\\\/5.0 (Wi...', '0d29088885cfa89...')\\n#1 [internal function]: OCA\\\\EndToEndEncryption\\\\Connector\\\\Sabre\\\\LockPlugin->checkLock(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#2 \\\/home\\\/apps\\\/cloud2\\\/3rdparty\\\/sabre\\\/event\\\/lib\\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\\n#3 \\\/home\\\/apps\\\/cloud2\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(466): Sabre\\\\Event\\\\EventEmitter->emit('beforeMethod', Array)\\n#4 \\\/home\\\/apps\\\/cloud2\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(254): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#5 \\\/home\\\/apps\\\/cloud2\\\/apps\\\/dav\\\/appinfo\\\/v1\\\/webdav.php(80): Sabre\\\\DAV\\\\Server->exec()\\n#6 \\\/home\\\/apps\\\/cloud2\\\/remote.php(164): require_once('\\\/home\\\/apps\\\/clou...')\\n#7 {main}\",\"File\":\"\\\/home\\\/apps\\\/cloud2\\\/apps\\\/end_to_end_encryption\\\/lib\\\/Connector\\\/Sabre\\\/LockPlugin.php\",\"Line\":151}","userAgent":"Mozilla\/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/63.0.3239.84 Safari\/537.36","version":"13.0.0.8"}

The network log
{
  "log": {
    "version": "1.2",
    "creator": {
      "name": "WebInspector",
      "version": "537.36"
    },
    "pages": [],
    "entries": [
      {
        "startedDateTime": "2017-12-19T11:19:37.871Z",
        "time": 250.7885439979582,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:19:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "536"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=99"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 536,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 699,
          "bodySize": 536,
          "_transferSize": 1235
        },
        "cache": {},
        "timings": {
          "blocked": 3.0445440045878085,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.42199999734293003,
          "wait": 240.95800000213785,
          "receive": 8.363999993889593,
          "_blocked_queueing": 0.5439999949885532
        },
        "serverIPAddress": "xxxxx",
        "connection": "632221"
      },
      {
        "startedDateTime": "2017-12-19T11:20:07.868Z",
        "time": 245.47252500274772,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:20:10 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "536"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=99"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 536,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 699,
          "bodySize": 536,
          "_transferSize": 1235
        },
        "cache": {},
        "timings": {
          "blocked": 3.642524996037538,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.3870000000461,
          "wait": 240.0670000060927,
          "receive": 3.3760000005713664,
          "_blocked_queueing": 0.5250000031082891
        },
        "serverIPAddress": "xxxxx",
        "connection": "632369"
      },
      {
        "startedDateTime": "2017-12-19T11:20:37.869Z",
        "time": 229.7842790029099,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:20:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "536"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=99"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 536,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 699,
          "bodySize": 536,
          "_transferSize": 1235
        },
        "cache": {},
        "timings": {
          "blocked": 3.2812789971794656,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.2860000022337803,
          "wait": 224.68300000036834,
          "receive": 3.5340000031283125,
          "_blocked_queueing": 1.2790000037057325
        },
        "serverIPAddress": "xxxxx",
        "connection": "632450"
      },
      {
        "startedDateTime": "2017-12-19T11:21:07.874Z",
        "time": 220.80398500420415,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:21:10 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "536"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=99"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 536,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 699,
          "bodySize": 536,
          "_transferSize": 1235
        },
        "cache": {},
        "timings": {
          "blocked": 5.433985005722204,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.29199999698903945,
          "wait": 213.383000002068,
          "receive": 3.6949999994249083,
          "_blocked_queueing": 0.9849999987636693
        },
        "serverIPAddress": "xxxxx",
        "connection": "632872"
      },
      {
        "startedDateTime": "2017-12-19T11:21:37.873Z",
        "time": 216.78512700423744,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:21:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "536"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=99"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 536,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 699,
          "bodySize": 536,
          "_transferSize": 1235
        },
        "cache": {},
        "timings": {
          "blocked": 3.78612700079248,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.30200000037439034,
          "wait": 210.47600000019884,
          "receive": 4.221000002871733,
          "_blocked_queueing": 1.127000003180001
        },
        "serverIPAddress": "xxxx",
        "connection": "633506"
      },
      {
        "startedDateTime": "2017-12-19T11:22:07.879Z",
        "time": 241.31717000004573,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:22:10 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "536"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=99"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 536,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 699,
          "bodySize": 536,
          "_transferSize": 1235
        },
        "cache": {},
        "timings": {
          "blocked": 6.934170004205949,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 5.23000000248426,
          "wait": 218.91299999697372,
          "receive": 12.239999996381812,
          "_blocked_queueing": 1.1699999959091656
        },
        "serverIPAddress": "xxxx",
        "connection": "633741"
      },
      {
        "startedDateTime": "2017-12-19T11:22:37.871Z",
        "time": 286.49752500096656,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:22:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "536"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 536,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 536,
          "_transferSize": 1236
        },
        "cache": {},
        "timings": {
          "blocked": 2.3935249952119184,
          "dns": 33.01900000224119,
          "ssl": 9.001999998872598,
          "connect": 49.93100000137929,
          "send": 0.444000004790702,
          "wait": 197.55299999815182,
          "receive": 3.156999999191612,
          "_blocked_queueing": 0.5250000031082891
        },
        "serverIPAddress": "xxxx",
        "connection": "634703"
      },
      {
        "startedDateTime": "2017-12-19T11:23:07.872Z",
        "time": 507.648666999281,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:23:10 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 122.67966700005498,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.3550000037649994,
          "wait": 381.8759999994652,
          "receive": 4.737999995995779,
          "_blocked_queueing": 0.6669999929727055
        },
        "serverIPAddress": "xxxx",
        "connection": "635444"
      },
      {
        "startedDateTime": "2017-12-19T11:23:37.881Z",
        "time": 283.33864599974186,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:23:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 4.36064599764359,
          "dns": 0.3450000003795104,
          "ssl": 11.02299999911334,
          "connect": 16.58200000383654,
          "send": 0.3429999997024993,
          "wait": 246.22399999498154,
          "receive": 15.484000003198162,
          "_blocked_queueing": 4.646000001230277
        },
        "serverIPAddress": "xxxx",
        "connection": "636895"
      },
      {
        "startedDateTime": "2017-12-19T11:24:07.871Z",
        "time": 389.3735220054368,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:24:10 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 3.302521997349683,
          "dns": 0.4150000022491498,
          "ssl": 15.0670000002719,
          "connect": 24.69500000006521,
          "send": 0.4020000051241013,
          "wait": 357.86499999812804,
          "receive": 2.6940000025206245,
          "_blocked_queueing": 0.5220000020926818
        },
        "serverIPAddress": "xxxx",
        "connection": "637083"
      },
      {
        "startedDateTime": "2017-12-19T11:24:37.874Z",
        "time": 274.58052099750785,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:24:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 3.2655210066441183,
          "dns": 0.43000000005122985,
          "ssl": 9.4039999967208,
          "connect": 18.19699999759906,
          "send": 0.42299999768150087,
          "wait": 249.57600000197996,
          "receive": 2.688999993551988,
          "_blocked_queueing": 0.5209999944781885
        },
        "serverIPAddress": "xxxx",
        "connection": "637187"
      },
      {
        "startedDateTime": "2017-12-19T11:25:07.872Z",
        "time": 294.81055399941397,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:25:10 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 3.741554000444014,
          "dns": 0.4909999988740297,
          "ssl": 13.5620000000926,
          "connect": 22.45399999810616,
          "send": 0.39000000106170063,
          "wait": 264.03600000048755,
          "receive": 3.6980000004405156,
          "_blocked_queueing": 0.5539999983739108
        },
        "serverIPAddress": "xxxx",
        "connection": "637298"
      },
      {
        "startedDateTime": "2017-12-19T11:25:37.873Z",
        "time": 296.01715700311615,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:25:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 8.015156994697461,
          "dns": 0.5660000024363399,
          "ssl": 9.684999997261901,
          "connect": 18.754000004264512,
          "send": 0.327999994624399,
          "wait": 248.27600000571695,
          "receive": 20.078000001376495,
          "_blocked_queueing": 14.157000005070586
        },
        "serverIPAddress": "xxxx",
        "connection": "637752"
      },
      {
        "startedDateTime": "2017-12-19T11:26:07.872Z",
        "time": 291.10552499660116,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:26:10 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 3.4525250044680424,
          "dns": 0.3979999964940397,
          "ssl": 9.4559999997727,
          "connect": 17.99000000028169,
          "send": 0.32699999428589877,
          "wait": 266.4070000028005,
          "receive": 2.5309999982709996,
          "_blocked_queueing": 0.5249999958323315
        },
        "serverIPAddress": "xxxx",
        "connection": "637892"
      },
      {
        "startedDateTime": "2017-12-19T11:26:27.101Z",
        "time": 532.7711579979807,
        "request": {
          "method": "PUT",
          "url": "https://xxxx/remote.php/webdav/0d29088885cfa89c88a1e61bd8.jpg",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Origin",
              "value": "https://xxxx"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Content-Disposition",
              "value": "attachment; filename=\"0d29088885cfa89c88a1e61bd8.jpg\""
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Content-Length",
              "value": "39072"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "Content-Type",
              "value": "image/jpeg"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "If-None-Match",
              "value": "*"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 985,
          "bodySize": 0
        },
        "response": {
          "status": 201,
          "statusText": "Created",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:26:29 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "OC-FileId",
              "value": "00000352occh5pm23b77"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "OC-ETag",
              "value": "\"3b0012baff9b55b053257873c16c5dbf\""
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "\"3b0012baff9b55b053257873c16c5dbf\""
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "text/html; charset=UTF-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';"
            },
            {
              "name": "Content-Length",
              "value": "0"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 0,
            "mimeType": "text/html",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 768,
          "bodySize": 0,
          "_transferSize": 768
        },
        "cache": {},
        "timings": {
          "blocked": 7.184158001531613,
          "dns": 102.54300000087851,
          "ssl": 10.556999994150004,
          "connect": 121.56300000060551,
          "send": 9.184000002278992,
          "wait": 287.8669999990959,
          "receive": 4.429999993590172,
          "_blocked_queueing": 1.1579999991226941
        },
        "serverIPAddress": "xxxx",
        "connection": "637962"
      },
      {
        "startedDateTime": "2017-12-19T11:26:27.535Z",
        "time": 200.79233700199256,
        "request": {
          "method": "PROPFIND",
          "url": "https://xxxx/remote.php/webdav/0d29088885cfa89c88a1e61bd8.jpg",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Origin",
              "value": "https://xxxx"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "Content-Type",
              "value": "application/xml; charset=UTF-8"
            },
            {
              "name": "Accept",
              "value": "*/*"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Content-Length",
              "value": "517"
            },
            {
              "name": "Depth",
              "value": "0"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 902,
          "bodySize": 517,
          "postData": {
            "mimeType": "application/xml; charset=UTF-8",
            "text": "<?xml version=\"1.0\"?>\n<d:propfind  xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\">\n  <d:prop>\n    <d:getlastmodified />\n    <d:getetag />\n    <d:getcontenttype />\n    <d:resourcetype />\n    <oc:fileid />\n    <oc:permissions />\n    <oc:size />\n    <d:getcontentlength />\n    <nc:has-preview />\n    <nc:mount-type />\n    <nc:is-encrypted />\n    <oc:tags />\n    <oc:favorite />\n    <oc:comments-unread />\n    <oc:owner-display-name />\n    <oc:share-types />\n  </d:prop>\n</d:propfind>"
          }
        },
        "response": {
          "status": 403,
          "statusText": "Forbidden",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:26:29 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "431"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/xml; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=99"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 431,
            "mimeType": "application/xml",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 657,
          "bodySize": 431,
          "_transferSize": 1088
        },
        "cache": {},
        "timings": {
          "blocked": 15.824337000194628,
          "dns": -1,
          "ssl": -1,
          "connect": -1,
          "send": 0.2420000018901014,
          "wait": 176.3219999993453,
          "receive": 10.404000000562519,
          "_blocked_queueing": 5.337000002327841
        },
        "serverIPAddress": "xxxx",
        "connection": "637962"
      },
      {
        "startedDateTime": "2017-12-19T11:26:37.876Z",
        "time": 278.16748999675474,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:26:40 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 2.8664899952636955,
          "dns": 0.4160000025876798,
          "ssl": 9.185999995679602,
          "connect": 17.05800000490854,
          "send": 0.3569999971659996,
          "wait": 251.9780000002356,
          "receive": 5.491999996593222,
          "_blocked_queueing": 0.48999999853549525
        },
        "serverIPAddress": "xxxx",
        "connection": "638016"
      },
      {
        "startedDateTime": "2017-12-19T11:27:07.281Z",
        "time": 281.42789299443393,
        "request": {
          "method": "GET",
          "url": "https://xxxx/ocs/v2.php/apps/notifications/api/v2/notifications",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "requesttoken",
              "value": "BmcaxLfmsTiEJhP+8spXWHUkcCzGqNLoAbhQkYqBz1c=:VS5c9O2R1GDTcUC6xeE5GzJgA36nyYONUfIxwNruiAI="
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Host",
              "value": "xxxx"
            },
            {
              "name": "Accept-Language",
              "value": "cs,sk;q=0.9,en;q=0.8"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
            },
            {
              "name": "OCS-APIREQUEST",
              "value": "true"
            },
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "X-Requested-With",
              "value": "XMLHttpRequest"
            },
            {
              "name": "Cookie",
              "value": "oc_sessionPassphrase=LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be; __Host-nc_sameSiteCookielax=true; __Host-nc_sameSiteCookiestrict=true; occh5pm23b77=dp0nd9lgfbj2ufmvrpsr0nqcv2"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            }
          ],
          "queryString": [],
          "cookies": [
            {
              "name": "oc_sessionPassphrase",
              "value": "LgVogzo1l5F%2F5es29VU1o%2FKeEMdzukJVDmM8Ls7nWzvBnuReM92xuuXfJWr3Of2I1UshqLldHIq06inCyeWMuA65sidOPDhq3KvGGrf%2B0jpwYNW9SCNK8qiUssksXe%2Be",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookielax",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "__Host-nc_sameSiteCookiestrict",
              "value": "true",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "occh5pm23b77",
              "value": "dp0nd9lgfbj2ufmvrpsr0nqcv2",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 824,
          "bodySize": 0
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Date",
              "value": "Tue, 19 Dec 2017 11:27:09 GMT"
            },
            {
              "name": "X-Content-Type-Options",
              "value": "nosniff"
            },
            {
              "name": "X-Permitted-Cross-Domain-Policies",
              "value": "none"
            },
            {
              "name": "Connection",
              "value": "Keep-Alive"
            },
            {
              "name": "Content-Length",
              "value": "580"
            },
            {
              "name": "X-XSS-Protection",
              "value": "1; mode=block"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Server",
              "value": "Apache/2.4.10 (Debian)"
            },
            {
              "name": "X-Frame-Options",
              "value": "SAMEORIGIN"
            },
            {
              "name": "ETag",
              "value": "beb4dbf9af069aa2df7b147229965085"
            },
            {
              "name": "X-Download-Options",
              "value": "noopen"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15552000; includeSubDomains; preload"
            },
            {
              "name": "Content-Type",
              "value": "application/json; charset=utf-8"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache, no-store, must-revalidate"
            },
            {
              "name": "Content-Security-Policy",
              "value": "default-src 'none';base-uri 'none';manifest-src 'self'"
            },
            {
              "name": "X-Robots-Tag",
              "value": "none"
            },
            {
              "name": "Keep-Alive",
              "value": "timeout=5, max=100"
            },
            {
              "name": "Expires",
              "value": "Thu, 19 Nov 1981 08:52:00 GMT"
            }
          ],
          "cookies": [],
          "content": {
            "size": 580,
            "mimeType": "application/json",
            "compression": 0
          },
          "redirectURL": "",
          "headersSize": 700,
          "bodySize": 580,
          "_transferSize": 1280
        },
        "cache": {},
        "timings": {
          "blocked": 5.749893003558102,
          "dns": 0.7359999945037998,
          "ssl": 10.608000004140202,
          "connect": 19.41399999486752,
          "send": 0.32199999986909944,
          "wait": 252.19700000161538,
          "receive": 3.0090000000200234,
          "_blocked_queueing": 0.8929999967222102
        },
        "serverIPAddress": "xxxx",
        "connection": "638146"
      }
    ]
  }
}

After enabling E2E encryption, no permission to write data in folder

Hi,

I'm using the Nextcloud 3.0.1 client on Android 7.1. A Nextcloud 13 server on Ubuntu 16.04. I installed the E2E app manually since it was not available in the default app listing on the server (by extracting the tar.gz in the apps folder and changed the permissions to the www-data user). Then I enabled the app in the apps settings. I have the option now in my Nextcloud client on Android. But after I enable the encryption option, I'm unable to upload files or create folders. What could be the problem here? I already removed the Nextcloud user and recreated the user. Same problem. Some screenshots below.

screenshot_20180215-142809
screenshot_20180215-142817
screenshot_20180215-142828
screenshot_20180215-142831

Endpoint for thumbnails

Implement new get/post so that a client can push an encrypted thumbnail so that an e2e client can download these to show thumbnails even for encrypted folders.

(as @rullzer said it is very easy and @schiessle wants to implement it)

client not allowed to access end-to-end encrypted content

Upload file from firefox.
But put file on folder, and give mensseger " Could not create file "

Server configuration detail

Operating system: Linux 4.4.0-75-generic #96-Ubuntu SMP Thu Apr 20 09:56:33 UTC 2017 x86_64

Webserver: nginx/1.10.3 (fpm-fcgi)

Database: pgsql PostgreSQL 9.5.10 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit

PHP version: 7.0.22-0ubuntu0.16.04.1
Modules loaded: Core, date, libxml, openssl, pcre, zlib, filter, hash, Reflection, SPL, session, standard, cgi-fcgi, mysqlnd, PDO, xml, bz2, calendar, ctype, curl, dom, mbstring, fileinfo, ftp, gd, gettext, iconv, igbinary, imagick, imap, intl, json, ldap, exif, mcrypt, mysqli, pdo_mysql, pdo_pgsql, pgsql, Phar, posix, readline, redis, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xmlreader, xmlwriter, xsl, zip, Zend OPcache

Nextcloud version: 13.0.0 Beta 3 - 13.0.0.8

Updated from an older Nextcloud/ownCloud or fresh install:

Where did you install Nextcloud from: unknown

Signing status

Array

List of activated apps
Enabled:
 - activity: 2.6.1
 - admin_audit: 1.3.0
 - comments: 1.3.0
 - dav: 1.4.5
 - encryption: 2.0.0
 - end_to_end_encryption: 1.0.1
 - federatedfilesharing: 1.3.1
 - federation: 1.3.0
 - files: 1.8.0
 - files_pdfviewer: 1.2.0
 - files_sharing: 1.5.0
 - files_texteditor: 2.5.1
 - files_trashbin: 1.3.0
 - files_versions: 1.6.0
 - files_videoplayer: 1.2.0
 - firstrunwizard: 2.2.1
 - gallery: 18.0.0
 - issuetemplate: 0.3.0
 - logreader: 2.0.0
 - lookup_server_connector: 1.1.0
 - nextcloud_announcements: 1.2.0
 - notifications: 2.1.2
 - oauth2: 1.1.0
 - password_policy: 1.3.0
 - provisioning_api: 1.3.0
 - registration: 0.3.1
 - serverinfo: 1.3.0
 - sharebymail: 1.3.0
 - survey_client: 1.1.0
 - systemtags: 1.3.0
 - theming: 1.4.1
 - twofactor_backupcodes: 1.2.3
 - updatenotification: 1.3.0
 - workflowengine: 1.3.0
Disabled:
 - files_external
 - user_external
 - user_ldap

Configuration (config/config.php)
{
    "instanceid": "***REMOVED SENSITIVE VALUE***",
    "passwordsalt": "***REMOVED SENSITIVE VALUE***",
    "secret": "***REMOVED SENSITIVE VALUE***",
    "trusted_domains": [
        "nextcloud.prototypeevolution.com"
    ],
    "datadirectory": "***REMOVED SENSITIVE VALUE***",
    "overwrite.cli.url": "https:\/\/nextcloud.prototypeevolution.com",
    "dbtype": "pgsql",
    "version": "13.0.0.8",
    "dbname": "***REMOVED SENSITIVE VALUE***",
    "dbhost": "***REMOVED SENSITIVE VALUE***",
    "dbport": "",
    "dbtableprefix": "oc_",
    "dbuser": "***REMOVED SENSITIVE VALUE***",
    "dbpassword": "***REMOVED SENSITIVE VALUE***",
    "installed": true,
    "updater.release.channel": "beta",
    "mail_smtpmode": "smtp",
    "mail_smtpauthtype": "LOGIN",
    "mail_from_address": "***REMOVED SENSITIVE VALUE***",
    "mail_domain": "***REMOVED SENSITIVE VALUE***",
    "mail_smtpsecure": "tls",
    "mail_smtpauth": 1,
    "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
    "mail_smtpport": "587",
    "mail_smtpname": "***REMOVED SENSITIVE VALUE***",
    "mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
    "force_language": "pt_PT",
    "logtimezone": "UTC",
    "loglevel": 2,
    "log_rotate_size": 1000,
    "has_internet_connection": true,
    "check_for_working_htaccess": true,
    "check_for_working_wellknown_setup": true,
    "check_for_working_webdav": true,
    "memcache.locking": "\\OC\\Memcache\\Redis",
    "memcache.distributed": "\\OC\\Memcache\\Redis",
    "memcache.local": "\\OC\\Memcache\\Redis",
    "redis": {
        "host": "***REMOVED SENSITIVE VALUE***",
        "port": 0,
        "timeout": 0,
        "dbindex": 0
    },
    "maintenance": false
}

Are you using external storage, if yes which one: local/smb/sftp/...

Are you using encryption: yes

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...

LDAP configuration (delete this part if not used)
With access to your command line run e.g.:
sudo -u www-data php occ ldap:show-config
from within your Nextcloud installation folder

Without access to your command line download the data/owncloud.db to your local
computer or access your SQL server remotely and run the select query:
SELECT * FROM `oc_appconfig` WHERE `appid` = 'user_ldap';


Eventually replace sensitive data as the name/IP-address of your LDAP server or groups.

Client configuration

Browser: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0

Operating system:

Logs

Browser log
Insert your webserver log here 

nextcloud.prototypeevolution.com.nextcloud.access.log

Nextcloud log
Insert your Nextcloud log here

nextcloud.log

Browser log

Insert your browser log here, this could for example include:

a) The javascript console log
b) The network log
c) ...

Generate private key

Client generates a 12 word long mnemonic from the english BIP-0039 word list. The word list contains 2048 words, thus resulting in 2048^12 possible key combinations.
-OK [done]

Client encrypts the private key using AES/GCM/NoPadding as cipher (128 bit key size) and uses PBKDF2WithHmacSHA1 as key derivation, as password the in step 1 generated mnemonic is used.

@tobiasKaminsky can I see this step on your code and and example of step for check ?

Thanksssssssss 🔒

App should return 409 when private key already exists

Currently, the app will return 409 if a public key already exists. This is a very useful property, however it wont account for existing private keys. I think it should return 409 if a private key exists as well.

Also, how about returning a json field with a value indicating why 409 is returned?

Block older clients

Older clients (e.g. android <2.1) should be blocked when entering an encrypted folder, otherwise they could delete files...

Overview: Initial development of the server part of end-to-end encryption

  • Implement basic rest calls to
    • store and get the users private key
    • sign the public key and return it
    • get users public key
    • store, get and update meta data file
    • mark folder as encrypted / unencrypted
    • lock file during upload to avoid simultaneous uploads
  • propfind to detect encryption state
  • don't allow to download file while it is locked (sabredav plugin)
  • add capabilities to check whether client-side encryption is enabled or not.
  • filesystem wrapper to move delete / rename meta data files
  • block access to encrypted files in the web interface
  • hide file operations in Web interface and a nice icon for e2e folders (nextcloud/server#6670)
  • unit tests (#1)

Data is not encrypted

I'm assuming "password protection" on a folder is what is supposed to enable client side encryption within the app.
If so, it doesn't do much in terms of encrypting things. Not on iOS at least. Files are still readable from the web client.

Metadata info

@schiessle Hi,a question where the metadata json is memorized from server side and the metadata is associate to directory name od directory fileID ?

Request failure: forbidden (403)

Hi, I am not even sure if this is an error related to the e2ee app, server config or the latest iOS beta app.

I can create folders using the iOS app,
I can encrypt the folders using the iOS app,
the folder gets successfully marked as being encrypted (visible in webUI and iOS app),
but when I try to upload files into that encrypted folder using the iOS app I get the 403 forbidden error.

When looking into the server logs, I find
"OCA\DAV\Connector\Sabre\Exception\Forbidden: client not allowed to access end-to-end encrypted content"

I'd be happy to help with debugging but need some advice what to do.

NC 13
E2EE 1.0.2
iOS app: 2.19.2.00020

12.0.4 to 13rc4, cannot re-enable plugin; oc_e2e_encryption_lock exists.

After upgrading to 13rc4 I re cloned the latest E2EE code from github and tried to re-enable the plugin.

The error results, although I am not able to find the table myself, as it doesn't seem to exist?

An exception occurred while executing 'CREATE TABLE oc_e2e_encryption_lock (id INT NOT NULL COMMENT 'file id of the locked folder', timestamp INT NOT NULL, token VARCHAR(256) NOT NULL COMMENT 'token used to identify the client', UNIQUE INDEX id (id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ENGINE = InnoDB': SQLSTATE[HY000]: General error: 1813 Tablespace for table 'nextcloud.oc_e2e_encryption_lock' exists. Please DISCARD the tablespace before IMPORT.

Latest master plugin no longer allows disabling.

I have removed and reinstalled the E2EE plugin by cloning the master branch into my plugin folder of the server and the plugin is immediately enabled with no means of disabling?

I would previously enable to test and then disable... now it is always enabled, is that by design?

CSR and Key creation failed for New and old user, v13NC and v3.0 Android

Unable to save a key with CSR erro as below.

Any help @tobiasKaminsky would be greatly appreciated :)

Can't create public key: could not sign the CSR, please make sure to submit a valid CSR

and

openssl_csr_sign(): cannot get CSR from parameter 1 at /config/www/nextcloud/apps/end_to_end_encryption/lib/SignatureHandler.php#60

I thought the Ca cert should be setup on creation of the user, so I created a new test user and the setup process still failed.

E2EE is determined for me not to use it :)

"E2E" scheme design recommendation

In it's current shape and form the term "End-to-end encryption" is being applied rather loosely here.

Your concept is that you have a server and a client. The client generates a keypair, encrypts the private key with the passphrase and uploads it along with the public key to the server. Now you have the ability to store files in encrypted form so that the server cannot access the content and since the server has the encrypted private key you can recovery it with the passphrase. Good stuff.

However, say you have two devices. You take your second device, input the passphrase associated with the aforementioned keypair and you can now access the files. You now have two devices with the same keypair and your "End-to-End encryption" now consists of multiple clients with the same keys. You basically have End-To-End encryption with multiple ends.

The proper way of doing this, in my opinion, would be to apply the concepts that Signal uses to provide E2E in group chats.

Basically, each client should generate a new keypair and then use some sort of key exchange mechanism to determine how the files are to be encrypted. This approach, while slightly more complex, is a more secure solution as you can now revoke keys for individual clients and through that achieve forward secrecy.

As it stands now, the E2E scheme you have is better than just having TLS and does provide encryption at rest, but passing the same keypair around to different devices is not the ideal solution from a security perspective.

Feedback at web backend for encrypted folders

Hi,

would be great, if an user get a feedback when he / she clicks on an encrypted folder at nextcloud web backend. Could you please add any message?

At the chrome console there is a 403 error message, which should not appear:

Failed to load resource: the server responded with a status of 403 ()
client.js?v=a969e03c-0:421 Uncaught (in promise) TypeError: Cannot read property 'getElementsByTagNameNS' of null
    at Client._getSabreException (client.js?v=a969e03c-0:421)
    at client.js?v=a969e03c-0:485
    at <anonymous>

Regards,

Revoke keys

If an user lost the mnemonic he will never be able to use E2E again as there is no restore mechanism neither a way to revoke all keys and start from scratch (with loosing all previously encrypted files).

As #20 I think it should be possible to rekove the keys on server side.

Option to unlock folder as user as fallback

  • pre-write hook moves file to change to a $file.part (hidden) name to prevent overwriting it & stores meta-data
  • if the lock does not get reverted for >=24h the user can see the lock in a new setting page and manually unlock it, with a warning
  • if the folder lock is reverted the $file.part is reverted, the corresponding metadata is restored

Basic encryption module

What passwords do I enter here? I do not understand ...
screenshot-192 168 1 217-2018-02-15-11-24-00
What password to enter here: Old log-in password ?
What password to enter here: Current log-in password ?

iOS Create PublicKey

Hi boys, where are the specification of :

curl -X POST http://:@nextcloud/ocs/v2.php/apps/end_to_end_encryption/api/v1/public-key -H "OCS-APIRequest:true" -d csr=""

  1. urlencoded ... type ??
  2. I thing without -----BEGIN PUBLIC KEY----- and -----END PUBLIC KEY-----

@tobiasKaminsky @schiessle

thanks

encryption fails on postgresql, SELECT lastval(...', Array)

I'm creating a folder with the iOS app, and then I'm trying to encrypt it. It fails (red error message appears shortly on screen). The following is logged in nextcloud.log and in nginx access.log:

{"reqId":"z6m8d3BO7JiN0n55Gt5j","level":3,"time":"2018-02-09T11:13:29+01:00","remoteAddr":"185.12.128.225","user":"andreas","app":"no app in context","method":"POST","url":"/nextcloud/ocs/v2.php/apps/end_to_end_encryption/api/v1/lock/00078863ocdjag5z8nms?format=json","message":"Exception: {"Exception":"DoctrineDBALExceptionDriverException","Message":"An exception occurred while executing 'SELECT lastval()':nnSQLSTATE[55000]: Object not in prerequisite state: 7 ERROR: lastval is not yet defined in this session","Code":0,"Trace":" #0 /var/www/html/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php(128): DoctrineDBALDriverAbstractPostgreSQLDriver->convertException('An exception oc...', Object(DoctrineDBALDriverPDOException)) #1 /var/www/html/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(855): DoctrineDBALDBALException::driverExceptionDuringQuery(Object(DoctrineDBALDriverPDOPgSqlDriver), Object(DoctrineDBALDriverPDOException), 'SELECT lastval(...', Array) #2 /var/www/html/nextcloud/lib/private/DB/Connection.php(195): DoctrineDBALConnection->executeQuery('SELECT lastval(...', Array, Array, NULL) #3 /var/www/html/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(541): OCDBConnection->executeQuery('SELECT lastval(...', Array, Array) #4 /var/www/html/nextcloud/lib/private/DB/AdapterPgSql.php(29): DoctrineDBALConnection->fetchColumn('SELECT lastval(...') #5 /var/www/html/nextcloud/lib/private/DB/Connection.php(234): OCDBAdapterPgSql->lastInsertId('oc_e2e_encrypti...') #6 /var/www/html/nextcloud/lib/public/AppFramework/Db/Mapper.php(127): OCDBConnection->lastInsertId('oc_e2e_encrypti...') #7 /var/www/html/nextcloud/apps/end_to_end_encryption/lib/LockManager.php(95): OCPAppFrameworkDbMapper->insert(Object(OCAEndToEndEncryptionDbLockEntity)) #8 /var/www/html/nextcloud/apps/end_to_end_encryption/lib/Controller/RequestHandlerController.php(481): OCAEndToEndEncryptionLockManager->lockFile(78863, '') #9 [internal function]: OCAEndToEndEncryptionControllerRequestHandlerController->lockFolder(78863, '') #10 /var/www/html/nextcloud/lib/private/AppFramework/Http/Dispatcher.php(161): call_user_func_array(Array, Array) #11 /var/www/html/nextcloud/lib/private/AppFramework/Http/Dispatcher.php(91): OCAppFrameworkHttpDispatcher->executeController(Object(OCAEndToEndEncryptionControllerRequestHandlerController), 'lockFolder') #12 /var/www/html/nextcloud/lib/private/AppFramework/App.php(115): OCAppFrameworkHttpDispatcher->dispatch(Object(OCAEndToEndEncryptionControllerRequestHandlerController), 'lockFolder') #13 /var/www/html/nextcloud/lib/private/AppFramework/Routing/RouteActionHandler.php(47): OCAppFrameworkApp::main('OCAEndToEndEnc...', 'lockFolder', Object(OCAppFrameworkDependencyInjectionDIContainer), Array) #14 [internal function]: OCAppFrameworkRoutingRouteActionHandler->__invoke(Array) #15 /var/www/html/nextcloud/lib/private/Route/Router.php(297): call_user_func(Object(OCAppFrameworkRoutingRouteActionHandler), Array) #16 /var/www/html/nextcloud/ocs/v1.php(78): OCRouteRouter->match('/ocsapp/apps/en...') #17 /var/www/html/nextcloud/ocs/v2.php(24): require_once('/var/www/html/n...') #18 {main}","File":"/var/www/html/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractPostgreSQLDriver.php","Line":92}","userAgent":"Mozilla/5.0 (iOS) Nextcloud-iOS/2.20.0","version":"13.0.0.14"}

185.12.128.225 - andreas [09/Feb/2018:11:13:29 +0100] "POST /nextcloud/ocs/v2.php/apps/end_to_end_encryption/api/v1/lock/00078863ocdjag5z8nms?format=json HTTP/2.0" 404 1297 "-" "Mozilla/5.0 (iOS) Nextcloud-iOS/2.20.0" 127.0.0.1 - andreas [09/Feb/2018:11:13:29 +0100] "POST /nextcloud/ocs/v2.php/apps/end_to_end_encryption/api/v1/lock/00078863ocdjag5z8nms?format=json HTTP/1.0" 404 228 "-" "Mozilla/5.0 (iOS) Nextcloud-iOS/2.20.0"

Add option to NOT store key on server

The current design includes storing the private key encrypted on the server.
Some users with very strong security requirements might prefer to e.g. have a hardware token as the only copy of a key.
If the design would allow an option to not store the client key on the server, hardware token support could be integrated later on.

E2EE Android 3.02 Pasword fails and Android dev 20180302 allows access but no uploads allowed

Using Android 3.02 I am unable to get past the password request for the encrypted directory, that I previously had access too.

I have tried the dev android app and it accepts the password, but does not show any of the encrypted files uploaded with the iOS client and uploads error out too.

The same error occurs for both;

Fatal webdav OCA\DAV\Connector\Sabre\Exception\Forbidden: client not allowed to access end-to-end encrypted content/config/www/nextcloud/apps/end_to_end_encryption/lib/Connector/Sabre/LockPlugin.php - line 125: OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->checkUserAgent('Mozilla/5.0 (An...', '/Data')[internal function] OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->checkLock(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))/config/www/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array)/config/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 466: Sabre\Event\EventEmitter->emit('beforeMethod', Array)/config/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 254: Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))/config/www/nextcloud/apps/dav/appinfo/v1/webdav.php - line 80: Sabre\DAV\Server->exec()/config/www/nextcloud/remote.php - line 164: require_once('/config/www/nex...'){main}

Sanity check on server

To get a more bulletproofed upload process the server should do some checks to ensure that we always have a valid and consistent folder with the correct metadata and encrypted files:

  • file size
    • on lock the clients tell server the file size
    • an unlock the server checks if the correct file size was transferred, otherwise revert and send error to client
  • file check
    • although the server cannot read the entire metadata file, it can check & ensure that the count of encrypted files matches the stored files in the folder
    • on unlock: check if correct file count and file names are stored both in metadata and in local folder

While this should always be correct (as the clients should handle it correctly), with these enhancements we can make (more) sure that every upload is consistent.
The only potential problem (I can imagine) then is that the clients uploads a "wrong" playload, e.g. you cannot decrypt it anymore.

--> with this we check for

  • file size
  • file count
  • encrypted file name
  • #20: allows to revert a single upload to a consistent state

@MorrisJobke (as we discussed it)

Plain Directory structure

Hello,

I've seen if the server is compromised, the directory structure of an encrypted folder will be compromised too.

I've seen in the paper this:

Access to ciphertext must not leak directory structure nor file names or content.
• Leaking the number of files in an encrypted folders is an accepted risk

Perhaps it's expected in future milestones, but, is it a bug or a non implemented yet feature? Or have I misunderstood this?

Thanks!

If default encryption and E2E App are enabled it is not possible to edit/delete files encrypted by the default encryption module

If you have both enabled the default encryption and the E2E App and you upload a new file you will see an error message: Die Datei konnte nicht erstellt werden "" in English The File could not be created "" if you reload the page you will see the file but you are not able to delete or edit it. You will just see a message Error deleting the file .... If you disable the E2E App it is possible to delete the File.

Auto upload from Android app fails if e2e app is enabled

The auto upload of images is failing if the folder doesn't exist. I'm not sure if that is more an android issue or an issue with the e2e encryption app, but since it works without the app being enabled, I open the issue here.

NC version: 13 beta4
End-to-End Encryption version: 1.0.1
Android app version: 2.0.0

Auto upload is configured to use subfolders for year/month.

@nextcloud/android Can you have a look as well?

Server error log

	Sabre\DAV\Exception\NotFound: File with name SofortUpload/Camera/2018 could not be located

    /var/www/nextcloud/apps-extra/end_to_end_encryption/lib/Connector/Sabre/LockPlugin.php - line 168: OCA\DAV\Connector\Sabre\ObjectTree->getNodeForPath('SofortUpload/Ca...')
    /var/www/nextcloud/apps-extra/end_to_end_encryption/lib/Connector/Sabre/LockPlugin.php - line 109: OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->getNodeForPath('SofortUpload/Ca...')
    [internal function] OCA\EndToEndEncryption\Connector\Sabre\LockPlugin->checkLock(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))
    /var/www/nextcloud/3rdparty/sabre/event/lib/EventEmitterTrait.php - line 105: call_user_func_array(Array, Array)
    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 466: Sabre\Event\EventEmitter->emit('beforeMethod', Array)
    /var/www/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php - line 254: Sabre\DAV\Server->invokeMethod(Object(Sabre\HTTP\Request), Object(Sabre\HTTP\Response))
    /var/www/nextcloud/apps/dav/appinfo/v1/webdav.php - line 80: Sabre\DAV\Server->exec()
    /var/www/nextcloud/remote.php - line 164: require_once('/var/www/nextcl...')
    {main}

How can I display the 12 word key E2E on android apps?

I have two android phones with nextcloud installed on the first access to encrypted folder and not having marked the key on the second mobile with the same account asks me the password to access the same folder?

I do not remember how I can do it? on app ios of a friend of mine there is voice display key would serve a function like that to remember it, or there is a way to get it back or reset it?

Activity

On "Activity" API view the file name identifier of encrypted file ..
schermata 2018-01-23 alle 17 19 12

This is not a good information.

Data uploaded with nc-android app (e2e) and downloaded with nc-client (e2e) not readable

Hi,

I use the nextcloud android app with e2e-support and nc-client (e2e) on Windows.
I noticed the behavior that the windows-client is hanging (status syncing) when using encrypted folders on the server and data transfer between both apps produces non readable data: When I upload data with the android app an download it via client on my pc the a part of data/files is still encrypted and not readable. In the backgroud a nc 13.0.1 server is running.

Here is mentioned not to use server-side-encryption:
https://help.nextcloud.com/t/where-can-i-find-the-clients-that-do-e2e/28072

Is this right?
Do you need some log files?

Thanks!

Regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.