not previous included files added
authorMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Wed, 11 Feb 2015 07:17:38 +0000 (08:17 +0100)
committerMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Wed, 11 Feb 2015 07:17:38 +0000 (08:17 +0100)
web/Obj/proxy_detector.phh [new file with mode: 0644]
web/proxy_check.php [new file with mode: 0644]
webtest/proxy_mock.php [new file with mode: 0644]

diff --git a/web/Obj/proxy_detector.phh b/web/Obj/proxy_detector.phh
new file mode 100644 (file)
index 0000000..0792521
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+/*
+ *     Proxy Detector v0.1 with curl-de-sac customizations
+ *             copyrights by: Daantje Eeltink (me@daantje.nl)
+ *                                             http://www.daantje.nl
+ *
+ *             first build: Mon Sep 18 21:43:48 CEST 2006
+ *             last build: Tue Sep 19 10:37:12 CEST 2006
+ *
+ *     Description:
+ *             This class can detect if a visitor uses a proxy server by scanning the
+ *             headers returned by the user client. When the user uses a proxy server,
+ *             most of the proxy servers alter the header. The header is returned to
+ *             PHP in the array $_SERVER.
+ *
+ *     License:
+ *             GPL v2 licence. (http://www.gnu.org/copyleft/gpl.txt)
+ */
+
+class ProxyDetector {
+    
+    /**
+     * CONSTRUCTOR
+     * Set defaults...
+     */
+    function ProxyDetector(){
+    }
+    
+    /*
+      function exists_in_rbl($remote)
+      verify if an host is into a proxy black list or not
+    */
+    function exists_in_rbl($remote) {
+        $rbls = array('http.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net');
+        
+        if (preg_match("/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/",
+                       $remote, $matches)) {
+            foreach ($rbls as $rbl) {
+                $rblhost = $matches[4] . "." . $matches[3] . "." .
+                    $matches[2] . "." . $matches[1] . "." . $rbl;
+                
+                $resolved = gethostbyname($rblhost);
+                // echo "RBL ".$rblhost."<br>";
+                if ($resolved != $rblhost) {
+                    return TRUE;
+                }
+            }
+        }
+        return FALSE;
+    }
+    
+    /**
+     * BOOL $proxy = detect( $addr )
+     * Start detection and return TRUE if a proxy server is detected...
+     */
+    function detect($addr){
+        if ($this->exists_in_rbl($addr) == TRUE)
+            return (TRUE);
+
+        //nope, no proxy was logged...
+        return FALSE;
+    }
+}
+
+//init class
+function is_proxy($addr)
+{
+    $proxy = new ProxyDetector();
+    
+    //start detect
+    return ($proxy->detect($addr));
+}
+
+?>
\ No newline at end of file
diff --git a/web/proxy_check.php b/web/proxy_check.php
new file mode 100644 (file)
index 0000000..e0e5320
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+/*
+ *  curl-de-sac - proxy_check
+ *
+ *  Copyright (C) 2014-2015 Matteo Nastasi
+ *                          mailto: nastasi@alternativeoutput.it
+ *                                  matteo.nastasi@milug.org
+ *                          web: http://www.alternativeoutput.it
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABLILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details. You should have received a
+ * copy of the GNU General Public License along with this program; if
+ * not, write to the Free Software Foundation, Inc, 59 Temple Place -
+ * Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+$G_base = "./";
+
+require($G_base . 'Obj/proxy_detector.phh');
+
+function main()
+{
+    GLOBAL $_POST;
+    
+    $hea = apache_request_headers();
+
+    print_r($hea);
+
+    $addr = $_POST['conn_ip'];
+
+    if (is_proxy($addr)) {
+        printf("is_proxy=true\n");
+    }
+    else {
+        printf("is_proxy=false\n");
+    }
+}
+
+main();
+?>
\ No newline at end of file
diff --git a/webtest/proxy_mock.php b/webtest/proxy_mock.php
new file mode 100644 (file)
index 0000000..71c90e6
--- /dev/null
@@ -0,0 +1,3 @@
+<?php
+echo "is_proxy = false";
+?>