Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37720167
en ru br
Репозитории ALT
S:0.6.7-alt1
5.1: 0.4-alt3
www.altlinux.org/Changes

Группа :: Система/Настройка/Прочее
Пакет: alterator-ldap-groups

 Главная   Изменения   Спек   Патчи   Исходники   Загрузить   Gear   Bugs and FR  Repocop 

alterator-ldap-groups-0.4/000075500000000000000000000000001127130000600155715ustar00rootroot00000000000000alterator-ldap-groups-0.4/Makefile000064400000000000000000000005271127130000600172350ustar00rootroot00000000000000NAME=ldap-groups

INSTALL=/usr/bin/install

all:
clean: clean-po
install: install-module install-data

include /usr/share/alterator/build/module.mak

install-data:
install -Dpm 644 group-init-list $(sysconfdir)/alterator/ldap-groups/group-init-list
install -Dpm 755 hooks/ldap-groups $(libexecdir)/alterator/hooks/firsttime.d/91-ldap-groups
alterator-ldap-groups-0.4/applications/000075500000000000000000000000001127130000600202575ustar00rootroot00000000000000alterator-ldap-groups-0.4/applications/ldap-groups.desktop000064400000000000000000000003531127130000600241100ustar00rootroot00000000000000[Desktop Entry]
Type=Application
Categories=X-Alterator-Users
Icon=users
Terminal=false
Name=Ldap group accounts
X-Alterator-URI=/ldap-groups
X-Alterator-Weight=30
X-Alterator-Help=ldap-groups
X-Alterator-UI=html
Name[ru]=п⌠я─я┐п©п©я▀
alterator-ldap-groups-0.4/backend3/000075500000000000000000000000001127130000600172435ustar00rootroot00000000000000alterator-ldap-groups-0.4/backend3/ldap-groups000075500000000000000000000127471127130000600214410ustar00rootroot00000000000000#!/bin/sh -f

alterator_api_version=1
cache_dir="/var/cache/alterator/ldap-groups"

. alterator-sh-functions
. alterator-openldap-functions

### cache

reset_cache()
{
rm -rf -- "$cache_dir"
mkdir -p -- "$cache_dir"
}

### member

member_list()
{
local group="$1";shift
local member_in_file="$cache_dir/member-in-$group"
local member_out_file="$cache_dir/member-out-$group"

ldap-getent group "$group" memberUid|
sed -e 's/,[[:blank:]]*/\n/g'>"$member_in_file"

ldap-getent passwd '*' uid|
while read user;do
fgrep -wqs "$user" "$member_in_file" || echo "$user"
done>"$member_out_file"
}

member_list_in()
{
local group="$1";shift
local member_in_file="$cache_dir/member-in-$group"
local member_out_file="$cache_dir/member-out-$group"

[ -f "$member_in_file" -a -f "$member_out_file" ] || member_list "$group"

cat "$member_in_file"
}

member_list_out()
{
local group="$1";shift
local member_in_file="$cache_dir/member-in-$group"
local member_out_file="$cache_dir/member-out-$group"

[ -f "$member_in_file" -a -f "$member_out_file" ] || member_list "$group"

cat "$member_out_file"
}

member_add()
{
local group="$1";shift
local user="$1";shift
local member_in_file="$cache_dir/member-in-$group"
local member_out_file="$cache_dir/member-out-$group"

[ -f "$member_in_file" -a -f "$member_out_file" ] || member_list "$group"

file_list_add "$member_in_file" "$user"
file_list_del "$member_out_file" "$user"
}

member_del()
{
local group="$1";shift
local user="$1";shift
local member_in_file="$cache_dir/member-in-$group"
local member_out_file="$cache_dir/member-out-$group"

[ -f "$member_in_file" -a -f "$member_out_file" ] || member_list "$group"

file_list_del "$member_in_file" "$user"
file_list_add "$member_out_file" "$user"
}

member_reset()
{
local group="$1";shift
local member_in_file="$cache_dir/member-in-$group"
local member_out_file="$cache_dir/member-out-$group"

rm -f -- "$member_in_file" "$member_out_file"
}

member_commit()
{
local group="$1";shift
local member_in_file="$cache_dir/member-in-$group"
local member_out_file="$cache_dir/member-out-$group"

[ -f "$member_in_file" -a -f "$member_out_file" ] || member_list "$group"

if [ -s "$member_in_file" ]; then
sed 's/.*/memberUid:&/' "$member_in_file"|ldap-groupmod replace "$group" > /dev/null
else
printf 'memberUid:\n'|ldap-groupmod replace "$group" > /dev/null
fi
member_reset "$group"
}

### e-mail

email_list()
{
local user="$1";shift
local email_file="$cache_dir/email-$user"

if [ -f "$email_file" ];then
cat "$email_file"
else
ldap-getent group "$user" mail|
sed -e 's/,[[:blank:]]*/\n/g'|
tee "$email_file"
fi
}

email_add()
{
local user="$1";shift
local email="$1";shift
local email_file="$cache_dir/email-$user"

[ -f "$email_file" ] || email_list >/dev/null
file_list_add "$email_file" "$email"
}

email_del()
{
local user="$1";shift
local email="$1";shift
local email_file="$cache_dir/email-$user"

[ -f "$email_file" ] || email_list >/dev/null
file_list_del "$email_file" "$email"
}

email_reset()
{
local user="$1";shift
local email_file="$cache_dir/email-$user"

rm -f -- "$email_file"
}

email_commit()
{
local user="$1";shift
local email_file="$cache_dir/email-$user"

[ -f "$email_file" ] || return 0

if [ -s "$email_file" ]; then
sed 's/.*/mail:&/' "$email_file"|ldap-groupmod replace "$user" > /dev/null
else
printf 'mail:\n'|ldap-groupmod replace
fi
email_reset "$user"
}

### group

group_new()
{
local r="$(ldap-groupadd "$1" 2>&1)"
[ -n "$r" ] && write_error "$r" && return 1
:
}

group_delete()
{
local r="$(ldap-groupdel "$1" 2>&1)"
[ -n "$r" ] && write_error "$r" && return 1
:
}

set_dn_conf()
{
local dn="$(system-auth status|cut -f2 -d' ')"
[ -n "$dn" ] || fatal "set_dn_conf: couldn't detect dn"

DN_CONF="$(/usr/sbin/ldap-dn find "$dn")"
[ -f "$DN_CONF" ] || fatal "set_dn_conf: $DN_CONF doesn't exist"

export DN_CONF
base_rootdn_rootpw
}

set_dn_conf
reset_cache

on_message()
{
case "$in_action" in
type)
write_type_item new_group system-account-name
write_type_item new_email e-mail
;;
list)
ldap-getent group '*' cn|sort|write_enum
;;
delete)
[ -n "$in_group" ] || return
group_delete "$in_group"
;;
new)
[ -n "$in_new_group" ] || return
group_new "$in_new_group" || return
;;
member_list_in)
[ -n "$in_group" ] || return
member_list_in "$in_group"|write_enum
;;
member_list_out)
[ -n "$in_group" ] || return
member_list_out "$in_group"|write_enum
;;
member_add)
[ -n "$in_group" -a -n "$in_member_out" ] || return
member_add "$in_group" "$in_member_out"
;;
member_del)
[ -n "$in_group" -a -n "$in_member_in" ] || return
member_del "$in_group" "$in_member_in"
;;
member_commit)
[ -n "$in_group" ] || return
member_commit "$in_group"
;;
member_reset)
[ -n "$in_group" ] || return
member_reset "$in_group"
;;
email_list)
[ -n "$in_group" ] || return
email_list "$in_group" |write_enum
;;
email_add)
[ -n "$in_group" -a -n "$in_new_email" ] || return
email_add "$in_group" "$in_new_email"
;;
email_del)
[ -n "$in_group" -a -n "$in_email" ] || return
email_del "$in_group" "$in_email"
;;
email_commit)
[ -n "$in_group" ] || return
email_commit "$in_group"
;;
email_reset)
[ -n "$in_group" ] || return
email_reset "$in_group"
;;
esac
}

message_loop
alterator-ldap-groups-0.4/group-init-list000064400000000000000000000001061127130000600205570ustar00rootroot00000000000000wheel
cdwriter
cdrom
audio
proc
radio
camera
floppy
xgrp
scanner
uucp
alterator-ldap-groups-0.4/hooks/000075500000000000000000000000001127130000600167145ustar00rootroot00000000000000alterator-ldap-groups-0.4/hooks/ldap-groups000064400000000000000000000013611127130000600210750ustar00rootroot00000000000000#!/bin/sh -ef

. alterator-openldap-functions

init_groups_file=/etc/alterator/ldap-groups/group-init-list
system_groups_file=/etc/group

set_dn_conf()
{
local dn="$(system-auth status|cut -f2 -d' ')"
[ -n "$dn" ] || fatal "set_dn_conf: couldn't detect dn"

DN_CONF="$(/usr/sbin/ldap-dn find "$dn")"
[ -f "$DN_CONF" ] || fatal "set_dn_conf: $DN_CONF doesn't exist"

export DN_CONF
base_rootdn_rootpw
}

set_dn_conf


write_init_groups()
{
local temp_file="$(mktemp -t ldap-groups.XXXXXX)"

sort "$init_groups_file" >"$temp_file"
sort -t: -k1,1 "$system_groups_file"|join -j1 -t: - "$temp_file"

rm -f -- "$temp_file"
}

write_init_groups|
while IFS=: read group _ gid _ ;do
ldap-groupadd "$group" "$gid"
done
alterator-ldap-groups-0.4/ui/000075500000000000000000000000001127130000600162065ustar00rootroot00000000000000alterator-ldap-groups-0.4/ui/ldap-groups/000075500000000000000000000000001127130000600204435ustar00rootroot00000000000000alterator-ldap-groups-0.4/ui/ldap-groups/ajax.scm000064400000000000000000000103251127130000600220730ustar00rootroot00000000000000(define-module (ui ldap-groups ajax)
:use-module (alterator woo)
:use-module (alterator ajax)
:export (init))

;;; members

(define (update-member-list . data)
(let ((group (if (pair? data) (car data) (form-value "group"))))
(form-update-enum "member_in" (woo "member_list_in" "/ldap-groups" 'group group))
(form-update-enum "member_out" (woo "member_list_out" "/ldap-groups" 'group group))))

(define (ui-member-add)
(let ((group (form-value "group"))
(member_out (form-value "member_out")))
(and (string? group) (string? member_out)
(catch/message
(lambda()
(woo "member_add"
"/ldap-groups"
'language (form-value "language")
'group group
'member_out member_out)
(update-member-list (form-value "group")))))))

(define (ui-member-del)
(let ((group (form-value "group"))
(member_in (form-value "member_in")))
(and (string? group) (string? member_in)
(catch/message
(lambda()
(woo "member_del"
"/ldap-groups"
'language (form-value "language")
'group group
'member_in member_in)
(update-member-list (form-value "group")))))))

;;; emails

(define (update-email-list . data)
(let ((group (if (pair? data) (car data) (form-value "group"))))
(form-update-enum "email" (woo "email_list" "/ldap-groups" 'group group))))

(define (ui-email-add)
(let ((group (form-value "group"))
(new_email (form-value "new_email")))
(and (string? group) (string? new_email)
(catch/message
(lambda()
(woo "email_add"
"/ldap-groups"
'language (form-value "language")
'group group
'new_email new_email)
(form-update-value "new_email" "")
(update-email-list (form-value "group")))))))

(define (ui-email-del)
(let ((group (form-value "group"))
(email (form-value "email")))
(and (string? group) (string? email)
(catch/message
(lambda()
(woo "email_del"
"/ldap-groups"
'language (form-value "language")
'group group
'email email)
(update-email-list (form-value "group")))))))

;;; groups

(define (update-groups . data)
(let ((group (if (pair? data) (car data) (form-value "group"))))
(if (not (string-contains group ";"))
(begin
(form-update-visibility "update_message" #f)
(form-update-value "group_name" group)
(woo "member_reset" "/ldap-groups" 'group group)
(woo "email_reset" "/ldap-groups" 'group group)
(update-member-list group)
(update-email-list group)))))

(define (ui-group-del)
(let ((group (form-value "group")))
(and (string? group)
(catch/message
(lambda()
(woo-delete "/ldap-groups" 'group group 'language (form-value "language"))
(ui-init))))))

(define (ui-group-add)
(let ((new_group (form-value "new_group")))
(and (string? new_group)
(catch/message
(lambda()
(woo-new "/ldap-groups" 'new_group new_group 'language (form-value "language"))
(ui-init)
(form-update-value "group" new_group)
(update-groups new_group))))))

(define (ui-group-save)
(let ((group (form-value "group")))
(and (string? group)
(catch/message
(lambda()
(form-update-visibility "update_message" #f)
(woo "member_commit"
"/ldap-groups"
'language (form-value "language")
'group group)
(woo "email_commit"
"/ldap-groups"
'language (form-value "language")
'group group)
(update-groups group)
(form-update-visibility "update_message" #t))))))

(define (ui-init)
(form-update-value "new_group" "")
(form-update-value "group_name" "")
(form-update-enum "member_in" '())
(form-update-enum "member_out" '())
(form-update-value "new_email" "")
(form-update-visibility "update_message" #f)
(form-update-enum "group" (woo-list "/ldap-groups")))

(define (init)
(ui-init)
(form-bind "group" "change" update-groups)
(form-bind "member_add_button" "click" ui-member-add)
(form-bind "member_del_button" "click" ui-member-del)

(form-bind "email_add_button" "click" ui-email-add)
(form-bind "email_del_button" "click" ui-email-del)

(form-bind "group_save_button" "click" ui-group-save)
(form-bind "group_del_button" "click" ui-group-del)
(form-bind "group_add_button" "click" ui-group-add))
alterator-ldap-groups-0.4/ui/ldap-groups/index.html000064400000000000000000000054631127130000600224500ustar00rootroot00000000000000<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<!-- ldap user administration module -->
<html wf="none">
<head>
<title>Group accounts - ALT Linux Console</title>
</head>
<body>
<form method="POST">
<table width="100%">
<tr>
<td colspan="2">
<span translate="_" nameref="new_group">New group:</span>
&nbsp;
<input type="text" class="text" name="new_group"/>
&nbsp;
<input type="button" name="group_add_button" value="Create" class="btn"/>
</td>
</tr>
<tr>
<td colspan="2"><hr/></td>
</tr>
<tr>
<td colspan="2">&nbsp;</td>
</tr>
<tr>
<td style="width:150px">
<select name="group" size="18" multiple="true" style="width:150px"/><br/>
</td>
<td>
<div class="alterator-accordion">
<h3><span translate="_">Account</span></h3>
<div>
<table>
<tr>
<td colspan="2">
<span translate="_">Name:</span>
&nbsp;
<strong><span class="alterator-label" name="group_name"/></strong>
</td>
</tr>
<tr>
<td colspan="2"><span translate="_">Members:</span></td>
</tr>
<tr>
<td>
<select name="member_in" size="8" style="width:98%"/>
</td>
<td style="vertical-align:top;text-align:left">
<input type="button" name="member_del_button" value="Remove" class="btn"/>
</td>
</tr>
<tr>
<td>
<span translate="_">New member:</span>
&nbsp;
<select name="member_out" style="min-width:100px"/>
</td>
<td>
<input type="button" name="member_add_button" value="Add" class="btn"/>
</td>
</tr>
</table>
</div>
<h3><span translate="_">E-mail</span></h3>
<div>
<table>
<tr>
<td>
<select name="email" multiple="true" size="4" style="width:98%"/>
</td>
<td style="text-align:left;vertical-align:top">
<input type="button" name="email_del_button" value="Remove" class="btn"/>
</td>
</tr>
<tr>
<td>
<span translate="_" nameref="new_email">New email:</span>
&nbsp;
<input type="text" class="text" name="new_email"/>
</td>
<td>
<input type="button" name="email_add_button" value="Add" class="btn"/>
</td>
</tr>
</table>
</div>
</div>
<div name="update_message" style="display:none">
<br/>
<span class="alterator-information-message">
<img src="/design/images/information.gif"/>
<span translate="_">Group settings successfully updated</span>
</span>
</div>
<br/>
<input type="button" name="group_save_button" value="Save settings" class="btn"/>
&nbsp;&nbsp;&nbsp;
<input type="button" name="group_del_button" value="Delete group" class="btn"/>
</td>
</tr>
</table>
</form>
<!-- group list end -->
</body>
</html>
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin