/* * This file is part of aion-emu <aion-emu.com>. * * aion-emu 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. * * aion-emu 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 aion-emu. If not, see <http://www.gnu.org/licenses/>. */ package com.aionemu.gameserver.configs.network; import java.io.File; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.apache.log4j.Logger; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import com.aionemu.commons.network.IPRange; /** * * Class that is designed to read IPConfig.xml * * @author Taran * @author SoulKeeper */ public class IPConfig { /** * Logger */ private static final Logger log = Logger.getLogger(IPConfig.class); /** * Location of config file */ private static final String CONFIG_FILE = "./config/network/ipconfig.xml"; /** * List of all ip ranges */ private static final List<IPRange> ranges = new ArrayList<IPRange>(); /** * Default address */ private static byte[] defaultAddress; /** * Method that loads IPConfig */ public static void load() { try { SAXParser parser = SAXParserFactory.newInstance().newSAXParser(); parser.parse(new File(CONFIG_FILE), new DefaultHandler(){ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equals("ipconfig")) { try { defaultAddress = InetAddress.getByName(attributes.getValue("default")).getAddress(); } catch(UnknownHostException e) { throw new RuntimeException("Failed to resolve DSN for address: " + attributes.getValue("default"), e); } } else if(qName.equals("iprange")) { String min = attributes.getValue("min"); String max = attributes.getValue("max"); String address = attributes.getValue("address"); IPRange ipRange = new IPRange(min, max, address); ranges.add(ipRange); } } }); } catch(Exception e) { log.fatal("Critical error while parsing ipConfig", e); throw new Error("Can't load ipConfig", e); } } /** * Returns list of ip ranges * * @return list of ip ranges */ public static List<IPRange> getRanges() { return ranges; } /** * Returns default address * * @return default address */ public static byte[] getDefaultAddress() { return defaultAddress; } }