12 Oct 2018 |
progserega | положил к себе в закладки | 11:23:44 |
progserega | In reply to @murz:ru-matrix.org во скрипт https://github.com/xwiki-labs/synapse_scripts насколько оно зависит от версии синапса? Т.е. может быть такая ситуация, что оно наломает дров? | 11:53:24 |
Alexey Murz Korepov | не знаю, но ситуация вполне вероятна ;) так что бекапы крайне рекомендую сделать ;) | 11:54:42 |
progserega | спасибо! 🙂 | 11:59:49 |
Alexey Murz Korepov | кстати, меня тут давно интересует вопрос - что будет происходить с федерацией если вдруг синапс поднять с бекапом 2-3 дневной давности? с чужих комнат эвенты как бы прилетят норм, а те которые твой сервак генерил и всех рассылал - они останутся привидениями висеть? ;) | 12:01:17 |
progserega | ну вот сегодня мой сервак "выпал" из федерации из-за ДНС и сообщения с него улетели с неверными метками в комнату и перемешались с другими сообщениями. Наверное не совсем подобрая ситуация, но... | 12:30:26 |
progserega | я бы сказал даже в такой ситуации как-то странно отработалось | 12:31:35 |
progserega | Разбираюсь с python-апи - не могу понять, что есть auth_body:
def delete_device(self, auth_body, device_id):
Что ему передавать в виде type для доступа по токену?
| 14:44:08 |
progserega | как я понимаю, логика должна быть такая:
- логинимся по паролю
- получаем токен
- делаем что хотим (в том числе низкоуровневым АПИ), передавая в качестве аутентификации полученный на втором шаге токен
| 14:45:20 |
progserega | пример в документации ничего не проясняет:
{
"auth": {
"example_credential": "verypoorsharedsecret",
"session": "xxxxx",
"type": "example.type.foo"
}
}
| 14:46:43 |
ma1uta | In reply to @murz:ru-matrix.org кстати, меня тут давно интересует вопрос - что будет происходить с федерацией если вдруг синапс поднять с бекапом 2-3 дневной давности? с чужих комнат эвенты как бы прилетят норм, а те которые твой сервак генерил и всех рассылал - они останутся привидениями висеть? ;) Клиент отображает сообщения в порядке их получения серверов. То есть вылезет старая переписка как новая :) | 14:46:44 |
ma1uta | С удалением устойств хитро. | 14:47:09 |
ma1uta | На самом деле ты можешь отправить с пустым auth, сервер вернет ошибку с описанием чего он хочет. | 14:47:37 |
progserega | In reply to @ma1uta:ru-matrix.org С удалением устойств хитро. список я получил, осталось только удалить 🙂 | 14:47:43 |
ma1uta | Для удаления списка есть второй метод, который пачкой удаляет устройства | 14:48:09 |
ma1uta | Как правило, в первый запрос на удаление устройства туда передаётся пароль от аккаунт. Потом можно без auth отправлять. | 14:48:56 |
progserega | да, но ему тоже надо как-то авторизацию передать. Да и мне, по идее, нужно удалить все, кроме одного... | 14:49:06 |
ma1uta | Когда ты удаляешь устройства с риота, то первый раз вводишь пароль, а потом уже ничего вводить не надо. | 14:49:37 |
ma1uta | Вот этот пароль Риот и отправляет в auth. | 14:50:06 |
progserega | client = MatrixClient(conf.server)
token = client.login(username=conf.username, password=conf.password,device_id=conf.device_id)
auth_body={}
auth_body["session"]=client.api.token
auth_body["type"]="m.login.password"
response=client.api.get_devices()
print("len(devices)=%d"%len(response["devices"]))
for device in response["devices"]:
if device["device_id"]!="HSDNLQODDJ":
print("delete device: %s"%device["device_id"])
response=client.api.delete_device(auth_body=auth_body,device_id=device["device_id"])
sys.exit(0)
как-то я не так формирую структуру auth_body
| 14:50:59 |
ma1uta | Это сделано специально, чтобы избежать ситуации, когда токен утек на сторону, злоумышленник не сможет удалить все устройства настоящего пользователя и оставить свои. | 14:51:11 |
progserega | хм | 14:51:23 |
ma1uta | А, это я туплю. | 14:53:53 |
ma1uta | Сделай запрос без auth, сервер вернет тебе session id и список того, что он хочет. | 14:54:13 |
ma1uta | И вторым запросом ты передаешь этот session id и нужные серверу credentials. | 14:54:39 |
ma1uta | In reply to @ma1uta:ru-matrix.org Сделай запрос без auth, сервер вернет тебе session id и список того, что он хочет. Вернет вместе с 401 ошибкой. | 14:54:53 |
progserega | в примере дано такое:
{
"auth": {
"example_credential": "verypoorsharedsecret",
"session": "xxxxx",
"type": "example.type.foo"
},
"devices": [
"QBUAZIFURK",
"AUIECTSRND"
]
}
меня ставит в ступор example_credential - что это? Реальный параметр "имя_ключа для пароля"?
| 14:55:01 |
ma1uta | Нет, это пример. :) | 14:55:23 |
ma1uta | В зависимости от type надо в auth добавлять разные поля | 14:55:53 |
progserega | ааа | 14:57:02 |