Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Spam na PW - łatka do najnowszego IP.Board 2.3.6


Rekomendowane odpowiedzi

  • Manager

Zgodnie z powtarzającymi się głosami o rozsyłaniu spamu za pomocą prywatnych wiadomości na wielu forach IPS wydał kilka minut temu łatę bezpieczeństwa do najnowszego IP.Board w wersji 2.3.6.

By pobrać pliki należy zalogować się na oficjalnym forum i pobrać ten załącznik:

http://forums.invisionpower.com/index.php?...attach_id=18174

Po rozpakowaniu należy wykonać kolejno:

  1. Wysłać wszystkie pliki na serwer FTP z wyjątkiem "ipb_settings_partial.xml".
  2. Zalogować się do ACP.
  3. Przejść do zakładki Tools & Settings.
  4. Przewinąć na sam dół do menu "XML settings file tools".
  5. Wybrać plik z dysku HDD o nazwie "ipb_settings_partial.xml".
  6. Kliknąć button "Run Tool".

Od teraz w menu "Personal Message Set-up" pojawią się nowe ustawienia odpowiedzialne za kontrolę antyfloodową na PW.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość lukasz1989

cos jest jednak nie tak... gdy wchodze do swojej skrzynki u gory mam:

(), 'mt_title' => $this->msg_title, 'mt_from_id' => $this->from_member['id'], 'mt_to_id' => $this->send_to_member['id'], 'mt_vid_folder' => 'unsent', 'mt_hide_cc' => intval($this->ipsclass->input['mt_hide_cc']), 'mt_tracking' => intval($this->ipsclass->input['add_tracking']), 'mt_addtosent' => $this->ipsclass->input['add_sent'] == 'yes' ? 1 : 0, 'mt_hasattach' => intval($no_attachments), 'mt_owner_id' => $this->from_member['id'], ) ); } $this->redirect_url = "&act=Msg&CODE=01"; $this->redirect_lang = $this->ipsclass->lang['pms_redirect']; } } /*-------------------------------------------------------------------------*/ // Return count of current VDIR (quickly) /*-------------------------------------------------------------------------*/ function _get_dir_count( $vdir, $vid ) { preg_match( "#(?:^|\|)$vid:.+?;(\d+)(?:\||$)#i", $vdir, $match ); return intval($match[1]); } /*-------------------------------------------------------------------------*/ // Get real allowance based on multi-groups /*-------------------------------------------------------------------------*/ function _get_real_allowance( $member ) { $groups_id = explode( ',', $member['mgroup_others'] ); if ( count( $groups_id ) ) { foreach( $groups_id as $pid ) { if ( !isset($this->ipsclass->cache['group_cache'][ $pid ]['g_id']) OR !$this->ipsclass->cache['group_cache'][ $pid ]['g_id'] ) { continue; } if ( $member['g_max_messages'] > 0 AND $this->ipsclass->cache['group_cache'][ $pid ]['g_max_messages'] > $member['g_max_messages'] ) { $member['g_max_messages'] = $this->ipsclass->cache['group_cache'][ $pid ]['g_max_messages']; } else if ( $this->ipsclass->cache['group_cache'][ $pid ]['g_max_messages'] == 0 ) { $member['g_max_messages'] = 0; } } } return $member; } } ?>

Odnośnik do komentarza
Udostępnij na innych stronach

Moja rada: nie wgrywajcie tych plików w całości bo możecie nadpisać kod dodany poprzez inne modyfikacje i "rozwalicie" sobie forum

Tu podaję bezpieczny sposób wprowadzania zmian.

W pliku lang_error.php (katalog cache\lang_cache\en\) dodajcie nad linią:

'awaiting_coppa' => "Twoje konto może zostać założone dopiero po przesłaniu zgody rodziców. Zaraz po jej odebraniu, Twoje konto zostanie utworzone, o czym zostaniesz poinformowany(a) mail'em",

wpis:

'pm_flood_error' => "You cannot send another PM until <#EXTRA#>",

Zapisać i wysłać na serwer

W pliku messenger.php(katalog sources\action_public\) dodajcie nad linią:

//-----------------------------------------
	// Did we remove an attachment?
	//-----------------------------------------

wpis:

//-----------------------------------------
	// Check for flood control
	//-----------------------------------------

	$this->msglib->floodControlCheck( TRUE );

Zapisać i wysłać na serwer

W pliku func_msg.php(katalog sources\lib\) dodajcie nad linią:

/*-------------------------------------------------------------------------*/
// Generate the UserCP menu
/*-------------------------------------------------------------------------*/

wpis:

/**
 * Flood control check
 *
 * @access	public
 * @param	bool		TRUE (inline error) FALSE (return TRUE for OK to continue, FALSE for flood stopped)
 * @return	boolean
 */
function floodControlCheck( $inlineError=FALSE )
{
	/* INIT */
	$groups = array( $this->ipsclass->member['mgroup'] );

	/* Disabled PM flood? */
	if ( ! $this->ipsclass->vars['pm_flood_min'] )
	{
		return TRUE;
	}

	/* Forcing a PM, bypass the check */
	if ( $this->force_pm )
	{
		return TRUE;
	}

	/* Ensure we have a member */
	if ( ! $this->ipsclass->member['id'] )
	{
		return FALSE;
	}

	/* Build up complete groups list */
		if ( $this->ipsclass->member['mgroup_others'] )
		{
 		$_groups = explode( ",", $this->ipsclass->member['mgroup_others'] );
 		$groups  = array_merge( $groups, $_groups );
		}

	/* Check it */
	if ( $this->ipsclass->vars['pm_flood_bypass'] )
	{
		$_g = explode( ",", $this->ipsclass->vars['pm_flood_bypass'] );

		foreach( $groups as $member_group )
 		{
	 		if ( in_array( $member_group, array_values( $_g ) ) )
			{
				return TRUE;
			}
	 	}
	}

	/* Still here? Grab their last sent PM */
	$pm = $this->ipsclass->DB->build_and_exec_query( array( 'select' => 'MAX(mt_date) as max',
															'from'   => 'message_topics',
															'where'  => 'mt_from_id=' . $this->ipsclass->member['id'] ) );

	if ( $pm['max'] )
	{
		$_check = time() - ( intval( $this->ipsclass->vars['pm_flood_min'] ) * 60 );

		if ( $pm['max'] >= $_check )
		{
			/* Last PM is more recent */
			if ( $inlineError )
			{
				$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'pm_flood_error', 'EXTRA' => $this->ipsclass->get_date( $pm['max'] + ( intval( $this->ipsclass->vars['pm_flood_min'] ) * 60 ), 'LONG', 1 ) ) );
			}
			else
			{
				return FALSE;
			}
		}
		else
		{
			/* Last PM is older */
			return TRUE;
		}
	}
}

Następnie w tym samym pliku poszukajcie:

//-----------------------------------------
			// Just an id...
			//-----------------------------------------

			$tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'name, members_display_name', 'from' => 'members', 'where' => 'id='.$this->to_by_id ) );

			$this->to = $tmp['members_display_name'];
		}

i dodajcie po tym wpis:

//-----------------------------------------
	// Flood check again
	//-----------------------------------------

	$this->floodControlCheck( TRUE );

Zapisać i wysłać na serwer.

A potem tak jak pisze DawPi zalogować się do ACP>>Ustawienia, na samym dole strony w Ustawienia XML>>Wgraj XML wskazać lokalizację pliku ipb_settings_partial na naszym dysku twardym a następnie dać Uruchom

Jak już wszystko zrobicie po instalacji pojawią się w ACP>>Ustawienia>>Personal Message Set-up dwa nowe wpisy

PM Flood Control

Enter the number of minutes users must wait between sending PMs. Enter 0 to disable flood control entirely.

Wpisujecie liczbę minut ile będzie musiał odczekać użytkownik zanim będzie mógł wysłać kolejne PM. Wpisanie 0 (zero) wyłącza ograniczenie.

Pm Flood Control Bypass

Select which member groups you wish to bypass PM flood control

Wybieracie grupy użytkowników, którzy będą mieli wyłączone to zabezpieczenie (najczęsciej Administratorzy i Moderatorzy)

46279b204b.png

Rozwiążemy dla Ciebie każde zadanie z matematyki: http://matma4u.pl

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
Rozumiem że po tej łatce mod "Mass PM Group", nie będzie działał?

Hm, wydaje mi się, że powinien działać, jeśli wysyłający, czyli Ty będzie miał włączone omijanie zabezpieczenia.

matma4u - brawo! ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • Manager

Wybrałeś grupy, które obowiązuje to ograniczenie? Pewnie tak. Zaraz po wydaniu tej łatki sprawdziłem i rzeczywiście nie można było wysyłać wiadomości.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...
  • Manager

Otwórz plik: sources/lib/func_msg.php

Znajdź:

$_check = time() - ( intval( $this->ipsclass->vars['pm_flood_min'] ) * 60 );

Zamień na:

$_check = time() - ( intval( $this->ipsclass->vars['pm_flood_min'] ) * 30 );

Zapisz i wyślij.

Tak, jestem z siebie dumny. Tak, impreza była przednia. :)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.