Mercurial > traipse_dev
diff start_server.py @ 0:4385a7d0efd1 grumpy-goblin
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author | sirebral |
---|---|
date | Tue, 14 Jul 2009 16:41:58 -0500 |
parents | |
children | f24c6e431a15 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/start_server.py Tue Jul 14 16:41:58 2009 -0500 @@ -0,0 +1,223 @@ +#!/usr/bin/env python +import os +import string +import sys +import time +import gc +import getopt +import traceback + +# Simple usuage text for request via help or command line errors +def usage( retValue ): + print "\nUsage: \n[-d --directory directory] - Directory of where to load config files\n" + \ + "[-n Server Name]\n" + \ + "[-p]\n" + \ + "[-l Lobby Boot Password]\n" + \ + "[-r Run From???]\n" + \ + "[-h --help]\n\n" + \ + "[-m --manual]\n\n" +\ + "Where -p is used to request meta registration. If -p is given, the boot\n" + \ + "password and server name MUST be provided. If no options are given, user\n" + \ + "will be prompted for information.\n\n" + sys.exit( retValue ) + +HG = os.environ["HG"] + +import pyver +pyver.checkPyVersion() + +os.system(HG + ' pull "http://hg.assembla.com/openrpg_rc"') +os.system(HG + ' update') + +import orpg.networking.mplay_server +import orpg.networking.meta_server_lib + +if __name__ == '__main__': + gc.set_debug(gc.DEBUG_UNCOLLECTABLE) + gc.enable() + + orpg_server = orpg.networking.mplay_server.mplay_server() + lobby_boot_pwd = orpg_server.boot_pwd + server_directory = orpg_server.userPath + server_reg = orpg_server.reg + server_name = orpg_server.name + manualStart = False + + # See if we have command line arguments in need of processing + try: + (opts, args) = getopt.getopt( sys.argv[1:], "n:phml:m:d:", ["help","manual","directory="] ) + for o, a in opts: + if o in ("-d", "--directory"): + if (a[(len(a)-1):len(a)] != os.sep): + a = a + os.sep + if not (os.access(a, os.W_OK) and os.path.isdir(a)): + print "*** ERROR *** Directory '" + a + "' Either doesn't exist, or you don't have permission to write to it." + sys.exit(1) + server_directory = a + # Server Name + if o in ( "-n", ): + server_name = a + # Post server to meta + if o in ( "-p", ): + server_reg = 'Y' + # Lobby Password + if o in ( "-l", ): + lobby_boot_pwd = a + # Help + if o in ( "-h", "--help" ): + usage( 0 ) + #Dont Auto Init Server + if o in ("-m", "--manual"): + manualStart = True + except: + print + usage( 1 ) + + + # start server! + orpg_server.name = server_name + orpg_server.reg = server_reg + orpg_server.boot_pwd = lobby_boot_pwd + orpg_server.userPath = server_directory + orpg_server.remoteadmin = 1 + + if not manualStart: + orpg_server.initServer() + + print "-----------------------------------------------------" + print "Type 'help' or '?' or 'h' for server console commands" + print "-----------------------------------------------------" + + opt = "None" + orpg_server.console_log() + try: + while (opt != "kill") and ( opt != "quit"): + opt = raw_input("action?:") + words = opt.split() + if opt == "initserver": + userpath = raw_input("Please enter the directory you wish to load files from [myfile]:") + orpg_server.initServer(userPath=userpath) + elif opt == "broadcast": + msg = raw_input("Message:") + orpg_server.broadcast(msg) + elif opt == "dump": + orpg_server.player_dump() + elif opt == "dump groups": + orpg_server.groups_list() + elif opt == "get lobby boot password": + print "Lobby boot password is: " + orpg_server.groups['0'].boot_pwd + print + elif opt == "register": + msg = raw_input("Enter server name: ") + orpg_server.register(msg) + elif opt == "unregister": + orpg_server.unregister() + elif opt == "set lobby boot password": + lobby_boot_pwd = raw_input("Enter boot password for the Lobby: ") + orpg_server.groups['0'].boot_pwd = lobby_boot_pwd + elif len(words) == 2 and words[0] == "group": + orpg_server.group_dump(words[1]) + elif opt == "help" or opt == "?" or opt == "h": + orpg_server.print_help() + elif opt == "search": + msg = raw_input("Pattern:") + orpg_server.search(msg) + elif opt == "remove room": + print "Removing a room will kick everyone in that room off your server." + print "You might consider going to that room and letting them know what you are about to do." + groupnumber = raw_input("Room group number:") + orpg_server.remove_room(groupnumber) + elif opt == "remotekill": + if orpg_server.toggleRemoteKill(): + print "Remote Kill has been allowed!" + else: + print "Remote Kill has been disallowed" + elif opt == "uptime": + orpg_server.uptime() + elif opt == "roompasswords": + print orpg_server.RoomPasswords() + elif opt == "list": + orpg_server.player_list() + elif opt == "log": + orpg_server.console_log() + elif opt == "log meta": + orpg_server.toggleMetaLogging() + elif len(words) > 0 and words[0] == "logfile": + if len(words) > 1: + if words[1] == "off": + orpg_server.NetworkLogging(0) + elif words[1] == "on": + orpg_server.NetworkLogging(1) + elif words[1] == "split": + orpg_server.NetworkLogging(2) + else: + print "<command useage> logfile [off|on|split]" + else: + print orpg_server.NetworkLoggingStatus() + elif (len(words) > 0 and words[0]) == "monitor": + if len(words) >1: + print "Attempting to monitor client \""+str(words[1])+"\"" + orpg_server.monitor(words[1]) + else: print "<command useage> monitor (player id #)" + elif opt == "purge clients": + try: + orpg_server.kick_all_clients() + except Exception, e: + traceback.print_exc() + elif len(words)>0 and words[0] == "zombie": + if len(words) > 1: + if words[1] == "set": + if len(words) > 2: + try: + t = int(words[2]) + orpg_server.zombie_time = t + print ("--> Zombie auto-kick time set to "+str(t)+" minutes"); + except Exception, e: + print "Invalid zombie time!" + traceback.print_exc() + else: + orpg_server.zombie_time = 480 + print "--> Zombie auto-kick time set to default (480 mins)"; + else: + print "<command useage> zombie [set [mins]]" + else: + timeout = int(orpg_server.zombie_time) + print ("--> Zombie auto-kick time set to "+str(timeout)+" minutes. Use \"zombie set [min]\" to change."); + elif opt == "kick": + kick_id = raw_input("Kick Player # ") + kick_msg = raw_input("Reason(optional): ") + orpg_server.admin_kick(kick_id,kick_msg) + elif opt == "ban": + ban_id = raw_input("Ban Player # ") + ban_msg = raw_input("Reason(optional): ") + orpg_server.admin_ban(ban_id, ban_msg) + elif opt == "sendsize": + send_len = raw_input("Send Size # ") + orpg_server.admin_setSendSize(send_len) + elif opt == "remoteadmin": + if orpg_server.toggleRemoteAdmin(): + print "Remote Admin has been allowed!" + else: + print "Remote Admin has been disallowed" + elif opt == "togglelobbysound": + if orpg_server.admin_toggleSound(): + print "Sending a lobby sound has been enabled!" + print 'Playing: ' + orpg_server.lobbySound + else: + print "Sending a lobby sound has been disabled" + elif opt == "lobbysound": + soundfile = raw_input("Sound File URL: ") + orpg_server.admin_soundFile(soundfile) + else: + if (opt == "kill") or (opt == "quit"): + orpg_server.saveBanList() + print ("Closing down OpenRPG server. Please wait...") + else: + print ("[UNKNOWN COMMAND: \""+opt+"\" ]") + + except Exception, e: + print "EXCEPTION: "+str(e) + traceback.print_exc() + raw_input("press <enter> key to terminate program") + + orpg_server.kill_server()