#!/usr/bin/perl

use strict;
use warnings;
use perunServicesInit;
use perunServicesUtils;
use Text::Unidecode;

local $::SERVICE_NAME = "openvpn";
local $::PROTOCOL_VERSION = "3.0.0";
my $SCRIPT_VERSION = "3.0.1";

perunServicesInit::init;
my $DIRECTORY = perunServicesInit::getDirectory;
my $data = perunServicesInit::getHashedHierarchicalData;

#Constants
our $A_USER_CERT_DNS;   *A_USER_CERT_DNS =     \'urn:perun:user:attribute-def:virt:userCertDNs';

my $fileName = "$DIRECTORY/$::SERVICE_NAME";
open FILE,">$fileName" or die "Cannot open $fileName: $! \n";

my %membersDNs = ();
foreach my $resourceId ( $data->getResourceIds() ) {
	foreach my $memberId ($data->getMemberIdsForResource( resource => $resourceId )) {
		my $userCertDns = $data->getUserAttributeValue(member => $memberId, attrName => $A_USER_CERT_DNS );
		foreach my $subjectDN (keys %$userCertDns) {
			chomp $userCertDns->{$subjectDN};
			#remove prefix from subjectDN
			my $subjectDNWithoutPrefix = $subjectDN;
			$subjectDNWithoutPrefix =~ s/^[0-9]+[:]//;
			$membersDNs{$subjectDNWithoutPrefix} = 1;
		}
	}
}

foreach my $subjectDN (keys %membersDNs) {
	print FILE $subjectDN . "\n";
}

close (FILE);
perunServicesInit::finalize;
