Mercurial > traipse_dev
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() |