Commit Graph

128 Commits

Author SHA1 Message Date
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
Michael c471babc69 Use a timing-safe equality check for passwords (#133) 2019-03-09 09:24:36 -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
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 31518e9754
Make ripgrep executable on extract 2019-03-05 00:42:02 +00: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 185c811354
Update default port to 8443 2019-03-01 16:55:31 -06:00
Kyle Carberry 06855adaa5
Create working directory if it doesn't exist 2019-03-01 10:33:16 -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 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 71b7bbf99a
Check EISDIR for Mac when performing mkdir 2019-02-26 18:23:33 -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 04e02bdb08
Fix extra CSS being included on the client 2019-02-26 14:23:01 -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 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 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 6b5f50cddf
Handle shared process `error` event; add some logging 2019-02-19 18:02:01 -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 73762017c8
Fix failure due to included files when using vscode's log level enum 2019-02-07 14:17:14 -06:00
Asher e4ff8e1c63
Set shared process log level 2019-02-07 13:50:43 -06:00
Asher 86d70ec790
Add constants file 2019-02-07 13:11:01 -06:00
Asher 81f48b8b06
Add trash module 2019-02-07 11:05:17 -06:00
Asher 499798fc17
Wrap shared process in retry 2019-02-06 18:11:31 -06:00
Asher f034aee26e
Remove unused isCi var 2019-02-06 12:05:48 -06:00
Asher 972806b210
Remove no longer used and commented out VSCODE_ALLOW_IO line 2019-02-06 12:02:18 -06:00
Asher 559bdbc147
Mo re spa ci ng 2019-02-06 12:00:51 -06:00
Asher 33b4c96a27
Spa cing 2019-02-06 12:00:01 -06:00
Asher 588da0443c
Some cleanup
- Use whateverEmitter.event for the onWhatever methods.
- Add readonly to a bunch of things.
- Remove some redundancy in types.
- Move initializations out of the constructor and into the declarations
  where it was reasonable to do so.
- Disable a few no-any violations.
2019-02-06 11:53:23 -06:00
Asher e770920be0
Remove block padding (blank lines)
Also made a rule for it.
2019-02-05 18:09:04 -06:00
Asher 70ad911641
vscode-online -> vscode-remote 2019-02-05 15:26:57 -06:00
Kyle Carberry 797efe72fd
Fix loading within the CLI (#27)
* Fix loading within the CLI

* Remove app

* Remove promise handle

* Fix requested changes
2019-02-05 11:16:09 -06:00
Asher ebe5e1b1a9
Uploader online (#26) 2019-02-05 11:16:02 -06:00
Asher 3a88ae5fb2
Get search working and clean up disconnected client (#23)
* Use ipc instead of pipe

* Run callback passed to child process's send method

* It also returns true

* Correct send signature

* Kill processes when client disconnects
2019-02-05 11:15:59 -06:00
Kyle Carberry b4798d1a48
Fix syntax highlighting, process spawning, extensions, terminals (#22)
* Fix syntax highlighting, process spawning, extensions, terminals

* Replace colons in toISOString

* Move pathSets included in task
2019-02-05 11:15:59 -06:00
Kyle Carberry 9b1a635d63
Add static file serve for resources inside of data-directory (#19) 2019-02-05 11:15:59 -06:00
Asher c6d35d098a
Extension host (#20)
* Implement net.Server

* Move Socket class into Client

This way we don't need to expose anything.

* Remove some unused imports

* Pass environment variables to bootstrap fork

* Add debug log for when socket disconnects from server

* Use VSCODE_ALLOW_IO for shared process only

* Extension host can send messages now

* Support callback for logging

This lets us do potentially expensive operations which will only be
performed if the log level is sufficiently low.

* Stop extension host from committing suicide

* Blank line

* Add static serve (#21)

* Add extension URLs

* how did i remove this

* Fix writing an empty string

* Implement dialogs on window service
2019-02-05 11:15:58 -06:00
Asher 536ded2cc5
Add some debug logging 2019-02-05 11:15:58 -06:00
Asher 5cb657b415
Get forked watcher & searcher working 2019-02-05 11:15:56 -06:00
Kyle Carberry 4cd6bed8d2
Add stdio sources (#17) 2019-02-05 11:15:56 -06:00
Asher 704a0defc9
Centralize fork logging 2019-02-05 11:15:55 -06:00
Asher 8a789ac957
Get boostrap stuff forking
They don't run yet but seem to be forking correctly now.
2019-02-05 11:15:55 -06:00
Asher cba8196c19
Propagate log level to client 2019-02-05 11:15:54 -06:00
Asher 777f460957
Use options instead of separate tsconfig
Negates the need to duplicate the HappyPack config.
2019-02-05 11:15:53 -06:00
Asher e7d7ff3733
Add some debug logging to the shared process 2019-02-05 11:15:53 -06:00
Asher a33d69232a
Add log level to logger
This is mostly so I can avoid the request logging which pushes out other
logs pretty fast.
2019-02-05 11:15:52 -06:00
Asher 36a2d26148
Get shared process socket path to the environment service 2019-02-05 11:15:52 -06:00
Asher 4eb9f87217
Fix server crashing when sending data on closing/closed socket 2019-02-05 11:15:51 -06:00
Asher 811260cc80
Hook up shared process sorta 2019-02-05 11:15:51 -06:00
Kyle Carberry d827015b40
Add shared process active message (#16)
* Add shared process active message

* Add client function for calling bootstrap fork
2019-02-05 11:15:50 -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
Kyle Carberry da27bc0f04
Document client functions 2019-02-05 11:15:47 -06:00
Kyle Carberry d61873e8da
Add commands (#2)
* Add remote command execution

* Add tests for environment variables and resize

* Fix tab spacing, add newlines

* Remove extra newline

* Add fork
2019-02-05 11:15:47 -06:00
Kyle Carberry 0e7e8086d4
Add test for string with wacky chars 2019-02-05 11:15:45 -06:00
Kyle Carberry 984420d181
Convert indentation to tabs 2019-02-05 11:15:44 -06:00
Kyle Carberry 8ed940ac09
Add test for promises 2019-02-05 11:15:44 -06:00
Kyle Carberry cff746db32
Add evaluate 2019-02-05 11:15:44 -06:00