creating software to compile datatbase

This commit is contained in:
jakani24
2024-02-17 15:25:32 +01:00
parent 64df34e90b
commit f329f96430
2 changed files with 140 additions and 0 deletions

View File

@@ -504,6 +504,8 @@ function load_settings(){
<option value="choose_action">Choose an action</option> <option value="choose_action">Choose an action</option>
<option value="scanfile">scanfile</option> <option value="scanfile">scanfile</option>
<option value="scanfolder">scanfolder</option> <option value="scanfolder">scanfolder</option>
<option value="update_settings">update settings</option>
<option value="update_db">update database</option>
</select> </select>
</td> </td>
<td><input type="text" id="task_argument" class="form-control" name="task_argument"></td> <td><input type="text" id="task_argument" class="form-control" name="task_argument"></td>
@@ -540,6 +542,14 @@ function load_settings(){
echo('<option value="scanfolder" selected>scanfolder</option>'); echo('<option value="scanfolder" selected>scanfolder</option>');
else else
echo('<option value="scanfolder">scanfolder</option>'); echo('<option value="scanfolder">scanfolder</option>');
if($action=="update_settings")
echo('<option value="update_settings" selected>update settings</option>');
else
echo('<option value="update_settings">update settings</option>');
if($action=="update_db")
echo('<option value="update_db" selected>update database</option>');
else
echo('<option value="update_db">update database</option>');
echo('</select>'); echo('</select>');
echo('</td>'); echo('</td>');

View File

@@ -0,0 +1,130 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define db_files 485
#define BUFFER_SIZE 1024
typedef struct
{
char* prefix;
FILE* file;
} OutputFile;
int download_files()
{
char buf[500];
for (int i=0;i<db_files;i++)
{
sprintf(buf,"curl https://virusshare.com/hashfiles/VirusShare_%.5d.md5 -o /var/www/html/server/db/%d.md5 --insecure",i,i);
printf("downloading file %d = %.1f%% \n",i,(float)100/db_files*i);
system(buf);
}
system("freshclam");
system("cp /var/lib/clamav/main.cvd /var/www/html/server/db");
system("cp /var/lib/clamav/daily.cvd /var/www/html/server/db");
system("cd /var/www/html/server/db/ && sigtool -u /var/www/html/server/db/main.cvd");
system("cd /var/www/html/server/db/ && sigtool -u /var/www/html/server/db/daily.cvd");
return 0;
}
void sort_hashes_into_files(char* input_filename, char* output_filename_suffix, int hash_length)
{
FILE* input_file = fopen(input_filename, "r");
if (input_file == NULL)
{
fprintf(stderr, "Error: Could not open input file \"%s\"\n", input_filename);
return;
}
OutputFile output_files[BUFFER_SIZE];
int output_file_count = 0;
char buffer[BUFFER_SIZE];
while (fgets(buffer, BUFFER_SIZE, input_file) != NULL)
{
buffer[strcspn(buffer, "\r\n")] = '\0'; // Remove newline characters
char hash[BUFFER_SIZE];
strncpy(hash, buffer, hash_length);
hash[hash_length] = '\0';
char output_filename_prefix[BUFFER_SIZE];
strcpy(output_filename_prefix, hash);
char output_filename[BUFFER_SIZE];
strcpy(output_filename,"/var/www/html/server/");
strcat(output_filename, output_filename_prefix);
strcat(output_filename, output_filename_suffix);
FILE* output_file = NULL;
bool output_file_found = false;
for (int i = 0; i < output_file_count; ++i)
{
if (strcmp(output_files[i].prefix, output_filename_prefix) == 0)
{
output_file = output_files[i].file;
output_file_found = true;
break;
}
}
if (!output_file_found)
{
output_file = fopen(output_filename, "a");
if (output_file == NULL)
{
fprintf(stderr, "Error: Could not open output file \"%s\"\n", output_filename);
return;
}
OutputFile new_output_file;
new_output_file.prefix = strdup(output_filename_prefix);
new_output_file.file = output_file;
output_files[output_file_count++] = new_output_file;
}
fprintf(output_file, "%s\n", buffer);
}
for (int i = 0; i < output_file_count; ++i)
{
fclose(output_files[i].file);
free(output_files[i].prefix);
}
fclose(input_file);
}
int main(int argc, char *argv[])
{
char path[500];
if(argc==2)
{
if(strcmp(argv[1],"d")==0)
{
printf("Downloading files\n");
return download_files();
//printf("Please add the main.hsb and the daily.hsb files into the folder /var/www/html/server and then run the updater with \"u\"\n");
}
else if(strcmp(argv[1],"u")==0){
printf("generating own.jdbf\n");
sort_hashes_into_files("/var/www/html/server/own.jdbf", ".jdbf", 2);
printf("generating daily.hsb\n");
sort_hashes_into_files("/var/www/html/server/db/daily.hsb", ".jdbf", 2);
printf("generating main.hsb\n");
sort_hashes_into_files("/var/www/html/server/db/main.hsb", ".jdbf", 2);
printf("generating md5 files\n");
for(int i=0;i<db_files;i++)
{
sprintf(path,"/var/www/html/server/db/%d.md5",i);
printf("creating database file(%.1f%%) \n",(float)100/db_files*i);
sort_hashes_into_files(path, ".jdbf", 2);
}
}
}
else
printf("no parameter supplied\n");
return 0;
}