/*
** j###t ########## #### ####
** j###t ########## #### ####
** j###T "###L J###"
** ######P' ########## #########
** ######k, ########## T######T
** ####~###L ####
** #### q###L ########## .#####
** #### \###L ########## #####"
**
** Class History
**
** Date Name Description
** ---------|------------|-----------------------------------------------
** 09Jul97 merlin created this command
**
*/
package key.commands;
import key.*;
import java.io.IOException;
import java.util.StringTokenizer;
/**
* This command is intended to change the players context to
* the site specified in the argument
*/
public class RefSite extends Command
{
public RefSite()
{
setKey( "site" );
usage = "<site> [ newbieban | siteban | unban | display ]";
}
public void run( Player p, StringTokenizer args, String fullLine, CategoryCommand caller, InteractiveConnection ic, Flags flags ) throws IOException
{
if( args.hasMoreTokens() )
{
Network sites = Key.getInternet();
String siteToBan = args.nextToken();
StringTokenizer st = new StringTokenizer( siteToBan, "." );
Object o = null;
Integer addr;
boolean first = true;
while( st.hasMoreTokens() )
{
try
{
addr = Integer.valueOf( st.nextToken() );
}
catch( NumberFormatException ex )
{
// New - DNS stuff - If we get the first token
// is not a number, then try looking it up as a
// dns entry
if ( !first )
{
ic.sendFeedback( "Invalid Characters in Site Address" );
return;
}
o = sites.getElement( siteToBan );
if ( o == null )
{
ic.sendFeedback( siteToBan + " is not a registered site" );
return;
}
break;
}
first = false;
if ( addr.intValue() < 0 || addr.intValue() > 255 )
{
ic.sendFeedback( "Site address Octets may only contain values between 0 and 255" );
return;
}
o = sites.getElement( addr.toString() );
if( o instanceof Network )
sites = (Network) o;
else if( o instanceof Site )
break;
else if( o == null )
{
ic.sendFeedback( "What!!! Pre-emptive sitebans - you gotta be Joking!!!" );
return;
}
else
{
ic.sendFeedback( "Invalid Object found in Sites - Class " + o.getClass().getName() );
return;
}
}
if( !(o instanceof Site) )
{
ic.sendFeedback( "Site Address does represent a Site. Please check the address of the site provided." );
return;
}
Site site = (Site) o;
if( args.hasMoreTokens() )
{
Atom old = p.getContext();
p.setContext( site );
p.command( args.nextToken( "" ), ic, false );
p.setContext( old );
return;
}
p.setContext( site );
ic.sendFeedback( "Now referencing '" + p.getContext().getId() + "'" );
}
else
usage( ic );
}
}