aboutsummaryrefslogtreecommitdiff
path: root/src/Main.c
diff options
context:
space:
mode:
authorfrosty <gabriel@bwaaa.monster>2026-02-23 00:57:21 -0500
committerfrosty <gabriel@bwaaa.monster>2026-02-23 00:57:21 -0500
commitb280ab6bcdf6c9bae46a7a21b7138d46d953dd71 (patch)
tree39cea490a82a1ae5072c19d1d050d90b881d1a15 /src/Main.c
downloadomnisearch-b280ab6bcdf6c9bae46a7a21b7138d46d953dd71.tar.gz
oopsies
Diffstat (limited to 'src/Main.c')
-rw-r--r--src/Main.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/Main.c b/src/Main.c
new file mode 100644
index 0000000..d1b2eb9
--- /dev/null
+++ b/src/Main.c
@@ -0,0 +1,49 @@
+#include <beaker.h>
+#include <curl/curl.h>
+#include <libxml/parser.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "Config.h"
+#include "Routes/Home.h"
+#include "Routes/Images.h"
+#include "Routes/Search.h"
+
+int handle_opensearch(UrlParams *params) {
+ (void)params;
+ serve_static_file_with_mime("opensearch.xml", "application/opensearchdescription+xml");
+ return 0;
+}
+
+int main() {
+ LIBXML_TEST_VERSION
+ xmlInitParser();
+
+ curl_global_init(CURL_GLOBAL_DEFAULT);
+
+ Config config = {.host = "0.0.0.0", .port = 5000};
+
+ if (load_config("config.ini", &config) != 0) {
+ fprintf(stderr, "Warning: Could not load config file, using defaults\n");
+ }
+
+ set_handler("/", home_handler);
+ set_handler("/opensearch.xml", handle_opensearch);
+ set_handler("/search", results_handler);
+ set_handler("/images", images_handler);
+
+ fprintf(stderr, "Starting Omnisearch on %s:%d\n", config.host, config.port);
+
+ int result = beaker_run(config.host, config.port);
+
+ if (result != 0) {
+ fprintf(stderr, "Error: Beaker server failed to start.\n");
+ curl_global_cleanup();
+ xmlCleanupParser();
+ return EXIT_FAILURE;
+ }
+
+ curl_global_cleanup();
+ xmlCleanupParser();
+ return EXIT_SUCCESS;
+} \ No newline at end of file