@@ -61,14 +61,21 @@ func main() {
6161 }
6262 phaseDone ()
6363
64+ url , err := url .Parse (wsInfo .GitpodHost )
65+ if err != nil {
66+ log .WithError (err ).Errorf ("failed to parse GitpodHost %s" , wsInfo .GitpodHost )
67+ return
68+ }
69+ domain := url .Hostname ()
70+
6471 if wsInfo .DebugWorkspaceType != supervisor .DebugWorkspaceType_noDebug {
6572 // TODO actually should be performed always
6673 // the better way would be to apply replacements during a workspace start
6774 // to aling with content in blobserve
68- if err := prepareWebWorkbenchMain (wsInfo ); err != nil {
75+ if err := prepareWebWorkbenchMain (domain ); err != nil {
6976 log .WithError (err ).Error ("failed to prepare web workbench" )
7077 }
71- if err := prepareServerMain (wsInfo ); err != nil {
78+ if err := prepareServerMain (domain ); err != nil {
7279 log .WithError (err ).Error ("failed to prepare server" )
7380 }
7481 }
@@ -132,8 +139,9 @@ func main() {
132139 args = append (args , os .Args [1 :]... )
133140 args = append (args , "--do-not-sync" )
134141 args = append (args , "--start-server" )
142+ cmdEnv := append (os .Environ (), fmt .Sprintf ("GITPOD_CODE_HOST=%s" , domain ))
135143 log .WithField ("cost" , time .Now ().Local ().Sub (startTime ).Milliseconds ()).Info ("starting server" )
136- if err := syscall .Exec (Code , append ([]string {"gitpod-code" }, args ... ), os . Environ () ); err != nil {
144+ if err := syscall .Exec (Code , append ([]string {"gitpod-code" }, args ... ), cmdEnv ); err != nil {
137145 log .WithError (err ).Error ("install ext and start code server failed" )
138146 }
139147}
@@ -246,18 +254,13 @@ func replaceOpenVSXUrl() error {
246254
247255// TODO it is be applied as well by blobserve if served for regular workspace location
248256// reconsider how to configure in all modes, i.e. regular, debug, dev
249- func prepareWebWorkbenchMain (wsInfo * supervisor. WorkspaceInfoResponse ) error {
257+ func prepareWebWorkbenchMain (domain string ) error {
250258 phase := phaseLogging ("prepareWebWorkbenchMain" )
251259 defer phase ()
252260 b , err := os .ReadFile (WebWorkbenchMainLocation )
253261 if err != nil {
254262 return errors .New ("failed to read " + WebWorkbenchMainLocation + ": " + err .Error ())
255263 }
256- url , err := url .Parse (wsInfo .GitpodHost )
257- if err != nil {
258- return errors .New ("failed to parse " + wsInfo .GitpodHost + ": " + err .Error ())
259- }
260- domain := url .Hostname ()
261264 b = bytes .ReplaceAll (b , []byte ("vscode-cdn.net" ), []byte (domain ))
262265 b = bytes .ReplaceAll (b , []byte ("ide.gitpod.io/code/markeplace.json" ), []byte (fmt .Sprintf ("ide.%s/code/marketplace.json" , domain )))
263266
@@ -269,18 +272,13 @@ func prepareWebWorkbenchMain(wsInfo *supervisor.WorkspaceInfoResponse) error {
269272 return nil
270273}
271274
272- func prepareServerMain (wsInfo * supervisor. WorkspaceInfoResponse ) error {
275+ func prepareServerMain (domain string ) error {
273276 phase := phaseLogging ("prepareServerMain" )
274277 defer phase ()
275278 b , err := os .ReadFile (ServerMainLocation )
276279 if err != nil {
277280 return errors .New ("failed to read " + ServerMainLocation + ": " + err .Error ())
278281 }
279- url , err := url .Parse (wsInfo .GitpodHost )
280- if err != nil {
281- return errors .New ("failed to parse " + wsInfo .GitpodHost + ": " + err .Error ())
282- }
283- domain := url .Hostname ()
284282 b = bytes .ReplaceAll (b , []byte ("https://*.vscode-cdn.net" ), []byte (fmt .Sprintf ("https://%s https://*.%s" , domain , domain )))
285283 if err := os .WriteFile (ServerMainLocation , b , 0644 ); err != nil {
286284 return errors .New ("failed to write " + ServerMainLocation + ": " + err .Error ())
0 commit comments