Package ru.bitel.bgbilling.kernel.network.radius

# Class RadiusPacket

java.lang.Object
ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet
ru.bitel.bgbilling.kernel.network.radius.RadiusPacket

All Implemented Interfaces:
  `java.lang.Cloneable`

    public class RadiusPacket
    extends RadiusAttributeSet

Радиус пакет. Этот класс расширяет набор атрибутов `RadiusAttributeSet`.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `static class` | `RadiusPacket.RadiusPacketOption<T>` | Класс, объекты которого используются для установки `setOption(RadiusPacketOption, Object)` и для получения `getOption(RadiusPacketOption)`.

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `static byte` | `ACCESS_ACCEPT` |
  `static byte` | `ACCESS_CHALLENGE` |
  `static byte` | `ACCESS_REJECT` |
  `static byte` | `ACCESS_REQUEST` |
  `static byte` | `ACCOUNTING_MESSAGE` |
  `static byte` | `ACCOUNTING_REQUEST` |
  `static byte` | `ACCOUNTING_RESPONSE` |
  `static byte` | `ACCOUNTING_STATUS` |
  `static byte` | `ACCOUNTING_STATUS_START` |
  `static byte` | `ACCOUNTING_STATUS_STOP` |
  `static byte` | `ACCOUNTING_STATUS_UPDATE` |
  `protected byte[]` | `authenticator` | Для пришедшего запроса это authenticator который хранится в запросе, для создаваемого запроса - null.
  `static byte` | `CoA_ACK` |
  `static byte` | `CoA_NAK` |
  `static byte` | `CoA_REQUEST` |
  `static byte` | `DISCONNECT_ACK` |
  `static byte` | `DISCONNECT_NAK` |
  `static byte` | `DISCONNECT_REQUEST` |
  `byte` | `identifier` | Идентификатор пакета.
  `protected byte[]` | `messageAuthenticator` | Атрибут для подписи пакета `RadiusDictionary.Message_Authenticator`. Используется в EAP.
  `static byte` | `PASSWORD_ACCEPT` |
  `static byte` | `PASSWORD_REJECT` |
  `static byte` | `PASSWORD_REQUEST` |
  `protected byte[]` | `requestAuthenticator` | Для создаваемого ответа - это authenticator запроса.
  `static byte` | `STATUS_CLIENT` |
  `static byte` | `STATUS_SERVER` |

  ### Fields inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet

  `standartAttributes, vendorAttributes`

- ## Constructor Summary

  Constructors
  Modifier | Constructor | Description
  --- | --- | ---
  `` | `RadiusPacket​(byte code, byte identifier)` | Создание радиус пакета (запрос).
  `protected` | `RadiusPacket​(byte code, byte identifier, byte[] requestAuthenticator, byte[] authenticator, byte[] messageAuthenticator, java.util.Map<java.lang.Integer,​java.util.List<RadiusAttribute<?>>> standartAttributes, java.util.Map<java.lang.Integer,​java.util.Map<java.lang.Integer,​java.util.List<RadiusAttribute<?>>>> vendorAttributes, java.util.Map<java.lang.String,​java.lang.Object> optionMap)` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `void` | `addAttribute​(bitel.billing.server.radius.RadiusAttribute ra)` | Deprecated. use `RadiusAttributeSet.addAttribute(RadiusAttribute)`
  `void` | `addAttributes​(java.util.List<bitel.billing.server.radius.RadiusAttribute> attrs)` | Deprecated. use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`
  `void` | `addOptions​(RadiusPacket request)` |
  `void` | `addVendorAttribute​(bitel.billing.server.radius.RadiusVendorAttribute rva)` | Deprecated. use `RadiusAttributeSet.addAttribute(RadiusAttribute)`
  `void` | `addVendorAttributes​(java.util.List<bitel.billing.server.radius.RadiusVendorAttribute> attrs)` | Deprecated. use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`
  `RadiusPacket` | `clone()` |
  `RadiusPacket` | `createResponse()` | Создание пакета-ответа из пакета-запроса.
  `void` | `fromPacket​(RadiusPacket lastResponsePacket)` |
  `byte[]` | `getAuthenticator()` |
  `byte[]` | `getAuthenticatorBytes()` | Deprecated.
  `byte[]` | `getByteAttribute​(int code)` | Deprecated. use `RadiusAttributeSet.getByteAttribute(int, int, byte[])`
  `byte` | `getCode()` | Получение типа пакета (например, `ACCESS_REQUEST` `ACCOUNTING_REQUEST`).
  `int` | `getFlag()` | Deprecated.
  `int` | `getIntAttribute​(int code)` | Deprecated. use `#getIntAttribute(int, int, int)`
  `java.lang.Object` | `getOption​(java.lang.String option)` | Deprecated.
  `<O> O` | `getOption​(RadiusPacket.RadiusPacketOption<O> option)` | Получение опции(атрибута) из пакета.
  `<O> O` | `getOption​(RadiusPacket.RadiusPacketOption<O> option, O value)` | Получение опции(атрибута) из пакета.
  `byte` | `getPacketId()` | Deprecated.
  `int` | `getPacketType()` | Deprecated. use `getCode()`
  `java.lang.String` | `getPacketTypeString()` | Получение названия типа radius-пакета
  `java.lang.String` | `getStringAttribute​(int code)` | Deprecated. use `RadiusAttributeSet.getStringAttribute(int, int, String)`
  `Trace` | `getTrace()` |
  `java.util.List<RadiusAttribute<?>>` | `getVendorAttributes​(int vendor)` | Deprecated.
  `java.util.List<RadiusAttribute<?>>` | `getVendorAttributes​(int vendor, int code)` | Deprecated. use `RadiusAttributeSet.getAttributes(int, int)`
  `int` | `getVendorIntAttribute​(int code)` | Deprecated. use `#getIntAttribute(int, int, int)`
  `java.lang.String` | `getVendorStringAttribute​(int code)` | Deprecated. use `RadiusAttributeSet.getStringAttribute(int, int, String)`
  `boolean` | `isRequest()` |
  `static RadiusPacket` | `parse​(java.nio.ByteBuffer bb)` | Парсинг пакета из ByteBuffer.
  `static RadiusPacket` | `parse​(java.nio.ByteBuffer byteBuffer, boolean move)` | Парсинг пакета из ByteBuffer.
  `void` | `setByteAttribute​(int code, byte[] value)` | Deprecated. use `RadiusAttributeSet.setByteAttribute(int, int, byte[])`
  `void` | `setCode​(byte code)` | Установка типа пакета.
  `void` | `setFlag​(int flag)` | Deprecated.
  `void` | `setIntAttribute​(int code, int value)` | Deprecated. use `RadiusAttributeSet.setIntAttribute(int, int, int)`
  `void` | `setOption​(java.lang.String option, java.lang.Object value)` | Deprecated.
  `<O> void` | `setOption​(RadiusPacket.RadiusPacketOption<O> option, O value)` | Установка опции в пакет.
  `void` | `setPacketType​(byte value)` | Deprecated. use `setCode(byte)`
  `void` | `setStringAttribute​(int code, java.lang.String value)` | Deprecated. use `RadiusAttributeSet.setStringAttribute(int, int, String)`
  `void` | `setVendorAttribute​(bitel.billing.server.radius.RadiusVendorAttribute rva)` | Deprecated. use `RadiusAttributeSet.setAttribute(RadiusAttribute)`
  `java.lang.String` | `toString()` |
  `void` | `write​(java.nio.ByteBuffer bb, byte[] key)` | Сериализация пакета в ByteBuffer.

  ### Methods inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet

  `addAttribute, addAttributes, contains, equals, getAttribute, getAttributes, getAttributeValue, getAttributeValue, getByteAttribute, getIntAttribute, getRadiusAttributeSet, getRadiusAttributeSet, getStringAttribute, getStringAttribute, isEmpty, newRadiusAttributeRealmMap, newRadiusAttributeSet, newRadiusAttributeSet, newRadiusAttributeSetMap, newRadiusAttributeSetRealmMap, removeAttributes, setAttribute, setAttributes, setAttributes, setByteAttribute, setIntAttribute, setStringAttribute, toString`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### ACCESS_REQUEST

    public static final byte ACCESS_REQUEST
    See Also:
      Constant Field Values

  - ### ACCESS_ACCEPT

    public static final byte ACCESS_ACCEPT
    See Also:
      Constant Field Values

  - ### ACCESS_REJECT

    public static final byte ACCESS_REJECT
    See Also:
      Constant Field Values

  - ### ACCOUNTING_REQUEST

    public static final byte ACCOUNTING_REQUEST
    See Also:
      Constant Field Values

  - ### ACCOUNTING_RESPONSE

    public static final byte ACCOUNTING_RESPONSE
    See Also:
      Constant Field Values

  - ### ACCOUNTING_STATUS

    public static final byte ACCOUNTING_STATUS
    See Also:
      Constant Field Values

  - ### PASSWORD_REQUEST

    public static final byte PASSWORD_REQUEST
    See Also:
      Constant Field Values

  - ### PASSWORD_ACCEPT

    public static final byte PASSWORD_ACCEPT
    See Also:
      Constant Field Values

  - ### PASSWORD_REJECT

    public static final byte PASSWORD_REJECT
    See Also:
      Constant Field Values

  - ### ACCOUNTING_MESSAGE

    public static final byte ACCOUNTING_MESSAGE
    See Also:
      Constant Field Values

  - ### ACCESS_CHALLENGE

    public static final byte ACCESS_CHALLENGE
    See Also:
      Constant Field Values

  - ### STATUS_SERVER

    public static final byte STATUS_SERVER
    See Also:
      Constant Field Values

  - ### STATUS_CLIENT

    public static final byte STATUS_CLIENT
    See Also:
      Constant Field Values

  - ### DISCONNECT_REQUEST

    public static final byte DISCONNECT_REQUEST
    See Also:
      Constant Field Values

  - ### DISCONNECT_ACK

    public static final byte DISCONNECT_ACK
    See Also:
      Constant Field Values

  - ### DISCONNECT_NAK

    public static final byte DISCONNECT_NAK
    See Also:
      Constant Field Values

  - ### CoA_REQUEST

    public static final byte CoA_REQUEST
    See Also:
      Constant Field Values

  - ### CoA_ACK

    public static final byte CoA_ACK
    See Also:
      Constant Field Values

  - ### CoA_NAK

    public static final byte CoA_NAK
    See Also:
      Constant Field Values

  - ### ACCOUNTING_STATUS_START

    public static final byte ACCOUNTING_STATUS_START
    See Also:
      Constant Field Values

  - ### ACCOUNTING_STATUS_STOP

    public static final byte ACCOUNTING_STATUS_STOP
    See Also:
      Constant Field Values

  - ### ACCOUNTING_STATUS_UPDATE

    public static final byte ACCOUNTING_STATUS_UPDATE
    See Also:
      Constant Field Values

  - ### identifier

    public final byte identifier
    Идентификатор пакета.

  - ### requestAuthenticator

    protected final byte[] requestAuthenticator
    Для создаваемого ответа - это authenticator запроса.

  - ### authenticator

    protected byte[] authenticator
    Для пришедшего запроса это authenticator который хранится в запросе,
    для создаваемого запроса - null.

  - ### messageAuthenticator

    protected final byte[] messageAuthenticator
    Атрибут для подписи пакета `RadiusDictionary.Message_Authenticator`.
    Используется в EAP.

- ## Constructor Details

  - ### RadiusPacket

    protected RadiusPacket​(byte code, byte identifier, byte[] requestAuthenticator, byte[] authenticator, byte[] messageAuthenticator, java.util.Map<java.lang.Integer,​java.util.List<RadiusAttribute<?>>> standartAttributes, java.util.Map<java.lang.Integer,​java.util.Map<java.lang.Integer,​java.util.List<RadiusAttribute<?>>>> vendorAttributes, java.util.Map<java.lang.String,​java.lang.Object> optionMap)

  - ### RadiusPacket

    public RadiusPacket​(byte code, byte identifier)
    Создание радиус пакета (запрос).
    Parameters:
      `code` - - тип пакета (например, 40)
      `identifier` - - идентификатор пакета.

- ## Method Details

  - ### getCode

    public byte getCode()
    Получение типа пакета (например, `ACCESS_REQUEST` `ACCOUNTING_REQUEST`).
    Returns:

  - ### setCode

    public void setCode​(byte code)
    Установка типа пакета.
    Parameters:
      `code` -

  - ### isRequest

    public boolean isRequest()

  - ### write

    public void write​(java.nio.ByteBuffer bb, byte[] key) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
    Сериализация пакета в ByteBuffer.
    Parameters:
      `bb` - - буфер
      `key` - - секрет наса.
    Throws:
      `java.security.InvalidKeyException`
      `java.security.NoSuchAlgorithmException`

  - ### parse

    public static RadiusPacket parse​(java.nio.ByteBuffer bb) throws ru.bitel.bgbilling.common.BGException
    Парсинг пакета из ByteBuffer.
    Parameters:
      `bb` -
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### parse

    public static RadiusPacket parse​(java.nio.ByteBuffer byteBuffer, boolean move) throws ru.bitel.bgbilling.common.BGException
    Парсинг пакета из ByteBuffer.
    Parameters:
      `byteBuffer` -
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### createResponse

    public RadiusPacket createResponse()
    Создание пакета-ответа из пакета-запроса.
    Returns:

  - ### getOption

    public <O> O getOption​(RadiusPacket.RadiusPacketOption<O> option)
    Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет null.
    Type Parameters:
      `O` -
    Parameters:
      `option` -
    Returns:

  - ### getOption

    public <O> O getOption​(RadiusPacket.RadiusPacketOption<O> option, O value)
    Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет value.
    Type Parameters:
      `O` -
    Parameters:
      `option` -
      `value` - - значение по умолчанию
    Returns:

  - ### setOption

    public <O> void setOption​(RadiusPacket.RadiusPacketOption<O> option, O value)
    Установка опции в пакет.
    Type Parameters:
      `O` -
    Parameters:
      `option` -
      `value` -

  - ### toString

    public java.lang.String toString()
    Overrides:
      `toString` in class `RadiusAttributeSet`

  - ### getPacketTypeString

    public java.lang.String getPacketTypeString()
    Получение названия типа radius-пакета
    Returns:
      тип пакета

  - ### fromPacket

    public void fromPacket​(RadiusPacket lastResponsePacket)

  - ### getTrace

    public Trace getTrace()

  - ### getOption

    @Deprecated public java.lang.Object getOption​(java.lang.String option)
    Deprecated.
    Для обратной совместимости со скриптами
    Parameters:
      `option` -
    Returns:

  - ### setOption

    @Deprecated public void setOption​(java.lang.String option, java.lang.Object value)
    Deprecated.
    Для обратной совместимости со скриптами
    Parameters:
      `option` -
      `value` -

  - ### setFlag

    @Deprecated public void setFlag​(int flag)
    Deprecated.
    Для обратной совместимости со скриптами
    Parameters:
      `flag` -

  - ### getFlag

    @Deprecated public int getFlag()
    Deprecated.
    Для обратной совместимости со скриптами
    Returns:

  - ### setPacketType

    @Deprecated public void setPacketType​(byte value)
    Deprecated.
    use `setCode(byte)`
    Parameters:
      `value` -

  - ### addAttribute

    @Deprecated public void addAttribute​(bitel.billing.server.radius.RadiusAttribute ra)
    Deprecated.
    use `RadiusAttributeSet.addAttribute(RadiusAttribute)`

  - ### setVendorAttribute

    @Deprecated public void setVendorAttribute​(bitel.billing.server.radius.RadiusVendorAttribute rva)
    Deprecated.
    use `RadiusAttributeSet.setAttribute(RadiusAttribute)`

  - ### addVendorAttribute

    @Deprecated public void addVendorAttribute​(bitel.billing.server.radius.RadiusVendorAttribute rva)
    Deprecated.
    use `RadiusAttributeSet.addAttribute(RadiusAttribute)`

  - ### addVendorAttributes

    @Deprecated public void addVendorAttributes​(java.util.List<bitel.billing.server.radius.RadiusVendorAttribute> attrs)
    Deprecated.
    use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`

  - ### addAttributes

    @Deprecated public void addAttributes​(java.util.List<bitel.billing.server.radius.RadiusAttribute> attrs)
    Deprecated.
    use `RadiusAttributeSet.addAttributes(RadiusAttributeSet)`

  - ### setStringAttribute

    @Deprecated public void setStringAttribute​(int code, java.lang.String value)
    Deprecated.
    use `RadiusAttributeSet.setStringAttribute(int, int, String)`

  - ### setIntAttribute

    @Deprecated public void setIntAttribute​(int code, int value)
    Deprecated.
    use `RadiusAttributeSet.setIntAttribute(int, int, int)`

  - ### setByteAttribute

    @Deprecated public void setByteAttribute​(int code, byte[] value)
    Deprecated.
    use `RadiusAttributeSet.setByteAttribute(int, int, byte[])`

  - ### getByteAttribute

    @Deprecated public byte[] getByteAttribute​(int code)
    Deprecated.
    use `RadiusAttributeSet.getByteAttribute(int, int, byte[])`

  - ### getStringAttribute

    @Deprecated public java.lang.String getStringAttribute​(int code)
    Deprecated.
    use `RadiusAttributeSet.getStringAttribute(int, int, String)`

  - ### getIntAttribute

    @Deprecated public int getIntAttribute​(int code)
    Deprecated.
    use `#getIntAttribute(int, int, int)`

  - ### getVendorStringAttribute

    @Deprecated public java.lang.String getVendorStringAttribute​(int code)
    Deprecated.
    use `RadiusAttributeSet.getStringAttribute(int, int, String)`

  - ### getVendorIntAttribute

    @Deprecated public int getVendorIntAttribute​(int code)
    Deprecated.
    use `#getIntAttribute(int, int, int)`

  - ### getVendorAttributes

    @Deprecated public java.util.List<RadiusAttribute<?>> getVendorAttributes​(int vendor, int code)
    Deprecated.
    use `RadiusAttributeSet.getAttributes(int, int)`

  - ### getVendorAttributes

    @Deprecated public java.util.List<RadiusAttribute<?>> getVendorAttributes​(int vendor)
    Deprecated.
    Не понятно для чего мог использоваться данный метод.
    Оставлен для обратной совместимости, возвращает все атрибуты всех типов для указанного вендора.
    Parameters:
      `vendor` -
    Returns:

  - ### getPacketType

    @Deprecated public int getPacketType()
    Deprecated.
    use `getCode()`
    Оставлен для обратной совместимости, возвращает тип пакета (code)
    Returns:

  - ### getPacketId

    @Deprecated public byte getPacketId()
    Deprecated.
    Оставлен для обратной совместимости, возвращает идентификатор пакета (identifier)
    Returns:

  - ### clone

    public RadiusPacket clone()
    Overrides:
      `clone` in class `java.lang.Object`

  - ### getAuthenticatorBytes

    @Deprecated public byte[] getAuthenticatorBytes()
    Deprecated.

  - ### getAuthenticator

    public byte[] getAuthenticator()

  - ### addOptions

    public void addOptions​(RadiusPacket request)