working now

main
Brett 2023-10-25 16:45:09 -04:00
parent d4eaa5e1aa
commit 841597d46f
7 changed files with 39 additions and 9 deletions

Binary file not shown.

View File

@ -25,3 +25,9 @@
7588 7791 1698262928938405252 insane_dns ff5ae500893d0be1 7588 7791 1698262928938405252 insane_dns ff5ae500893d0be1
5 7595 1698262972765775585 CMakeFiles/insane_dns.dir/src/main.cpp.o 727da43cdbc82421 5 7595 1698262972765775585 CMakeFiles/insane_dns.dir/src/main.cpp.o 727da43cdbc82421
7595 7803 1698262972985772451 insane_dns ff5ae500893d0be1 7595 7803 1698262972985772451 insane_dns ff5ae500893d0be1
3 2885 1698265110010893560 CMakeFiles/insane_dns.dir/src/main.cpp.o 727da43cdbc82421
2885 2976 1698265110106892250 insane_dns ff5ae500893d0be1
2 2934 1698265309664228253 CMakeFiles/insane_dns.dir/src/main.cpp.o 727da43cdbc82421
2935 3019 1698265309752227101 insane_dns ff5ae500893d0be1
2 3015 1698266342759371787 CMakeFiles/insane_dns.dir/src/main.cpp.o 727da43cdbc82421
3015 3112 1698266342859370576 insane_dns ff5ae500893d0be1

View File

@ -1,3 +1,3 @@
Start testing: Oct 25 15:42 EDT Start testing: Oct 25 16:39 EDT
---------------------------------------------------------- ----------------------------------------------------------
End testing: Oct 25 15:42 EDT End testing: Oct 25 16:39 EDT

Binary file not shown.

View File

@ -21,7 +21,10 @@ struct IPAddress
auto data = blt::string::split(str, '.'); auto data = blt::string::split(str, '.');
BLT_ASSERT(data.size() == 4); BLT_ASSERT(data.size() == 4);
for (size_t i = 0; i < data.size(); i++) for (size_t i = 0; i < data.size(); i++)
data[i] = static_cast<unsigned char>(std::stoul(data[i])); {
octets[i] = static_cast<unsigned char>(std::stoul(data[i]));
BLT_TRACE("%d", octets[i]);
}
} }
constexpr IPAddress(unsigned char oct[4]) constexpr IPAddress(unsigned char oct[4])

View File

@ -21,7 +21,7 @@
* | CONFIG | * | CONFIG |
* ---------------------------- * ----------------------------
*/ */
// should we strictly match results? ie block *.wikipedia.org or just wikipedia.org? // should we strictly match results? ie block *wikipedia.org* or just wikipedia.org?
static constexpr bool STRICT_MATCHING = false; static constexpr bool STRICT_MATCHING = false;
// true -> only match A records ; false -> match any named record (A, AAAA, CNAME) // true -> only match A records ; false -> match any named record (A, AAAA, CNAME)
static constexpr bool STRICT_FILTERING = false; static constexpr bool STRICT_FILTERING = false;
@ -170,6 +170,11 @@ class answer
BLT_TRACE("%d, %d, %d, %d, %d", NAME, TYPE, CLASS, TTL, RDLENGTH); BLT_TRACE("%d, %d, %d, %d, %d", NAME, TYPE, CLASS, TTL, RDLENGTH);
} }
[[nodiscard]] uint16_t type() const
{
return TYPE;
}
void substitute(const IPAddress& addr) void substitute(const IPAddress& addr)
{ {
BLT_ASSERT(RDLENGTH == 4); BLT_ASSERT(RDLENGTH == 4);
@ -235,9 +240,6 @@ class send_buffer
} else if constexpr (std::is_same_v<T, std::string>) } else if constexpr (std::is_same_v<T, std::string>)
{ {
static_assert("No"); static_assert("No");
// std::memcpy(&internal_data[write_index], &t[0], t.length());
// write_index += t.length();
// write('\0');
} else if constexpr (std::is_same_v<T, answer>) } else if constexpr (std::is_same_v<T, answer>)
{ {
write(t.NAME); write(t.NAME);
@ -291,6 +293,19 @@ class send_buffer
} }
}; };
bool shouldReplace(const answer& a)
{
return a.type() == 1;
}
void process_answers(std::vector<answer>& answers)
{
for (auto& a : answers)
{
if (shouldReplace(a))
a.substitute(REPLACEMENT_IP());
}
}
int main() int main()
{ {
@ -336,8 +351,14 @@ int main()
} }
BLT_INFO("DOMAIN: %s", q().c_str()); BLT_INFO("DOMAIN: %s", q().c_str());
for (auto& a : answers) if (STRICT_MATCHING && DISALLOWED_DOMAINS.contains(q()))
a.substitute(REPLACEMENT_IP()); process_answers(answers);
else if (!STRICT_MATCHING)
{
for (const auto& v : DISALLOWED_DOMAINS)
if (blt::string::contains(q(), v))
process_answers(answers);
}
send_buffer send; send_buffer send;
send.write(mod_recv_buf.data(), 12); send.write(mod_recv_buf.data(), 12);