mirror of
https://github.com/kiwix/kiwix-tools.git
synced 2025-09-22 11:22:38 -04:00
+ Add -v|--verbose mode to kiwix-serve (ID: 2961216)
This commit is contained in:
parent
3641a22337
commit
a5646c3c44
@ -5,6 +5,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <getopt.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <microhttpd.h>
|
#include <microhttpd.h>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
@ -105,6 +106,7 @@ static const string HTMLDiv = " \
|
|||||||
<div id=\"topbar\"><form method=\"GET\" action=\"/search\"><input type=\"textbox\" name=\"pattern\" /><input type=\"submit\" value=\"Search\" /></form></div> \n \
|
<div id=\"topbar\"><form method=\"GET\" action=\"/search\"><input type=\"textbox\" name=\"pattern\" /><input type=\"submit\" value=\"Search\" /></form></div> \n \
|
||||||
";
|
";
|
||||||
|
|
||||||
|
static bool verboseFlag = false;
|
||||||
static kiwix::Reader* reader;
|
static kiwix::Reader* reader;
|
||||||
static kiwix::Searcher* searcher;
|
static kiwix::Searcher* searcher;
|
||||||
static pthread_mutex_t readerLock = PTHREAD_MUTEX_INITIALIZER;
|
static pthread_mutex_t readerLock = PTHREAD_MUTEX_INITIALIZER;
|
||||||
@ -202,11 +204,16 @@ static int accessHandlerCallback(void *cls,
|
|||||||
pthread_mutex_lock(&readerLock);
|
pthread_mutex_lock(&readerLock);
|
||||||
|
|
||||||
/* Load the article from the ZIM file */
|
/* Load the article from the ZIM file */
|
||||||
cout << "Loading '" << urlStr << "'... " << endl;
|
if (verboseFlag)
|
||||||
|
cout << "Loading '" << urlStr << "'... " << endl;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
reader->getContent(urlStr, content, contentLength, mimeType);
|
reader->getContent(urlStr, content, contentLength, mimeType);
|
||||||
cout << "content size: " << contentLength << endl;
|
|
||||||
cout << "mimeType: " << mimeType << endl;
|
if (verboseFlag) {
|
||||||
|
cout << "content size: " << contentLength << endl;
|
||||||
|
cout << "mimeType: " << mimeType << endl;
|
||||||
|
}
|
||||||
} catch (const std::exception& e) {
|
} catch (const std::exception& e) {
|
||||||
std::cerr << e.what() << std::endl;
|
std::cerr << e.what() << std::endl;
|
||||||
}
|
}
|
||||||
@ -245,24 +252,68 @@ static int accessHandlerCallback(void *cls,
|
|||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
struct MHD_Daemon *daemon;
|
struct MHD_Daemon *daemon;
|
||||||
|
string zimPath = "";
|
||||||
|
|
||||||
/* Argument check */
|
string indexPath = "";
|
||||||
if (argc < 3 || argc > 4) {
|
int serverPort = 80;
|
||||||
cout << "Usage: kiwix-serve ZIM_PATH PORT [INDEX_PATH]" << endl;
|
int daemonFlag = 0;
|
||||||
|
|
||||||
|
/* Argument parsing */
|
||||||
|
while (42) {
|
||||||
|
|
||||||
|
static struct option long_options[] = {
|
||||||
|
{"daemon", no_argument, 0, 'd'},
|
||||||
|
{"verbose", no_argument, 0, 'v'},
|
||||||
|
{"index", required_argument, 0, 'i'},
|
||||||
|
{"port", required_argument, 0, 'p'},
|
||||||
|
{0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
int option_index = 0;
|
||||||
|
int c = getopt_long(argc, argv, "dvi:p:", long_options, &option_index);
|
||||||
|
|
||||||
|
if (c == -1)
|
||||||
|
break;
|
||||||
|
|
||||||
|
switch (c) {
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
daemonFlag = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'v':
|
||||||
|
verboseFlag = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'i':
|
||||||
|
indexPath = optarg;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
serverPort = atoi(optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (optind < argc) {
|
||||||
|
zimPath = argv[optind++];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Print usage)) if necessary */
|
||||||
|
if (zimPath == "") {
|
||||||
|
cerr << "Usage: kiwix-serve [--index=ZIM_PATH] [--port=PORT] [--verbose] [--daemon] ZIM_PATH" << endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
string zimPath = (argv[1]);
|
|
||||||
int port = atoi(argv[2]);
|
|
||||||
string indexPath = (argc>3 ? argv[3] : "");
|
|
||||||
|
|
||||||
void *page;
|
void *page;
|
||||||
|
|
||||||
/* Instanciate the ZIM file handler */
|
/* Instanciate the ZIM file handler */
|
||||||
try {
|
try {
|
||||||
reader = new kiwix::Reader(zimPath);
|
reader = new kiwix::Reader(zimPath);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
cout << "Unable to open the ZIM file '" << zimPath << "'." << endl;
|
cerr << "Unable to open the ZIM file '" << zimPath << "'." << endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,7 +323,7 @@ int main(int argc, char **argv) {
|
|||||||
searcher = new kiwix::Searcher(indexPath);
|
searcher = new kiwix::Searcher(indexPath);
|
||||||
hasSearchIndex = true;
|
hasSearchIndex = true;
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
cout << "Unable to open the search index '" << zimPath << "'." << endl;
|
cerr << "Unable to open the search index '" << zimPath << "'." << endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -285,7 +336,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
/* Start the HTTP daemon */
|
/* Start the HTTP daemon */
|
||||||
daemon = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION,
|
daemon = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION,
|
||||||
port,
|
serverPort,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
&accessHandlerCallback,
|
&accessHandlerCallback,
|
||||||
@ -293,7 +344,7 @@ int main(int argc, char **argv) {
|
|||||||
MHD_OPTION_END);
|
MHD_OPTION_END);
|
||||||
|
|
||||||
if (daemon == NULL) {
|
if (daemon == NULL) {
|
||||||
cout << "Unable to instanciate the HTTP daemon."<< endl;
|
cerr << "Unable to instanciate the HTTP daemon."<< endl;
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user