UNPKG

@sync-in/server

Version:

The secure, open-source platform for file storage, sharing, collaboration, and sync

168 lines (167 loc) 4.68 kB
/* * Copyright (C) 2012-2025 Johan Legrand <johan.legrand@sync-in.com> * This file is part of Sync-in | The open source file sync and share solution * See the LICENSE file for licensing details */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get ALLOWED_WEBDAV_METHODS () { return ALLOWED_WEBDAV_METHODS; }, get ALLOW_EMPTY_BODY_METHODS () { return ALLOW_EMPTY_BODY_METHODS; }, get DEPTH () { return DEPTH; }, get HEADER () { return HEADER; }, get HTML_CONTENT_TYPE () { return HTML_CONTENT_TYPE; }, get LOCK_DISCOVERY_PROP () { return LOCK_DISCOVERY_PROP; }, get LOCK_PREFIX () { return LOCK_PREFIX; }, get LOCK_SCOPE () { return LOCK_SCOPE; }, get NS_DAV () { return NS_DAV; }, get NS_PREFIX () { return NS_PREFIX; }, get OPTIONS_HEADERS () { return OPTIONS_HEADERS; }, get PRECONDITION () { return PRECONDITION; }, get PROPPATCH_METHOD () { return PROPPATCH_METHOD; }, get PROPPATCH_MODIFIED_PROPS () { return PROPPATCH_MODIFIED_PROPS; }, get PROPPATCH_PROP_UPDATE () { return PROPPATCH_PROP_UPDATE; }, get PROPPATCH_SUPPORTED_PROPS () { return PROPPATCH_SUPPORTED_PROPS; }, get PROPSTAT () { return PROPSTAT; }, get REGEX_BASE_PATH () { return REGEX_BASE_PATH; }, get STANDARD_PROPS () { return STANDARD_PROPS; }, get XML_CONTENT_TYPE () { return XML_CONTENT_TYPE; } }); const _appconstants = require("../../../app.constants"); const _applicationsconstants = require("../../applications.constants"); const _routes = require("./routes"); const REGEX_BASE_PATH = new RegExp(`^/?${_routes.WEBDAV_BASE_PATH}/`); const NS_DAV = 'DAV:'; const NS_PREFIX = 'D'; const LOCK_PREFIX = 'urn:uuid:'; const XML_CONTENT_TYPE = 'application/xml; charset=utf-8'; const HTML_CONTENT_TYPE = 'text/html; charset=utf-8'; const ALLOWED_WEBDAV_METHODS = [ _applicationsconstants.HTTP_STANDARD_METHOD.OPTIONS, _applicationsconstants.HTTP_STANDARD_METHOD.HEAD, _applicationsconstants.HTTP_STANDARD_METHOD.GET, _applicationsconstants.HTTP_STANDARD_METHOD.PUT, _applicationsconstants.HTTP_STANDARD_METHOD.DELETE, ...Object.values(_applicationsconstants.HTTP_WEBDAV_METHOD) ].join(', '); const ALLOW_EMPTY_BODY_METHODS = [ _applicationsconstants.HTTP_WEBDAV_METHOD.PROPFIND, _applicationsconstants.HTTP_WEBDAV_METHOD.LOCK ]; const OPTIONS_HEADERS = { Server: _appconstants.SERVER_NAME, 'MS-Author-Via': 'DAV', DAV: '1,2', Allow: ALLOWED_WEBDAV_METHODS, 'Content-Type': HTML_CONTENT_TYPE, 'Content-Length': '0', 'Accept-Ranges': 'bytes' }; const HEADER = { DEPTH: 'depth', IF: 'if', LOCK_TOKEN: 'lock-token', DESTINATION: 'destination', OVERWRITE: 'overwrite', TIMEOUT: 'timeout' }; const LOCK_DISCOVERY_PROP = 'lockdiscovery'; const STANDARD_PROPS = [ 'creationdate', 'getcontenttype', 'resourcetype', 'getlastmodified', 'getcontentlength', 'displayname', 'getetag', 'supportedlock', LOCK_DISCOVERY_PROP ]; var LOCK_SCOPE = /*#__PURE__*/ function(LOCK_SCOPE) { LOCK_SCOPE["EXCLUSIVE"] = "exclusive"; LOCK_SCOPE["SHARED"] = "shared"; return LOCK_SCOPE; }({}); var DEPTH = /*#__PURE__*/ function(DEPTH) { DEPTH["INFINITY"] = "infinity"; DEPTH["RESOURCE"] = "0"; DEPTH["MEMBERS"] = "1"; return DEPTH; }({}); var PROPSTAT = /*#__PURE__*/ function(PROPSTAT) { PROPSTAT["ALLPROP"] = "allprop"; PROPSTAT["PROP"] = "prop"; PROPSTAT["PROPNAME"] = "propname"; return PROPSTAT; }({}); const PROPPATCH_PROP_UPDATE = 'propertyupdate'; const PROPPATCH_METHOD = { SET: 'set', REMOVE: 'remove' }; const PROPPATCH_MODIFIED_PROPS = [ 'getlastmodified', 'lastmodified', 'Win32LastModifiedTime' ]; const PROPPATCH_SUPPORTED_PROPS = [ ...PROPPATCH_MODIFIED_PROPS, 'Win32CreationTime', 'Win32LastAccessTime', 'Win32FileAttributes' ]; const PRECONDITION = { PROTECTED_PROPERTY: 'cannot-modify-protected-property', MISSING_LOCK_TOKEN: 'lock-token-submitted', LOCK_TOKEN_MISMATCH: 'lock-token-matches-request-uri', LOCK_CONFLICT: 'no-conflicting-lock', PROPFIND_FINITE_DEPTH: 'propfind-finite-depth' }; //# sourceMappingURL=webdav.js.map