TelnetCommand.java

  1. /*
  2.  * Licensed to the Apache Software Foundation (ASF) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * The ASF licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */

  17. package org.apache.commons.net.telnet;

  18. /**
  19.  * The TelnetCommand class cannot be instantiated and only serves as a storehouse for telnet command constants.
  20.  *
  21.  * @see org.apache.commons.net.telnet.Telnet
  22.  * @see org.apache.commons.net.telnet.TelnetClient
  23.  */

  24. public final class TelnetCommand {
  25.     /** The maximum value a command code can have. This value is 255. */
  26.     public static final int MAX_COMMAND_VALUE = 255;

  27.     /** Interpret As Command code. Value is 255 according to RFC 854. */
  28.     public static final int IAC = 255;

  29.     /** Don't use option code. Value is 254 according to RFC 854. */
  30.     public static final int DONT = 254;

  31.     /** Request to use option code. Value is 253 according to RFC 854. */
  32.     public static final int DO = 253;

  33.     /** Refuse to use option code. Value is 252 according to RFC 854. */
  34.     public static final int WONT = 252;

  35.     /** Agree to use option code. Value is 251 according to RFC 854. */
  36.     public static final int WILL = 251;

  37.     /** Start subnegotiation code. Value is 250 according to RFC 854. */
  38.     public static final int SB = 250;

  39.     /** Go Ahead code. Value is 249 according to RFC 854. */
  40.     public static final int GA = 249;

  41.     /** Erase Line code. Value is 248 according to RFC 854. */
  42.     public static final int EL = 248;

  43.     /** Erase Character code. Value is 247 according to RFC 854. */
  44.     public static final int EC = 247;

  45.     /** Are You There code. Value is 246 according to RFC 854. */
  46.     public static final int AYT = 246;

  47.     /** Abort Output code. Value is 245 according to RFC 854. */
  48.     public static final int AO = 245;

  49.     /** Interrupt Process code. Value is 244 according to RFC 854. */
  50.     public static final int IP = 244;

  51.     /** Break code. Value is 243 according to RFC 854. */
  52.     public static final int BREAK = 243;

  53.     /** Data mark code. Value is 242 according to RFC 854. */
  54.     public static final int DM = 242;

  55.     /** No Operation code. Value is 241 according to RFC 854. */
  56.     public static final int NOP = 241;

  57.     /** End subnegotiation code. Value is 240 according to RFC 854. */
  58.     public static final int SE = 240;

  59.     /** End of record code. Value is 239. */
  60.     public static final int EOR = 239;

  61.     /** Abort code. Value is 238. */
  62.     public static final int ABORT = 238;

  63.     /** Suspend process code. Value is 237. */
  64.     public static final int SUSP = 237;

  65.     /** End of file code. Value is 236. */
  66.     public static final int EOF = 236;

  67.     /** Synchronize code. Value is 242. */
  68.     public static final int SYNCH = 242;

  69.     /** String representations of commands. */
  70.     private static final String[] commandString = { "IAC", "DONT", "DO", "WONT", "WILL", "SB", "GA", "EL", "EC", "AYT", "AO", "IP", "BRK", "DMARK", "NOP", "SE",
  71.             "EOR", "ABORT", "SUSP", "EOF" };

  72.     private static final int FIRST_COMMAND = IAC;
  73.     private static final int LAST_COMMAND = EOF;

  74.     /**
  75.      * Returns the string representation of the telnet protocol command corresponding to the given command code.
  76.      *
  77.      * @param code The command code of the telnet protocol command.
  78.      * @return The string representation of the telnet protocol command.
  79.      */
  80.     public static String getCommand(final int code) {
  81.         return commandString[FIRST_COMMAND - code];
  82.     }

  83.     /**
  84.      * Determines if a given command code is valid. Returns true if valid, false if not.
  85.      *
  86.      * @param code The command code to test.
  87.      * @return True if the command code is valid, false if not.
  88.      **/
  89.     public static boolean isValidCommand(final int code) {
  90.         return code <= FIRST_COMMAND && code >= LAST_COMMAND;
  91.     }

  92.     /** Cannot be instantiated. */
  93.     private TelnetCommand() {
  94.     }
  95. }