Exemplo n.º 1
0
 public function upload()
 {
     if (!file_exists($_ENV['MALWARE_STORAGE_PATH'])) {
         mkdir($_ENV['MALWARE_STORAGE_PATH'], 0777, true);
     }
     $input = Input::all();
     $files = Input::file();
     foreach ($files as $file) {
         try {
             $filename = md5_file($file);
             $sample = Sample::firstOrNew(array('md5' => $filename));
             $sample->filename = $file->getClientOriginalName();
             $sample->filesize = $file->getSize();
             $file->move($_ENV['MALWARE_STORAGE_PATH'], $filename);
             if (isset($input['VTscan'])) {
                 $this->scanFileOnVirusTotal($sample, TRUE);
             } else {
                 $this->scanFileOnVirusTotal($sample, FALSE);
             }
             $sample->save();
             // tags processing
             $tag_name_str = 'tag_' . preg_replace('/[. ]/', "_", $sample->filename);
             if (isset($input[$tag_name_str])) {
                 $tags = trim($input[$tag_name_str]);
                 if ($tags != "") {
                     $tags = explode(";", $tags);
                     $tagIds = array();
                     // Tags
                     foreach ($tags as $tag) {
                         $tag = Tag::firstOrCreate(array('tag' => $tag));
                         $tagIds[] = $tag->id;
                     }
                     // Sample <=> Tags
                     $sample->tags()->sync($tagIds);
                 }
             }
             // writeups processing
             $writeup_name_str = 'writeup_' . preg_replace('/[. ]/', "_", $sample->filename);
             if (isset($input[$writeup_name_str])) {
                 $writeups = $input[$writeup_name_str];
                 foreach ($writeups as $url) {
                     if ($url == "") {
                         continue;
                     }
                     $writeup = new Writeup();
                     $writeup->url = $url;
                     $writeup->title = $this->getUrlTitle($url);
                     $writeup->sample()->associate($sample);
                     $writeup->save();
                 }
             }
             $samples[] = $sample;
         } catch (Exception $e) {
             Log::info($e);
             Response::json("Error occured :( Try to upload again");
         }
     }
     return $sample;
 }