// Copyright (c) 2015 Christopher "BlayTheNinth" Baker
package net.blay09.mods.eirairc.config.base;
import net.blay09.mods.eirairc.util.Utils;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration;
import java.util.HashMap;
import java.util.Map;
public class ServiceConfig {
private static final String CATEGORY = "services";
private static final Map<String, ServiceSettings> serverMap = new HashMap<>();
private static final ServiceSettings defaultSettings = new ServiceSettings("NickServ", "PRIVMSG NickServ IDENTIFY {USER} {PASS}", "PRIVMSG NickServ GHOST {NICK} {PASS}");
public static ServiceSettings getSettings(String host, String type) {
ServiceSettings settings = serverMap.get(host);
if(settings == null) {
if(type != null) {
type = type.replaceAll("[0-9]", "*");
settings = serverMap.get(type);
}
if(settings == null) {
return defaultSettings;
}
return settings;
}
return settings;
}
public static void setupDefaultServices(Configuration config) {
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "synirc", "serviceName", "NickServ");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "synirc", "cmdIdentify", "NickServ IDENTIFY {PASS}");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "synirc", "cmdGhost", "NickServ GHOST {NICK} {PASS}");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "synirc", "serverList", new String[] { Utils.quote("irc.synirc.net") });
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "atheme", "serviceName", "NickServ");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "atheme", "cmdIdentify", "PRIVMSG NickServ :IDENTIFY {USER} {PASS}");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "atheme", "cmdGhost", "PRIVMSG NickServ :GHOST {NICK} {PASS}");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "atheme", "serverList", new String[] {
"\"charybdis-*.*.*-dev\"",
"\"irc.esper.net\""
});
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "anope", "serviceName", "NickServ");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "anope", "cmdIdentify", "PRIVMSG NickServ :IDENTIFY {PASS}");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "anope", "cmdGhost", "PRIVMSG NickServ :GHOST {NICK} {PASS}");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "qbot", "serviceName", "Q");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "qbot", "cmdIdentify", "AUTH {USER} {PASS}");
config.get(CATEGORY + Configuration.CATEGORY_SPLITTER + "qbot", "serverList", new String[] { "\"irc.quakenet.org\"" });
config.save();
}
public static void load(Configuration config) {
serverMap.clear();
for(ConfigCategory category : config.getCategory(CATEGORY).getChildren()) {
String qname = category.getQualifiedName();
String serviceName = Utils.unquote(config.get(qname, "serviceName", "").getString());
String cmdIdentify = Utils.unquote(config.get(qname, "cmdIdentify", "").getString());
String cmdGhost = Utils.unquote(config.get(qname, "cmdGhost", "").getString());
ServiceSettings nss = new ServiceSettings(serviceName, cmdIdentify, cmdGhost);
String[] serverList = config.get(qname, "serverList", new String[0]).getStringList();
for(String entry : serverList) {
serverMap.put(Utils.unquote(entry), nss);
}
}
}
}