Compare commits

...

31 Commits

Author SHA1 Message Date
timvisee
38a4552d52
List Thunderbird FileLink provider extension as client in README
Fixes https://github.com/timvisee/send/issues/15
2021-08-30 15:28:29 +02:00
timvisee
9d2d81e063
Merge branch 'dependabot/npm_and_yarn/url-parse-1.5.3' into master
See https://github.com/timvisee/send/pull/53
2021-08-13 14:42:36 +02:00
dependabot[bot]
81d6c90c4e
Bump url-parse from 1.5.1 to 1.5.3
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 11:05:08 +00:00
timvisee
2bdaa0c4bd
Merge branch 'dependabot/npm_and_yarn/path-parse-1.0.7' into master
See https://github.com/timvisee/send/pull/52
2021-08-13 13:02:29 +02:00
dependabot[bot]
00d3bebc27
Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-12 22:09:37 +00:00
timvisee
ea384ff5d3
Update dependencies 2021-08-08 20:36:26 +02:00
timvisee
062c439ec0
Bump version to 3.4.13 2021-07-08 23:13:15 +02:00
Tim Visée
54e528980b Merge branch 'master' into 'master'
fix: remove iOS saveFile workaround #20

See merge request timvisee/send!19
2021-07-08 21:12:06 +00:00
Paul Zeinlinger
b9292abefe
fix: remove iOS saveFile workaround #20 2021-07-08 23:05:39 +02:00
timvisee
1520942ac9
Fix UI error after upload when share link is too long
The QR-code generation logic had a character limit. This broke the
upload page when the share URL is too long. This has now been fixed to
support an arbitrary number of characters.

Fixes https://gitlab.com/timvisee/send/-/issues/19
2021-07-08 21:21:35 +02:00
timvisee
0e17cd567c
Update qrcode snippet 2021-07-08 21:20:27 +02:00
timvisee
7b21b199c2
Update dependencies 2021-07-08 21:12:17 +02:00
timvisee
6214b07a30
Merge branch 'dependabot/npm_and_yarn/redis-3.1.1' into master
See https://github.com/timvisee/send/pull/20
2021-06-28 17:28:31 +02:00
dependabot[bot]
941d87976b
Bump redis from 2.8.0 to 3.1.1
Bumps [redis](https://github.com/NodeRedis/node-redis) from 2.8.0 to 3.1.1.
- [Release notes](https://github.com/NodeRedis/node-redis/releases)
- [Changelog](https://github.com/NodeRedis/node-redis/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NodeRedis/node-redis/compare/v.2.8.0...v3.1.1)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-28 15:28:06 +00:00
timvisee
8db3fed6fb
Merge branch 'dependabot/npm_and_yarn/color-string-1.5.5' into master 2021-06-28 17:24:05 +02:00
dependabot[bot]
78ca1f06e0
Bump color-string from 1.5.3 to 1.5.5
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.5.5.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.5.5)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-28 15:22:18 +00:00
timvisee
9fdc079878
Remove annoying husky post merge and checkout hooks 2021-06-28 17:19:30 +02:00
timvisee
f08d078236
Update dependencies 2021-06-23 21:02:46 +02:00
timvisee
46ae4a220b
Merge branch 'dependabot/npm_and_yarn/trim-newlines-3.0.1' into master
See https://github.com/timvisee/send/pull/43
2021-06-09 13:28:26 +02:00
dependabot[bot]
d0932c26ea
Bump trim-newlines from 3.0.0 to 3.0.1
Bumps [trim-newlines](https://github.com/sindresorhus/trim-newlines) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sindresorhus/trim-newlines/releases)
- [Commits](https://github.com/sindresorhus/trim-newlines/commits)

---
updated-dependencies:
- dependency-name: trim-newlines
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-09 11:26:31 +00:00
timvisee
798c399a38
Update dependencies 2021-06-09 12:48:02 +02:00
timvisee
825e3942a2
Bump version to v3.4.12 2021-06-04 14:08:25 +02:00
timvisee
755459f57e
Update dependencies 2021-06-04 14:07:19 +02:00
Tim Visée
42f5ca9701 Merge branch 'default-download-count' into 'master'
Add DEFAULT_DOWNLOADS variable to set default download count

See merge request timvisee/send!18
2021-06-04 12:06:05 +00:00
timvisee
1a923d21b5
Add DEFAULT_DOWNLOADS variable to set default download count
Fixes https://github.com/timvisee/send/issues/39
2021-06-04 14:03:58 +02:00
timvisee
3bd9f00c25
Merge branch 'dependabot/npm_and_yarn/ws-6.2.2'
See https://github.com/timvisee/send/pull/42
2021-06-04 13:50:02 +02:00
dependabot[bot]
fa1c64369f
Bump ws from 6.2.1 to 6.2.2
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-04 11:47:46 +00:00
timvisee
9280f47afc
Update dependencies 2021-06-04 13:46:24 +02:00
timvisee
3707b90d09
Update dependencies 2021-05-30 12:41:42 +02:00
timvisee
21392f1157
Merge branch 'dependabot/npm_and_yarn/dns-packet-1.3.4' into master
See https://github.com/timvisee/send/pull/37
2021-05-30 12:40:45 +02:00
dependabot[bot]
680d3ed948
Bump dns-packet from 1.3.1 to 1.3.4
Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.3.1 to 1.3.4.
- [Release notes](https://github.com/mafintosh/dns-packet/releases)
- [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mafintosh/dns-packet/compare/v1.3.1...v1.3.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-29 01:54:35 +00:00
13 changed files with 2619 additions and 1687 deletions

View File

@ -152,6 +152,7 @@ AWS example using Ubuntu Server `20.04`: [docs/AWS.md](docs/AWS.md)
- Web: _this repository_
- Command-line: [`ffsend`](https://github.com/timvisee/ffsend)
- Android: _see [Android](#android) section_
- Thunderbird: [FileLink provider for Send](https://addons.thunderbird.net/en-US/thunderbird/addon/filelink-provider-for-send/)
#### Android

View File

@ -77,7 +77,11 @@ function body(main) {
state.capabilities = {
account: true
}; //TODO
state.archive = new Archive([], DEFAULTS.EXPIRE_SECONDS);
state.archive = new Archive(
[],
DEFAULTS.EXPIRE_SECONDS,
DEFAULTS.DOWNLOADS
);
state.storage = storage;
state.user = new User(storage, LIMITS);
state.sentry = Sentry;

View File

@ -14,11 +14,11 @@ function isDupe(newFile, array) {
}
export default class Archive {
constructor(files = [], defaultTimeLimit = 86400) {
constructor(files = [], defaultTimeLimit = 86400, defaultDownloadLimit = 1) {
this.files = Array.from(files);
this.defaultTimeLimit = defaultTimeLimit;
this.timeLimit = defaultTimeLimit;
this.dlimit = 1;
this.dlimit = defaultDownloadLimit;
this.password = null;
}

View File

@ -224,24 +224,6 @@ async function saveFile(file) {
if (navigator.msSaveBlob) {
navigator.msSaveBlob(blob, file.name);
return resolve();
} else if (/iPhone|fxios/i.test(navigator.userAgent)) {
// This method is much slower but createObjectURL
// is buggy on iOS
const reader = new FileReader();
reader.addEventListener('loadend', function() {
if (reader.error) {
return reject(reader.error);
}
if (reader.result) {
const a = document.createElement('a');
a.href = reader.result;
a.download = file.name;
document.body.appendChild(a);
a.click();
}
resolve();
});
reader.readAsDataURL(blob);
} else {
const downloadUrl = URL.createObjectURL(blob);
const a = document.createElement('a');

View File

@ -52,7 +52,7 @@ if (process.env.NODE_ENV === 'production') {
DEFAULTS,
WEB_UI,
PREFS,
archive: new Archive([], DEFAULTS.EXPIRE_SECONDS),
archive: new Archive([], DEFAULTS.EXPIRE_SECONDS, DEFAULTS.DOWNLOADS),
capabilities,
translate,
storage,

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@ const raw = require('choo/html/raw');
const qrcode = require('../qrcode');
module.exports = function(url) {
const gen = qrcode(5, 'L');
const gen = qrcode(0, 'L');
gen.addData(url);
gen.make();
const qr = gen.createSvgTag({ scalable: true });

View File

@ -29,7 +29,7 @@ Config options expecting array values (e.g. `EXPIRE_TIMES_SECONDS`, `DOWNLOAD_CO
| Name | Description |
|------------------|-------------|
| `BASE_URL` | The HTTPS URL where traffic will be served (e.g. `https://send.firefox.com`)
| `DETECT_BASE_URL` | Autodetect the base URL using browser if `BASE_URL` is unset (defaults to `false`)
| `DETECT_BASE_URL` | Autodetect the base URL using browser if `BASE_URL` is unset (defaults to `false`)
| `PORT` | Port the server will listen on (defaults to `1443`)
| `NODE_ENV` | Run in `development` mode (unsafe) or `production` mode (the default)
| `SEND_FOOTER_DMCA_URL` | A URL to a contact page for DMCA requests (empty / not shown by default)
@ -49,6 +49,8 @@ Configure the limits for uploads and downloads. Long expiration times are risky
| `MAX_DOWNLOADS` | Maximum number of downloads (defaults to `100`)
| `DOWNLOAD_COUNTS` | Download limit options to show in UI dropdown, e.g. `10,1,2,5,10,15,25,50,100,1000`
| `EXPIRE_TIMES_SECONDS` | Expire time options to show in UI dropdown, e.g. `3600,86400,604800,2592000,31536000`
| `DEFAULT_DOWNLOADS` | Default download limit in UI (defaults to `1`)
| `DEFAULT_EXPIRE_SECONDS` | Default expire time in UI (defaults to `86400`)
*Note: more options can be found here: https://github.com/timvisee/send/blob/master/server/config.js*
@ -89,7 +91,7 @@ $ docker run -p 1443:1443 \
registry.gitlab.com/timvisee/send:latest
```
*Note: make sure to replace the example values above with your real values before running.*
*Note: make sure to replace the example values above with your real values before running.*
**Run totally self-hosted using the current filesystem directry (`$PWD`) to store the Redis data and file uploads, with a `5GB` upload limit, 1 month expiry, and contact URL set.**

2954
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{
"name": "send",
"description": "File Sharing Experiment",
"version": "3.4.11",
"version": "3.4.13",
"author": "Mozilla (https://mozilla.org)",
"contributors": [
"Tim Visee <3a4fb3964f@sinenomine.email> (https://timvisee.com)"
@ -37,9 +37,7 @@
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"pre-push": "npm test",
"post-merge": "npm install",
"post-checkout": "scripts/sync-npm-dependencies.sh"
"pre-push": "npm test"
}
},
"lint-staged": {
@ -64,10 +62,10 @@
"node": "^15.5.1"
},
"devDependencies": {
"@babel/core": "^7.14.3",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/core": "^7.15.0",
"@babel/plugin-proposal-class-properties": "^7.14.5",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-env": "^7.14.2",
"@babel/preset-env": "^7.15.0",
"@dannycoates/webcrypto-liner": "^0.1.37",
"@fullhuman/postcss-purgecss": "^1.3.0",
"@mattiasbuelens/web-streams-polyfill": "0.2.1",
@ -78,7 +76,7 @@
"base64-js": "^1.5.1",
"content-disposition": "^0.5.3",
"copy-webpack-plugin": "^5.1.2",
"core-js": "^3.12.1",
"core-js": "^3.16.1",
"crc": "^3.8.0",
"cross-env": "^6.0.3",
"css-loader": "^3.6.0",
@ -135,22 +133,22 @@
"@dannycoates/express-ws": "^5.0.3",
"@fluent/bundle": "^0.13.0",
"@fluent/langneg": "^0.3.0",
"@google-cloud/storage": "^5.8.5",
"@google-cloud/storage": "^5.12.0",
"@sentry/node": "^5.30.0",
"aws-sdk": "^2.909.0",
"aws-sdk": "^2.963.0",
"body-parser": "^1.19.0",
"choo": "^7.0.0",
"cldr-core": "^35.1.0",
"configstore": "github:dannycoates/configstore#master",
"convict": "^5.2.0",
"convict": "^5.2.1",
"express": "^4.17.1",
"helmet": "^3.23.3",
"mkdirp": "^0.5.1",
"mozlog": "^2.2.0",
"node-fetch": "^2.6.1",
"redis": "^2.8.0",
"redis": "^3.1.1",
"redis-mock": "^0.47.0",
"selenium-standalone": "^6.23.0",
"selenium-standalone": "^6.24.0",
"ua-parser-js": "^0.7.28"
},
"availableLanguages": [

View File

@ -15,6 +15,7 @@ module.exports = {
FOOTER_SOURCE_URL: config.footer_source_url
},
DEFAULTS: {
DOWNLOADS: config.default_downloads,
DOWNLOAD_COUNTS: config.download_counts,
EXPIRE_TIMES_SECONDS: config.expire_times_seconds,
EXPIRE_SECONDS: config.default_expire_seconds

View File

@ -64,6 +64,11 @@ const conf = convict({
default: [1, 2, 3, 4, 5, 20, 50, 100],
env: 'DOWNLOAD_COUNTS'
},
default_downloads: {
format: Number,
default: 1,
env: 'DEFAULT_DOWNLOADS'
},
max_downloads: {
format: Number,
default: 100,

View File

@ -26,7 +26,7 @@ module.exports = function(ws, req) {
const fileInfo = JSON.parse(message);
const timeLimit = fileInfo.timeLimit || config.default_expire_seconds;
const dlimit = fileInfo.dlimit || 1;
const dlimit = fileInfo.dlimit || config.default_downloads;
const metadata = fileInfo.fileMetadata;
const auth = fileInfo.authorization;
const user = await fxa.verify(fileInfo.bearer);