Joe Previte
72b05cacac
refactor: create registerServiceWorker fn
2021-02-26 11:51:51 -07:00
G r e y
077af0511e
fix: Responsive Sign In Page ( #2770 )
2021-02-25 13:08:54 -06:00
Asher
47a05c998a
Gate wtfnode behind WTF_NODE env var
...
After thinking about it some more it's probably mostly only useful to
see the output when the tests are hanging. Otherwise there's a lot of
noise about Jest child processes and pipes.
2021-02-22 13:41:12 -07:00
Joe Previte
3fa460c244
refactor: create helpers.ts & add Cookie
2021-02-22 13:41:10 -07:00
Joe Previte
d0eece3d8f
refactor: add note to test.sh about --home
2021-02-22 13:41:10 -07:00
Joe Previte
b02d2fb3cc
feat: add cookie utils for e2e tests
2021-02-22 13:41:10 -07:00
Asher
2d8b785fb8
Fix health socket not getting client messages
...
Forgot to resume. Went ahead and did the same for the test plugin
although it only sends messages and doesn't receive any.
2021-02-16 15:01:46 -06:00
Asher
3fc556d4d5
Delegate authentication to plugins
...
Unfortunately since plugins can now override the root this is necessary
or just can't log in.
2021-02-12 16:50:23 -06:00
Asher
0abbc9789e
Allow plugins to register at the root
...
Unfortunately we have existing plugins with routes there which we cannot
move.
2021-02-12 15:19:26 -06:00
Asher
619934dc29
Authenticate plugin routes ( #2720 )
2021-02-12 14:56:39 -06:00
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
e4e0ac43b0
Don't load plugins in tests
...
This can affect the test behavior and results.
2021-02-09 15:39:57 -06:00
Asher
e098df0766
Fix code-server module not being provided in Jest
2021-02-09 15:23:08 -06:00
Asher
2879bd4c22
Add type alias for required modules
2021-02-09 13:09:41 -06:00
Asher
3226d50747
Rename papi to pluginApi
2021-02-09 13:09:40 -06:00
Asher
2fe3d57df3
Mount plugins before bodyParser
...
Otherwise it consumes the body and plugins won't be able to do things
like proxy POST requests.
2021-02-09 13:09:39 -06:00
Asher
c78f56b334
Expose HttpError to plugins
...
This will let them throw and show nice errors more easily.
2021-02-09 13:09:38 -06:00
Asher
22d194515a
Expose replaceTemplates to plugins
...
This is mainly so they can get relative paths in their HTML, in
particular code-server's static base so they can use the favicon and
service worker.
2021-02-09 13:09:37 -06:00
Asher
36aad9bdab
Move global express args definition
...
This way tests that import the http utilities but not the routes won't
error due to missing types.
2021-02-09 13:09:36 -06:00
Asher
5505959f7e
Expose websocket server to plugins
...
Same reasoning used when exposing Express.
2021-02-09 13:09:34 -06:00
Asher
b13db3124b
Add health websocket
...
This is used by some of our services.
2021-02-09 13:09:33 -06:00
Asher
f136a60093
Note that we immediately pause websockets
2021-02-09 13:09:32 -06:00
Asher
00cfd9bdf1
Add working directory to plugin config
2021-02-09 13:09:31 -06:00
Asher
3211eb1ce5
Expose log level to plugins
...
In case they need to map it to something else.
2021-02-09 13:09:30 -06:00
Asher
017b1cc633
Add deinit for plugins
2021-02-09 13:09:29 -06:00
Asher
3c6fac9ce4
Wait for inner process to exit
2021-02-09 13:09:28 -06:00
Asher
055e0ef9ec
Provide WsRouter to plugins
2021-02-09 13:09:27 -06:00
Asher
fb37473e72
Load only test plugin during tests
...
The other plugins in my path were causing the tests to fail.
2021-02-09 12:20:30 -06:00
Asher
f6b04c7c29
Expose proxy server to plugins
2021-02-09 12:19:39 -06:00
Asher
a8e928798b
Re-export express for plugins
2021-02-09 12:19:38 -06:00
Asher
5f1fab7d27
Re-export logger field for plugins
2021-02-09 12:19:36 -06:00
Joe Previte
719481e84e
refactor: add getPackageJson fn in constants
2021-02-08 16:21:30 -07:00
Anmol Sethi
05a0f213a7
Update proxy path passthrough documentation
...
Includes updated create-react-app docs.
Closes #2565
2021-02-05 11:44:38 -05:00
Anmol Sethi
c08e3bb06d
Add /absproxy to remove --proxy-path-passthrough
...
See https://github.com/cdr/code-server/issues/2222#issuecomment-765235938
Makes way more sense.
2021-02-05 11:44:34 -05:00
Anmol Sethi
58d72d53a1
routes/index.ts: register proxy routes before body-parser
...
Any json or urlencoded request bodies were being consumed by body-parser
before they could be proxied. That's why requests without Content-Type
were proxied correctly as body-parser would not consume their body.
This allows the http-proxy package to passthrough the request body correctly
in all instances.
Closes #2377
2021-02-01 11:08:40 -05:00
Anmol Sethi
f5cf3fd331
proxy.ts: Do not always rewrite redirects against the base path
...
This breaks --proxy-path-passthrough
However, we still need this when that code is disabled as many apps will
issue absolute redirects and expect the proxy to rewrite as appropriate.
e.g. Go's http.Redirect will rewrite relative redirects as absolute!
See https://golang.org/pkg/net/http/#Redirect
2021-02-01 11:08:40 -05:00
Joe Previte
646ee3ad7f
refactor: correct type signature in app.ts
2021-01-21 10:11:56 -07:00
Joe Previte
6bf51caa17
fix(app.ts): resolve with server
2021-01-21 10:11:10 -07:00
Joe Previte
f13ba9401b
fix(TS error): add void to promise in util
2021-01-21 10:11:10 -07:00
Anmol Sethi
28e98c0ee0
Merge pull request #2563 from cdr/proxy-path-passthrough-0bb9
...
pathProxy.ts: Implement --proxy-path-passthrough
2021-01-20 02:44:29 -05:00
Anmol Sethi
c32d8b155f
heart.ts: Fix leak when server closes
...
This had me very confused for quite a while until I did a binary search
inspection on route/index.ts. Only with the heart.beat line commented
out did my tests pass without leaking.
They weren't leaking fds but just this heartbeat timer and node of
course prints just fds that are active when it detects some sort of leak
I guess and that made the whole thing very confusing. These fds are not
leaked and will close when node's event loop detects there are no more
callbacks to run.
no of handles 3
tcp stream {
fd: 20,
readable: false,
writable: true,
address: {},
serverAddr: null
}
tcp stream {
fd: 22,
readable: false,
writable: true,
address: {},
serverAddr: null
}
tcp stream {
fd: 23,
readable: true,
writable: false,
address: {},
serverAddr: null
}
It kept printing the above text again and again for 60s and then the
test binary times out I think. I'm not sure if it was node printing the
stuff above or if it was a mocha thing. But it was really confusing...
cc @code-asher for thoughts on what was going on.
edit: It was the leaked-handles import in socket.test.ts!!!
Not sure if we should keep it, this was really confusing and misleading.
2021-01-20 02:06:44 -05:00
Anmol Sethi
5c06646f58
Formatting and linting fixes
2021-01-20 02:06:44 -05:00
Anmol Sethi
240c8e266e
test: Implement integration.ts for near full stack integration testing
2021-01-20 02:06:44 -05:00
Anmol Sethi
d3074278ca
app.ts: Fix createApp to log all http server errors
...
cc @code-asher
2021-01-20 02:06:43 -05:00
Anmol Sethi
ba4a24809c
routes/index.ts: Correctly register wsErrorHandler
...
express requires all 4 arguments to be declared for a error handler.
It's very unfortunate that our types do not handle this.
2021-01-20 02:06:43 -05:00
Anmol Sethi
f169e3ac66
pathProxy.ts: Implement --proxy-path-passthrough
...
Closes #2222
2021-01-20 02:06:43 -05:00
Anmol Sethi
d234ddc1e1
vscode.ts: Fix close current folder
...
Fixes VscodeProvider to correctly obey the ew parameter.
Based on changes by @rdbeach. See the previous commit.
2021-01-18 11:29:18 -05:00
Robert Beach
28c7340608
Fix Close Folder/Workspace ( #2532 )
...
When you choose to close the current folder, it doesn't close properly
because the lastVisiited setting is still use. This fixes that.
2021-01-18 11:28:29 -05:00
Anmol Sethi
f15580b28a
favicon: Add dark mode support
...
Closes #2538
Works as expected on latest Firefox and Chromium.
2021-01-11 12:54:25 -05:00
Anmol Sethi
693fdbefb4
browser: Add favicon.afdesign
...
It requires git-lfs to pull down if you want to adjust the favicon and
also the affinity designer software available only on Windows and Mac.
Might be a good idea to switch to Figma at some point and commit a
.fig file.
2021-01-08 23:03:34 -05:00
Asher
f763319bc3
Merge pull request #2160 from cdr/github-auth
...
Fix GitHub auth
2020-12-18 10:54:51 -08:00
Anmol Sethi
cb446666fa
Merge pull request #2487 from cdr/proxy-docs-86d4
...
proxy-agent: Use proxy-from-env and add docs
2020-12-18 13:06:47 -05:00
Asher
5f7f7f1a92
Simplify query concatenation in URL callback
...
Cases in URLs like ?&a=b or ?a=b& appear to be handled just fine.
2020-12-18 11:31:25 -06:00
Asher
d14c2e5bb7
Swap negative check for positive check
2020-12-18 11:21:06 -06:00
Anmol Sethi
60c270aef5
cli: hashedPassword -> hashed-password ( #2454 )
...
Capital letters in the CLI are evil.
cc @code-asher
2020-12-18 12:20:38 -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
94b4ba131e
proxy_agent: Implement $HTTPS_PROXY
...
Just convention, see https://golang.org/pkg/net/http/#ProxyFromEnvironment
2020-12-18 10:39:31 -05:00
Anmol Sethi
ecb4d07364
proxy_agent: Improve documentation
2020-12-18 10:38:46 -05:00
Anmol Sethi
3efd515cdf
proxy_agent: Fix very embarrassing mistake
2020-12-18 04:24:27 -05:00
Asher
58c1be57fa
Implement callback endpoints
...
VS Code uses these during the authentication flow.
2020-12-17 15:49:36 -06:00
Asher
f8b782bd68
Move ignore-last-opened to ipc.d.ts
...
This is so it can be used in VS Code. Don't tell anyone but I forgot to
run `yarn ci`.
2020-12-15 11:14:21 -06:00
Joe Previte
cc584f86b9
Merge pull request #2435 from cdr/issue-2328-customize-go-home
...
cli: add --home flag to customize "Go Home" button
2020-12-15 09:52:39 -07:00
JammSpread
f4ca41329a
Add --ignore-last-opened option ( #2434 )
...
This allows bypassing the last opened behavior for certain cases where that's not desirable.
Fixes #1951
2020-12-15 10:22:58 -06:00
Joe Previte
8daba6ca80
feat: add home as a cli option
2020-12-14 16:23:35 -07:00
Anmol Sethi
244afa402e
routes: Redirect from /login when auth is disabled ( #2456 )
...
Sometimes I start with auth but then disable. Now I can just reload the
login page in my browser to be greeted with code-server.
2020-12-14 12:33:36 -05:00
Anmol Sethi
affb92f281
cli: Show beta flags in help output
...
Looks like
```
-r --reuse-window Force to open a file or folder in an already opened window.
-vvv --verbose Enable verbose logging.
--link (beta) Securely bind code-server via Coder Cloud with the passed name. You'll get a URL like
https://myname.coder-cloud.com at which you can easily access your code-server instance.
Authorization is done via GitHub.
```
Based on commits by @JammSpread in #2405
Closes #2396
2020-12-08 19:00:33 -05:00
Anmol Sethi
6c693000eb
Merge pull request #2405 from JammSpread/master
...
Modify --link arg and README (Cdr Cloud)
2020-12-08 18:30:34 -05:00
SPGoding
1dd7e4b4e1
Add hashedPassword config ( #2409 )
...
Resolve #2225 .
2020-12-08 14:54:17 -06:00
JK
4d295e3195
Modify link arg and its desc to not be beta
2020-12-05 01:23:48 +00:00
Anmol Sethi
eb4864f9a5
Merge pull request #2400 from cdr/HTTP_PROXY-7e1f
...
Use proxy-agent to support $HTTP_PROXY
2020-12-04 16:12:45 -05:00
Anmol Sethi
58bbf2584a
proxy_agent.ts: Document why there is no $HTTPS_PROXY support
2020-12-04 13:52:52 -05:00
Anmol Sethi
a021bf5d35
Fix CI
2020-12-04 13:52:52 -05:00
Anmol Sethi
6738cff544
media: Improve icon size ( #2401 )
...
See https://github.com/cdr/code-server/pull/2383#issuecomment-738024951
2020-12-04 11:31:45 -05:00
Anmol Sethi
a72c642125
proxy_agent.ts: Document that no other code passes in explicit agent
...
From my inspection as of this date anyway.
2020-12-04 02:34:43 -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
cee88ad637
update.ts: Fix response memory leak
2020-12-04 02:34:43 -05:00
Anmol Sethi
67470f0254
node: coder-cloud -> coder_cloud
...
File names should not have dashes.
2020-12-04 02:34:43 -05:00
JK
04357ddd88
Remove logs mentioning --link being beta
2020-12-04 01:50:47 +00:00
JK
0d53441950
Add "disabled by --link" note to certificate arg
2020-12-04 01:45:20 +00:00
Anmol Sethi
7e1bb8fc96
browser: Fix HTML formatting
2020-11-30 19:16:00 -05:00
Anmol Sethi
ebe4d7ef29
Revamp icons ( #2383 )
...
I took our website's SVG favicon and plopped it on a round
white rectangle in Affinity Designer. The I exported it as an SVG and
wrote a script that uses imagemagick to convert to the various sizes and
formats we need.
Closes #2307
2020-11-30 19:11:26 -05:00
Anmol Sethi
cc18175ce3
cli: Add --disable-update-check flag
...
Closes #2361
2020-11-30 15:30:06 -05:00
Anmol Sethi
be37821ab9
update.ts: Simplify comparison
2020-11-24 12:42:26 -05:00
Anmol Sethi
fb63c0cd22
vscode: Show notification when upgrade is available
...
And link to the release notes.
2020-11-24 12:13:21 -05:00
Asher
fb835838db
Remove semver-umd link
...
This is included in the bundle now.
2020-11-20 15:35:18 -06:00
Anmol Sethi
b540737b10
Merge pull request #2339 from cdr/ios-input-3cf7
...
login.css: Disable webkit appearance for input elements
2020-11-19 11:31:07 -05:00
Asher
4380356e0c
Merge pull request #2334 from cdr/wrappers
...
Separate process wrappers and pass arguments
2020-11-19 10:28:54 -06:00
Asher
72caafe8b0
Fix service worker not loading ( #2335 )
...
I removed this under the impression the default was to allow it anywhere
but that's not the case. Since the service worker was already registered
in my browser I never got the error during testing.
2020-11-19 10:18:15 -06:00
Anmol Sethi
2dc7863ec3
login.css: Disable webkit appearance for input elements
...
Not sure why Safari does these things...
Closes #2247
2020-11-19 10:43:26 -05:00
Anmol Sethi
30100caf0c
Revert "login.css: Fix button styling on iOS"
...
This reverts commit f79bb210ec
.
2020-11-19 10:41:37 -05:00
Jacky
f79bb210ec
login.css: Fix button styling on iOS
2020-11-19 10:37:51 -05:00
Asher
182791319a
Fix tar authentication
...
It was checking the request path but for tars the path is in the query
variable so the request path is irrelevant.
2020-11-18 17:15:53 -06:00
Asher
95ef6dbf2f
Remove unused wrapper options
...
Also move our memory default to the beginning of NODE_OPTIONS so it can
be overidden. The version of the flag with dashes seems to be the more
correct one now so use that instead of underscores.
Related: #2113 .
2020-11-18 13:23:06 -06:00
Asher
016daf2fdd
Parse arguments once
...
Fixes #2316 .
2020-11-18 13:01:46 -06:00
Asher
247c4ec776
Move onMessage so it can be used in the wrappers
2020-11-18 12:28:43 -06:00
Asher
d55e06936b
Split child and parent wrappers
...
I think having them combined and relying on if statements was getting
confusing especially if we want to add additional messages with
different payloads (which will soon be the case).
2020-11-18 12:28:42 -06:00
Asher
2a3608df53
Skip heartbeat on /healthz endpoint ( #2333 )
...
I managed to lose this in the rewrite.
Fixes #2327 .
2020-11-18 12:19:08 -06:00
piousdeer
c6062c3d0a
Fix log message ( #2331 )
2020-11-18 10:41:32 -06:00
Anmol Sethi
9917da068a
v3.7.0
2020-11-16 11:11:50 -05:00
Anmol Sethi
40a7c11ce3
node/routes: Fix error handling
...
We should always send HTML if the user agent expects it.
If they do not, they should clearly indicate such via the Accept header.
Closes #2297
2020-11-13 18:44:28 -05:00
Asher
6f14b8b8dd
Add separate handler for error
...
Feels like it parallels better with the other handlers.
2020-11-12 12:07:45 -06:00
Asher
b73ea2fea2
Unbind message handler itself after getting message
...
Also switch `once` to `on` since we `off` them later anyway so no point
in making Node do it twice.
2020-11-12 12:03:28 -06:00
Asher
e1702a1d21
Merge branch master into code-asher/ch1385
2020-11-12 11:52:02 -06:00
Asher
5499a3d125
Use baseUrl when redirecting from domain proxy
...
This will make the route more robust since it'll work under more than
just the root.
2020-11-12 11:23:52 -06:00
Asher
31b67062b0
Remove <type> from onMessage
...
Turns out that while Typescript can't infer the callback return type
from it, Typescript can do the opposite and infer it from the callback
return type.
2020-11-12 11:17:45 -06:00
Asher
72931edcf0
Fix cleanup after getting message from vscode
2020-11-12 11:16:21 -06:00
Asher
79478eb89f
Clarify some points around the cookie domain
...
Also add a check that the domain has a dot. This covers the localhost
case as well, so remove that.
2020-11-10 18:53:38 -06:00
Asher
4574593664
Refactor vscode init to use async
...
Hopefully is a bit easier to read.
2020-11-10 18:21:20 -06:00
Asher
71850e312b
Avoid setting ?to=/
...
That's the default so it's extra visual noise.
2020-11-10 18:14:18 -06:00
Asher
b8340a2ae9
Close sockets correctly
2020-11-10 17:55:04 -06:00
Asher
f706039a9d
Re-add TLS socket proxy
2020-11-10 17:55:03 -06:00
Asher
de4949571c
Document getFirstPath better
2020-11-10 17:02:39 -06:00
Asher
0a01338edd
Deduplicate child process message dance
2020-11-10 16:36:46 -06:00
Anmol Sethi
fe399ff0fe
Fix formatting
2020-11-06 14:47:08 -05:00
Anmol Sethi
277211c4ce
plugin: Make init and applications callbacks optional
2020-11-06 14:47:08 -05:00
Anmol Sethi
9453f891df
plugin.ts: Fix usage of routerPath in mount
2020-11-06 10:13:01 -05:00
Anmol Sethi
14f408a837
plugin: Plugin modules now export a single top level identifier
...
Makes typing much easier. Addresse's Will's last comment.
2020-11-06 10:13:01 -05:00
Anmol Sethi
8a8159c683
plugin: More review fixes
...
Next commit will address Will's comments about the typings being weird.
2020-11-06 10:13:01 -05:00
Anmol Sethi
706bc23f04
plugin: Fixes for CI
2020-11-06 10:13:01 -05:00
Anmol Sethi
af73b96313
routes/apps.ts: Add example output
2020-11-06 10:12:47 -05:00
Anmol Sethi
2a13d003d3
plugin.ts: Add homepageURL to plugin and application
2020-11-06 10:12:47 -05:00
Anmol Sethi
687094802e
plugin.ts: Make application endpoint paths absolute
2020-11-06 10:12:46 -05:00
Anmol Sethi
139a28e0ea
plugin.ts: Describe private counterpart functions
...
Addresses Will's comments.
2020-11-06 10:12:46 -05:00
Anmol Sethi
e03bbe3149
routes/apps.ts: Implement /api/applications endpoint
2020-11-06 10:12:46 -05:00
Anmol Sethi
afff86ae9c
plugin.ts: Adjust to implement pluginapi.d.ts correctly
2020-11-06 10:12:46 -05:00
Anmol Sethi
fed545e67d
plugin.d.ts -> pluginapi.d.ts
...
More clear.
2020-11-06 10:12:46 -05:00
Anmol Sethi
8d3a7721fe
plugin.d.ts: Document plugin priority correctly
2020-11-06 10:12:46 -05:00
Anmol Sethi
75e52a3774
plugin.ts: Fixes for @code-asher
2020-11-06 10:12:46 -05:00
Anmol Sethi
f4d7f00033
plugin.ts: Fixes for @wbobeirne
2020-11-06 10:12:46 -05:00
Anmol Sethi
30d2962e21
src/node/plugin.ts: Warn on duplicate plugin and only load first
2020-11-06 10:12:46 -05:00
Anmol Sethi
82e8a00a0d
Fix CI
2020-11-06 10:12:46 -05:00
Anmol Sethi
e08a55d44a
src/node/plugin.ts: Implement new plugin API
2020-11-06 10:12:45 -05:00
Asher
959497067c
Document HttpError
...
Also type the status.
2020-11-05 17:07:58 -06:00
Asher
f7076247f9
Move domain proxy to routes
...
This matches better with the other routes.
Also add a missing authentication check to the path proxy web socket.
2020-11-05 17:07:32 -06:00
Asher
f6c4434191
Tweak proxy fallthrough behavior
...
It will now redirect all HTML requests. Also it avoids req.accepts since
that's always truthy.
2020-11-05 16:49:30 -06:00
Asher
cb991a9143
Handle errors for JSON requests
...
Previously it would have just given them the error HTML.
2020-11-05 15:19:56 -06:00
Asher
3f1750cf83
Fix destroying response in update again
...
I added another reject that doesn't destroy the response.
2020-11-05 15:08:10 -06:00
Asher
7b2752a62c
Move websocket routes into a separate app
...
This is mostly so we don't have to do any wacky patching but it also
makes it so we don't have to keep checking if the request is a web
socket request every time we add middleware.
2020-11-05 15:08:09 -06:00
Asher
9e09c1f92b
Upgrade to Express 5
...
Now async routes are handled!
2020-11-05 15:08:08 -06:00
Asher
8252c372af
Provide a way to tell when event handlers are finished
...
This lets us actually wait for disposal before a graceful exit.
2020-11-05 15:08:07 -06:00
Asher
396af23842
Kill VS Code when process exits
...
This is to ensure it doesn't hang around.
2020-11-04 17:07:41 -06:00
Asher
34225e2bdf
Use ensureAuthenticated as middleware
2020-11-04 17:07:40 -06:00
Asher
476379a77e
Fix cookie domain
...
Had double Domain=
2020-11-04 17:07:39 -06:00
Asher
210fc049c4
Document VS Code endpoints
2020-11-04 17:07:39 -06:00
Asher
e5c8e0aad1
Remove useless ||
2020-11-04 17:07:38 -06:00
Asher
c5ce365482
Use query variable to force update check
2020-11-04 17:07:37 -06:00
Asher
a653b93ce2
Include protocol on printed address
...
This makes it clickable from the terminal.
2020-11-04 17:07:36 -06:00
Asher
e2c35facdb
Remove invalid comment on maybeProxy
...
It no longer handles authentication.
2020-11-04 17:07:35 -06:00
Asher
75b93f9dc5
Fix bind address priority
...
Broke when converting to a loop.
2020-11-04 17:07:24 -06:00