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; }