diff --git a/crates/icy_net/src/connection/mod.rs b/crates/icy_net/src/connection/mod.rs index 1c3c7bd1..035479ec 100644 --- a/crates/icy_net/src/connection/mod.rs +++ b/crates/icy_net/src/connection/mod.rs @@ -25,17 +25,6 @@ pub enum ConnectionType { SecureWebsocket, } -impl ConnectionType { - pub fn get_default_port(self) -> u16 { - match self { - ConnectionType::Telnet => 23, - ConnectionType::SSH => 22, - ConnectionType::Websocket | ConnectionType::SecureWebsocket => 443, - _ => 0, - } - } -} - #[async_trait] pub trait Connection: Send + Unpin { fn get_connection_type(&self) -> ConnectionType; diff --git a/crates/icy_net/src/connection/ssh.rs b/crates/icy_net/src/connection/ssh.rs index 6650f5f4..e5d7c78c 100644 --- a/crates/icy_net/src/connection/ssh.rs +++ b/crates/icy_net/src/connection/ssh.rs @@ -21,7 +21,11 @@ pub struct Credentials { } impl SSHConnection { - pub async fn open(addr: &A, caps: TermCaps, credentials: Credentials) -> crate::Result { + pub async fn open(addr: impl Into, caps: TermCaps, credentials: Credentials) -> crate::Result { + let mut addr:String = addr.into(); + if !addr.contains(':') { + addr.push_str(":22"); + } let ssh = SshClient::connect(addr, &credentials.user_name, credentials.password).await?; println!("SSH connection established"); let channel = ssh.session.channel_open_session().await?; diff --git a/crates/icy_net/src/connection/telnet/mod.rs b/crates/icy_net/src/connection/telnet/mod.rs index f3612026..b684229e 100644 --- a/crates/icy_net/src/connection/telnet/mod.rs +++ b/crates/icy_net/src/connection/telnet/mod.rs @@ -8,7 +8,7 @@ use std::{ use async_trait::async_trait; use tokio::{ io::{AsyncReadExt, AsyncWriteExt}, - net::{TcpStream, ToSocketAddrs}, + net::TcpStream, }; use super::{Connection, ConnectionType}; @@ -61,7 +61,12 @@ pub struct TelnetConnection { } impl TelnetConnection { - pub async fn open(addr: &A, caps: TermCaps, timeout: Duration) -> crate::Result { + pub async fn open(addr: impl Into, caps: TermCaps, timeout: Duration) -> crate::Result { + let mut addr:String = addr.into(); + if !addr.contains(':') { + addr.push_str(":23"); + } + let result = tokio::time::timeout(timeout, TcpStream::connect(addr)).await; match result { Ok(tcp_stream) => match tcp_stream { diff --git a/crates/icy_net/src/terminal/virtual_screen.rs b/crates/icy_net/src/terminal/virtual_screen.rs index edfd1686..ef5887a3 100644 --- a/crates/icy_net/src/terminal/virtual_screen.rs +++ b/crates/icy_net/src/terminal/virtual_screen.rs @@ -9,6 +9,8 @@ pub struct VirtualScreen { impl VirtualScreen { pub fn new(parser: T) -> Self { let mut buffer = Buffer::new((80, 25)); + buffer.is_terminal_buffer = true; + buffer.terminal_state.fixed_size = true; buffer.buffer_type = icy_engine::BufferType::Unicode; let caret = Caret::default(); Self {