Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- En node red debe el nodo de mqtt que publica debe autenticarse con el nombre "microcontrolador" y clave "Isis2503"
- el nodo que se subscribe debe tener como nombre de usuario "subscriptor" y su clave es "4321" con este usuario solo
- se puede leer no puede publicar
- """
- import base64
- import hashlib
- import redis
- from flask import Flask, Response, request
- app = Flask(__name__)
- r = redis.Redis()
- hexa = hashlib.md5(b'Isis2503.').hexdigest()
- claveS = hashlib.md5(b'4321').hexdigest()
- claveP = hashlib.md5(b'1234').hexdigest()
- r.set('microcontrolador', hexa)
- r.set('subscriptor', claveS)
- r.set('publicador', claveP)
- puede = True
- @app.route('/auth', methods=['POST'])
- def auth():
- response = Response(content_type='text/plain', status=403)
- try:
- auth = request.headers.get('Authorization')
- token = auth.split(' ')[1]
- data = base64.b64decode(token).decode("utf-8").split(':')
- username = data[0]
- password = bytes(data[1], 'utf-8')
- print(password)
- hexdi = hashlib.md5(password).hexdigest()
- if r.get(username).decode("utf-8") == hexdi:
- response.status_code = 200
- except:
- pass
- return response
- @app.route('/superuser', methods=['POST'])
- def superuser():
- response = Response(content_type='text/plain', status=403)
- try:
- auth = request.headers.get('Authorization')
- token = auth.split(' ')[1]
- data = base64.b64decode(token).decode("utf-8").split(':')
- username = data[0]
- # password = data[1]
- if username == 'microcontrolador': # and password == '13579':
- response.status_code = 200
- except:
- pass
- return response
- @app.route('/acl', methods=['POST'])
- def acl():
- response = Response(content_type='text/plain', status=403)
- try:
- auth = request.headers.get('Authorization')
- acc = request.form.get('acc')
- token = auth.split(' ')[1]
- data = base64.b64decode(token).decode("utf-8").split(':')
- username = data[0]
- if username == 'subscriptor' and int(acc) == 1:
- response.status_code = 200
- except:
- pass
- return response
- if __name__ == '__main__':
- app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement