148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/* 248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Copyright (c) 2006-2011 Christian Plattner. All rights reserved. 348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Please refer to the LICENSE.txt for licensing details. 448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpackage ch.ethz.ssh2.packets; 648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodimport java.io.IOException; 748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/** 948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * PacketDisconnect. 1048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * 1148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner 1248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10 1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic class PacketDisconnect 1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{ 1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood byte[] payload; 1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood int reason; 1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood String desc; 2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood String lang; 2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public PacketDisconnect(byte payload[], int off, int len) throws IOException 2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood this.payload = new byte[len]; 2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood System.arraycopy(payload, off, this.payload, 0, len); 2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood TypesReader tr = new TypesReader(payload, off, len); 2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood int packet_type = tr.readByte(); 3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if (packet_type != Packets.SSH_MSG_DISCONNECT) 3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood throw new IOException("This is not a Disconnect Packet! (" 3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood + packet_type + ")"); 3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood reason = tr.readUINT32(); 3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood desc = tr.readString(); 3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood lang = tr.readString(); 3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public PacketDisconnect(int reason, String desc, String lang) 4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood this.reason = reason; 4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood this.desc = desc; 4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood this.lang = lang; 4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public byte[] getPayload() 4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if (payload == null) 5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood TypesWriter tw = new TypesWriter(); 5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood tw.writeByte(Packets.SSH_MSG_DISCONNECT); 5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood tw.writeUINT32(reason); 5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood tw.writeString(desc); 5548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood tw.writeString(lang); 5648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood payload = tw.getBytes(); 5748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 5848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood return payload; 5948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 6048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood} 61