Subversion Repositories cms

Compare Revisions

Ignore whitespace Rev 15 → Rev 16

/trunk/bin/samba_traceconn
37,7 → 37,7
$dbh->{InactiveDestroy} = 1;
$dbh->{AutoCommit} = 1;
$dbh->do('set DateStyle to SQL, EUROPEAN');
$DEBUG && DBI->trace(2);
$DEBUG && DBI->trace(1);
 
# =============================================================== LOAD DATA CLASSLAYOUT
my $sthloadall = $dbh->prepare("select pcip, pcstatus, usrid from classlayout where pcstatus != 'PCBLANK' order by id, row, col");
50,6 → 50,7
 
# =============================================================== DISABLE CLASS
my $sthstudentlist = $dbh->prepare("select usrid from usrclass,usr where classid=? and usrclass.profile='student' and usrid=usr.id and usr.profile='student'");
my $sthstudentlistlogin = $dbh->prepare("select usrid from usrclass,usr where classid=? and usrclass.profile='student' and usrid=usr.id and usr.profile='student' and usrclass.permision like '\%sh\%'");
my $sthdeletekeys = $dbh->prepare('delete from keys where key ~ ?');
my $sthupdateclasspersistent = $dbh->prepare("update class set ipteacher = '' where id=?");
my $sthupdateclass = $dbh->prepare("update class set status='suspend', ipteacher='' where class.id=?; update class set sitefm=keys.value where class.id=? and keys.key=?");
103,6 → 104,7
$DEBUG && print STDERR "call_client '$host' with [$cmd]\n";
return 1 if(!$host);
my $sock = IO::Socket::INET->new(PeerAddr => $host,
MultiHomed => 1,
PeerPort => 50001,
Proto => 'tcp',
Timeout => 4 );
293,14 → 295,25
}
if($newstatus ne 'PCLOGON' and $pcstatus ne 'PCLOGIN' and $pcstatus ne 'PCLOGON'){
# verifico se il PC ospitava un docente di una classe attiva
$sthipteacher->execute($ip);
$sthipteacher->execute($ip); # select id,classroompersistent from class where ipteacher=?
my @rowclass=$sthipteacher->fetchrow_array;
if(@rowclass){
my $idclass=$rowclass[0];
my $classroompersistent=$rowclass[1];
if($classroompersistent eq $idclassroom){
if($classroompersistent){
print "$time persistent classroom=$idclassroom class=$idclass PC=$ip\n";
$sthupdateclasspersistent->execute($idclass);
if($classroompersistent ne $idclassroom){
# elimino i permessi di accesso agli studenti per l'aula non più attiva
# elenco utenti che sono di tipo student della classe
$sthstudentlistlogin->execute($idclass);
my @user_list;
while(my @row = $sthstudentlistlogin->fetchrow_array){
push @user_list, $row[0];
}
system '/opt/cms/bin/cms_command', 'enableclass', $idclass, '-room', $classroompersistent, @user_list;
print "$time limit access class=$idclass on $classroompersistent\n";
}
}else{
print "$time close class=$idclass PC=$ip\n";
# devo disabilitare la classe e disabilitare la login agli Studenti con profilo student
/trunk/bin/cms_command
98,7 → 98,7
 
lockfile
 
DATA=$(date "+%Y/%m/%d %H:%M:%S")
DATA=$(date "+%Y-%m-%d_%H:%M:%S")
 
echo "$DATA cms_command $CMD $*" >>/var/log/cms_command.log
#echo "$DATA cms_command $CMD $*" >&2
266,7 → 266,7
chown root.nogroup /var/log/squid_redirect/$U
chmod 660 /var/log/squid_redirect/$U
# genero la lista degli host che abilitano lo studente
ALLOW="hosts allow ="
ALLOW="hosts allow = $(hostname).$(hostname -d)"
for R in $ROOMS
do
ALLOW="$ALLOW $(cat /etc/samba/addons/USER_CONF/room_$R.hostsallow)"
/trunk/bin/samba_netlogon
11,7 → 11,7
# dovesse accedervi manualmente
#
require 5.002;
open STDERR, ">>/var/log/samba_netlogon.log";
open STDERR, ">>/var/log/samba_netlogon.log" || die "Errore [$!] apertura file '/var/log/samba_netlogon.log'\n";
 
$Mode = shift;
$User = shift;
48,6 → 48,7
 
my $samba_group = getgrnam('samba');
 
 
# =============================================================== SHARE
if($Machine eq $Server){
# create share if not exist
68,20 → 69,34
}
 
# individuo indirizzo IP del Server
use Net::DNS;
my $res = new Net::DNS::Resolver;
my $query = $res->search($Server);
if($query){
foreach my $rr ($query->answer) {
next unless $rr->type eq "A";
$IP_SERVER=$rr->address;
$NET=$IPmachine;
$NET=~s/\.(\d+)$/./;
open IFCONFIG, "ifconfig |";
while(<IFCONFIG>){
### inet addr:192.168.8.120 Bcast:192.168.8.255 Mask:255.255.255.0
if(m/inet addr:(\d+\.\d+\.\d+\.\d+)\s+Bcast:$NET/){
$IP_SERVER=$1;
last;
}
}else{
print STDERR "no dns\n";
die "query failed: ", $res->errorstring, "\n";
}
}
close IFCONFIG;
($IP_SERVER) || die "No server IP on network $NET\n";
 
# individuo indirizzo IP del Server
#use Net::DNS;
#my $res = new Net::DNS::Resolver;
#my $query = $res->search($Server);
#if($query){
# foreach my $rr ($query->answer) {
# next unless $rr->type eq "A";
# $IP_SERVER=$rr->address;
# last;
# }
#}else{
# print STDERR "no dns\n";
# die "query failed: ", $res->errorstring, "\n";
#}
 
# =============================================================== SQL CONNECTION
use DBI;
my $dbh = DBI->connect('dbi:Pg:dbname=cms;host=localhost', 'cms', 'cmsutil') || die "DBI Error open database: ".DBI::errstr."\n";
123,13 → 138,13
my $STARTUP="/home/samba/machine/$IPmachine/.system/.startup.bat";
my $LOGON="/home/samba/machine/$IPmachine/.system/.logon.bat";
 
if(-f $LOGON){
unlink $LOGON;
}
# if(-f $LOGON){
# unlink $LOGON;
# }
 
if(-f $STARTUP){
unlink $STARTUP;
}
# if(-f $STARTUP){
# unlink $STARTUP;
# }
 
my $OTU="/home/samba/machine/$IPmachine/.system/.otu.exe";
my $POWEROFF="/home/samba/machine/$IPmachine/.system/.poweroff.exe";
218,7 → 233,7
exit 1;
}
}
open LOG, ">$LOG";
open LOG, ">$LOG" || die "Errore [$!] apertura file '$LOG'\n";
close LOG;
chmod 0660, $LOG;
chown 0, $samba_group, $LOG;
230,7 → 245,7
}
# creo/aggiorno il file di logon
# Windows XP non esegue lo startup indicato nelle policy; lo eseguo invece dallo script di logon
open CMD, ">$LOGON";
open CMD, ">$LOGON" || die "Errore [$!] apertura file '$LOGON'\n";
# print CMD "net use P: /HOME /YES\r\n";
print CMD "net use H: \\\\$Server\\HOME /YES\r\n";
print CMD "net use N: \\\\$Server\\NETLOGON /YES\r\n";
244,7 → 259,7
chown 0, $samba_group, $LOGON;
 
# creo/aggiorno il file di startup che verrà eseguito dal PC client
open CMD, ">$STARTUP";
open CMD, ">$STARTUP" || die "Errore [$!] apertura file '$STARTUP'\n";;
print CMD <<__CMD__;
\@ECHO OFF\r
REM net use N: \\\\$Server\\netlogon /YES\r
346,7 → 361,8
symlink "/opt/cms/lib/vnc", "/home/samba/machine/$IPmachine/.system/.vnc";
}
# genero il file da caricare con regedit
open VNC, ">/home/samba/machine/$IPmachine/.system/.vnc.reg";
my $VNCFILE="/home/samba/machine/$IPmachine/.system/.vnc.reg";
open VNC, ">$VNCFILE" || die "Errore [$!] apertura file '$VNCFILE'\n";;
print VNC <<__VNC__;
REGEDIT4\r
\r