def UpdateConfig(self, adrs, cnfxml, override): """ Update configuration of specified WebBrick from specified file. Returns None if the operation is completed successfully, otherwise returns a page to be displayed describing the reason for non-completion. 'adrs' is the IP address of the WebBrick top be updated. 'cnfxml' is the text of the WebBrick XML configuration file to be uploaded. 'override' is a dictionary of values that can be used to override values in the supplied DOM when generating the configuration commands; e.g. "password" - overrides password used with "LG" command "IP" - overrides IP addresss set with "IA" command """ #TODO: may need to add logic to allow rejection of commands/command forms # not supported by older WebBricks? try: wbcfg = WebBrickConfig() dom = parseXmlString(cnfxml) configcmds = wbcfg.makeConfigCommands(dom, override) # configcmds.append("RU") # Reboot WebBrick to work around RU command bug in some WebBrick firmware versions # TODO: # Consider: should the RU command be withdrawn? # How many buggy webbricks are in the wild? configcmds.append("RB") errs = "" for line in configcmds: if line[0] != '#': SendHTTPCmd(adrs,line) err = Wb6Status(adrs).getCmdStatus() msg = None if err == ERR_NotLoggedIn: msg = "Incorrect WebBrick password ("+line+")" err = 0 if err: errs += "WebBrick command error: "+str(err)+", ("+line+")\n" if msg: Warn(msg, "WbCfgManagerForm.UpdateConfig") raise WbAccessException(msg) except Exception, e: return self.wbConfigError( "Failed to update WebBrick at %s" % (adrs), escapeTextForHtml(str(e)))
def WebBrickAdd(self, wbip): if not wbip or wbip == "(None)": return "Add WebBrick: no IP address specified" err = None cherrypy.session.acquire_lock() wbs = cherrypy.session.get("DiscoverWbs",[]) new = True for wb in wbs: new = new and wb["ipAdr"] != wbip if new: try: wb = WbDiscoverCheck(wbip) if wb: wbs.append(wb) cherrypy.session["DiscoverWbs"] = wbs else: err = self.wbConfigError( "No WebBrick found with IP address %s"%(wbip)) except Exception, e: err = self.wbConfigError( "Error accessing WebBrick at %s"%(wbip), escapeTextForHtml(str(e)))
if err == ERR_NotLoggedIn: msg = "Incorrect WebBrick password ("+line+")" err = 0 if err: errs += "WebBrick command error: "+str(err)+", ("+line+")\n" if msg: Warn(msg, "WbCfgManagerForm.UpdateConfig") raise WbAccessException(msg) except Exception, e: return self.wbConfigError( "Failed to update WebBrick at %s" % (adrs), escapeTextForHtml(str(e))) if errs: return self.wbConfigError( "Failure(s) updating WebBrick at %s" % (adrs), escapeTextForHtml(errs)) self.WebBrickFlushDiscovered() return None def CopyConfigSet(self, frset, toset): """ Copy configuration set on gateway server """ if frset == toset: return self.wbConfigError("Cannot copy configuration set to itself") if not ConfigSet.exists(toset): return self.wbConfigError("Target configuration set does not exist") # ConfigSet.create(toset) if Config.listNodes(toset): return self.wbConfigError( "Copy: target configuration set already contains node configuration data"+