alterator-ldap-users-0.8/000075500000000000000000000000001215211612600154265ustar00rootroot00000000000000alterator-ldap-users-0.8/Makefile000064400000000000000000000004621215211612600170700ustar00rootroot00000000000000NAME=ldap-users INSTALL=/usr/bin/install all: clean: clean-po install: install-module install-data install-data: $(INSTALL) -d $(datadir)/alterator/design/images/ldap-users cp -a design/images/ldap-users/* $(datadir)/alterator/design/images/ldap-users include /usr/share/alterator/build/module.mak alterator-ldap-users-0.8/applications/000075500000000000000000000000001215211612600201145ustar00rootroot00000000000000alterator-ldap-users-0.8/applications/ldap-users.desktop000064400000000000000000000003641215211612600235710ustar00rootroot00000000000000[Desktop Entry] Type=Application Categories=X-Alterator-Users Icon=users Terminal=false Name=Ldap user accounts Name[ru]=Пользователи X-Alterator-URI=/ldap-users X-Alterator-Weight=30 X-Alterator-Help=ldap-users X-Alterator-UI=html alterator-ldap-users-0.8/backend3/000075500000000000000000000000001215211612600171005ustar00rootroot00000000000000alterator-ldap-users-0.8/backend3/ldap-users000075500000000000000000000435021215211612600211110ustar00rootroot00000000000000#!/bin/sh alterator_api_version=1 po_domain="alterator-ldap-users" cache_dir="/var/cache/alterator/ldap-users" image_dir="/usr/share/alterator/design/images/ldap-users" default_groups="cdwriter cdrom audio proc radio camera floppy xgrp scanner uucp users" #turn off auto expansion set -f . alterator-sh-functions . alterator-openldap-functions . shell-quote . shell-config # delimeters rdelim='[[:space:]]\+' wdelim=' ' # show localized answer from helper answer_l10n() { local str="$1" run_localized gettext "ldap-user-tools" "${r/[a-z-]*: /}" } # test IP address or hostname: local or remote is_local(){ [ "$(traceroute -m2 $1 | wc -l)" -le 2 ] } ### cache reset_cache() { rm -rf -- "$cache_dir" mkdir -p -- "$cache_dir" } ### e-mail # read all available emails email_list() { if [ -n "$mode" -a "$mode" == "ldap" ];then local user="$1";shift local email_file="$cache_dir/email-$user" if [ -f "$email_file" ];then cat "$email_file" else ldap-getent passwd "$user" mail| sed -e 's/,[[:blank:]]*/\n/g'| tee "$email_file" fi fi } # add email to list 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" } # remove email from list 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" } # reset email value email_reset() { local user="$1";shift local email_file="$cache_dir/email-$user" rm -f -- "$email_file" } # commit email value 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-usermod replace "$user" > /dev/null else printf 'mail:\n'|ldap-usermod replace fi email_reset "$user" } ######################## photo_add(){ # echo $(set|grep "in_") >&2 ldapmodify -a -x -D "$rootdn" $rootpw -H "ldap://${host:-127.0.0.1}" >/dev/null</dev/null< /dev/null done } user_add_default_groups(){ [ -n "$1" ] || return groups=$(echo "$default_groups"|tr ' ' ',') usermod -g "$1" -G "$groups" "$1" } ldap_user_del_default_groups(){ [ -n "$1" ] || return for i in $(ldap-getent group '*' cn memberUid|egrep "(:$1,|:$1$|,$1,|,$1$)"|cut -f1 -d':') do printf 'memberUid:%s\n' "$1" | ldap-groupmod del "$i" > /dev/null done } user_chpasswd(){ local r="$(echo "$2" |ldap-passwd "$1" 2>&1)" [ -n "$r" ] && write_error "$(answer_l10n "$r")" && return 1 : } user_new(){ local r="$(ldap-useradd "$1" 2>&1)" [ -n "$r" ] && write_error "$(answer_l10n "$r")" && return 1 # trying to init user homedir local init_user="$(su - $1 -s /bin/true > /dev/null 2>&1)" : } user_write(){ case "$mode" in local) local in_cn="$in_sn" [ -n "$in_givenname" ] && in_cn="$in_cn $in_givenname" [ -n "$in_patronym" ] && in_cn="$in_cn $in_patronym" usermod -c "$in_cn" -s "$in_loginshell" -d "$in_homedirectory" "$in_user" ;; ldap|krb5) local r="$(user_args | ldap-usermod replace "$1" 2>&1)" [ -n "$r" ] && write_error "$(answer_l10n "$r")" && return 1 : ;; *);; esac } user_delete(){ case "$mode" in local) userdel -r "$in_user" : ;; ldap|krb5) local r="$(ldap-userdel -r "$1" 2>&1)" [ -n "$r" ] && write_error "$(answer_l10n "$r")" && return 1 : ;; *);; esac } parse_uploaded(){ cat $in_passwd_file | while read line; do echo $line | while IFS=':' read login password uid gid gecos home shell; do if [ "$uid" -ge "$in_minuid" -a "$uid" -le "$in_maxuid" ];then write_table_item \ name "$login" \ password "$password" \ uid "$uid" \ gid "$gid" \ gecos "$gecos" \ home "$home" \ shell "$shell" fi done done } read_userlist(){ [ -z "$in_minuid" -o "$in_minuid" == "#f" ] && in_minuid="4999" [ -z "$in_maxuid" -o "$in_maxuid" == "#f" ] && in_maxuid="9000" [ "$in_maxuid" -gt "$in_minuid" ] || in_minuid="$in_maxuid" case "$mode" in ldap|krb5) local IFS=$'\n' for i in $(ldap-getent passwd '*' uid uidNumber|sort) ;do echo $i | while IFS=':' read login uid; do if [ "$uid" -ge "$in_minuid" -a "$uid" -le "$in_maxuid" ];then write_enum_item "$login" fi done done ;; *) local IFS=$'\n' cat /etc/passwd | sort | while IFS=':' read login pass uid gid gecos home shell; do if [ "$uid" -ge "$in_minuid" -a "$uid" -le "$in_maxuid" ];then write_enum_item "$login" fi done ;; esac } list_bases(){ ldapsearch -x -H "ldap://${in_rem_host:-127.0.0.1}" -LLL -b "" -s base namingContexts \ | grep naming | cut -f2 -d ' '| \ while read base_dn ; do write_enum_item "$base_dn" "$base_dn" done 2>/dev/null } determine_mode(){ [ -n "$mode" ] || set_dn_conf write_string_param mode "$mode" if [ "$mode" != "local" ];then write_string_param DN_CONF "$DN_CONF" write_string_param host "$host" write_string_param base "$base" write_string_param rootdn "$rootdn" write_string_param rootpw "$rootpw" method=$(echo "$rootpw"|sed -n -e "s/^.*{\([^}]*\)}.*$/\1/p") if [ -n "$method" ]; then write_string_param bind_info "encoded" else write_string_param bind_info "present" fi [ "$mode" == "krb5" ] && write_string_param enable_krb "yes" fi } check_mode(){ [ -n "$mode" ] || set_dn_conf write_string_param mode "$mode" write_string_param host "$host" write_string_param base "$base" write_string_param rootdn "$rootdn" write_string_param rootpw "$rootpw" write_string_param bind_info "$bind_info" } set_new_source(){ case "$in_newmode" in local) mode="local" host="localhost" base="tcb" rootdn:root rootpw:********* bind_info="present" export mode host base rootdn rootpw bind_info ;; ldap) host="$in_host" base="$in_new_rem_base" DN_CONF="remote" mode="ldap" bind_info="encoded" export DN_CONF mode host base rootdn rootpw bind_info ;; localldap) mode="ldap" host="localhost" base="$in_new_base" DN_CONF=$(ldap-dn find "$base") rootdn=$(egrep "rootdn" "$DN_CONF"|cut -f2 -d' '|tr -d '"') rootpw="-w $(egrep "rootpw" "$DN_CONF"|cut -f2 -d' ')" method=$(echo "$rootpw"|sed -n -e "s/^.*{\([^}]*\)}.*$/\1/p") if [ -n "$method" ]; then bind_info="encoded" else bind_info="present" fi export DN_CONF mode host base rootdn rootpw bind_info ;; system) mode="system" set_dn_conf ;; *) ;; esac } get_mode(){ if [ -z "$mode" -o "$mode" == 'system' ]; then mode="$(/usr/sbin/system-auth status | cut -f1 -d' ')" role=$(shell_config_get /etc/sysconfig/system SERVER_ROLE) [ "$mode" == 'ldap' -a "$role" == 'master' ] && mode='krb5' fi echo $mode } set_dn_conf(){ local data="$(/usr/sbin/system-auth status)" mode="$(get_mode)" case "$mode" in local) mode="local" host="localhost" base="tcb" rootdn="root" rootpw="*********" bind_info="present" export mode host base rootdn rootpw bind_info ;; ldap|krb5) base="$(echo "$data"|cut -f2 -d' ')" urihost="$(echo "$data"|cut -f3 -d' ')" host=$(echo "$urihost"|sed -e 's/lda.*\/\///i') if is_local "$host" ; then host=127.0.0.1 DN_CONF=$(ldap-dn find "$base") rootdn=$(egrep "rootdn" "$DN_CONF"|cut -f2 -d' '|tr -d '"') rootpw="-w $(egrep "rootpw" "$DN_CONF"|cut -f2 -d' ')" bind_info="present" export DN_CONF export mode host base rootdn rootpw [ "$mode" == 'krb5' ] && export ENABLE_KRB="yes" fi ;; *) ;; esac } set_new_bind(){ mode="$in_mode" base="$in_base" host="$in_host" rootdn="$in_rootdn" rootpw="-w $in_rootpw" bind_info="$in_bind_info" DN_CONF="remote" export DN_CONF mode host base rootdn rootpw bind_info } set_dn_conf reset_cache on_message(){ [ "$(get_mode)" == 'krb5' ] && export ENABLE_KRB=yes case "$in_action" in type) write_type_item newusername ldap-account-name write_type_item newemail e-mail write_type_item telephonenumber telephone-number write_type_item mobile telephone-number ;; #object manipulations list) case "$in__objects" in departmentnumber_list) write_enum_item "" deppast="" ldap-getent passwd '*' departmentnumber | sort | while read department do if [ -n "$department" ] && [ "$deppast" != "$department" ]; then write_enum_item "$department"; fi deppast="$department" done ;; title_list) write_enum_item "" titlepast="" ldap-getent passwd '*' title | sort | while read title do if [ -n "$title" ] && [ "$titlepast" != "$title" ]; then write_enum_item "$title"; fi titlepast="$title" done ;; avail_shell) write_enum_item "/sbin/nologin" while read sh; do [ -x "$sh" ] || continue write_enum_item "$sh" done &1; break; fi done ;; *);; esac #new ;; source) set_new_source ;; user_photo) [ -z "$in_photo_file" ] || photo_add ;; *) ;; esac ;; delete) case "$in__objects" in user) if [ -n "$in_user" ]; then IFS=$'\n' for user in $(echo $in_user|sed -e 's/;/\n/g') do case "$mode" in local) userdel "$user" || return ;; ldap|krb5) user_delete "$user" || return ldap_user_del_default_groups "$user" ;; *);; esac done fi ;; photo) [ -z "$in_user" ] || photo_delete ;; *);; esac ;; email_add) [ -n "$in_user" -a -n "$in_newemail" ] || return email_add "$in_user" "$in_newemail" ;; email_del) [ -n "$in_user" -a -n "$in_email" ] || return email_del "$in_user" "$in_email" ;; email_list) [ -n "$in_user" ] || return email_list "$in_user" |write_enum ;; email_commit) [ -n "$in_user" ] || return case "$mode" in local);; ldap|krb5) email_commit "$in_user" ;; *);; esac ;; email_reset) [ -n "$in_user" ] || return email_reset "$in_user" ;; generate) write_string_param passwd_auto "$(pwqgen)" ;; set_bind) [ -n "$in_mode" -a -n "$in_base" -a -n "$in_host" -a -n "$in_rootdn" -a -n "$in_rootpw" ] && set_new_bind ;; esac } message_loop alterator-ldap-users-0.8/design/000075500000000000000000000000001215211612600166775ustar00rootroot00000000000000alterator-ldap-users-0.8/design/images/000075500000000000000000000000001215211612600201445ustar00rootroot00000000000000alterator-ldap-users-0.8/design/images/ldap-users/000075500000000000000000000000001215211612600222235ustar00rootroot00000000000000alterator-ldap-users-0.8/design/images/ldap-users/notfound.png000064400000000000000000000065421215211612600245740ustar00rootroot00000000000000PNG  IHDR^^ңn OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGDb_ pHYs  tIME 9IDATx;0%DdV `eS\hF3!`;߿"'~@r:,!eDD뺎 ~<xx#<xx#h[\וq$c UUEu]{GXו$ 1s|<֚zyC˅ڶ>m eIu]S®G76ҵ4 MD0֚uZKƘ[ |k Xkix$,wݑ}o T5%I{ZNfYFJg{?B 㙙ڶ4M?BO J) R3V𥡋2_"𥢋_2(wKGE~(b_ ]43ߊz[CC|A?/=8 =|=|=MS/LjQo]>Fm999&96P9F9Vt3d|]*>D|gqkEL?Ÿiqch&[񣂗傂 R׊>s _]۵<ϩi+is{otDD>30\,ޫ<xx#xx#m+#"IENDB`alterator-ldap-users-0.8/type/000075500000000000000000000000001215211612600164075ustar00rootroot00000000000000alterator-ldap-users-0.8/type/ldap-account-name.scm000064400000000000000000000006421215211612600224050ustar00rootroot00000000000000(define-module (type ldap-account-name) :use-module (alterator woo) :export (type)) (define *account-regex-str* "^[a-z][\.a-z0-9_-]*$") (define *account-regex* (make-regexp *account-regex-str* regexp/extended)) (define (type v _) (or (and (string? v) (string-null? v)) (and (string? v) (regexp-exec *account-regex* v)) (type-error (_ "only small latin letters, digits dot and '_' allowed")))) alterator-ldap-users-0.8/ui/000075500000000000000000000000001215211612600160435ustar00rootroot00000000000000alterator-ldap-users-0.8/ui/ldap-users/000075500000000000000000000000001215211612600201225ustar00rootroot00000000000000alterator-ldap-users-0.8/ui/ldap-users/ajax.scm000064400000000000000000000316541215211612600215620ustar00rootroot00000000000000(define-module (ui ldap-users ajax) :use-module (alterator woo) :use-module (alterator ajax) :use-module (alterator str) :use-module (alterator effect) :export (init)) (define *rootdn* "") (define *rootpw* "") (define *bind_info* "present") (define *host* "localhost") (define *ldapbase* "") (define *mode* "local") (define *user-parameter-list* '("sn" "givenname" "patronym" "homedirectory" "loginshell" "o" "ou" "title" "telephonenumber" "mobile" "user" "jpegphoto" "uidNumber" "departmentnumber" "postaladdress")) (define *passwd-parameter-list* '("auto" "passwd_1" "passwd_2" "passwd_auto")) (define (update-users . data) (let ((user (if (pair? data) (car data) (form-value "user")))) (if (not (string-contains user ";")) (begin (form-update-visibility "update_message" #f) (form-update-visibility "data_not_saved" #f) (ui-reset-password) (form-update-value "username" user) (form-update-enum "departmentnumber_list" (woo-list "/ldap-users/departmentnumber_list")) (form-update-enum "title_list" (woo-list "/ldap-users/title_list")) (form-update-value-list *user-parameter-list* (woo-read-first "/ldap-users" 'user user)) (update-group-in-list user) (update-group-out-list user) (update-mail-list user))))) (define (update-group-in-list . data) (let ((user (if (pair? data) (car data) (form-value "user")))) (form-update-enum "in_groups" (woo-list "/ldap-users/member_of" 'user user)))) (define (update-group-out-list . data) (let ((user (if (pair? data) (car data) (form-value "user")))) (form-update-enum "out_groups" (woo-list "/ldap-users/member_out" 'user user)))) (define (set_filter) (let ( (type (car (string-cut-repeated (or (form-value "use_filter") "real") #\,))) ) (cond ((string-ci=? type "system")(set_system_filter)) ((string-ci=? type "real")(set_real_filter)) (else (set_real_filter)))) ) (define (set_system_filter) (form-update-value "min_uid" "0") (form-update-value "max_uid" "499") (filtered_userlist) ) (define (set_real_filter) (form-update-value "min_uid" "499") (form-update-value "max_uid" "9000") (filtered_userlist) ) (define (filtered_userlist) (catch/message (lambda() (form-update-enum "user" (woo-list "/ldap-users/userlist" 'minuid (form-value "min_uid") 'maxuid (form-value "max_uid") 'language (form-value "language"))))) (form-update-visibility "userdelete" #f) (form-update-visibility "info_frame" #f) (form-update-visibility "usersave" #f) (form-update-visibility "update_message" #f) ) (define (check_mode) (let* ((data (woo-list "/ldap-users/mode" ))) (set! *bind_info* (woo-get-option (car data) 'bind_info)) (set! *rootdn* (woo-get-option (car data) 'rootdn)) (set! *rootpw* (woo-get-option (car data) 'rootpw)) (set! *mode* (woo-get-option (car data) 'mode)) (set! *ldapbase* (woo-get-option (car data) 'base)) (set! *host* (woo-get-option (car data) 'host))) (form-update-value "bind_rootdn" *rootdn*) (form-update-value "base_" *ldapbase*) (form-update-value "host_" *host*) (if (equal? *mode* "local") (begin (form-update-visibility "photo_frame" #f) (form-update-visibility "work_h" #f) (form-update-visibility "mail_h" #f)) (begin (form-update-visibility "photo_frame" #t) (form-update-visibility "work_h" #t) (form-update-visibility "mail_h" #t))) ) (define (bind_info) (set! *rootpw* "") (form-update-value "bind_rootpw" *rootpw*) (form-update-visibility "need_bind_info" #t) (form-update-visibility "main_area" #f) (form-update-visibility "adduser_area" #f) (form-update-visibility "select_area" #f) ) (define (main_mode) (form-update-visibility "need_bind_info" #f) (form-update-visibility "select_area" #f) (form-update-visibility "main_area" #t) (form-update-visibility "nav_buttons" #t) (form-update-visibility "account_row" #t) (form-update-visibility "group_row" #f) (form-update-visibility "adduser_area" #t) ) (define (ui-init . data) (check_mode) (for-each (lambda(x) (form-update-value x "")) (append '("newusername" "username") *user-parameter-list*)) ;; Show default picture (form-update-value "jpegphoto" "ldap-users/notfound.png") (ui-reset-password) (filtered_userlist) (form-update-enum "departmentnumber_list" (woo-list "/ldap-users/departmentnumber_list")) (form-update-enum "title_list" (woo-list "/ldap-users/title_list")) (form-update-enum "loginshell" (woo-list "/ldap-users/avail_shell")) (form-update-visibility "update_message" #f) (form-update-visibility "data_not_saved" #f) (form-update-enum "email" '() ) (form-update-enum "in_groups" '() ) (form-update-enum "out_groups" '() )) (define (ui-usersave) (let ((user (form-value "user"))) (if (string? user) (catch/message (lambda() (form-update-visibility "update_message" #f) (apply woo-write "/ldap-users" 'user (form-value "user") 'language (form-value "language") 'departmentnumber_list (form-value "departmentnumber_list") 'title_list (form-value "title_list") (form-value-list (append *passwd-parameter-list* *user-parameter-list*))) (woo "email_commit" "/ldap-users" 'user user 'language (form-value "language")) (update-users user) (saved) ))))) (define (ui-userdel) (let ((user (form-value "user"))) (if (string? user) (catch/message (lambda() (woo-delete "/ldap-users/user" 'user user 'language (form-value "language")) (ui-init)))))) (define (ui-useradd) (let ((newusername (form-value "newusername"))) (catch/message (lambda() (woo-new "/ldap-users/user" 'newusername newusername 'language (form-value "language")) (filtered_userlist) (form-update-value "user" newusername) (form-update-value "newusername" "") (update-users newusername))))) (define (ui-emailadd) (catch/message (lambda() (let ((user (form-value "user")) (newemail (form-value "newemail"))) (cond ((and (string? user) (string? newemail)) (woo "email_add" "/ldap-users" 'user user 'newemail newemail 'language (form-value "language")) (update-mail-list))))))) (define (ui-emaildel) (catch/message (lambda() (let ((user (form-value "user")) (email (form-value "email"))) (cond ((and (string? user) (string? email)) (woo "email_del" "/ldap-users" 'user user 'email email 'language (form-value "language")) (update-mail-list))))))) (define (update-mail-list . data) (let ((user (if (pair? data) (car data) (form-value "user")))) (form-update-value "newemail" "") (form-update-enum "email" (woo "email_list" "/ldap-users" 'user user )))) (define (ui-generate) (form-update-value-list '("passwd_auto") (car (woo "generate" "/ldap-users")))) (define (ui-reset-password) (form-update-value "passwd_1" "") (form-update-value "passwd_2" "") (form-update-value "auto" #f) (ui-generate) (update-effect)) (define (ui-add-to-group) (let ((newgrp (form-value "out_groups")) (user (form-value "user"))) (if (string? newgrp) (catch/message (lambda() (woo-write "/ldap-users/newgroup" 'user user 'newgrp newgrp 'language (form-value "language")) ))) (update-group-in-list user) (update-group-out-list user)) ) (define (ui-del-from-group) (let ((delgrp (form-value "in_groups")) (user (form-value "user"))) (if (string? delgrp) (catch/message (lambda() (woo-write "/ldap-users/delgroup" 'user user 'delgrp delgrp 'language (form-value "language")) ))) (update-group-in-list user) (update-group-out-list user)) ) (define (on-migrate) (form-replace "/ldap-users/migration")) (define (select_other) (form-update-visibility "need_bind_info" #f) (form-update-visibility "main_area" #f) (form-update-visibility "adduser_area" #f) (form-update-visibility "select_area" #t) ) (define (other_selected) (catch/message (lambda() (woo-new "/ldap-users/source" 'newmode (form-value "use_src") 'new_base (form-value "new_base_src") 'host (form-value "rem_host") 'new_base (form-value "new_base_src") 'new_rem_base (form-value "rem_base_src") 'language (form-value "language")) )) (ui-init) (bind_request) ) (define (set_src) (let ( (src (car (string-cut-repeated (or (form-value "use_src") "local") #\,))) ) (cond ((string-ci=? src "local")(set_local_src)) ((string-ci=? src "ldap")(set_ldap_src)) ((string-ci=? src "localldap")(set_localldap_src)) (else (set_local_src)))) ) (define (set_local_src) (form-update-visibility "new_base_src" #f) (form-update-visibility "rem_base_src_div" #f) ) (define (set_ldap_src) (form-update-visibility "new_base_src" #f) (form-update-visibility "rem_base_src_div" #t) ) (define (set_localldap_src) (form-update-enum "new_base_src" (woo-list "/ldap-users/bases" 'language (form-value "language"))) (form-update-visibility "new_base_src" #t) (form-update-visibility "rem_base_src_div" #f) ) (define (read_rem_bases) (form-update-enum "rem_base_src" (woo-list "/ldap-users/bases" 'rem_host (form-value "rem_host") 'language (form-value "language"))) ) (define (return_to_list) (form-update-visibility "need_bind_info" #f) (form-update-visibility "select_area" #f) (form-update-visibility "main_area" #t) (form-update-visibility "adduser_area" #t) ) (define (show-upload) (form-update-visibility "photo_upload_area" #t) ) (define (hide-upload) (form-update-visibility "photo_upload_area" #f) ) (define (on-upload) (call-with-form-file "photo_file" (lambda(path) (catch/message (lambda() (woo-new "/ldap-users/user_photo" 'photo_file path 'user (form-value "user") )))) ) (form-update-visibility "photo_upload_area" #f) (update-users) ) (define (photo_del) (let ((user (form-value "user"))) (if (string? user) (catch/message (lambda() (woo "delete" "/ldap-users/photo" 'user user 'language (form-value "language")) (update-users)))))) (define (set_bind) (if (not (string-null? (form-value "bind_rootpw"))) (begin (set! *rootpw* (form-value "bind_rootpw")) (set! *rootdn* (form-value "bind_rootdn")) (set! *bind_info* "present"))) (woo "set_bind" "/ldap-users" 'mode "ldap" 'base *ldapbase* 'host *host* 'rootpw *rootpw* 'rootdn *rootdn* 'bind_info *bind_info* 'language (form-value "language") ) (bind_request) ) (define (bind_request) (if (equal? *bind_info* "present") (begin (main_mode)) (begin (bind_info) )) ) (define (not_saved) (form-update-visibility "update_message" #f) (form-update-visibility "data_not_saved" #t) ) (define (saved) (form-update-visibility "update_message" #t) (form-update-visibility "data_not_saved" #f) ) ;;; (define (init) (ui-init) (effect-hide "userdelete" "user" "") (effect-hide "usersave" "user" "") (effect-show "passwd_1" "auto" #f) (effect-show "passwd_2" "auto" #f) (effect-show "passwd_auto" "auto" #t) (effect-show "generate_button" "auto" #t) (effect-hide "info_frame" "user" "") (init-effect) (form-bind "use_filter" "change" set_filter) (form-bind "use_src" "change" set_src) (form-bind "generate_button" "click" ui-generate) (form-bind "emailadd" "click" ui-emailadd) (form-bind "emaildel" "click" ui-emaildel) (form-bind "usersave" "click" ui-usersave) (form-bind "useradd" "click" ui-useradd) (form-bind "userdelete" "click" ui-userdel) (form-bind "user" "change" update-users) (form-bind "sn" "change" not_saved) (form-bind "givenname" "change" not_saved) (form-bind "patronym" "change" not_saved) (form-bind "homedirectory" "change" not_saved) (form-bind "loginshell" "change" not_saved) (form-bind "passwd_auto" "change" not_saved) (form-bind "passwd_1" "change" not_saved) (form-bind "o" "change" not_saved) (form-bind "ou" "change" not_saved) (form-bind "title" "change" not_saved) (form-bind "title_list" "change" not_saved) (form-bind "telephonenumber" "change" not_saved) (form-bind "mobile" "change" not_saved) (form-bind "departmentnumber" "change" not_saved) (form-bind "departmentnumber_list" "change" not_saved) (form-bind "postaladdress" "change" not_saved) (form-bind "rem_host" "change" read_rem_bases) (form-bind "add_to_group" "click" ui-add-to-group) (form-bind "migration" "click" on-migrate) (form-bind "remove_from_group" "click" ui-del-from-group) (form-bind "filter" "click" filtered_userlist) (form-bind "select_btn" "click" select_other) (form-bind "useit_btn" "click" other_selected) (form-bind "ret_list" "click" return_to_list) (form-bind "set_photo" "click" show-upload) (form-bind "del_photo" "click" photo_del) (form-bind "cancel_photo" "click" hide-upload) (form-bind-upload "upload_photo" "click" "photo_file" on-upload) (form-bind "bind_btn" "click" set_bind) ) alterator-ldap-users-0.8/ui/ldap-users/index.html000064400000000000000000000320051215211612600221170ustar00rootroot00000000000000 Users accounts - ALT Linux Console
You must enter bind data for base    on host   
  root dn:    root pw:    or 
Select userlist source
Current auth state  
/etc/passwd file on this server  
LDAP base on this server
Other LDAP server
Remote host:    remote base: 
 
Used base:    on host     
New account:   

Filter:  System only  PeoplesUID From:    to   
Do not forget save data...
User settings updated

Account

Name:    uid: 
Last name:
First name:
Patronym:
Home directory:
Shell:
Password:
Generate automatically
(enter passphrase)
(repeat passphrase)
 
Photo
Select new user photo: 


Group membership

Member of   Available groups


Work

Organization:
Organisation Unit:
Title:
Phone:
Mobile phone:
Department:
Address:

E-mail

New email: