From: Armaan Bhojwani Date: Sun, 6 Jun 2021 13:40:53 +0000 (-0400) Subject: Move extensions into a subdirectory X-Git-Tag: v1.0.0~49 X-Git-Url: https://git.armaanb.net/?p=chorizo.git;a=commitdiff_plain;h=3f33238e3a8096df6748f5a38e34f6a9559d55f7 Move extensions into a subdirectory --- diff --git a/.gitignore b/.gitignore index c296e42..3af3cda 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ lariza -we_adblock.so +*.so darkreader.js *.1 *.5 \ No newline at end of file diff --git a/Makefile b/Makefile index b664dc3..cec3e11 100644 --- a/Makefile +++ b/Makefile @@ -8,9 +8,9 @@ datarootdir = $(prefix)/share mandir = $(datarootdir)/man/man1 datadir = $(prefix)/share -.PHONY: man lariza we_adblock.so clean uninstall install +.PHONY: man lariza extensions clean uninstall install -all: man lariza we_adblock.so darkreader +all: man lariza extensions darkreader man: for i in man1/*.scd; do \ @@ -25,12 +25,15 @@ lariza: browser.c -o $@ $< \ `pkg-config --cflags --libs gtk+-3.0 glib-2.0 webkit2gtk-4.0` -we_adblock.so: we_adblock.c - $(CC) $(CFLAGS) $(LDFLAGS) \ - -D__NAME__=\"lariza\" \ - -D__NAME_UPPERCASE__=\"LARIZA\" \ - -shared -o $@ -fPIC $< \ - `pkg-config --cflags --libs glib-2.0 webkit2gtk-4.0` +extensions: + for i in extensions/*.c; do \ + outp=$$(echo "$$i" | sed 's/\$\.c/.so/g'); \ + $(CC) $(CFLAGS) $(LDFLAGS) \ + -D__NAME__=\"lariza\" \ + -D__NAME_UPPERCASE__=\"LARIZA\" \ + -shared -o $$outp -fPIC $$i \ + `pkg-config --cflags --libs glib-2.0 webkit2gtk-4.0`; \ + done install: all mkdir -p $(DESTDIR)$(bindir) \ @@ -39,9 +42,9 @@ install: all $(DESTDIR)$(datadir)/lariza/user-scripts cp lariza $(DESTDIR)$(bindir)/lariza - cp we_adblock.so $(DESTDIR)$(libdir)/lariza/web_extensions/we_adblock.so cp man1/* $(DESTDIR)$(mandir)/ cp lariza.ini $(DESTDIR)/etc/lariza.ini + cp -r extensions/*.so $(DESTDIR)$(libdir)/lariza/web_extensions/ cp -r user-scripts/* $(DESTDIR)$(datadir)/lariza/user-scripts/ uninstall: diff --git a/extensions/we_adblock.c b/extensions/we_adblock.c new file mode 100644 index 0000000..4714fb4 --- /dev/null +++ b/extensions/we_adblock.c @@ -0,0 +1,81 @@ +#include + +#include +#include + + +GSList *adblock_patterns = NULL; + + +void +adblock_load(void) +{ + GRegex *re = NULL; + GError *err = NULL; + GIOChannel *channel = NULL; + gchar *path = NULL, *buf = NULL; + + path = g_build_filename(g_get_user_config_dir(), __NAME__, "adblock", + NULL); + channel = g_io_channel_new_file(path, "r", &err); + if (channel != NULL) + { + while (g_io_channel_read_line(channel, &buf, NULL, NULL, NULL) + == G_IO_STATUS_NORMAL) + { + g_strstrip(buf); + if (buf[0] != '#') + { + re = g_regex_new(buf, + G_REGEX_CASELESS | G_REGEX_OPTIMIZE, + G_REGEX_MATCH_PARTIAL, &err); + if (err != NULL) + { + fprintf(stderr, __NAME__": Could not compile regex: %s\n", buf); + g_error_free(err); + err = NULL; + } + else + adblock_patterns = g_slist_append(adblock_patterns, re); + } + g_free(buf); + } + g_io_channel_shutdown(channel, FALSE, NULL); + } + g_free(path); +} + +gboolean +web_page_send_request(WebKitWebPage *web_page, WebKitURIRequest *request, + WebKitURIResponse *redirected_response, gpointer user_data) +{ + GSList *it = adblock_patterns; + const gchar *uri; + + uri = webkit_uri_request_get_uri(request); + + while (it) + { + if (g_regex_match((GRegex *)(it->data), uri, 0, NULL)) + return TRUE; + it = g_slist_next(it); + } + + return FALSE; +} + +void +web_page_created_callback(WebKitWebExtension *extension, WebKitWebPage *web_page, + gpointer user_data) +{ + g_signal_connect_object(web_page, "send-request", + G_CALLBACK(web_page_send_request), NULL, 0); +} + +G_MODULE_EXPORT void +webkit_web_extension_initialize(WebKitWebExtension *extension) +{ + adblock_load(); + g_signal_connect(extension, "page-created", + G_CALLBACK(web_page_created_callback), NULL); +} diff --git a/we_adblock.c b/we_adblock.c deleted file mode 100644 index 4714fb4..0000000 --- a/we_adblock.c +++ /dev/null @@ -1,81 +0,0 @@ -#include - -#include -#include - - -GSList *adblock_patterns = NULL; - - -void -adblock_load(void) -{ - GRegex *re = NULL; - GError *err = NULL; - GIOChannel *channel = NULL; - gchar *path = NULL, *buf = NULL; - - path = g_build_filename(g_get_user_config_dir(), __NAME__, "adblock", - NULL); - channel = g_io_channel_new_file(path, "r", &err); - if (channel != NULL) - { - while (g_io_channel_read_line(channel, &buf, NULL, NULL, NULL) - == G_IO_STATUS_NORMAL) - { - g_strstrip(buf); - if (buf[0] != '#') - { - re = g_regex_new(buf, - G_REGEX_CASELESS | G_REGEX_OPTIMIZE, - G_REGEX_MATCH_PARTIAL, &err); - if (err != NULL) - { - fprintf(stderr, __NAME__": Could not compile regex: %s\n", buf); - g_error_free(err); - err = NULL; - } - else - adblock_patterns = g_slist_append(adblock_patterns, re); - } - g_free(buf); - } - g_io_channel_shutdown(channel, FALSE, NULL); - } - g_free(path); -} - -gboolean -web_page_send_request(WebKitWebPage *web_page, WebKitURIRequest *request, - WebKitURIResponse *redirected_response, gpointer user_data) -{ - GSList *it = adblock_patterns; - const gchar *uri; - - uri = webkit_uri_request_get_uri(request); - - while (it) - { - if (g_regex_match((GRegex *)(it->data), uri, 0, NULL)) - return TRUE; - it = g_slist_next(it); - } - - return FALSE; -} - -void -web_page_created_callback(WebKitWebExtension *extension, WebKitWebPage *web_page, - gpointer user_data) -{ - g_signal_connect_object(web_page, "send-request", - G_CALLBACK(web_page_send_request), NULL, 0); -} - -G_MODULE_EXPORT void -webkit_web_extension_initialize(WebKitWebExtension *extension) -{ - adblock_load(); - g_signal_connect(extension, "page-created", - G_CALLBACK(web_page_created_callback), NULL); -}