mirror of
https://github.com/ValdikSS/GoodbyeDPI.git
synced 2025-12-18 05:14:35 +03:00
Windows Service support.
Program can now be started as a Windows Service. No additional arguments needed. Refer to `service_install` and `service_remove` scripts in released zip file.
This commit is contained in:
13
goodbyedpi.c
13
goodbyedpi.c
@@ -11,6 +11,7 @@
|
||||
#include <getopt.h>
|
||||
#include "windivert.h"
|
||||
#include "goodbyedpi.h"
|
||||
#include "service.h"
|
||||
#include "dnsredir.h"
|
||||
#include "blackwhitelist.h"
|
||||
|
||||
@@ -52,6 +53,7 @@
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
static int running_from_service = 0;
|
||||
static HANDLE filters[MAX_FILTERS];
|
||||
static int filter_num = 0;
|
||||
static const char *http10_redirect_302 = "HTTP/1.0 302 ";
|
||||
@@ -144,7 +146,7 @@ static int deinit(HANDLE handle) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void deinit_all() {
|
||||
void deinit_all() {
|
||||
for (int i = 0; i < filter_num; i++) {
|
||||
deinit(filters[i]);
|
||||
}
|
||||
@@ -277,6 +279,15 @@ int main(int argc, char *argv[]) {
|
||||
char *hdr_name_addr = NULL, *hdr_value_addr = NULL;
|
||||
int hdr_value_len;
|
||||
|
||||
if (!running_from_service && service_register(argc, argv)) {
|
||||
/* We've been called as a service. Register service
|
||||
* and exit this thread. main() would be called from
|
||||
* service.c next time.
|
||||
*/
|
||||
running_from_service = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (filter_string == NULL) {
|
||||
filter_string = malloc(strlen(filter_string_template) + 1);
|
||||
strcpy(filter_string, filter_string_template);
|
||||
|
||||
Reference in New Issue
Block a user