Beispiel #1
0
    def actualizar_reglas(self, sensor_type : str, regla: str) -> RestResponse:
        """ Manda una orden para cambiar las reglas de un sensor
        ---
        Parameters:
            - sensor_type: Tipo del sensor.
            - regla: regla a cambiar del sensor
        Returns:
            A RestResponse object holding the result of the operation.
        """

        try:
            if int(sensor_type)==1:
                self.__sensor1.cambiar_reglas(regla)
                resultado = self.__sensor1.obtenerSensor()
                resultado_json = json.dumps(resultado)
            elif int(sensor_type)==2:
                self.__sensor2.cambiar_reglas(regla)
                resultado = self.__sensor2.obtenerSensor()
                resultado_json = json.dumps(resultado)
            else:
                resultado = 'Sensor no implementado, en proximas actualizaciones...'
        except ValueError:
            return RestResponse(code=400,mime_type='text/plain')

        return RestResponse(resultado_json , 200, mime_type='text/plain')
 def obtenerTodosSensores(self) -> RestResponse:
     devuelto = self.__sensores.keys()
     if devuelto == []:
         return RestResponse('No sensors', 404, 'text/plain')
     else:
         res_content_json = json.dumps(devuelto)
         return RestResponse(res_content_json, 200, 'text/plain')
Beispiel #3
0
 def create_rule(self, rule_name: str, rule_type: str, data: str,
                 frequency: int, user: str) -> RestResponse:
     """ Creates a rule.
     ---
     Parameters:
         - rulename: The rule name string.
         - ruletype: The type of the rule string. (text: command, file)
         - ruleargs: A command or a file path.
         - frequency (seconds): 0 if it does not execute automatically.
         - user: The username string.
     Returns:
         A RestResponse object holding the result of the operation.
     """
     try:
         if not self.get_auth_service().has_right(user, "AdminRules"):
             return RestResponse(code=401, mime_type="text/plain")
         self.get_rule_manager().create_rule(rule_name, rule_type, data,
                                             frequency)
     except ValueError:
         return RestResponse(code=400, mime_type="text/plain")
     except RuleExistsError:
         return RestResponse(code=409, mime_type="text/plain")
     except NotFoundError:
         return RestResponse(code=401, mime_type="text/plain")
     return RestResponse(mime_type="text/plain")
 def add_sensor(self, sensorName: str, sensorType: str, parameters = "") -> RestResponse:
     if sensorType not in self.__tipo_sensores or sensorName in self.__sensores:
         return RestResponse('Not found', 404, 'text/plain')
     else:
         if sensorType == 'sensorFile':
             self.__sensores[sensorName] = SensorFile(parameters)
             return RestResponse('OK', 200, 'text/plain')
         elif sensorType == 'sensorSystem':
             self.__sensores[sensorName] = SensorSystem(parameters)
             return RestResponse('OK', 200, 'text/plain')
         else:
             return RestResponse('BAD ARGUMENTS', 400, 'text/plain')
 def set_sensor(self, sensorName: str, sensorType : str, parameters = "")-> RestResponse:
     '''Devido a las caracteristicas de los doccionarios de python sirve tanto para crear como para modificar sensores'''
     if sensorType not in self.__tipo_sensores or sensorName not in self.__sensores:
         return RestResponse('Not found', 404, 'text/plain')
     else:
         if sensorType == 'sensorFile':
             self.__sensores[sensorName] = SensorFile(parameters)
             return RestResponse('OK', 200, 'text/plain')
         elif sensorType == 'sensorSystem':
             self.__sensores[sensorName] = SensorSystem(parameters)
             return RestResponse('OK', 200, 'text/plain')
         else:
             return RestResponse('BAD ARGUMENTS', 400, 'text/plain')
Beispiel #6
0
 def logout(self, token: str) -> RestResponse:
     """ Logs out a user/session.
     ---
     Parameters:
         - token: The session token string.
     Returns:
         A RestResponse object with the request response.
     """
     try:
         self.get_user_session_manager().logout(token)
         return RestResponse(mime_type='text/plain')
     except SessionNotFoundError:
         return RestResponse(code=401, mime_type='text/plain')
    def obtenerRespuestaSensor(self, nombreSensor:str) -> RestResponse:
        keys = self.__sensores.keys()
        flag = False
        for s in keys:
            if nombreSensor == s:
                flag = True
                break

        if flag:
            valor_sensor = str(self.__sensores[nombreSensor].monitorizar())
            return RestResponse(valor_sensor, 200, 'text/plain')
        else:
            #Si no existe el sensor ERROR 404
            return RestResponse(code = 404, mime_type = 'text/plain')
Beispiel #8
0
 def login(self, username: str, password: str) -> RestResponse:
     """ Logs in a user.
     ---
     Parameters:
         - username: The user name string.
         - password: The user password string.
     Returns:
         A RestResponse object with the request response.
     """
     try:
         session_id = self.get_user_session_manager().login(
             username, password)
         res_content = {'session_id': session_id}
         res_content_json = json.dumps(res_content, separators=(',', ':'))
         return RestResponse(res_content_json, mime_type='application/json')
     except InvalidCredentialsError:
         return RestResponse(code=401, mime_type='text/plain')
Beispiel #9
0
 def get_log(self, user: str) -> RestResponse:
     """ Gets the log.
     ---
     Parameters:
         - user: The username string.
     Returns:
         A RestResponse object holding the result of the operation.
     """
     try:
         if not self.get_auth_service().has_right(user, "ViewReports"):
             return RestResponse(code=401, mime_type="text/plain")
     except NotFoundError:
         return RestResponse(code=401, mime_type="text/plain")
     result = self.get_log_manager().get_all_runs()
     json_content = [str(log) for log in result]
     json_response = json.dumps(json_content)
     return RestResponse(json_response, mime_type="application/json")
Beispiel #10
0
 def run_rule(self, rule_name: str, user: str) -> RestResponse:
     """ Creates a new user.
     ---
     Parameters:
         - rulename: The rule name string.
         - user: The username string.
     Returns:
         A RestResponse object holding the result of the operation.
     """
     try:
         if not self.get_auth_service().has_right(user, "AdminRules"):
             return RestResponse(code=401, mime_type="text/plain")
         if not self.get_auth_service().has_right(user, "ViewReports"):
             return RestResponse(code=401, mime_type="text/plain")
         result = self.get_rule_manager().run_rule(rule_name,
                                                   self.get_log_manager())
         json_content = {"result": result}
         json_response = json.dumps(json_content)
         return RestResponse(json_response, mime_type="application/json")
     except ValueError:
         return RestResponse(code=400, mime_type='text/plain')
     except RuleNotExistsError:
         return RestResponse(code=404, mime_type='text/plain')
     except RuleRunError:
         return RestResponse(code=500, mime_type="text/plain")
     except NotFoundError:
         return RestResponse(code=401, mime_type="text/plain")
 def has_right(self, username: str, right_name: str) -> RestResponse:
     """ Gets whether a user has a given right or not.
     ---
     Parameters:
         - username: The name of the user.
         - right_name: The name of the right.
         - right_validator: The user right validator to use.
     Returns:
         A RestResponse object with the request response.
     """
     try:
         right: UserRightName = UserRightName[right_name]
         if self.get_user_right_validator().has_right(username, right):
             return RestResponse(mime_type='text/plain')
         return RestResponse(code=404, mime_type='text/plain')
     except KeyError:
         return RestResponse(code=404, mime_type='text/plain')
     except UserNotFoundError:
         return RestResponse(code=404, mime_type='text/plain')
Beispiel #12
0
 def delete_rule(self, rule_name: str, user: str) -> RestResponse:
     """ Deletes a rule.
     ---
     Parameters:
         - rulename: The rule name string.
         - user: The username string.
     Returns:
         A RestResponse object holding the result of the operation.
     """
     try:
         if not self.get_auth_service().has_right(user, "AdminRules"):
             return RestResponse(code=401, mime_type="text/plain")
         self.get_rule_manager().delete_rule(rule_name)
     except ValueError:
         return RestResponse(code=400, mime_type="text/plain")
     except RuleNotExistsError:
         return RestResponse(code=404, mime_type="text/plain")
     except NotFoundError:
         return RestResponse(code=401, mime_type="text/plain")
     return RestResponse(mime_type="text/plain")
Beispiel #13
0
 def create(self, username: str, password: str, token: str) -> RestResponse:
     """ Creates a new user.
     ---
     Parameters:
         - username: The user name string.
         - password: The password string.
         - token: The session token string.
     Returns:
         A RestResponse object holding the result of the operation.
     """
     try:
         self.get_user_manager().create_user(
             username, password, token, self.get_user_right_validator())
     except ValueError:
         return RestResponse(code=400, mime_type='text/plain')
     except InsufficientRightsError:
         return RestResponse(code=401, mime_type='text/plain')
     except UserExistsError:
         return RestResponse(code=409, mime_type='text/plain')
     return RestResponse(mime_type='text/plain')
Beispiel #14
0
 def get_rule(self, rule_name: str, user: str) -> RestResponse:
     """ Gets a rule.
     ---
     Parameters:
         - rulename: The rule name string.
         - user: The username string.
     Returns:
         A RestResponse object holding the result of the operation.
     """
     try:
         if not self.get_auth_service().has_right(user, "AdminRules"):
             return RestResponse(code=401, mime_type="text/plain")
         result = self.get_rule_manager().get_rule(rule_name)
         json_response = json.dumps(str(result))
         return RestResponse(json_response, mime_type="application/json")
     except ValueError:
         return RestResponse(code=400, mime_type="text/plain")
     except RuleNotExistsError:
         return RestResponse(code=400, mime_type="text/plain")
     except NotFoundError:
         return RestResponse(code=401, mime_type="text/plain")
Beispiel #15
0
    def monitorizarSensor(self, sensor_type : str) -> RestResponse:
        """ Extrae los resultados del sensor
        ---
        Parameters:
            - sensor_type: Tipo del sensor.
        Returns:
            A RestResponse object holding the result of the operation.
        """

        try:
            if int(sensor_type)==1:
                resultado = self.__sensor1.obtenerSensor()
                resultado_json = json.dumps(resultado)
            elif int(sensor_type)==2:
                resultado = self.__sensor2.obtenerSensor()
                resultado_json = json.dumps(resultado)
            else:
                resultado = 'Sensor no implementado, en proximas actualizaciones...'
        except ValueError:
            return RestResponse(code=400,mime_type='text/plain')

        return RestResponse(resultado_json , 200, mime_type='text/plain')
 def revoke(self, username: str, right_name: str,
            token: str) -> RestResponse:
     """ Revokes a right from a user.
     ---
     Parameters:
         - username: The name of the user to revoke the right from.
         - right_name: The name of the right to be revoked.
         - token: The session token string.
     Returns:
         A RestResponse object with the request response.
     """
     try:
         right: UserRightName = UserRightName[right_name]
         self.get_user_right_manager().revoke(
             username, right, token, self.get_user_right_validator())
         return RestResponse(mime_type='text/plain')
     except KeyError:
         return RestResponse(code=404, mime_type='text/plain')
     except UserNotFoundError:
         return RestResponse(code=404, mime_type='text/plain')
     except SessionNotFoundError:
         return RestResponse(code=401, mime_type='text/plain')
     except InsufficientRightsError:
         return RestResponse(code=401, mime_type='text/plain')
 def obtenerValoresTodosSensores(self) -> RestResponse:
     res_sensors = {}
     for sensor in self.__sensores:
         res_sensors[sensor] = self.__sensores[sensor].monitorizar()
     res_content_json = json.dumps(res_sensors)
     return RestResponse(res_content_json, 200, mime_type='application/json')
 def get_posibles_tipos(self)->RestResponse:
     print(self.__tipo_sensores)
     res_content_json = json.dumps(self.__tipo_sensores)
     return RestResponse(res_content_json, 200, mime_type='application/json')
 def remove_sensor(self, sensorName: str) -> RestResponse:
     self.__sensores.pop(sensorName)
     return RestResponse('OK', 200, 'text/plain')