Как я могу добавить много пользователей с известными паролями

Я настраиваю чат-сервер на испытательном стенде с воздушным зазором, где у меня будут тысячи автоматизированных пользователей, разговаривающих друг с другом для создания сетевого трафика. Я видел импорт пользователей через CSV, задокументированный здесь. Это позволяет мне создавать своих пользователей, но не с предварительно назначенными паролями. Глядя в programs/server/packages/rocketchat_importer-csv.js, я вижу, что он устанавливает пароль в формульную строку, включая текущую дату.

Это так же хорошо, как случайный пароль для моих нужд.

Есть ли способ, скажем, включить еще один столбец в CSV, где я могу назначить пароль для каждого пользователя?

Я установил его с помощью снимков на Ubuntu 16.04.4, если это на что-то повлияет.


person Eric Renouf    schedule 13.03.2018    source источник
comment
Использовать CSV или JSON для хранения паролей — плохая привычка, потому что их можно увидеть публично. Вместо этого используйте бинарную версию или базу данных.   -  person Kardi Teknomo    schedule 13.03.2018
comment
Спасибо, но, как уже отмечалось, это для поддельных пользователей в сети с воздушным зазором для создания тестовых данных. Затем пароли будут храниться в файлах конфигурации в виде простого текста, чтобы боты знали, как войти в систему позже. В целом я с вами согласен, но как конкретное тестовое оборудование я, скажем так, довольно свободен от проблем безопасности (иногда это даже конкретный момент тестового прогона, поэтому для меня это становится жестким требованием, не только удобство).   -  person Eric Renouf    schedule 13.03.2018
comment
Вы нашли решение? Я тоже пытаюсь импортировать хешированные пароли MD5 в Rocket Chat   -  person Zolbayar    schedule 18.07.2018
comment
@Zolbayar Я только что опубликовал сценарий, который в итоге использовал, но я не уверен, что он поможет с уже установленными паролями.   -  person Eric Renouf    schedule 18.07.2018


Ответы (1)


В конце концов, я написал скрипт на Python, чтобы сделать веб-запрос для каждой строки CSV. Вот что я придумал:

import csv
import json
import requests

def main(csv_path, admin_user, admin_pass, base_url):
    """
    Read the given CSV of the format:
        loginname, email, real name, password

    and create all the users described in it in the Rocket.Chat server
    available at `base_url`
    """
    login_json = json.dumps({'username': admin_user, 'password': admin_pass})
    response = requests.post(base_url + '/api/v1/login', data=login_json)
    data = response.json()['data']
    token = data['authToken']
    userid = data['userId']
    headers = {
        'X-Auth-Token': token,
        'X-User-Id': userid,
        'Content-type': 'application/json',
    }

    with open(csv_path) as raw:
        reader = csv.reader(raw)
        for user in reader:
            request = {
                'username': user[0],
                'email': user[1],
                'name': user[2],
                'password': user[3],
            }
        ret = requests.post(base_url + '/api/v1/users.create',
            data=json.dumps(request), headers=headers)
person Eric Renouf    schedule 18.07.2018