Серия «Кудахтеры»

8

Импортозамещение: Гитфлик (GitFlic)

Для лиги лени: продукт есть, но есть куда расти. Некоторые вещи вызывают недоумение.
Медведь годный.

Годный медведь

Годный медведь

Учебник по интиму часть 1. Введение
Часть 2. Стоит только нам взять телескоп и посмотреть вооружённым глазом
Часть 3. Давайте пробовать поставить
Часть 4. Немного душноты
Часть 5. Gitflic api
Заключение

Учебник по интиму часть 1. Введение

Пришли ко мне в личку, в запрещенной в РФ сети, бывшие коллеги с вопросом, а знаю ли я, а могу ли я посмотреть, и им показать, что такое гитфлик (GitFlic). Я про такое первый раз слышу, потому что за импортозамещением в ИТ в РФ не слежу. Нет смысла следить за переименованиями, типа Debian 10-11-12 – Astra, Samba – ALD, Панголин – PostgreSQL, и так далее.

Тут вот, свой продукт.

Погуглил.
На сайте новостей Минцифры – две рекламные статьи, обе от 2021 года:
Первая - GitFlic. Российский GitHub и вторая, ответ на нее, «GitFlic: нас обвинили в «распиле». На этом все.
Остальное – 3 рекламные статьи, и два треда на лоре «как это работает вообще без техподдержки».
И, внезапно, статья от 1с – Инфостарт, Автоматизация процесса разработки с помощью сервиса GitFlic.
Пока дописывал статью, нашлась еще одна минцифровая статья «Cборка Java-проектов в GitFlic Kubernetes-агентом»

GitFlic не является форком какого-либо решения. Он написан с нуля и создан без иностранного участия, поэтому не зависит от внешних факторов и сторонних разработок.

В отличие от GitLab и GitHub, которые разработаны на Ruby и Ruby on Rails, GitFlic написан на Java. Это обеспечивает стабильность и производительность даже для крупных проектов.

Это Java то про производительность? Ну ладно

В 2023 году продукт был куплен Астрой

ГК «Астра» продолжает реализацию стартовавшей в 2020 году M&A-стратегии и объявляет о вхождении в контур группы ООО «РеСолют», разработчика GitFlic —сервиса для работы с исходным кодом и его хранения. Сделка проводится в два неразрывных этапа, по завершении которых в конце текущего года ГК «Астра» получит мажоритарную долю 51%. Оставшаяся часть акций будет по-прежнему принадлежать основателям компании: Алексею Синицину, Максиму Козлову, Тимуру Миронову, Денису Рамазанову и Константину Леоновичу. Стратегические договоренности компаний предполагают, что в дальнейшем ГК «Астра» сможет еще увеличить свою долю в разработчике.

Ну был и был, мало ли чего скупила Астра.

Часть 2. Стоит  только нам взять телескоп и посмотреть вооружённым глазом

Продукт позиционируется как комбайн с вертикальным взлетом – тут и хранение кода (вместо GitLab Self-Managed), и хранение итогов сборок вместо Maven (Реестр пакетов Maven), Nexus, и так далее. С релиза 3 объявили что «Релиз 3.0.0 отличается удобным интерфейсом, развитой функциональностью и способен стать полноценной заменой зарубежных продуктов GitHub, GitLab, Nexus, Artifactory, Jenkins и т.д.»

Пишут, что теперь работает и с OneScript (это для 1с).
Обещают замену не только хранению кода, но и CI\CD, почти как в GitLab Runner или в GitHub Actions.
В версии 4.6 пообещали что уже добавили:
Проксирование реестра пакетов Deb
Проксирование реестра пакетов Helm
Прочее - 4.6.0 Что нового
Обещают, что к проекту подключилось 100500000000 пользователей, но на этом все. Просто все.
Зато в 4.4 отобрали манифесты:

Из стандартных пакетов убраны манифесты для k8s. На смену им пришли Helm Charts

При этом примеров «как это работает» и рассказов, кроме «мы внедрили, интерфейс красивый» - нет. Реклама есть. Сообщества нет. Примеров нет. Чат в телеграмме есть.

У продукта два исполнения – облачное и self-hosted. Облачное ни коллегам, ни мне не интересно, а на self-hosted можно и посмотреть.

Дальше я буду попутно сравнивать с GitLab Community Edition. Не потому, что он какой-то супер, а потому что я его видел, и с ним время от времени сталкиваюсь. У GitFlic Self-Hosted возможностей вроде сильно побольше, но посмотрим.

Gitlab CE (Community Edition ). Ставится в одну команду по инструкции с официального сайта -
sudo EXTERNAL_URL="https://gitlab.example.com" apt install gitlab-ce

Все.
На самом деле нет, если посмотреть Gitlab CE Self-compiled installation, то там английским по белому написано:  In GitLab 18.0 and later, PostgreSQL 16 or later is required.

GitFlic Self-Hosted. Требует Redis и PostgreSQL.
Зачем им редис – не понимаю. Но, GitLab Community Edition включает NGINX, Postgres, Redis, так что, есть и есть, как и у GitLab CE

Сама web страница загрузки (их репо) малость странное. Сверху указывается «N дней назад», и только внизу указано 2025-11-06, причем зачем-то этот фрагмент как-бы-защищен (нет) от выделения и копирования.

В реестре контейнеров последний бесплатный дистрибутив -
gitflic-server-ce
Бесплатный дистрибутив GitFlic
Версия latest
Опубликован 26 марта 2025 г.

Скачан целых 5 (пять) раз.

Дистрибутивы: Gitlab CE в варианте gitlab-ce_18.3.6-ce.0_arm64.deb.
GitLab Community Edition (including NGINX, Postgres, Redis)
Package Size 1.31 GB
Installed Size 3.55 GB
MD5  7244b435f26e74991f02a6525c4d3d26
SHA1  11c154d0bb4df6e9be39af864185d0cdfac7ea9e
SHA256  6b3e1ae33d8dd89c7344338fc51f98e39d992b2c87e6b6e0167d91b496390868
SHA512  479be83c2f8eb0247637097e5b1863f2eafe1787ed9e9b843e470eed343e8328799187b5153d723b6c756405e64005fd9b4faa59da471ded412a259643e254cf

Все вместе с опубликованными MD5 лежит открыто.

Дистрибутивы:gitflic .. все сложно.
По ссылке – лежит описание по 4.6.0
По другой ссылке
Лежит короткий readme, ссылка на сам файл gitflic-server_onpremise_4.6.0.zip, и ничего кроме.
MD5 ? SHA? Не завезли.
Ссылку для wget ? Не завезли.

Прямая ссылка на сейчас -
https://gitflic.ru/project/gitflic/gitflic/release/7f32e898-...

Файл gitflic-server_onpremise_4.6.0.zip размером 780590717 байт.
MD5 25C91261305A3EDA778684363D1D9D4F
SHA256 67DE3A8EFAD516DB39196E9DA6726E4A5287D51F60950951C62106C22CC4301D

На момент начала написания статьи обновление вышло буквально вчера (статья писалась почти 2 недели, работы привалило, откуда не ждали). Буду смотреть сразу свежее.

Часть следующая, давайте пробовать офлайн

У дебиан опять поменялась страница загрузки, так что, например, отсюда
https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/
берем debian-13.2.0-amd64-DVD-1.iso
Тестовая VM, 2 vCPU, 4 Гб памяти, 45 Гб жесткий диск, Debian 13. Next-next-без графики-готово-забираем обновления – готово.
Правим /etc/network/interfaces и /etc/apt/sources.list
Заодно правим /etc/sysctl.conf от ipv6 и /etc/resolv.conf для DNS
Убеждаемся в  том, что по неведомым причинам /usr/sbin/ так и не прописан в путях по умолчанию, делаем ребут.
/usr/sbin/shutdown

Смотрим – получилось меньше 5 Гб всей виртуальной машины.
Заливаем туда gitflic-server_onpremise_4.6.0.zip, отключаем сеть на уровне гипервизора и идем читать инструкцию

В инструкции куча слов про создание папок и установку из zip, но ни слова про то, что jar файлы по умолчанию запускать нечем.
Между тем, ПО идет как jar -
gitflic.jar, размером 444275979,
MD5  7ADC17898B22007B71C8C3D305777B42
SHA256  19468BAE05E83ADB6F56792C7BB6C946CE40CFD2F35F47B72BF77CAF879DF7B4

Поэтому, кроме упомянутого в руководстве apt install unzip , нужно сделать и apt install default-jdk. Еще в инструкции по установке везде стоит sudo, его тоже нет в debian по умолчанию. Хотите – ставьте.
Дальше хотелось бы делать по инструкции, но так не выйдет.
Потому что инструкцию надо было читать с самого начала, раздела «Предварительные условия», а не как я, сразу перейдя к установке приложения.

В предварительных условиях указано:
OpenJDK 11
default-jdk на момент написания статьи - openjdk 21.0.9 2025-10-21, OpenJDK Runtime Environment (build 21.0.9+10-Debian-1deb13u1)

Затем, везде в инструкции стоит использование sudo. Его по умолчанию нет в Debian, поэтому
apt install sudo

В инструкции указан PostgreSQL 11. Последняя версия, 11.22, вышла два года назад, 2023-11-09.
Актуальная версия – 18.1, или хотя бы  17.7. А тут 11.

Попробую с 16, что еще делать.
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor –o /etc/apt/trusted.gpg.d/postgresql.gpg
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
apt install -y postgresql-16

и дальше пойдем по инструкции из раздела Астры для PostgreSQL 11.
Файла мандатного доступа etc/parsec/mswitch.conf у меня нет, и хорошо.  В инструкции в пути мелкая опечатка, и в части установки расширений забыли написать \q
дальше ставим Redis, ну или keyDB. Я поставил Redis - apt install redis, redis-cli ping отработал.

Остается сразу перевесить порт сервера с 22 на, скажем, 1122. Найду конфиг
find / -name "sshd_config" , и поправлю. Потом ребут, и

Перейду к самой установке по инструкции
mkdir /tmp/gitflic
unzip gitflic_*.zip -d /tmp/gitflic – эта команда не сработает с ошибкой
unzip:  cannot find or open gitflic_*.zip, gitflic_*.zip.zip or gitflic_*.zip.ZIP.

Будьте добры писать команду целиком,
unzip gitflic-server_onpremise_4.6.0.zip -d /tmp/gitflic
cd /tmp/gitflic

for d in cicd repo img releases registry; do sudo mkdir -p "/var/gitflic/$d"; done;
эта команда .. ну, я от рута делал, так что на sudo ругнется.
sudo mkdir -p /opt/gitflic/bin
sudo mkdir -p /etc/gitflic
sudo mkdir -p /var/log/gitflic
sudo cp gitflic.jar /opt/gitflic/bin
sudo cp application.properties /etc/gitflic/application.properties
sudo mkdir -p /opt/gitflic/cert
sudo ssh-keygen -t ed25519 -N "" -q -f /opt/gitflic/cert/key.pem

И так далее. Шаг 13, конечно, тоже не сработает – нужно не useradd, а
/usr/sbin/useradd --no-create-home --system --shell /sbin/nologin gitflic

Дальше в инструкции идет раздел «Конфигурация SSH порта». На .. то есть – зачем?
Раздел «Конфигурация SSH порта» ссылается на следующий раздел, «Конфигурация и запуск». Это многое объясняет.
Если же читать инструкцию с начала, а не с середины, то в разделе «Предварительные условия» написано – зачем:

Для того, чтобы было возможным использовать remote-url вида git@gitflic.ru:gitflic/gitflic.git, необходимо освободить стандартный 22 порт ssh сервера!

Раздел написан корректно, но можно чуть-чуть улучшить. Например, переписав весь список главы «установка под Астру» в раздел «просто установка». Но, можно и не переписывать, продукт куплен Астрой.

Все бы хорошо, но нельзя просто так и сделать только по инструкции. Не работает. Например, сделав
systemctl status gitflic-server.service
видно, что сервис есть, а веб консоли – нет.  Почему? Потому что надо смотреть инструкцию лучше, сервис по умолчанию стартует как [::ffff:127.0.0.1]:8080

В инструкции написано:

После запуска перейдите по адресу, указанному при конфигурировании и проверьте работоспособность сервиса

Но в инструкции нет пункта «адрес конфигурации».
Точнее, в самом начале инструкции указано:
Перед конфигурацией приложения, ознакомьтесь с назначением параметров на странице Конфигурация application.properties

По пункту 9 инструкции по установке понятно, что параметры лежат в
/etc/gitflic/application.properties, и внутри там написано
# Дефолтное значение адреса localhost
server.address=127.0.0.1
gitflic.base.url=http://localhost:8080 .
Заодно и логи указано где хранить, logging.file.name=/var/log/gitflic/server.log

Ну, окей, все понятно, слушаем на локалхосте. Ничего такого. Там же указано:
# При необходимости также можно указать порт, на котором будет запущен SSH сервер для работы
# SSH транспорта git. Дефолтное значение порта 22
ssh.server.port=2255

Ничего не понятно, но очень интересно.

Ну да ничего. Правим в конфиге IP и делаем systemctl restart  gitflic-server.service. Перезапускается пару минут (в ограниченной по ресурсам виртуалке), и появляется WEB консоль.
Медведь хороший, мне нравится! Настолько хороший, что я выкинул из черновика картинки Kadabrus.
Остается зайти:
Стандартный пользователь и пароль
Почта - adminuser@admin.local
Пароль - qwerty123

Зашло. Работает.
И даже работает после перезагрузки.

Итого по установке
Медведь выбран удачно.
Инструкция достаточна для установки. Есть мелкие недоделки, типа пропущенного в одном месте слеша, или \q для выхода из psql, но ничего критичного.
PostgreSQL 11 надо менять на 16, 17 или лучше сразу 18. 11 – устарел.
JDK тоже указан старый.
В инструкции по LDAP авторизации сделано что-то не очевидное, но сейчас с этим разбираться лень

Часть 4. Немного душноты

С чем у коллег проблемы? Проблемы с тем, что они не разработчики, и им Git не нужен. Зато нужно брать секреты из Vault, и забирать к себе готовые плейбуки, ямл, открытые ключи, скрипты и так далее. И, кстати, контейнеры.
Что умеет забирать файлы из онлайна?
Если говорить про Linux, то это curl, wget, docker - docker push, далее со всеми остановками вроде Automate Ansible With GitLab и Build enterprise-grade IaC pipelines with GitLab DevSecOps.
Если говорить про Windows, то есть Desired State Configuration, но иногда людям хочется интима и единообразия, так что мы получаем invoke-webrequest и Invoke-RestMethod. И то и другое относится к (кажется) System.Net.Sockets, но про это не будем.
В Windows есть и wget, но это оболочка для invoke-webrequest, и есть два curl:  один как командлет, и отдельный curl как честный curl.exe. Вот с этим всем и надо попробовать, как чего работает.

Часть 5. Gitflic api

Что есть в документации? Есть документация по  REST-API. И есть небольшая репа gitflic-api, которую надо читать.

Начало простое:
Отправка любого REST-API метода требует авторизации. Для этого необходимо создать токен доступа и указать его в заголовке запроса в следующей форме ..
Создам проект MyNewproject01, в нем ветку master, в нем файл myfile01 с содержанием content01.

Для создания токена доступа через интерфейс необходимо:
Перейти в профиль пользователя
Перейти в раздел API токены
Нажать кнопку Создать

Сказать что инструкция «не очевидная» - это ничего не сказать. Профиль пользователя виден и в левом меню, и в правом верхнем. И токены API генерируются в правом верхнем меню

Вот сюда не надо!

СЮДА НЕ НАДО

СЮДА НЕ НАДО

Надо вот сюда!

Надо вот сюда!

Надо вот сюда!

Токены то есть, но токена «чтобы только читал» там нет.
В Gitlab сделано понятно, надо дать
read_repository: Grants read-only access to repositories on private projects using Git-over-HTTP or the Repository Files API.
read_user (Grants read-only access to your profile through the /user API endpoint, which includes username, public email, and full name. Also grants access to read-only API endpoints under /users. )
read_api (Grants read access to the API, including all groups and projects, the container registry, and the package registry.)

а тут как?
Просмотр информации о пользователе – ну, допустим.
Просмотр информации о проектах пользователя – окей,
Просмотр информации о реестре пакетов
Создание пакетов реестра
Удаление пакетов реестра

Где простой read_repository_only ?
Дам все права сразу, потом разбираться буду.

Замечу, что кроме API токенов и транспортных токенов, в проекте есть еще какие-то токены развертывания, но перечня «есть три типа токенов» в руководстве нет. Или где-то дальше, как транспортные токены.

Впрочем, не важно.
сообщение про токен читаемое, в моем случае:

Скопируйте токен. Он показан один раз и при перезагрузке страницы его получить иными способами не получится: af71db42-9683-40b4-b615-d31c9e5f7a16

Что с ними делать?

Для того, чтобы создать REST-API запрос, необходимо обратиться на определенный адрес (endpoint), который должен иметь следующее начало:

api.gitflic.ru для работы с API на gitflic.ru
localhost:8080/rest-api для работы с API в self-hosted сборках

Домен и порт при работе с self-hosted решением могут отличаться.

Для взаимодействия с публичным API GitFlic необходимо указать полученный access token в заголовке запроса в следующей форме:
Authorization: token <accessToken>

Что мешало написать пример для curl или хоть чего-то?

Пример с настройкой header для любителей Windows:

$headers = @{
'Content-Type' = 'application/json'
'Authorization' = 'Bearer your_access_token'
'X-Custom-Header' = 'MyCustomValue'
}
Invoke-WebRequest -Uri 'https://api.example.com/data' -Method 'GET' -Headers $headers

Примеры для моего случая, правильные и неправильные

$headers01 = @{'Authorization: token' = 'af71db42-9683-40b4-b615-d31c9e5f7a16'}
$headers02 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a1'} # однозначно ошибочный токен
$headers03 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a16'}

Делаем пример 01:
Invoke-WebRequest -Uri 'http://192.168.21.61:8080/rest-api' -Method 'GET' -Headers $headers01 –Verbose
Получим ошибку:
Specified value has invalid HTTP Header characters.
Parameter name: name

Делаем пример 02:
Invoke-WebRequest -Uri 'http://192.168.21.61:8080/rest-api' -Method 'GET' -Headers $headers02 –Verbose
Очевидно, тут в токене сознательно сделана ошибка, и результат:
The remote server returned an error: (403) Forbidden.

Делаем пример 03
Invoke-WebRequest -Uri 'http://192.168.21.61:8080/rest-api' -Method 'GET' -Headers $headers03 –Verbose
Результат:
VERBOSE: GET with 0-byte payload
Invoke-WebRequest : The remote server returned an error: (404) Not Found.

Ну … ладно. Оно, допустим, работает, но можно же было бы и вернуть «токен ОК, а дальше не знаем». Но ответ (404) Not Found - пугает.

Можно же было сделать пример для запроса «токен ок, запросите чего-то еще». Валидации токена не хватает. Или я не искал и не нашел.  А он – есть.

Ты проверку токена видишь? И я не вижу

Ты проверку токена видишь? И я не вижу

Методы для работы с данными пользователей
Поиск пользователей
GET admin/user?email={email}&username={userAlias}

Сделаю чуть меньше букв

$h04 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a16'}
$Ad02 = 'http://192.168.21.61:8080/rest-api/admin/user'
iwr -Uri $Ad02  -Method 'GET' -Headers $h04  -Verbose

Ответ:
VERBOSE: GET with 0-byte payload
VERBOSE: received -1-byte response of content type application/hal+json
StatusCode  : 200
StatusDescription :
Content  : {123, 34, 95, 101...}
RawContent  : HTTP/1.1 200

Если посмотреть чуть внимательнее, и сделать
$Ret01 = iwr -Uri $Ad02  -Method 'GET' -Headers $h04  -Verbose

И посмотреть $Ret01.RawContent, то мы увидим

{"_embedded":{"restUserAdminModelList":[{"id":"()","username":"adminuser","email":"adminuser@admin.local","name":"Admin user","surname": null,"fullName":"Admin user","avatar":"http://localhost:8080/static/image/avatar.jpg","cover":"http://localhost:8080/static/image/user-cover.png","confirmed":true}]},"page":{"size":10,"totalElements":1,"totalPages":1,"number":0}}

Стало быть, работает.

Получение настроек сервиса
GET /admin/settings
Запрос возвращает объект со всеми настройками сервиса.

Делаем:


$h04 = @{'Authorization' = 'token af71db42-9683-40b4-b615-d31c9e5f7a16'}
$Ad03 = 'http://192.168.21.61:8080/rest-api/admin/settings'
$Ret03 = iwr -Uri $Ad03  -Method 'GET' -Headers $h04  -Verbose
$Ret03.RawContent

Ответ содержит вполне понятный строчный объект, типа
{"disableLdapAuth":false,"disableSamlAuth":false,"disableOidcAuth":false, и так далее}

Уже неплохо. Наверное, его можно даже распарсить в какой-то объект, но это не является темой для статьи

Через curl тоже работает:
curl.exe --verbose --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $Ad03
Ключ --verbose, конечно, мне был нужен только для отладки, и в таком виде только для читаемости
Так что в windows можно делать
$Ret032 = curl.exe --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $Ad03


В Linux все как-то не так.

head1='Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16
ad03='http://192.168.21.61:8080/rest-api/admin/settings'
echo $head1
echo $ad03
curl --header $head1 $ad03


Вот так мы не работает, нам видите ли токен не нравится. "status":403 и до свиданья
Зато вот так

curl --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $ad03


все работает. Причем кавычки я, конечно, проверил и одинарные и двойные, все равно что-то не идет токен через переменные.

Методы получения проектов
Получение списка публичных проектов
GET /project?q={title}

Делаем:

$Ad04 = 'http://192.168.21.61:8080/rest-api/project'
$Ret04 = iwr -Uri $Ad04 -Method 'GET' -Headers $h04 –Verbose
$Ret04.RawContent

Ответ несколько непредсказуем. Заголовок – есть, ответ StatusCode: 200 есть, а внутри – ничего нет. Ни массива, ничего. Потому что публичных проектов у меня нет. Хотя бы вернули 200, а не (404) Not Found.

Получение проекта по псевдониму
GET /project/{ownerAlias}/{projectAlias}
Запрос возвращает проект с указанным псевдонимом

Делаем:

$Ad05 = 'http://192.168.21.61:8080/rest-api/project/adminuser/mynewproject01/'
$Ret05 = iwr -Uri $Ad05 -Method 'GET' -Headers $h04 –Verbose
$Ret05.RawContent

Работает. Возвращает
{"id":"(какой-то)","title":"MyNewproject01","description":"","alias":"mynewproject01"," итд}

Метод для получения содержимого файла
GET /project/{ownerAlias}/{projectAlias}/blob?commitHash={commitHash}&file={fileName}
Запрос возвращает содержимое файла, который был изменен в указанном коммите, строкой. Если размер файла больше, чем 15МБ, или же он бинарный/картинка необходимо использовать следующий метод
commitHash. Обязательный параметр. Хэш коммита, который хранит необходимое состояние репозитория

И как это понимать? Какой еще хеш коммита? Зачем ?
Сравните для Gitlab  :

curl --header "PRIVATE-TOKEN: glpat-norDQhvwoTxyAtM9ANhV" http://192.168.1111.2222/api/v4/projects/2/repository/files/first.sh/raw?ref=main -o ot08.txt

И вот это. Какой еще коммит? Если мне надо не коммит, а всегда latest, то что?

Но, метод работает. Одна проблема, где взять хеш коммита. И вторая, как указать ветку, видимо по хешу. Очень странно.
С хешем просто. Его можно получить двумя способами.
Первый способ, простой. Нужно зайти в историю коммитов файла в GUI и справа будет 7 значный (почему 7 ?) номер коммита

Второй способ, чуть сложнее. Нужно ткнуть на RAW, откроется длинная ссылка вида
http://192.168.21.61:8080/project/adminuser/mynewproject01/blob/raw?file=myfile01&commit=9e12345(длинный хвост)
Первые 7 цифр в ID коммита – хеш. Остальное – даже не представляю, UUID какой-то.

Код

$Commi2 = '9e12345'
$Long4S08 = http://192.168.21.61:8080/rest-api/project/adminuser/mynewproject01/
$Ad08 = $Long4S08 + "blob?commitHash=" + $Commi2 + "&file=myfile01"
$Ret08 = iwr -Uri $Ad08 -Method 'GET' -Headers $h04 –Verbose
$Ret08.Content

И теперь то же самое для curl

curl.exe --verbose --header "Authorization:token af71db42-9683-40b4-b615-d31c9e5f7a16" $Ad08


--verbose, конечно, мне был нужен только для отладки, и в таком виде только для читаемости

Метод для получения списка файлов
GET /project/{ownerAlias}/{projectAlias}/blob/recursive?commitHash={commitHash}&directory={directory}&depth={depth}

Запрос возвращает список файлов с информацией о них, начиная с определенной папки и до определенной глубины. Папки не возвращаются.

Опять commitHash. Опять «Обязательный параметр. Хэш коммита, который хранит необходимое состояние репозитория».

Заключение

Приложение работает, API работает.
Документация вызывает ряд вопросов, но их уже без меня пусть бывшие коллеги решают.
Получение файла и чего угодно вообще через хеш коммита, а не последней (текущей) версии файла выглядит крайне странно. Как и часть инструкции, где этот хеш коммита упомянут, а где его брать – нет.
Не очевидно оформляется токен, где не совсем понятно, как сделать read_repository_only
Как это будет работать с докером, ансиблом, и так далее – не проверял, и не хочу. Наверное, как-то работает.

PS.
Пока писал статью: оказалось что дело было не в бобине, и коллеги и сами справились. Просто у них опять кое-кто накрутил с сертификатами, проверками, и прочей безопасностью, и не сознавался.
Пока писал статью: программа набрала 10000000 очков в рейтинге - GitFlic признана лидером среди российских DevOps-платформ по версии CNews.

Литература

Автоматизация процесса разработки с помощью сервиса GitFlic
GitLab Community Edition

Показать полностью 6
7

Вот и свежее обновление - Windows 11 KB5068861 & KB5068865 cumulative updates

Для лиги лени: последнее обновление содержит патч от активно эксплуатируемой уязвимости

Если кто-то опять все пропустил, то вышли:
2025-11 Security Only Quality Update for Windows Server 2008 for x64-based Systems (KB5068909)
2025-11 Security Monthly Quality Rollup for Windows Server 2008 R2 for x64-based Systems (KB5068904)
2025-11 Security Monthly Quality Rollup for Windows Server 2012 for x64-based Systems (KB5068907)
2025-11 Security Monthly Quality Rollup for Windows Server 2012 R2 for x64-based Systems (KB5068905)
2025-11 Cumulative Update for Windows Server 2016 for x64-based Systems (KB5068864)
2025-11 Cumulative Update for Windows Server 2019 for x64-based Systems (KB5068791)
2025-11 Cumulative Update for Microsoft server operating system version 21H2 for x64-based Systems (KB5068787) (это вроде MS server 2022)
2025-11 Cumulative Update for Microsoft server operating system version 23H2 for x64-based Systems (KB5068779)
2025-11 Cumulative Update for Microsoft server operating system version 24H2 for x64-based Systems (KB5068861) (26100.7171)

Да, даже для 2008 выходят обновления.

Учитывая, что MS реализовала Windows 11 25h2 и Windows 11 26H1, то путаница «что куда» будет продолжаться.

Мой тестовый Windows server 2025 24 h2 до обновлений был 10.0.26100.6584 (с патчем KB5065426).
Обновление (для 2025 сервера) - windows11.0-kb5068861-x64_acc4fe9c928835c0d44cdc0419d1867dbd2b62b2.msu , размером 3568349734,
MD5  AEB8B0FB094F2452084C5E32D77C3047,
SHA256 C2E317DB8A422A52C966B685B3B33FCFAF11867B6913EBB8A757C817644690EB, ставится, как обычно, 100 лет.

После обновления KB5068861:
Для 2025 сервера Microsoft Windows [Version 10.0.26100.7171]
Для windows 11 25h2 Microsoft Windows [Version 10.0.26200.7171]

Согласно статье на bleepingcomputer, обновлений более чем достаточно, но главное, что к одному из исправленных багов есть эксплойт, и баг  на 9.8 из 10

Microsoft lists one bug under active attack, but none are publicly known at the time of release. Let’s take a closer look at some of the more interesting updates for this month, starting with the bug under active attack:
-  CVE-2025-62215 - Windows Kernel Elevation of Privilege Vulnerability
This is the bug currently under exploit
The November 2025 Security Update Review

Заключение

Кто не обновился – сам виноват.

PS. Наверное, опять AD 2025 сломали. Каждый раз ломают.

Показать полностью
14

Exchange 2019 все. Ушла эпоха

14 октября 2025 года закончилась поддержка Exchange Server 2019  On-prem (то есть, наземной и с постоянными ключами).

Последнее обновление, переходное к Exchange Server SE (наземный, но по подписке, то есть будьте добры обновлять ключи) - Exchange Server 2019 CU15 Oct25SU, 15.2.2562.29.

Фикс CU15, как обычно, был с проблемами – тут и штатно описанное переписывание веб конфигов, и ранее известное поведение


All Exchange services were disabled after patch, had to re-enable with script. Not the first time tho.

Fix failed Exchange Server updates
Well-Known Object Error Occurs

ТЕПЕРЬ ТОЧНО ВСЕ.

На что переходить ? Не знаю.
Outlook online работает крайне нестабильно, то одно положат, то другое.
Для малых организаций, человек на 10, есть iRedMail.

Главная и основная проблема «аналогов», это не электронная почта, а система работы с календарем, общими ящиками и делегированием и того, и другого.

Показать полностью
9

Microsoft AD, ADFS, Azure Entra, LDAP, Samba, SMB, x500, Kerberos, Keycloak, и другие страшные слова. Часть 2

Для лиги лени: что-то занудное, и с ошибками

Security Support Provider Interface (SSPI), Service Principal Name (SPN), и вот это все (нет).

Шагая от звезды к звезде, Лек подошел к Ответчику, положил его на ладонь и поднес к глазам.
- Значит, ты Ответчик? - проговорил он.
- Да, - отозвался Ответчик.
- Тогда скажи мне, - попросил Лек, устраиваясь поудобнее в промежутке между звездами. - Скажи мне, что я есть?
- Частность, - сказал Ответчик. - Проявление.
- Брось, - обиженно проворчал Лек. - Мог бы ответить и получше... Теперь слушай. Задача мне подобных - собирать багрянец и сгребать его в кучу. Каково истинное значение этого?
- Вопрос бессмысленный, - сообщил Ответчик. Он знал, что такое багрянец и для чего предназначена куча. Но объяснение таилось в большом объяснении. Лек не сумел правильно поставить вопрос.

Lek came to Answerer, striding swiftly from star to star. He lifted Answerer in his hand and looked at him.
“So you are Answerer,” he said.
“Yes,” Answerer said.
“Then tell me,” Lek said, settling himself comfortably in a gap between the stars, “Tell me what I am.”
“A partiality,” Answerer said. “An indication.”
“Come now,” Lek muttered, his pride hurt. “You can do better than that. Now then. The purpose of my kind is to gather purple, and to build a mound of it. Can you tell me the real meaning of this?”
“Your question is without meaning,” Answerer said. He knew what purple actually was, and what the mound was for. But the explanation was concealed in a greater explanation. Without this, Lek’s question was inexplicable, and Lek had failed to ask the real question.

В первой части

В первой части я остановился на временах Windows NT Directory Services (NTDS), от которого остались протоколы семейства LanManager - NTLMv1 / NTLMv2, и начале работы NTDS с Lightweight Directory Access Protocol (LDAP), вместе с NetWare Directory Services

Configure NetWare
This configuration lets the Policy Server log into the Novell eDirectory, view the contents of the directory, and retrieve directory attributes. Some advanced features can possibly require you to configure the Novell eDirectory to allow the Policy Server write-access

If LDAP is part of your Novell eDirectory installation, name a server in Novell eDirectory "LDAP Server",and an LDAP group named "LDAP Group." LDAP Server is a member of the LDAP Group.
Configure a Novell eDirectory LDAP Directory Connection

Как очевидно и общеизвестно, с протоколом (или, через протокол) LDAP в конце 90х работали все сервисы каталогов - Novell eDirectory, Banyan VINES, NTDS. Но, в феврале 2000 выходит Windows 2000, которая, за счет сочетания удобства (для крупных организаций. Для небольших все эти леса, деревья и кросс-доменное доверие не очень нужно), рекламы, и – для Banyan OS 0 - работы с драйверами, начала захватывать корпоративный рынок. В октябре 1999 Banyan Worldwide стала ePresence, и в 2003 ее история закончилась.
Corvus Systems, LANtastic – про этих сейчас никто и не вспомнит.

В 1989 Novell NetWare занимала порядка 50% рынка сетевых операционных систем (NOS). В 1993 году доля Novell NetWare выросла до 60-70% .

At its high point around 1993, NetWare had a roughly two-thirds share of the market for network operating systems;[35][34] one analysis put the figure at 63 percent.[46] There were over half a million NetWare-based networks installed worldwide[57] and some 55 million NetWare users on those networks.

Но, в 1993-1994 годах Novell поставила своих покупателей перед сложным выбором: или вы берете и переезжает (сложно и задорого) на NetWare 4, или как хотите. В таких условиях часть покупателей выбрала Windows NT.
К марту 1996 года стоимость акций Novell упала с 40$ до, сначала 33, затем до 12 $. Доля рынка упала до 26 %, в то же время доля Windows NT выросла до 36%.
К 2000 от Novell стали уходить остатки крупных заказчиков, и на этом основная часть истории «той» Novell и «той» NetWare закончилась, и началась и история с Suse.

Вспоминаем что такое AAA: Authentication, authorization, and accounting

Authentication: выяснение и подтверждение, кто ты такой,
Authorization: выдача тебе прав, или роли с правами,
Accounting: учет того, что ты делаешь

Одна из проблем «ранних» компьютерных сетей, да, впрочем, и современных (с оговорками), это использование «общей среды передачи данных» - CSMA/CD (Carrier-Sense Multiple Access with Collision Detection). Соответственно, все компьютеры сети «тогда» видели все сетевые пакеты, и любой обмен данными в открытом виде мог быть и бывал перехвачен.
В том числе поэтому в Windows был использован сначала протокол NT (New Technology) LAN Manager (NTLM), а затем и протокол Kerberos.
Kerberos – это не разработка Microsoft, это разработка Massachusetts Institute of Technology из 1989 года. Но, Microsoft его использует, как и все остальные, так что говорить «вот в Microsoft LDAP \ Kerberos \ DES \ AES» - для меня звучит как «Samsung и Toshiba работают от сети 220 вольт, а не от сети 128 вольт».

Дальше начинается идеологическая и иерархическая путаница, кто что делает, особенно если мы начинаем говорить про работу Microsoft Active Directory.

В теории, на этапе Authentication ты должен по протоколу Kerberos (или какому-то другому) показать локальному сервису свой пароль, локальный сервис преобразует пароль в ключ, получает сеансовый тикет и дальше случается магия. Практически ситуация чуть сложнее и описана в статье MS Ticket-Granting Tickets.

После того, как у тебя появился мультипаспорт TGT, ты можешь в составе Kerberos пакета получить свой список SID от групп, ограниченный только Kerberos SSPI context token buffer size, и уже показывать TGT там, где тебе нужен доступ.

Надо отдельно заметить, что не Kerberos единым живет AD – в составе Windows Server  есть отдельный сервис Active Directory Federation Services (AD FS) , работающий с OpenID Connect/OAuth.

MS LDAP, аутентификация и авторизация.

Документация MS написано настолько криво, что может создаться впечатление, что внутри самого MS LDAP есть зачатки аутентификации, оно же simple bind. При этом вопрос «где тут Kerberos, а где LDAP» раскрыт еще хуже.

Windows Server Active Directory (AD) uses the Lightweight Directory Access Protocol (LDAP) to communicate between the directory service, clients, and applications. LDAP is an open, industry-standard protocol used for accessing directory services on Internet Protocol (IP) networks.
Microsoft Delays LDAP Signing and Channel Binding Changes in Active Directory

You can significantly improve the security of a directory server by configuring the server to reject Simple Authentication and Security Layer (SASL) LDAP binds that do not request signing (integrity verification), or to reject LDAP simple binds that are performed on a clear text (non-SSL/TLS-encrypted) connection. SASL binds may include protocols such as Negotiate, Kerberos, NTLM, and Digest.
How to enable LDAP signing in Windows Server


Как ни странно, и может даже и неправильно, вопрос «как вообще это работает» раскрыт в инструкции к Ansible - microsoft.ad.ldap inventory – Inventory plugin for Active Directory , и частично в документации к LDAP3 – раздел SSL and TLS, из которой можно перейти к статье MS SASL: The Simple Authentication and Security Layer - 3.1.1.3.4.5 LDAP SASL Mechanisms

После этого остается только прочитать про keytab – ktpass, и остальные ссылки ниже

MS LDAP поддерживает следующие методы аутентификации (authentication):
Anonymous Bind
LDAPS/StartTLS – если это было настроено.
simple – логин и пароль шлются чистым текстом
Kerberos – авторизация идет через Kerberos
ntlm – если вы почему-то его до сих пор не выключили для локальных машин, потому что выключить его вы до сих пор не можете. Как не можете обойти и ограничения AD16 - NetBIOS name, максимальная длина 15 символов.

Ссылки ниже

Kerberos KDC с использованием OpenLDAP в качестве бэкэнда и аутентификацией SASL GSSAPI
Kerberos vs. LDAP: What’s the Difference?
Kerberos vs. LDAP: Choosing the Right Enterprise Protocol
Difference between LDAP and Kerberos
LDAP Authentication From the Command Line in Linux
Linux LDAP vs. Kerberos Authentication with Microsoft ActiveDirectory
Difference between NTLM, Kerberos & LDAP authentication

Debian LDAP + Kerberos
The LDAP Bind Operation
Simple Authentication (in LDAP) is an LDAP Authentication Method

Литература

LDAP and Kerberos Server may not respond to UDP requests or reset TCP sessions immediately after creation
This article provides a solution to an issue where Transmission Control Protocol (TCP) sessions created to the server ports 88, 464, 389 and 3268 are reset. Sessions using Secure Sockets Layer (SSL) or Transport Layer Security (TLS) on ports 636 and 3269 are also affected.
You may also notice requests on User Datagram Protocol (UDP) ports 88 and 464 don't get a response.

Не самая плохая статья на неофициальном сайте минцифры: Kerberos простыми словами. Ссылки не будет.
Windows App Development Context Requirements

MS LDAP and ADSI
MS Ticket-Granting Tickets
MS AD FS OpenID Connect/OAuth concepts
MS Kerberos authentication overview in Windows Server
MS Anonymous LDAP operations to Active Directory are disabled on domain controllers
Anonymous LDAP operations in Windows 2003 AD
MS ldap_simple_bind function (winldap.h)
MS 5.1.1.1.1 Simple Authentication (The support of simple bind in Active Directory)

Показать полностью
20

Российские ЦОД - отставание на поколение. Часть 2

Вдогон к статье с новостями из РФ (Российские ЦОД - отставание на поколение или куда ставить NVIDIA Grace Blackwell NVLink72), прислали статью с новостями из США.

Новости РФ:

РБК, за пейволлом: iKS-Consulting: в первом полугодии строительство дата-центров в России упало в три раза
Infox: Причины падения числа новых проектов ЦОД в России при росте спроса

В первом полугодии в российских дата-центрах было открыто 3,7 тысячи новых стоек (технических шкафов для установки IT-оборудования), что на три раза меньше по сравнению с аналогичным периодом прошлого года, сообщает исследовательская компания iKS-Consulting. В сравнении с 2024 годом темпы ввода новых мощностей резко падают: тогда они составили 15%, а в 2025 году, согласно прогнозам iKS-Consulting, ожидаются на уровне 5,5%.

В целом, до конца этого года специалисты ожидают появления еще 4,5 тысячи стойко-мест. Снижение темпов, по данным iKS-Consulting, связано с перенесением сроков ввода в эксплуатацию ряда коммерческих дата-центров на 2026 и 2027 годы.

Российские стойки регулярно считают как «5 киловатт на стойку». Это маловато, но сойдет для начала.
Получается ввод примерно 8 тысяч стоек в год и примерно 5 (киловатт на стойку) *8.000 (стоек) = 40.000 киловатт. Можно округлить как «от 50.000 до 100.000 киловатт вводимой мощности».
50-100 мегаватт.

Новости США:

Tomshardware:
Microsoft заявил «самый мощный в мире» центр обработки данных искусственного интеллекта — площадка площадью 315 акров для размещения «сотней тысяч» графических процессоров NVIDIA и достаточного количества оптоволокна, чтобы опоясать Землю 4,5 раза
Оригиналы
Tomshardware: Microsoft announces 'world's most powerful' AI data center — 315-acre site to house 'hundreds of thousands' of Nvidia GPUs and enough fiber to circle the Earth 4.5 times
Microsoft: Inside the world’s most powerful AI datacenter

Ставить туда будут те самые «новые nVidia» -

Azure was the first cloud provider to bring online the NVIDIA GB200 server, rack and full datacenter clusters. Each rack packs 72 NVIDIA Blackwell GPUs, tied together in a single NVLink domain that delivers 1.8 terabytes of GPU-to-GPU bandwidth and gives every GPU access to 14 terabytes of pooled memory.

То есть, Microsoft вводит что-то сравнимое с Colossus от Илона Маска – 150 мегаватт на один датацентр:


The first phase of Elon Musk’s xAI Memphis Supercluster has just reached full operational capacity as the on-site substation goes online and connects to the main power grid. According to the Greater Memphis Chamber, the site will receive 150 MW from Memphis Light, Gas, and Water (MLGW) and the Tennessee Valley Authority (TVA). Aside from that, the xAI Colossus supercomputer also boasts another 150 MW of Megapack Batteries that will serve as backup, allowing it to stay powered in case of outages or during times of increased demand.
Musk’s Colossus is fully operational with 200,000 GPUs backed by Tesla batteries — Phase 2 to consume 300 MW, enough to power 300,000 homes

Вышла и статья с прогнозами по энергетике США:
September 17, 2025 Powering the US Data Center Boom: Why Forecasting Can Be So Tricky

Два американских датацентра от лидеров рынка по 150 мегаватт каждый с одной стороны
Все вводимые мощности датацентров в РФ за год – 50-100 мегаватт.

Мощностей по электричеству в РФ хватает, и даже турбинами своего производства, и даже под Москвой:

03.03.2025 На строительную площадку Каширской ГРЭС (реализация проекта модернизации электростанции ведётся под управлением ООО «Интер РАО – Инжиниринг») доставлена первая произведённая в России инновационная газовая турбина большой мощности ГТЭ-170.1. Оборудование предназначено для реализации проекта строительства двух дубль-блоков ПГУ суммарной мощностью 900 МВт.
Первая произведённая в России инновационная газовая турбина доставлена на стройплощадку ПГУ Каширской ГРЭС

Выводы ?
Выводов не будет. В Китае просто купили, что хотели, через Сингапур:

Через Сингапур в Китай отгрузили новых процессоров Nvidia на 2 миллиарда долларов

Оригинал: Singaporean company with clear Chinese connections spent roughly $2 billion on Nvidia AI processors — and allegedly made them available for Chinese companies or re-exported them to China, according to a recent New York Times investigation. Companies from Singapore have long been suspected of procuring restricted AI accelerators from Nvidia to ship to China, bypassing U.S. sanctions. Although a few smuggling networks have been found, establishing a direct link has been tenuous until now.
Singaporean company with clear Chinese connections spent roughly $2 billion on Nvidia AI processors — and allegedly made them available for Chinese companies or re-exported them to China

Показать полностью
19

Microsoft AD, ADFS, Azure Entra, LDAP, Samba, SMB, x500, Kerberos, Keycloak, и другие страшные слова. Часть 1. Историческая

Для лиги лени: что-то старое

Ответчик был построен, чтобы действовать столько, сколько необходимо, - что очень большой срок для одних и совсем ерунда для других. Но для Ответчика этого было вполне достаточно.

Answerer was built to last as long as was necessary—which was quite long, as some races judge time, and not long at all, according to others. But to Answerer, it was just long enough.

Пришли ко мне коллеги ,со словами: вот ты Григорий, такой большой(Да!!!) ―...такой толстый... (―Да!!!) Уместился в этом крохотном кувшине расскажи нам на ночь сказку, почему у нас чего-то там не работает в k8s. Ответ оказался очевиден - потому что вы бы сначала думали, что делаете, а не читали какие-то помойки от минцифры с маркетингово – рекламным кг\ам, по исторической памяти считающийся «сайтом про ИТ». Ну да ладно, бывает.

Однако в процессе обсуждения оказалось, что я чего-то уже стал подзабывать, откуда есть пошла Microsoft Entra ID (formerly Azure AD) и как это работало «тогда».  

A long time ago или Исторический очерк и немного словаря

Если бы вы вдруг оказались .. в РФ 30 лет назад, в 1995 году, и пошли в ИТ, то обнаружили бы .. разное. В домашнем сегменте медленно и долго умирает Z80 и Amiga / Commodore.
Уже вышел первый intel Pentium 1993, и только что вышел (в ноябре 1995) Pentium Pro.
На рынке домашнего программного обеспечения существует, в основном, MS Dos и варианты на тему (например IBM PC DOS). Windows 3.1 и 3.11 существуют, но особой популярностью не пользуются. Потому что на 286\386 тормозит и не нужно.
Вышедшая 24 августа 1995 Windows 95 еще не шла ни в какие массы, потому что поставлялась или на очень не часто встречаемых тогда «дома» cd приводах, или на 13 дискетах. Так что Dos, или Windows 3.1 - 3.11 . Если вам было совсем нечего делать, существовала OS\2 (какой-то редакции) и Windows NT 3.51.
В среднем бизнес сегменте живет Novell и ее NetWare 4, вместе с NetWare Directory Services.
В тогдашнем корпоративном сегменте живет и не кашляет Unix в разных вариантах.  Если вам нечем заняться, то уже вышли BSD и FreeBSD, и их смотрят, и даже применяют. 
Linux? Он, как бы, есть, уже даже есть Debian и SUSE. Но он находится в таком, странноватом положении. Существовать он существует, как операционная система, как тот же MINIX, но на этом и все. Проблема не в том, что он есть, или его нет, а в том, что под него еще нет готового работающего программного обеспечения. Надо или все пересобирать, или искать собранное и чтобы работало. Драйвера под что-то в нем есть, но скорее или нет, или кривые.
Wine теоретически уже есть, а практически заработает только в 1996 (January 1996: Word and Excel reported to run).
Есть еще NeXTSTEP, Mac OS 7, и еще масса всякого.
Но где искать "всякое"?

Интернет .. интернет тогда уже, конечно, есть. Но в России массово никакого интернета, конечно, нет. Да и в мире его немного. Почему? Потому что:
В 1995 году «минимальный современный» компьютер, то есть Intel или AMD 486, с монитором, диском (мегабайт на 500), стоит примерно 1000$.

За 1995 год курс доллара к российскому рублю вырос на 1 017,00 руб. за $1. Максимальная стоимость доллара за год была зафиксирована в начале мая и равнялась 5 130,00 руб., а минимальная — в начале января и составляла 3 623,00 руб.

То есть 486й компьютер стоит 3-5 миллионов рублей. 
Средняя заработная плата по РФ в январе 1995 – 302.642, в ноябре 1995 – 615.656 рублей.
То есть x86 стоит 10-20 месячных зарплат. Много ли людей могли себе позволить ПЭВМ? Вопрос риторический.
Институт «Открытое общество» Сороса, которого сейчас обвиняют во всех грехах, в 1995-1996 годах только начал вкладывать в развитие 33 интернет-центров по всей стране, в учебные материалы, и так далее. Но в 1995 году ни про какой массовый интернет в России еще речь не идет. В 1996 году уже идет. Нет сколько-то массового интернета, значит документацию и учебники еще придется поискать. Для Москвы, конечно, все гораздо проще - есть горбушка, есть фидо. За пределами Москвы интернет есть у РЖД, и очень, очень местами.
До WinNuke (1997) и  Ultima Online (1997) еще два года, до Win95.CIH (1998) и  Lineage (1998) – три.

В малых и средних сетях, они уже есть, царит NetWare Directory Services.
NTDS (Windows NT Directory Services) уже существует, и даже где-то используется, но NetWare настолько вне конкуренции, что даже говорить особо не о чем.

И где-то в эти годы возникает LDAP.

Что такое LDAP ?
Придется опять пойти в историю. В 1988 году в Telecommunication Standardization Sector of the International Telecommunication Union (ITU-T) , он же Сектор стандартизации электросвязи Международного союза электросвязи, МСЭ-Т,  была принята группа стандартов X.500.
В группу стандартов X.500 были включены протоколы – X.501, X.509 и так далее.
Что они пописывали и как, желающие могут почитать самостоятельно.
В марте 1995 выходит RFC 1777 Lightweight Directory Access Protocol.

The protocol described in this document is designed to provide access to the X.500 Directory while not incurring the resource requirements of the Directory Access Protocol (DAP). This protocol is specifically targeted at simple management applications and browser applications that provide simple read/write interactive access to the X.500 Directory, and is intended to be a complement to the DAP itself.

Попутно желающие могут изучить Howes, T., Kille, S., Yeong, W., and C. Robbins, "Lightweight Directory Access Protocol", RFC 1488, University of Michigan, ISODE Consortium, Performance Systems International, NeXor Ltd.,  July 1993 -  The X.500 String Representation of Standard Attribute Syntaxes

Как легко догадаться, что, поскольку X.500 (семейство) и LDAP, это протоколы, описанные в соответствующих стандартах, то применение этих протоколов в каких-то коммерческих продуктах  вопрос только времени. Под какой операционной системой будут работать эти продукты - не так важно.

27.02.1997 Для администраторов, нуждающихся в возможности централизованного управления несколькими платформами служб каталогов с помощью единого интерфейса, Lightweight Directory Access Protocol (LDAP) - весьма многообещающая технология. Можно считать, что Novell LDAP Services for NDS 1.0, первый продукт, интегрирующий протокол со службами каталогов, - это весьма неплохое начало, хотя для реализации его полного потенциала необходим LDAP 3.0.
Computerworld Россия 1997 № 08 "Изящное украшение" для Novell NetWare NDS

Можно ли было по протоколу LDAP работать с какими-то еще сервисами, кроме NDS \ Novell eDirectory?  Наверное, можно.
Были ли «тогда» какие-то реализации служб каталогов под Unix ? Википедия говорит про Banyan VINES, значит были.
Было ли что-то еще ? Был Windows NT Directory Services (NTDS), от него остались протоколы семейства LanManager - NTLMv1 / NTLMv2. Времена NetBEUI, IPX, вот это все. Battle.net будет запущен только 31 декабря 1996

19.02.1998 Технологические новшества Banyan Vines 8.0 вряд ли способны удивить пользователей, но данная версия очень важна для компании Banyan Systems, поскольку демонстрирует всему миру, что Banyan не собирается отказываться от Vines.
Средства StreetTalk Directory Assistance предоставляют возможность версии Vines 8.0, вышедшей в конце декабря, взаимодействовать с протоколом Lightweight Directory Access Protocol (LDAP).
"Протокол LDAP поддерживается только технологией StreetTalk для Windows NT, однако сетевые службы позволяют извлекать информацию также из сетей Vines или других систем Windows NT", - пояснил менеджер Banyan по корпоративным сетевым продуктам Шон Хейес.
Computerworld Россия 1998 № 07 Banyan остается верна Vines

В следующей части
NTLMv1 и Kerberos,  SMB и Samba – протоколы и сервисы.
389 Directory Server (он же Fedora Directory Server, он же Redhat Directory Server).

Stay tuned!

Литература
Windows™ Programs on Linux (WINE and its History)
«Computerworld Россия» выпуск №12, 1996 содержание
RFC 1777 Lightweight Directory Access Protocol.
starcraft and networking in the 90s (part 1)
Computerworld Россия 1997 № 08 "Изящное украшение" для Novell NetWare NDS
Computerworld Россия 1998 № 07 Banyan остается верна Vines

Показать полностью
11

Неделю назад вышла Windows 11 25h2

Для лиги лени: пока ничего нового

Как многие в курсе, вышла Windows 11 25h2
Если у кого-то система не обновилась, то ничего страшного – в настоящее время у 24h2 и 25h2 одна кодовая база. Как нам пишут в статье 10 interesting facts about Windows 11 version 25H2, пока ничего нового и стоящего внимания не появилось.

Если кто-то хочет обновиться с 24h2, то можно вручную скачать x64 - Enablement Package Update:

Размер 166 KB (170,885 bytes)
MD5  CB181B744C3DD608B76A2E13D08CF773 
SHA256  92EDDA7EEAA19B60D15CCDF777556BF0662EE9FEA1DCC9AEC281FCF12068044C
SHA384: 4e65535f2a667702b6a7cad036679e3c4715aea4c2f252f4200c1d099613018db2750c80f2fdeec04af85bf9796489bd
SHA512: 91c5c513966131c12b5abc372c4311f4dcbc64606ac0011e10c38add69e721cace5c5935666fa498a08878302d1a0237fc21d4693b70c4ee2449f3f260dc25f2

SHA3-256: 59932f8f2dc2100cdd2198f914fc9568a23ff2d1a0771373ad3820585ec642a4
(этого алгоритма нет в get-filehash)


Для тех, кто сидит на старых версиях, напоминаю, что через полтора месяца заканчивается поддержка на Windows 11 Home and Pro Version 23H2

Windows 11 Home and Pro
Version Start Date  End Date
Version 24H2  Oct 1, 2024  Oct 13, 2026
Version 23H2  Oct 31, 2023  Nov 11, 2025
Version 22H2  Sep 20, 2022  Oct 8, 2024
Version 21H2  Oct 4, 2021  Oct 10, 2023

И тогда же, через полтора месяца, заканчивается поддержка на Windows 11 Enterprise and Education 22h2

Version 24H2  Oct 1, 2024  Oct 12, 2027
Version 23H2  Oct 31, 2023  Nov 10, 2026
Version 22H2  Sep 20, 2022  Oct 14, 2025
Version 21H2  Oct 4, 2021  Oct 8, 2024

Список взят на сайте Microsoft.
Статьи: Search Product and Services Lifecycle Information, Windows 11 Home and Pro, Windows 11 Enterprise and Education.

Показать полностью
12

VMware by Broadcom: Бегите, глупцы

На днях произошло два знаковых событий, и что интересно, в один день.

18.09.2025 У одного из очень, очень старых партнеров VMware (Nothing But Net) был отозван статус авторизованного партнёра. Причем не просто «заранее отозван», а конечные заказчики получили письмо, что партнерство прекращено.

Перевод: В электронном письме, подтвержденном CRN, говорится, что Broadcom «оптимизирует экосистему реселлеров VMware, сосредоточившись на партнерах, которые активно вовлечены, обладают техническими возможностями и нацелены на предоставление значимых результатов» для клиентов.
Оригинал: The email—which was verified by CRN—said that Broadcom was “optimizing the VMware reseller ecosystem to focus on partners who are actively engaged, technically capable, and committed to delivering meaningful outcomes” for customers.
Статья: Deauthorized Broadcom-VMware Partner Angered By ‘Misleading’ Email To Customer

И это кроме того, что для самого поставщика услуг стоимость выросла в три раза.

Перевод:
Кстати, компания Кокса также столкнулась с почти трёхкратным ростом цен VMware на серверы, которые она размещает в качестве провайдера услуг размещения оборудования для клиентов, с 14 500 до 43 000 долларов в год в соответствии с новой моделью подписки Broadcom-VMware с оплатой за ядро. «Broadcom-VMware не позволили нам использовать ту же стандартную версию», — сказал он. «Они вынудили нас перейти на версию VMware Cloud Foundation».
Оригинал: Cox’s company, by the way, has also been hit with a nearly 3X increase in VMware pricing on the servers it hosts as a colocation provider for customers from $14,500 annually to $43,000 annually based on the new Broadcom-VMware per-core subscription model. “Broadcom-VMware wouldn’t allow us to stay with the same standard version,” he said. “They were forcing us to go to the VMware Cloud Foundation version.”

И в то же время, буквально в тот же день (18.09.2025) на crn выходит огромное интервью от Brian Moats, senior vice president of global commercial sales and partners

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

Перевод: «Я обращаюсь к партнёрам: «Пожалуйста, поддержите нас. Спрос превышает наши возможности», — сказал Моутс, старший вице-президент по глобальным коммерческим продажам и партнёрству.

«Нам нужны партнёры, готовые поддержать нас.

Оригинал: My message to partners is, ‘Please lean in. The demand is greater than we can fulfill,’” said Moats, senior vice president of global commercial sales and partners.“We need those partners who are willing to lean in.

Перевод: Заключается ли стратегия VMware по выходу на рынок в том, чтобы партнеры по продажам брали на себя большую часть профессиональных услуг?

Это гораздо более сложный процесс и предварительный анализ, чем при продаже отдельных продуктов. Поэтому речь идет не только о конечном внедрении, но и о планировании и расчете экономической эффективности различных путей к конечной точке облачной операционной модели.

Поэтому наши партнеры по сервисам оказывают услуги не только после того, как клиент принимает решение о переходе на платформу.

Они за много месяцев до этого обсуждают с клиентом различные экономические аспекты и альтернативы различным технологическим, организационным и процессным изменениям, которые дадут ему определенный результат в будущем, скорее всего, в частном операционном облаке.

Оригинал: Is VMware’s go-to-market strategy to have channel partners take over the majority of professional services?

It’s much more of a journey and an analysis up front than it would have been when you’re selling point products. So it’s not just about the implementation that ultimately occurs, it’s a bit of planning and calculating the economics around different paths to the endpoint of the cloud operating model.

So our services partners aren’t just doing services after the customer commits to the platform.

They’re talking to the customer many months before about the different economics and alternatives to different tech and organizational and process change routes that give them some future outcome, most likely in a private operating cloud.

Статья: Broadcom Global Channel Chief On The Value Of Services: ‘The Light Bulb Has Clicked For Partners’

Что тут сказать? БЕГИТЕ ГЛУПЦЫ

@editors, тега Broadcom нет же ?

Показать полностью 1
Отличная работа, все прочитано!