dsIIr4/bin/
dsIIr4/extra/creremote/
dsIIr4/extra/wolfpaw/
dsIIr4/lib/cmds/admins/
dsIIr4/lib/cmds/common/
dsIIr4/lib/cmds/creators/include/
dsIIr4/lib/cmds/creators/include/SCCS/
dsIIr4/lib/daemon/services/
dsIIr4/lib/doc/
dsIIr4/lib/domains/Ylsrim/
dsIIr4/lib/domains/Ylsrim/adm/
dsIIr4/lib/domains/Ylsrim/armor/
dsIIr4/lib/domains/Ylsrim/broken/
dsIIr4/lib/domains/Ylsrim/fish/
dsIIr4/lib/domains/Ylsrim/meal/
dsIIr4/lib/domains/Ylsrim/npc/
dsIIr4/lib/domains/Ylsrim/virtual/
dsIIr4/lib/domains/Ylsrim/weapon/
dsIIr4/lib/domains/campus/adm/
dsIIr4/lib/domains/campus/etc/
dsIIr4/lib/domains/campus/meals/
dsIIr4/lib/domains/campus/npc/
dsIIr4/lib/domains/campus/save/
dsIIr4/lib/domains/campus/txt/
dsIIr4/lib/domains/campus/txt/ai/charles/
dsIIr4/lib/domains/campus/txt/ai/charles/bak2/
dsIIr4/lib/domains/campus/txt/ai/charles/bak2/bak1/
dsIIr4/lib/domains/campus/txt/ai/charly/
dsIIr4/lib/domains/campus/txt/ai/charly/bak/
dsIIr4/lib/domains/campus/txt/jenny/
dsIIr4/lib/domains/default/creator/
dsIIr4/lib/domains/default/doors/
dsIIr4/lib/domains/default/etc/
dsIIr4/lib/domains/default/virtual/
dsIIr4/lib/domains/default/weap/
dsIIr4/lib/domains/town/virtual/
dsIIr4/lib/lib/comp/
dsIIr4/lib/lib/lvs/
dsIIr4/lib/lib/user/
dsIIr4/lib/lib/virtual/
dsIIr4/lib/log/
dsIIr4/lib/obj/book_source/
dsIIr4/lib/obj/include/
dsIIr4/lib/realms/template/
dsIIr4/lib/realms/template/adm/
dsIIr4/lib/realms/template/area/armor/
dsIIr4/lib/realms/template/area/npc/
dsIIr4/lib/realms/template/area/obj/
dsIIr4/lib/realms/template/area/room/
dsIIr4/lib/realms/template/area/weap/
dsIIr4/lib/realms/template/bak/
dsIIr4/lib/realms/template/cmds/
dsIIr4/lib/save/
dsIIr4/lib/save/kills/o/
dsIIr4/lib/secure/cfg/classes/
dsIIr4/lib/secure/cmds/creators/include/
dsIIr4/lib/secure/cmds/players/
dsIIr4/lib/secure/cmds/players/include/
dsIIr4/lib/secure/daemon/include/
dsIIr4/lib/secure/lib/
dsIIr4/lib/secure/lib/include/
dsIIr4/lib/secure/lib/net/include/
dsIIr4/lib/secure/lib/std/
dsIIr4/lib/secure/modules/
dsIIr4/lib/secure/npc/
dsIIr4/lib/secure/obj/include/
dsIIr4/lib/secure/room/
dsIIr4/lib/secure/save/
dsIIr4/lib/secure/save/boards/
dsIIr4/lib/secure/save/players/g/
dsIIr4/lib/secure/tmp/
dsIIr4/lib/secure/verbs/creators/
dsIIr4/lib/shadows/
dsIIr4/lib/spells/
dsIIr4/lib/std/board/
dsIIr4/lib/std/lib/
dsIIr4/lib/tmp/
dsIIr4/lib/verbs/admins/include/
dsIIr4/lib/verbs/common/
dsIIr4/lib/verbs/common/include/
dsIIr4/lib/verbs/creators/include/
dsIIr4/lib/verbs/players/include/SCCS/
dsIIr4/lib/verbs/rooms/
dsIIr4/lib/verbs/rooms/include/
dsIIr4/lib/www/
dsIIr4/v22.2b14-dsouls2/
dsIIr4/v22.2b14-dsouls2/ChangeLog.old/
dsIIr4/v22.2b14-dsouls2/Win32/
dsIIr4/v22.2b14-dsouls2/compat/
dsIIr4/v22.2b14-dsouls2/compat/simuls/
dsIIr4/v22.2b14-dsouls2/include/
dsIIr4/v22.2b14-dsouls2/mudlib/
dsIIr4/v22.2b14-dsouls2/testsuite/
dsIIr4/v22.2b14-dsouls2/testsuite/clone/
dsIIr4/v22.2b14-dsouls2/testsuite/command/
dsIIr4/v22.2b14-dsouls2/testsuite/data/
dsIIr4/v22.2b14-dsouls2/testsuite/etc/
dsIIr4/v22.2b14-dsouls2/testsuite/include/
dsIIr4/v22.2b14-dsouls2/testsuite/inherit/
dsIIr4/v22.2b14-dsouls2/testsuite/inherit/master/
dsIIr4/v22.2b14-dsouls2/testsuite/log/
dsIIr4/v22.2b14-dsouls2/testsuite/single/
dsIIr4/v22.2b14-dsouls2/testsuite/single/tests/compiler/
dsIIr4/v22.2b14-dsouls2/testsuite/single/tests/efuns/
dsIIr4/v22.2b14-dsouls2/testsuite/single/tests/operators/
dsIIr4/v22.2b14-dsouls2/testsuite/u/
dsIIr4/v22.2b14-dsouls2/tmp/
dsIIr4/win32/
#include <lib.h>
#include <daemons.h>

inherit LIB_DAEMON;

string file;

mixed cmd(string args) {
    string ip, name;
    int port, octet1, octet2, octet3, octet4;

    if(!archp(previous_object())) return "No.";

    if(!args || args == ""){
	object omud = find_object(INTERMUD_D);
	if(!omud){
	    write("The intermud daemon is not loaded. Try: help switchrouter");
	    write("It may also be disabled. Try: help mudconfig");
	    return 1;
	}
	name = omud->GetNameservers()[0][0];
	ip = omud->GetNameservers()[0][1];
	if(!name || !ip){
	    write("There appears to be something wrong with your intermud daemon config.");
	    return 1;
	}
	write("Your current direct router connection is to "+name+" "+ip);
	if(sizeof(omud->GetNameservers()) > 1){
	    write("NOTE: You have multiple routers configured. The array "+
	      "of routers you are connected to is: "+identify(omud->GetNameservers()));
	}
	return 1;
    }

    if(find_object(INTERMUD_D))find_object(INTERMUD_D)->eventClearVars();
    if(find_object(INTERMUD_D))find_object(INTERMUD_D)->eventDestruct();


    if(args == "reload"){
	write("Reloading intermud daemon.");
	if( load_object(INTERMUD_D) ) write("Intermud daemon reloaded.");
	else write("Failed to reload intermud daemon.");
	return 1;
    }

    if(sscanf(args,"%s %s %d", name, ip, port) != 3 || port > 65534 ||
      sscanf(ip,"%d.%d.%d.%d", octet1, octet2, octet3, octet4) != 4){
	write("Invalid router reference. \nTry: switchrouter <ROUTERNAME> <NUMERICAL IP> <PORT>");
	write("For example: switchrouter yatmim 149.152.218.102 23");
	if( load_object(INTERMUD_D) ) write("Intermud daemon reloaded.");
	else write("Failed to reload intermud daemon.");
	return 1;
    }

    file = read_file(INTERMUD_D+".c");
    //write_file("/tmp/1.txt",file,1);

    file = replace_matching_line(file, "//Nameservers", "");

    //write_file("/tmp/2.txt",file,1);
    if(first(name,1) != "*") name = "*"+name;

    file = replace_matching_line(file, "Nameservers = ({",
      "    Nameservers = ({ ({ \""+name+"\", \""+ip+" "+port+"\" }) });", 1);

    //write_file("/tmp/3.txt",file,1);

    unguarded( (: write_file(INTERMUD_D+".c",file,1) :) );

    if( load_object(INTERMUD_D) ) write("Intermud daemon reloaded.");
    else write("Failed to reload intermud daemon.");

    write("Done.");
    return 1;
}


string GetHelp(string args) {
    return ("Syntax: switchrouter <NAME> <IP> <PORT>\n\n"
      "Stops the intermud daemon, changes the default intermud "
      "router to the ip and port you specify, wipes the previous "
      "router data, and reloads INTERMUD_D. Without arguments, "
      "this command will clear your intermud cache and reload "
      "the daemon. Known routers are:\n"
      //"*gjs 198.144.203.194 9000 (The \"official\" intermud.org router)\n"
      "*yatmim 149.152.218.102 23 (The \"official\" Dead Souls router)\n"
      "*i4 204.209.44.3 8080 (The backup/alternate router for *yatmim)\n"
      "The official current Dead Souls router's IP will always be "
      "available at:\n"
      "http://dead-souls.net/router.html"
      "\n\n"
      "See also: mudlist, mudconfig");
}