From e3346f5b2d62ca4d2008eccd9a75290fbc7fc87b Mon Sep 17 00:00:00 2001
From: Joe <rbo@gmx.us>
Date: Fri, 2 Feb 2024 20:20:20 +0100
Subject: go

---
 src/i_events.go |   1 +
 src/i_info.go   | 220 ++++++++++++++++++++++++++------------------------------
 2 files changed, 102 insertions(+), 119 deletions(-)

diff --git a/src/i_events.go b/src/i_events.go
index 71b7386..47a439f 100644
--- a/src/i_events.go
+++ b/src/i_events.go
@@ -76,6 +76,7 @@ func i_list_follow_cursor(litems *ItemsList, ui *HardUI) {
 		litems.draw.prev != nil {
 		litems.draw = litems.draw.prev
 	}
+	// FIX: resize under select disappear
 }
 
 func i_set_unfold(data *HardData, item *ItemsNode) {
diff --git a/src/i_info.go b/src/i_info.go
index 60a38c0..4284032 100644
--- a/src/i_info.go
+++ b/src/i_info.go
@@ -125,35 +125,14 @@ func i_info_ssh(ui HardUI, host *HostNode, line int) int {
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
 		ui.style[STYLE_DEF], host.Host)
-	if line += 1; line > ui.dim[H] - 3 || host.Protocol == 2 {
-		return line
-	}
+	if line += 1; line > ui.dim[H] - 3 { return line }
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
 		ui.style[STYLE_TITLE], "Port: ")
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
 		ui.style[STYLE_DEF], strconv.Itoa(int(host.Port)))
-	if line += 1; line > ui.dim[H] - 3 {
-		return line
-	}
-	// RDP shit
-	if host.Protocol == 1 {
-		if len(host.Domain) > 0 {
-			i_draw_text(ui.s,
-				(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
-				ui.style[STYLE_TITLE], "Domain: ")
-			i_draw_text(ui.s,
-				(ui.dim[W] / 3) + 11, line, ui.dim[W] - 2, line,
-				ui.style[STYLE_DEF], host.Domain)
-			if line += 1; line > ui.dim[H] - 3 {
-				return line
-			}
-		}
-	}
-	if line += 1; line > ui.dim[H] - 3 {
-		return line
-	}
+	if line += 2; line > ui.dim[H] - 3 { return line }
 	// user infos
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
@@ -161,9 +140,7 @@ func i_info_ssh(ui HardUI, host *HostNode, line int) int {
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
 		ui.style[STYLE_DEF], host.User)
-	if line += 1; line > ui.dim[H] - 3 {
-		return line
-	}
+	if line += 1; line > ui.dim[H] - 3 { return line }
 	if len(host.Pass) > 0 {
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
@@ -171,59 +148,45 @@ func i_info_ssh(ui HardUI, host *HostNode, line int) int {
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_DEF], "***")
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
+		if line += 1; line > ui.dim[H] - 3 { return line }
 	}
-	if host.Protocol == 0 && len(host.Priv) > 0 {
+	if len(host.Priv) > 0 {
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_TITLE], "Privkey: ")
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 12, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_DEF], host.Priv)
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
-	}
-	if line += 1; line > ui.dim[H] - 3 {
-		return line
+		if line += 1; line > ui.dim[H] - 3 { return line }
 	}
+	if line += 1; line > ui.dim[H] - 3 { return line }
 	// jump
-	if host.Protocol == 0 && len(host.Jump.Host) > 0 {
+	if len(host.Jump.Host) > 0 {
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_TITLE], "Jump settings: ")
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
+		if line += 1; line > ui.dim[H] - 3 { return line }
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 4, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_TITLE], "Host: ")
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 10, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_DEF], host.Jump.Host)
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
+		if line += 1; line > ui.dim[H] - 3 { return line }
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 4, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_TITLE], "Port: ")
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 10, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_DEF], strconv.Itoa(int(host.Jump.Port)))
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
+		if line += 1; line > ui.dim[H] - 3 { return line }
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 4, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_TITLE], "User: ")
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 10, line, ui.dim[W] - 2, line,
 			ui.style[STYLE_DEF], host.Jump.User)
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
+		if line += 1; line > ui.dim[H] - 3 { return line }
 		if len(host.Jump.Pass) > 0 {
 			i_draw_text(ui.s,
 				(ui.dim[W] / 3) + 4, line, ui.dim[W] - 2, line,
@@ -231,107 +194,126 @@ func i_info_ssh(ui HardUI, host *HostNode, line int) int {
 			i_draw_text(ui.s,
 				(ui.dim[W] / 3) + 10, line, ui.dim[W] - 2, line,
 				ui.style[STYLE_DEF], "***")
-			if line += 1; line > ui.dim[H] - 3 {
-				return line
-			}
+			if line += 1; line > ui.dim[H] - 3 { return line }
 		}
-		if host.Protocol == 0 && len(host.Jump.Priv) > 0 {
+		if len(host.Jump.Priv) > 0 {
 			i_draw_text(ui.s,
 				(ui.dim[W] / 3) + 4, line, ui.dim[W] - 2, line,
 				ui.style[STYLE_TITLE], "Privkey: ")
 			i_draw_text(ui.s,
 				(ui.dim[W] / 3) + 13, line, ui.dim[W] - 2, line,
 				ui.style[STYLE_DEF], host.Jump.Priv)
-			if line += 1; line > ui.dim[H] - 3 {
-				return line
-			}
-		}
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
+			if line += 1; line > ui.dim[H] - 3 { return line }
 		}
+		if line += 1; line > ui.dim[H] - 3 { return line }
 	}
-	// RDP shit
-	if host.Protocol == 1 {
-		qual := [3]string{"Low", "Medium", "High"}
+	return line
+}
+
+func i_info_rdp(ui HardUI, host *HostNode, line int) int {
+	// host, port
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_TITLE], "Host: ")
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_DEF], host.Host)
+	if line += 1; line > ui.dim[H] - 3 { return line }
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_TITLE], "Port: ")
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_DEF], strconv.Itoa(int(host.Port)))
+	if line += 1; line > ui.dim[H] - 3 { return line }
+	// rdp shit
+	if len(host.Domain) > 0 {
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
-			ui.style[STYLE_TITLE], "Screen size: ")
+			ui.style[STYLE_TITLE], "Domain: ")
 		i_draw_text(ui.s,
-			(ui.dim[W] / 3) + 16, line, ui.dim[W] - 2, line,
-			ui.style[STYLE_DEF],
-			strconv.Itoa(int(host.Width)) + "x" +
-			strconv.Itoa(int(host.Height)))
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
+			(ui.dim[W] / 3) + 11, line, ui.dim[W] - 2, line,
+			ui.style[STYLE_DEF], host.Domain)
+	}
+	if line += 2; line > ui.dim[H] - 3 { return line }
+	// user infos
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_TITLE], "User: ")
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_DEF], host.User)
+	if line += 1; line > ui.dim[H] - 3 { return line }
+	if len(host.Pass) > 0 {
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
-			ui.style[STYLE_TITLE], "Dynamic window: ")
+			ui.style[STYLE_TITLE], "Pass: ")
 		i_draw_text(ui.s,
-			(ui.dim[W] / 3) + 19, line, ui.dim[W] - 2, line,
-			ui.style[STYLE_DEF], strconv.FormatBool(host.Dynamic))
-		if line += 1; line > ui.dim[H] - 3 {
-			return line
-		}
+			(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
+			ui.style[STYLE_DEF], "***")
+		if line += 1; line > ui.dim[H] - 3 { return line }
+	}
+	if line += 1; line > ui.dim[H] - 3 { return line }
+	// rdp shit
+	qual := [3]string{"Low", "Medium", "High"}
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_TITLE], "Screen size: ")
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 16, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_DEF],
+		strconv.Itoa(int(host.Width)) + "x" +
+		strconv.Itoa(int(host.Height)))
+	if line += 1; line > ui.dim[H] - 3 { return line }
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_TITLE], "Dynamic window: ")
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 19, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_DEF], strconv.FormatBool(host.Dynamic))
+	if line += 1; line > ui.dim[H] - 3 { return line }
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_TITLE], "Quality: ")
+	i_draw_text(ui.s,
+		(ui.dim[W] / 3) + 12, line, ui.dim[W] - 2, line,
+		ui.style[STYLE_DEF], qual[host.Quality])
+	if line += 2; line > ui.dim[H] - 3 { return line }
+	if host.Drive != nil {
 		i_draw_text(ui.s,
 			(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
-			ui.style[STYLE_TITLE], "Quality: ")
-		i_draw_text(ui.s,
-			(ui.dim[W] / 3) + 12, line, ui.dim[W] - 2, line,
-			ui.style[STYLE_DEF], qual[host.Quality])
-		if line += 2; line > ui.dim[H] - 3 {
-			return line
-		}
-		if host.Drive != nil {
+			ui.style[STYLE_TITLE], "Drives: ")
+		if line += 1; line > ui.dim[H] - 3 { return line }
+		for share, path := range host.Drive {
 			i_draw_text(ui.s,
-				(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
-				ui.style[STYLE_TITLE], "Drives: ")
-			if line += 1; line > ui.dim[H] - 3 {
-				return line
-			}
-			for share, path := range host.Drive {
-				i_draw_text(ui.s,
-					(ui.dim[W] / 3) + 4, line, ui.dim[W] - 2, line,
-					ui.style[STYLE_TITLE], share + ":")
-				i_draw_text(ui.s,
-					(ui.dim[W] / 3) + 4 + len(share) + 2, line,
-					ui.dim[W] - 2, line,
-					ui.style[STYLE_DEF], path)
-				if line += 1; line > ui.dim[H] - 3 {
-					return line
-				}
-			}
-			if line += 1; line > ui.dim[H] - 3 {
-				return line
-			}
+				(ui.dim[W] / 3) + 4, line, ui.dim[W] - 2, line,
+				ui.style[STYLE_TITLE], share + ":")
+			i_draw_text(ui.s,
+				(ui.dim[W] / 3) + 4 + len(share) + 2, line,
+				ui.dim[W] - 2, line,
+				ui.style[STYLE_DEF], path)
+			if line += 1; line > ui.dim[H] - 3 { return line }
 		}
+		if line += 1; line > ui.dim[H] - 3 { return line }
 	}
 	return line
 }
 
-func i_info_rdp(ui HardUI, host *HostNode, line int) int {
+func i_info_cmd(ui HardUI, host *HostNode, line int) int {
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
-		ui.style[STYLE_TITLE], "Host: ")
+		ui.style[STYLE_TITLE], "Command: ")
 	i_draw_text(ui.s,
-		(ui.dim[W] / 3) + 9, line, ui.dim[W] - 2, line,
+		(ui.dim[W] / 3) + 12, line, ui.dim[W] - 2, line,
 		ui.style[STYLE_DEF], host.Host)
-	if line += 1; line > ui.dim[H] - 3 || host.Protocol == 2 {
-		return line
-	}
-	return line
-}
-
-func i_info_cmd(ui HardUI, host *HostNode, line int) int {
+	if line += 2; line > ui.dim[H] - 3 { return line }
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 3, line, ui.dim[W] - 2, line,
-		ui.style[STYLE_TITLE], "Command: ")
+		ui.style[STYLE_TITLE], "Silent: ")
 	i_draw_text(ui.s,
 		(ui.dim[W] / 3) + 12, line, ui.dim[W] - 2, line,
-		ui.style[STYLE_DEF], host.Host)
-	if line += 1; line > ui.dim[H] - 3 {
-		return line
-	}
+		ui.style[STYLE_DEF], host.Silent)
+	// TODO: here
 	return line
 }
 
-- 
cgit v1.2.3