This file is indexed.

/usr/share/awl/inc/EMail.php is in libawl-php 0.56-1ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
<?php
/**
* Lightweight class for sending an e-mail.
* @package awl
* @subpackage   EMail
* @author    Andrew McMillan <andrew@mcmillan.net.nz>
* @copyright Catalyst IT Ltd
* @license   http://gnu.org/copyleft/gpl.html GNU GPL v2 or later
*/

require_once("AWLUtilities.php");
/**
* Lightweight class for sending an e-mail.
* @package awl
*/
class EMail
{
  /**#@+
  * @access private
  */

  /**
  * A comma-separated list of addresses to send To
  * @var string
  */
  private $To;         // To:

  /**
  * The visible sender of the e-mail.
  * @var string
  */
  private $From;       // etc...

  /**
  * A comma-separated list of addresses to carbon-copy to
  * @var string
  */
  private $Cc;

  /**
  * A comma-separated list of addresses to blind carbon-copy to
  * @var string
  */
  private $Bcc;

  /**
  * A comma-separated list of addresses to set as the Errors-to: header
  * @var string
  */
  private $ErrorsTo;

  /**
  * A comma-separated list of addresses to set as the Reply-to: header
  * @var string
  */
  private $ReplyTo;

  /**
  * The address to set as the sender of the e-mail.
  * @var string
  */
  private $Sender;

  /**
  * The subject line of the email.
  * @var string
  */
  private $Subject;

  /**
  * The body of the email.
  * @var string
  */
  private $Body;
  /**#@-*/

  /**
  * Create the e-mail, optionally assigning the subject and primary recipient.
  * @param string $subject The subject line of the email.
  * @param string $to A comma-separated list of addresses for the primary recipient(s).
  */
  function __construct( $subject = "", $to = "" ) {
    // Initialise with some defaults
    $this->From    = "";
    $this->Subject = $subject;
    $this->To      = $to;
    $this->Cc      = "";
    $this->Bcc     = "";
    $this->ErrorsTo = "";
    $this->ReplyTo = "";
    $this->Sender  = "";
    $this->Body    = "";
  }

  /**
  * Append something with a comma delimter onto the existing referenced string
  * @param stringref &$onto The string we will be appending to.
  * @param string $extra What we will be appending
  * @return string The new string.
  */
  private function _AppendDelimited( &$onto, $extra ) {
    if ( !isset($extra) || $extra == "" ) return false;
    if ( $onto != "" ) $onto .= ", ";
    $onto .= $extra;
    return $onto;
  }

  /**
  * Add another recipient to the email
  * @param string $recipient The email address to append.
  * @return string The new recipient list.
  */
  function AddTo( $recipient ) {
    return $this->_AppendDelimited($this->To, $recipient);
  }

  /**
  * Get the current recipient list.
  * @return string The current recipient list.
  */
  function To() {
    return $this->To;
  }

  /**
  * Add another Cc recipient to the email
  * @param string $recipient The email address to append.
  * @return string The new Cc recipient list.
  */
  function AddCc( $recipient ) {
    return $this->_AppendDelimited($this->Cc, $recipient);
  }

  /**
  * Add another Bcc recipient to the email
  * @param string $recipient The email address to append.
  * @return string The new Bcc recipient list.
  */
  function AddBcc( $recipient ) {
    return $this->_AppendDelimited($this->Bcc, $recipient);
  }

  /**
  * Add another Reply-to address to the email
  * @param string $recipient The email address to append.
  * @return string The new Reply-to list.
  */
  function AddReplyTo( $recipient ) {
    return $this->_AppendDelimited($this->ReplyTo, $recipient);
  }

  /**
  * Add another Error recipient to the email
  * @param string $recipient The email address to append.
  * @return string The new Error recipient list.
  */
  function AddErrorsTo( $recipient ) {
    return $this->_AppendDelimited($this->ErrorsTo, $recipient);
  }


  /**
  * Set the visible From address for the e-mail.
  * @param string $recipient The visible From address
  * @return string The new From address
  */
  function SetFrom( $sender ) {
    $this->From = $sender;
    return $sender;
  }


  /**
  * Set the envelope sender address for the e-mail.
  * @param string $recipient The e-mail address for the sender
  * @return string The new envelope sender address.
  */
  function SetSender( $sender ) {
    $this->Sender = $sender;
    return $sender;
  }


  /**
  * Set the subject line for the email
  * @param string $recipient The new subject line.
  * @return string The new subject line.
  */
  function SetSubject( $subject ) {
    $this->Subject = $subject;
    return $subject;
  }


  /**
  * Set the body of the e-mail.
  * @param string $recipient The email address to append.
  * @return string The new body of the e-mail.
  */
  function SetBody( $body ) {
    $this->Body = $body;
    return $body;
  }


  /**
  * Actually send the email
  * @param string $additional_headers Any additional headers that are needed.
  */
  function Send( $additional_headers = "" ) {
    if ( !empty($this->From) )     $additional_headers .= "From: $this->From\r\n";
    if ( !empty($this->Cc) )       $additional_headers .= "Cc: $this->Cc\r\n";
    if ( !empty($this->Bcc) )      $additional_headers .= "Bcc: $this->Bcc\r\n";
    if ( !empty($this->ReplyTo) )  $additional_headers .= "Reply-To: $this->ReplyTo\r\n";
    if ( !empty($this->ErrorsTo) ) $additional_headers .= "Errors-To: $this->ErrorsTo\r\n";

    $additional_parameters = "";
    if ( !empty($this->Sender) ) $additional_parameters = "-f$this->Sender";
    mail( $this->To, $this->Subject, $this->Body, $additional_headers, $additional_parameters );
  }


  /**
  * Don't actually send the email, just log it.
  * @param string $additional_headers Any additional headers that are needed.
  */
  function PretendLog( $additional_headers = "" ) {
    if ( !empty($this->From) )     dbg_error_log('LOG', "From: $this->From");
    if ( !empty($this->Cc) )       dbg_error_log('LOG', "Cc: $this->Cc");
    if ( !empty($this->Bcc) )      dbg_error_log('LOG', "Bcc: $this->Bcc");
    if ( !empty($this->ReplyTo) )  dbg_error_log('LOG', "Reply-To: $this->ReplyTo");
    if ( !empty($this->ErrorsTo) ) dbg_error_log('LOG', "Errors-To: $this->ErrorsTo");

    $additional_parameters = "";
    if ( !empty($this->Sender) ) dbg_error_log('LOG', "Envelope Sender set to: $this->Sender");
    dbg_error_log('LOG', "To: $this->To");
    dbg_error_log('LOG', "Subject: $this->Subject");
    dbg_error_log('LOG', "Body: $this->Body");
  }

  /**
  * Don't actually send the email, just output it directly in the stream(!).  We use this method
  * when we're doing regression testing.
  * @param string $additional_headers Any additional headers that are needed.
  */
  function Pretend( $additional_headers = "" ) {
    if ( !empty($this->From) )     print("From: $this->From\r\n");
    if ( !empty($this->Cc) )       print("Cc: $this->Cc\r\n");
    if ( !empty($this->Bcc) )      print("Bcc: $this->Bcc\r\n");
    if ( !empty($this->ReplyTo) )  print("Reply-To: $this->ReplyTo\r\n");
    if ( !empty($this->ErrorsTo) ) print("Errors-To: $this->ErrorsTo\r\n");

    $additional_parameters = "";
    if ( !empty($this->Sender) ) print("Envelope Sender set to: $this->Sender\r\n");
    print("To: $this->To\r\n");
    print("Subject: $this->Subject\r\n");
    print("Body: $this->Body\r\n");
  }
}