Skip to content

Commit

Permalink
Merge branch '461-how-can-we-add-multiple-nuclei-templates-in-rengine…
Browse files Browse the repository at this point in the history
…' into release/2.2.0
  • Loading branch information
yogeshojha committed Jul 31, 2024
2 parents b372f8a + b749c2a commit de4cde9
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 12 deletions.
5 changes: 5 additions & 0 deletions web/reNgine/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -311,3 +311,8 @@
}
},
}

'''
File upload settings
'''
DATA_UPLOAD_MAX_NUMBER_FIELDS = None
3 changes: 2 additions & 1 deletion web/scanEngine/templates/scanEngine/settings/tool.html
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,8 @@ <h6 class="header-title">Currently available custom Nuclei templates</h6>
{% csrf_token %}
<div class="form-group mb-4 mt-3">
<label for="nucleiFileUpload" class="form-label">Upload Nuclei Template YAML</label>
<input type="file" class="form-control" name="nucleiFileUpload" id="nucleiFileUpload" accept=".yaml">
<small class="text-muted">(Multiple files can be uploaded.)</small>
<input type="file" class="form-control" name="nucleiFileUpload[]" id="nucleiFileUpload" accept=".yaml,.yml" multiple>
</div>
<input type="submit" class="btn btn-primary mt-3 float-end" value="Upload">
</form>
Expand Down
37 changes: 26 additions & 11 deletions web/scanEngine/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,21 +214,36 @@ def tool_specific_settings(request, slug):
file.write(gf_file.read().decode("utf-8"))
file.close()
upload_count += 1
messages.add_message(request, messages.INFO, f'{upload_count} GF files successfully uploaded')
original_filename = re.sub(r'[\\/*?:"<>|]',"", original_filename)
file_extension = original_filename.split('.')[len(gf_file.name.split('.'))-1]
if file_extension == 'json':
base_filename = os.path.splitext(original_filename)[0]
file_path = '/root/.gf/' + base_filename + '.json'
file = open(file_path, "w")
file.write(gf_file.read().decode("utf-8"))
file.close()
upload_count += 1
messages.add_message(request, messages.INFO, f'{upload_count} GF files successfully uploaded')
return http.HttpResponseRedirect(reverse('tool_settings', kwargs={'slug': slug}))

elif 'nucleiFileUpload' in request.FILES:
nuclei_file = request.FILES['nucleiFileUpload']
file_extension = nuclei_file.name.split('.')[len(nuclei_file.name.split('.'))-1]
if file_extension != 'yaml':
elif 'nucleiFileUpload[]' in request.FILES:
nuclei_files = request.FILES.getlist('nucleiFileUpload[]')
upload_count = 0
for nuclei_file in nuclei_files:
original_filename = nuclei_file.name if isinstance(nuclei_file.name, str) else nuclei_file.name.decode('utf-8')
original_filename = re.sub(r'[\\/*?:"<>|]',"", original_filename)
file_extension = original_filename.split('.')[len(nuclei_file.name.split('.'))-1]
if file_extension in ['yaml', 'yml']:
base_filename = os.path.splitext(original_filename)[0]
file_path = '/root/nuclei-templates/' + base_filename + '.yaml'
file = open(file_path, "w")
file.write(nuclei_file.read().decode("utf-8"))
file.close()
upload_count += 1
if upload_count == 0:
messages.add_message(request, messages.ERROR, 'Invalid Nuclei Pattern, upload only *.yaml extension')
else:
filename = re.sub(r'[\\/*?:"<>|]',"", nuclei_file.name)
file_path = '/root/nuclei-templates/' + filename
file = open(file_path, "w")
file.write(nuclei_file.read().decode("utf-8"))
file.close()
messages.add_message(request, messages.INFO, f'Nuclei Pattern {nuclei_file.name[:-5]} successfully uploaded')
messages.add_message(request, messages.INFO, f'{upload_count} Nuclei Patterns successfully uploaded')
return http.HttpResponseRedirect(reverse('tool_settings', kwargs={'slug': slug}))

elif 'nuclei_config_text_area' in request.POST:
Expand Down

0 comments on commit de4cde9

Please sign in to comment.