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")
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()
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")
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")
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)
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
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