Commit Graph

142 Commits

Author SHA1 Message Date
Akash Satheesan 702485139a
chore: update vulnerable dependencies (#2861)
Cherry-pick dependencies with security issues to update.

Signed-off-by: Akash Satheesan <akash@coder.com>
2021-03-12 01:46:40 +05:30
Justin Poehnelt 97c1399401
feat: use compression in express server (#2680) 2021-02-12 14:27:33 -06:00
Asher 8344e2062a
Merge pull request #2622 from cdr/plugin-additions 2021-02-10 16:45:00 -06:00
Asher 2b1b3e6dc0
Add eslint import alias resolver
Somehow I managed not to commit this earlier.
2021-02-09 16:20:28 -06:00
Joe Previte 719481e84e
refactor: add getPackageJson fn in constants 2021-02-08 16:21:30 -07:00
Anmol Sethi d7f06975a6
test: Switch from leaked-handles to wtfnode (#2604)
See my comments at
https://github.com/cdr/code-server/pull/2563#issuecomment-763394741
2021-02-01 11:06:49 -05:00
Joe Previte 3044224729
feat: add support for code coverage shield 2021-01-25 16:21:07 -07:00
Joe Previte 05beccf671
refactor: move jest around and add code coverage 2021-01-22 14:18:45 -07:00
Joe Previte 883dd13850
refactor: move jest and add package.json to /test 2021-01-21 14:06:49 -07:00
Joe Previte 75717749b2
refactor: upgrade TS to 4.1.3 2021-01-21 10:11:09 -07:00
Joe Previte 0a07d67c8d
fix: prevent mocha/jest types conlict
Modify the tsconfig.json in lib/vscode/src/build.

This adds the flag skipLibCheck: true to tell TypeScript
to not type-check the declaration files at build time.

We need to add this because otherwise it checks the declaration
files and reports an error of duplicate type definitions
because we use Jest for our tests and they use Mocha and they
both use the global namespace "test" in their .d.ts files.
2021-01-21 10:11:09 -07:00
Joe Previte cef7d42652
feat: setup jest 2021-01-21 10:10:32 -07:00
Anmol Sethi ea1949e440
test: Add testutil.HttpServer
The goal is to remove supertest as it does not support typescript well
and there's really no good reason for the dependency. Also no websocket
testing support.
2021-01-20 02:06:43 -05:00
Anmol Sethi ae902b9dd1
proxy_agent: Use proxy-from-env for robustness
Now we support pretty much every variable under the sun along with
$NO_PROXY all correctly and with minimal code on our end.
2020-12-18 11:10:07 -05:00
Anmol Sethi 691d44d4a8
Use proxy-agent to support $HTTP_PROXY
Closes #124

This works by monkey patching the http and https modules's default agent
at runtime to the one given by the proxy-agent package.
2020-12-04 02:34:43 -05:00
Anmol Sethi a37572d92d
ci: Disable no-unused-vars for function args
See previous commit for failure introduced.
2020-11-13 18:44:28 -05:00
Anmol Sethi 197a09f0c1
plugin: Test endpoints via supertest
Unfortunately we can't use node-mocks-http to test a express.Router
that has async routes. See https://github.com/howardabrams/node-mocks-http/issues/225

router will just return undefined if the executing handler is async and
so the test will have no way to wait for it to complete. Thus, we have
to use supertest which starts an actual HTTP server in the background
and uses a HTTP client to send requests.
2020-11-06 10:13:01 -05:00
Asher 9e09c1f92b
Upgrade to Express 5
Now async routes are handled!
2020-11-05 15:08:08 -06:00
Asher 112eda4605
Convert routes to Express 2020-10-26 17:56:13 -05:00
Asher 6000e389bc
Add Express as a dep and regenerate lockfile
The Express types were throwing errors but regenerating the lockfile
resolved them.
2020-10-20 16:18:26 -05:00
Anmol Sethi ebbcb8d6a7
Update yarn.lock 2020-10-07 17:40:19 -04:00
Anmol Sethi 55a7e8b56f
Implement automatic cloud proxying 2020-10-07 15:58:30 -04:00
Anmol Sethi 579bb94a6c
Add coder cloud expose command 2020-10-07 15:58:30 -04:00
Anmol Sethi 3912e9e333
Downgrade node types to v12 2020-08-27 11:04:43 -04:00
Anmol Sethi ebbb1187da
Update remaining dependencies 2020-08-26 14:27:30 -04:00
Anmol Sethi c80d093dc4
Update dependencies in package.json
See #1898 and #1905
2020-08-26 13:59:41 -04:00
Anmol Sethi bf09c294cc
Revert "Upgrade to latest typescript"
This reverts commit 6539dd4dbe.

Breaks linting and wasn't required.
2020-08-26 13:32:50 -04:00
Anmol Sethi 6539dd4dbe
Upgrade to latest typescript
Otherwise the build keeps failing for me as tsc won't compile anymore.

Not sure why things work on CI/for asher but I don't think this will
cause any additional issues.
2020-08-26 07:50:51 -04:00
Asher 2fa5037859
Log output to disk 2020-07-29 18:48:07 -05:00
Asher 4b6c0a6fc3
Update logger 2020-07-29 18:48:03 -05:00
dependabot[bot] 0193516f55
Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-17 01:02:31 +00:00
Anmol Sethi c00f931500
Remove zip library dependency 2020-06-03 18:24:59 -04:00
Anmol Sethi a0a77e379e
Add doc/guide.md 2020-05-14 05:24:23 -04:00
Anmol Sethi 00d164b67f
Add default config file and improve config/data directory detection 2020-05-12 19:59:54 -04:00
Anmol Sethi c5179c2a06
Add support for a YAML config file 2020-05-12 19:59:53 -04:00
Anmol Sethi e9fe4c0466
Document release process 2020-05-08 01:43:31 -04:00
Anmol Sethi be032cf735
Add NPM package, debs, rpms and refactor CI/build process
Closes many issues that I'll prune after adding more docs
for users.
2020-05-06 20:25:52 -04:00
Asher 6a2662eeee
Remove node-pty
This was for the ssh server we removed.
2020-05-05 12:33:08 -05:00
Asher 870cf4f3fe
Fix yarn.lock
Things got really out of whack when trying to update dependencies
earlier.
2020-04-29 12:39:42 -05:00
Asher f3edb1cc5f
Update node to latest lts (12.16.3) and update deps 2020-04-29 11:43:13 -05:00
Anmol Sethi 5accf3fe5f
Add basic rate limiting to login endpoint
Closes #1320
2020-04-28 14:21:08 -04:00
Anmol Sethi 181e0ea6c8
Remove ssh2 dep 2020-04-28 14:04:56 -04:00
Asher 8aa5675ba2
Implement the actual proxy 2020-04-02 13:40:19 -05:00
Maksim Ryzhikov 8a6faa39c9 Remove duplication in dependencies 2020-03-24 09:43:14 +03:00
dependabot[bot] ddd44999c6
Bump acorn from 5.7.3 to 5.7.4
Bumps [acorn](https://github.com/acornjs/acorn) from 5.7.3 to 5.7.4.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/5.7.3...5.7.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-03-16 22:34:51 +00:00
Will O'Beirne 3463d56114
SSH server & endpoint 2020-03-16 15:14:53 -05:00
Asher c870398c86
Switch to loose files
For #1306.
2020-02-25 18:23:35 -06:00
Anmol Sethi 5681c87e33
Fix bugs in CI 2020-02-18 19:06:35 -05:00
Anmol Sethi 1a54f6b7ef
Merge remote-tracking branch 'origin/restructure' into anmol-restructure 2020-02-18 12:52:29 -05:00
Anmol Sethi 61d1af0413
Add macOS release step 2020-02-14 21:16:23 -05:00
Asher db54f78e8e
Implement automatic updates 2020-02-14 15:58:39 -06:00
Asher b8fa7da972
Simplify frontend
Just a login form and a list of applications. No modals or anything like
that.
2020-02-13 20:10:14 -06:00
Asher 8cc11d1688
Improve routing 2020-02-05 13:07:07 -06:00
Asher b29346ecdf
Implement new structure 2020-02-04 14:31:44 -06:00
Asher 3f2240ab65
Update logger 2020-01-08 16:30:34 -06:00
Asher 6a1dcab7a6
Update nbin
Should finally be able to build with Node v12 now.
2020-01-07 18:27:28 -06:00
Asher af71203955
Fix relaunching during an update 2019-11-01 10:51:23 -05:00
dependabot[bot] 766efd6079 Bump mixin-deep from 1.3.1 to 1.3.2 (#1126)
Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
- [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-10-29 15:20:12 -05:00
Asher 88cef85f62
Add dependencies required for running build script
They were getting pulled from VS Code which doesn't work if you are
running a build in a clean repo.
2019-10-18 18:40:10 -05:00
Asher bdd11f741b
Update to 1.39.2
Also too the opportunity to rewrite the build script since there was a
change in the build steps (mainly how the product JSON is inserted) and
to get the build changes out of the patch. It also no longer relies on
external caching (we'll want to do this within CI instead).
2019-10-18 18:20:02 -05:00
Asher 1c50b5285e
Resolve bundling issues with node-browser 2019-10-10 15:36:56 -05:00
Asher 4290cffe3b
Update packages for in-browser extensions 2019-10-07 11:59:09 -05:00
Asher 548d095611
Add support for running extensions in the browser 2019-10-04 18:14:19 -05:00
Asher ef069d9b0e
Update nbin
The latest version contains a fix for passing null options when reading
a file. Fixes #544.
2019-09-16 18:04:41 -05:00
Asher f8635a124f
Add tar endpoint
This will be used to load extensions into the browser using requirefs.
2019-09-12 12:17:16 -05:00
Asher 976a326f47
Update nbin 2019-08-30 17:45:11 -05:00
Asher 45ad7f020a
Update logger 2019-08-13 12:03:08 -05:00
Asher 2807ce495e
Add tar-stream dependency
It's no longer included by the remote dependencies.
2019-08-09 19:23:44 -05:00
Asher 12af311ce7
Use our logger instead of raw console.log 2019-07-31 17:22:16 -05:00
Asher 2b2aa9a211
Add https server 2019-07-18 18:09:09 -05:00
Asher 5677ff2edf
Add build scripts 2019-07-18 18:08:27 -05:00
Asher 770e0db7b8
Add cli arguments 2019-07-18 18:08:25 -05:00
Asher 57a8186e88
Add development steps 2019-07-18 18:08:20 -05:00
Luca Casonato 22b485acd9 Added serviceworker and web-manifest (#154)
* Added serviceworker and manifest.json

* added deps in package.json

* fixed image link

* actually fixed images i think

* added assets to individual module folders

* added caching

* Serviceworker now properly loads

* Changed single to double quotes

* Update lock

* moved the service worker back into prod only

* removed sw from general

* changed background color of splash screen

* added logo to server

* centralized logo into single assets folder
2019-04-16 15:44:57 -05:00
Asher aabb2ecda7
Update node to 10.15.1 (#472)
* Update Node to 10.15.1

* Remove string replace that was used for oclif

* Update nbin

* Package node-pty and spdlog with nbin

* Label stderr/stdout from shared process

* Remove fork override

* Prevent "already disposed" errors when trying to kill disposed proxies

* Include spdlog dependencies

* Shim /node_modules

* Add node_modules to Docker ignore

It keeps using my already-built .node files which results in a
mismatching GLIBC version error.

* Update nbin
2019-04-15 19:48:12 -05:00
Kyle Carberry dcf409aecb Improve CI caching (#416)
* Adjust linux distro to ubuntu 14.04

* Cache lib directory for speedy builds

* Fix path linking for default extensions

* Update reset

* Reset to head

* Improve caching

* Still run yarn in CI

* Update yarn before install

* Increase cache timeout

* Install vscode from vstar

* Undo data-dir changes to CLI, add back clean, remove unused CI func

* Remove additional flags added

* Remove unused dependency

* Reset vscode install dir so patching always works
2019-04-03 14:24:00 -05:00
Anmol Sethi 97f5b07003 Fix icons on safari when using cookie authentication (#398)
Cookie's are not sent with url's in -webkit-mask so we
embed the svg's directly in the css.
2019-04-01 15:20:39 -05:00
Asher dc2253e718 Refactor evaluations (#285)
* Replace evaluations with proxies and messages

* Return proxies synchronously

Otherwise events can be lost.

* Ensure events cannot be missed

* Refactor remaining fills

* Use more up-to-date version of util

For callbackify.

* Wait for dispose to come back before removing

This prevents issues with the "done" event not always being the last
event fired. For example a socket might close and then end, but only
if the caller called end.

* Remove old node-pty tests

* Fix emitting events twice on duplex streams

* Preserve environment when spawning processes

* Throw a better error if the proxy doesn't exist

* Remove rimraf dependency from ide

* Update net.Server.listening

* Use exit event instead of killed

Doesn't look like killed is even a thing.

* Add response timeout to server

* Fix trash

* Require node-pty & spdlog after they get unpackaged

This fixes an error when running in the binary.

* Fix errors in down emitter preventing reconnecting

* Fix disposing proxies when nothing listens to "error" event

* Refactor event tests to use jest.fn()

* Reject proxy call when disconnected

Otherwise it'll wait for the timeout which is a waste of time since we
already know the connection is dead.

* Use nbin for binary packaging

* Remove additional module requires

* Attempt to remove require for local bootstrap-fork

* Externalize fsevents
2019-03-26 13:01:25 -05:00
Asher e1dc6967ed
Fix trash 2019-03-12 14:04:17 -05:00
Asher 8d37442e0c
Move cross-env dep to the root
Multiple packages use it.
2019-02-28 18:43:47 -06:00
Asher eaea947318
Fix spdlog and node-pty in binary 2019-02-25 15:18:44 -06:00
Kyle Carberry 85d2225e0c Featureful (#31)
* Fix loading within the CLI

* Remove app

* Remove promise handle

* Add initial travis file

* Add libxkbfile dependency

* Add libxkbfile-dev

* Add build script

* Fix malformed bash statement

* Remove yarn from script

* Improve build script

* Extract upx before usage

* Only run upx if on linux

* Ensure resource directory exists

* Pack runnable binary

* Export binary with platform

* Improve build process

* Install upx before running install script

* Update typescript version before running nexe

* Add os.release() function for multi-platform support

* Update travis.yml to improve deployment

* Add on CI

* Update to v1.31.0

* Add libsecret

* Update build target

* Skip cleanup

* Fix built-in extensions

* Add basics for apps

* Create custom DNS server

* Fix forking within CLI. Fixes TS language features

* Fix filename resolve

* Fix default extensions path

* Add custom dialog

* Store workspace path

* Remove outfiles

* Cleanup

* Always authed outside of CLI

* Use location.host for client

* Remove useless app interface

* Remove debug file for building wordlist

* Use chromes tcp host

* Update patch

* Build browser app before packaging

* Replace all css containing file:// URLs, fix webviews

* Fix save

* Fix mkdir
2019-02-21 11:55:42 -06:00
Asher 4a80bcb42c
Make everything use active evals (#30)
* Add trace log level

* Use active eval to implement spdlog

* Split server/client active eval interfaces

Since all properties are *not* valid on both sides

* +200% fire resistance

* Implement exec using active evaluations

* Fully implement child process streams

* Watch impl, move child_process back to explicitly adding events

Automatically forwarding all events might be the right move, but wanna
think/discuss it a bit more because it didn't come out very cleanly.

* Would you like some args with that callback?

* Implement the rest of child_process using active evals

* Rampant memory leaks

Emit "kill" to active evaluations when client disconnects in order to
kill processes. Most likely won't be the final solution.

* Resolve some minor issues with output panel

* Implement node-pty with active evals

* Provide clearTimeout to vm sandbox

* Implement socket with active evals

* Extract some callback logic

Also remove some eval interfaces, need to re-think those.

* Implement net.Server and remainder of net.Socket using active evals

* Implement dispose for active evaluations

* Use trace for express requests

* Handle sending buffers through evaluation events

* Make event logging a bit more clear

* Fix some errors due to us not actually instantiating until connect/listen

* is this a commit message?

* We can just create the evaluator in the ctor

Not sure what I was thinking.

* memory leak for you, memory leak for everyone

* it's a ternary now

* Don't dispose automatically on close or error

The code may or may not be disposable at that point.

* Handle parsing buffers on the client side as well

* Remove unused protobuf

* Remove TypedValue

* Remove unused forkProvider and test

* Improve dispose pattern for active evals

* Socket calls close after error; no need to bind both

* Improve comment

* Comment is no longer wishy washy due to explicit boolean

* Simplify check for sendHandle and options

* Replace _require with __non_webpack_require__

Webpack will then replace this with `require` which we then provide to
the vm sandbox.

* Provide path.parse

* Prevent original-fs from loading

* Start with a pid of -1

vscode immediately checks the PID to see if the debug process launch
correctly, but of course we don't get the pid synchronously.

* Pass arguments to bootstrap-fork

* Fully implement streams

Was causing errors because internally the stream would set this.writing
to true and it would never become false, so subsequent messages would
never send.

* Fix serializing errors and streams emitting errors multiple times

* Was emitting close to data

* Fix missing path for spawned processes

* Move evaluation onDispose call

Now it's accurate and runs when the active evaluation has actually
disposed.

* Fix promisifying fs.exists

* Fix some active eval callback issues

* Patch existsSync in debug adapter
2019-02-19 10:17:03 -06:00
Asher 81f48b8b06
Add trash module 2019-02-07 11:05:17 -06:00
Asher 4e6d6f0725
Add ignore-loader dependency and ignore more things 2019-02-05 11:15:51 -06:00
Asher 72bf4547d4
Getting the client to run (#12)
* Clean up workbench and integrate initialization data

* Uncomment Electron fill

* Run server & client together

* Clean up Electron fill & patch

* Bind fs methods

This makes them usable with the promise form:
`promisify(access)(...)`.

* Add space between tag and title to browser logger

* Add typescript dep to server and default __dirname for path

* Serve web files from server

* Adjust some dev options

* Rework workbench a bit to use a class and catch unexpected errors

* No mkdirs for now, fix util fill, use bash with exec

* More fills, make general client abstract

* More fills

* Fix cp.exec

* Fix require calls in fs fill being aliased

* Create data and storage dir

* Implement fs.watch

Using exec for now.

* Implement storage database fill

* Fix os export and homedir

* Add comment to use navigator.sendBeacon

* Fix fs callbacks (some args are optional)

* Make sure data directory exists when passing it back

* Update patch

* Target es5

* More fills

* Add APIs required for bootstrap-fork to function (#15)

* Add bootstrap-fork execution

* Add createConnection

* Bundle bootstrap-fork into cli

* Remove .node directory created from spdlog

* Fix npm start

* Remove unnecessary comment

* Add webpack-hot-middleware if CLI env is not set

* Add restarting to shared process

* Fix starting with yarn
2019-02-05 11:15:50 -06:00
Kyle Carberry 05899b5edf
Create initial server layout (#11)
* Create initial server layout

* Adjust command name to entry

* Add @oclif/config as dependency

* Implement build process for outputting single binary

* Add init message

* Remove unused import, add tsconfig.json to .gitignore

* Accidently pushed wacky change to output host FS files

* Add options to createApp
2019-02-05 11:15:49 -06:00
Kyle Carberry a328204d80
Implement fs module (#3)
* Implements the fs module

* Add stats object

* Add not implemented to createWriteStream

* Update mkdtemp to use tmp dir

* Unexport Stats

* Add client web socket for commands and restructure
2019-02-05 11:15:47 -06:00
Asher d44a0a3e59
FuseBox didn't work out 2019-02-05 11:15:46 -06:00
Asher 32294a5b1b
Fix @coder imports 2019-02-05 11:15:43 -06:00
Asher b40d8e75e8
Fix install and possibly Jest 2019-02-05 11:15:42 -06:00
Asher 9cd81f73fa
not finished 2019-02-05 11:15:42 -06:00