Небольшая просба: по allow_id

Обсуждение программы редиректора
Ответить
vii-98
Сообщения: 4
Зарегистрирован: Пн сен 21, 2009 10:07

Небольшая просба: по allow_id

Сообщение vii-98 »

Не подскажете в каком месте прописано определение открытие файла для правил allow_id.
Я хочу в место этого поставить exec и читать stdin.
Хочу управлять секциями доступа посредством ldap (AD) через скрипты perl

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Re: Небольшая просба: по allow_id

Сообщение Slava »

vii-98 писал(а):Не подскажете в каком месте прописано определение открытие файла для правил allow_id.
Я хочу в место этого поставить exec и читать stdin.
Хочу управлять секциями доступа посредством ldap (AD) через скрипты perl

Код: Выделить всё

File: get_opt.c         Line 439

   // allow_id
    pairs=pcre_exec(pat[8],spat[8],tmp,strlen(tmp),0,PCRE_NOTEMPTY,vector,vecsize);
    if(pairs>=0)
     {
      rez=tmp+vector[2]; tmp[vector[3]]=0;

      if (!h_flag) //for global allow_id
        add_id(rez,&allow_id,&allow_id_count);
      else // for section allow_id
        add_id(rez,&redir[sections_count]->allow_id,&redir[sections_count]->allow_id_count);

       continue;
     }
но я бы рекомендовал вытаскивать данные из лдапа при помощи скрипта и класть в текстовые файлики, которые будет читать режик

vii-98
Сообщения: 4
Зарегистрирован: Пн сен 21, 2009 10:07

Сообщение vii-98 »

а вот и скриптик если кому будет полезен:

Код: Выделить всё

#!/usr/bin/perl

use strict;
use Net::LDAP;

#########################################
#Конфигурация
#Сервер ldap
my $LdapServer  = "xxx.xxx.xxx.xxx";
#Версия LDAP
my $LdapVersion = 3;
#Логин пользователя LDAP
my $LdapUser="CN=ldap,CN=User,DC=domain,DC=yur";
#Пароль пользователя LDAP
my $LdapPasswd="password_ldap_user";
#Откуда надо искать
my $LdapBase="DC=domain,DC=lan";
#Имя группы
my $group="name_group_allow";
#Добовляем имя домена что передается в режик с именем пользователя
#У меня добавлено "%5C" т.к. из сквида передается в место "\" -> "%5C"
my $Domain="DOMAIN%5C"; 

#########################################
#Ищем где находится группа
my $ldap = Net::LDAP->new ($LdapServer) or die "$@";
my $mesg = $ldap->bind ( "$LdapUser", password => "$LdapPasswd", version => 3 );
my $attrs = [ 'member' ];
$mesg = $ldap->search ( base => "$LdapBase", scope => "sub", filter => "(sAMAccountName=$group)",attrs => $attrs);
$mesg->code && die $mesg->error;
my $GroupDst = $mesg->entry(0)->dn;

#Ищем пользователей которые находятся в этой группе
$mesg = $ldap->search ( base => "$GroupDst", filter => "(objectclass=*)",attrs => $attrs);
$mesg->code && die $mesg->error;

#Извлекаем акаунтные имена
foreach my $entry ($mesg->entries()) {
    my @members = $entry->get_value('member');
    foreach my $member ( @members ) {
            my $UserName = $ldap->search ( base => "$member", filter => "(objectclass=*)", attrs => ['sAMAccountName']);
            print STDOUT "allow_id\t".$Domain.$UserName->entry(0)->get_value('sAMAccountName')."\n";
    }
}
Конечно этот скрипт не притендует на оптимальность.... т.к.програмирую рахз в год. :)

cooll
Сообщения: 10
Зарегистрирован: Пт окт 30, 2009 13:15

Сообщение cooll »

После, того как настроил этот скрипт, что надо еще прописать в rejik?

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Сообщение Slava »

cooll писал(а):После, того как настроил этот скрипт, что надо еще прописать в rejik?
Я бы заменил строку
print STDOUT "allow_id\t".$Domain.$UserName->entry(0)->get_value('sAMAccountName')."\n";

на

print STDOUT $Domain."разделитель".$UserName->entry(0)->get_value('sAMAccountName')."\n";

и прописал бы в режике ссылку на полученную, при помощи этого скрипта файл, в нужной секции.
Например:
allow_id f:/path/file
или
work_id f:/path/file

cooll
Сообщения: 10
Зарегистрирован: Пт окт 30, 2009 13:15

Сообщение cooll »

Спасибо. А не поделитесь скриптом для сравнения двух файлов. Есть file1 (создается скриптом) и file2 (для доступа в Rejik по пользователям). Если file1 отличается от file2, удалить file2 и на его месте создать новый file2 с содержимым file1.

Slava
Site Admin
Сообщения: 2251
Зарегистрирован: Пт апр 02, 2004 12:34
Контактная информация:

Сообщение Slava »

Код: Выделить всё

#!/bin/bash

if ! cmp file1 file2; then
echo not eq
mv file1 file2
fi
cooll писал(а):Спасибо. А не поделитесь скриптом для сравнения двух файлов. Есть file1 (создается скриптом) и file2 (для доступа в Rejik по пользователям). Если file1 отличается от file2, удалить file2 и на его месте создать новый file2 с содержимым file1.

Ответить