<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          npm-WebDAV-ServerWebDAV Server for npm

          聯(lián)合創(chuàng)作 · 2023-09-22 21:22

          WebDAV Server for npm

          Build Status License npm Version

          Join the chat at https://gitter.im/npm-WebDAV-Server/Lobby Join the chat at https://gitter.im/npm-WebDAV-Server/help-v2 Join the chat at https://gitter.im/npm-WebDAV-Server/help-v1 Join the chat at https://gitter.im/npm-WebDAV-Server/file-systems

          Description

          This server can use physical resources (files and folders on a hard drive, for instance), virtual resources (in-memory files and folders), processed/computed resources (for instance a file which provide the content of a remote web page), customized resources (whatever you created, whatever you can imagine), and use all of them on the same server instance. And it's easy to integrate in your JavaScript code!

          You can use it to provide human readable content, easily manageable thanks to the WebDAV clients, or use a temporary and virtual file system to share information between running programs, or store crypted documents while still being able to use them as if they were not crypted (take a look at cwdav), etc...

          This is a fully configurable server. You can use you own user manager, your own resources, your own HTTP methods, your own way to save the state of the server, etc... Find more in the documentation.

          Project information

          Here are some project related links :

          You can find a list of file systems here :

          This project rely upon the RFC4918.

          This is an active project. Do not hesitate to post an issue if you have an idea or if you encounter a problem.

          The project comes with two versions : the obselete version 1 and the version 2. Prefer using the version 2. At the moment, for compatibility issues, to access the version you must use the v2 namespace.

          Install

          npm install webdav-server

          Quick usage

          Very simple usage :

          // TypeScript
          import { v2 as webdav } from 'webdav-server'
          // JavaScript
          const webdav = require('webdav-server').v2;
          
          const server = new webdav.WebDAVServer({
              port: 1900
          });
          
          server.start(() => console.log('READY'));

          With some logs :

          // TypeScript
          import { v2 as webdav } from 'webdav-server'
          // JavaScript
          const webdav = require('webdav-server').v2;
          
          const server = new webdav.WebDAVServer({
              port: 1900
          });
          
          server.afterRequest((arg, next) => {
              // Display the method, the URI, the returned status code and the returned message
              console.log('>>', arg.request.method, arg.requested.uri, '>', arg.response.statusCode, arg.response.statusMessage);
              // If available, display the body of the response
              console.log(arg.responseBody);
              next();
          });
          
          server.start(() => console.log('READY'));

          With a user manager, privilege manager and serialization (save/load the state of the server) :

          // TypeScript
          import { v2 as webdav } from 'webdav-server'
          // JavaScript
          const webdav = require('webdav-server').v2;
          
          // User manager (tells who are the users)
          const userManager = new webdav.SimpleUserManager();
          const user = userManager.addUser('username', 'password', false);
          
          // Privilege manager (tells which users can access which files/folders)
          const privilegeManager = new webdav.SimplePathPrivilegeManager();
          privilegeManager.setRights(user, '/', [ 'all' ]);
          
          const server = new webdav.WebDAVServer({
              // HTTP Digest authentication with the realm 'Default realm'
              httpAuthentication: new webdav.HTTPDigestAuthentication(userManager, 'Default realm'),
              privilegeManager: privilegeManager,
              port: 2000, // Load the server on the port 2000 (if not specified, default is 1900)
              autoSave: { // Will automatically save the changes in the 'data.json' file
                  treeFilePath: 'data.json'
              }
          });
          
          // Try to load the 'data.json' file
          server.autoLoad((e) => {
              if(e)
              { // Couldn't load the 'data.json' (file is not accessible or it has invalid content)
                  server.rootFileSystem().addSubTree(server.createExternalContext(), {
                      'folder1': {                                // /folder1
                          'file1.txt': webdav.ResourceType.File,  // /folder1/file1.txt
                          'file2.txt': webdav.ResourceType.File   // /folder1/file2.txt
                      },
                      'file0.txt': webdav.ResourceType.File       // /file0.txt
                  })
              }
              
              server.start(() => console.log('READY'));
          })

          Within Express :

          // TypeScript
          import { v2 as webdav } from 'webdav-server'
          import * as express from 'express'
          // JavaScript
          const webdav = require('webdav-server').v2;
          const express = require('express');
          
          const server = new webdav.WebDAVServer();
          const app = express();
          
          // Mount the WebDAVServer instance
          app.use(webdav.extensions.express('/my/sub/path', server));
          app.listen(1901); // Start the Express server

          More examples at the example page of the wiki.

          More information/possibilities in the documentation.

          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷五月丁香狠狠撸 | 操嫩逼av| 91麻豆精品无码一区二区三区 | 大鸡巴操视频 | 亚洲男人的天堂在线观看 |