2.5 KiB
2.5 KiB
PGS_AVATAR_SYNC
Скрипт использует Flask для REST API.
Позволяет при входе пользователей в CO обращаться на IPA сервер для получения фотографии пользователя, а затем, при необходимости, отправляет её в COAPI для обновления в профиле пользователя.
Переменные окружения
| Название | Значение по умолчанию | Описание |
|---|---|---|
| CO_API_URL | "https://coapi.hyperus.team/api/v1/auth" | Конечная точка COAPI для работы с "profile/picture" |
| IPA_ADDRESS | ipa.hyperus.team | Адрес сервера IPA |
| IPA_LOGIN | automated.carbon | Учетная запись подключения к IPA |
| IPA_PASSWORD | - | Пароль учетной записи подключения к IPA |
Установка
- Собрать образ и запустить контейнер на сервере CO.
docker build . --build-arg FLASK_PORT=8085 --tag pgs_avatar_sync:0.0.1
docker run -d -e IPA_PASSWORD="securepassword" --name pgs_avatar_sync --network host --restart always pgs_avatar_sync:0.0.1
- Добавить дополнительную обработку на стороне
openresty-lb-core-auth:
/opt/openresty/nginx/conf/co/lua/auth/co_auth_login.lua
Ищем строку в конце файла (~60):
ngx.say(cjson.encode({ success = "true", token = token }));
Добавляем перед ней:
-- Send data for update avatars
local httpc = http:new();
local request = {
method = "POST",
body = cjson.encode({ login = login, token = token }),
headers = {
["Content-Type"] = "application/json; charset utf-8"
},
ssl_verify = false
};
--- Необходимо указать корректный порт, FLASK_PORT переданный при сборке
local avatar_res, avatar_err = httpc:request_uri("http://172.17.0.1:8085/avatar", request);
if not avatar_res then
ngx.log(ngx.ERR, "Request failed: ", avatar_err)
end
httpc:close();
ngx.log(ngx_INFO, "Update avatar for <" .. login .. ">.");