forked from I2P_Developers/i2p.i2p
Unmodified cybergarage-upnp from github rev 9499b03 2015-02-05 https://github.com/cybergarage/cybergarage-upnp/commits/master which is the same as rev 3ed1af9 2014-07-28 except for the addition of README.md which we aren't using. This is post-version 3.0. Omitted files: router/java/src/org/cybergarage/xml/parser/XercesParser.java router/java/src/org/cybergarage/xml/parser/XmlPullParser.java router/java/src/org/cybergarage/xml/parser/kXML2Parser.java chmod all files back to 644. Diverging from 2.1 checkin rev 59eae97dbb470d8c4a1e4dba3a9763e134bb0c53 in prep for merging. License unchanged. Compile tested only.
244 lines
4.9 KiB
Java
244 lines
4.9 KiB
Java
/******************************************************************
|
|
*
|
|
* CyberLink for Java
|
|
*
|
|
* Copyright (C) Satoshi Konno 2002-2003
|
|
*
|
|
* File: SSDPPacket.java
|
|
*
|
|
* Revision;
|
|
*
|
|
* 11/18/02
|
|
* - first revision.
|
|
* 05/13/03
|
|
* - Added getLocalAddress().
|
|
* 11/01/04
|
|
* - Theo Beisch <theo.beisch@gmx.de>
|
|
* - Fixed isRootDevice() to check the ST header.
|
|
* 11/19/04
|
|
* - Theo Beisch <theo.beisch@gmx.de>
|
|
* - Changed getRemoteAddress() to return the adresss instead of the host name.
|
|
*
|
|
******************************************************************/
|
|
|
|
package org.cybergarage.upnp.ssdp;
|
|
|
|
import java.net.*;
|
|
|
|
import org.cybergarage.http.*;
|
|
|
|
import org.cybergarage.upnp.device.*;
|
|
|
|
public class SSDPPacket
|
|
{
|
|
////////////////////////////////////////////////
|
|
// Constructor
|
|
////////////////////////////////////////////////
|
|
|
|
public SSDPPacket(byte[] buf, int length)
|
|
{
|
|
dgmPacket = new DatagramPacket(buf, length);
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// DatagramPacket
|
|
////////////////////////////////////////////////
|
|
|
|
private DatagramPacket dgmPacket = null;
|
|
|
|
public DatagramPacket getDatagramPacket()
|
|
{
|
|
return dgmPacket;
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// addr
|
|
////////////////////////////////////////////////
|
|
|
|
private String localAddr = "";
|
|
|
|
public void setLocalAddress(String addr)
|
|
{
|
|
localAddr = addr;
|
|
}
|
|
|
|
public String getLocalAddress()
|
|
{
|
|
return localAddr;
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////
|
|
// Time
|
|
////////////////////////////////////////////////
|
|
|
|
private long timeStamp;
|
|
|
|
public void setTimeStamp(long value)
|
|
{
|
|
timeStamp = value;
|
|
}
|
|
|
|
public long getTimeStamp()
|
|
{
|
|
return timeStamp;
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// Remote host
|
|
////////////////////////////////////////////////
|
|
|
|
public InetAddress getRemoteInetAddress()
|
|
{
|
|
return getDatagramPacket().getAddress();
|
|
}
|
|
|
|
public String getRemoteAddress()
|
|
{
|
|
// Thanks for Theo Beisch (11/09/04)
|
|
return getDatagramPacket().getAddress().getHostAddress();
|
|
}
|
|
|
|
public int getRemotePort()
|
|
{
|
|
return getDatagramPacket().getPort();
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// Access Methods
|
|
////////////////////////////////////////////////
|
|
|
|
public byte[] packetBytes = null;
|
|
|
|
public byte[] getData()
|
|
{
|
|
if (packetBytes != null)
|
|
return packetBytes;
|
|
|
|
DatagramPacket packet = getDatagramPacket();
|
|
int packetLen = packet.getLength();
|
|
String packetData = new String(packet.getData(), 0, packetLen);
|
|
packetBytes = packetData.getBytes();
|
|
|
|
return packetBytes;
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// Access Methods
|
|
////////////////////////////////////////////////
|
|
|
|
public String getHost()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.HOST);
|
|
}
|
|
|
|
public String getCacheControl()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.CACHE_CONTROL);
|
|
}
|
|
|
|
public String getLocation()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.LOCATION);
|
|
}
|
|
|
|
public String getMAN()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.MAN);
|
|
}
|
|
|
|
public String getST()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.ST);
|
|
}
|
|
|
|
public String getNT()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.NT);
|
|
}
|
|
|
|
public String getNTS()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.NTS);
|
|
}
|
|
|
|
public String getServer()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.SERVER);
|
|
}
|
|
|
|
public String getUSN()
|
|
{
|
|
return HTTPHeader.getValue(getData(), HTTP.USN);
|
|
}
|
|
|
|
public int getMX()
|
|
{
|
|
return HTTPHeader.getIntegerValue(getData(), HTTP.MX);
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// Access Methods
|
|
////////////////////////////////////////////////
|
|
|
|
public InetAddress getHostInetAddress()
|
|
{
|
|
String addrStr = "127.0.0.1";
|
|
String host = getHost();
|
|
int canmaIdx = host.lastIndexOf(":");
|
|
if (0 <= canmaIdx) {
|
|
addrStr = host.substring(0, canmaIdx);
|
|
if (addrStr.charAt(0) == '[')
|
|
addrStr = addrStr.substring(1, addrStr.length());
|
|
if (addrStr.charAt(addrStr.length()-1) == ']')
|
|
addrStr = addrStr.substring(0, addrStr.length()-1);
|
|
}
|
|
InetSocketAddress isockaddr = new InetSocketAddress(addrStr, 0);
|
|
return isockaddr.getAddress();
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// Access Methods (Extension)
|
|
////////////////////////////////////////////////
|
|
|
|
public boolean isRootDevice()
|
|
{
|
|
if (NT.isRootDevice(getNT()) == true)
|
|
return true;
|
|
// Thanks for Theo Beisch (11/01/04)
|
|
if (ST.isRootDevice(getST()) == true)
|
|
return true;
|
|
return USN.isRootDevice(getUSN());
|
|
}
|
|
|
|
public boolean isDiscover()
|
|
{
|
|
return MAN.isDiscover(getMAN());
|
|
}
|
|
|
|
public boolean isAlive()
|
|
{
|
|
return NTS.isAlive(getNTS());
|
|
}
|
|
|
|
public boolean isByeBye()
|
|
{
|
|
return NTS.isByeBye(getNTS());
|
|
}
|
|
|
|
public int getLeaseTime()
|
|
{
|
|
return SSDP.getLeaseTime(getCacheControl());
|
|
}
|
|
|
|
////////////////////////////////////////////////
|
|
// toString
|
|
////////////////////////////////////////////////
|
|
|
|
public String toString()
|
|
{
|
|
return new String(getData());
|
|
}
|
|
}
|
|
|