Ejemplo n.º 1
0
def initialize_rabbitmq_user(user):
    """
    This function is used when a new provider registers in the network.
    It adds a new user in RabbitMQ and sets their permissions.
    :param user: The newly registered user
    """
    # TODO: passwords have a pattern for all users. This needs to be changed.
    password = user.username + '_mqtt'
    api = AdminAPI(url='http://' + RABBITMQ_HOST + ':' +
                   RABBITMQ_MANAGEMENT_PORT,
                   auth=(RABBITMQ_USER, RABBITMQ_PASS))
    api.create_user(user.username, password)

    # process = subprocess.Popen(['sudo', 'rabbitmqctl', 'add_user', user.username, password],
    #                            stdout=subprocess.PIPE, universal_newlines=True)
    # stdout, stderr = process.communicate()
    # print(stdout)

    permission = "^(" + user.username + ".*|amq.default)$"

    api.create_user_permission(user.username, '/', permission, permission,
                               permission)
Ejemplo n.º 2
0
class RecSystemsManager:
    def __init__(self, host='localhost', username='******', password='******', queuename='testqueue'):
        self.api = AdminAPI(url='http://' + host + ':15672', auth=('guest', 'guest'))
        self.host = host
        self.cr = pika.PlainCredentials(username=username, password=password)
        self.conn = pika.BlockingConnection(pika.ConnectionParameters(self.host, credentials=self.cr))
        self.chann = self.conn.channel()
        self.queue = self.chann.queue_declare(queuename, durable=True)
        self.routing_key = queuename

    def subscribeSystem(self, teamname, system, passwd):
        self.api.create_vhost('second_vhost', tracing=True)
        self.api.create_user(teamname, passwd)
        self.api.create_user_permission(teamname, 'second_vhost')
        # Include SQL Database authentication here
        self.chann.queue_declare(teamname + '_' + system + '_' + 'rec_requests', durable=True)
        self.chann.queue_declare(teamname + '_' + system + '_' + 'user_assign', durable=True)
        self.chann.queue_declare(teamname + '_' + system + '_' + 'news_recs', durable=True)
        self.chann.queue_declare(teamname + '_' + system + '_' + 'user_data', durable=True)
        self.chann.queue_declare(teamname + '_' + system + '_' + 'news_request', durable=True)

    def createQueue(self, name, durable):
        self.chann.queue_declare(name, durable)
Ejemplo n.º 3
0
def create_project_user_and_vhost(project_id):
    secrets = get_project_secrets(project_id)
    hidden_secrets = get_project_hidden_secrets(project_id)

    # connect to RabbitMQ management api
    rabbit_api = AdminAPI(url=f'http://carrier-rabbit:15672',
                          auth=(hidden_secrets["rabbit_user"],
                                hidden_secrets["rabbit_password"]))

    # prepare user credentials
    user = f"rabbit_user_{project_id}"
    password = password_generator()
    vhost = f"project_{project_id}_vhost"

    # create project user and vhost
    rabbit_api.create_vhost(vhost)
    rabbit_api.create_user(user, password)
    rabbit_api.create_user_permission(user, vhost)

    # set project secrets
    secrets["rabbit_project_user"] = user
    secrets["rabbit_project_password"] = password
    secrets["rabbit_project_vhost"] = vhost
    set_project_secrets(project_id, secrets)