LINUX.ORG.RU
ФорумAdmin

Глобальный gitlab хук, который отклоняет коммиты с адресами электронной почты не из белого списка

 ,


0

1

Добрый вечер.

Пытаюсь настроить в Gitlab блокировку юзеров по email домену.

Имеется вот такой скрипт: https://github.com/github/platform-samples/blob/master/pre-receive-hooks/reject-external-email.sh

Я его положил в директорию /opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/

Начало скрипта у меня такое:

DOMAIN=[2.com]
COMPANY_NAME=[MyCompany]
CONTACT_EMAIL=help@company.com
SLACK=#help-git
HELP_URL=https://pages.github.company.com/org/repo

Делаю коммит:

git log
commit 700ad4a4d1f351dfdb994c8fef47561bf8144a8d (HEAD -> master)
Author: Anton Patsev <1@2.com>
Date:   Tue Nov 26 17:06:24 2019 +0600

    add space

При git push выходит reject:

remote: WARNING:
remote: WARNING: At least one commit on 'master' does not have an '[2.com]' email address.
remote: WARNING:         commit: 700ad4a4d1f351dfdb994c8fef47561bf8144a8d
remote: WARNING:   author email: 1@2.com
remote: WARNING:
remote: WARNING: See https://pages.github.company.com/org/repo for instructions.
remote: WARNING:
remote: WARNING: Contact help@company.com or #help-git on Slack for assistance!

Если опции сделать так:

DOMAIN=2.com

То коммит проходит.

Но как быть если нужно указать несколько доменов?

Если указать так:

DOMAIN=2.com,2.ru

то будет reject такой

remote: WARNING: At least one commit on 'master' does not have an '2.com,2.ru' email address.
remote: WARNING:         commit: 11a653f39c9237816ea2f45fbe390a23ae990edd
remote: WARNING:   author email: 1@2.ru


Последнее исправление: chemtech (всего исправлений: 1)

if ! [[ "$AUTHOR_EMAIL" =~ ^[A-Za-z0-9._-]+@"$DOMAIN"$ ]]

Ну так у тебя просто кастомный скрипт. Задавай массив значений и в условии делай проверку по элементам массива.

man bash

PPP328 ★★★★★
()

Вместо

 if ! [[ "$AUTHOR_EMAIL" =~ ^[A-Za-z0-9._-]+@"$DOMAIN"$ ]]

Можно сделать так:
case "${AUTHOR_EMAIL}" in
  *@white.list.1)
  ;;
  *@white.list.2)
  ;;
  *)
    ...
    help_message
    exit 1
  ;;
esac

joy4eg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.