Changeset 3403

Show
Ignore:
Timestamp:
07/18/08 10:25:10 (16 years ago)
Author:
jerome
Message:

Backported another fix from the development tree.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/branches/1.26_fixes/bin/pknotify

    r3144 r3403  
    233233             
    234234        try :     
    235             server = xmlrpclib.ServerProxy("http://%s:%s" % (self.destination, self.port)) 
    236             if options["ask"] : 
    237                 try : 
    238                     denyafter = int(options["denyafter"]) 
    239                     if denyafter < 1 : 
    240                         raise ValueError 
    241                 except (ValueError, TypeError) :     
    242                     denyafter = 1 
    243                 labels = [] 
    244                 varnames = [] 
    245                 varvalues = {} 
    246                 for arg in arguments : 
     235            try :     
     236                server = xmlrpclib.ServerProxy("http://%s:%s" % (self.destination, self.port)) 
     237                if options["ask"] : 
    247238                    try : 
    248                         (label, varname, varvalue) = arg.split(":", 2) 
    249                     except ValueError :     
    250                         raise PyKotaCommandLineError, "argument '%s' is invalid !" % arg 
    251                     labels.append(self.sanitizeMessage(label)) 
    252                     varname = varname.lower() 
    253                     varnames.append(varname) 
    254                     varvalues[varname] = self.sanitizeMessage(varvalue) 
     239                        denyafter = int(options["denyafter"]) 
     240                        if denyafter < 1 : 
     241                            raise ValueError 
     242                    except (ValueError, TypeError) :     
     243                        denyafter = 1 
     244                    labels = [] 
     245                    varnames = [] 
     246                    varvalues = {} 
     247                    for arg in arguments : 
     248                        try : 
     249                            (label, varname, varvalue) = arg.split(":", 2) 
     250                        except ValueError :     
     251                            raise PyKotaCommandLineError, "argument '%s' is invalid !" % arg 
     252                        labels.append(self.sanitizeMessage(label)) 
     253                        varname = varname.lower() 
     254                        varnames.append(varname) 
     255                        varvalues[varname] = self.sanitizeMessage(varvalue) 
     256                         
     257                    passnumber = 1     
     258                    authok = None 
     259                    while (authok != "AUTH=YES") and (passnumber <= denyafter) : 
     260                        result = server.askDatas(labels, varnames, varvalues)     
     261                        if not options["checkauth"] : 
     262                            break 
     263                        if result["isValid"] : 
     264                            if ("username" in varnames) and ("password" in varnames) : 
     265                                if self.checkAuth(self.UTF8ToUserCharset(result["username"].data[:]),  
     266                                                  self.UTF8ToUserCharset(result["password"].data[:])) : 
     267                                    authok = "AUTH=YES" 
     268                                else :     
     269                                    authok = "AUTH=NO" 
     270                            else :         
     271                                authok = "AUTH=IMPOSSIBLE"         
     272                        passnumber += 1         
     273                                     
     274                    if options["checkauth"] and options["denyafter"] \ 
     275                       and (passnumber > denyafter) \ 
     276                       and (authok != "AUTH=YES") : 
     277                        print "DENY" 
     278                    if result["isValid"] : 
     279                        for varname in varnames : 
     280                            if (varname != "password") \ 
     281                               and ((varname != "username") or (authok in (None, "AUTH=YES"))) : 
     282                                print "%s=%s" % (varname.upper(), self.UTF8ToUserCharset(result[varname].data[:])) 
     283                        if authok is not None :         
     284                            print authok         
     285                elif options["confirm"] : 
     286                    print server.showDialog(self.sanitizeMessage(arguments[0]), True) 
     287                elif options["notify"] : 
     288                    print server.showDialog(self.sanitizeMessage(arguments[0]), False) 
    255289                     
    256                 passnumber = 1     
    257                 authok = None 
    258                 while (authok != "AUTH=YES") and (passnumber <= denyafter) : 
    259                     result = server.askDatas(labels, varnames, varvalues)     
    260                     if not options["checkauth"] : 
    261                         break 
    262                     if result["isValid"] : 
    263                         if ("username" in varnames) and ("password" in varnames) : 
    264                             if self.checkAuth(self.UTF8ToUserCharset(result["username"].data[:]),  
    265                                               self.UTF8ToUserCharset(result["password"].data[:])) : 
    266                                 authok = "AUTH=YES" 
    267                             else :     
    268                                 authok = "AUTH=NO" 
    269                         else :         
    270                             authok = "AUTH=IMPOSSIBLE"         
    271                     passnumber += 1         
    272                                  
    273                 if options["checkauth"] and options["denyafter"] \ 
    274                    and (passnumber > denyafter) \ 
    275                    and (authok != "AUTH=YES") : 
    276                     print "DENY" 
    277                 if result["isValid"] : 
    278                     for varname in varnames : 
    279                         if (varname != "password") \ 
    280                            and ((varname != "username") or (authok in (None, "AUTH=YES"))) : 
    281                             print "%s=%s" % (varname.upper(), self.UTF8ToUserCharset(result[varname].data[:])) 
    282                     if authok is not None :         
    283                         print authok         
    284             elif options["confirm"] : 
    285                 print server.showDialog(self.sanitizeMessage(arguments[0]), True) 
    286             elif options["notify"] : 
    287                 print server.showDialog(self.sanitizeMessage(arguments[0]), False) 
    288                  
    289             if options["quit"] :     
    290                 server.quitApplication() 
    291         except (socket.error, socket.gaierror), msg : 
    292             print options["noremote"] 
    293             try : 
    294                 errnum = msg.args[0] 
    295             except (AttributeError, IndexError) : 
    296                 pass 
    297             else :     
    298                 if errnum == errno.ECONNREFUSED : 
    299                     raise PyKotaToolError, "%s : %s" % (str(msg), (_("Are you sure that PyKotIcon is running and accepting incoming connections on %s:%s ?") % (self.destination, self.port))) 
    300             self.printInfo("%s : %s" % (_("Connection error"), str(msg)), "warn") 
    301         except TimeoutError, msg :     
    302             self.printInfo(msg, "warn") 
    303             print "CANCEL"      # Timeout occured : job is cancelled. 
    304              
    305         if self.timeout :     
    306             signal.alarm(0)     
     290                if options["quit"] :     
     291                    server.quitApplication() 
     292            except (xmlrpclib.ProtocolError, socket.error, socket.gaierror), msg : 
     293                print options["noremote"] 
     294                #try : 
     295                #    errnum = msg.args[0] 
     296                #except (AttributeError, IndexError) : 
     297                #    pass 
     298                #else :     
     299                #    if errnum == errno.ECONNREFUSED : 
     300                #        raise PyKotaToolError, "%s : %s" % (str(msg), (_("Are you sure that PyKotIcon is running and accepting incoming connections on %s:%s ?") % (self.destination, self.port))) 
     301                self.printInfo("%s : %s" % (_("Connection error"), str(msg)), "warn") 
     302            except TimeoutError, msg :     
     303                self.printInfo(msg, "warn") 
     304                print "CANCEL"      # Timeout occured : job is cancelled. 
     305        finally :     
     306            if self.timeout :     
     307                signal.alarm(0)     
    307308         
    308309if __name__ == "__main__" :