spoolss.py

来自「samba-3.0.22.tar.gz 编译smb服务器的源码」· Python 代码 · 共 289 行 · 第 1/2 页

PY
289
字号
    def runTest(self):        self.hnd = spoolss.openprinter(self.uncname)        # Everyone should have getprinter levels 0-3        for i in (0, 1, 2, 3):            info = self.hnd.getprinter(level = i)            try:                stf.dict_check(self.sample_info[i], info)            except ValueError, msg:                raise "info%d: %s" % (i, msg)class EnumPrinters(PrintServerTest):    """Enumerate print info at various levels."""    sample_info = {        0: {'q': {'printer_errors': 0, 'unknown18': 0, 'unknown13': 0, 'unknown26': 0, 'cjobs': 0, 'unknown11': 0, 'server_name': '', 'total_pages': 0, 'unknown15': 586, 'unknown16': 0, 'month': 2, 'unknown20': 0, 'second': 23, 'unknown22': 983040, 'unknown25': 0, 'total_bytes': 0, 'unknown27': 0, 'year': 2003, 'build_version': 2195, 'unknown28': 0, 'global_counter': 4, 'day': 13, 'minute': 53, 'total_jobs': 0, 'unknown29': -1833435136, 'name': 'q', 'hour': 2, 'level': 0, 'c_setprinter': 0, 'change_id': 522454169, 'major_version': 5, 'unknown23': 15, 'day_of_week': 4, 'unknown14': 1, 'session_counter': 1, 'status': 0, 'unknown7': 1, 'unknown8': 0, 'unknown9': 0, 'milliseconds': 421, 'unknown24': 0}, 'p': {'printer_errors': 0, 'unknown18': 0, 'unknown13': 0, 'unknown26': 0, 'cjobs': 0, 'unknown11': 0, 'server_name': '', 'total_pages': 0, 'unknown15': 586, 'unknown16': 0, 'month': 2, 'unknown20': 0, 'second': 23, 'unknown22': 983040, 'unknown25': 0, 'total_bytes': 0, 'unknown27': 0, 'year': 2003, 'build_version': 2195, 'unknown28': 0, 'global_counter': 4, 'day': 13, 'minute': 53, 'total_jobs': 0, 'unknown29': -1831337984, 'name': 'p', 'hour': 2, 'level': 0, 'c_setprinter': 0, 'change_id': 522454169, 'major_version': 5, 'unknown23': 15, 'day_of_week': 4, 'unknown14': 1, 'session_counter': 1, 'status': 1, 'unknown7': 1, 'unknown8': 0, 'unknown9': 0, 'milliseconds': 421, 'unknown24': 0}, 'magpie': {'printer_errors': 0, 'unknown18': 0, 'unknown13': 0, 'unknown26': 0, 'cjobs': 0, 'unknown11': 0, 'server_name': '', 'total_pages': 0, 'unknown15': 586, 'unknown16': 0, 'month': 2, 'unknown20': 0, 'second': 23, 'unknown22': 983040, 'unknown25': 0, 'total_bytes': 0, 'unknown27': 0, 'year': 2003, 'build_version': 2195, 'unknown28': 0, 'global_counter': 4, 'day': 13, 'minute': 53, 'total_jobs': 0, 'unknown29': 1114112, 'name': 'magpie', 'hour': 2, 'level': 0, 'c_setprinter': 0, 'change_id': 522454169, 'major_version': 5, 'unknown23': 15, 'day_of_week': 4, 'unknown14': 1, 'session_counter': 1, 'status': 0, 'unknown7': 1, 'unknown8': 0, 'unknown9': 0, 'milliseconds': 421, 'unknown24': 0}},        1: {'q': {'comment': 'cheepy birds', 'level': 1, 'flags': 8388608, 'name': 'q', 'description': 'q,HP LaserJet 4,'}, 'p': {'comment': "I'm a teapot!", 'level': 1, 'flags': 8388608, 'name': 'p', 'description': 'p,HP LaserJet 4,Canberra office'}, 'magpie': {'comment': '', 'level': 1, 'flags': 8388608, 'name': 'magpie', 'description': 'magpie,Generic / Text Only,'}}        }    def runTest(self):        for i in (0, 1):            info = spoolss.enumprinters(                "\\\\%s" % self.server["hostname"], level = i)            try:                stf.dict_check(self.sample_info[i], info)            except ValueError, msg:                raise "info%d: %s" % (i, msg)class EnumPrintersArg(ArgTestServer):    def runTestArg(self, unc):        spoolss.enumprinters(unc)class EnumPrintersCred(CredentialTest):    """Test opening printer with good and bad credentials."""    def runTestArg(self, creds):        spoolss.enumprinters(            "\\\\%s" % self.server["hostname"], creds = creds)class EnumPrinterdrivers(PrintServerTest):    sample_info = {        1: {'Okipage 10ex (PCL5E) : STANDARD': {'name': 'Okipage 10ex (PCL5E) : STANDARD', 'level': 1}, 'Generic / Text Only': {'name': 'Generic / Text Only', 'level': 1}, 'Brother HL-1030 series': {'name': 'Brother HL-1030 series', 'level': 1}, 'Brother HL-1240 series': {'name': 'Brother HL-1240 series', 'level': 1}, 'HP DeskJet 1220C Printer': {'name': 'HP DeskJet 1220C Printer', 'level': 1}, 'HP LaserJet 4100 PCL 6': {'name': 'HP LaserJet 4100 PCL 6', 'level': 1}, 'HP LaserJet 4': {'name': 'HP LaserJet 4', 'level': 1}},        2: {'Okipage 10ex (PCL5E) : STANDARD': {'version': 2, 'config_file': '\\\\WIN2KDC1\\print$\\W32X86\\2\\RASDDUI.DLL', 'name': 'Okipage 10ex (PCL5E) : STANDARD', 'driver_path': '\\\\WIN2KDC1\\print$\\W32X86\\2\\RASDD.DLL', 'data_file': '\\\\WIN2KDC1\\print$\\W32X86\\2\\OKIPAGE.DLL', 'level': 2, 'architecture': 'Windows NT x86'}, 'Generic / Text Only': {'version': 3, 'config_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\UNIDRVUI.DLL', 'name': 'Generic / Text Only', 'driver_path': '\\\\WIN2KDC1\\print$\\W32X86\\3\\UNIDRV.DLL', 'data_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\TTY.GPD', 'level': 2, 'architecture': 'Windows NT x86'}, 'Brother HL-1030 series': {'version': 3, 'config_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\BRUHL99A.DLL', 'name': 'Brother HL-1030 series', 'driver_path': '\\\\WIN2KDC1\\print$\\W32X86\\3\\BROHL99A.DLL', 'data_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\BROHL103.PPD', 'level': 2, 'architecture': 'Windows NT x86'}, 'Brother HL-1240 series': {'version': 3, 'config_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\BRUHL99A.DLL', 'name': 'Brother HL-1240 series', 'driver_path': '\\\\WIN2KDC1\\print$\\W32X86\\3\\BROHL99A.DLL', 'data_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\BROHL124.PPD', 'level': 2, 'architecture': 'Windows NT x86'}, 'HP DeskJet 1220C Printer': {'version': 3, 'config_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\HPW8KMD.DLL', 'name': 'HP DeskJet 1220C Printer', 'driver_path': '\\\\WIN2KDC1\\print$\\W32X86\\3\\HPW8KMD.DLL', 'data_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\HPW8KMD.DLL', 'level': 2, 'architecture': 'Windows NT x86'}, 'HP LaserJet 4100 PCL 6': {'version': 3, 'config_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\HPBF042E.DLL', 'name': 'HP LaserJet 4100 PCL 6', 'driver_path': '\\\\WIN2KDC1\\print$\\W32X86\\3\\HPBF042G.DLL', 'data_file': '\\\\WIN2KDC1\\print$\\W32X86\\3\\HPBF042I.PMD', 'level': 2, 'architecture': 'Windows NT x86'}, 'HP LaserJet 4': {'version': 2, 'config_file': '\\\\WIN2KDC1\\print$\\W32X86\\2\\hpblff0.dll', 'name': 'HP LaserJet 4', 'driver_path': '\\\\WIN2KDC1\\print$\\W32X86\\2\\hpblff2.dll', 'data_file': '\\\\WIN2KDC1\\print$\\W32X86\\2\\hpblff39.pmd', 'level': 2, 'architecture': 'Windows NT x86'}}        }    def runTest(self):        for i in (1, 2):            info = spoolss.enumprinterdrivers(                "\\\\%s" % self.server["hostname"], level = i)            try:                if not self.sample_info.has_key(i):                    self.log("%s" % info)                    self.fail()                stf.dict_check(self.sample_info[i], info)            except ValueError, msg:                raise "info%d: %s" % (i, msg)class EnumPrinterdriversArg(ArgTestServer):    def runTestArg(self, unc):        spoolss.enumprinterdrivers(unc)class EnumPrinterdriversCred(CredentialTest):    """Test opening printer with good and bad credentials."""    def runTestArg(self, creds):        spoolss.enumprinterdrivers(            "\\\\%s" % self.server["hostname"], creds = creds)def usage():    print "Usage: spoolss.py [options] [test1[,test2...]]"    print "\t -v/--verbose     Display debugging information"    print "\t -l/--list-tests  List available tests"    print    print "A list of comma separated test names or regular expressions"    print "can be used to filter the tests performed."            def test_match(subtest_list, test_name):    """Return true if a test matches a comma separated list of regular    expression of test names."""    # re.match does an implicit ^ at the start of the pattern.    # Explicitly anchor to end to avoid matching substrings.    for s in string.split(subtest_list, ","):        if re.match(s + "$", test_name):            return 1    return 0           if __name__ == "__main__":    import os, sys, string    import getopt        try:        opts, args = getopt.getopt(sys.argv[1:], "vl", \                                   ["verbose", "list-tests"])    except getopt.GetoptError:        usage()        sys.exit(0)    verbose = 0    list_tests = 0    for opt, arg in opts:        if opt in ("-v", "--verbose"):            verbose = 1        if opt in ("-l", "--list-tests"):            list_tests = 1    if len(args) > 1:        usage()        sys.exit(0)    test_list = [        OpenPrinterArg,        OpenPrinterCred,        ClosePrinter,        ClosePrinterServer,        GetPrinterInfo,        EnumPrinters,        EnumPrintersCred,        EnumPrintersArg,        EnumPrinterdrivers,        EnumPrinterdriversCred,        EnumPrinterdriversArg,        ]    if len(args):        t = []        for test in test_list:            if test_match(args[0], test.__name__):                t.append(test)        test_list = t    if os.environ.has_key("SAMBA_DEBUG"):        spoolss.setup_logging(interactive = 1)        spoolss.set_debuglevel(10)    if list_tests:        for test in test_list:            print test.__name__    else:        comfychair.runtests(test_list, verbose = verbose)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?