Exemplo n.º 1
0
def deviceAvail(subnet, interval):
    """ Online - can SSH and log into
        Offline - is in the DB and was able to SSH to, but no more
        Warning - can ssh to but has an alarm
        Unconfigured - can ssh but pwd doesn't work
        Unsupported - not a Juniper device
    """

    #Constantly monitor the customer's networks
    while True:

        #Get all devices found on the network:
        server = Server()
        allNetDevices = scan(subnet, server.getUplink())
        allDbDevices = getAllSql("device", ["address"])

        #Update the status of devices that went offline
        for address in allDbDevices:
            if (address[0] not in allNetDevices):
                device = Device("asdn-" + address[0], address[0])
                device.status = "offline"
                device.addToDB(True)

        #Check if a device is operational
        for address, vendor in allNetDevices.items():
            device = Device("asdn-" + address, address)
            device.vendor = vendor

            #Check if the vendor is Juniper
            if "Juniper" in vendor:
                status = device.getDeviceStatus()

                # Get the device configuration
                #device.getDeviceConfig()

                #Check if login is possible
                if not status:
                    status = "unconfigured"
                elif len(status["alarms"]) == 0:
                    status = "warning"
                else:
                    status = "online"
            else:
                status = "unsupported"

            #Assign the status to the device
            device.status = status

            # Add to DB if already there else append
            if device.isInDB():
                device.addToDB(True)
            else:
                device.addToDB(False)

        #Pause the polling for the desired duration
        time.sleep(interval)
 def setUp(self):
     neo_config.load_config()
     neo_config.set_project_variables()
     neo = NeoAPI(neo_config)
     self.api = neo.activate_testing()
     self.user1 = db.session.query(UserModel).filter(
         UserModel.email == "*****@*****.**").first()
     if self.user1 is None:
         self.user1 = UserModel(email="*****@*****.**",
                                password="******",
                                first_name="firstname",
                                last_name="lastname",
                                birthday="1995-12-12")
     self.user2 = db.session.query(UserModel).filter(
         UserModel.email == "*****@*****.**").first()
     if self.user2 is None:
         self.user2 = UserModel(email="*****@*****.**",
                                password="******",
                                first_name="firstname",
                                last_name="lastname",
                                birthday="1111-11-11")
     self.circle = Circle(name="Mamie")
     self.circle2 = Circle(name="test")
     self.linkCircle = UserToCircle(user=self.user1,
                                    circle=self.circle,
                                    privilege="ADMIN")
     self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle)
     self.conversation = Conversation("test")
     self.conversation.circle = self.circle
     self.conversation.device_access = True
     self.device = Device(name="Papie")
     self.device2 = Device(name="test")
     self.device2.circle = self.circle2
     self.device2_password = self.device2.get_pre_activation_password()
     self.device2.activate(self.device2.key)
     self.device.circle = self.circle
     self.device_password = self.device.get_pre_activation_password()
     self.device.activate(self.device.key)
     self.message = Message(is_user=False)
     self.message.conversation = self.conversation
     self.message.device = self.device
     db.session.commit()
     self.token1 = authenticate_user(self.api, self.user1, "test")
     self.token2 = authenticate_user(self.api, self.user2, "test")
     self.device_token = authenticate_device(self.api, self.device,
                                             self.device_password)
     self.device2_token = authenticate_device(self.api, self.device2,
                                              self.device2_password)
     self.tokenAdmin = authenticate_user(self.api,
                                         "*****@*****.**",
                                         "PapieNeo2019")
Exemplo n.º 3
0
def getDevicesByGroup(db_controller, lm_group_id, lm_filter=''):
    '''GetDevicesByGroup pulls all devices in a specific group.  Devices must be located within the group and not
    nested in another group.'''
    print("Getting Devices")
    lm_resourcePath = f'/device/groups/{lm_group_id}/devices'  #LM API URI
    lm_fields = '?fields=systemProperties,customProperties'  #LM Filter
    data = lm_request(lm_resourcePath,
                      lm_filter=lm_filter,
                      lm_fields=lm_fields)  #Calls LM API Request
    devices = []
    for items in data['items']:
        device = Device()
        system_properties = items[
            'systemProperties']  #Pulling data from SystemProperties
        for properties in system_properties:
            if 'system.deviceId' in properties.values():
                device.device_id = properties['value'][0:24]
            if 'system.ips' in properties.values():
                device.device_ip = properties['value'][0:499]
            if 'system.displayname' in properties.values():
                device.device_name = properties['value'][0:99]
        if not db_controller.check_if_row_exists(row=device):
            devices.append(device)
    if len(devices) > 0:
        db_controller.add_many(data=devices)
    else:  #If devices = 0, that means there are no new devices
        db_controller.update_log(name="GetDevices",
                                 log_type="Info",
                                 code="300",
                                 desc="No New Devices Found")
        db_controller.session.commit()
Exemplo n.º 4
0
 def setUp(self):
     neo_config.load_config()
     neo_config.set_project_variables()
     self.neo = NeoAPI(neo_config)
     self.api = self.neo.activate_testing()
     self.client = SocketIOTestClient(self.neo.app, socketio)
     self.client.disconnect()
     self.user1 = db.session.query(UserModel).filter(UserModel.email == "*****@*****.**").first()
     if self.user1 is None:
         self.user1 = UserModel(email="*****@*****.**", password="******", first_name="firstname",
                                last_name="lastname", birthday="1995-12-12")
     self.user2 = db.session.query(UserModel).filter(UserModel.email == "*****@*****.**").first()
     if self.user2 is None:
         self.user2 = UserModel(email="*****@*****.**", password="******", first_name="firstname",
                                last_name="lastname", birthday="1995-12-12")
     self.circle = Circle(name="Mamie")
     self.linkCircle = UserToCircle(user=self.user1, circle=self.circle, privilege="ADMIN")
     self.conversation = Conversation("test", device_access=True)
     self.conversation.device_access = True
     self.conversation.circle = self.circle
     self.link2 = UserToConversation(user=self.user2, conversation=self.conversation)
     self.device = Device(name="Papie")
     self.device.circle = self.circle
     self.device_password = self.device.get_pre_activation_password()
     self.device.activate(self.device.key)
     db.session.commit()
     self.circle_id = self.circle.id
     self.conversation_id = self.conversation.id
     self.token1 = authenticate_user(self.api, self.user1, "test")
     self.token2 = authenticate_user(self.api, self.user2, "test")
     self.device_token = authenticate_device(self.api, self.device, self.device_password)
     self.tokenAdmin = authenticate_user(self.api, "*****@*****.**", "PapieNeo2019")
Exemplo n.º 5
0
 def setUp(self):
     neo_config.load_config()
     neo_config.set_project_variables()
     neo = NeoAPI(neo_config)
     self.api = neo.activate_testing()
     self.user1 = db.session.query(UserModel).filter(
         UserModel.email == "*****@*****.**").first()
     if self.user1 is None:
         self.user1 = UserModel(email="*****@*****.**",
                                password="******",
                                first_name="firstname",
                                last_name="lastname",
                                birthday="1995-12-12")
     self.user2 = db.session.query(UserModel).filter(
         UserModel.email == "*****@*****.**").first()
     if self.user2 is None:
         self.user2 = UserModel(email="*****@*****.**",
                                password="******",
                                first_name="firstname",
                                last_name="lastname",
                                birthday="1111-11-11")
     self.circle = Circle(name="Mamie")
     self.linkCircle = UserToCircle(user=self.user1,
                                    circle=self.circle,
                                    privilege="ADMIN")
     self.linkCircle2 = UserToCircle(user=self.user2, circle=self.circle)
     self.device = Device(name="Papie")
     self.device.circle = self.circle
     db.session.commit()
     self.token1 = authenticate_user(self.api, self.user1, "test")
     self.token2 = authenticate_user(self.api, self.user2, "test")
     self.tokenAdmin = authenticate_user(self.api,
                                         "*****@*****.**",
                                         "PapieNeo2019")
Exemplo n.º 6
0
def fake_pay(content, circle_id, user):
    logger.info("[%s] [%s] [%s] [%s] [%s]",
                request.method, request.host, request.path, request.content_type, request.data)
    try:
        circle = db.session.query(Circle).filter(Circle.id == circle_id).first()
        if circle is not None:
            if not circle.has_member(user):
                return FAILED("Cet utilisateur ne fait pas parti du cercle spécifié")
            link = db.session.query(UserToCircle).filter(UserToCircle.circle_id == circle.id,
                                                         UserToCircle.user_id == user.id).first()
            if link is None:
                return FAILED("Cet utilisateur ne fait pas parti du cercle spécifié")
            link.privilege = "ADMIN"
            device = Device(name=content["device_name"] if "device_name" in content else "Papi/Mamie")
            circle.device = device
            device.circle = circle
            db.session.commit()
            return jsonify({"success": True, "content": device.get_content()})
        return FAILED("Cercle spécifié introuvable")
    except Exception as e:
        return FAILED(e)
Exemplo n.º 7
0
def admin_add(content, circle_id, name):
    try:
        circle = db.session.query(Circle).filter(
            Circle.id == circle_id).first()
        if circle is None:
            raise e_circle.CircleNotFound
        new_device = Device(
            name=name,
            username=content["username"] if "username" in content else None)
        new_device.circle = circle
        db.session.commit()
        circle.notify_users('device created')
        response = {"data": {"success": True}, "status_code": 200}
    except e_circle.CircleException as exception:
        response = {
            "data": {
                "success": False,
                "message": exception.message
            },
            "status_code": exception.status_code
        }
    return response
Exemplo n.º 8
0
def init_default_content(p1, p2):
    user = db.session.query(User).filter(
        User.email == "*****@*****.**").first()
    user2 = db.session.query(User).filter(
        User.email == "*****@*****.**").first()
    if user is None and user2 is None:
        user = User(email="*****@*****.**",
                    password=p1,
                    first_name="user1",
                    last_name="beta",
                    birthday="2019-09-05")
        user2 = User(email="*****@*****.**",
                     password=p2,
                     first_name="user2",
                     last_name="beta",
                     birthday="2019-09-05")
        circle = Circle("Cercle Beta 1")
        db.session.commit()
        UserToCircle(user=user, circle=circle, privilege="ADMIN")
        UserToCircle(user=user2, circle=circle)
        db.session.commit()
        device = db.session.query(Device).filter(
            Device.username == "device1").first()
        if device is None:
            device = Device(name="Device beta 1")
            device.circle = circle
            device.username = "******"
            device.set_password("test")
            device.activate(device.key)
            db.session.commit()
        if len(circle.conversations) == 0:
            conversation = Conversation(device_access=True,
                                        name="Conversation avec device",
                                        circle=circle)
            conversation2 = Conversation(device_access=False,
                                         name="Conversation sans device",
                                         circle=circle)
            db.session.commit()
            if len(user.conversation_links) == 0:
                cl1 = UserToConversation(privilege="ADMIN",
                                         user=user,
                                         conversation=conversation)
                cl2 = UserToConversation(user=user2, conversation=conversation)
                db.session.commit()
                Message(content="Message conversation avec device from user1",
                        link=cl1,
                        conversation=conversation)
                Message(content="Message conversation avec device from user2",
                        link=cl2,
                        conversation=conversation)
                message3 = Message(
                    content="Message conversation avec device from device",
                    is_user=False,
                    conversation=conversation)
                message3.device = device
                db.session.commit()
            if len(user2.conversation_links) == 0:
                cl3 = UserToConversation(privilege="ADMIN",
                                         user=user,
                                         conversation=conversation2)
                cl4 = UserToConversation(user=user2,
                                         conversation=conversation2)
                db.session.commit()
                Message(content="Message conversation sans device from user1",
                        link=cl3,
                        conversation=conversation2)
                Message(content="Message conversation sans device from user2",
                        link=cl4,
                        conversation=conversation2)
        db.session.commit()
def control(pino):
    status = 1 if len(request.form) > 1 else 0
    dev = Device(pino, status)
    response = {'response': 200, 'pino': pino, 'status': status}
    return response