comparison orpg/networking/server_plugins.py @ 100:7ed4979cc1cf beta

Traipse Beta 'OpenRPG' {090925-00} Traipse is a distribution of OpenRPG that is designed to be easy to setup and go. Traipse also makes it easy for developers to work on code without fear of sacrifice. 'Ornery-Orc' continues the trend of 'Grumpy' and adds fixes to the code. 'Ornery-Orc''s main goal is to offer more advanced features and enhance the productivity of the user. Update Summary: 090925-00: Adds menu changes to draw attention to important updates, errors, or other events. (image info coming soon) Traipse URL is not included in the repos tab and is set as default. Fixes Copy for Windows and Linux (finally!!) users. Fixes incomplete update to Grid and List nodes. Fixes incomplete update to Chat Commands. Fixes problems with Remote Image Upload. Fixes Drop and Drag of Minis to Map. CherryPy can now use any image in the webfiles/ folder and sub-folders. CherryPy can now Drop and Drag Minis to the Map. Minor changes to Update Manager's GUI. Expert recommendation warning added to Revision Update. Step down compatibility with open_rpg & component added to orpgCore. Fixes CherryPit misspelling. Makes Traipse Suite 'Attention' item portable, and executes it on 'Critical' debug notices. Adds incomplete Shift + Enter to Text Entry, currently creates a 'Critical' warning. New default Lobby Map, designed for Traipse. Feel free to change it. Updates to Server GUI: * Admin can Ban from Backend. * Admin can Modify Ban List and Un Ban users. * Server GUI finds your Lobby Name * New users default as Lurker unless a Role is set Cleaner TraipseSuiteAttention portability and clean up in Main. Die Roll Commands addition from Core code allowing Math Ordering with ()'s New About Dialog. A more uniform About Dialog. Corrects image loading of duplicate images.
author sirebral
date Fri, 25 Sep 2009 20:46:02 -0500
parents 68c7bd272f27
children 06f10429eedc
comparison
equal deleted inserted replaced
94:118fbe111922 100:7ed4979cc1cf
22 self.__ptype = ptype 22 self.__ptype = ptype
23 self.__plugins = {} 23 self.__plugins = {}
24 24
25 def initBase(self): 25 def initBase(self):
26 self._startPlugins() 26 self._startPlugins()
27
28 27
29 #Methods 28 #Methods
30 def _startPlugins(self): 29 def _startPlugins(self):
31 autoload = [] 30 autoload = []
32 #Fill autoload from some file with the Plugin Names 31 #Fill autoload from some file with the Plugin Names
58 57
59 #Now Load it 58 #Now Load it
60 self._load(pluginData) 59 self._load(pluginData)
61 60
62 #Write to the autoload file for this plugin 61 #Write to the autoload file for this plugin
63
64 self.__plugins[pluginName].Activated = True 62 self.__plugins[pluginName].Activated = True
65 self.__plugins[pluginName].start() 63 self.__plugins[pluginName].start()
66 64
67 def deactivatePugin(self, pluginData): 65 def deactivatePugin(self, pluginData):
68 if not self.__plugins.has_key(pluginName): 66 if not self.__plugins.has_key(pluginName):
69 #Print some error about invalid plugin 67 #Print some error about invalid plugin
70 return 68 return
69
71 pluginData = self.__plugins[pluginName] 70 pluginData = self.__plugins[pluginName]
72
73 self.__plugins[pluginName].stop() 71 self.__plugins[pluginName].stop()
74 72
75 #Unload it 73 #Unload it
76 self._unload(pluginData) 74 self._unload(pluginData)
77
78 #Remove this plugin from the autoload file 75 #Remove this plugin from the autoload file
79 76
80 #Private Methods 77 #Private Methods
81 def _findModule(self, pluginFile): 78 def _findModule(self, pluginFile):
82 s1 = pluginFile.split(os.sep) 79 s1 = pluginFile.split(os.sep)
83 s2 = s1[-1].split('.') 80 s2 = s1[-1].split('.')
84 return ('plugins.' + self.__ptype + '.' + s2[0], s2[0]) 81 return ('plugins.' + self.__ptype + '.' + s2[0], s2[0])
85 82
86 def _unload(self, pluginData): 83 def _unload(self, pluginData):
87 self.__plugins[pluginData.Name] = PluginData(pluginData.Name, pluginData.File, pluginData.Author, pluginData.Help) 84 self.__plugins[pluginData.Name] = PluginData(pluginData.Name,
85 pluginData.File,
86 pluginData.Author,
87 pluginData.Help)
88 unload = [] 88 unload = []
89 mod = self._findModule(pluginData.File)[0] 89 mod = self._findModule(pluginData.File)[0]
90 for key, module in sys.modules.iteritems(): 90 for key, module in sys.modules.iteritems():
91 if str(module).find(mod) > -1: 91 if str(module).find(mod) > -1:
92 unload.append(key) 92 unload.append(key)
113 def _getPlugins(self): 113 def _getPlugins(self):
114 return self.__plugins 114 return self.__plugins
115 115
116 def _getType(self): 116 def _getType(self):
117 return self.__ptype 117 return self.__ptype
118
119
120 #Properties 118 #Properties
121 Plugins = property(_getPlugins, None) 119 Plugins = property(_getPlugins, None)
122 Type = property(_getType, None) 120 Type = property(_getType, None)
123 121
124 class ServerPluginsClass(BasePluginsClass): 122 class ServerPluginsClass(BasePluginsClass):
130 self.initBase() 128 self.initBase()
131 129
132 def preParseIncoming(self, xml_dom, data): 130 def preParseIncoming(self, xml_dom, data):
133 sent = True 131 sent = True
134 errmsg = "" 132 errmsg = ""
135
136 for pluginName, pluginData in self.Plugins.iteritems(): 133 for pluginName, pluginData in self.Plugins.iteritems():
137 if pluginData.Activated: 134 if pluginData.Activated:
138 xml_dom, data = pluginData.preParseIncoming(xml_dom, data) 135 xml_dom, data = pluginData.preParseIncoming(xml_dom, data)
139
140 return xml_dom, data 136 return xml_dom, data
141 137
142 def postParseIncoming(self, data): 138 def postParseIncoming(self, data):
143 for pluginName, pluginData in self.Plugins.iteritems(): 139 for pluginName, pluginData in self.Plugins.iteritems():
144 if pluginData.Activated: 140 if pluginData.Activated:
145 data = pluginData.postParseIncoming(data) 141 data = pluginData.postParseIncoming(data)
146
147 return data 142 return data
148 143
149 def getPlayer(self): 144 def getPlayer(self):
150 players = [] 145 players = []
151 for pluginName, pluginData in self.Plugins.iteritems(): 146 for pluginName, pluginData in self.Plugins.iteritems():
152 if pluginData.Activated: 147 if pluginData.Activated:
153 playerName = pluginData.addPlayer(data) 148 playerName = pluginData.addPlayer(data)
154 players.append(playerName) 149 players.append(playerName)
155
156 return players 150 return players
157 151
158 def setPlayer(self, playerData): 152 def setPlayer(self, playerData):
159 players = [] 153 players = []
160 for pluginName, pluginData in self.Plugins.iteritems(): 154 for pluginName, pluginData in self.Plugins.iteritems():
161 if pluginData.Activated: 155 if pluginData.Activated:
162 playerName = pluginData.addPlayer(data) 156 playerName = pluginData.addPlayer(data)
163 players.append(playerName) 157 players.append(playerName)
164
165 return 158 return
166 159
167 def preParseOutgoing(self): 160 def preParseOutgoing(self):
168 data = [] 161 data = []
169 for pluginName, pluginData in self.Plugins.iteritems(): 162 for pluginName, pluginData in self.Plugins.iteritems():
170 if pluginData.Activated: 163 if pluginData.Activated:
171 xml = pluginData.preParseOutgoing() 164 xml = pluginData.preParseOutgoing()
172 for msg in xml: 165 for msg in xml:
173 data.append(msg) 166 data.append(msg)
174
175 return data 167 return data
176 168
177 def postParseOutgoing(self): 169 def postParseOutgoing(self):
178 data = [] 170 data = []
179 for pluginName, pluginData in self.Plugins.iteritems(): 171 for pluginName, pluginData in self.Plugins.iteritems():
180 if pluginData.Activated: 172 if pluginData.Activated:
181 xml = pluginData.postParseOutgoing() 173 xml = pluginData.postParseOutgoing()
182 for msg in xml: 174 for msg in xml:
183 data.append(msg) 175 data.append(msg)
184
185 return data 176 return data
186 177
187 __key = _SingletonKey() 178 __key = _SingletonKey()
188 ServerPlugins = ServerPluginsClass(__key) 179 ServerPlugins = ServerPluginsClass(__key)