. * * @package LibreNMS * @link http://librenms.org * @copyright 2017 Tony Murray * @author Tony Murray */ namespace LibreNMS\Validations; use LibreNMS\Config; use LibreNMS\Interfaces\ValidationGroup; use LibreNMS\Validator; class Mail implements ValidationGroup { /** * Validate this module. * To return ValidationResults, call ok, warn, fail, or result methods on the $validator * * @param Validator $validator */ public function validate(Validator $validator) { if (Config::get('alert.transports.mail') === true) { $run_test = 1; if (!Config::has('alert.default_mail')) { $validator->fail('default_mail config option needs to be specified to test email'); $run_test = 0; } elseif (Config::get('email_backend') == 'sendmail') { if (Config::has('email_sendmail_path')) { $validator->fail("You have selected sendmail but not configured email_sendmail_path"); $run_test = 0; } elseif (!file_exists(Config::get('email_sendmail_path'))) { $validator->fail("The configured email_sendmail_path is not valid"); $run_test = 0; } } elseif (Config::get('email_backend') == 'smtp') { if (!Config::has('email_smtp_host')) { $validator->fail('You have selected SMTP but not configured an SMTP host'); $run_test = 0; } if (!Config::has('email_smtp_port')) { $validator->fail('You have selected SMTP but not configured an SMTP port'); $run_test = 0; } if (Config::get('email_smtp_auth') && (!Config::has('email_smtp_username') || !Config::has('email_smtp_password')) ) { $validator->fail('You have selected SMTP auth but have not configured both username and password'); $run_test = 0; } }//end if if ($run_test == 1) { $email = Config::get('alert.default_mail'); if ($err = send_mail($email, 'Test email', 'Testing email from NMS')) { $validator->ok('Email has been sent'); } else { $validator->fail("Issue sending email to $email with error $err"); } } }//end if } /** * Returns if this test should be run by default or not. * * @return bool */ public function isDefault() { return false; } }