@@ -2,13 +2,13 @@ import { logger } from "@coder/logger"
22import cookieParser from "cookie-parser"
33import * as express from "express"
44import { promises as fs } from "fs"
5- import http from "http"
65import * as path from "path"
76import * as tls from "tls"
87import * as pluginapi from "../../../typings/pluginapi"
98import { Disposable } from "../../common/emitter"
109import { HttpCode , HttpError } from "../../common/http"
1110import { plural } from "../../common/util"
11+ import { App } from "../app"
1212import { AuthType , DefaultedArgs } from "../cli"
1313import { commit , isDevMode , rootPath } from "../constants"
1414import { Heart } from "../heart"
@@ -28,15 +28,10 @@ import { createVSServerRouter, VSServerResult } from "./vscode"
2828/**
2929 * Register all routes and middleware.
3030 */
31- export const register = async (
32- app : express . Express ,
33- wsApp : express . Express ,
34- server : http . Server ,
35- args : DefaultedArgs ,
36- ) : Promise < Disposable [ "dispose" ] > => {
31+ export const register = async ( app : App , args : DefaultedArgs ) : Promise < Disposable [ "dispose" ] > => {
3732 const heart = new Heart ( path . join ( paths . data , "heartbeat" ) , async ( ) => {
3833 return new Promise ( ( resolve , reject ) => {
39- server . getConnections ( ( error , count ) => {
34+ app . server . getConnections ( ( error , count ) => {
4035 if ( error ) {
4136 return reject ( error )
4237 }
@@ -46,11 +41,11 @@ export const register = async (
4641 } )
4742 } )
4843
49- app . disable ( "x-powered-by" )
50- wsApp . disable ( "x-powered-by" )
44+ app . router . disable ( "x-powered-by" )
45+ app . wsRouter . disable ( "x-powered-by" )
5146
52- app . use ( cookieParser ( ) )
53- wsApp . use ( cookieParser ( ) )
47+ app . router . use ( cookieParser ( ) )
48+ app . wsRouter . use ( cookieParser ( ) )
5449
5550 const common : express . RequestHandler = ( req , _ , next ) => {
5651 // /healthz|/healthz/ needs to be excluded otherwise health checks will make
@@ -66,10 +61,10 @@ export const register = async (
6661 next ( )
6762 }
6863
69- app . use ( common )
70- wsApp . use ( common )
64+ app . router . use ( common )
65+ app . wsRouter . use ( common )
7166
72- app . use ( async ( req , res , next ) => {
67+ app . router . use ( async ( req , res , next ) => {
7368 // If we're handling TLS ensure all requests are redirected to HTTPS.
7469 // TODO: This does *NOT* work if you have a base path since to specify the
7570 // protocol we need to specify the whole path.
@@ -87,24 +82,24 @@ export const register = async (
8782 next ( )
8883 } )
8984
90- app . use ( "/" , domainProxy . router )
91- wsApp . use ( "/" , domainProxy . wsRouter . router )
85+ app . router . use ( "/" , domainProxy . router )
86+ app . wsRouter . use ( "/" , domainProxy . wsRouter . router )
9287
93- app . all ( "/proxy/(:port)(/*)?" , ( req , res ) => {
88+ app . router . all ( "/proxy/(:port)(/*)?" , ( req , res ) => {
9489 pathProxy . proxy ( req , res )
9590 } )
96- wsApp . get ( "/proxy/(:port)(/*)?" , async ( req ) => {
91+ app . wsRouter . get ( "/proxy/(:port)(/*)?" , async ( req ) => {
9792 await pathProxy . wsProxy ( req as pluginapi . WebsocketRequest )
9893 } )
9994 // These two routes pass through the path directly.
10095 // So the proxied app must be aware it is running
10196 // under /absproxy/<someport>/
102- app . all ( "/absproxy/(:port)(/*)?" , ( req , res ) => {
97+ app . router . all ( "/absproxy/(:port)(/*)?" , ( req , res ) => {
10398 pathProxy . proxy ( req , res , {
10499 passthroughPath : true ,
105100 } )
106101 } )
107- wsApp . get ( "/absproxy/(:port)(/*)?" , async ( req ) => {
102+ app . wsRouter . get ( "/absproxy/(:port)(/*)?" , async ( req ) => {
108103 await pathProxy . wsProxy ( req as pluginapi . WebsocketRequest , {
109104 passthroughPath : true ,
110105 } )
@@ -115,40 +110,40 @@ export const register = async (
115110 const workingDir = args . _ && args . _ . length > 0 ? path . resolve ( args . _ [ args . _ . length - 1 ] ) : undefined
116111 pluginApi = new PluginAPI ( logger , process . env . CS_PLUGIN , process . env . CS_PLUGIN_PATH , workingDir )
117112 await pluginApi . loadPlugins ( )
118- pluginApi . mount ( app , wsApp )
119- app . use ( "/api/applications" , ensureAuthenticated , apps . router ( pluginApi ) )
113+ pluginApi . mount ( app . router , app . wsRouter )
114+ app . router . use ( "/api/applications" , ensureAuthenticated , apps . router ( pluginApi ) )
120115 }
121116
122- app . use ( express . json ( ) )
123- app . use ( express . urlencoded ( { extended : true } ) )
117+ app . router . use ( express . json ( ) )
118+ app . router . use ( express . urlencoded ( { extended : true } ) )
124119
125- app . use (
120+ app . router . use (
126121 "/_static" ,
127122 express . static ( rootPath , {
128123 cacheControl : commit !== "development" ,
129124 } ) ,
130125 )
131126
132- app . use ( "/healthz" , health . router )
133- wsApp . use ( "/healthz" , health . wsRouter . router )
127+ app . router . use ( "/healthz" , health . router )
128+ app . wsRouter . use ( "/healthz" , health . wsRouter . router )
134129
135130 if ( args . auth === AuthType . Password ) {
136- app . use ( "/login" , login . router )
137- app . use ( "/logout" , logout . router )
131+ app . router . use ( "/login" , login . router )
132+ app . router . use ( "/logout" , logout . router )
138133 } else {
139- app . all ( "/login" , ( req , res ) => redirect ( req , res , "/" , { } ) )
140- app . all ( "/logout" , ( req , res ) => redirect ( req , res , "/" , { } ) )
134+ app . router . all ( "/login" , ( req , res ) => redirect ( req , res , "/" , { } ) )
135+ app . router . all ( "/logout" , ( req , res ) => redirect ( req , res , "/" , { } ) )
141136 }
142137
143- app . use ( "/update" , update . router )
138+ app . router . use ( "/update" , update . router )
144139
145140 let vscode : VSServerResult
146141 try {
147142 vscode = await createVSServerRouter ( args )
148- app . use ( "/" , vscode . router )
149- wsApp . use ( "/" , vscode . wsRouter . router )
150- app . use ( "/vscode" , vscode . router )
151- wsApp . use ( "/vscode" , vscode . wsRouter . router )
143+ app . router . use ( "/" , vscode . router )
144+ app . wsRouter . use ( "/" , vscode . wsRouter . router )
145+ app . router . use ( "/vscode" , vscode . router )
146+ app . wsRouter . use ( "/vscode" , vscode . wsRouter . router )
152147 } catch ( error : any ) {
153148 if ( isDevMode ) {
154149 logger . warn ( error )
@@ -158,12 +153,12 @@ export const register = async (
158153 }
159154 }
160155
161- app . use ( ( ) => {
156+ app . router . use ( ( ) => {
162157 throw new HttpError ( "Not Found" , HttpCode . NotFound )
163158 } )
164159
165- app . use ( errorHandler )
166- wsApp . use ( wsErrorHandler )
160+ app . router . use ( errorHandler )
161+ app . wsRouter . use ( wsErrorHandler )
167162
168163 return ( ) => {
169164 heart . dispose ( )
0 commit comments