#!/usr/bin/perl

# Copyright (C) 2007-2014 X2Go Project - http://wiki.x2go.org
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
#
# Copyright (C) 2007-2014 Oleksandr Shneyder <oleksandr.shneyder@obviously-nice.de>
# Copyright (C) 2007-2014 Heinz-Markus Graesing <heinz-m.graesing@obviously-nice.de>

use strict;
use Sys::Hostname;
use Sys::Syslog qw( :standard :macros );

use lib `x2gopath lib`;
use x2gologlevel;

openlog($0,'cons,pid','user');
setlogmask( LOG_UPTO(x2gologlevel()) );


if ( @ARGV ) {
	syslog('info', "x2golistdesktops has been called with options: @ARGV");
} else {
	syslog('info', "x2golistdesktops has been called without options");
}

my $serv=shift;
if( ! $serv)
{
	$serv=hostname;
}

my $rsess=`x2golistsessions x2goserver |grep _stR`;
my @rsess=split("\n","$rsess");
my @rdisplays;
for (my $i=0;$i<@rsess;$i++)
{
	my @sinfo=split("\\|",@rsess[$i]);
	@rdisplays[$i]=@sinfo[2];
}

my $rdisp=join("I",@rdisplays);
$rdisp="I${rdisp}I";

my $uname=$ENV{'USER'};
my $outp=`ls -1 /tmp/.X11-unix/`;
my @outp=split("\n","$outp");
for(my $i=0;$i<@outp;$i++)
{
	my $display=@outp[$i];
	$display=~s/X/:/;
	my $checkdisp=$display;
	$checkdisp=~s/:/I/;
	$checkdisp="${checkdisp}I";
	if (!( $rdisp =~ m/$checkdisp/ ))
	{
		my $inf=`xwininfo -root -display $display 2> /dev/null`;
		if ( $inf=~ m/geometry/)
		{
			print "$uname\@$display\n";
		}
	}
}

$outp=`ls -1 /tmp/ | grep x2godesktopsharing_`;
@outp=split("\n","$outp");

for(my $i=0;$i<@outp;$i++)
{
	my @ln=split("\@",@outp[$i]);
	if ( @ln[1] ne $uname )
	{
		print "@ln[1]\@@ln[2]\n";
	}
}

# closing syslog 
closelog;