Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/admin/handlevirus.php
Go to the documentation of this file.
00001 <?php
00009 die('TODO: MDL-19380');
00010 
00011 $fd = fopen('php://stdin','r');
00012 if (!$fd) {
00013     exit();
00014 }
00015 
00016 require_once(dirname(dirname(__FILE__)).'/config.php');
00017 require_once($CFG->libdir.'/eventslib.php');
00018 require_once($CFG->dirroot.'/lib/uploadlib.php'); // contains virus handling stuff.
00019 
00020 $site = get_site();
00021 
00022 while(!feof($fd)) {
00023     $entry = fgets($fd);
00024     if (strlen(trim($entry)) == 0) {
00025         continue;
00026     }
00027     if (!$file = validate_line($entry)) {
00028         continue;
00029     }
00030     $bits = explode('/',$file);
00031     $a->filename = $bits[count($bits)-1];
00032 
00033     if (!$log = $DB->get_record("log", array("module"=>"upload", "info"=>$file, "action"=>"upload"))) {
00034         $a->action = clam_handle_infected_file($file,0,false);
00035         clam_replace_infected_file($file);
00036         notify_admins_unknown($file,$a);
00037         continue;
00038     }
00039     $action = clam_handle_infected_file($file,$log->userid,true);
00040     clam_replace_infected_file($file);
00041 
00042     list($ctxselect, $ctxjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
00043     $sql = "SELECT c.id, c.fullname $ctxselect FROM {course} c $ctxjoin WHERE c.id = :courseid";
00044     $course = $DB->get_record_sql($sql, array('courseid' => $log->course));
00045     context_instance_preload($course);
00046 
00047     $user = $DB->get_record("user", array("id"=>$log->userid));
00048     $subject = get_string('virusfoundsubject','moodle',format_string($site->fullname));
00049     $a->date = userdate($log->time);
00050 
00051     $a->action = $action;
00052     $a->course = format_string($course->fullname, true, array('context' => get_context_instance(CONTEXT_COURSE, $course->id)));
00053     $a->user = fullname($user);
00054 
00055     notify_user($user,$subject,$a);
00056     notify_admins($user,$subject,$a);
00057 }
00058 fclose($fd);
00059 
00060 
00061 function notify_user($user,$subject,$a) {
00062 
00063     if (!$user) {
00064         return false;
00065     }
00066     $body = get_string('virusfoundlater','moodle',$a);
00067 
00068     $eventdata = new stdClass();
00069     $eventdata->modulename        = 'moodle';
00070     $eventdata->userfrom          = get_admin();
00071     $eventdata->userto            = $user;
00072     $eventdata->subject           = $subject;
00073     $eventdata->fullmessage       = $body;
00074     $eventdata->fullmessageformat = FORMAT_PLAIN;
00075     $eventdata->fullmessagehtml   = '';
00076     $eventdata->smallmessage      = '';
00077     message_send($eventdata);
00078 }
00079 
00080 
00081 function notify_admins($user,$subject,$a) {
00082 
00083     $admins = get_admins();
00084 
00085     $body = get_string('virusfoundlateradmin','moodle',$a);
00086     foreach ($admins as $admin) {
00087         $eventdata = new stdClass();
00088         $eventdata->modulename        = 'moodle';
00089         $eventdata->userfrom          = $admin;
00090         $eventdata->userto            = $admin;
00091         $eventdata->subject           = $subject;
00092         $eventdata->fullmessage       = $body;
00093         $eventdata->fullmessageformat = FORMAT_PLAIN;
00094         $eventdata->fullmessagehtml   = '';
00095         $eventdata->smallmessage      = '';
00096         message_send($eventdata);
00097     }
00098 }
00099 
00100 function notify_admins_unknown($file,$a) {
00101 
00102     global $site;
00103 
00104     $admins = get_admins();
00105     $subject = get_string('virusfoundsubject','moodle',format_string($site->fullname));
00106     $body = get_string('virusfoundlateradminnolog','moodle',$a);
00107     foreach ($admins as $admin) {
00108         $eventdata = new stdClass();
00109         $eventdata->modulename        = 'moodle';
00110         $eventdata->userfrom          = $admin;
00111         $eventdata->userto            = $admin;
00112         $eventdata->subject           = $subject;
00113         $eventdata->fullmessage       = $body;
00114         $eventdata->fullmessageformat = FORMAT_PLAIN;
00115         $eventdata->fullmessagehtml   = '';
00116         $eventdata->smallmessage      = '';
00117         message_send($eventdata);
00118     }
00119 }
00120 
00121 function validate_line($line) {
00122     global $CFG;
00123     if (strpos($line,"FOUND") === false) {
00124         return false;
00125     }
00126     $index = strpos($line,":");
00127     $file = substr($line,0,$index);
00128     if (!(strpos($file,$CFG->dataroot) === false)) {
00129         if (!file_exists($file)) {
00130             return false;
00131         }
00132     }
00133     else {
00134         if ($file{0} == "/") {
00135             $file = $CFG->dataroot.$file;
00136         }
00137         else {
00138             $file = $CFG->dataroot."/".$file;
00139         }
00140         if (!file_exists($file)) {
00141             return false;
00142         }
00143     }
00144     // clean up
00145     $file = preg_replace('/\.\//','/',$file);
00146     $file = preg_replace('/\/\//','/',$file);
00147     return $file;
00148 }
00149 
00150 
 All Data Structures Namespaces Files Functions Variables Enumerations