Commit Graph

238 Commits

Author SHA1 Message Date
Asher e12fcd3a0d
Fix error when shared process exits with null 2019-04-03 17:32:20 -05:00
Kyle Carberry 4af84fcaf6 Add flags for customizing user data dir and extensions dir (#420)
* Add flags for customizing extensions directory

* Update @coder/nbin
2019-04-03 17:07:47 -05:00
Asher c607015a26
Initialize backup service (#419)
- Fixes #399
- Fixes #332
2019-04-03 16:08:15 -05:00
John McCambridge 217515344e Add port in use message (#418)
* Add clear error message if port is in use

* Add bold function for text/numbers

* remove unused dependency:

* remove unused line break

* Change logger message

* Use NodeJS.ErrnoException type

* Add back check for error code
2019-04-03 15:50:52 -05:00
Asher 3a672d725a Convert fully to protobuf (was partially JSON) (#402)
* Convert fully to protobuf (was partially JSON)

* Handle all floating promises

* Remove stringified proto from trace logging

It wasn't proving to be very useful.
2019-04-02 17:44:28 -05:00
Asher 033ef151ca
Improve retry
Registering returns an instance that lets you retry and recover without
needing to keep passing the name everywhere.

Also refactored the shared process a little to make better use of the
retry and downgraded stderr messages to warnings because they aren't
critical.
2019-04-01 13:31:34 -05:00
Asher 91deaece47
Reduce frequency of port scanning 2019-03-29 16:14:28 -05:00
Asher 03ad2a17b2 Handle disconnects (#363)
* Make proxies decide how to handle disconnects

* Connect to a new terminal instance on disconnect

* Use our retry for the watcher

* Specify method when proxy doesn't exist

* Don't error when closing/killing disconnected proxy

* Specify proxy ID when a method doesn't exist

* Use our retry for the searcher

Also dispose some things for the watcher because it doesn't seem that
was done properly.

The searcher also now starts immediately so there won't be lag when you
perform your first search.

* Use our retry for the extension host

* Emit error in parent proxy class

Reduces duplicate code. Not all items are "supposed" to have an error
event according to the original implementation we are filling, but there
is no reason why we can't emit our own events (and are already doing so
for the "disconnected" event anyway).

* Reconnect spdlog

* Add error message when shared process disconnects

* Pass method resolve to parse

* Don't pass method to getProxy

It doesn't tell you anything that trace logging wouldn't and has
no relation to what the function actually does.

* Fix infinite recursion when disposing protocol client in tests
2019-03-28 17:59:49 -05:00
Asher 259095eae2 Watcher and initial load performance improvements (#357)
* Set low CPU priority on watcher

Fixes #247.

* Batch stat and readdir calls

* Fix fs.exists

callbackify seems to always adds an error as the first argument. Opted
to just use the promise for this one.

* Batch lstat

* Add maximum time for flushing batches
2019-03-27 17:04:19 -05:00
Kyle Carberry 4eb5331ddc
Fixes #121 2019-03-27 10:36:32 -04:00
Kyle Carberry 3bb5c0bbe5
Fixes #351 2019-03-27 09:56:05 -04:00
Kyle Carberry 83aa952de2
Update nbin version. Fixes extensions 2019-03-26 22:07:36 -04:00
Kyle Carberry e0d33f2399
Update nbin to 1.0.3 2019-03-26 17:57:35 -04:00
Kyle Carberry 194cbca0f2
Update nbin 2019-03-26 17:53:36 -04:00
Kyle Carberry 1697cc32a3
Use commander instead of oclif 2019-03-26 16:21:03 -04:00
Kyle Carberry 8d692ded4a
Remove tslib external 2019-03-26 14:25:12 -04: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 d16c6aeb30
Fix port scanner when netstat isn't available
- It logs the error now.
- For some reason when there is an error node-netstat runs the callback
  twice. That resulted in us scheduling an exponentially growing number
	of calls which ate up all the CPU (and probably memory eventually).
  For now, opted to dispose when there is an error.
2019-03-25 18:31:43 -05:00
Forest Hoffman cdc40d36ff Ensure workspace configPath is a valid URI object (#317) 2019-03-22 16:58:37 -05:00
Forest Hoffman 18f395b853 Fix install from VSIX for TAR and ZIP formats (#245)
* Fix install from VSIX for TAR and ZIP formats

* Parse TAR before ZIP, when installing from VSIX
2019-03-21 14:04:09 -05:00
Kyle Carberry e9e0bf7d84
Fixes #275 2019-03-20 09:58:56 -04:00
Kyle Carberry 2169045377
Fix debugging 2019-03-19 12:53:05 -04:00
Kyle Carberry 2f27b5df8c
Fix #251 2019-03-15 00:51:05 -04:00
Michael Desantis 0efae1fcb6 Add error message for incorrect password. Fix issue #55 (#201) 2019-03-12 19:19:32 -04:00
Kyle Carberry 7cc7aa51aa
Add additional ide-api events 2019-03-12 17:43:53 -04:00
Asher 6c8e513e71
Fill remainder of graceful-fs
It's just fs. Used by fs-extra.
2019-03-12 15:50:41 -05:00
Asher f7c1ebf667
Fix moving data directory across devices 2019-03-12 15:45:44 -05:00
Asher ba37a34fa2
Create data directory path before moving old directory there 2019-03-12 15:05:47 -05:00
Asher e1dc6967ed
Fix trash 2019-03-12 14:04:17 -05:00
Asher 3155eb76f5
Allow webview iframe to load styles 2019-03-12 12:55:43 -05:00
Asher e597d49912
Fix issues with configuration directories
- Move the old data directory if possible.
- Fix extension path to not use a hard-coded path and instead use the
  data directory.
- Create every part of the path during startup.
- Create each path when a connection is made as well in case they are
  deleted while the server is running.
- Create every part of the path before saving settings or writing a file
  using the resource endpoint.
2019-03-12 11:44:56 -05:00
Asher 0a9f5d8eee
Pass env as actual env instead of as a flag 2019-03-11 17:50:35 -05:00
Asher 736feaba51
Add proper version to --version 2019-03-11 17:38:11 -05:00
Asher 8aff206538
Fix some dialog styling issues
- Fix black text caused by 1.32.0 upgrade.
- Fix various alignment and padding issues (a few elements with more
  space below than above).
2019-03-11 11:29:24 -05:00
Michael c471babc69 Use a timing-safe equality check for passwords (#133) 2019-03-09 09:24:36 -08:00
David Bushong d7a66e4f15 Open websocket on same path as page (#149)
This is the critical piece to let you serve code-server proxied under a
path.  Otherwise if you proxy e.g. `/editor/` thru to
`http://localhost:8000`, everything works fine except the websocket
connection is still opened to `/`
2019-03-09 09:23:51 -08:00
Forest Hoffman 30d14eeab4 Adhere to XDG base directory spec for dataDir and logDir (#156) 2019-03-09 09:11:30 -08:00
Asher 36c05ed335 Feature/1.32.0 update (#117)
* Update VS Code to 1.32.0

* Update patch

Most changes are moved files, most notably shell.contribution.ts which
is now main.contribution.ts.

Also:
- repl.ts no longer uses isMacintosh
- shell.ts doesn't exist
- added back the commented-out CSP headers

* Use es6 target for bootstrap-fork

* Directly reference cross-env binary

yarn and npm find the binary just fine when running the tasks from the
root but it doesn't work if you run one of those tasks directly from
within those directories.

* Update import paths and bootstrap-fork ignores

* Increase memory limit for building default extensions

* Fix invalid regex in Firefox

* Update startup function

* Fix global.require error

* Update zip extract arguments

* Update travis to minimum required Node version

* Always chmod executable dependencies

Fixes EACCESS errors for users that had the files unpacked before we
added the chmod call.

* Remove unused var declaration
2019-03-08 08:37:03 -08:00
Asher 3d654a8df7
Resolve paths
Fixes #19.
2019-03-07 11:25:26 -06:00
Takayosi Amagi 87d2e22a6b Open localhost URL with --open (#28)
* Open localhost URL with --open

* Catch errors on opn

Co-Authored-By: fand <fand@users.noreply.github.com>
2019-03-07 09:23:54 -08:00
Anmol Sethi 17267bd801 Add Dockerfile and some cleanup (#57) 2019-03-06 18:59:43 -08:00
Michael Desantis ac56fcaafc Remove unused markup from password page (#49) 2019-03-06 18:47:05 -08:00
Michael Desantis e20b79b5cc Generate secure passwords, fixes issue #26 (#51) 2019-03-06 16:25:44 -08:00
Asher 994531d8bb
Add task for packaging release (#6)
* Add task for packaging release

* Modify package task to package a single binary

This is so it can be used as part of the build/release script.

* Package release as part of Travis deploy

* Set platform env var

* Add arch env var

* Make version available to the code

* Use tar for Linux and zip for Mac & Windows
2019-03-06 18:15:52 -06:00
Icebob 3fbdb2e46c Implement #4 - fix password via CLI (#5) 2019-03-06 00:08:43 -08:00
Kyle Carberry 414eb7076f
Update element fill to replace `file` URIs in image tags 2019-03-06 00:06:44 +00:00
Asher 47765dde23 Add ping/pong to the protocol (#2) 2019-03-04 19:26:17 -08:00
Kyle Carberry 31518e9754
Make ripgrep executable on extract 2019-03-05 00:42:02 +00:00
Kyle Carberry 90d3a0f16a Allow logger package to be publishable (#37) 2019-03-04 11:57:29 -06:00
Asher 63f7c57b4e
Randomly generate password 2019-03-04 11:46:34 -06:00
Kyle Carberry e2ec010a1d
Add allow-http flag 2019-03-04 07:45:35 +00:00
Kyle Carberry db4a71aefe
Merge branch 'master' of github.com:codercom/vscode-online 2019-03-01 16:55:34 -06:00
Kyle Carberry 185c811354
Update default port to 8443 2019-03-01 16:55:31 -06:00
Asher c384dfb815 Use Coder marketplace (#44)
* Allow setting marketplace URL

* Add zip fill

* Comment out CSP for now

* Fill zip on client as well

Probably will need it for client-side extensions.

* Don't use itemUrl (it's undefined)

* Remove extension rating

* Hide ratings with CSS instead of patching them out

* Add hard-coded fallback for service URL

* Only use coder-develop for extapi if env is explicitly development

* Don't use coder-develop at all for extapi

If you need it, you can set SERVICE_URL.
2019-03-01 15:51:11 -06:00
Kyle Carberry 06855adaa5
Create working directory if it doesn't exist 2019-03-01 10:33:16 -06:00
Kyle Carberry 38b500fc02
Inherit theme color for brief loading screen 2019-03-01 09:45:59 -06:00
Kyle Carberry 94edbd59e9
Bypass certificates on bypass auth 2019-02-28 16:06:17 -06:00
Kyle Carberry 43048c6d12
Force certificates 2019-02-28 14:34:54 -06:00
Kyle Carberry e8174095ca
Add windows support (#41)
* Add windows support

* Improve multi-platform support

* Install with network-concurrency 1

* Use file-glob to upload windows binary

* Don't install packages in parallel if on windows

* Rename vscode-remote to code-server

* Add output at intervals so CI doesn't kill build

* Update all tasks to provide timed output

* Don't perform tasks sync otherwise we can't log
2019-02-28 14:04:19 -06:00
Kyle Carberry 83b64365ba
Convert to node-pty-prebuilt 2019-02-27 22:16:31 -06:00
Kyle Carberry f6d2d17085
Update ide-api 2019-02-27 15:36:39 -06:00
Asher 68cb19ab6f
Use client's OS for keybindings
Fixes https://github.com/codercom/frontend/issues/331.
2019-02-27 15:17:01 -06:00
Kyle Carberry 676b30934f
Add ripgrep, fill native fs functions, add ping endpoint (#39)
* Add ripgrep, fill native fs functions, add ping endpoint

* Make show in folder redirect to the workspace
2019-02-27 15:12:26 -06:00
Asher 3bacbca325
Fix images not appearing (iconv encoding issue)
Fixed by returning the original buffer from `fs.read` and then just
using whatever encoding was passed in to iconv, so this should all work
exactly the same now as it does on native Node.
2019-02-27 14:44:25 -06:00
Kyle Carberry 20c0fc4c52
Use default user shell 2019-02-27 12:43:00 -06:00
Kyle Carberry f421de29d0
Fix IDE typing for custom event 2019-02-27 09:38:45 -06:00
Kyle Carberry 0b5b7afbac
Update IDE api 2019-02-27 09:03:44 -06:00
Asher 71b7bbf99a
Check EISDIR for Mac when performing mkdir 2019-02-26 18:23:33 -06:00
Asher d556e110cb
Include code in stringified errors
This is done by returning the entire error stringified instead of just
the message.

This fixes the issue with the "save as" dialog.
2019-02-26 16:27:01 -06:00
Kyle Carberry be3f0c437f
Fixes browser app, adds no-auth (#38)
* Add no-auth flag

* Install packages for app dir
2019-02-26 16:03:42 -06:00
Asher a07d0c9c3d
Fix file open overflow on Firefox 2019-02-26 15:09:59 -06:00
Asher f05ce105e8
Update dialog to use workbench instead of client 2019-02-26 14:41:34 -06:00
Asher fa26c0bcd6
Fix undefined navigator in bootstrap fork
Due to some files that now import browser.ts.
2019-02-26 14:23:10 -06:00
Asher 04e02bdb08
Fix extra CSS being included on the client 2019-02-26 14:23:01 -06:00
Kyle Carberry 7b5871136b Add IDE API (#36) 2019-02-26 12:12:42 -06:00
Asher 14da71499f
Set platform based on server (#32)
* Set platform based on server

Had to refactor a bit to ensure our values get set before VS Code tries
to use them.

* Pave the way for mnemonics on all platforms

* Fix context menus on Mac

* Fix a bunch of things on Mac including menu bar

* Set keybindings based on client's OS
2019-02-26 12:01:14 -06:00
Kyle Carberry 0c2c957312 Fix readdir for root path (#35)
* Fix readdir for root path

* Fix merge of webpack conf

* Fix travis.yml to deploy on master

* Remove windows platform from travis.yml

* Enable caching

* mkdirpSync

* Fix build script
2019-02-25 16:29:34 -06:00
Asher eaea947318
Fix spdlog and node-pty in binary 2019-02-25 15:18:44 -06:00
Asher 1e55736c69
Move string replacements for node-pty to general 2019-02-25 11:53:02 -06:00
Asher 80d9baadc0
Attempt to require spdlog and node-pty 2019-02-22 18:57:19 -06:00
Asher 59eec534b6
Recursively create modules directory 2019-02-22 18:42:59 -06:00
Asher 75c8bd62f1
Fix forking in binary 2019-02-22 17:36:55 -06:00
Asher d9fc29fb0b
Pass data directory when forking with bootstrap 2019-02-22 16:31:21 -06:00
Asher 8b8bef015e
Add evaluation helpers (#33)
* Add evaluation helpers

* Make some helpers only available server-side

They don't make any sense on the client side.

* Fork the right thing
2019-02-22 15:56:29 -06:00
Kyle Carberry de3fbd689f
Fix local building for module extraction 2019-02-22 15:06:34 -06:00
Kyle Carberry 73d6b77614
Externalize spdlog .node module 2019-02-21 19:32:08 -06:00
Kyle Carberry 670003c3c9
Fix browser app 2019-02-21 18:07:52 -06:00
Asher 7edf797efc
Parse args sent through evaluation function
Previously they'd go in still stringified so we didn't get a chance to
convert buffer objects back to buffers, for example, making things like
`fs.write` write `[object Object]` to files.
2019-02-21 14:11:49 -06:00
Asher fe107802e3
Fix stringifying Uint8Array 2019-02-21 14:11:49 -06:00
Asher e4150de154
Fix handleExternalDrop event 2019-02-21 14:11:49 -06:00
Asher 227474c156
Fix storage path ending replacement 2019-02-21 14:11:49 -06:00
Kyle Carberry bc076ca30d
Fix custom paths resolve 2019-02-21 13:00:46 -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 bdd24081ab
Get version from vscode's package.json 2019-02-20 12:54:26 -06:00
Asher 6b5f50cddf
Handle shared process `error` event; add some logging 2019-02-19 18:02:01 -06:00
Asher 6708c8a5c8
Prevent shared process from loading client code
I think this happened when I added the trash code, since that's what
includes the client.
2019-02-19 17:58:17 -06:00
Asher 33c2d451c4
Fix incorrect options to node-pty 2019-02-19 16:46:42 -06:00
Asher ed50c64a77
Move and refactor net tests 2019-02-19 16:36:35 -06:00
Asher e6f8786df2
Move node-pty tests 2019-02-19 15:38:17 -06:00
Asher 3685e6555c
Move and refactor child_process tests 2019-02-19 15:30:56 -06:00