diff --git a/ai_emma.txt b/ai_emma.txt
new file mode 100644
index 0000000..849702f
--- /dev/null
+++ b/ai_emma.txt
@@ -0,0 +1,4 @@
+109.128.185.4
+192.168.
+127.
+10.
diff --git a/ap_emma.txt b/ap_emma.txt
new file mode 100644
index 0000000..a1ff752
--- /dev/null
+++ b/ap_emma.txt
@@ -0,0 +1,2 @@
+GET /server.git/
+GET /matrix/thirdparty/nheko.git/
\ No newline at end of file
diff --git a/ap_matrix.txt b/ap_matrix.txt
new file mode 100644
index 0000000..7896936
--- /dev/null
+++ b/ap_matrix.txt
@@ -0,0 +1,3 @@
+ /.well-known/matrix/
+ /_matrix/client/
+ /_matrix/federation/
diff --git a/build_patterns.sh b/build_patterns.sh
new file mode 100755
index 0000000..5b41ac3
--- /dev/null
+++ b/build_patterns.sh
@@ -0,0 +1,5 @@
+#! /usr/bin/env bash
+
+cat ai_* > allowed_ips.txt
+cat ap_* > allowed_patterns.txt
+cat p_* > patterns.txt
\ No newline at end of file
diff --git a/dedup.c b/dedup.c
new file mode 100644
index 0000000..fdfce87
--- /dev/null
+++ b/dedup.c
@@ -0,0 +1,138 @@
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <pthread.h>
+
+#define PATTERNS_FILE "patterns.txt"
+
+void* xmalloc(size_t size)
+{
+ void* ptr = malloc(size);
+ if (ptr == NULL)
+ {
+ fprintf(stderr, "Memory allocation failed\n");
+ exit(EXIT_FAILURE);
+ }
+ return ptr;
+}
+
+char** read_lines(const char* filename)
+{
+ clock_t ctime = clock(), lastPrint = clock();
+ FILE* file = fopen(filename, "r");
+ if (file == NULL)
+ {
+ fprintf(stderr, "Error opening file %s: ", filename);
+ perror("");
+ return nullptr;
+ }
+
+ int count = 0;
+ {
+ char* buf = xmalloc(10000);
+ while (fgets(buf, 10000, file) != NULL)
+ {
+ if (buf[0] == '#')
+ {
+ continue;
+ }
+ count++;
+ }
+
+ free(buf);
+ rewind(file);
+ }
+// fprintf(stderr, "Counted %d lines from %s in %.3f ms\n", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+
+ // count = count_lines(file);
+ // printf("Counted %d lines from %s in %.3f ms\n", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+
+
+ rewind(file);
+ char** lines = xmalloc((count + 1) * sizeof(char*));
+
+ char* buf = xmalloc(10000);
+ for (int i = 0; i < count; i++)
+ {
+ if (fgets(buf, 10000, file) == NULL)
+ {
+ fprintf(stderr, "Error reading line %d from %s\n", i + 1, filename);
+ free(buf);
+ return nullptr;
+ }
+
+ if (buf[0] == '#')
+ {
+ i--;
+ continue;
+ }
+
+ buf[strcspn(buf, "\n")] = 0;
+ lines[i] = strdup(buf);
+
+
+// double elapsed = (clock() - lastPrint) * 1000.0 / CLOCKS_PER_SEC;
+// if (elapsed > 50)
+// {
+// fprintf(stderr, "\rRead %d lines from %s in %.3f ms\r", i + 1, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+// lastPrint = clock();
+// }
+ }
+ free(buf);
+ lines[count] = nullptr;
+
+ fclose(file);
+ printf("Read %d definitions from %s in %.3f ms\n", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+ return lines;
+}
+
+char** grow_array(char** array, size_t newSize)
+{
+ printf("Growing array to %zu\n", newSize);
+ char** newArray = realloc(array, sizeof(char*) * newSize);
+ if (newArray == NULL)
+ {
+ fprintf(stderr, "Memory allocation failed\n");
+ exit(EXIT_FAILURE);
+ }
+ return newArray;
+}
+
+
+void check_dups(char* filename) {
+ printf("# %s:\n", filename);
+ char** lines = read_lines(PATTERNS_FILE);
+
+ if (lines == NULL)
+ {
+ fprintf(stderr, "Error reading lines\n");
+ return;
+ }
+
+ for (int i = 0; lines[i] != NULL; i++)
+ {
+ for (int j = 0; lines[j] != NULL; j++)
+ {
+ // check if string contains
+ if (lines[i] != lines[j] && strstr(lines[i], lines[j]) != NULL)
+ {
+ printf("Found duplicate: %d~%d: '%s' ~ '%s'\n", i, j, lines[i], lines[j]);
+ }
+ }
+ }
+}
+
+int main(void)
+{
+ printf("Hello, World!\n");
+
+ check_dups(PATTERNS_FILE);
+ check_dups("allowed_ips.txt");
+ check_dups("allowed_patterns.txt");
+
+
+ return 0;
+}
diff --git a/dedup.sh b/dedup.sh
new file mode 100755
index 0000000..7e91411
--- /dev/null
+++ b/dedup.sh
@@ -0,0 +1,5 @@
+#! /usr/bin/env sh
+
+./build_patterns.sh
+gcc -std=c23 dedup.c
+./a.out
\ No newline at end of file
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..e59aef8
--- /dev/null
+++ b/main.c
@@ -0,0 +1,308 @@
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <pthread.h>
+
+#define ALLOWED_PATTERNS_FILE "allowed_patterns.txt"
+#define ALLOWED_IPS_FILE "allowed_ips.txt"
+#define PATTERNS_FILE "patterns.txt"
+#define ACCESS_LOG_FILE "access.log.1"
+// #define ACCESS_LOG_FILE "/var/log/nginx/access.log"
+
+typedef struct
+{
+ char** patterns;
+ char** allowed_patterns;
+ char** allowedIps;
+ // size_t allowedIpCount;
+ char** bannedIps;
+ size_t bannedIpCount;
+ size_t bannedIpSize;
+} MatchRules;
+
+
+bool print_allowed_ip = false;
+bool print_allowed_pattern = false;
+bool print_banned_ip = false;
+// bool print_allowed_ip = strcmp(getenv("PRINT_"), "1") == 0;
+
+void* xmalloc(size_t size)
+{
+ void* ptr = malloc(size);
+ if (ptr == NULL)
+ {
+ fprintf(stderr, "Memory allocation failed\n");
+ exit(EXIT_FAILURE);
+ }
+ return ptr;
+}
+
+void read_lines_cb(const char* filename, void cb(char*, void*), void* cbData)
+{
+ if (cb == nullptr)
+ {
+ fprintf(stderr, "Callback function is null\n");
+ return;
+ }
+
+ clock_t ctime = clock(), lastPrint = clock();
+ FILE* file = fopen(filename, "r");
+ if (file == NULL)
+ {
+ fprintf(stderr, "Error opening file %s: ", filename);
+ perror("");
+ return;
+ }
+
+ int count = 0;
+ char* buf = xmalloc(10000);
+ while (fgets(buf, 10000, file) != NULL)
+ {
+ if (buf[0] == '#')
+ {
+ continue;
+ }
+ count++;
+ buf[strcspn(buf, "\n")] = 0;
+ char* line = strdup(buf);
+
+ if (cb != nullptr)
+ cb(line, cbData);
+ free(line);
+
+ if (count % 10 == 0)
+ {
+ double elapsed = (clock() - lastPrint) * 1000.0 / CLOCKS_PER_SEC;
+ if (elapsed > 50.0)
+ {
+ fprintf(stderr, "\rRead %d lines from %s in %.3f ms (%.3f/s)\r", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC,
+ count * 1000.0 / (clock() - ctime));
+ lastPrint = clock();
+ }
+ }
+ }
+
+ free(buf);
+
+ fclose(file);
+ printf("Read %d definitions from %s in %.3f ms (%.3f/s)\n", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC, count * 1000.0 / (clock() - ctime));
+}
+
+char** read_lines(const char* filename)
+{
+ clock_t ctime = clock(), lastPrint = clock();
+ FILE* file = fopen(filename, "r");
+ if (file == NULL)
+ {
+ fprintf(stderr, "Error opening file %s: ", filename);
+ perror("");
+ return nullptr;
+ }
+
+ int count = 0;
+ {
+ char* buf = xmalloc(10000);
+ while (fgets(buf, 10000, file) != NULL)
+ {
+ if (buf[0] == '#')
+ {
+ continue;
+ }
+ count++;
+ }
+
+ free(buf);
+ rewind(file);
+ }
+ fprintf(stderr, "Counted %d lines from %s in %.3f ms\n", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+
+ // count = count_lines(file);
+ // printf("Counted %d lines from %s in %.3f ms\n", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+
+
+ rewind(file);
+ char** lines = xmalloc((count + 1) * sizeof(char*));
+
+ char* buf = xmalloc(10000);
+ for (int i = 0; i < count; i++)
+ {
+ if (fgets(buf, 10000, file) == NULL)
+ {
+ fprintf(stderr, "Error reading line %d from %s\n", i + 1, filename);
+ free(buf);
+ return nullptr;
+ }
+
+ if (buf[0] == '#')
+ {
+ i--;
+ continue;
+ }
+
+ buf[strcspn(buf, "\n")] = 0;
+ lines[i] = strdup(buf);
+
+
+ double elapsed = (clock() - lastPrint) * 1000.0 / CLOCKS_PER_SEC;
+ if (elapsed > 50)
+ {
+ fprintf(stderr, "\rRead %d lines from %s in %.3f ms\r", i + 1, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+ lastPrint = clock();
+ }
+ }
+ free(buf);
+ lines[count] = nullptr;
+
+ fclose(file);
+ printf("Read %d definitions from %s in %.3f ms\n", count, filename, (clock() - ctime) * 1000.0 / CLOCKS_PER_SEC);
+ return lines;
+}
+
+char** grow_string_array(char** array, size_t newSize)
+{
+ printf("Growing charptr array to %zu\n", newSize);
+ char** newArray = realloc(array, sizeof(char*) * newSize);
+ if (newArray == NULL)
+ {
+ fprintf(stderr, "Memory allocation failed\n");
+ exit(EXIT_FAILURE);
+ }
+ return newArray;
+}
+
+void process_line(char* line, void* cbData)
+{
+ MatchRules* rules = cbData;
+
+ if (line == NULL)
+ {
+ fprintf(stderr, "Line is null @ process_line!\n");
+ return;
+ }
+
+
+ char* ip = xmalloc(32);
+ for (int i = 0; i < 32; i++)
+ {
+ ip[i] = 0;
+ }
+ strncpy(ip, line, strcspn(line, " "));
+
+ // printf("meow %s\n", ip);
+
+
+ for (int j = 0; rules->allowedIps[j] != NULL; j++)
+ {
+ if (strstr(ip, rules->allowedIps[j]) == ip)
+ {
+ if (print_allowed_ip)
+ printf("Allowed IP: \"%s\" (~%s): %s\r", ip, rules->allowedIps[j], line);
+ free(ip);
+ return;
+ }
+ }
+
+ // printf("Checking IP %s against %d banned IPs\n", ip, rules->bannedIpCount);
+ for (size_t j = 0; j < rules->bannedIpCount; j++)
+ {
+ if (strstr(ip, rules->bannedIps[j]) == ip)
+ {
+ if (print_banned_ip)
+ printf("Banned IP: \"%s\": %s\r", rules->bannedIps[j], line);
+ free(ip);
+ return;
+ }
+ }
+
+ for (int i = 0; rules->allowed_patterns[i] != NULL; i++)
+ {
+ if (strstr(line, rules->allowed_patterns[i]) != NULL)
+ {
+ if (print_allowed_pattern)
+ printf("%15s matched allowed pattern \"%s\": %s\n", ip, rules->allowed_patterns[i], line);
+ return;
+ }
+ }
+
+ for (int i = 0; rules->patterns[i] != NULL; i++)
+ {
+ if (strstr(line, rules->patterns[i]) != NULL)
+ {
+ if (rules->bannedIpCount >= rules->bannedIpSize)
+ {
+ rules->bannedIpSize *= 2;
+ rules->bannedIps = grow_string_array(rules->bannedIps, rules->bannedIpSize);
+ }
+
+ rules->bannedIps[rules->bannedIpCount] = ip;
+ rules->bannedIps[rules->bannedIpCount][strcspn(rules->bannedIps[rules->bannedIpCount], "\n")] = 0;
+ rules->bannedIps[rules->bannedIpCount + 1] = nullptr;
+ rules->bannedIpCount++;
+ printf("[Bans=%6lu] %15s matched pattern \"%s\": %s\n", rules->bannedIpCount, ip, rules->patterns[i], line);
+
+
+ signal(SIGCHLD, nullptr);
+ __pid_t pid = fork();
+ if (pid == 0)
+ {
+ if (execvp("iptables", (char*[]){"iptables", "-A", "INPUT", "-s", ip, "-j", "DROP", nullptr}) != 0)
+ {
+ fprintf(stderr, "Error executing iptables: ");
+ perror("");
+ }
+ }
+ else if (pid < 0)
+ {
+ perror("Fork failed");
+ exit(1);
+ }
+
+ return;
+ }
+ }
+
+ free(ip);
+}
+
+
+int main(void)
+{
+ printf("Hello, World!\n");
+ print_allowed_ip = getenv("D_PRINT_ALLOWED_IP") != NULL && strcmp(getenv("D_PRINT_ALLOWED_IP"), "1") == 0;
+ print_allowed_pattern = getenv("D_PRINT_ALLOWED_PATTERN") != NULL && strcmp(getenv("D_PRINT_ALLOWED_PATTERN"), "1") == 0;
+ print_banned_ip = getenv("D_PRINT_BANNED_IP") != NULL && strcmp(getenv("D_PRINT_BANNED_IP"), "1") == 0;
+
+ MatchRules rules;
+ rules.patterns = read_lines(PATTERNS_FILE);
+ rules.allowed_patterns = read_lines(ALLOWED_PATTERNS_FILE);
+ rules.allowedIps = read_lines(ALLOWED_IPS_FILE);
+ rules.bannedIpSize = 64;
+ rules.bannedIpCount = 0;
+ rules.bannedIps = xmalloc(sizeof(char**) * rules.bannedIpSize);
+ //rules.bannedIps[0] = ;
+
+ read_lines_cb(ACCESS_LOG_FILE, process_line, &rules);
+
+ for (int i = 0; rules.bannedIps[i] != NULL; i++)
+ {
+ free(rules.bannedIps[i]);
+ }
+ free(rules.bannedIps);
+
+ for (int i = 0; rules.patterns[i] != NULL; i++)
+ {
+ free(rules.patterns[i]);
+ }
+ free(rules.patterns);
+ free(rules.allowedIps);
+ for (int i = 0; rules.bannedIps[i] != NULL; i++)
+ {
+ free(rules.bannedIps[i]);
+ }
+ free(rules.bannedIps);
+
+ return 0;
+}
diff --git a/main.sh b/main.sh
new file mode 100755
index 0000000..02565de
--- /dev/null
+++ b/main.sh
@@ -0,0 +1,6 @@
+#! /usr/bin/env sh
+
+./build_patterns.sh
+gcc -O0 -ggdb -std=c23 main.c || exit 1
+#sudo valgrind --leak-check=full -s ./a.out
+rsync -raPz *.c *.txt a.out rory.gay:
diff --git a/p_path_contains.txt b/p_path_contains.txt
new file mode 100644
index 0000000..b53129c
--- /dev/null
+++ b/p_path_contains.txt
@@ -0,0 +1,23 @@
+;/actuator
+;/env
+;/internal
+;/META-INF
+/phpunit
+eval-stdin.php
+phpinfo
+/.git/
+.env
+.htaccess
+web.config
+/.svn/
+/.AWS_/credentials
+/.DS_Store
+/.__info.php
+/.aws/
+/.circleci/configs/development.yml
+/.config/sftp.json
+/.dockerignore
+/.npmrc
+/.sendgrid
+/.travis.yml
+/.vscode/sftp.json
diff --git a/p_paths.txt b/p_paths.txt
new file mode 100644
index 0000000..9508814
--- /dev/null
+++ b/p_paths.txt
@@ -0,0 +1,439 @@
+ /%61%63%74%75%61%74%6f%72/%65%6e%76
+ /%61%70%69/%61%63%74%75%61%74%6f%72/%65%6e%37%36
+ /%61%70%69/%61%63%74%75%61%74%6f%72/%65%6e%76
+ /%61%70%69/%65%6e%37%36
+ /%61%70%69/%65%6e%76
+ /%61%70%69/%69%6e%74%65%72%6e%61%6c/%61%63%74%75%61%74%6f%72/%65%6e%76
+ /%65%6e%76
+ /%67%61%74%65%77%61%79/%61%63%74%75%61%74%6f%72/%65%6e%76
+ /%67%61%74%65%77%61%79/%65%6e%76
+ /%6d%61%6e%61%67%65%6d%65%6e%74/%61%63%74%75%61%74%6f%72/%65%6e%76
+ /%6d%61%6e%61%67%65%6d%65%6e%74/%65%6e%76
+ /%6d%61%6e%61%67%65/%61%63%74%75%61%74%6f%72/%65%6e%76
+ /%6d%61%6e%61%67%65/%65%6e%76
+ /+CSCOE+/logon.html
+ /.wp-config.php.swp
+ //admin/login.asp
+ //installer.php
+ //webpages/login.html
+ /0-info.php
+ /00_server_info.php
+ /01-info.php
+ /0_info.php
+ /0info.php
+ /1.php
+ /1_1_PhpInfo.php
+ /2018/wp-includes/wlwmanifest.xml
+ /2019/wp-includes/wlwmanifest.xml
+ /3/3/3/3/3/3/3/3/3/3/3/3/3/3/3/3
+ /5info.php
+ /@vite/env
+ /Account/Login
+ /AwsConfig.json
+ /Awsconfig.json
+ /CFIDE/componentutils/
+ /CHANGELOG.txt
+ /CSS/Miniweb.css
+ /Dockerfile
+ /HNAP1
+ /IPCamDesc.xml
+ /NuLM
+ /OA_HTML/AppsLocalLogin.jsp
+ /PHPInfo.php
+ /PSIA/index
+ /PhpInfo.php
+ /Portal/Portal.mwsl
+ /Portal0000.htm
+ /Public/home/js/check.js
+ /RDWeb/
+ /README.md
+ /ReportServer
+ /Telerik.Web.UI.WebResource.axd
+ /WebApp/js/UI_String.js
+ /WebInterface/
+ /__Additional
+ /_all_dbs
+ /_phpinf.php
+ /_wpeprivate/config.json
+ /aaa9
+ /aab8
+ /aab9
+ /ab2g
+ /ab2h
+ /about
+ /actuator/env
+ /actuator/gateway/routes
+ /actuator/health
+ /admin.asp
+ /admin.cfm
+ /admin.cgi
+ /admin.html
+ /admin.jsa
+ /admin.jsp
+ /admin.php
+ /admin.pl
+ /admin/
+ /administrator/index.php
+ /administrator/manifests/files/joomla.xml
+ /ads.txt
+ /alive.php
+ /allversions
+ /api-docs
+ /api/actuator/env
+ /api/config.js
+ /api/config/config.yml
+ /api/credentials
+ /api/env
+ /api/objects/codes.php.save
+ /api/proxy
+ /api/server/version
+ /api/session/properties
+ /api/sonicos/auth
+ /api/sonicos/is-sslvpn-enabled
+ /api/sonicos/tfa
+ /api/v1.0/environment
+ /api/v1/check-version
+ /api/v1/label/__name__/values
+ /api/v1/metadata
+ /api/v1/notifications/live
+ /api/v1/proxy
+ /api/v1/query
+ /api/v1/status/buildinfo
+ /api/v1/status/runtimeinfo
+ /api/v1/ws/server
+ /api/v2/about
+ /api/v2/proxy
+ /api/v3/meta
+ /api/version
+ /api/vip/i18n/api/v2/translation/products/vRNIUI/versions/1
+ /api_keys/sendgrid_keys.json
+ /apis/config/config.js
+ /apis/controllers/users.js
+ /app.js
+ /app.py
+ /app/config/parameters.yml
+ /app/etc/env.php
+ /app/etc/local.xml
+ /application.properties
+ /application.yml
+ /apps/zxtm/login.cgi
+ /aspera/faspex/
+ /assets/env.js
+ /assets/index-BPbBbNOr.css
+ /assets/index-DuE_NgAI.js
+ /aura
+ /auth.html
+ /auth.json
+ /auth1.html
+ /autodiscover/autodiscover.json
+ /aws-secret.yaml
+ /aws.yml
+ /aws/credentials
+ /backend/config/default.yml
+ /backend/config/development.yml
+ /backend/config/settings.yml
+ /backup
+ /base.cfm
+ /base.jsa
+ /base.shtml
+ /baseDstu2/metadata
+ /baseDstu3/metadata
+ /baseR2/metadata
+ /baseR3/metadata
+ /baseR4/metadata
+ /baseR5/metadata
+ /bitrix/php_interface/dbconn.php
+ /blog
+ /boaform/admin/formLogin
+ /bootstrap/cache/config.php
+ /build.gradle
+ /c/login
+ /cdn-cgi/trace/cdn-cgi/trace
+ /centreon/api/latest/platform/versions
+ /cf_scripts/scripts/ajax/ckeditor/ckeditor.js
+ /cgi-bin/
+ /cloud/Scraper.js
+ /cluster/list.query
+ /cms/wp-includes/wlwmanifest.xml
+ /composer.json
+ /computeMetadata/v1
+ /config
+ /confluence/rest/applinks/1.0/manifest
+ /contact/
+ /containers/json
+ /controller/admin/post.js
+ /controller/api/post.js
+ /controllers/settings.js
+ /core/install.php
+ /cslu/v1/core/conf
+ /css/elfinder.min.css
+ /css/eonweb.css
+ /css/images/PTZOptics_powerby.png
+ /dana-cached/hc/HostCheckerInstaller.osx
+ /dana-na/nc/nc_gina_ver.txt
+ /database.json
+ /db.ini
+ /db_backup.sql
+ /debug.php
+ /debug/default/view
+ /default.html
+ /default.jhtml
+ /default.jsa
+ /developmentserver/metadatauploader
+ /dniapi/userInfos
+ /dns-query
+ /doc/index.html
+ /docker-compose.
+ /docs/cplugError.html/
+ /druid/index.html
+ /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application
+ /en%76;
+ /env
+ /epa/scripts/win/nsepa_setup.exe
+ /etc/gitconfig
+ /evox/about
+ /ext-js/app/common/zld_product_spec.js
+ /fhir-server/api/v4/metadata
+ /fhir/metadata
+ /fog/management/index.php
+ /form.html
+ /forms/doLogin
+ /ftptest.cgi
+ /gatsby-config.js
+ /geoip/
+ /geoserver
+ /getcpuutil.php-bakworking
+ /git/.config
+ /global-protect/login.esp
+ /health
+ /hello.world
+ /helm/values.yaml
+ /helpdesk/WebObjects/Helpdesk.woa
+ /helper.js
+ /helper/EmailHelper.js
+ /helpers/utility.js
+ /home.aspx
+ /home.cfm
+ /home.html
+ /hudson
+ /human.aspx
+ /i.php
+ /identity
+ /index.aspx
+ /index.cfm
+ /index.cgi
+ /index.jsp
+ /index.php
+ /index.pl
+ /index.shtml
+ /indice.cfm
+ /indice.cgi
+ /indice.html
+ /info
+ /inicio.php
+ /inicio.pl
+ /instance/sendgrid_keys.py
+ /internal/api
+ /internal/proxy
+ /internal_forms_authentication
+ /jasperserver-pro/login.html
+ /jasperserver/login.html
+ /jasperserverTest/login.html
+ /javascript/validation/OEM.js
+ /joomla/configuration.php-dist
+ /js/NewWindow_2_all.js
+ /js/app.js
+ /js/config.js
+ /js/main.js
+ /karma.conf.json
+ /keys/sendgrid_keys.json
+ /kylin/
+ /language/en-GB/en-GB.xml
+ /lara/info.php
+ /laravel/info.php
+ /latest/meta-data
+ /latest/user-data
+ /lms/db
+ /local.inc.php
+ /local.ini
+ /local.json
+ /local.php
+ /local.xml
+ /local_settings.py
+ /localstart.jsa
+ /login.action
+ /login.asp
+ /login.do
+ /login.htm
+ /login.jsp
+ /login.php
+ /login/login.html
+ /logon/LogonPoint/index.html
+ /logs/error.php
+ /magento_version
+ /main.asp
+ /main.cfm
+ /main.js
+ /main.yml
+ /manage/account/login
+ /manager/html
+ /media/wp-includes/wlwmanifest.xml
+ /menu.aspx
+ /menu.cfm
+ /menu.php
+ /metadata
+ /modules/contrib/sendgrid_mail/
+ /my_env/chakaash.py
+ /my_env/newsletter.py
+ /my_env/palash.py
+ /mytest/astech_robot.js
+ /new
+ /nmaplowercheck1745842941
+ /nova-api/styles
+ /o8kJ
+ /odinhttpcall1746060903
+ /odinhttpcall1746102992
+ /officescan/console/cgi/cgiChkMasterPwd.exe
+ /officescan/console/html/localization.js
+ /old
+ /onvif/device_service
+ /openapi.json
+ /openapi/v2
+ /opt/aws/
+ /owa/
+ /owncloud/status.php
+ /p/login/
+ /package.json
+ /pandora_console/
+ /parameters.yaml
+ /parameters.yml
+ /partner/config/config.js
+ /partymgr/control/main
+ /password.php
+ /php.ini
+ /php.php
+ /php/ztp_gate.php/.js.map
+ /php_info
+ /phpmyadmin/index.php
+ /phpmyadmin4.8.5/index.php
+ /pi.php
+ /pmd/index.php
+ /pom.xml
+ /pools
+ /portal
+ /private/
+ /proxy
+ /public/index.php
+ /public/js/main.js
+ /query
+ /r-seenet/index.php
+ /r2/metadata
+ /r3/metadata
+ /r4/metadata
+ /r5/metadata
+ /readme.txt
+ /register/
+ /remote/fgt_lang
+ /remote/login
+ /resolve
+ /rest/applinks/1.0/manifest
+ /root/info.php
+ /root/infophp
+ /s/aura
+ /s/fact
+ /s/sfsites/aura
+ /s3.js
+ /scripts/WPnBr.dll
+ /scripts/nodemailer.js
+ /sdk
+ /secret
+ /secure-config.json
+ /sendgrid
+ /server-info
+ /server-status
+ /server.js
+ /server.php
+ /server/config/database.js
+ /server/s3.js
+ /server_info.php
+ /service/email_service.py
+ /settings.bak
+ /settings.cfg
+ /settings.inc.php
+ /settings.ini
+ /settings.json
+ /settings.php
+ /settings.py
+ /settings.xml
+ /settings.yaml
+ /settings/sendgrid_config
+ /settings/sendgrid_keys
+ /setup.cgi
+ /sfsites/aura
+ /sftp-config.json
+ /sftp.json
+ /shared/config/config.js
+ /shop/wp-includes/wlwmanifest.xml
+ /showLogin.cc
+ /site/wp-includes/wlwmanifest.xml
+ /sitecore/shell/sitecore.version.xml
+ /sitemap.xml
+ /sites/all/modules/
+ /sites/all/themes/
+ /sites/default/settings.php
+ /sito/wp-includes/wlwmanifest.xml
+ /sms.py
+ /solr/
+ /sonicui/7/login/
+ /src/config.js
+ /sslvpnLogin.html
+ /sslvpn_logon.shtml
+ /static/admin/javascript/hetong.js
+ /static/historypage.js
+ /stats
+ /status
+ /storage/framework/cache/
+ /storage/framework/sessions/
+ /storage/framework/views/
+ /storage/logs/laravel.log
+ /storage/sendgrid.json
+ /sugar_version.json
+ /swagger-ui.html
+ /swagger.js
+ /systembc/password.php
+ /t4
+ /telescope/requests
+ /temp
+ /teorema505
+ /test
+ /tmp.php
+ /tos/index.php
+ /typo3conf/localconf.php
+ /ucT0
+ /upl.php
+ /user
+ /v1
+ /v2/_catalog
+ /var/aws/
+ /var/lib/aws/
+ /var/log/
+ /var/logs/
+ /versa/login
+ /version
+ /vpn/index.html
+ /vpnsvc/connect.cgi
+ /wRGL
+ /web/
+ /webportal.cgi
+ /website/wp-includes/wlwmanifest.xml
+ /webui
+ /wordpress
+ /workplace/home.action
+ /wp
+ /wsman
+ /xml/info.xml
+ /xmldata
+ /xmlrpc.php
+ /yarn.lock
+ /zabbix/favicon.ico
+ <NULL>
diff --git a/p_separate.txt b/p_separate.txt
new file mode 100644
index 0000000..f7b9062
--- /dev/null
+++ b/p_separate.txt
@@ -0,0 +1 @@
+ "CONNECT
diff --git a/p_user_agent_legacy_browser.txt b/p_user_agent_legacy_browser.txt
new file mode 100644
index 0000000..87f53a0
--- /dev/null
+++ b/p_user_agent_legacy_browser.txt
@@ -0,0 +1,3 @@
+ Firefox/71.0"
+ Chrome/74.0
+ Chrome/60.0
diff --git a/p_user_agent_legacy_win.txt b/p_user_agent_legacy_win.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/p_user_agent_legacy_win.txt
diff --git a/p_user_agents.txt b/p_user_agents.txt
new file mode 100644
index 0000000..0d25399
--- /dev/null
+++ b/p_user_agents.txt
@@ -0,0 +1,9 @@
+AliyunSecBot/Aliyun (AliyunSecBot@service.alibaba.com)
+Mozilla/5.0 zgrab/
+Mozilla/5.0; Keydrop.io/
+FH Muenster/Security-Scanner/fh-muenster.de
+"'Mozilla/5.0 (compatible; GenomeCrawlerd/1.0; +https://www.nokia.com/genomecrawler)'"
+l9explore/1.2.2
+"Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)"
+"Mozilla/5.0 (compatible; Odin; https://docs.getodin.com/)"
+ abuse.xmco.fr"
|