403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.37
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/share/emacs/28.2/lisp/url/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/emacs/28.2/lisp/url/url-dav.elc
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\207" [require xml url-util url-handlers url-http parse-time] 2)
#@33 List of supported DAV versions.
(defvar url-dav-supported-protocols '(1 2) (#$ . 222))
#@100 Return WebDAV protocol version supported by URL.
Returns nil if WebDAV is not supported.

(fn URL)
(defalias 'url-dav-supported-p #[257 "\301\302\303!\304\"\"\207" [url-dav-supported-protocols seq-intersection plist-get url-http-options dav] 6 (#$ . 316)])
#@57 Return the text data from the XML node NODE.

(fn NODE)
(defalias 'url-dav-node-text #[257 "\300\301\211AA\262\302#\207" [mapconcat #[257 "\211;\203\207\300\207" [""] 2 "\n\n(fn TXT)"] " "] 5 (#$ . 581)])
(defconst url-dav-datatype-attribute 'urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/dt)
#@13 

(fn NODE)
(defalias 'url-dav-process-integer-property #[257 "\300\301\302!!!\207" [truncate string-to-number url-dav-node-text] 5 (#$ . 884)])
#@13 

(fn NODE)
(defalias 'url-dav-process-number-property #[257 "\300\301!!\207" [string-to-number url-dav-node-text] 4 (#$ . 1036)])
#@13 

(fn NODE)
(defalias 'url-dav-process-date-property #[257 "\300!\301!\211\203\302!\207\303\304\305\211@\262$\210\207" [url-dav-node-text parse-iso8601-time-string encode-time url-debug dav "Unable to decode date (%S) (%s)"] 8 (#$ . 1174)])
#@13 

(fn NODE)
(defalias 'url-dav-process-boolean-property #[257 "\300\301!!\302U?\207" [string-to-number url-dav-node-text 0] 4 (#$ . 1429)])
#@13 

(fn NODE)
(defalias 'url-dav-process-uri-property #[257 "\300\301!!\207" [url-generic-parse-url url-dav-node-text] 4 (#$ . 1576)])
#@56 Find a function to parse the XML node NODE.

(fn NODE)
(defalias 'url-dav-find-parser #[257 "\211\211@\262\300N\206-\301\302\303\211@\262\"!\304!\204 \305\262\202*\306\211@\262\300#\210\211\262\207" [dav-parser intern format "url-dav-process-%s" fboundp url-dav-node-text put] 6 (#$ . 1716)])
#@13 

(fn NODE)
(defalias 'url-dav-dispatch-node '(macro . #[257 "\300\301DE\207" [funcall url-dav-find-parser] 4 (#$ . 2027)]))
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:prop #[257 "\211\211AA\262\301\211\211\204\302\303!\210\203\202@\262\304\211A@\262\236\243\206(\305!\262\301\262\306\267\202\\\307!\262\202o\310!\262\202o\311!\262\202o\312!\262\202o\313!\262\202o\314=\204h\315\316\317#\210\320!!\262\321\211@\262#\262A\262\202\207" [url-dav-datatype-attribute nil error "No child nodes in DAV:prop" intern "unknown" #s(hash-table size 11 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (date 52 dateTime 52 dateTime\.rfc1123 52 dateTime\.tz 52 dateTime\.iso8601 52 dateTime\.iso8601tz 52 int 60 float 68 number 68 boolean 76 uri 84)) url-dav-process-date-property url-dav-process-integer-property url-dav-process-number-property url-dav-process-boolean-property url-dav-process-uri-property unknown url-debug dav "Unknown data type in url-dav-process-prop: %s" url-dav-find-parser plist-put] 9 (#$ . 2160)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:supportedlock #[257 "\211\211AA\262\300\211\211\203d@;\204]@\211@\262\301=\203]\302@\211AA\262\236\262\303@\211AA\262\236\262\203]\211\203]\211AA\262@\211@\262\262\211\211AA\262@\211@\262\262\211BB\262A\262\202	\207" [nil DAV:lockentry DAV:lockscope DAV:locktype] 8 (#$ . 3116)])
#@13 

(fn NODE)
(defalias 'url-dav-process-subnode-property #[257 "\300\301\302\303\211AA\262\"\"\207" [delq nil mapcar car-safe] 7 (#$ . 3476)])
(byte-code "\300\301\302\"\210\300\303\304\"\210\300\305\304\"\210\300\306\304\"\210\300\307\302\"\210\300\310\311\"\210\300\312\311\"\210\300\313\314\"\210\300\315\314\"\207" [defalias url-dav-process-DAV:depth url-dav-process-integer-property url-dav-process-DAV:resourcetype url-dav-process-subnode-property url-dav-process-DAV:locktype url-dav-process-DAV:lockscope url-dav-process-DAV:getcontentlength url-dav-process-DAV:getlastmodified url-dav-process-date-property url-dav-process-DAV:creationdate url-dav-process-DAV:iscollection url-dav-process-boolean-property url-dav-process-DAV:ishidden] 3)
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:locktoken #[257 "\300\301\302\303\211AA\262\"\"\207" [delq nil mapcar #[257 "\211;\203\207\300!!\207" [url-dav-find-parser] 3 "\n\n(fn N)"]] 7 (#$ . 4231)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:owner #[257 "\300\301\302\303\211AA\262\"\"\207" [delq nil mapcar #[257 "\211;\203\207\300!!\207" [url-dav-find-parser] 3 "\n\n(fn N)"]] 7 (#$ . 4443)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:activelock #[257 "\211\211AA\262\300\203*@<\203#@\211@\262\301@!@!BB\262A\262\202\207" [nil url-dav-find-parser] 6 (#$ . 4651)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:lockdiscovery #[257 "\211\211AA\262\300\203.@;\204'@\211@\262\301=\203'\302@!@!B\262A\262\202\207" [nil DAV:activelock url-dav-find-parser] 5 (#$ . 4844)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:status #[257 "\300!\301\302\"\203\303\304\305\"!\207\306\207" [url-dav-node-text string-match "\\`[ 
	\n]*HTTP/[0-9.]+ \\([0-9]+\\)" string-to-number match-string 1 500] 6 (#$ . 5065)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:propstat #[257 "\211\211AA\262\300\211\204\301\302!\210\303\304\236!\304\236!\262\303\305\236!\305\236!\262\306\305#\262\207" [nil error "No child nodes in DAV:propstat" url-dav-find-parser DAV:prop DAV:status plist-put] 8 (#$ . 5305)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:response #[257 "\211\211AA\262\300\211\204\301\302!\210\303\236\262\304\236\262\211\204\"\301\305!\210\204*\301\306!\210\307!!\262\307!!\262\211B\207" [nil error "No child nodes in DAV:response" DAV:propstat DAV:href "No href in DAV:response" "No propstat in DAV:response" url-dav-find-parser] 6 (#$ . 5605)])
#@13 

(fn NODE)
(defalias 'url-dav-process-DAV:multistatus #[257 "\211\211AA\262\300\203\301@!@!B\262A\262\202\207" [nil url-dav-find-parser] 5 (#$ . 5982)])
#@171 Parse a WebDAV response from BUFFER, interpreting it relative to URL.

The buffer must have been retrieved by HTTP or HTTPS and contain an
XML document.

(fn BUFFER URL)
(defalias 'url-dav-process-response #[514 "\303\211\203A\304\305\"\216rq\210b\210\306`d\307#\210\212\310\311\303\312#\203(\313\314!\210\202)	\262\n\203@\315\316\n\"\203@\317`d\303\211\320%\262*@\211@\262\321=\203T\322@!@!\207\323\324\325#\210\322@!@!\326\327#\262BC\207" [url-http-end-of-headers url-http-response-status url-http-content-type nil make-closure #[0 "\301\300!\207" [V0 kill-buffer] 2] indent-rigidly -1000 re-search-forward "
?\n" t replace-match "" string-match "\\`\\(text\\|application\\)/xml" xml-parse-region symbol-qnames DAV:multistatus url-dav-find-parser url-debug dav "Got back singleton response for URL(%S)" plist-put DAV:status] 10 (#$ . 6155)])
#@734 Perform WebDAV operation METHOD on URL.  Return the parsed responses.
Automatically creates an XML request body if TAG is non-nil.
BODY is the XML document fragment to be enclosed by <TAG></TAG>.

DEPTH is how deep the request should propagate.  Default is 0, meaning
it should apply only to URL.  A negative number means to use
`Infinity' for the depth.  Not all WebDAV servers support this depth
though.

HEADERS is an assoc list of extra headers to send in the request.

NAMESPACES is an assoc list of (NAMESPACE . EXPANSION), and these are
added to the <TAG> element.  The DAV=DAV: namespace is automatically
added to this list, so most requests can just pass in nil.

(fn URL METHOD TAG BODY &optional DEPTH HEADERS NAMESPACES)
(defalias 'url-dav-request #[1796 "\206\303\262\303W\203\304\262\202\305!\262\306\307\"\204$\310B\262\311B\312BB\205H\313\314!\315\316\317\320#\321\322\314\f!\321\260	\323\324!\"+\207" [url-request-extra-headers url-request-method url-request-data 0 "Infinity" int-to-string assoc "DAV" ("DAV" . "DAV:") "Depth" ("Content-type" . "text/xml") "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<" symbol-name " " mapconcat #[257 "\300@\301A\302\260\207" ["xmlns:" "='" "'"] 6 "\n\n(fn NS)"] "\n    " ">\n" "</" url-dav-process-response url-retrieve-synchronously] 16 (#$ . 7031)])
#@266 Return properties for URL, up to DEPTH levels deep.

Returns an assoc list, where the key is the filename (possibly a full
URI), and the value is a standard property list of DAV property
names (ie: DAV:resourcetype).

(fn URL &optional ATTRIBUTES DEPTH NAMESPACES)
(defalias 'url-dav-get-properties #[1025 "\300\301\302\203\303\304\305#\202\306\307&\207" [url-dav-request "PROPFIND" DAV:propfind mapconcat #[257 "\300\301!\302Q\207" ["<DAV:prop><" symbol-name "/></DAV:prop>"] 4 "\n\n(fn ATTR)"] "\n  " "  <DAV:allprop/>" nil] 12 (#$ . 8383)])
#@80 Return whether STATUS was the result of a successful DAV request.

(fn STATUS)
(defalias 'url-dav-http-success-p #[257 "\211\206\300\301\245\302U\207" [500 100 2] 3 (#$ . 8948)])
(byte-code "\300\301\302\303#\300\207" [function-put url-dav-http-success-p compiler-macro url-dav-http-success-p--inliner] 4)
#@28 

(fn INLINE--FORM STATUS)
(defalias 'url-dav-http-success-p--inliner #[514 "\3002\301\302\303\304E\305E\306E0\207" [inline--just-use = / or 500 100 2] 7 (#$ . 9262)])
#@333 URL used as contact information when creating locks in DAV.
This will be used as the contents of the DAV:owner/DAV:href tag to
identify the owner of a LOCK when requesting it.  This will be shown
to other users when the DAV:lockdiscovery property is requested, so
make sure you are comfortable with it leaking to the outside world.
(defvar url-dav-lock-identifier (concat "mailto:" user-mail-address) (#$ . 9440))
#@398 Request a lock on URL.  If EXCLUSIVE is non-nil, get an exclusive lock.
Optional 3rd argument DEPTH says how deep the lock should go, default is 0
(lock only the resource and none of its children).

Returns a cons-cell of (SUCCESSFUL-RESULTS . FAILURE-RESULTS).
SUCCESSFUL-RESULTS is a list of (URL STATUS locktoken).
FAILURE-RESULTS is a list of (URL STATUS).

(fn URL EXCLUSIVE &optional DEPTH)
(defalias 'url-dav-lock-resource #[770 "\203\302\202	\303\262\304\305\306\260\307\211\211\211\211\310	\311\312	\313&\262\314	!	>\2044\315	!\262	\203m\211A\262\242\262\316\317\"\206H\320\262\206O\320\321\245\322U\203b\323EB\262\2024DB\262\2024\211B\207" [url-dav-lock-identifier cl-struct-url-tags "<DAV:exclusive/>" "<DAV:shared/>" "  <DAV:lockscope>" "</DAV:lockscope>\n  <DAV:locktype> <DAV:write/> </DAV:locktype>\n  <DAV:owner>\n    <DAV:href>" "</DAV:href>\n  </DAV:owner>\n" nil url-dav-request "LOCK" DAV:lockinfo (("Timeout" . "Infinite")) type-of url-generic-parse-url plist-get DAV:status 500 100 2 "huh"] 16 (#$ . 9861)])
#@76 Return an assoc list of all active locks on URL.

(fn URL &optional DEPTH)
(defalias 'url-dav-active-locks #[513 "\301\302#\303\211\211\211\304!>\204\305!\262\203\235\211A\262\242\262\211A\262\242\262\303\262\306\307\"\2067\310\311\245\312U\203\213\306\313\"\211\262\203\213\203\213\314@\236\203\204\314@\236A\315@\236A\211\203\202\211@\211\203z\211@BB\262A\266\202\202e\210A\266\202\202^\266A\262\202H\203\316\"BB\262\202\207" [cl-struct-url-tags url-dav-get-properties (DAV:lockdiscovery) nil type-of url-generic-parse-url plist-get DAV:status 500 100 2 DAV:lockdiscovery DAV:locktoken DAV:owner url-expand-file-name] 15 (#$ . 10938)])
#@122 Release the lock on URL represented by LOCK-TOKEN.
Returns t if the lock was successfully released.

(fn URL LOCK-TOKEN)
(defalias 'url-dav-unlock-resource #[514 "\304\305\306QBC\307\310\311!\310\203)\312\313\"\216rq\210\206\"\314\315\245\316U\262*+\207" [url-request-extra-headers url-request-method url-request-data url-http-response-status "Lock-Token" "<" ">" "UNLOCK" nil url-retrieve-synchronously make-closure #[0 "\301\300!\207" [V0 kill-buffer] 2] 500 100 2] 7 (#$ . 11642)])
#@19 

(fn PROPERTIES)
(defalias 'url-dav-file-attributes-mode-string #[257 "\300\301\302\"\303\304\"\303\305\"\306\232\307\303\310\">\311\312\313I\210\314\313I\210\315\313I\210\203-\316\317I\210\203@\320\321I\210\322\321I\210\323\321I\210\203\206@\262A\262\211@\211\324=\203{A\211\325\267\202p\326\327I\266\202@\330\327I\266\202@\331\332\333A#\266\202@\331\332\334@#\266\202@\207" [make-string 10 45 plist-get DAV:supportedlock http://apache\.org/dav/props/executable "T" DAV:collection DAV:resourcetype nil 1 114 4 7 0 100 3 120 6 9 DAV:write #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (DAV:shared 92 DAV:exclusive 102)) 5 119 2 url-debug dav "Unrecognized DAV:lockscope (%S)" "Unrecognized DAV:locktype (%S)"] 12 (#$ . 12145)])
#@32 

(fn URL &optional ID-FORMAT)
(defalias 'url-dav-file-attributes #[513 "\300!@A\211\203C\301\302\"\206\303\304\245\305U\203C\306\301\307\">\205\"\310\311\312\211\313\301\314\"\301\314\"\301\315\"\2069\312\316	!\313\211\211\257\f\207\317\"\207" [url-dav-get-properties plist-get DAV:status 500 100 2 DAV:collection DAV:resourcetype t 1 0 nil DAV:getlastmodified DAV:getcontentlength url-dav-file-attributes-mode-string url-http-head-file-attributes] 15 (#$ . 12957)])
#@147 Save OBJ as URL using WebDAV.
URL must be a fully qualified URL.
OBJ may be a buffer or a string.

(fn URL OBJ &optional CONTENT-TYPE LOCK-TOKEN)
(defalias 'url-dav-save-resource #[1026 "\304C\304\211\305\306!\203rq\210\307 )\202%;\203\"\202%\310\311!\2035\312\313\314QB\nB\315\206;\316B\nB\317!\240\210\242\203a\320\321\"\216r\242q\210\206Z\322\323\245\324U\262*+\207" [url-request-data url-request-method url-request-extra-headers url-http-response-status nil "PUT" bufferp buffer-string error "Invalid object to url-dav-save-resource" "If" "(<" ">)" "Content-type" "application/octet-stream" url-retrieve-synchronously make-closure #[0 "\301\300\242!\207" [V0 kill-buffer] 2] 500 100 2] 10 (#$ . 13450)])
#@175 Delete the WebDAV collection URL.
If optional second argument RECURSIVE is non-nil, then delete all
files in the collection as well.

(fn URL &optional RECURSIVE LOCK-TOKEN)
(defalias 'url-dav-delete-directory #[769 "\300C\300\301\302\303#\262\204\211G\303U\204\304\305\306\307E\"\210\310\311\300\211\312\2051\313\314\n\315QBC&\262\316\317\320\"\"\266\300\207" [nil url-dav-get-properties (DAV:getcontenttype) 1 signal file-error "Removing directory" "Directory not empty" url-dav-request "DELETE" -1 "If" "(<" ">)" mapc make-closure #[257 "\300\301A\302\"\240\210\300\242\206\303\304\245\305U?\205 \306\307\310\311@\300\242F\"\207" [V0 plist-get DAV:status 500 100 2 signal file-error "Removing directory" "Error removing"] 7 "\n\n(fn RESULT)"]] 15 (#$ . 14198)])
#@55 Delete file named URL.

(fn URL &optional LOCK-TOKEN)
(defalias 'url-dav-delete-file #[513 "\300\211C\301!\262\302@A\303\"\304=\203\305\306\307\310E\"\210\311\312\300\211\313\205/\314\315\n\316QBC&\262\317\320\321\"\"\266\300\207" [nil url-dav-get-properties plist-get DAV:resourcetype DAV:collection signal file-error "Removing old name" "Is a collection" url-dav-request "DELETE" -1 "If" "(<" ">)" mapc make-closure #[257 "\300\301A\302\"\240\210\300\242\206\303\304\245\305U?\205 \306\307\310\311@\300\242F\"\207" [V0 plist-get DAV:status 500 100 2 signal file-error "Removing old name" "Error removing"] 7 "\n\n(fn RESULT)"]] 14 (#$ . 14993)])
#@440 Return a list of names of files in URL.
There are three optional arguments:
If FULL is non-nil, return absolute URLs.  Otherwise return names
 that are relative to the specified URL.
If MATCH is non-nil, mention only file names that match the regexp MATCH.
If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
 NOSORT is useful if you plan to sort the result yourself.

(fn URL &optional FULL MATCH NOSORT FILES-ONLY)
(defalias 'url-dav-directory-files #[1281 "\300\301\302#\303\211\211\304	!G\302U\203#\305\n!\204#\306\307\310\311
E\"\210\203\210\211A\262\242\262\211A\262\242\262\312\313\"\314=\203D\204#\315\"\262\204Y\316!\nG\303O\262\317\320\"\203f\321\322O\262\203s\317\"\203#\323\230\204#\n\230\204#B\262\202#\203\217\207\324\325\"\207" [url-dav-get-properties (DAV:resourcetype) 1 nil url-generic-parse-url url-dav-file-directory-p signal file-error "Opening directory" "Not a directory" plist-get DAV:resourcetype DAV:collection url-expand-file-name url-unhex-string string-match "/$" 0 -1 "" sort string-lessp] 15 (#$ . 15670)])
#@61 Return t if URL names an existing DAV collection.

(fn URL)
(defalias 'url-dav-file-directory-p #[257 "\300\301\"@A\302\303\304\">\205\305\207" [url-dav-get-properties (DAV:resourcetype) DAV:collection plist-get DAV:resourcetype t] 6 (#$ . 16789)])
#@87 Create the directory DIR and any nonexistent parent dirs.

(fn URL &optional PARENTS)
(defalias 'url-dav-make-directory #[513 "\304\305\304\306!\304\203!\307\310\"\216rq\210\311\267\202 \312\262*+\207" [url-request-extra-headers url-request-method url-request-data url-http-response-status nil "MKCOL" url-retrieve-synchronously make-closure #[0 "\301\300!\207" [V0 kill-buffer] 2] #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (201 29 403 32 405 32 409 32 415 32 507 32)) t] 7 (#$ . 17048)])
#@44 

(fn OLDNAME NEWNAME &optional OVERWRITE)
(defalias 'url-dav-rename-file #[770 "\301\"\203\301\"\204\302\303\304E\"\210\305\211\211C\306!\307!\211\203A\2039\247\203A\310\311\312	\"!\204A\302\313\314	D\"\210\203I\315C\262\316BB\262\317\320\305\211\203`\321\202a\322\n&\262\323\324\325\n\n$\"\210\326\207" [url-handler-regexp string-match signal file-error "Cannot rename between different URL backends" nil url-dav-file-directory-p url-http-file-exists-p yes-or-no-p format "File %s already exists; rename to it anyway? " file-already-exists "File already exists" ("Overwrite" . "T") "Destination" url-dav-request "MOVE" -1 0 mapc make-closure #[257 "\302\303A\304\"\240\210\302\242\206\305\306\245\307U?\205\310\311\312\300\301\302\242F\"\207" [V0 V1 V2 plist-get DAV:status 500 100 2 signal file-error "Renaming"] 7 "\n\n(fn RESULT)"] t] 15 (#$ . 17597)])
#@130 Return a list of all completions of file name FILE in URL.
These are all file names in URL which begin with FILE.

(fn FILE URL)
(defalias 'url-dav-file-name-all-completions #[514 "\300\301\302\303Q#\207" [url-dav-directory-files nil "^" ".*"] 8 (#$ . 18510)])
#@246 Complete file name FILE in URL.
Returns the longest string common to all file names in URL
that start with FILE.
If there is only one and FILE matches it exactly, returns t.
Returns nil if URL contains no name starting with FILE.

(fn FILE URL)
(defalias 'url-dav-file-name-completion #[514 "\300\"\211\204\n\301\207\211G\302U\203@\230\203\303\207\304\305\"\262G\303\301\211\203i@GW\203i\306@\307TOP\262\301\262\211\203W\211@\310\"\204P\303\262A\266\202\202@\210\211\203b\301\262\202%T\262\202%@\307O\207" [url-dav-file-name-all-completions nil 1 t sort #[514 "GGV\207" [] 4 "\n\n(fn A B)"] "^" 0 string-match] 12 (#$ . 18780)])
#@11 

(fn OP)
(defalias 'url-dav-register-handler #[257 "\300\301\302\303\304\"!#\207" [put url-file-handlers intern-soft format "url-dav-%s"] 8 (#$ . 19455)])
(mapc 'url-dav-register-handler nil)
#@12 

(fn URL)
(defalias 'url-dav-vc-registered #[257 "\300\301\"\205\302\303!\304\"\205\305\306\304#\210\307\207" [string-match "\\`https?" plist-get url-http-options dav vc-file-setprop vc-backend t] 5 (#$ . 19657)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\210\306\307!\207" [defalias url-intersection seq-intersection nil make-obsolete "28.1" provide url-dav] 4)

Youez - 2016 - github.com/yon3zu
LinuXploit