[X2Go-Commits] x2goserver.git - build-baikal (branch) updated: 3.0.99-2-115-g26ca613

X2Go dev team git-admin at x2go.org
Fri Jan 3 20:52:19 CET 2014


The branch, build-baikal has been updated
       via  26ca613e9d48e6368805f1a7aad471dead9cfc71 (commit)
      from  c8c54cd38251c843d97e13776b47b75e51e6cb1f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 debian/changelog                  |    1 +
 x2goserver/sbin/x2gocleansessions |  146 +++---
 x2goserver/sbin/x2godbadmin       |  894 +++++++++++++++++++------------------
 3 files changed, 539 insertions(+), 502 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 3120baf..dcb4e66 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -18,6 +18,7 @@ x2goserver (3.0.99.5-0~x2go3) UNRELEASED; urgency=low
   * Switch to setgid instead of setuid for SQLite wrapper.
   * Tab'ified postinst/postrm scripts.
   * Store SQLite db in /var/lib/x2go to comply to latest FHS.
+  * Tab'ified (forgotten) scripts in /usr/sbin.
 
   [Martin Oehler]
   * Removes old debug code fragment, fixes x2golistsessions parsing.
diff --git a/x2goserver/sbin/x2gocleansessions b/x2goserver/sbin/x2gocleansessions
index 14c38ac..1b99474 100755
--- a/x2goserver/sbin/x2gocleansessions
+++ b/x2goserver/sbin/x2gocleansessions
@@ -25,41 +25,40 @@ use strict;
 
 sub check_pid
 {
-   my $pid=shift;
-   my $sess=shift;
-   my $sec=shift;
-   if($sec < 30)
-   {
-      return 1;
-   }
-   open (F,"</proc/$pid/cmdline") or return 0;
-   my $text=<F>;
-   close (F);
-   if($text =~ m/$sess/)
-   {
-      return 1;
-   }
-   return 0;
+	my $pid=shift;
+	my $sess=shift;
+	my $sec=shift;
+	if ($sec < 30)
+	{
+		return 1;
+	}
+	open (F,"</proc/$pid/cmdline") or return 0;
+	my $text=<F>;
+	close (F);
+	if ($text =~ m/$sess/)
+	{
+		return 1;
+	}
+	return 0;
 }
 
 sub check_stat
 {
-   my $sess=shift;
-   my $user=shift;
-   my $log="~$user/.x2go/C-$sess/session.log";
-   my $text=`tail -1 $log`;
-   if($text =~ m/Session suspended/)
-   {
-       return 0;
-   }
-   return 1;
+	my $sess=shift;
+	my $user=shift;
+	my $log="~$user/.x2go/C-$sess/session.log";
+	my $text=`tail -1 $log`;
+	if ($text =~ m/Session suspended/)
+	{
+		return 0;
+	}
+		return 1;
 }
 
-
 sub catch_term
 {
-   unlink("/var/run/x2goserver.pid");
-   exit;
+	unlink("/var/run/x2goserver.pid");
+	exit;
 }
 
 my $uname;
@@ -68,59 +67,56 @@ my $serv = hostname;
 my $pid = fork();
 if (not defined $pid) 
 {
-  print "resources not avilable.\n";
+	print "resources not avilable.\n";
 } 
 elsif ($pid != 0) 
 {
-    open (F,">/var/run/x2goserver.pid");
-    print F "$pid\n";
-    close(F);
+	open (F,">/var/run/x2goserver.pid");
+	print F "$pid\n";
+	close(F);
 }
 elsif ($pid == 0 )
 {
+	close(STDIN);
+	close(STDOUT);
+	close(STDERR);
 
- close(STDIN);
- close(STDOUT);
- close(STDERR);
- 
- $SIG{TERM}=\&catch_term;
- 
- while(sleep 5)
- {
-  $serv=`hostname`;
-  my $outp=`x2golistsessions_sql $serv 2>/dev/null`;
-
-  my @outp=split("\n","$outp");
+	$SIG{TERM}=\&catch_term;
 
-  for(my $i=0;$i<@outp;$i++)
-  {
-     my @sinfo=split('\\|',"@outp[$i]");
-     if(@sinfo[4]eq 'F')
-     {
-	 #print "@sinfo[1], is blocked\n";
-	 #print "(@sinfo[1])Unmounting all shares\n";	        
-	 system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
-     }       
-     elsif(! check_pid (@sinfo[0], at sinfo[1], at sinfo[12]))
-     {
-         system("su @sinfo[11] -c \"x2gochangestatus 'F' @sinfo[1] \" > /dev/null");
-	 #print "@sinfo[1], pid @sinfo[0] not exist, changing status from @sinfo[4] to F\n";
-	 #print "(@sinfo[1])Unmounting all shares\n";	 
-	 system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
-     }
-     else
-     { 
-       if(@sinfo[4]eq 'R')
-       {
-           if(!check_stat(@sinfo[1], at sinfo[11]))
-	   {
-               system("su @sinfo[11] -c  \"x2gochangestatus 'S' @sinfo[1] \" > /dev/null");
-	       #print "@sinfo[1], is suspended, changing status from @sinfo[4] to S\n";
-	       #print "(@sinfo[1])Unmounting all shares\n";	        
-	       system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
-           }
-       }       
-     }
-  }
- }
-}
\ No newline at end of file
+	while(sleep 5)
+	{
+		$serv=`hostname`;
+		my $outp=`x2golistsessions_sql $serv 2>/dev/null`;
+		my @outp=split("\n","$outp");
+		for (my $i=0;$i<@outp;$i++)
+		{
+			my @sinfo=split('\\|',"@outp[$i]");
+			if (@sinfo[4]eq 'F')
+			{
+				#print "@sinfo[1], is blocked\n";
+				#print "(@sinfo[1])Unmounting all shares\n";	        
+				system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
+			}
+			elsif (! check_pid (@sinfo[0], at sinfo[1], at sinfo[12]))
+			{
+				system("su @sinfo[11] -c \"x2gochangestatus 'F' @sinfo[1] \" > /dev/null");
+				#print "@sinfo[1], pid @sinfo[0] not exist, changing status from @sinfo[4] to F\n";
+				#print "(@sinfo[1])Unmounting all shares\n";	 
+				system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
+			}
+			else
+			{ 
+				if (@sinfo[4]eq 'R')
+				{
+					if (!check_stat(@sinfo[1], at sinfo[11]))
+					{
+						system("su @sinfo[11] -c  \"x2gochangestatus 'S' @sinfo[1] \" > /dev/null");
+						#print "@sinfo[1], is suspended, changing status from @sinfo[4] to S\n";
+						#print "(@sinfo[1])Unmounting all shares\n";	        
+						system( "su @sinfo[11] -c \"export HOSTNAME && x2goumount-session @sinfo[1]\" 2> /dev/null");
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/x2goserver/sbin/x2godbadmin b/x2goserver/sbin/x2godbadmin
index 35dd8ed..b03e6aa 100755
--- a/x2goserver/sbin/x2godbadmin
+++ b/x2goserver/sbin/x2godbadmin
@@ -24,16 +24,15 @@ use strict;
 
 use Getopt::Long;
 use Config::Simple;   
-use DBI;                                                                                                                                       
-                                                       
-                                                                                                   
+use DBI;
+
 sub show_usage()
 {
-      print "X2Go SQL admin interface. Use it to create x2go database and insert or remove users or groups in x2go database\n".
-            "Usage:\nx2godbadmin --createdb\n".
-            "x2godbadmin --listusers\n".
-            "x2godbadmin --adduser|rmuser <UNIX user>\n".
-            "x2godbadmin --addgroup|rmgroup <UNIX group>\n";
+	print "X2Go SQL admin interface. Use it to create x2go database and insert or remove users or groups in x2go database\n".
+	      "Usage:\nx2godbadmin --createdb\n".
+	      "x2godbadmin --listusers\n".
+	      "x2godbadmin --adduser|rmuser <UNIX user>\n".
+	      "x2godbadmin --addgroup|rmgroup <UNIX group>\n";
 }
 
 my $help='';
@@ -49,449 +48,490 @@ GetOptions('listusers' => \$listusers, 'createdb' => \$createdb, 'help' => \$hel
 
 if ($help  || ! ( $createdb || $adduser || $rmuser || $addgroup || $rmgroup || $listusers))
 {
-      show_usage();
-      exit(0);
+	show_usage();
+	exit(0);
 }
 
-
 my $Config = new Config::Simple(syntax=>'ini');
 $Config->read('/etc/x2go/x2gosql/sql' ) or die "Can't read config file /etc/x2go/x2gosql/sql";
-if($Config->param("backend") eq 'sqlite')
+
+if ($Config->param("backend") eq 'sqlite')
+{
+my $user="x2gouser";
+	my  ($name, $pass, $uid, $pgid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($user);
+	my $dbfile="$dir/x2go_sessions";
+
+	if (! $uid)
+	{
+		print "Can not find user ($user)\n";
+		exit(-1);
+	}
+
+	if ($listusers|| $adduser||$addgroup||$rmuser||$rmgroup)
+	{
+		print "Only \"--createdb\" option is available with sqlite backend\n";
+		exit(0);
+	}
+	if ($createdb)
+	{
+		if (! -d "$dir" )
+		{
+			mkdir("$dir");
+		}
+		if ( -e $dbfile)
+		{
+			unlink($dbfile);
+		}
+		my $dbh=DBI->connect("dbi:SQLite:dbname=$dbfile","","",{AutoCommit => 1}) or die $_;
+
+		my $sth=$dbh->prepare("
+		                      create table sessions(
+		                      session_id varchar(500) primary key,
+		                      display integer not null,
+		                      uname varchar(100) not null,
+		                      server varchar(100) not null,
+		                      client inet,
+		                      status char(1) not null default 'R',
+		                      init_time timestamp not null default CURRENT_TIMESTAMP,
+		                      last_time timestamp not null default CURRENT_TIMESTAMP,
+		                      cookie char(33),
+		                      agent_pid int,
+		                      gr_port int,
+		                      sound_port int,
+		                      fs_port int,
+		                      unique(display))
+		                      ");
+		$sth->execute() or die;
+
+		my $sth=$dbh->prepare("
+		                      create table messages(mess_id varchar(20) primary key, message text)
+		                      ");
+		$sth->execute() or die;
+
+		my $sth=$dbh->prepare("
+		                      create table user_messages(
+		                      mess_id varchar(20) not null,
+		                      uname varchar(100) not null)
+		                      ");
+		$sth->execute() or die;
+
+		my $sth=$dbh->prepare("
+		                      create table used_ports(
+		                      server varchar(100) not null,
+		                      session_id varchar(500) references sessions on delete cascade,
+		                      port integer primary key)
+		                      ");
+		$sth->execute() or die;
+
+		my $sth=$dbh->prepare("
+		                      create table mounts(
+		                      session_id varchar(500) references sessions on delete restrict,
+		                      path varchar(512) not null,
+		                      client inet not null,
+		                      primary key(path,client))
+		                      ");
+		$sth->execute() or die;
+
+		my $sth=$dbh->prepare("
+		                      CREATE TRIGGER fkd_mounts_session_id
+		                      BEFORE DELETE ON sessions
+		                      FOR EACH ROW BEGIN
+		                      SELECT CASE
+		                      WHEN ((SELECT session_id FROM mounts WHERE session_id = OLD.session_id) IS NOT NULL)
+		                      THEN RAISE(ABORT, 'delete on table \"sessions\" violates foreign key on table \"mounts\"')
+		                      END;
+		                      END;
+		                      ");
+		$sth->execute() or die; 
+
+		my $sth=$dbh->prepare("
+		                      CREATE TRIGGER fkd_ports_session_id
+		                      BEFORE DELETE ON sessions
+		                      FOR EACH ROW 
+		                      BEGIN
+		                      DELETE  FROM used_ports WHERE session_id = OLD.session_id;
+		                      END;
+		                      END;
+		                      ");
+		$sth->execute() or die; 
+
+		$sth->finish();
+		$dbh->disconnect();
+		chmod(0770, "$dir");
+		chown('root',$pgid,"$dir");
+		chmod(0660, "$dbfile");
+		chown('root',$pgid,"$dbfile");
+
+		exit(0);
+	}
+}
+
+my $host=$Config->param("postgres.host");
+my $port=$Config->param("postgres.port");
+my $sslmode=$Config->param("postgres.ssl");
+if (!$sslmode)
+{
+	$sslmode="prefer";
+}
+my $dbadmin=$Config->param("postgres.dbadmin");
+my $x2goadmin="x2godbuser";
+my $x2goadminpass=`makepasswd`;
+chomp ($x2goadminpass);
+my $db="x2go_sessions";
+
+if (!$host)
+{
+	$host='localhost';
+}
+if (!$port)
+{
+	$port='5432';
+}
+if (!$dbadmin)
+{
+	$dbadmin='postgres';
+}
+
+open (FL,"< /etc/x2go/x2gosql/passwords/pgadmin ") or die "Can't read password file /etc/x2go/x2gosql/passwords/pgadmin";
+my $dbadminpass=<FL>;
+close(FL);
+chomp($dbadminpass);
+
+my $dbh;
+if ($createdb)
 {
-      my $user="x2gouser";
-      my  ($name, $pass, $uid, $pgid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($user);
-      my $dbfile="$dir/x2go_sessions";
-      
-      if(! $uid)
-      {	
-	print "Can not find user ($user)\n";
-	exit(-1);
-      }
-
-    
-    
-    if($listusers|| $adduser||$addgroup||$rmuser||$rmgroup)
-    {
-      print "Only \"--createdb\" option is available with sqlite backend\n";
-      exit(0);
-    }
-    if($createdb)
-    {
-	  if (! -d "$dir" )
-	  {
-		mkdir("$dir");
-	  }
-          if( -e $dbfile)
-	  {
-	    unlink($dbfile);
-	  }
-	  my $dbh=DBI->connect(
-	  "dbi:SQLite:dbname=$dbfile","","",{AutoCommit => 1}) or die $_;
-
-	  my $sth=$dbh->prepare("create table sessions(
-				  session_id varchar(500) primary key,
-				  display integer not null,
-				  uname varchar(100) not null,
-				  server varchar(100) not null,
-				  client inet,
-				  status char(1) not null default 'R',
-				  init_time timestamp not null default CURRENT_TIMESTAMP,
-				  last_time timestamp not null default CURRENT_TIMESTAMP,
-				  cookie char(33),
-				  agent_pid int,
-				  gr_port int,
-				  sound_port int,
-				  fs_port int,
-				  unique(display))");
-          $sth->execute() or die;
-	  
-          my $sth=$dbh->prepare("create table messages(mess_id varchar(20) primary key, message text)");
-          $sth->execute() or die;
-	  
-          my $sth=$dbh->prepare("create table user_messages(
-                mess_id varchar(20) not null,
-                uname varchar(100) not null)");
-          $sth->execute() or die;
-	  
-          my $sth=$dbh->prepare("create table used_ports(
-                server varchar(100) not null,
-                session_id varchar(500) references sessions on delete cascade,
-                port integer primary key)");
-          $sth->execute() or die;
-	  
-          my $sth=$dbh->prepare("create table mounts(
-                session_id varchar(500) references sessions on delete restrict,
-                path varchar(512) not null,
-                client inet not null,
-                primary key(path,client))");
-          $sth->execute() or die;
-	  
-          my $sth=$dbh->prepare("CREATE TRIGGER fkd_mounts_session_id
-				  BEFORE DELETE ON sessions
-				  FOR EACH ROW BEGIN
-				    SELECT CASE
-				      WHEN ((SELECT session_id FROM mounts WHERE session_id = OLD.session_id) IS NOT NULL)
-				      THEN RAISE(ABORT, 'delete on table \"sessions\" violates foreign key on table \"mounts\"')
-				    END;
-				  END;");
-          $sth->execute() or die; 
-	  
-          my $sth=$dbh->prepare("CREATE TRIGGER fkd_ports_session_id
-				  BEFORE DELETE ON sessions
-				  FOR EACH ROW 
-                                    BEGIN
-				       DELETE  FROM used_ports WHERE session_id = OLD.session_id;
-				    END;
-				  END;");
-          $sth->execute() or die; 
-	  
-	  $sth->finish();	  
-	  $dbh->disconnect();
-	  chmod(0770, "$dir");
-	  chown('root',$pgid,"$dir");
-	  chmod(0660, "$dbfile");
-	  chown('root',$pgid,"$dbfile");
-
-	  exit(0);
-    }
+	$dbh=DBI->connect("dbi:Pg:dbname=postgres;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
+	create_database();
+	$dbh->disconnect();
+	$dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
+	create_tables();
+	$dbh->disconnect();
+	exit(0);
 }
 
-    my $host=$Config->param("postgres.host");
-    my $port=$Config->param("postgres.port");
-    my $sslmode=$Config->param("postgres.ssl");
-    if(!$sslmode)
-    {
-         $sslmode="prefer";
-    }
-    my $dbadmin=$Config->param("postgres.dbadmin");
-    my $x2goadmin="x2godbuser";
-    my $x2goadminpass=`makepasswd`;
-    chomp($x2goadminpass);
-    my $db="x2go_sessions";
-
-    if(!$host)
-    {
-      $host='localhost';
-    }
-    if(!$port)
-    {
-      $port='5432';
-    }
-    if(!$dbadmin)
-    {
-      $dbadmin='postgres';
-    }
-
-    open (FL,"< /etc/x2go/x2gosql/passwords/pgadmin ") or die "Can't read password file /etc/x2go/x2gosql/passwords/pgadmin";
-    my $dbadminpass=<FL>;
-    close(FL);
-    chomp($dbadminpass);
-
-    my $dbh;
-    if($createdb)
-    {
-	  $dbh=DBI->connect("dbi:Pg:dbname=postgres;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
-	  create_database();
-	  $dbh->disconnect();
-	  $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
-	  create_tables();
-	  $dbh->disconnect();      
-	  exit(0);
-    }
-
-    if($listusers)
-    {
-	  $dbh=DBI->connect("dbi:Pg:dbname=postgres;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
-	  list_users();
-	  $dbh->disconnect();
-	  exit(0);
-    }
-
-    $dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
-    if($adduser)
-    {
+if ($listusers)
+{
+	$dbh=DBI->connect("dbi:Pg:dbname=postgres;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
+	list_users();
+	$dbh->disconnect();
+	exit(0);
+}
+
+$dbh=DBI->connect("dbi:Pg:dbname=$db;host=$host;port=$port;sslmode=$sslmode", "$dbadmin", "$dbadminpass",{AutoCommit => 1}) or die $_;
+if ($adduser)
+{
 	add_user($adduser);
-    }
-
-    if($addgroup)
-    {
-      my ($name, $passwd, $gid, $members)  = getgrnam( $addgroup); 
-      my @grp_members=split(' ',$members);
-      foreach (@grp_members)
-      {
-	chomp($_);
-	add_user($_);
-      }
-    }
-
-    if($rmuser)
-    {
-      rm_user($rmuser);
-    }
-
-    if($rmgroup)
-    {
-      my ($name, $passwd, $gid, $members)  = getgrnam( $rmgroup); 
-      my @grp_members=split(' ',$members);
-      foreach (@grp_members)
-      {
-	chomp($_);
-	rm_user($_);
-      }
-    }
-    $dbh->disconnect();      
+}
+
+if ($addgroup)
+{
+	my ($name, $passwd, $gid, $members)  = getgrnam( $addgroup); 
+	my @grp_members=split(' ',$members);
+	foreach (@grp_members)
+	{
+		chomp($_);
+		add_user($_);
+	}
+}
+
+if ($rmuser)
+{
+	rm_user($rmuser);
+}
+
+if ($rmgroup)
+{
+	my ($name, $passwd, $gid, $members)  = getgrnam( $rmgroup); 
+	my @grp_members=split(' ',$members);
+	foreach (@grp_members)
+	{
+		chomp($_);
+		rm_user($_);
+	}
+}
+$dbh->disconnect();
 
 sub list_users()
 {
-      my $sth=$dbh->prepare("select rolname from pg_roles where rolname like 'x2gouser_%'");
-      $sth->execute()or die;
-      printf ("%-20s DB user\n","UNIX user");
-      print "---------------------------------------\n";
-      my @data;
-      while (@data = $sth->fetchrow_array) 
-      {
-	  @data[0]=~s/x2gouser_//;
-          printf ("%-20s x2gouser_ at data[0]\n", at data[0]);
-      }
-      $sth->finish();
+	my $sth=$dbh->prepare("select rolname from pg_roles where rolname like 'x2gouser_%'");
+	$sth->execute()or die;
+	printf ("%-20s DB user\n","UNIX user");
+	print "---------------------------------------\n";
+	my @data;
+	while (@data = $sth->fetchrow_array) 
+	{
+		@data[0]=~s/x2gouser_//;
+		printf ("%-20s x2gouser_ at data[0]\n", at data[0]);
+	}
+	$sth->finish();
 }
 
 sub rm_user()
 {
-      my $user=shift;
-      
-      print ("rm DB user x2gouser_$user\n"); 
-      
-      my $sth=$dbh->prepare("DROP OWNED BY x2gouser_$user");
-      $sth->execute();      
-      
-      my $sth=$dbh->prepare("drop USER if exists x2gouser_$user");
-      $sth->execute();
-      $sth->finish();
-
-      my ($name, $pass, $uid, $pgid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($user);
-      if(! $uid)
-      {	
-	return;
-      }
-      if ( -e "$dir/.x2go/sqlpass" )
-      {
-	unlink("$dir/.x2go/sqlpass");
-      }
+	my $user=shift;
+
+	print ("rm DB user x2gouser_$user\n"); 
+
+	my $sth=$dbh->prepare("DROP OWNED BY x2gouser_$user");
+	$sth->execute();      
+
+	my $sth=$dbh->prepare("drop USER if exists x2gouser_$user");
+	$sth->execute();
+	$sth->finish();
+
+	my ($name, $pass, $uid, $pgid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($user);
+	if (! $uid)
+	{
+		return;
+	}
+	if ( -e "$dir/.x2go/sqlpass" )
+	{
+		unlink("$dir/.x2go/sqlpass");
+	}
 }
 
-
 sub add_user()
 {
-      my $user=shift;
-      my ($name, $pass, $uid, $pgid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($user);
-      if(! $uid)
-      {	
-	print "Can not find user ($user)\n";
-	return;
-      }
-      $pass=`makepasswd`;
-      chomp($pass);
-      
-      my $sth=$dbh->prepare("DROP OWNED BY x2gouser_$user");
-      $sth->{Warn}=0;
-      $sth->{PrintError}=0;          
-      $sth->execute();      
-      
-      $sth=$dbh->prepare("drop USER if exists x2gouser_$user");
-      $sth->{Warn}=0;
-      $sth->{PrintError}=0;          
-      $sth->execute();
-
-      print ("create DB user x2gouser_$user\n"); 
-      $sth=$dbh->prepare("create USER x2gouser_$user WITH ENCRYPTED PASSWORD '$pass'");
-      $sth->execute();
-
-      $sth=$dbh->prepare("GRANT INSERT, UPDATE, DELETE ON sessions, used_ports, mounts TO x2gouser_$user");
-      $sth->execute();
-  
-      $sth=$dbh->prepare("GRANT SELECT, UPDATE, DELETE ON sessions_view, mounts_view, servers_view, ports_view TO x2gouser_$user");
-      $sth->execute();
-      $sth->finish();
-
-      if (! -d "$dir/.x2go" )
-      {
-	mkdir("$dir/.x2go");
-      }
-      #save user password
-      open (FL,"> $dir/.x2go/sqlpass") or die "Can't open password file $dir/.x2go/sqlpass";
-      print FL $pass;
-      close(FL);
-      chmod(0700,"$dir/.x2go");
-      chown($uid,$pgid,"$dir/.x2go");
-      chmod(0600,"$dir/.x2go/sqlpass");
-      chown($uid,$pgid,"$dir/.x2go/sqlpass");
+	my $user=shift;
+	my ($name, $pass, $uid, $pgid, $quota, $comment, $gcos, $dir, $shell, $expire) = getpwnam($user);
+	if (! $uid)
+	{
+		print "Can not find user ($user)\n";
+		return;
+	}
+	$pass=`makepasswd`;
+	chomp($pass);
+
+	my $sth=$dbh->prepare("DROP OWNED BY x2gouser_$user");
+	$sth->{Warn}=0;
+	$sth->{PrintError}=0;
+	$sth->execute();
+
+	$sth=$dbh->prepare("drop USER if exists x2gouser_$user");
+	$sth->{Warn}=0;
+	$sth->{PrintError}=0;
+	$sth->execute();
+
+	print ("create DB user x2gouser_$user\n"); 
+	$sth=$dbh->prepare("create USER x2gouser_$user WITH ENCRYPTED PASSWORD '$pass'");
+	$sth->execute();
+
+	$sth=$dbh->prepare("GRANT INSERT, UPDATE, DELETE ON sessions, used_ports, mounts TO x2gouser_$user");
+	$sth->execute();
+
+	$sth=$dbh->prepare("GRANT SELECT, UPDATE, DELETE ON sessions_view, mounts_view, servers_view, ports_view TO x2gouser_$user");
+	$sth->execute();
+	$sth->finish();
+
+	if (! -d "$dir/.x2go" )
+	{
+		mkdir("$dir/.x2go");
+	}
+
+	#save user password
+	open (FL,"> $dir/.x2go/sqlpass") or die "Can't open password file $dir/.x2go/sqlpass";
+	print FL $pass;
+	close(FL);
+	chmod(0700,"$dir/.x2go");
+	chown($uid,$pgid,"$dir/.x2go");
+	chmod(0600,"$dir/.x2go/sqlpass");
+	chown($uid,$pgid,"$dir/.x2go/sqlpass");
 }
 
 sub create_tables()
 {
-          my $sth=$dbh->prepare("
-                create table sessions(
-                session_id text primary key,
-                display integer not null,
-                uname text not null,
-                server text not null,
-                client inet,
-                status char(1) not null default 'R',
-                init_time timestamp not null default now(),
-                last_time timestamp not null default now(),
-                cookie char(33),
-                agent_pid int,
-                gr_port int,
-                sound_port int,
-                fs_port int,
-                creator_id text NOT NULL default current_user,
-                unique(display))
-                ");
-          $sth->execute() or die;
-	  
-	  $sth=$dbh->prepare("
-                create VIEW sessions_view as 
-                SELECT 
-                agent_pid, session_id, display, server, status, init_time, cookie, client, gr_port,
-				     sound_port, last_time, uname, fs_port from  sessions 
-				     where creator_id = current_user");
-          $sth->execute() or die;
-	  
-	  $sth=$dbh->prepare("
-                create VIEW servers_view as 
-                SELECT 
-                server, display, status from  sessions");
-          $sth->execute() or die;
-	  
-	  
-          
-          $sth=$dbh->prepare("create or replace RULE update_sess_priv AS ON UPDATE
-                TO sessions where (OLD.creator_id <> current_user or OLD.creator_id <> NEW.creator_id) and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-          
-          $sth=$dbh->prepare("create or replace RULE insert_sess_priv AS ON INSERT
-                TO sessions where NEW.creator_id <> current_user and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-	  
-          $sth=$dbh->prepare("create or replace RULE delete_sess_priv AS ON DELETE
-                TO sessions where OLD.creator_id <> current_user and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-	  
-          $sth=$dbh->prepare("create or replace RULE update_sess_view AS ON UPDATE
-                TO sessions_view DO INSTEAD 
-                update sessions set 
-                status=NEW.status,
-		last_time=NEW.last_time,
-		cookie=NEW.cookie,
-		agent_pid=NEW.agent_pid,
-		client=NEW.client,
-		gr_port=NEW.gr_port,
-		sound_port=NEW.sound_port,
-		fs_port=NEW.fs_port
-	        where session_id=OLD.session_id and creator_id=current_user");
-          $sth->execute() or die;	  
-
-          $sth=$dbh->prepare("create table messages(mess_id varchar(20) primary key, message text)");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare("create table user_messages(
-                mess_id text not null,
-                uname text not null)");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare("create table used_ports(
-                server text not null,
-                session_id text references sessions on delete cascade,
-                creator_id text NOT NULL default current_user,
-                port integer primary key)");
-          $sth->execute() or die;
-	  
-	  $sth=$dbh->prepare("
-                create VIEW ports_view as 
-                SELECT 
-                server, port from used_ports");
-          $sth->execute() or die;
-	  
-
-          $sth=$dbh->prepare("create or replace RULE insert_port_priv AS ON INSERT
-                TO used_ports where NEW.creator_id <> current_user and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare("create or replace RULE update_port_priv AS ON UPDATE
-                TO used_ports where (NEW.creator_id <> current_user or OLD.creator_id <> current_user) and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare("create or replace RULE delete_port_priv AS ON DELETE
-                TO used_ports where OLD.creator_id <> current_user and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING ");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare("create table mounts(
-                session_id text references sessions on delete restrict,
-                path text not null,
-                client inet not null,
-                creator_id text NOT NULL default current_user,
-                primary key(path,client))");
-          $sth->execute() or die;
-
-	  
-  	  $sth=$dbh->prepare("
-                create VIEW mounts_view as 
-                SELECT 
-                client,path, session_id from mounts
-				     where creator_id = current_user");
-          $sth->execute() or die;
-	  
-          $sth=$dbh->prepare("create or replace RULE delete_mounts_view AS ON DELETE
-                TO mounts_view DO INSTEAD 
-                delete from mounts
-	        where session_id=OLD.session_id and creator_id=current_user and path=OLD.path");
-          $sth->execute() or die;	  
-	  	  
-	  
-          $sth=$dbh->prepare("create or replace RULE insert_mount_priv AS ON INSERT
-                TO mounts where NEW.creator_id <> current_user and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare(" create or replace RULE update_mount_priv AS ON UPDATE
-                TO mounts where (NEW.creator_id <> current_user or OLD.creator_id <> current_user) and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare(" create or replace RULE delete_mount_priv AS ON DELETE
-                TO mounts where OLD.creator_id <> current_user and current_user <> '$x2goadmin'
-                DO INSTEAD NOTHING");
-          $sth->execute() or die;
-
-          $sth=$dbh->prepare("GRANT ALL PRIVILEGES ON sessions, messages, user_messages, used_ports, mounts TO $x2goadmin");
-          $sth->execute() or die;
-	  $sth->finish();
+	my $sth=$dbh->prepare("
+	                      create table sessions(
+	                      session_id text primary key,
+	                      display integer not null,
+	                      uname text not null,
+	                      server text not null,
+	                      client inet,
+	                      status char(1) not null default 'R',
+	                      init_time timestamp not null default now(),
+	                      last_time timestamp not null default now(),
+	                      cookie char(33),
+	                      agent_pid int,
+	                      gr_port int,
+	                      sound_port int,
+	                      fs_port int,
+	                      creator_id text NOT NULL default current_user,
+	                      unique(display))
+	                      ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create VIEW sessions_view as 
+	                   SELECT 
+	                   agent_pid, session_id, display, server, status, init_time, cookie, client, gr_port,
+	                   sound_port, last_time, uname, fs_port from  sessions 
+	                   where creator_id = current_user
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create VIEW servers_view as 
+	                   SELECT 
+	                   server, display, status from  sessions
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE update_sess_priv AS ON UPDATE
+	                   TO sessions where (OLD.creator_id <> current_user or OLD.creator_id <> NEW.creator_id) and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE insert_sess_priv AS ON INSERT
+	                   TO sessions where NEW.creator_id <> current_user and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE delete_sess_priv AS ON DELETE
+	                   TO sessions where OLD.creator_id <> current_user and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE update_sess_view AS ON UPDATE
+	                   TO sessions_view DO INSTEAD 
+	                   update sessions set 
+	                   status=NEW.status,
+	                   last_time=NEW.last_time,
+	                   cookie=NEW.cookie,
+	                   agent_pid=NEW.agent_pid,
+	                   client=NEW.client,
+	                   gr_port=NEW.gr_port,
+	                   sound_port=NEW.sound_port,
+	                   fs_port=NEW.fs_port
+	                   where session_id=OLD.session_id and creator_id=current_user
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create table messages(mess_id varchar(20) primary key, message text)
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create table user_messages(
+	                   mess_id text not null,
+	                   uname text not null)
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create table used_ports(
+	                   server text not null,
+	                   session_id text references sessions on delete cascade,
+	                   creator_id text NOT NULL default current_user,
+	                   port integer primary key)
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create VIEW ports_view as 
+	                   SELECT
+	                   server, port from used_ports
+	                   ");
+	$sth->execute() or die;
+
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE insert_port_priv AS ON INSERT
+	                   TO used_ports where NEW.creator_id <> current_user and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE update_port_priv AS ON UPDATE
+	                   TO used_ports where (NEW.creator_id <> current_user or OLD.creator_id <> current_user) and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE delete_port_priv AS ON DELETE
+	                   TO used_ports where OLD.creator_id <> current_user and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create table mounts(
+	                   session_id text references sessions on delete restrict,
+	                   path text not null,
+	                   client inet not null,
+	                   creator_id text NOT NULL default current_user,
+	                   primary key(path,client))
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create VIEW mounts_view as 
+	                   SELECT
+	                   client,path, session_id from mounts
+	                   where creator_id = current_user
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE delete_mounts_view AS ON DELETE
+	                   TO mounts_view DO INSTEAD 
+	                   delete from mounts
+	                   where session_id=OLD.session_id and creator_id=current_user and path=OLD.path
+	                   ");
+	$sth->execute() or die;	  
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE insert_mount_priv AS ON INSERT
+	                   TO mounts where NEW.creator_id <> current_user and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE update_mount_priv AS ON UPDATE
+	                   TO mounts where (NEW.creator_id <> current_user or OLD.creator_id <> current_user) and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("
+	                   create or replace RULE delete_mount_priv AS ON DELETE
+	                   TO mounts where OLD.creator_id <> current_user and current_user <> '$x2goadmin'
+	                   DO INSTEAD NOTHING
+	                   ");
+	$sth->execute() or die;
+
+	$sth=$dbh->prepare("GRANT ALL PRIVILEGES ON sessions, messages, user_messages, used_ports, mounts TO $x2goadmin");
+	$sth->execute() or die;
+	$sth->finish();
 }
 
 sub create_database
 {
-         #drop db if exists
-         my $sth=$dbh->prepare("drop database if exists x2go_sessions");
-         $sth->execute();
-         #drop x2goadmin
-         $sth=$dbh->prepare("drop user if exists $x2goadmin");
-         $sth->execute();
-         #create db
-         $sth=$dbh->prepare("create database $db");
-         $sth->execute() or die;
-         #create x2goadmin
-         $sth=$dbh->prepare("create USER $x2goadmin WITH ENCRYPTED PASSWORD '$x2goadminpass'");
-         $sth->execute() or die;
-         #save x2goadmin password
-         open (FL,"> /etc/x2go/x2gosql/passwords/x2goadmin ") or die "Can't write password file /etc/x2go/x2gosql/passwords/x2goadmin";
-         print FL $x2goadminpass;
-         close(FL);       
-	 $sth->finish();
-}
\ No newline at end of file
+	#drop db if exists
+	my $sth=$dbh->prepare("drop database if exists x2go_sessions");
+	$sth->execute();
+	#drop x2goadmin
+	$sth=$dbh->prepare("drop user if exists $x2goadmin");
+	$sth->execute();
+	#create db
+	$sth=$dbh->prepare("create database $db");
+	$sth->execute() or die;
+	#create x2goadmin
+	$sth=$dbh->prepare("create USER $x2goadmin WITH ENCRYPTED PASSWORD '$x2goadminpass'");
+	$sth->execute() or die;
+	#save x2goadmin password
+	open (FL,"> /etc/x2go/x2gosql/passwords/x2goadmin ") or die "Can't write password file /etc/x2go/x2gosql/passwords/x2goadmin";
+	print FL $x2goadminpass;
+	close(FL);
+	$sth->finish();
+}


hooks/post-receive
-- 
x2goserver.git (X2Go Server)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2goserver.git" (X2Go Server).




More information about the x2go-commits mailing list