1d4afb5ceSopenharmony_ci# Deaddrop: File upload and sharing plugin 2d4afb5ceSopenharmony_ci 3d4afb5ceSopenharmony_ci## Building the plugin 4d4afb5ceSopenharmony_ci 5d4afb5ceSopenharmony_ciJust configure lws with `cmake .. -DLWS_WITH_PLUGINS=1` and build lws as normal. 6d4afb5ceSopenharmony_ci 7d4afb5ceSopenharmony_ci## Configurable settings 8d4afb5ceSopenharmony_ci 9d4afb5ceSopenharmony_ci|pvo name|value meaning| 10d4afb5ceSopenharmony_ci|---|---| 11d4afb5ceSopenharmony_ci|upload-dir|A writeable directory where uploaded files will go| 12d4afb5ceSopenharmony_ci|max-size|Maximum individual file size in bytes| 13d4afb5ceSopenharmony_ci|basic-auth|Path to basic auth credential file so wss can also be protected| 14d4afb5ceSopenharmony_ci 15d4afb5ceSopenharmony_ci## Required mounts 16d4afb5ceSopenharmony_ci 17d4afb5ceSopenharmony_ciTo use deaddrop meaningfully, all the mounts and the ws protocol must be 18d4afb5ceSopenharmony_ciprotected by basic auth. And to use basic auth securely, the connection must 19d4afb5ceSopenharmony_cibe protected from snooping by tls. 20d4afb5ceSopenharmony_ci 21d4afb5ceSopenharmony_ci1) Set the basic-auth pvo to require valid credentials as described above 22d4afb5ceSopenharmony_ci 23d4afb5ceSopenharmony_ci2) Protect your basic fileserving mount by the same basic auth file... this is 24d4afb5ceSopenharmony_ci used to serve index.html, the css etc. 25d4afb5ceSopenharmony_ci 26d4afb5ceSopenharmony_ci3) Add a callback mount into "lws-deaddrop" protocol at "upload"... so if your 27d4afb5ceSopenharmony_ci URL for deaddrop is "/tools/share", this would be at "/tools/share/upload". 28d4afb5ceSopenharmony_ci It must also be protected by the basic auth file. 29d4afb5ceSopenharmony_ci 30d4afb5ceSopenharmony_ci4) Add a fileserving mount at the url "get" (continuing the example above, it 31d4afb5ceSopenharmony_ci would be "/tools/share/get" whose origin matches the "upload-dir" pvo 32d4afb5ceSopenharmony_ci value you selected. This mount needs any additional mimtype mappings since 33d4afb5ceSopenharmony_ci it's where the uploaded files are shared from. 34d4afb5ceSopenharmony_ci 35d4afb5ceSopenharmony_ci## Using with C 36d4afb5ceSopenharmony_ci 37d4afb5ceSopenharmony_ciSee ./minimal-examples/http-server/minimal-example-http-server-deaddrop for 38d4afb5ceSopenharmony_cihow to use the plugin directly with C. 39d4afb5ceSopenharmony_ci 40d4afb5ceSopenharmony_ci## Using with lwsws / lejp-conf 41d4afb5ceSopenharmony_ci 42d4afb5ceSopenharmony_ciAs a plugin, you can configure the mounts and pvos per-vhost easily in JSON. 43d4afb5ceSopenharmony_ci 44d4afb5ceSopenharmony_ciAll the snippets here 45d4afb5ceSopenharmony_ci 46d4afb5ceSopenharmony_ciThe mountpoints would look something like this (added to vhost/mounts) 47d4afb5ceSopenharmony_ci 48d4afb5ceSopenharmony_ci``` 49d4afb5ceSopenharmony_ci { 50d4afb5ceSopenharmony_ci "mountpoint": "/tools/share", 51d4afb5ceSopenharmony_ci "origin": "file:///var/www/deaddrop", 52d4afb5ceSopenharmony_ci "default": "index.html", 53d4afb5ceSopenharmony_ci "basic-auth": "/var/www/ba" 54d4afb5ceSopenharmony_ci }, { 55d4afb5ceSopenharmony_ci "mountpoint": "/tools/share/upload", 56d4afb5ceSopenharmony_ci "origin": "callback://lws-deaddrop", 57d4afb5ceSopenharmony_ci "basic-auth": "/var/www/ba" 58d4afb5ceSopenharmony_ci }, { 59d4afb5ceSopenharmony_ci "mountpoint": "/tools/share/get", 60d4afb5ceSopenharmony_ci "origin": "file:///var/cache/deaddrop-uploads", 61d4afb5ceSopenharmony_ci "basic-auth": "/var/www/ba", 62d4afb5ceSopenharmony_ci 63d4afb5ceSopenharmony_ci "extra-mimetypes": { 64d4afb5ceSopenharmony_ci ".bin": "application/octet-stream", 65d4afb5ceSopenharmony_ci ".ttf": "application/x-font-truetype", 66d4afb5ceSopenharmony_ci ".otf": "application/font-sfnt", 67d4afb5ceSopenharmony_ci ".zip": "application/zip", 68d4afb5ceSopenharmony_ci ".webm": "video/webm", 69d4afb5ceSopenharmony_ci ".romfs": "application/octet-stream", 70d4afb5ceSopenharmony_ci ".pdf": "application/pdf", 71d4afb5ceSopenharmony_ci ".odt": "application/vnd.oasis.opendocument.text", 72d4afb5ceSopenharmony_ci ".tgz": "application/x-gzip", 73d4afb5ceSopenharmony_ci ".tar.gz": "application/x-gzip" 74d4afb5ceSopenharmony_ci } 75d4afb5ceSopenharmony_ci } 76d4afb5ceSopenharmony_ci``` 77d4afb5ceSopenharmony_ci 78d4afb5ceSopenharmony_ciThis enables the plugin on the vhost, configures the pvos, and makes 79d4afb5ceSopenharmony_cithe wss serving also depend on having a valid basic auth credential. 80d4afb5ceSopenharmony_ci 81d4afb5ceSopenharmony_ci``` 82d4afb5ceSopenharmony_ci "ws-protocols": [{ 83d4afb5ceSopenharmony_ci "lws-deaddrop": { 84d4afb5ceSopenharmony_ci "status": "ok", 85d4afb5ceSopenharmony_ci "upload-dir": "/var/cache/deaddrop-uploads", 86d4afb5ceSopenharmony_ci "max-size": "52428800", 87d4afb5ceSopenharmony_ci "basic-auth": "/var/www/ba" 88d4afb5ceSopenharmony_ci } 89d4afb5ceSopenharmony_ci }], 90d4afb5ceSopenharmony_ci``` 91d4afb5ceSopenharmony_ci 92