def testCredFile(self):
     oldstdout = sys.stdout
     sys.stdout = StdOutStream()
     self.assertRaises(SystemExit,
                       roster_client_lib.RunFunction,
                       u'ListUsers',
                       USERNAME,
                       server_name=self.server_name,
                       password=PASSWORD,
                       credfile=CREDFILE)
     self.assertEqual(
         sys.stdout.flush(),
         'ERROR: Credential file not found, invalid credentials.\n')
     sys.stdout = oldstdout
     # create credential file for RunFunction
     roster_client_lib.GetCredentials(u'shuey',
                                      u'testpass',
                                      server_name=self.server_name,
                                      credfile=CREDFILE)
     # using file from function above
     self.assertEqual(
         roster_client_lib.RunFunction(u'ListUsers',
                                       u'shuey',
                                       credfile=CREDFILE,
                                       server_name=self.server_name,
                                       password=PASSWORD)['core_return'], {
                                           'shuey': 64,
                                           'tree_export_user': 0,
                                           'jcollins': 32,
                                           'sharrell': 128
                                       })
示例#2
0
  def setUp(self):

    def PickUnusedPort():
      s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      s.bind((HOST, 0))
      addr, port = s.getsockname()
      s.close()
      return port

    self.config_instance = roster_core.Config(file_name=CONFIG_FILE)

    db_instance = self.config_instance.GetDb()

    db_instance.CreateRosterDatabase()

    data = open(DATA_FILE, 'r').read()
    db_instance.StartTransaction()
    db_instance.cursor.execute(data)
    db_instance.EndTransaction()
    db_instance.close()

    self.port = PickUnusedPort()
    self.server_name = 'https://%s:%s' % (HOST, self.port)
    self.daemon_thread = DaemonThread(self.config_instance, self.port)
    self.daemon_thread.daemon = True
    self.daemon_thread.start()
    self.core_instance = roster_core.Core(USERNAME, self.config_instance)
    self.password = '******'
    time.sleep(1)
    roster_client_lib.GetCredentials(USERNAME, u'test', credfile=CREDFILE,
                                     server_name=self.server_name)
示例#3
0
    def setUp(self):
        def PickUnusedPort():
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.bind((HOST, 0))
            addr, port = s.getsockname()
            s.close()
            return port

        self.config_instance = roster_core.Config(file_name=CONFIG_FILE)

        db_instance = self.config_instance.GetDb()

        db_instance.CreateRosterDatabase()

        data = open(DATA_FILE, 'r').read()
        db_instance.StartTransaction()
        db_instance.cursor.execute(data)
        db_instance.EndTransaction()
        db_instance.close()

        self.port = PickUnusedPort()
        self.server_name = 'https://%s:%s' % (HOST, self.port)
        self.daemon_thread = DaemonThread(self.config_instance, self.port)
        self.daemon_thread.daemon = True
        self.daemon_thread.start()
        self.core_instance = roster_core.Core(USERNAME, self.config_instance)
        self.password = '******'
        time.sleep(1)
        roster_client_lib.GetCredentials(USERNAME,
                                         u'test',
                                         credfile=CREDFILE,
                                         server_name=self.server_name)
        self.core_instance.MakeView(u'test_view')
        self.core_instance.MakeZone(u'sub.university.lcl',
                                    u'master',
                                    u'sub.university.lcl.',
                                    view_name=u'test_view')
        self.core_instance.MakeZone(u'0.168.192.in-addr.arpa',
                                    u'master',
                                    u'0.168.192.in-addr.arpa.',
                                    view_name=u'test_view')
        self.core_instance.MakeZone(u'8.0.e.f.f.3.ip6.arpa',
                                    u'master',
                                    u'8.0.e.f.f.3.ip6.arpa.',
                                    view_name=u'test_view')
        self.core_instance.MakeReverseRangeZoneAssignment(
            u'0.168.192.in-addr.arpa', u'192.168.0/24')
        self.core_instance.MakeReverseRangeZoneAssignment(
            u'8.0.e.f.f.3.ip6.arpa',
            u'3ffe:0800:0000:0000:0000:0000:0000:0000/24')
    def testDnsCredFileCreation(self):
        os.remove(CREDFILE)
        self.assertFalse(os.path.exists(CREDFILE))
        roster_client_lib.GetCredentials(USERNAME,
                                         PASSWORD,
                                         credfile=CREDFILE,
                                         server_name=self.server_name)
        self.assertTrue(os.path.exists(CREDFILE))
        cred_stat = os.stat(CREDFILE)

        self.assertTrue(cred_stat.st_mode & stat.S_IRUSR
                        and cred_stat.st_mode & stat.S_IWUSR)
        self.assertFalse(cred_stat.st_mode & stat.S_IRWXG
                         or cred_stat.st_mode & stat.S_IRWXO)
    def testMultipleThreadedConnectionsWithDifferentUsers(self):
        data_exporter = tree_exporter.BindTreeExport(CONFIG_FILE)
        self.daemon_instance.core_die_time = 7200
        roster_client_lib.RunFunction(u'MakeZone',
                                      USERNAME,
                                      credstring=self.credential,
                                      args=['new_zone', 'master', 'zone.com.'],
                                      server_name=self.server_name,
                                      password=PASSWORD)

        cred_dict = {}
        for user_number in range(40):

            roster_client_lib.RunFunction(u'MakeUser',
                                          USERNAME,
                                          credstring=self.credential,
                                          args=['user%s' % user_number, 128],
                                          server_name=self.server_name)
            cred_dict['user%s' %
                      user_number] = roster_client_lib.GetCredentials(
                          'user%s' % user_number,
                          'tost',
                          server_name=self.server_name)

        client_threads = []
        for record_number in range(5):
            for user_number in range(40):
                new_client_thread = ClientRecordModifyThread(
                    'user%s' % user_number,
                    '192.168.%s.%s' % (user_number, record_number),
                    'host%s-%s' % (user_number, record_number),
                    cred_dict['user%s' % user_number], self)
                new_client_thread.daemon = True
                new_client_thread.start()
                client_threads.append(new_client_thread)
            data_exporter.db_instance.StartTransaction()
            try:
                data_exporter.db_instance.LockDb()
                try:
                    data_exporter.GetRawData()
                finally:
                    data_exporter.db_instance.UnlockDb()
            finally:
                data_exporter.db_instance.EndTransaction()

        for old_thread in client_threads:
            old_thread.join()
    def setUp(self):
        def PickUnusedPort():
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.bind((HOST, 0))
            addr, port = s.getsockname()
            s.close()
            return port

        self.config_instance = roster_core.Config(file_name=CONFIG_FILE)
        self.cred_instance = credentials.CredCache(self.config_instance, 5)

        db_instance = self.config_instance.GetDb()

        db_instance.CreateRosterDatabase()

        data = open(DATA_FILE, 'r').read()
        db_instance.StartTransaction()
        db_instance.cursor.execute(data)
        db_instance.EndTransaction()
        db_instance.close()

        self.port = PickUnusedPort()
        self.server_name = 'https://%s:%s' % (HOST, self.port)
        self.daemon_instance = roster_server.Server(self.config_instance,
                                                    KEYFILE,
                                                    CERTFILE,
                                                    inf_renew_time=5,
                                                    core_die_time=5,
                                                    clean_time=0)

        self.daemon_thread = DaemonThread(self.config_instance, self.port,
                                          self.daemon_instance)
        self.daemon_thread.daemon = True
        self.daemon_thread.start()
        time.sleep(1)
        ## Will create a core_instance in core_store
        self.credential = roster_client_lib.GetCredentials(
            USERNAME, PASSWORD, server_name=self.server_name)
        self.daemon_instance.core_store = [
        ]  # Clear out core instance from above

        if (os.path.exists(CREDFILE)):
            os.remove(CREDFILE)

        self.core_instance = roster_core.Core(u'sharrell',
                                              self.config_instance)
示例#7
0
    def setUp(self):
        def PickUnusedPort():
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.bind((HOST, 0))
            addr, port = s.getsockname()
            s.close()
            return port

        self.config_instance = roster_core.Config(file_name=CONFIG_FILE)

        db_instance = self.config_instance.GetDb()

        db_instance.CreateRosterDatabase()

        data = open(DATA_FILE, 'r').read()
        db_instance.StartTransaction()
        db_instance.cursor.execute(data)
        db_instance.EndTransaction()
        db_instance.close()

        self.port = PickUnusedPort()
        self.server_name = 'https://%s:%s' % (HOST, self.port)
        self.daemon_thread = DaemonThread(self.config_instance, self.port)
        self.daemon_thread.daemon = True
        self.daemon_thread.start()
        self.core_instance = roster_core.Core(USERNAME, self.config_instance)
        self.password = '******'
        time.sleep(1)
        roster_client_lib.GetCredentials(USERNAME,
                                         u'test',
                                         credfile=CREDFILE,
                                         server_name=self.server_name)

        self.core_instance.MakeView(u'test_view')
        self.core_instance.MakeView(u'test_view2')
        self.core_instance.MakeView(u'test_view3')
        self.core_instance.MakeZone(u'reverse_zone',
                                    u'master',
                                    u'1.168.192.in-addr.arpa.',
                                    view_name=u'test_view')
        self.core_instance.MakeZone(u'forward_zone',
                                    u'master',
                                    u'university.edu.',
                                    view_name=u'test_view')
        self.core_instance.MakeZone(u'forward_zone',
                                    u'master',
                                    u'university.edu.',
                                    view_name=u'test_view3')
        self.core_instance.MakeZone(u'ipv6_zone',
                                    u'master',
                                    u'university2.edu.',
                                    view_name=u'test_view')
        self.core_instance.MakeZone(
            u'ipv6_zone_rev',
            u'master', u'0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.'
            '0.0.0.1.0.0.2.ip6.arpa.',
            view_name=u'test_view')
        self.core_instance.MakeZone(u'reverse_zone',
                                    u'master',
                                    u'1.168.192.in-addr.arpa.',
                                    view_name=u'test_view2')
        self.core_instance.MakeRecord(
            u'soa',
            u'soa1',
            u'forward_zone', {
                u'name_server': u'ns1.university.edu.',
                u'admin_email': u'admin.university.edu.',
                u'serial_number': 1,
                u'refresh_seconds': 5,
                u'retry_seconds': 5,
                u'expiry_seconds': 5,
                u'minimum_seconds': 5
            },
            view_name=u'test_view')
        self.core_instance.MakeRecord(
            u'soa',
            u'soa1',
            u'reverse_zone', {
                u'name_server': u'ns1.university.edu.',
                u'admin_email': u'admin.university.edu.',
                u'serial_number': 1,
                u'refresh_seconds': 5,
                u'retry_seconds': 5,
                u'expiry_seconds': 5,
                u'minimum_seconds': 5
            },
            view_name=u'test_view')
        self.core_instance.MakeRecord(
            u'aaaa',
            u'host2',
            u'forward_zone',
            {u'assignment_ip': u'4321:0000:0001:0002:0003:0004:0567:89ab'},
            view_name=u'test_view')
        self.core_instance.MakeRecord(u'a',
                                      u'host3',
                                      u'forward_zone',
                                      {u'assignment_ip': u'192.168.1.5'},
                                      view_name=u'test_view')
        self.core_instance.MakeRecord(u'a',
                                      u'www.host3',
                                      u'forward_zone',
                                      {u'assignment_ip': u'192.168.1.5'},
                                      view_name=u'test_view')
        self.core_instance.MakeRecord(
            u'ptr',
            u'4',
            u'reverse_zone', {u'assignment_host': u'host2.university.edu.'},
            view_name=u'test_view')
 def testGetCredentials(self):
     credential = roster_client_lib.GetCredentials(
         USERNAME, PASSWORD, CREDFILE, server_name=self.server_name)
     self.assertEqual(len(str(credential)), 36)