Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.3
rubygem-webyast-mailsetting
MailSettings.pm
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File MailSettings.pm of Package rubygem-webyast-mailsetting
#-- # Copyright (c) 2009-2010 Novell, Inc. # # All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it # under the terms of version 2 of the GNU General Public License # as published by the Free Software Foundation. # # 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, contact Novell, Inc. # # To contact Novell about this file by physical or electronic mail, # you may find current contact information at www.novell.com #++ # A wrapper to call YaPI::MailServer # Used to get more understandable function names, policies, # and to prevent returning nil values which cannot get through dbus. package YaPI::MailSettings; use strict; use ycp; use YaPI; use Data::Dumper; our %TYPEINFO; YaST::YCP::Import ("FileUtils"); YaST::YCP::Import ("Mail"); YaST::YCP::Import ("Progress"); YaST::YCP::Import ("SCR"); # Read part of mail configuration: SMTP server and authentication details # Uses Mail.ycp API # returns hash with keys smtp_server, user, password, TLS BEGIN { $TYPEINFO{Read} =["function", ["map", "string", "any" ]]; } sub Read { my $progress_orig = Progress->set (0); Mail->Read (undef); Progress->set ($progress_orig); my $ex = Mail->Export (); my $smtp_auth = {}; $smtp_auth = $ex->{"smtp_auth"}[0] if defined $ex->{"smtp_auth"} && ref ($ex->{"smtp_auth"}) eq "ARRAY"; return { "smtp_server" => $ex->{"outgoing_mail_server"} || "", "user" => $smtp_auth->{"user"} || "", "password" => $smtp_auth->{"password"} || "", "TLS" => $ex->{"smtp_use_TLS"} || "no" } } # Writes simple mail configuration: SMTP server and authentication details # parameters: hash with keys smtp_server, user, password, TLS # returns error message BEGIN { $TYPEINFO{Write} =["function", "string", ["map", "string", "any" ]]; } sub Write { my $self = shift; my $settings = shift; my $ret = ""; my $smtp_server = $settings->{"smtp_server"} || ""; my @smtp_auth = (); if (($settings->{"user"} || "") ne "") { push @smtp_auth, { "server" => $smtp_server, "user" => $settings->{"user"} || "", "password" => $settings->{"password"} || "" }; } Mail->Import ({ "mta" => "postfix", "connection_type" => "permanent", "postfix_mda" => "local", "outgoing_mail_server" => $smtp_server, "smtp_auth" => \@smtp_auth, "smtp_use_TLS" => $settings->{"TLS"} || "no" }); Mail->WriteGeneral (); Mail->WriteSmtpAuth (); return "Error writing config file(s)." unless Mail->WriteFlush (); return "Error running SuSEconfig." unless Mail->WriteSuSEconfig (); return "Error restarting service(s)." unless Mail->WriteServices (); my $symlink = "/etc/sysconfig/network/if-up.d/postfix-update-hostname"; if ($smtp_server && !FileUtils->Exists ($symlink)) { # link to dhcpcd hook that should update mail domain (bnc#559145) y2milestone ("creating symlink '$symlink'"); SCR->Execute (".target.symlink", "/etc/sysconfig/network/scripts/postfix-update-hostname", $symlink); my $out = SCR->Execute (".target.bash_output", "ip r|grep default|cut -d' ' -f5"); my $name= $out->{"stdout"} || ""; if ($name) { chomp $name; y2milestone ("executing '$symlink $name -o dhcp'..."); SCR->Execute (".target.bash", "$symlink $name -o dhcp"); } } elsif (FileUtils->Exists ($symlink) && !$smtp_server) { y2milestone ("removing symlink '$symlink'"); SCR->Execute (".target.remove", $symlink); } return ""; } 1;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor