java.net
Class SocketPermission

java.lang.Object
  |
  +--java.security.Permission
        |
        +--java.net.SocketPermission
All Implemented Interfaces:
Guard, Serializable

public final class SocketPermission
extends Permission
implements Serializable

Untamed:

See Also:
Serialized Form

Field Summary
private static int ACCEPT
          Accept a connection from host:port
private  String actions
          the actions string.
private  InetAddress[] addresses
           
private static int ALL
          All actions
private  String cname
           
private static int CONNECT
          Connect to host:port
private  String hostname
           
private  boolean init_with_ip
           
private  boolean invalid
           
private static int LISTEN
          Listen on host:port
private  int mask
           
private static int NONE
          No actions
private static int PORT_MAX
           
private static int PORT_MIN
           
private  int[] portrange
           
private static int PRIV_PORT_MAX
           
private static int RESOLVE
          Resolve DNS queries
private static boolean trustProxy
           
private  boolean wildcard
           
 
Fields inherited from class java.security.Permission
 
Constructor Summary
(package private) SocketPermission(String host, int mask)
           
  SocketPermission(String host, String action)
          Enabled: Creates a new SocketPermission object with the specified actions.
 
Method Summary
 boolean equals(Object obj)
          Suppressed: Checks two SocketPermission objects for equality.
 String getActions()
          Enabled: Returns the canonical string representation of the actions.
private static String getActions(int mask)
          Returns the "canonical string representation" of the actions in the specified mask.
(package private)  void getCanonName()
          attempt to get the fully qualified domain name
private static String getHost(String host)
           
(package private)  void getIP()
          get IP addresses.
(package private)  int getMask()
          Return the current action mask.
private static int getMask(String action)
          Convert an action string to an integer actions mask.
 int hashCode()
          Suppressed: Returns the hash code value for this object.
 boolean implies(Permission p)
          Enabled: Checks if this socket permission object "implies" the specified permission.
(package private)  boolean impliesIgnoreMask(SocketPermission that)
          Checks if the incoming Permission's action are a proper subset of the this object's actions.
private  void init(String host, int mask)
          Initialize the SocketPermission object.
private  boolean inProxyWeTrust(SocketPermission that)
           
 PermissionCollection newPermissionCollection()
          Enabled: Returns a new PermissionCollection object for storing SocketPermission objects.
private  int[] parsePort(String port)
           
private  void readObject(ObjectInputStream s)
          readObject is called to restore the state of the SocketPermission from a stream.
private  void writeObject(ObjectOutputStream s)
          WriteObject is called to save the state of the SocketPermission to a stream.
 
Methods inherited from class java.security.Permission
checkGuard, getName, toString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

CONNECT

private static final int CONNECT
Connect to host:port


LISTEN

private static final int LISTEN
Listen on host:port


ACCEPT

private static final int ACCEPT
Accept a connection from host:port


RESOLVE

private static final int RESOLVE
Resolve DNS queries


NONE

private static final int NONE
No actions


ALL

private static final int ALL
All actions


PORT_MIN

private static final int PORT_MIN

PORT_MAX

private static final int PORT_MAX

PRIV_PORT_MAX

private static final int PRIV_PORT_MAX

mask

private transient int mask

actions

private String actions
the actions string.


hostname

private transient String hostname

cname

private transient String cname

addresses

private transient InetAddress[] addresses

wildcard

private transient boolean wildcard

init_with_ip

private transient boolean init_with_ip

invalid

private transient boolean invalid

portrange

private transient int[] portrange

trustProxy

private static boolean trustProxy
Constructor Detail

SocketPermission

public SocketPermission(String host,
                        String action)
Enabled: Creates a new SocketPermission object with the specified actions. The host is expressed as a DNS name, or as a numerical IP address. Optionally, a port or a portrange may be supplied (separated from the DNS name or IP address by a colon).

To specify the local machine, use "localhost" as the host. Also note: An empty host String ("") is equivalent to "localhost".

The actions parameter contains a comma-separated list of the actions granted for the specified host (and port(s)). Possible actions are "connect", "listen", "accept", "resolve", or any combination of those. "resolve" is automatically added when any of the other three are specified.

Examples of SocketPermission instantiation are the following:

    nr = new SocketPermission("www.catalog.com", "connect");
    nr = new SocketPermission("www.sun.com:80", "connect");
    nr = new SocketPermission("*.sun.com", "connect");
    nr = new SocketPermission("*.edu", "resolve");
    nr = new SocketPermission("204.160.241.0", "connect");
    nr = new SocketPermission("localhost:1024-65535", "listen");
    nr = new SocketPermission("204.160.241.0:1024-65535", "connect");
 

Parameters:
host - the hostname or IPaddress of the computer, optionally including a colon followed by a port or port range.
action - the action string.

SocketPermission

SocketPermission(String host,
                 int mask)
Method Detail

getHost

private static String getHost(String host)

parsePort

private int[] parsePort(String port)
                 throws Exception
Exception

init

private void init(String host,
                  int mask)
Initialize the SocketPermission object. We don't do any DNS lookups as this point, instead we hold off until the implies method is called.


getMask

private static int getMask(String action)
Convert an action string to an integer actions mask.

Parameters:
action - the action string
Returns:
the action mask

getCanonName

void getCanonName()
            throws UnknownHostException
attempt to get the fully qualified domain name

UnknownHostException

getIP

void getIP()
     throws UnknownHostException
get IP addresses. Sets invalid to true if we can't get them.

UnknownHostException

implies

public boolean implies(Permission p)
Enabled: Checks if this socket permission object "implies" the specified permission.

More specifically, this method first ensures that all of the following are true (and returns false if any of them are not):

Then implies checks each of the following, in order, and for each returns true if the stated condition is true:

If none of the above are true, implies returns false.

Specified by:
implies in class Permission
Parameters:
p - the permission to check against.
Returns:
true if the specified permission is implied by this object, false if not.

impliesIgnoreMask

boolean impliesIgnoreMask(SocketPermission that)
Checks if the incoming Permission's action are a proper subset of the this object's actions.

Check, in the following order:

Returns:
true if "permission" is a proper subset of the current object, false if not.

inProxyWeTrust

private boolean inProxyWeTrust(SocketPermission that)

equals

public boolean equals(Object obj)
Suppressed: Checks two SocketPermission objects for equality.

Specified by:
equals in class Permission
Parameters:
obj - the object to test for equality with this object.
Returns:
true if obj is a SocketPermission, and has the same hostname, port range, and actions as this SocketPermission object.

hashCode

public int hashCode()
Suppressed: Returns the hash code value for this object.

Specified by:
hashCode in class Permission
Returns:
a hash code value for this object.

getMask

int getMask()
Return the current action mask.

Returns:
the actions mask.

getActions

private static String getActions(int mask)
Returns the "canonical string representation" of the actions in the specified mask. Always returns present actions in the following order: connect, listen, accept, resolve.

Parameters:
mask - a specific integer action mask to translate into a string
Returns:
the canonical string representation of the actions

getActions

public String getActions()
Enabled: Returns the canonical string representation of the actions. Always returns present actions in the following order: connect, listen, accept, resolve.

Specified by:
getActions in class Permission
Returns:
the canonical string representation of the actions.

newPermissionCollection

public PermissionCollection newPermissionCollection()
Enabled: Returns a new PermissionCollection object for storing SocketPermission objects.

SocketPermission objects must be stored in a manner that allows them to be inserted into the collection in any order, but that also enables the PermissionCollection implies method to be implemented in an efficient (and consistent) manner.

Overrides:
newPermissionCollection in class Permission
Returns:
a new PermissionCollection object suitable for storing SocketPermissions.

writeObject

private void writeObject(ObjectOutputStream s)
                  throws IOException
WriteObject is called to save the state of the SocketPermission to a stream. The actions are serialized, and the superclass takes care of the name.

IOException

readObject

private void readObject(ObjectInputStream s)
                 throws IOException,
                        ClassNotFoundException
readObject is called to restore the state of the SocketPermission from a stream.

IOException
ClassNotFoundException


comments?