public final class ServerAcl
extends java.lang.Object
The ACL file is reloaded whenever a modification to it is detected. If you copy in a file with an older file date, you will need to touch it.
The public runtime method is permitAccess(). The public setup method is the constructor.
Each non-comment line in the ACL file must be a rule of the format:
{allow|deny} [/significant-bits]
For example
allow ahostname
deny ahost.domain.com
allow 127.0.0.1
allow 2001:db8::/32
In order to detect bit specification mistakes, we require that non-significant bits be zero in the values. An undesirable consequence of this is, you can't use a specification like the following to mean "all of the hosts on the same network as x.admc.com":
allow x.admc.com/24
ServerAcl(File)
,
permitAccess(java.lang.String)
Modifier and Type | Class and Description |
---|---|
static class |
ServerAcl.AclFormatException |
Constructor and Description |
---|
ServerAcl(java.io.File aclFile) |
Modifier and Type | Method and Description |
---|---|
static java.lang.String |
colonNotation(byte[] uba) |
static java.lang.String |
dottedNotation(byte[] uba) |
static void |
main(java.lang.String[] sa)
Utility method that allows interactive testing of individual
ACL records, as well as the net effect of the ACL record list.
|
boolean |
permitAccess(byte[] addr) |
boolean |
permitAccess(java.lang.String s)
Uses system network libraries to resolve the given String to an IP addr,
then determine whether this address is permitted or denied.
|
void |
setPrintWriter(java.io.PrintWriter pw) |
java.lang.String |
toString() |
public ServerAcl(java.io.File aclFile) throws java.io.IOException, ServerAcl.AclFormatException
java.io.IOException
ServerAcl.AclFormatException
public static java.lang.String dottedNotation(byte[] uba)
uba
- Unsigned byte arraypublic static java.lang.String colonNotation(byte[] uba)
uba
- Unsigned byte arraypublic void setPrintWriter(java.io.PrintWriter pw)
public java.lang.String toString()
toString
in class java.lang.Object
public boolean permitAccess(java.lang.String s)
permitAccess(byte[])
public boolean permitAccess(byte[] addr)
java.lang.RuntimeException
- if no rule covers the candidate address.
This would be the case if this class is applied to some
network protocol other than ipv4 or ipv6, without adding a
default rule for it.public static void main(java.lang.String[] sa) throws ServerAcl.AclFormatException, java.io.IOException
ServerAcl.AclFormatException
java.io.IOException
Copyright �� 2001 - 2013 HSQL Development Group.