ACC SHELL

Path : /usr/share/YaST2/modules/
File Upload :
Current File : //usr/share/YaST2/modules/SambaTrustDom.pm

# File:		modules/SambaTrustDom.pm
# Package:	Configuration of samba-server
# Authors:	Stanislav Visnovsky <visnov@suse.cz>
#		Martin Lazar <mlazar@suse.cz>
#
# $Id: SambaTrustDom.pm 34151 2006-11-08 10:18:06Z locilka $
#
# Representation of the configuration of samba-server.
# Input and output routines.


package SambaTrustDom;

use strict;
use Switch 'Perl6';
use Data::Dumper;

use YaST::YCP qw(:DATA :LOGGING);
use YaPI;

textdomain "samba-server";
our %TYPEINFO;


BEGIN {
YaST::YCP::Import("SCR");
YaST::YCP::Import("SambaConfig");
YaST::YCP::Import("SambaSecrets");
}

our $ToEstablish;
our $ToRevoke;

BEGIN{$TYPEINFO{GetModified}=["function","boolean"]}
sub GetModified {
    my $self = $_;
    return $ToEstablish || $ToRevoke ? 1 : undef;
}

BEGIN{$TYPEINFO{Write}=["function","boolean"]}
sub Write {
    my $self = shift;
    my $ret = 1;
    if ($ToRevoke) {
	foreach(keys %$ToRevoke) {
	    $ret = 0 if $self->Revoke($_);
	}
	$ToRevoke = undef;
    }
    if ($ToEstablish) {
	while (my ($dom, $passwd) = each %$ToEstablish) {
	    $ret = 0 if $self->Establish($dom, $passwd);
	}
	$ToEstablish = undef;
    }
    return $ret;
}

BEGIN{$TYPEINFO{Export}=["function","any"]}
sub Export {
    return { revoke => $ToRevoke, establish => $ToEstablish };
}

BEGIN{$TYPEINFO{Import}=["function","void","any"]}
sub Import {
    my ($self, $map) = @_;
    $ToEstablish = $map->{establish};
    $ToRevoke = $map->{revoke};
}

BEGIN{$TYPEINFO{Revoke}=["function","boolean","string"]}
sub Revoke {
    my ($self, $domain) = @_;
    return undef unless defined $domain;

    my $cmd = "net rpc trustdom revoke '$domain'";
    y2debug("$cmd");
    if (SCR->Execute(".target.bash", $cmd)) {
	y2error("Cannot revoke trusted domain relationship for '$domain'");
	return undef;
    }
    return 1;
}

# Establish a trust relationship to a trusting domain.
BEGIN{$TYPEINFO{Establish}=["function","boolean","string","string"]}
sub Establish {
    my ($self, $domain, $passwd) = @_;
    return undef unless defined $domain;

    # escape all quote-strings
    $passwd =~ s/\"/\\\"/g;
    
    my $cmd = 'net rpc trustdom establish "'.$domain.'" -U "root%'.$passwd.'"';
    y2milestone('Running command >net rpc trustdom establish "'.$domain.'" -U "root%$password"<');
    if (SCR->Execute(".target.bash", $cmd)) {
	y2error("Cannot establish trusted domain relationship for '$domain'");
	return undef;
    }
    
    return 1;
}

BEGIN{$TYPEINFO{List}=["function",["list","string"]]}
sub List {
    my ($self) = @_;
    return SambaSecrets->GetTrustedDomains();
}

8;

ACC SHELL 2018