From 8b93b0644c2f9c577190faec6fd3eed5952eb449 Mon Sep 17 00:00:00 2001 From: Shish <shish@shishnet.org> Date: Wed, 3 Feb 2010 14:29:55 +0000 Subject: [PATCH] postgres barfs if you try to compare a string to an inet_addr --- contrib/log_db/main.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/contrib/log_db/main.php b/contrib/log_db/main.php index b1b8b5b6..6c8fb03e 100644 --- a/contrib/log_db/main.php +++ b/contrib/log_db/main.php @@ -55,9 +55,22 @@ class LogDatabase extends SimpleExtension { $args[] = $_GET["module"]; } if(!empty($_GET["user"])) { - $wheres[] = "(username = ? OR address = ?)"; - $args[] = $_GET["user"]; - $args[] = $_GET["user"]; + if($database->engine->name == "pgsql") { + if(preg_match("#\d+\.\d+\.\d+\.\d+(/\d+)?#", $_GET["user"])) { + $wheres[] = "(username = ? OR address << ?)"; + $args[] = $_GET["user"]; + $args[] = $_GET["user"]; + } + else { + $wheres[] = "lower(username) = lower(?)"; + $args[] = $_GET["user"]; + } + } + else { + $wheres[] = "(username = ? OR address = ?)"; + $args[] = $_GET["user"]; + $args[] = $_GET["user"]; + } } if(!empty($_GET["priority"])) { $wheres[] = "priority >= ?";