All pastes #20342 Raw Edit

Anonymous

public text v1 · immutable
#20342 ·published 2005-08-18 19:38 UTC
rendered paste body
package net.sf.l2j.controller;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.StringTokenizer;
import java.util.logging.Logger;

import net.sf.l2j.gameserver.Shutdown;
import net.sf.l2j.gameserver.clientpackets.Say2;
import net.sf.l2j.gameserver.model.L2PcInstance;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.serverpackets.CreatureSay;

public class InteractiveSocket extends Thread
{
	
	static Logger _log = Logger.getLogger(InteractiveSocket.class.getName());

	public static void main(String[] args) throws IOException
	{
	}
	
    public void close()
    {
    	_log.info("closing interactive controller");
        this.interrupt();
        try
        {
            server.close();
        }
        catch (IOException e)
        {
        }
    }

	
	public void run()
	{
		
		while(true)
		{
			_log.info("waiting for connections...");
			try
			{
				client = server.accept();
				is = new DataInputStream(client.getInputStream());
				os = new PrintStream(client.getOutputStream());
				_log.info("New interactive connection from " + client.getInetAddress().getHostAddress());

				while(true)
				{
					String cmd = is.readLine();
					_log.info("I've got command: <"+cmd+">");
					
					if(cmd.equals("quit"))
					{
						client.close();
					}
					else if(cmd.startsWith("announce"))
					{
						StringTokenizer st = new StringTokenizer(cmd);
			            if (st.countTokens() > 1)
			            {
			            	st.nextToken(); //skip 'announce' string
			            }
			            
						CreatureSay cs = new CreatureSay(0, Say2.ANNOUNCEMENT, "", cmd);
						
						for (L2PcInstance player : L2World.getInstance().getAllPlayers())
						{
							player.sendPacket(cs);
						}
					}
					else if(cmd.equals("restart"))
					{
						shutdown = new Shutdown(60, true);
						shutdown.start();
					}
					else if(cmd.equals("shutdown"))
					{
						shutdown = new Shutdown(60, false);
						shutdown.start();
					}
					else if(cmd.equals("kick"))
					{
						StringTokenizer st = new StringTokenizer(cmd);
			            if (st.countTokens() > 1)
			            {
			                st.nextToken();
			                String player = st.nextToken();
			                L2PcInstance plyr = L2World.getInstance().getPlayer(player);
			                if (plyr != null)
			                {
			                    plyr.logout();
			                    os.println("Character "+player+" kicked");
			                }
			            }
					}
				}
			}
			catch (IOException e)
			{
				System.out.println(e.getMessage());
			}
		}

	}
	
	public InteractiveSocket(String threadName)
	{
	}
	
	public InteractiveSocket() throws IOException
	{
		
		super("InteractiveSocket");

		try
		{
			server = new ServerSocket(2009);
		}
		catch (IOException e)
		{
			System.out.println(e.getMessage());
		}
		
		System.out.println("Interactive socket ready on port 2009");
	}
	
	private ServerSocket 	server;
	private Socket			client;
	private DataInputStream is;
    private PrintStream		os;
    private static Shutdown shutdown = null;
}