Subversion Repositories computer_asset_manager_v1

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
23 rodolico 1
<?php
2
/*
3
 * This file is just an easy way to create the YAML configuration file.
4
 * You, as a PHP programmer, are probably more familiar with PHP than 
5
 * YAML, so create an array, $configuration, below, then run this
6
 * script (ie, php sysinfoRead.conf-creator.php). A properly formatted
7
 * YAML configuration stream will be sent to STDOUT, where you can
8
 * capture it.
9
 * OF COURSE, you can definitely hand code the YAML. It is actually much
10
 * simpler than doing the PHP, but not if you're familiar with PHP
11
 * and not so good with YAML.
12
 * Requires php-pear and libyaml under Debian Wheezy
13
 *
14
 * apt-get install php-pear php5-dev libyaml-dev libyaml-0-2 libyaml-0-2-dbg
15
 * pecl install yaml
16
 * echo 'extension=yaml.so' >> /etc/php5/cli/php.ini
17
 * echo 'extension=yaml.so' >> /etc/apache2/cli/php.ini
18
 *
19
 */
20
 
21
/* 
22
   I use a nowdoc to define this large block of code which evaluates an ini file.  
23
   (see http://php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc
24
   nowdoc's don't really work in an array, or at least I have not been able
25
   to figure out the syntax, so I use the following to get the code into the variable
26
   $eval_ini, then put that into the $configuration array.
27
   Also, nowdoc's are pretty sloppy looking, so another reason to do it here :)
28
*/
29
$eval_ini = <<<'END'
30
$data = array();
31
preg_match( '/\[report date\](.*)[\r\n]/', $body, $_date );
32
preg_match( '/\[client name\](.*)[\r\n]/', $body, $_client );
33
preg_match( '/\[hostname\](.*)[\r\n]/', $body, $_host );
34
$data['report']['date'] = str_replace(array("\n", "\r"), '', $_date[1]);
35
$data['report']['client'] = str_replace(array("\n", "\r"), '', $_client[1]);
36
$data['system']['hostname'] = str_replace(array("\n", "\r"), '', $_host[1]);
37
return $data;
38
END;
39
// end of the nowdoc, now on to the regular stuff 
40
 
41
// Configuration file for getSysinfoMail.php, parse_sysinfo.php and other files
42
$configuration = array( 
43
      // set this to where the files parsed from mail should be placed.
44
      // note, outpath will be removed in the future. It should be 'datapath/unprocessed_path'
45
      // until that is done.
46
      // in the future, datapath will define a root, then everything will be a subdirectory
47
      // of that; unprocessed, duplicate, and all processed files
48
      // processed files will be in datapath/YYYY/MM/filename
49
      'outpath' => '/path/to/unprocessed/email', // this should be 'datapath/unprocessed_path'
50
      'logFile' => '/path/to/log/file/errors.log', // full path to an error file
51
      'datapath' => '/path/to/root/of/reports', // the root of all files
52
      'unprocessed_path' => 'unprocessed', // subdirectory of datapath
53
      'getMailScript' => 'getSysinfoMail.php', // name of the mail getter script
54
      'processMailScript' => 'parse_sysinfo.php', // name of the report parser
55
      'reportScript' => 'sendReport.pl', // name of the report script
56
 
57
      // server connection information
58
      // you can check multiple servers, accounts and mailboxes (folders)
59
      // only two are listed here, but it can be from one to however many you want
60
      'servers' => array( 
61
                        array ( 
62
                           'servername'      => 'smtp.server.or.ip', 
63
                           'port'            => 143,
64
                           'ssl'             => false,
65
                           'mailbox'         => 'mailbox.name',
66
                           'username'        => 'username',
67
                           'password'        => 'password',
68
                           'deleteProcessed' => false,  // true will delete once they are downloaded
69
                           'enabled'         => false   // false means this entry will be ignored
70
                           ),
71
                        array ( 
72
                           'servername'      => 'smtp.server.or.ip', 
73
                           'port'            => 143,
74
                           'ssl'             => false,
75
                           'mailbox'         => 'mailbox.name',
76
                           'username'        => 'username',
77
                           'password'        => 'password',
78
                           'deleteProcessed' => false,  // true will delete once they are downloaded
79
                           'enabled'         => false   // false means this entry will be ignored
80
                           ),
81
                     ),
82
      // your database connection information
83
      'database' => array(
84
         'databaseServer' => 'localhost',
85
         'databaseUsername' => 'dbuser',
86
         'databasePassword' => 'dbpass',
87
         'database' => 'dbname',
88
      ),
89
      // you really need sendEmail.pl for this to work, as I've really written this around that
90
      // see README.txt. This sends the report at the end of the processing. You can comment out
91
      // the call to sendReport.pl in doReports.pl or rewrite the former.
92
      'sendReport' => array(
93
         'emailScript'=>'/opt/sendEmail/sendEmail.pl',
94
         'mailTo'=> 'who@gets.mail',
95
         'mailServer' => 'smtp.server.com:587',
96
         'mailSubject' => 'Sysinfo Report',
97
         'mailFrom' => 'sysinfo@mydomain.org',
98
         'logFile' => '/tmp/mail.log',
99
         'tls' => "'auto'",
100
         'smtpUser' => 'smtp@user.com', // for authenticated SMTP
101
         'smtpPass' => 'password',      // for authenticated SMTP
102
      ),
103
 
104
      // You really should not modify the following unless you know what you are doing
105
 
106
      // these are regex's that define what we want to capture. Everything between startKey and endKey, inclusive
107
      // we then process it with eval, which is an anonymous function accepting one paramter (body) and returning
108
      // the array represented by the associated data definition
109
      'bodyContents' => array( 
110
                      'xml'  => array( 
111
                            'startTag' => '\<sysinfo', 
112
                            'endTag' => '\<\/sysinfo[^>]*\>', 
113
                            // see http://stackoverflow.com/questions/6578832/how-to-convert-xml-into-array-in-php
114
                            'eval' => 'return(json_decode(json_encode((array)simplexml_load_string($body)),1));',
115
 
116
                            ),
117
                      'yaml' => array( 
118
                            'startTag' => '\-\-\-',
119
                            'endTag' => '\.\.\.',
120
                            'eval' => 'return( yaml_parse( $body, 0 ) );',
121
                            ),
122
                      'ini'  => array( # this is an older format which we don't support, so we'll just write it out
123
                            'startTag' => '\[sysinfo version\]', 
124
                            'endTag' => '',
125
                            'eval' => $eval_ini,
126
                            )
127
                    ),
128
 
129
   );
130
 
131
   // here is where we actually generate the YAML
132
   print yaml_emit( $configuration );
133
 
134
 
135
?>