createConnectionForm creates the Connection & Proxy tab
()
| 1267 | |
| 1268 | // createConnectionForm creates the Connection & Proxy tab |
| 1269 | func (sf *ServerForm) createConnectionForm() { |
| 1270 | form := tview.NewForm() |
| 1271 | defaultValues := sf.getDefaultValues() |
| 1272 | |
| 1273 | form.AddTextView("\n[yellow]▶ Proxy & Command[-]", "", 0, 1, true, false) |
| 1274 | sf.addInputFieldWithHelp(form, "ProxyJump:", "ProxyJump", defaultValues.ProxyJump, 40, GetFieldPlaceholder("ProxyJump")) |
| 1275 | sf.addInputFieldWithHelp(form, "ProxyCommand:", "ProxyCommand", defaultValues.ProxyCommand, 40, GetFieldPlaceholder("ProxyCommand")) |
| 1276 | sf.addInputFieldWithHelp(form, "RemoteCommand:", "RemoteCommand", defaultValues.RemoteCommand, 40, GetFieldPlaceholder("RemoteCommand")) |
| 1277 | |
| 1278 | // RequestTTY dropdown |
| 1279 | requestTTYOptions := createOptionsWithDefault("RequestTTY", []string{"", "yes", "no", "force", "auto"}) |
| 1280 | requestTTYIndex := sf.findOptionIndex(requestTTYOptions, defaultValues.RequestTTY) |
| 1281 | sf.addDropDownWithHelp(form, "RequestTTY:", "RequestTTY", requestTTYOptions, requestTTYIndex) |
| 1282 | |
| 1283 | // SessionType dropdown (OpenSSH 8.7+) |
| 1284 | sessionTypeOptions := createOptionsWithDefault("SessionType", []string{"", "none (-N)", "subsystem (-s)", "default"}) |
| 1285 | sessionTypeIndex := sf.findOptionIndex(sessionTypeOptions, defaultValues.SessionType) |
| 1286 | sf.addDropDownWithHelp(form, "SessionType:", "SessionType", sessionTypeOptions, sessionTypeIndex) |
| 1287 | |
| 1288 | form.AddTextView("\n[yellow]▶ Connection Settings[-]", "", 0, 1, true, false) |
| 1289 | sf.addValidatedInputField(form, "ConnectTimeout:", "ConnectTimeout", defaultValues.ConnectTimeout, 10, GetFieldPlaceholder("ConnectTimeout")) |
| 1290 | sf.addValidatedInputField(form, "ConnectionAttempts:", "ConnectionAttempts", defaultValues.ConnectionAttempts, 10, GetFieldPlaceholder("ConnectionAttempts")) |
| 1291 | sf.addValidatedInputField(form, "IPQoS:", "IPQoS", defaultValues.IPQoS, 20, GetFieldPlaceholder("IPQoS")) |
| 1292 | |
| 1293 | // BatchMode dropdown (moved from Keep-Alive) |
| 1294 | batchModeOptions := createOptionsWithDefault("BatchMode", []string{"", "yes", "no"}) |
| 1295 | batchModeIndex := sf.findOptionIndex(batchModeOptions, defaultValues.BatchMode) |
| 1296 | sf.addDropDownWithHelp(form, "BatchMode:", "BatchMode", batchModeOptions, batchModeIndex) |
| 1297 | |
| 1298 | form.AddTextView("\n[yellow]▶ Bind Options[-]", "", 0, 1, true, false) |
| 1299 | sf.addValidatedInputField(form, "BindAddress:", "BindAddress", defaultValues.BindAddress, 40, GetFieldPlaceholder("BindAddress")) |
| 1300 | |
| 1301 | // BindInterface dropdown with available network interfaces |
| 1302 | interfaceOptions := append([]string{""}, GetNetworkInterfaces()...) |
| 1303 | bindInterfaceIndex := sf.findOptionIndex(interfaceOptions, defaultValues.BindInterface) |
| 1304 | sf.addDropDownWithHelp(form, "BindInterface:", "BindInterface", interfaceOptions, bindInterfaceIndex) |
| 1305 | |
| 1306 | // AddressFamily dropdown |
| 1307 | addressFamilyOptions := createOptionsWithDefault("AddressFamily", []string{"", "any", "inet", "inet6"}) |
| 1308 | addressFamilyIndex := sf.findOptionIndex(addressFamilyOptions, defaultValues.AddressFamily) |
| 1309 | sf.addDropDownWithHelp(form, "AddressFamily:", "AddressFamily", addressFamilyOptions, addressFamilyIndex) |
| 1310 | |
| 1311 | form.AddTextView("\n[yellow]▶ Hostname Canonicalization[-]", "", 0, 1, true, false) |
| 1312 | |
| 1313 | // CanonicalizeHostname dropdown |
| 1314 | canonicalizeOptions := createOptionsWithDefault("CanonicalizeHostname", []string{"", "yes", "no", "always"}) |
| 1315 | canonicalizeIndex := sf.findOptionIndex(canonicalizeOptions, defaultValues.CanonicalizeHostname) |
| 1316 | sf.addDropDownWithHelp(form, "CanonicalizeHostname:", "CanonicalizeHostname", canonicalizeOptions, canonicalizeIndex) |
| 1317 | |
| 1318 | sf.addInputFieldWithHelp(form, "CanonicalDomains:", "CanonicalDomains", defaultValues.CanonicalDomains, 40, GetFieldPlaceholder("CanonicalDomains")) |
| 1319 | |
| 1320 | // CanonicalizeFallbackLocal dropdown |
| 1321 | fallbackOptions := createOptionsWithDefault("CanonicalizeFallbackLocal", []string{"", "yes", "no"}) |
| 1322 | fallbackIndex := sf.findOptionIndex(fallbackOptions, defaultValues.CanonicalizeFallbackLocal) |
| 1323 | sf.addDropDownWithHelp(form, "CanonicalizeFallbackLocal:", "CanonicalizeFallbackLocal", fallbackOptions, fallbackIndex) |
| 1324 | |
| 1325 | sf.addValidatedInputField(form, "CanonicalizeMaxDots:", "CanonicalizeMaxDots", defaultValues.CanonicalizeMaxDots, 10, GetFieldPlaceholder("CanonicalizeMaxDots")) |
| 1326 |
no test coverage detected