8 |
# 2000-03-13 DbP podrska za novu support/last_open tablicu |
# 2000-03-13 DbP podrska za novu support/last_open tablicu |
9 |
# 2000-03-16 DbP cuva stare aliase iz /etc/aliases |
# 2000-03-16 DbP cuva stare aliase iz /etc/aliases |
10 |
# 2000-03-20 DbP skida razmake prije/poslje imena/prezimena |
# 2000-03-20 DbP skida razmake prije/poslje imena/prezimena |
11 |
|
|
12 |
use DBI; |
use DBI; |
13 |
use strict; |
use strict; |
14 |
|
|
15 |
my $debug=0; |
my $debug=0; |
16 |
|
|
17 |
$debug++ if (defined($ARGV[0]) && $ARGV[0] eq "-d"); |
if (defined($ARGV[0]) && $ARGV[0] eq "-d") { |
18 |
|
$debug++; |
19 |
|
shift @ARGV; |
20 |
|
} |
21 |
|
my $open_only_id=shift @ARGV if (defined($ARGV[0])); |
22 |
|
|
23 |
warn "DEBUG -- me kreira ništa!" if ($debug); |
warn "DEBUG -- me kreira ništa!" if ($debug); |
24 |
|
|
25 |
$|++; |
$|++; |
26 |
|
|
|
my @mail_to; # array to main initial message to |
|
|
open(WHO,"who am i |") || die "who am i? $!"; |
|
|
my $db_user=<WHO>; |
|
|
$db_user=~s/\s.+$//g; |
|
|
close(WHO); |
|
27 |
|
|
28 |
#---- |
#---- |
29 |
|
|
38 |
my $mail_alias; |
my $mail_alias; |
39 |
my $mail_login; |
my $mail_login; |
40 |
|
|
41 |
|
my @mail_to; # array to main initial message to |
42 |
|
open(WHO,"who am i |") || die "who am i? $!"; |
43 |
|
my $db_user=<WHO>; |
44 |
|
chomp $db_user; |
45 |
|
$db_user=~s/\s.+$//g; |
46 |
|
close(WHO); |
47 |
|
|
48 |
|
xdebug "koristim korinika $db_user\n"; |
49 |
|
|
50 |
|
open(HOSTNAME,"hostname |") || die "hostname: $!"; |
51 |
|
my $hostname=<HOSTNAME>; |
52 |
|
chomp $hostname; |
53 |
|
close(HOSTNAME); |
54 |
|
|
55 |
|
xdebug "koristim hostname $hostname\n"; |
56 |
|
|
57 |
v "/etc/aliases\n"; |
v "/etc/aliases\n"; |
58 |
open(ALIAS,"/etc/aliases") || die "Can't open /etc/aliases: $!"; |
open(ALIAS,"/etc/aliases") || die "Can't open /etc/aliases: $!"; |
59 |
open(NALIAS,">aliases.new") || die "Can't open aliases.new: $!"; |
open(NALIAS,">aliases.new") || die "Can't open aliases.new: $!"; |
112 |
my $max_osoba_id=0; |
my $max_osoba_id=0; |
113 |
|
|
114 |
my $dbh = DBI->connect("DBI:Pg:dbname=informatika;host=support.pliva.hr;user=$db_user","","") || die $DBI::errstr; |
my $dbh = DBI->connect("DBI:Pg:dbname=informatika;host=support.pliva.hr;user=$db_user","","") || die $DBI::errstr; |
115 |
my $sth = $dbh->prepare("select max(id) from last_open") || die $dbh->errstr(); |
|
116 |
|
my $sth = $dbh->prepare("select ko_id from unix2ko where login='$db_user' and host='$hostname'") || die $dbh->errstr(); |
117 |
|
$sth->execute() || die $sth->errstr(); |
118 |
|
my ($ko_id)=$sth->fetchrow_array; |
119 |
|
|
120 |
|
xdebug "upotrebljavam ID kontakt osobe: $ko_id\n"; |
121 |
|
|
122 |
|
$sth = $dbh->prepare("select max(id) from last_open") || die $dbh->errstr(); |
123 |
$sth->execute() || die $sth->errstr(); |
$sth->execute() || die $sth->errstr(); |
124 |
my ($last_open)=$sth->fetchrow_array; |
my ($last_open)=$sth->fetchrow_array; |
125 |
$sth = $dbh->prepare("select id,ime,prezime,sifra,objekt,kat,soba,shell from view_otvori_nove where id > $last_open") || die $dbh->errstr(); |
|
126 |
|
if (! defined($open_only_id)) { |
127 |
|
$sth = $dbh->prepare("select id,ime,prezime,sifra,objekt,kat,soba,shell from view_otvori_nove where id > $last_open") || die $dbh->errstr(); |
128 |
|
} else { |
129 |
|
$sth = $dbh->prepare("select id,ime,prezime,sifra,objekt,kat,soba,shell from view_otvori_nove where id=$open_only_id") || die $dbh->errstr(); |
130 |
|
|
131 |
|
} |
132 |
$sth->execute() || die $sth->errstr(); |
$sth->execute() || die $sth->errstr(); |
133 |
|
|
134 |
|
|
135 |
|
my $sth2; |
136 |
|
|
137 |
while (my ($osoba_id,$ime,$prezime,$sifra,$objekt,$kat,$soba,$shell) = $sth->fetchrow_array() ) { |
while (my ($osoba_id,$ime,$prezime,$sifra,$objekt,$kat,$soba,$shell) = $sth->fetchrow_array() ) { |
138 |
|
|
139 |
|
$sth2 = $dbh->prepare("select max(status_tip_id) from status where osoba_id = $osoba_id") || die $dbh->errstr(); |
140 |
|
$sth2->execute() || die $sth2->errstr(); |
141 |
|
my ($max_status) = $sth2->fetchrow_array(); |
142 |
|
xdebug "max status zahtjeva $osoba_id je $max_status\n"; |
143 |
|
next if ($max_status > 3); # 3 .. otvoren |
144 |
|
|
145 |
next if ($ime eq "ime" || $prezime eq "prezime"); |
next if ($ime eq "ime" || $prezime eq "prezime"); |
146 |
|
|
147 |
if (!defined($ime) || !defined($prezime) || $ime eq "" || $prezime eq "") { |
if (!defined($ime) || !defined($prezime) || $ime eq "" || $prezime eq "") { |
152 |
$ime=nuke_chars($ime); |
$ime=nuke_chars($ime); |
153 |
$prezime=nuke_chars($prezime); |
$prezime=nuke_chars($prezime); |
154 |
|
|
155 |
my $prezime_za_login; |
my ($prezime_za_login,$ime_za_login); |
156 |
|
|
157 |
if ($prezime =~ /-/) { # dva prezimena prezime1-prezime2 |
if ($prezime =~ /[- ]/) { # dva prezimena prezime1-prezime2 |
158 |
($prezime_za_login,undef) = split(/-/,$prezime,2); |
($prezime_za_login,undef) = split(/[- ]/,$prezime,2); |
159 |
} else { |
} else { |
160 |
$prezime_za_login = $prezime; |
$prezime_za_login = $prezime; |
161 |
} |
} |
162 |
|
|
163 |
|
if ($ime =~ /[- ]/) { # dva imena ime1-ime2 |
164 |
|
($ime_za_login,undef) = split(/[- ]/,$ime,2); |
165 |
|
} else { |
166 |
|
$ime_za_login = $ime; |
167 |
|
} |
168 |
|
|
169 |
my $add=""; |
my $add=""; |
170 |
my $login; |
my $login; |
171 |
|
|
172 |
do { |
do { |
173 |
$login=substr($ime,0,1).substr($prezime_za_login,0,7-length($add)).$add; |
$login=substr($ime_za_login,0,1).substr($prezime_za_login,0,7-length($add)).$add; |
174 |
xdebug "$ime, $prezime login: $login\n"; |
$login =~ tr [A-Z] [a-z]; |
175 |
$add++; |
xdebug "$ime, $prezime login: $login\n"; |
176 |
|
$add++; |
177 |
} while defined($etc_passwd{$login}); |
} while defined($etc_passwd{$login}); |
|
$login =~ tr [A-Z] [a-z]; |
|
178 |
|
|
179 |
my $email_alias; |
my $email_alias; |
180 |
|
|
181 |
$add=""; |
$add=""; |
182 |
do { |
do { |
183 |
$email_alias="$ime.$prezime$add"; |
$email_alias="$ime.$prezime$add"; |
184 |
|
$email_alias =~ s/ /./g; # space -> dot |
185 |
$email_alias =~ tr [A-Z] [a-z]; |
$email_alias =~ tr [A-Z] [a-z]; |
186 |
xdebug "\t$email_alias\n"; |
xdebug "\t$email_alias\n"; |
187 |
$add++; |
$add++; |
191 |
my $group="users"; |
my $group="users"; |
192 |
|
|
193 |
if (defined($etc_passwd{$login})) { |
if (defined($etc_passwd{$login})) { |
194 |
xerror "preskocen: $ime $prezime (postoji isti login $login)\n"; |
xerror "preskocen: $ime $prezime osoba_id=$osoba_id (postoji isti login $login)\n"; |
195 |
$dbh->do("insert into status (osoba_id,kontakt_osoba_id,datum,status_tip_id) values ($osoba_id,3,'now'::datetime,4)") if (! $debug); |
$dbh->do("insert into status (osoba_id,kontakt_osoba_id,datum,status_tip_id) values ($osoba_id,3,'now'::datetime,4)") if (! $debug); |
196 |
next; |
next; |
197 |
} |
} |
218 |
$full_name=~s/ +:/:/g; |
$full_name=~s/ +:/:/g; |
219 |
$full_name=~s/ +/ /g; |
$full_name=~s/ +/ /g; |
220 |
$full_name=nuke_chars($full_name); |
$full_name=nuke_chars($full_name); |
221 |
if ($shell eq "t") { |
if ($shell) { |
222 |
$shell="/usr/local/bin/bash"; |
$shell="/usr/local/bin/bash"; |
223 |
} else { |
} else { |
224 |
$shell="/usr/bin/false"; |
$shell="/usr/bin/false"; |
233 |
$etc_passwd{$login}=$full_name; |
$etc_passwd{$login}=$full_name; |
234 |
|
|
235 |
if (defined($etc_aliases{$email_alias})) { |
if (defined($etc_aliases{$email_alias})) { |
236 |
xerror "upozorenje: $ime $prezime (postoji e-mail alias) -- $email_alias\n"; |
xerror "upozorenje: $ime $prezime osoba_id=$osoba_id (postoji e-mail alias) -- $email_alias\n"; |
237 |
print NALIAS "$email_alias:\t$login,$etc_aliases{$email_alias}\n"; |
print NALIAS "$email_alias:\t$login,$etc_aliases{$email_alias}\n"; |
238 |
} else { |
} else { |
239 |
print NALIAS "$email_alias:\t$login\n"; |
print NALIAS "$email_alias:\t$login\n"; |
252 |
system "mkdir -p $dir ; mkdir $dir/bin ; \ |
system "mkdir -p $dir ; mkdir $dir/bin ; \ |
253 |
chown -R $uid:$group_id{$group} $dir ; chmod 755 $dir" if (! $debug); |
chown -R $uid:$group_id{$group} $dir ; chmod 755 $dir" if (! $debug); |
254 |
|
|
255 |
$dbh->do("insert into status (osoba_id,kontakt_osoba_id,datum,status_tip_id) values ($osoba_id,3,'now'::datetime,3)") if (! $debug); |
$dbh->do("insert into status (osoba_id,kontakt_osoba_id,datum,status_tip_id) values ($osoba_id,$ko_id,'now'::datetime,3)") if (! $debug); |
256 |
|
|
257 |
$max_osoba_id = $osoba_id if ($max_osoba_id < $osoba_id) ; |
$max_osoba_id = $osoba_id if ($max_osoba_id < $osoba_id) ; |
258 |
} |
} |
262 |
close(NPASSWD); |
close(NPASSWD); |
263 |
close(NALIAS); |
close(NALIAS); |
264 |
|
|
265 |
|
$sth->finish; |
266 |
undef $sth; |
undef $sth; |
267 |
|
if (defined($sth2)) { |
268 |
|
$sth2->finish; |
269 |
|
undef $sth2; |
270 |
|
} |
271 |
$dbh->disconnect; |
$dbh->disconnect; |
272 |
|
|
273 |
system "mv /etc/passwd passwd.orig" if (! $debug); |
system "mv /etc/passwd passwd.orig" if (! $debug); |