111 lines
2.8 KiB
C
111 lines
2.8 KiB
C
#define _POSIX_C_SOURCE 200112L /* needed for struct addrinfo */
|
|
|
|
#include "db.h"
|
|
#include <netdb.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <sys/wait.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/stat.h>
|
|
#include <errno.h>
|
|
|
|
|
|
|
|
int main(int argc, char **argv) {
|
|
int ret;
|
|
|
|
if (argc < 2) {
|
|
fprintf(stderr, "Incorrect amount of arguments\n");
|
|
return 1;
|
|
}
|
|
|
|
ret = h_db_open("HDB.db");
|
|
if (ret != 0) {
|
|
return 1;
|
|
}
|
|
|
|
if (strcmp(argv[1], "add") == 0) {
|
|
char *db_row = malloc(strlen(argv[2]) * 2);
|
|
memset(db_row, 0, strlen(argv[2]));
|
|
|
|
if (argc == 3) {
|
|
ret = h_db_add(db_row, argv[2]);
|
|
if (ret != 0) {
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
} else if (argc == 4) {
|
|
ret = h_db_add_custom_name(db_row, argv[2], argv[3]);
|
|
if (ret != 0) {
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
} else {
|
|
h_db_close();
|
|
fprintf(stderr, "Incorrect amount of arguments\n");
|
|
return 1;
|
|
}
|
|
printf("Successfully added to DB\n");
|
|
ret = h_download(db_row, config);
|
|
free(db_row);
|
|
if (ret != 0) {
|
|
printf("Failed download\n");
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
printf("Succesfully downladed\n");
|
|
} else if (strcmp(argv[1], "download_website") == 0) {
|
|
if (argc != 3) {
|
|
fprintf(stderr, "Incorrect amount of arguments\n");
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
char *file_name = malloc(10000);
|
|
sprintf(file_name, "%s/%s_generated.txt", config.tmp_dir, argv[2]);
|
|
FILE *fptr = fopen(file_name, "w+");
|
|
if (fptr == NULL) {
|
|
fprintf(stderr, "Couldn't open file '%s'\n", file_name);
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
|
|
ret = h_db_generate_file(fptr, argv[2]);
|
|
fclose(fptr);
|
|
if (ret != 0) {
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
|
|
fptr = fopen(file_name, "r");
|
|
if (fptr == NULL) {
|
|
fprintf(stderr, "Couldn't open file '%s'\n", file_name);
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
char *line = malloc(10000);
|
|
printf("Ready to download\n");
|
|
while(fgets(line, 10000, fptr) != NULL) {
|
|
ret = h_download(line, config);
|
|
if (ret != 0) {
|
|
fclose(fptr);
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
free(line);
|
|
fclose(fptr);
|
|
free(file_name);
|
|
} else {
|
|
fprintf(stderr, "Invalid argument\n");
|
|
h_db_close();
|
|
return 1;
|
|
}
|
|
|
|
h_db_close();
|
|
return 0;
|
|
}
|