mirror of https://github.com/coder/coder.git
feat: link with protocol on shared ports (#12908)
This commit is contained in:
parent
2f2a395ba9
commit
acaa254099
|
@ -1165,6 +1165,7 @@ func Run(t *testing.T, appHostIsPrimary bool, factory DeploymentFactory) {
|
|||
appDetails := setupProxyTest(t, &DeploymentOptions{
|
||||
ServeHTTPS: true,
|
||||
})
|
||||
// using the fact that Apps.Port and Apps.PortHTTPS are the same port here
|
||||
port, err := strconv.ParseInt(appDetails.Apps.Port.AppSlugOrPort, 10, 32)
|
||||
require.NoError(t, err)
|
||||
_, err = appDetails.SDKClient.UpsertWorkspaceAgentPortShare(ctx, appDetails.Workspace.ID, codersdk.UpsertWorkspaceAgentPortShareRequest{
|
||||
|
@ -1178,7 +1179,7 @@ func Run(t *testing.T, appHostIsPrimary bool, factory DeploymentFactory) {
|
|||
publicAppClient := appDetails.AppClient(t)
|
||||
publicAppClient.SetSessionToken("")
|
||||
|
||||
resp, err := requestWithRetries(ctx, t, publicAppClient, http.MethodGet, appDetails.SubdomainAppURL(appDetails.Apps.Port).String(), nil)
|
||||
resp, err := requestWithRetries(ctx, t, publicAppClient, http.MethodGet, appDetails.SubdomainAppURL(appDetails.Apps.PortHTTPS).String(), nil)
|
||||
require.NoError(t, err)
|
||||
defer resp.Body.Close()
|
||||
require.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
|
|
|
@ -116,6 +116,7 @@ type Details struct {
|
|||
Authenticated App
|
||||
Public App
|
||||
Port App
|
||||
PortHTTPS App
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -247,6 +248,12 @@ func setupProxyTestWithFactory(t *testing.T, factory DeploymentFactory, opts *De
|
|||
AgentName: agnt.Name,
|
||||
AppSlugOrPort: strconv.Itoa(int(opts.port)),
|
||||
}
|
||||
details.Apps.PortHTTPS = App{
|
||||
Username: me.Username,
|
||||
WorkspaceName: workspace.Name,
|
||||
AgentName: agnt.Name,
|
||||
AppSlugOrPort: strconv.Itoa(int(opts.port)) + "s",
|
||||
}
|
||||
|
||||
return details
|
||||
}
|
||||
|
|
|
@ -90,9 +90,10 @@ func (a ApplicationURL) Path() string {
|
|||
//
|
||||
// Subdomains should be in the form:
|
||||
//
|
||||
// ({PREFIX}---)?{PORT/APP_SLUG}--{AGENT_NAME}--{WORKSPACE_NAME}--{USERNAME}
|
||||
// ({PREFIX}---)?{PORT{s?}/APP_SLUG}--{AGENT_NAME}--{WORKSPACE_NAME}--{USERNAME}
|
||||
// e.g.
|
||||
// https://8080--main--dev--dean.hi.c8s.io
|
||||
// https://8080s--main--dev--dean.hi.c8s.io
|
||||
// https://app--main--dev--dean.hi.c8s.io
|
||||
// https://prefix---8080--main--dev--dean.hi.c8s.io
|
||||
// https://prefix---app--main--dev--dean.hi.c8s.io
|
||||
|
|
|
@ -350,10 +350,6 @@ func (r Request) getDatabase(ctx context.Context, db database.Store) (*databaseR
|
|||
}
|
||||
// No port share found, so we keep default to owner.
|
||||
} else {
|
||||
if ps.Protocol == database.PortShareProtocolHttps {
|
||||
// Apply HTTPS protocol if specified.
|
||||
appURL = fmt.Sprintf("https://127.0.0.1:%d", portUint)
|
||||
}
|
||||
appSharingLevel = ps.ShareLevel
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -393,6 +393,7 @@ export const PortForwardPopoverView: FC<PortForwardPopoverViewProps> = ({
|
|||
agent.name,
|
||||
workspaceName,
|
||||
username,
|
||||
share.protocol === "https",
|
||||
);
|
||||
const label = share.port;
|
||||
return (
|
||||
|
|
|
@ -4,12 +4,12 @@ export const portForwardURL = (
|
|||
agentName: string,
|
||||
workspaceName: string,
|
||||
username: string,
|
||||
https = false,
|
||||
): string => {
|
||||
const { location } = window;
|
||||
const suffix = https ? "s" : "";
|
||||
|
||||
const subdomain = `${
|
||||
isNaN(port) ? 3000 : port
|
||||
}--${agentName}--${workspaceName}--${username}`;
|
||||
const subdomain = `${port}${suffix}--${agentName}--${workspaceName}--${username}`;
|
||||
return `${location.protocol}//${host}`.replace("*", subdomain);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue