comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:4385a7d0efd1
1 #!/usr/bin/env python
2 import os
3 import string
4 import sys
5 import time
6 import gc
7 import getopt
8 import traceback
9
10 # Simple usuage text for request via help or command line errors
11 def usage( retValue ):
12 print "\nUsage: \n[-d --directory directory] - Directory of where to load config files\n" + \
13 "[-n Server Name]\n" + \
14 "[-p]\n" + \
15 "[-l Lobby Boot Password]\n" + \
16 "[-r Run From???]\n" + \
17 "[-h --help]\n\n" + \
18 "[-m --manual]\n\n" +\
19 "Where -p is used to request meta registration. If -p is given, the boot\n" + \
20 "password and server name MUST be provided. If no options are given, user\n" + \
21 "will be prompted for information.\n\n"
22 sys.exit( retValue )
23
24 HG = os.environ["HG"]
25
26 import pyver
27 pyver.checkPyVersion()
28
29 os.system(HG + ' pull "http://hg.assembla.com/openrpg_rc"')
30 os.system(HG + ' update')
31
32 import orpg.networking.mplay_server
33 import orpg.networking.meta_server_lib
34
35 if __name__ == '__main__':
36 gc.set_debug(gc.DEBUG_UNCOLLECTABLE)
37 gc.enable()
38
39 orpg_server = orpg.networking.mplay_server.mplay_server()
40 lobby_boot_pwd = orpg_server.boot_pwd
41 server_directory = orpg_server.userPath
42 server_reg = orpg_server.reg
43 server_name = orpg_server.name
44 manualStart = False
45
46 # See if we have command line arguments in need of processing
47 try:
48 (opts, args) = getopt.getopt( sys.argv[1:], "n:phml:m:d:", ["help","manual","directory="] )
49 for o, a in opts:
50 if o in ("-d", "--directory"):
51 if (a[(len(a)-1):len(a)] != os.sep):
52 a = a + os.sep
53 if not (os.access(a, os.W_OK) and os.path.isdir(a)):
54 print "*** ERROR *** Directory '" + a + "' Either doesn't exist, or you don't have permission to write to it."
55 sys.exit(1)
56 server_directory = a
57 # Server Name
58 if o in ( "-n", ):
59 server_name = a
60 # Post server to meta
61 if o in ( "-p", ):
62 server_reg = 'Y'
63 # Lobby Password
64 if o in ( "-l", ):
65 lobby_boot_pwd = a
66 # Help
67 if o in ( "-h", "--help" ):
68 usage( 0 )
69 #Dont Auto Init Server
70 if o in ("-m", "--manual"):
71 manualStart = True
72 except:
73 print
74 usage( 1 )
75
76
77 # start server!
78 orpg_server.name = server_name
79 orpg_server.reg = server_reg
80 orpg_server.boot_pwd = lobby_boot_pwd
81 orpg_server.userPath = server_directory
82 orpg_server.remoteadmin = 1
83
84 if not manualStart:
85 orpg_server.initServer()
86
87 print "-----------------------------------------------------"
88 print "Type 'help' or '?' or 'h' for server console commands"
89 print "-----------------------------------------------------"
90
91 opt = "None"
92 orpg_server.console_log()
93 try:
94 while (opt != "kill") and ( opt != "quit"):
95 opt = raw_input("action?:")
96 words = opt.split()
97 if opt == "initserver":
98 userpath = raw_input("Please enter the directory you wish to load files from [myfile]:")
99 orpg_server.initServer(userPath=userpath)
100 elif opt == "broadcast":
101 msg = raw_input("Message:")
102 orpg_server.broadcast(msg)
103 elif opt == "dump":
104 orpg_server.player_dump()
105 elif opt == "dump groups":
106 orpg_server.groups_list()
107 elif opt == "get lobby boot password":
108 print "Lobby boot password is: " + orpg_server.groups['0'].boot_pwd
109 print
110 elif opt == "register":
111 msg = raw_input("Enter server name: ")
112 orpg_server.register(msg)
113 elif opt == "unregister":
114 orpg_server.unregister()
115 elif opt == "set lobby boot password":
116 lobby_boot_pwd = raw_input("Enter boot password for the Lobby: ")
117 orpg_server.groups['0'].boot_pwd = lobby_boot_pwd
118 elif len(words) == 2 and words[0] == "group":
119 orpg_server.group_dump(words[1])
120 elif opt == "help" or opt == "?" or opt == "h":
121 orpg_server.print_help()
122 elif opt == "search":
123 msg = raw_input("Pattern:")
124 orpg_server.search(msg)
125 elif opt == "remove room":
126 print "Removing a room will kick everyone in that room off your server."
127 print "You might consider going to that room and letting them know what you are about to do."
128 groupnumber = raw_input("Room group number:")
129 orpg_server.remove_room(groupnumber)
130 elif opt == "remotekill":
131 if orpg_server.toggleRemoteKill():
132 print "Remote Kill has been allowed!"
133 else:
134 print "Remote Kill has been disallowed"
135 elif opt == "uptime":
136 orpg_server.uptime()
137 elif opt == "roompasswords":
138 print orpg_server.RoomPasswords()
139 elif opt == "list":
140 orpg_server.player_list()
141 elif opt == "log":
142 orpg_server.console_log()
143 elif opt == "log meta":
144 orpg_server.toggleMetaLogging()
145 elif len(words) > 0 and words[0] == "logfile":
146 if len(words) > 1:
147 if words[1] == "off":
148 orpg_server.NetworkLogging(0)
149 elif words[1] == "on":
150 orpg_server.NetworkLogging(1)
151 elif words[1] == "split":
152 orpg_server.NetworkLogging(2)
153 else:
154 print "<command useage> logfile [off|on|split]"
155 else:
156 print orpg_server.NetworkLoggingStatus()
157 elif (len(words) > 0 and words[0]) == "monitor":
158 if len(words) >1:
159 print "Attempting to monitor client \""+str(words[1])+"\""
160 orpg_server.monitor(words[1])
161 else: print "<command useage> monitor (player id #)"
162 elif opt == "purge clients":
163 try:
164 orpg_server.kick_all_clients()
165 except Exception, e:
166 traceback.print_exc()
167 elif len(words)>0 and words[0] == "zombie":
168 if len(words) > 1:
169 if words[1] == "set":
170 if len(words) > 2:
171 try:
172 t = int(words[2])
173 orpg_server.zombie_time = t
174 print ("--> Zombie auto-kick time set to "+str(t)+" minutes");
175 except Exception, e:
176 print "Invalid zombie time!"
177 traceback.print_exc()
178 else:
179 orpg_server.zombie_time = 480
180 print "--> Zombie auto-kick time set to default (480 mins)";
181 else:
182 print "<command useage> zombie [set [mins]]"
183 else:
184 timeout = int(orpg_server.zombie_time)
185 print ("--> Zombie auto-kick time set to "+str(timeout)+" minutes. Use \"zombie set [min]\" to change.");
186 elif opt == "kick":
187 kick_id = raw_input("Kick Player # ")
188 kick_msg = raw_input("Reason(optional): ")
189 orpg_server.admin_kick(kick_id,kick_msg)
190 elif opt == "ban":
191 ban_id = raw_input("Ban Player # ")
192 ban_msg = raw_input("Reason(optional): ")
193 orpg_server.admin_ban(ban_id, ban_msg)
194 elif opt == "sendsize":
195 send_len = raw_input("Send Size # ")
196 orpg_server.admin_setSendSize(send_len)
197 elif opt == "remoteadmin":
198 if orpg_server.toggleRemoteAdmin():
199 print "Remote Admin has been allowed!"
200 else:
201 print "Remote Admin has been disallowed"
202 elif opt == "togglelobbysound":
203 if orpg_server.admin_toggleSound():
204 print "Sending a lobby sound has been enabled!"
205 print 'Playing: ' + orpg_server.lobbySound
206 else:
207 print "Sending a lobby sound has been disabled"
208 elif opt == "lobbysound":
209 soundfile = raw_input("Sound File URL: ")
210 orpg_server.admin_soundFile(soundfile)
211 else:
212 if (opt == "kill") or (opt == "quit"):
213 orpg_server.saveBanList()
214 print ("Closing down OpenRPG server. Please wait...")
215 else:
216 print ("[UNKNOWN COMMAND: \""+opt+"\" ]")
217
218 except Exception, e:
219 print "EXCEPTION: "+str(e)
220 traceback.print_exc()
221 raw_input("press <enter> key to terminate program")
222
223 orpg_server.kill_server()