Package com.l2jfrozen.gsregistering

Source Code of com.l2jfrozen.gsregistering.GameServerRegister

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.l2jfrozen.gsregistering;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.math.BigInteger;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map;

import com.l2jfrozen.Config;
import com.l2jfrozen.ServerType;
import com.l2jfrozen.gameserver.datatables.GameServerTable;
import com.l2jfrozen.gameserver.thread.LoginServerThread;
import com.l2jfrozen.util.CloseUtil;
import com.l2jfrozen.util.database.L2DatabaseFactory;

public class GameServerRegister
{
  private static String _choice;
  private static boolean _choiceOk;

  public static void main(String[] args) throws IOException
  {
    ServerType.serverMode = ServerType.MODE_LOGINSERVER;
    Config.load();
    LineNumberReader _in = new LineNumberReader(new InputStreamReader(System.in));
    try
    {
      GameServerTable.load();
    }
    catch (Exception e)
    {
      System.out.println("FATAL: Failed loading GameServerTable. Reason: " + e.getMessage());
      e.printStackTrace();
      System.exit(1);
    }
    GameServerTable gameServerTable = GameServerTable.getInstance();
    System.out.println("Welcome to L2JFrozen GameServer Regitering");
    System.out.println("Enter The id of the server you want to register");
    System.out.println("Type 'help' to get a list of ids.");
    System.out.println("Type 'clean' to unregister all currently registered gameservers on this LoginServer.");
    while (!_choiceOk)
    {
      System.out.println("Your choice:");
      _choice = _in.readLine();
      if (_choice.equalsIgnoreCase("help"))
      {
        for (Map.Entry<Integer, String> entry : gameServerTable.getServerNames().entrySet())
        {
          System.out.println("Server: ID: " + entry.getKey() + "\t- " + entry.getValue() + " - In Use: " + (gameServerTable.hasRegisteredGameServerOnId(entry.getKey()) ? "YES" : "NO"));
        }
        System.out.println("You can also see servername.xml");
      }
      else if (_choice.equalsIgnoreCase("clean"))
      {
        System.out.print("This is going to UNREGISTER ALL servers from this LoginServer. Are you sure? (y/n) ");
        _choice = _in.readLine();
        if (_choice.equals("y"))
        {
          GameServerRegister.cleanRegisteredGameServersFromDB();
          gameServerTable.getRegisteredGameServers().clear();
        }
        else
        {
          System.out.println("ABORTED");
        }
      }
      else
      {
        try
        {
          int id = Integer.parseInt(_choice);
          int size = gameServerTable.getServerNames().size();
          if (size == 0)
          {
            System.out.println("No server names avalible, please make sure that servername.xml is in the LoginServer directory.");
            System.exit(1);
          }
         
          _choice="";
         
         
          while (!_choice.equalsIgnoreCase(""))
          {
            System.out.println("External Server Ip:");
            _choice = _in.readLine();
          }
         
          String ip = _choice;
         
          String name = gameServerTable.getServerNameById(id);
          if (name == null)
          {
            System.out.println("No name for id: " + id);
            continue;
          }
         
          if (gameServerTable.hasRegisteredGameServerOnId(id))
          {
            System.out.println("This id is not free");
          }
          else
          {
            byte[] hexId = LoginServerThread.generateHex(16);
            gameServerTable.registerServerOnDB(hexId, id, ip);
            Config.saveHexid(id, new BigInteger(hexId).toString(16), "hexid.txt");
            System.out.println("Server Registered hexid saved to 'hexid.txt'");
            System.out.println("Put this file in the /config folder of your gameserver.");
            return;
          }
        }
        catch (NumberFormatException nfe)
        {
          if(Config.ENABLE_ALL_EXCEPTIONS)
            nfe.printStackTrace();
         
          System.out.println("Please, type a number or 'help'");
        }
      }
    }
  }

  public static void cleanRegisteredGameServersFromDB()
  {
    java.sql.Connection con = null;
    PreparedStatement statement = null;
    try
    {
      con = L2DatabaseFactory.getInstance().getConnection(false);
      statement = con.prepareStatement("DELETE FROM gameservers");
      statement.executeUpdate();
      statement.close();
    }
    catch (SQLException e)
    {
      if(Config.ENABLE_ALL_EXCEPTIONS)
        e.printStackTrace();
     
      System.out.println("SQL error while cleaning registered servers: " + e);
    }
    finally
    {
      CloseUtil.close(con);
      con = null;
    }
  }
}
TOP

Related Classes of com.l2jfrozen.gsregistering.GameServerRegister

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.