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; }