Пример #1
0
    def on_post(self, req, resp):
        rootLogger.info("Appel de la commande POST de l'api fh_login")
        # Demande de connexion à l'application
        rootLogger.debug("Req = {!r}".format(req))
        try:
            data = json.load(req.stream)
        except Exception as e:
            send_resp(resp, falcon.HTTP_400, 400, "error",
                      "Erreur lors de l'analyse du body envoyé")
            return
        rootLogger.debug("data = {!r}".format(data))

        try:
            idinfo = valid_google_oauth_token(data['token'])

            if not self.db.check_user_exist(idinfo['email']):
                rootLogger.info(
                    "L'utilisateur {!r} n'éxiste pas encore dans la base".
                    format(idinfo['email']))
                self.db.add_user(idinfo['email'])
            send_resp(resp, falcon.HTTP_200, 200, "info", "Token valide")
            return
        except Exception as e:
            rootLogger.error(str(e))
            send_resp(resp, falcon.HTTP_401, 401, "error", str(e))
            return
Пример #2
0
    def on_get(self, req, resp):
        """Recuperation de la liste des salles
        ---
            description: Recuperation de la liste des salles
            responses:
                200:
                    description: Recuperation de la liste des salles
                    schema: ResponseSchema
                401:
                    description: Erreur de token
                    schema: ResponseSchema
        """
        rootLogger.info(
            "Appel de la commande GET de l'api fh_salles sans paramètre")
        try:
            user = connect_from_header_connection(req, resp, self.db)

        except Exception as e:
            rootLogger.error(str(e))
            send_resp(resp, falcon.HTTP_401, 401, "error", str(e))
            return
        rootLogger.debug("Récupération des informations des salles en base")
        salles = self.db.list_salles()
        salle = {}
        salle['salles'] = {}
        rootLogger.debug(salles)
        for key, value in salles.items():
            rootLogger.debug("{}=>{}".format(key, value))
            salle['salles'][key] = {}
            salle['salles'][key]['levels'] = value
        send_resp(resp, falcon.HTTP_200, 200, 'salles', salle)
Пример #3
0
    def on_get(self, req, resp):
        """Recuperation de la liste des hopitaux disponible
        ---
            description: Recuperation de la liste des hopitaux
            responses:
                200:
                    description: Recuperation de la liste des hopitaux
                    schema: ResponseSchema
                401:
                    description: Erreur de token
                    schema: ResponseSchema
        """
        rootLogger.info("Appel de la commande GET de l'api fh_hospitals")
        try:
            user = connect_from_header_connection(req, resp, self.db)

        except Exception as e:
            rootLogger.error(str(e))
            send_resp(resp, falcon.HTTP_401, 401, "error", str(e))
            return
        rootLogger.debug(
            "Récupération des hopitaux de l'utilisateur {!r}".format(user))
        hospitals = self.db.list_hospitals(user['id'])
        hosp = {}
        hosp['hospitals'] = []
        for hospital in hospitals:
            rootLogger.debug(hospital)
            hosp['hospitals'].append({"name": hospital[2], "id": hospital[0]})
        send_resp(resp, falcon.HTTP_200, 200, 'hospitals', hosp)
Пример #4
0
def valid_google_oauth_token(token):
    CLIENT_ID = GOOGLE_API_KEY

    google_token = token
    # validation du token google
    idinfo = id_token.verify_oauth2_token(google_token, requests.Request(),
                                          CLIENT_ID)
    rootLogger.debug("idinfo = {!r}".format(idinfo))
    if idinfo['iss'] not in [
            'accounts.google.com', 'https://accounts.google.com'
    ]:
        raise ValueError('Wrong issuer.')
    rootLogger.info("Connexion google réussi pour {!r}".format(
        idinfo['email']))
    return idinfo
Пример #5
0
    def on_post(self, req, resp):
        """Creation d'un nouvel hopital
        ---
            description: Creation d'un nouvel hopital
            responses:
                200:
                    description: Recuperation de la liste des hopitaux
                    schema: ResponseSchema
                400:
                    description: Erreur d'analyse du body
                    schema: ResponseSchema
                401:
                    description: Erreur de token
                    schema: ResponseSchema
                409:
                    description: La ressource existe deja
                    schema: ResponseSchema
        """
        rootLogger.info("Appel de la commande POST de l'api fh_hospitals")
        try:
            user = connect_from_header_connection(req, resp, self.db)

        except Exception as e:
            rootLogger.error(str(e))
            send_resp(resp, falcon.HTTP_401, 401, "error", str(e))
            return

        try:
            data = json.load(req.stream)
        except Exception as e:
            send_resp(resp, falcon.HTTP_400, 400, "error",
                      "Erreur lors de l'analyse du body envoyé")
            return
        rootLogger.debug("data = {!r}".format(data))

        try:
            self.db.add_hospital(user['id'], data['name'])
            send_resp(resp, falcon.HTTP_201, 201, "Info",
                      "L'hopital {!s} à été créé".format(data['name']))
        except mysql.connector.Error as e:
            if e.errno == errorcode.ER_DUP_ENTRY:
                send_resp(resp, falcon.HTTP_409, 409, "error",
                          "L'hopital existe déjà")
            else:
                print(e)
                send_resp(resp, falcon.HTTP_500, 500, "error",
                          "Erreur non géré")
            return
    def log_in(self):
        s = self.s
        s.get('https://ru.grepolis.com/')

        s.headers.update({
            'X-XSRF-TOKEN': s.cookies['XSRF-TOKEN'],
        })

        auth_data = {
            'login[userid]': self.login,
            'login[password]': self.passwd,
            'login[remember_me]': True,
        }

        try:
            r = s.post('https://ru.grepolis.com/glps/login_check', data=auth_data)
        except:
            rootLogger.info('[!] ERROR while send auth POST-request')
            return

        response_json_dict = r.json()

        if 'success' in response_json_dict:
            if response_json_dict['success']:
                rootLogger.info('[+] Auth OK:\t%s:%s' % (self.login, self.passwd))
                return True
            else:
                if 'Нет игрока с таким именем' in response_json_dict['message']:
                    rootLogger.info('[-] BAD Username:\t%s:%s' % (self.login, self.passwd))
                elif 'Неверный пароль' in response_json_dict['message']:
                    rootLogger.info('[-] BAD Passwod:\t%s:%s' % (self.login, self.passwd))
                else:
                    rootLogger.info('[-] BAD Auth:\t%s:%s\t%s' % (self.login, self.passwd, response_json_dict))

        # if unexpected response
        else:
            rootLogger.error('[!] Unexpected log_in response: %s' % response_json_dict)
            return False
Пример #7
0
from hospital import fh_hospitals
from salles import fh_salles

# le reste de l'appli
from bdd import fh_bdd
from logger import rootLogger

SWAGGERUI_URL = '/swagger'
SCHEMA_URL = '/static/v1/swagger.yaml'
API_VERSION = 'v1'
STATIC_PATH = pathlib.Path(__file__).parent / 'static'

page_title = 'FH_Assist Swagger Doc'
favicon_url = 'https://funhospital.tsuna.fr/favicon.ico'

rootLogger.info("Démarrage de l'api")


def handle_404(req, resp):
    send_resp(resp, falcon.HTTP_404, 404, "error", "API non trouvé")


class fh_login:
    """Connection à l'api
    ---
      description: Connection à l'api

    """
    token = None
    db = None