GithubHelp home page GithubHelp logo

timvisee / send Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mozilla/send

4.0K 32.0 228.0 26.18 MB

:mailbox_with_mail: Simple, private file sharing. Mirror of https://gitlab.com/timvisee/send

Home Page: https://send.vis.ee

License: Mozilla Public License 2.0

JavaScript 88.65% CSS 2.98% Dockerfile 0.37% Shell 0.38% Kotlin 2.24% Swift 1.65% HTML 3.73%
firefox-send file-sharing file-upload encryption send hacktoberfest

send's Introduction

Send Send

Build status on GitLab CI Latest release Docker image Project license

A fork of Mozilla's Firefox Send. Mozilla discontinued Send, this fork is a community effort to keep the project up-to-date and alive.

  • Forked at Mozilla's last publicly hosted version
  • Mozilla & Firefox branding is removed so you can legally self-host
  • Kept compatible with ffsend (CLI for Send)
  • Dependencies have been updated
  • Mozilla's changes since the fork have been selectively merged
  • Mozilla's experimental report feature, download tokens, trust warnings and FxA changes are not included

Find an up-to-date Docker image here: docs/docker.md

The original project by Mozilla can be found here. The mozilla-master branch holds the master branch as left by Mozilla. The send-v3 branch holds the commit tree of Mozilla's last publicly hosted version, which this fork is based on. The send-v4 branch holds the commit tree of Mozilla's last experimental version which was still a work in progress (featuring file reporting, download tokens, trust warnings and FxA changes), this has selectively been merged into this fork. Please consider to donate to allow me to keep working on this.

Thanks Mozilla for building this amazing tool!


Docs: FAQ, Encryption, Build, Docker, More


Table of Contents


What it does

A file sharing experiment which allows you to send encrypted files to other users.


Requirements


Development

To start an ephemeral development server, run:

npm install
npm start

Then, browse to http://localhost:8080


Commands

Command Description
npm run format Formats the frontend and server code using prettier.
npm run lint Lints the CSS and JavaScript code.
npm test Runs the suite of mocha tests.
npm start Runs the server in development configuration.
npm run build Builds the production assets.
npm run prod Runs the server in production configuration.

Configuration

The server is configured with environment variables. See server/config.js for all options and docs/docker.md for examples.


Localization

See: docs/localization.md


Contributing

Pull requests are always welcome! Feel free to check out the list of "good first issues" (to be implemented).


Instances

Find a list of public instances here: https://github.com/timvisee/send-instances/


Deployment

See: docs/deployment.md

Docker quickstart: docs/docker.md

AWS example using Ubuntu Server 20.04: docs/AWS.md


Clients

Android

The android implementation is contained in the android directory, and can be viewed locally for easy testing and editing by running ANDROID=1 npm start and then visiting http://localhost:8080. CSS and image files are located in the android/app/src/main/assets directory.


License

Mozilla Public License Version 2.0

qrcode.js licensed under MIT


send's People

Contributors

abelardo-py avatar abhinadduri avatar ag12r avatar andy-moz avatar dannycoates avatar dependabot[bot] avatar dnarcese avatar emily-hou1 avatar ericawright avatar fjoerfoks avatar flodolo avatar fzzzy avatar jnunezf96 avatar johngruen avatar jsyanis avatar jurajcigan avatar koehlermichael avatar kyoshino avatar manxmensch avatar marceloghelman avatar milupo avatar padsanma avatar pdehaan avatar petercpg avatar rodrigommc avatar selimsumlu avatar theochevalier avatar timvisee avatar yaitelmouden avatar yfdyh000 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

send's Issues

Not-Work-With-BSD

It seems to be this send only run on Linux, and I cannot npm install it on FreeBSD. Any one knows there is a solution? Error messages:

www@mybb:~/send-master % npm install

[email protected] install /usr/home/www/send-master/node_modules/puppeteer
node install.js

/usr/home/www/send-master/node_modules/puppeteer/lib/helper.js:283
throw new Error(message);
^

Error: Unsupported platform: freebsd
at assert (/usr/home/www/send-master/node_modules/puppeteer/lib/helper.js:283:11)
at new BrowserFetcher (/usr/home/www/send-master/node_modules/puppeteer/lib/BrowserFetcher.js:96:7)
at module.exports.createBrowserFetcher (/usr/home/www/send-master/node_modules/puppeteer/lib/Puppeteer.js:102:12)
at Object. (/usr/home/www/send-master/node_modules/puppeteer/install.js:41:34)
at Module._compile (node:internal/modules/cjs/loader:1092:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
at Module.load (node:internal/modules/cjs/loader:972:32)
at Function.Module._load (node:internal/modules/cjs/loader:813:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"freebsd","arch":"x64"})

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node install.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /home/www/.npm/_logs/2021-04-07T14_53_51_902Z-debug.log
www@mybb:~/send-master %

for chinese words:

无法在 FreeBSD 上安装 send,有人成功上手过吗?

clarification on "This browser might not be able to decrypt a file this big"

I recently had shared with me a number of files that totaled approx 2.2GB.

When I go to the link to download it displays a warning This browser might not be able to decrypt a file this big and gives 3 options

  • Copy he link to open in another browser
  • Try our favorite browser
  • Continue with this browser

Selecting Try our favorite browser gives you the option to Download Firefox.

The confusion I have is I am already using Firefox. Is this expected behavior or is the "recommended" browser now something else?

Using:

  • Debian 10
  • 78.10.0esr (64-bit)

Expired downloads, 401 error on /api/info/

Dear,

I'm not running it as a Docker container but I do run it behind a Nginx reverse proxy.
When I click on Download or open the url I get an Download Expired message.
And when I open the Developer Tools in Chrome I notice an 401 error on /api/info/...

I'm running it via npm directly on my machine using: npm run prod.
And using the below config on my Nginx.

server {
  server_name <domain>;
  client_max_body_size 2560M;

  location / {
    proxy_pass http://localhost:8080;
    proxy_http_version 1.1;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/<domain>/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<domain>/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
  if ($host = <domain>) {
    return 301 https://$host$request_uri;
  }

  listen 80;
  server_name <domain>;
  return 404;
}

Permission denied for mkdir

After creating docker container with this config:

sudo docker create --name send \
  -e 'NODE_ENV=production' \
  -e 'PORT=127.0.0.1:1234:1443' \
  -e 'REDIS_HOST=1.2.3.4' \
  -e 'BASE_URL=https://url.com' \
  -e 'FILE_DIR=/mnt/hdd/ffsend/' \
  -e 'MAX_FILE_SIZE=10737420000' \
  -e 'MAX_EXPIRE_SECONDS=604800' \
  registry.gitlab.com/timvisee/send:latest && sudo docker start send

it shows this error:

{"Timestamp":1618045757728000000,"Logger":"FirefoxSend","Type":"uncaughtException","Severity":0,"Pid":1,"EnvVersion":"2.0","Fields":{"error":"Error: EACCES: permission denied, mkdir '/mnt/hdd'","stack":"\n    at Object.mkdirSync (node:fs:1010:3)\n    at sync (/app/node_modules/mkdirp/index.js:72:13)\n    at sync (/app/node_modules/mkdirp/index.js:78:24)\n    at Function.sync (/app/node_modules/mkdirp/index.js:78:24)\n    at new FSStorage (/app/server/storage/fs.js:12:12)\n    at new DB (/app/server/storage/index.js:22:20)\n    at Object.<anonymous> (/app/server/storage/index.js:86:18)\n    at Module._compile (node:internal/modules/cjs/loader:1108:14)\n    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)\n    at Module.load (node:internal/modules/cjs/loader:973:32)"}}

It won't create this folder.
I tried creating it manually - nothing / added permissions - nothing.
Many other containers had no problem creating folders in this path
Any ideas / help?

View the running version?

I am running the Docker container. Is there a public endpoint that lists the current running version, or way I can get the version I am running?

bandwidth control

hello all.
I would be pleased to have an option (env variable) to limit upload and download bandwidth avoiding saturation on global network link.

best regards, Marc.

Memory leak using Docker container

Can't 💯 confirm, but it looks like there may be a memory leak. I am hosting my own version of send on AWS Lightsail using their container service (essentially ECS). Memory usage is continuously increasing linearly. Running latest version of send v3.4.5 via Docker container.

Screen Shot 2021-03-23 at 5 34 36 PM

Screen Shot 2021-03-23 at 5 34 47 PM

Screen Shot 2021-03-23 at 5 34 52 PM

basic authentication with nginx

Hi There,

I am trying to install send on a docker host behind an nginx proxy with basic authentication.

Upload works just find over basic auth but when I try to use the link

https://send.xxx.xx/download/aa7eb17b6ecad900/#1H8YgkdfhmUq1dd6ebnMcg

it pops up the window regarding the authentication and then I always get the link expired page. This behaviour is consistent across all browsers. By looking on the networking tab in the browser I can see that some of the requests resources such as app.webmanifest get a 401 http code. So it seems that somehow the browser requests some resources without passing the authentication header?

Is this a known issue? Is there a standard way to deploy send behind a proxy with basic auth? I can provide more details but I was just wondering if I am missing something basic (e.g. explicitly tell nginx to pass a specific header).

Thanks!

Only one locale/lang

Hi,

I want to display my send instance in only one lang always, how i can do it?

I have a yunohost instance but i think that is not a problem

Thanks

Some feature requests

Hey,

in the quest of finding a good file sharing provider after mozilla shut the original down, i found this on reddit.

Some feature ideas:

  1. Increase 7 day download limit time to something longer. (1 month perhaps).
  2. Enable video streaming directly through the web if the file is a compatible file.
  3. Authentication for uploading.

I looked at the config file and i can see a max value for the seconds, i can try and help in this area.

Links expire if docker container restarted

So I'm assuming I'm doing something wrong here and would really appreciate help. I've got the container up with a reverse proxy, it works great. I've noticed that inside the container, the uploads never go to the /uploads directory (or what it's mapped to outside docker) but instead go to /tmp/send-XXXXXX.

When I restart the container for any reason, the links are all expired and the items in the tmp folder remain there but are inaccessible. I thought it may have something to do with redis. I do have it running but I'm not sure if it's making use of it for this full self-hosted implementation. Thank you.

FILE_DIR error?

I am able to get Send to work, but I noticed that my instance isn't using the volume I specified in the docker_compose.yml file.

My docker_compose.yml is as follows:

version: "3"

services:
send:
image: registry.gitlab.com/timvisee/send:latest
restart: always
ports:
- '1234:1234'
volumes:
- uploads:/uploads
environment:
- VIRTUAL_HOST=send.***.com
- VIRTUAL_PORT=1234
- DHPARAM_GENERATION=false
- NODE_ENV=production
- BASE_URL=https://send.***.com
- PORT=1234
- REDIS_HOST=redis

  # For local uploads storage
  # - FILE_DIR=/uploads

  # For S3 object storage (disable volume and FILE_DIR variable)
  # - AWS_ACCESS_KEY_ID=********
  # - AWS_SECRET_ACCESS_KEY=********
  # - S3_BUCKET=send
  # - S3_ENDPOINT=s3.us-west-2.amazonaws.com
  # - S3_USE_PATH_STYLE_ENDPOINT=true

  # To customize upload limits
  # - EXPIRE_TIMES_SECONDS=3600,86400,604800,2592000,31536000
  # - DEFAULT_EXPIRE_SECONDS=3600
  # - MAX_EXPIRE_SECONDS=31536000
  # - DOWNLOAD_COUNTS=1,2,5,10,15,25,50,100,1000
  # - MAX_DOWNLOADS=1000
  - MAX_FILE_SIZE=10737418240

redis:
image: 'redis:alpine'
restart: always
volumes:
- send-redis:/data

volumes:
send-redis:
uploads:

If I uncomment the FILE_DIR variable, Send gives me an error in the logs during file upload as follows:

{"Timestamp":1649169981773000000,"Logger":"FirefoxSend","Type":"uncaughtException","Severity":0,"Pid":1,"EnvVersion":"2.0","Fields":{"error":"Error: ENOENT: no such file or directory, unlink '/uploads/1-10889695b316358b'","stack":"\n at Object.unlinkSync (node:fs:1718:3)\n at WriteStream. (/app/server/storage/fs.js:33:12)\n at WriteStream.emit (node:events:402:35)\n at WriteStream.emit (node:domain:475:12)\n at emitErrorNT (node:internal/streams/destroy:157:8)\n at emitErrorCloseNT (node:internal/streams/destroy:122:3)\n at processTicksAndRejections (node:internal/process/task_queues:83:21)"}}

Basically, I just want to know where my files are going in this current setup because I cannot find the uploaded files anywhere in my bin/sh. This is more of a security question for me. I could very much be setting up Send incorrectly. Either way, I just want to know where my files get stored currently.

docker-compose up issue on fresh start

Hi,

I just tryed fresh compose and I have this issue. Is this known bug?


Traceback (most recent call last):
  File "bin/docker-compose", line 3, in <module>
  File "compose/cli/main.py", line 67, in main
  File "compose/cli/main.py", line 126, in perform_command
  File "compose/cli/main.py", line 1070, in up
  File "compose/cli/main.py", line 1066, in up
  File "compose/project.py", line 615, in up
  File "compose/service.py", line 350, in ensure_image_exists
  File "compose/service.py", line 376, in image
  File "docker/utils/decorators.py", line 17, in wrapped
docker.errors.NullResource: Resource ID was not provided
[1252319] Failed to execute script docker-compose

Some questions regarding send

Is there a user login/signup support?
I saw in the faq section, it is written "Send(1GB for non-signed in users)". I have self hosted my send instance, is there anything extra I need to do, cause I don't see any sign in option.

Also, is there a healthcheck endpoint available for web interface. I would like to monitor weather my send instance is running or it crashed due to some reason....

Also, is there a way to get webhook notifications when someone uploads some file to a webhook URL, maybe discord?

Cannot use own host

1

I am able to access the port with curl, however, failed to upload files.

docker-compose.yml:

version: '3'
services:
  send:
    image: registry.gitlab.com/timvisee/send:latest
    environment: 
        DETECT_BASE_URL: 'true'
        REDIS_HOST: localhost
        BASE_URL: 'https://send.morningstar529.com'
        MAX_EXPIRE_SECONDS: 31536000
        DEFAULT_EXPIRE_SECONDS: 86400
        # size values are are in bytes, e.g. 10GB * 1024*1024*1024 = 10,747,904,000 bytes
        MAX_FILE_SIZE: 10747904000
        # array configs are set as CSV (first entry is the default for the UI dropdown)
        EXPIRE_TIMES_SECONDS: 86400,3600,86400,604800,2592000,31536000,157680000
        DOWNLOAD_COUNTS: 1,2,5,10,15,25,50,100,1000,10000,100000,250000
    container_name: morningstar_send
    tty: true
    restart: unless-stopped
    volumes:
      - /home/jeep_jipu/apps/send/uploads:/uploads
    ports:
      - "1443:1443"

[Feature Request] Custom CSS

Hey,

Great project ! I want to implement it for myself and my business. What could be interesting is to customize some stuff with the integration of a custom CSS file, probably directly from the docker container could be a great feature IMO

Can you give feedback about the possibility and if you want to do it ?

Thanks in advance

Running through Plesk

Hi there, I'm trying to get Send running via the node.js support build into Plesk. Can you help with that - what application startup file needs to be selected?

image

How to set s3 region?

I'm using a local minio server with a custom region, while Send is using the default us-east-1 value. Therefore the s3 authorization header is wrong and denied by minio server

Is there any way to set the region? If not, please add a config.

Produces this error on start

My send instance was not working correctly last week, did some testing and doesn't turn out to be related to Docker.

To reproduce: without Docker

  1. Clone the git
  2. npm install
  3. npm start

Error:

    at MemoryFileSystem.readFileSync (D:\Programming\Git\send_temp\node_modules\memory-fs\lib\MemoryFileSystem.js:107:10)
    at getManifest (D:\Programming\Git\send_temp\common\assets.js:35:31)
    at Object.getAssetWithMiddleware [as get] (D:\Programming\Git\send_temp\common\assets.js:42:19)
    at module.exports (D:\Programming\Git\send_temp\server\state.js:44:28)
    at index (D:\Programming\Git\send_temp\server\routes\pages.js:13:28)
    at Layer.handle [as handle_request] (D:\Programming\Git\send_temp\node_modules\express\lib\router\layer.js:95:5)
    at next (D:\Programming\Git\send_temp\node_modules\express\lib\router\route.js:137:13)
    at module.exports (D:\Programming\Git\send_temp\server\middleware\language.js:41:3)
    at Layer.handle [as handle_request] (D:\Programming\Git\send_temp\node_modules\express\lib\router\layer.js:95:5)
    at next (D:\Programming\Git\send_temp\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (D:\Programming\Git\send_temp\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (D:\Programming\Git\send_temp\node_modules\express\lib\router\layer.js:95:5)
    at D:\Programming\Git\send_temp\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (D:\Programming\Git\send_temp\node_modules\express\lib\router\index.js:335:12)
    at next (D:\Programming\Git\send_temp\node_modules\express\lib\router\index.js:275:10)
    at textParser (D:\Programming\Git\send_temp\node_modules\body-parser\lib\types\text.js:69:7)
(node:15456) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:15456) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

I think this is causing the same issue with my container, i get a 502 bad gateway and i cant even get any log output from send either.

Unlink error while uploading

Hey,

I've setup my send instance with the provided docker-compose file with the urls in the .env file pointing to localhost. Every time I am trying to upload a file, this error message pops up in the docker logs:

{ "Timestamp":1627419773559000000, "Logger":"FirefoxSend", "Type":"uncaughtException", "Severity":0, "Pid":1, "EnvVersion":"2.0", "Fields":{"error":"Error: ENOENT: no such file or directory, unlink '/uploads/1-1cbd745c237b0c5b'","stack":"\n at Object.unlinkSync (node:fs:1708:3)\n at WriteStream.<anonymous> (/app/server/storage/fs.js:33:12)\n at WriteStream.emit (node:events:406:35)\n at WriteStream.emit (node:domain:470:12)\n at emitErrorNT (node:internal/streams/destroy:193:8)\n at emitErrorCloseNT (node:internal/streams/destroy:158:3)\n at processTicksAndRejections (node:internal/process/task_queues:83:21)"} }

I have tried setting up the same configuration on a different machine, but the error remains. Both machines are running Ubuntu 20.04 with the latest docker and docker-compose version (as of time of writing). This does not seem to be a permission problem

Any help is appreciated.

Greetings
David

API documentation

First, thanks for maintaining this fork. It is really a great tool and it is really nice to see it thriving.

I wonder if there are any documentations regarding the Send API. I glanced quickly in ffsend and ffsend-api projects too and didn't find anything.

Since some client implementations have been written (e.g. TB FileSend), I guess it must exist somewhere (unless they reverse-engineered it).

Any pointers ?

Thanks a lot

Redis URL improvement

Right now, the Redis address can just be a hostname. It would be better if Send supported the full URL (redis://username:password@host:port/dbnum) so we could point it to already-existing Redis servers.

Allow clients retrieving api/download/ and api/download/blob to retrieve direct from S3 host

Would it be possible to redirect the downloads to go directly to a the S3 host rather than proxying through the host that's running send? There's a bunch of CORS configuration that needs to happen, but it would be great as a way to allow a host with slow uploads to utilize bandwidth direct from the S3 host instead of limiting upload speed to that of the send host.

I've managed to get it working with a rewrite of /api/download/blob to my backblaze b2 url for each file via
/api/download/blob/(DOWNLOADid) -> /file/BUCKETNAME/1-DOWNLOADid but it would be nice if it were actually supported. Also I can't figure out how it sometimes calls /download/blob and sometimes just /download/ and it only works properly with blob.

Disabling encryption

Hi, is it possible to disable encryption of transferred files for testing purposes?

Doesn't download via download managers?

I tried downloading a file and it always download via chrome, instead of IDM which I have installed. Manually transferring the download to IDM doesn't seem to work either (maybe because of download count limit which was set to 1)

Serving uploads behind existing Reverse-Proxy

Disclaimer: Im running it in a docker container on my Synology NAS.

I'm running a reverse Proxy to serve https://send.example.org to my local docker container --> http://localhost:1443.

Now I'm unable to upload a file through https://send.example.org and when I'm using http://localhost:1443 to upload it works fine but serves a https://localhost:1443 download link.

Would it be possible to get this setup working?

I'm not an expert on any of this so excuse if I'm making an error here on my side and it is possible already.

Downloading multiple files ZIP issue for smart-phones and non-tech peoples

Problem :
For now if i am sending more than one files through one link.
Then the downloaded folder will be zipped.
But if we consider all the scenario's like --

Non-tech user -- Not much experienced with zip/unzip folder,files.
Smart phone user -- Most of the unzipping solutions start with downloading files app.
From my experience most of the users share files on smart phones ( I am college student and quite often i send assignments , or some xyz pdf's to my friends on whatsapp).
Here "send" makes sharing multiple files easier by sharing only a link to all friends but if they will be on smart phones
then this will be painful task to get real files from downloaded zipped folder.

Possible Solution :
There can be a download icon ahead of each file on download page along with a download all button at the bottom.
So that Instead of downloading a zip folder a user can download pdf's seprately.

Now for lesser number of files above solution is quite good bcoz i'll rather click few icons to download pdf's
Rather than downloading zipped folder and extracting content from that folder.
For large number of files both clicking icons multiple times and unzipping folder will take same effort.
One more thing is giving icon ahead of each file gives a sense of selectivity like say i combined 4 files intended to be downloaded by 4 different users then they can download which pdf they want not whole folder.

File location

Hi, can you indicate the path where the uploaded files are located?

Cant upload files from phone (iOS 15)

Like the title says uploading from a phone (in my case an iPhone 11 Pro Max running iOS 15) doesn't work
it fills the progress bar to 100% and stay's there tapping Cancel does nothing

Shlink integration suggestion (link shortening)

Tracking issue: https://gitlab.com/timvisee/send/-/issues/21


An integration with shlink (https://shlink.io/documentation/api-docs/) would be very useful.
It would be helpful for automatically shortening links for input on a client computer where QR-codes aren't easily readable.

As I don't have much programming experience myself at all I don't know if it would be reasonably doable, although the api seems to be pretty well documented.

Feel free to close this again if there's no plan to add this or something similar.

Can't change default number of download

Hi,
In my docker-compose I use the following environment variables:
- MAX_DOWNLOADS=100
- DOWNLOAD_COUNTS=10,15,50,100
But it can't change default number of download (set to 1 strangly)
I see 10 downloads on web page but when I send my file 1 is selected
Note: When I change current download item on web page it's work

I try this
- MAX_DOWNLOADS=100
- DOWNLOAD_COUNTS=10,1,15,50,100
or
- MAX_DOWNLOADS=100
- DOWNLOAD_COUNTS=10,2,1,15,50,100
But not work. 1 is alway selected

I don't see anything in config.js for help me

WebSocket connection to 'wss://sub.domain.com/api/ws' failed

Hello, I installed Send with docker compose with the following file but when I tried to upload a file, the console said WebSocket connection to 'wss://sub.domain.com/api/ws' failed.

Compose:

version: "3.9"

volumes:
  data:

services:
  jdf-send:
    image: registry.gitlab.com/timvisee/send:latest
    ports:
      - "9986:1443"
    volumes:
      - data:/uploads
    environment:
      - DETECT_BASE_URL=true
      - BASE_URL=https://sub.domain.com
      - REDIS_HOST=localhost

Impossible de s'authentifier en https

Bonjour,

J'ai mis en place Send derrière nginx pour un proxy pass en https, mais il est impossible de s'authentifier pour télécharger le fichier. Une erreur de mot de passe incorrect est envoyé.

Password is not working

We are using send on self hosted with docker when we uploading files with "Protect with password" we are getting error during file download that "Password is incorrect".

Any idea? I have followed the same instructions.

How to connect to Redis from send docker container?

First things first: I'm new to docker.

I've been sitting for some time trying to get send working in docker. I started with installing redis-server on the Ubuntu docker host, assuming REDIR_HOST=localhost would work, but links expired when send container restarted. And since "docker logs sendcontainer" responds with absolute nothing I'm working completely in the dark. I however had a theory; redis-server listens on 127.0.0.1 on the host, and thereby doesn't accept connections from containers.

So I followed the instructions on https://github.com/timvisee/send/blob/master/docs/docker.md Examples (Run totally self-hosted...) and created a docker network, started a redis container (it's not called redis-server by the way). But the send run example doesn't specify where the redis host is, and my links still expired when restarting send container.

Before giving up I though i could test specifying REDIS_HOST=172.19.0.2 (the redis container ip address), and behold, the links doesn't expire when restarting send! But I feel this 172 address could change any time?

Question 1: How is containerized send supposed to connect to redis when a) redis is running on the host, and b) running in a container on the same docker network?

Question 2: If redis is a requirement, why isn't it included in the docker image?

Best regards,
Andreas

Server returns wrong download url when behind Nginx reverse proxy

so in Nginx config, I gave the Send server a name like this:

upstream send_backend {
    server 127.0.0.1:1443;
}
...
    proxy_pass http://send_backend

The problem is now when the user finishes uploading a file, the url shown is https://send_backend/download..., which obviously doesn't work.

I took a quick look at the code and seems like req.get('host') is what's causing the problem. Is it possible for it to use the BASE_URL in config / environment variable instead? Or have I configured Nginx wrong somehow?

More flexible duration option in web UI

The web UI currently gives four options for the expiration:

image

5 minutes, 1 hour, 1 day, 7 days

Could the duration be updated to be two fields:

  • text input, integer values
  • select input w/ options: minutes, hours, days

That way it would be possible to specify different values like:

  • 30 minutes
  • 12 hours
  • 3 days

Thanks for your consideration.

`MAX_EXPIRE_SECONDS`, `MAX_DOWNLOADS`, and `MAX_FILE_SIZE` env variables don't change UI dropdowns

Hi, thanks for maintaining this fork! Really appreciate it.


UPDATE: I figured it out, here's a final working config to allow up to 10GB uploaded for 5yr and 250k downloads.

services:
  send:
    ...
    environment:
      ...
      # these update both the backend limit and the limit shown/enforced in the UI
      - MAX_FILE_SIZE=10747904000
      - MAX_FILES_PER_ARCHIVE=1024
      
      # these update the UI dropdowns and should be a CSV of bare integers (first value is used as the dropdown default)
      - EXPIRE_TIMES_SECONDS=3600,86400,604800,2592000,31536000,157680000
      - DOWNLOAD_COUNTS=1,2,5,10,15,25,50,100,1000,10000,100000,250000
      
      # these are global limits enforced by the backend and have no effect on the UI
      - DEFAULT_EXPIRE_SECONDS=157680000
      - MAX_EXPIRE_SECONDS=315360000
      - MAX_DOWNLOADS=250000

image


Original ticket:

Changing MAX_EXPIRE_SECONDS, MAX_DOWNLOADS, and MAX_FILE_SIZE seems to have no effect on the UI when running with the latest Docker image, the dropdowns still only show the default maximums:

image

I know the environment variables are being read, because BASE_URL FILE_DIR are being set correctly when I change them.

Here is my docker-compose.yml config:

version: '3.9'

services:
  send:
    image: 'registry.gitlab.com/timvisee/send:latest'
    ports:
      - '1234:1234'
    volumes:
      - ./uploads:/uploads
    environment:
      - NODE_ENV=production
      - BASE_URL=https://send.example.com   # placeholder for my actual domain
      - PORT=1234
      - REDIS_HOST=redis
      - FILE_DIR=/uploads
      - MAX_EXPIRE_SECONDS=315360000       # 10 years
      - MAX_DOWNLOADS=200000               # 200k downloads
      - MAX_FILE_SIZE=10737418240          # 10 GB
      - ANON_MAX_EXPIRE_SECONDS=315360000
      - ANON_MAX_DOWNLOADS=20000
      - ANON_MAX_FILE_SIZE=10737418240

  redis:
    image: redis:alpine
    command: redis-server --appendonly yes
    volumes:
      - ./redis:/data

(based on https://github.com/timvisee/send-docker-compose/blob/master/docker-compose.yaml)

Versions:

Thunderbird FileLink extension

There were several issues requesting this feature: mozilla#847, mozilla#496 and mozilla#1353 and also BMO bug 1516252.

I have wanted this feature for years and since no one else has implemented it yet*, I decided to create a Thunderbird add-on/extension myself. It allows users to enter the URL of the Send instance they want to use, along with other info. It will then encrypt and upload the files to that Send server. It requires at least Thunderbird 78** and should support all v3 Send service instances. See my repository for more info. Here is an example of what the account management pages looks like:

image

I wanted to get permission to use the icon from this repository for the add-on. My repository is also MPL-2.0 licensed, so I believe there should not be any issues, but I wanted to check anyway, as I saw you had issues using the Firefox Send logo in this repository.

I also wanted to thank you for continuing to maintain this after Mozilla discontinued it! 🙏

At some point, I may submit the add-on to Addons.thunderbird.net (ATN), although I am currently still testing it. Feedback is welcome! If anyone wants to try it in the meantime, you can download it with this command:

git clone --recurse-submodules https://github.com/tdulcet/Thunderbird-Send.git

Then follow these instructions to install it in Thunderbird.

* Someone attempted to create a TB add-on here, but it uses the /share endpoint and thus does not actually encrypt the files before uploading them, which of course defeats the primary purpose of this service. It also is hardcoded to the discontinued Firefox Send service.
** The options page does not currently work in TB 78 because of bug 1641577, although the account management pages work fine. It only has a single minor option, which is not necessary to use the add-on. The bug was fixed in TB 86 Beta and should be included in TB 91.

GUI Based Authentication

Implement built in authentication for uploading.

A simple password check should be enough i think, account based is overkill for this project.

Make footerText configurable

Could the localization footerText be changed into configurable "This service provided by XXX", where XXX comes from ENV, with optional link url for the name of the provider?

Possible to move/copy over all issues from the old project?

Thank you for continuing to work on this. Absolutely great software - it would really be a shame if it were abandoned. I wonder whether all the old issues shouldn't be moved over here or sth. Don't know whether this is possible in GitHub.

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.