/* ** 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 ); } }