Seite 18 von 26

Re: IP tracking

Verfasst: 29.12.2009 22:09
von Bierhasser
was für einen phpbb Version verwendest du?

Re: IP tracking

Verfasst: 29.12.2009 22:19
von Tim
Die 3.0.2er noch. Habe auch an jeder Stelle eine Fehlermeldung gehabt, beim Aktivieren der MOD kamen nur noch Fehlermeldungen, aus diesem Grund habe ich die MOD wieder manuel ausgebaut. Allerdings funktioniert der Installer beim Deinstallieren nicht (steht ja auch auf der Downloadseite, dass das unter 3.0.5 nicht funktioniert), darum muss ich aber jetzt wissen, was der Installer gemacht hat und wie ich das wieder raus bekomme. :wink:
Denn im Adminbereich habe ich nach dem manuellen Ausbau trotzdem noch die Einträge: http://img696.imageshack.us/img696/4664 ... ion126.png

Danke für deine Hilfe, LG Tim

Re: IP tracking

Verfasst: 29.12.2009 22:46
von Bierhasser
Du kannst die Fehlermeldung umgehen, in dem du die Datei includes/conf_ip_tracking.php auf chmod 777 setzt.
Und die Datei includes/functions_ip_tracking.php mit diesem Inhalt ersetzt:

Code: Alles auswählen

<?php
/**
*
* @author Bierhasser http://www.phpbb.de/community/memberlist.php?mode=viewprofile&u=3383
* @package Ip-Tracking
* @version 1.0.0
* @copyright (c) Bierhasser 2009
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

if (!defined('IN_PHPBB'))
{
    exit;
}

function track_ip ()
{
    global $db, $user, $auth, $_SERVER, $phpbb_root_path, $phpEx;

    $ip_conf = array();

    if ( file_exists($phpbb_root_path.'includes/conf_ip_tracking.'.$phpEx) )
    {
        include($phpbb_root_path.'includes/conf_ip_tracking.'.$phpEx);
    }
    else
    {
        return;
    }

    if ( !isset($ip_conf['log_admin']) || !isset($ip_conf['log_user']) || !isset($ip_conf['log_guest']) || !isset($ip_conf['log_bot']))
    {
        return;
    }

    // Alte Logeinträge löschen?
    if ( isset($ip_conf['log_last_rotate']) && isset($ip_conf['log_next_rotate']) )
    {
        $now = time();
        if ( $now >= $ip_conf['log_next_rotate'] && (int)$ip_conf['log_rotate'] > 0 )
        {
            $sql = 'DELETE FROM ' . IP_TRACK_TABLE . ' WHERE ip_time <= \''.$db->sql_escape($ip_conf['log_last_rotate']).'\'';
            $db->sql_query($sql);

            $sql = 'SELECT ip_time FROM ' . IP_TRACK_TABLE . ' ORDER BY ip_time ASC';
            $result = $db->sql_query_limit($sql, 1);
            $db->sql_return_on_error(false);

            if ((bool) $result === false)
            {
                $ip_first_entry = time();
            }
            else
            {
                $ip_first_entry = $db->sql_fetchfield('ip_time');
                $db->sql_freeresult($result);
            }

            $ip_conf['first_entry'] = $ip_first_entry;
            $ip_conf['log_last_rotate'] = time();
            $ip_conf['log_next_rotate'] = $ip_conf['log_last_rotate'] + (86400 * $ip_conf['log_rotate']);
            $ip_conf = safe_ip_conf($ip_conf);
        }
    }

    $usertype = ( $auth->acl_get('a_') ) ? 3 : $user->data['user_type'];
    $usertype = ( $user->data['is_bot'] ) ? 4 : $usertype;

    if ( !$ip_conf['log_admin'] && $usertype == 3 )
    {
        return;
    }
    if ( !$ip_conf['log_user'] && $usertype == 0 )
    {
        return;
    }
    if ( !$ip_conf['log_bot'] && $usertype == 4 )
    {
        return;
    }
    if ( !$ip_conf['log_guest'] && $usertype == 2 )
    {
        return;
    }

    $browser = $user->browser;
    if (strlen($browser) > 255)
    {
        $browser = substr($browser, 0, 255);
    }

    $referer = ( isset($_SERVER["HTTP_REFERER"]) ) ? $_SERVER["HTTP_REFERER"] : '';

    $ip_data = array(
                'ip_ip'        => $user->ip,
                'ip_time'        => time(),
                'ip_location'    => $db->sql_escape($_SERVER["REQUEST_URI"]),
                'ip_referer'    => $db->sql_escape($referer),
                'ip_username'    => $user->data['username'],
                'ip_user_id'    => $user->data['user_id'],
                'ip_user_type'    => $usertype,
                'ip_browser'    => $db->sql_escape($browser)
            );
    $db->sql_query('INSERT INTO ' . IP_TRACK_TABLE . ' ' . $db->sql_build_array('INSERT', $ip_data));
}

function safe_ip_conf($new = '' )
{

    // array?
    if ( !is_array($new) )
    {
        return FALSE;
    }

    // ist im array überhaupt ein wert?
    if ( count($new) < 1 )
    {
        return false;
    }

    $tmp_conf = array();

    //neue Werte $ip_conf zuweisen
    foreach( $new as $k => $v )
    {
        if ( strlen($k) > 0 )
        {
            $v = preg_replace( "/'/", "\\'" , $v );
            $v = preg_replace( "/\r|\n/", ""   , $v );
            $tmp_conf[ $k ] = $v;
        }
    }

    global $phpbb_root_path, $phpEx;

    ksort($tmp_conf);

    $file_string = '<?php
/**
*
* @author Bierhasser http://www.phpbb.de/community/memberlist.php?mode=viewprofile&u=3383
* @package Ip-Tracking
* @version 1.0.0
* @copyright (c) Bierhasser 2009
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/';
    foreach( $tmp_conf as $k => $v )
    {
        $v = ( is_numeric($v) ) ? (int)$v : "'$v'";
        $file_string .= "\n" . '$ip_conf[\'' . $k . '\'] = ' . $v . ';';
    }
    $file_string .= "\n?>";

    // schreibe neue conf_
    if ( $fh = @fopen($phpbb_root_path.'includes/conf_ip_tracking.'.$phpEx, 'w' ) )
    {

        fwrite($fh, $file_string, strlen($file_string) );
        fclose($fh);
        #phpbb_chmod($phpbb_root_path.'includes/conf_ip_tracking.'.$phpEx, CHMOD_WRITE);
    }
    return $tmp_conf;
}
?>


Zum löschen des Mods:
AdminCp -> System -> Modul-Konfiguration = Administrations Bereich -> Mods -> Ip Tracker

Alle Module löschen. Anschließend noch das Modul Ip Tracker entfernen.

In deiner phpbb_config Tabelle muss der Eintrag ip_tracking entfernt werden.

Code: Alles auswählen

DELETE FROM phpbb_config WHERE config_name = 'ip_tracking'
Die Tabelle phpbb_ip_tracking muss ebenfalls entfernt werden.

Code: Alles auswählen

DROP TABLE `phpbb_ip_tracking`

Re: IP tracking

Verfasst: 19.01.2010 08:00
von jevo
Ich wollte nur mal ein kleines Feedback geben:

Mod geht super und kam echt keine sekunde zu spät. Ich nutze den jedenfalls sehr oft, gerade nach sperrungen, weil sich mal wieder jemand nicht benehmen konnte.

Fehler habe ich keine entdecken können, das einzige, was ich mal nachschaun muß ist, wie ich mehr Zeilen angezeigt bekommen kann - und das standardmäßig. z.b. 5000 wäre perfekt.

zur Performance: ich habe ca 1,6Mio Einträge (es wurden noch nie welche gelöscht)

die Konfig Seite dauert: 1.934s
Suche Seite: 0.924s (bei 500 Zeilen)
Multi Account: 27.165s + 1,9s um herauszufinden, daß 33057 Queries gemacht werden müssen

In meinem Server werkelt aber auch ein Core i7 :)

Re: IP tracking

Verfasst: 25.01.2010 12:34
von John Doe
Bei mir werden die Einträge nicht nach dem eingestellten Intervall gelöscht.

z.B

Zeitraum für Aufzeichnung: 7Tage

Letzte Log Löschung: 18.01.2010 13:35
Nächste Log Löschung: 25.01.2010 13:35
Erster Ip Tracker Eintrag 16.01.2010 01:28

Heute am 26.01. waren keine logs gelöscht.
Es sind alle logs vom 16.01. bis 26.01 da.

phpbb 3.0.6 MySQL 5.0.51a

Re: IP tracking

Verfasst: 25.01.2010 12:39
von Bierhasser
Danke Für die Info. Muss ich nochmal nach sehen.

Re: IP tracking

Verfasst: 25.01.2010 14:48
von John Doe
Oh mann, ganz doll. :oops:
John Doe hat geschrieben:Heute am 26.01. waren keine logs gelöscht.
Es sind alle logs vom 16.01. bis 26.01 da.
Da heute erst der 25.1. ist und die logs grade gelöscht wurden, ist alles in Ordnung. :)

Re: IP tracking

Verfasst: 25.01.2010 14:53
von Bierhasser
Danke für die Rückmeldung.

Re: IP tracking

Verfasst: 26.01.2010 00:16
von praesnceal
Ich bekomme beim ausführen des installers leider den Fehler "Allgemeiner Fehler" Diese Aktion kann nur ein Gründer ausführen!" Einer ne Idee? Habe phpBB 3.0.6 und IP Tracking 1.0.0.

lg

Re: IP tracking

Verfasst: 26.01.2010 00:23
von Mahony
Hallo
Bist du Gründer und bist du auch im Forum angemeldet, wenn du den installer aufrufst?
Ansonsten würde es auch helfen diesen code

Code: Alles auswählen

if ($user->data['user_type'] != USER_FOUNDER)
{
    $template->assign_var('T_TEMPLATE_PATH', $phpbb_root_path . 'styles/' . $user->theme['template_path'] . '/template');
    trigger_error($user->lang['NEED_FOUNDER'], E_USER_ERROR);
} 
aus der installer_iptracker/index.php zu entfernen. Danach, solltest du allerdings nicht vergessen das Verzeichnis installer_iptracker zu löschen.

Grüße: Mahony