sagacity/import.php

129 lines
4.4 KiB
PHP

<?php
/**
* File: import.php
* Author: Ryan.Prather
* Purpose: Standardized import functionality
* Created: Sep 27, 2013
*
* Change Log:
* - Sep 27, 2013 - File created
* - Aug 30, 2016 - Fixed progress bar
* - Mar 20, 2017 - Replaced with JS Dropzone library
* - Apr 7, 2017 - Added .xlsx extension to accepted files
* - May 13, 2017 - Made this more self-sustaining
* - May 19, 2017 - Change button to match others
* - Apr 29, 2018 - Changed default message and formatting
*/
$files = glob(TMP . "/*.*");
?>
<div id="import" class="box">
<script type="text/javascript" src="/script/dropzone/dropzone.min.js"></script>
<link type="text/css" href="/script/dropzone/dropzone.min.css" rel="stylesheet" />
<link type="text/css" href="/script/dropzone/basic.min.css" rel="stylesheet" />
<script type="text/javascript">
var mydz;
Dropzone.options.dropzone = {
maxFilesize: 150,
success: function (file, res) {
res = JSON.parse(res);
if (res.imageUrl) {
this.emit('thumbnail', file, res.imageUrl);
}
},
acceptedFiles: "text/csv,text/plain,application/vnd.ms-excel,.nessus,.xml,.nmap,.ckl,.xlsx",
addRemoveLinks: true,
dictCancelUpload: "Cancel Upload",
dictCancelUploadConfirmation: "Are you sure you want to cancel this upload?",
dictRemoveFile: "Delete File?"
};
Dropzone.prototype.submitRequest = function (xhr, formData, files) {
var dt = new Date(files[0].lastModifiedDate);
xhr.setRequestHeader('X-FILENAME', files[0].name);
xhr.setRequestHeader('X-FILEMTIME', dt.toISOString());
return xhr.send(formData);
};
Dropzone.autoDiscover = false;
$(function () {
mydz = new Dropzone('#dropzone');
mydz.on('removedfile', function (file) {
$.ajax('/ajax.php', {
data: {
action: 'delete-file',
filename: file.name
},
success: function (data) {
if (data.error) {
}
else if (data.success) {
alert(data.success);
}
},
error: function (xhr, status, error) {
console.error(error);
},
dataType: 'json',
timeout: 3000,
method: 'post'
});
});
});
/**
* Function to import all the scans
*
* @returns {undefined}
*/
function add_scans() {
$.ajax('/ajax.php', {
data: {
action: 'add_scans',
ste: '<?php print (isset($ste) && is_numeric($ste) ? $ste : ''); ?>',
ignore: ($('#ignore_hidden').is(':checked') ? '1' : '0'),
location: $('#location').val()
},
beforeSend: function () {
close_box();
},
success: function (data) {
if ($('#toggle_refresh').html() == 'Stop Refresh' && !to) {
to = setTimeout(update_script_status, <?php print UPDATE_FREQ * 1000; ?>);
}
},
error: function (xhr, status, error) {
console.error(error);
},
//timeout: 10000,
dataType: 'json',
method: 'post'
});
}
</script>
<form class="dropzone" action="/upload.php" id="dropzone">
<div class="dz-message" data-dz-message><span>Click or Drop files here to upload</span></div>
<div class="fallback">
<input type="file" name="file" multiple />
</div>
</form>
<div style='margin-left: 20px;'>
<?php
if(is_array($files) && count($files)) {
natsort($files);
print "<span style='background-color:red;color:white;font-size:16px;' title='" . implode("\n", $files) . "'>NOTE: There are still files in the " . realpath(TMP) . " directory (mouse over to see)</span><br />";
}
?>
<input type='text' id='location' placeholder='Physical Location...' /><br />
<input type='button' class='button' id='add-scan' value='Add Scan Result' onclick='add_scans();' /><br />
<label for='ignore_hidden' id='ignore_label'>Ignore Hidden Tabs in Excel eChecklists</label>
<input type='checkbox' name='ignore_hidden' id='ignore_hidden' value='1' checked />
</div>
</div>