From 2c20599c89f256e656b089907742d2297d7a317c Mon Sep 17 00:00:00 2001 From: Håkon Nessjøen Date: Fri, 1 Oct 2010 09:27:48 +0200 Subject: Added resize handler --- main.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/main.c b/main.c index 833e81c..fade8c1 100644 --- a/main.c +++ b/main.c @@ -19,10 +19,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -79,6 +81,23 @@ void sendAuthData(unsigned char *username, unsigned char *password) { result = sendCustomUDP(sockfd, deviceIndex, srcmac, dstmac, &sourceip, 20561, &destip, 20561, data, plen); } +void sig_winch(int sig) { + unsigned short width,height; + unsigned char data[1500]; + int result,plen,databytes; + + if (getTerminalSize(&width, &height) > 0) { + plen = initPacket(data, MT_PTYPE_DATA, srcmac, dstmac, sessionkey, outcounter); + databytes = plen; + plen += addControlPacket(data + plen, MT_CPTYPE_TERM_WIDTH, &width, 2); + plen += addControlPacket(data + plen, MT_CPTYPE_TERM_HEIGHT, &height, 2); + outcounter += plen - databytes; + + result = sendCustomUDP(sockfd, deviceIndex, srcmac, dstmac, &sourceip, 20561, &destip, 20561, data, plen); + } + signal(SIGWINCH, sig_winch); +} + void handlePacket(unsigned char *data, int data_len) { struct mt_mactelnet_hdr pkthdr; struct mt_mactelnet_control_hdr cpkthdr; @@ -133,6 +152,11 @@ void handlePacket(unsigned char *data, int data_len) { cpkt.data[cpkt.length] = 0; printf("%s", cpkt.data); } + + else if (cpkt.cptype == MT_CPTYPE_END_AUTH) { + terminalMode = 1; + signal(SIGWINCH, sig_winch); + } } } else if (pkthdr.ptype == MT_PTYPE_ACK) { -- cgit v1.2.3