mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-01-17 20:51:55 +01:00
feat: relax user requirement for canonical name
Previously, the canonical name required a user as a part of it. This change makes it possible to omit the username if desired. In this case, the connection will default to your current user.
This commit is contained in:
parent
af22fd38af
commit
2cc86f39d6
@ -125,7 +125,7 @@ var SetVarScopes = []SetVarScope{
|
||||
{ScopeName: "remote", VarNames: []string{}},
|
||||
}
|
||||
|
||||
var userHostRe = regexp.MustCompile(`^(sudo@)?([a-zA-Z0-9][a-zA-Z0-9._@\\-]*)@([a-z0-9][a-z0-9.-]*)(?::([0-9]+))?$`)
|
||||
var userHostRe = regexp.MustCompile(`^(sudo@)?([a-zA-Z0-9][a-zA-Z0-9._@\\-]*@)?([a-z0-9][a-z0-9.-]*)(?::([0-9]+))?$`)
|
||||
var remoteAliasRe = regexp.MustCompile("^[a-zA-Z0-9][a-zA-Z0-9._-]*$")
|
||||
var genericNameRe = regexp.MustCompile("^[a-zA-Z][a-zA-Z0-9_ .()<>,/\"'\\[\\]{}=+$@!*-]*$")
|
||||
var rendererRe = regexp.MustCompile("^[a-zA-Z][a-zA-Z0-9_.:-]*$")
|
||||
@ -1790,6 +1790,7 @@ func parseRemoteEditArgs(isNew bool, pk *scpacket.FeCommandPacketType, isLocal b
|
||||
return nil, fmt.Errorf("invalid format of user@host argument")
|
||||
}
|
||||
sudoStr, remoteUser, remoteHost, remotePortStr := m[1], m[2], m[3], m[4]
|
||||
remoteUser = strings.Trim(remoteUser, "@")
|
||||
var uhPort int
|
||||
if remotePortStr != "" {
|
||||
var err error
|
||||
@ -1831,7 +1832,11 @@ func parseRemoteEditArgs(isNew bool, pk *scpacket.FeCommandPacketType, isLocal b
|
||||
return nil, fmt.Errorf("invalid port argument, \"%d\" is not in the range of 1 to 65535", portVal)
|
||||
}
|
||||
sshOpts.SSHPort = portVal
|
||||
canonicalName = remoteUser + "@" + remoteHost
|
||||
if remoteUser == "" {
|
||||
canonicalName = remoteHost
|
||||
} else {
|
||||
canonicalName = remoteUser + "@" + remoteHost
|
||||
}
|
||||
if portVal != 0 && portVal != 22 {
|
||||
canonicalName = canonicalName + ":" + strconv.Itoa(portVal)
|
||||
}
|
||||
@ -2130,17 +2135,17 @@ func createSshImportSummary(changeList map[string][]string) string {
|
||||
|
||||
func NewHostInfo(hostName string) (*HostInfoType, error) {
|
||||
userName, _ := ssh_config.GetStrict(hostName, "User")
|
||||
if userName == "" {
|
||||
// we cannot store a remote with a missing user
|
||||
// in the current setup
|
||||
return nil, fmt.Errorf("could not parse \"%s\" - no User in config\n", hostName)
|
||||
var canonicalName string
|
||||
if userName != "" {
|
||||
canonicalName = userName + "@" + hostName
|
||||
} else {
|
||||
canonicalName = hostName
|
||||
}
|
||||
canonicalName := userName + "@" + hostName
|
||||
|
||||
// check if user and host are okay
|
||||
// check if canonicalname is okay
|
||||
m := userHostRe.FindStringSubmatch(canonicalName)
|
||||
if m == nil || m[2] == "" || m[3] == "" {
|
||||
return nil, fmt.Errorf("could not parse \"%s\" - %s did not fit user@host requirement\n", hostName, canonicalName)
|
||||
if m == nil {
|
||||
return nil, fmt.Errorf("could not parse \"%s\" - %s did not fit user@host requirement", hostName, canonicalName)
|
||||
}
|
||||
|
||||
portStr, _ := ssh_config.GetStrict(hostName, "Port")
|
||||
@ -2151,10 +2156,10 @@ func NewHostInfo(hostName string) (*HostInfoType, error) {
|
||||
portVal, err = strconv.Atoi(portStr)
|
||||
if err != nil {
|
||||
// do not make assumptions about port if incorrectly configured
|
||||
return nil, fmt.Errorf("could not parse \"%s\" (%s) - %s could not be converted to a valid port\n", hostName, canonicalName, portStr)
|
||||
return nil, fmt.Errorf("could not parse \"%s\" (%s) - %s could not be converted to a valid port", hostName, canonicalName, portStr)
|
||||
}
|
||||
if portVal <= 0 || portVal > 65535 {
|
||||
return nil, fmt.Errorf("could not parse port \"%d\": number is not valid for a port\n", portVal)
|
||||
return nil, fmt.Errorf("could not parse port \"%d\": number is not valid for a port", portVal)
|
||||
}
|
||||
}
|
||||
identityFile, _ := ssh_config.GetStrict(hostName, "IdentityFile")
|
||||
|
Loading…
Reference in New Issue
Block a user