Memcached açığının kapatılması

Son zamanlarda işlerimin yoğunluğu sebebiyle takip edemiyorum sunucumuzu ve durumlarını fakat Scaleway’den gelen sunucunuzdan saldırı çıkışı yapılıyor lütfen cevap verin mailini görünce saniyesinde giriş yaptım ve memcahce’in 90% CPU tükettiğini gördüm.

Mert 7/25 güncel açıkları takip ettiği ekran görüntüsü gönderim ve memcached açığı var abi dedikten sonra nasıl kapatıldığını yazdı, aynı dertten muzdarip olanlar için yardımcı olacaktır.

Öncelikle bir editör yardımı ile Memcache ayarlarını içeren  /etc/sysconfig/memcached dosyasını açalım. Eğer oynama yapmadıysanız daha önce şu şekilde gözükecektir. Bu şekilde public olarak çalışmaktadır ve saldırıya açıktır. Daha detaylı bilgi için burayı inceleyebilirsiniz.

Şimdi Options değerini şu şekilde değiştirip sadece lokal izin verelim. -l 127.0.0.1 yeni görünüm şu şekilde olmalı:

Daha sonra memcache servisini yeniden başlatalım. Ve son olarak netstat -ntlp yazarak memcache’in lokal ip’yi dinlediğini teyit edelim.

Deontay Wilder – Luiz Ortiz

İkiside hiç yenilmemiş ağırsıkletler olan Deontay Wilder – Luiz Ortiz WBC ağırsıklet ünvan maçı GGG – Canelo maçından sonra izlediğim en heycanlı boks maçıydı.İlk raundları Ortiz baya önde götürdü ta ki 5. raunda kadar Deontay inanılmaz sert vuruşlar ile Ortiz’i devirdi. Sanırım bu kariyerinde 2. kez yıkılmasıydı King Kong’un.

7. Raund son 45 saniye ise Deontay aralıksız dayak yedi Luis Ortiz’den ben de dahil sanırım çoğu kişi knock down olacağını düşündü fakat devrilmedi Deontay. Sürekli kendinden güçsüz rakipler ile dövüştüğü söylenen Deontay inanılmaz güçlü olduğunu bir kez daha ispat etti.

10 raund ise kondisyonu artık bitmek üzere olan Ortiz’in knock down olduğu raunddu. Deontay alıştığımız inanılmaz sert vuruşlarını oturttu bu kez (hala lucky punch diyen çıkar mı bu maçtan sonra bilmiyorum). Ve King Kong bu kez kalkamadı. Deontay kemerini bir kez daha korudu ve Joshua için dişli bir rakip olduğunu ispat etti.

Sonuç olarak dövüş stilini bir boksöre benzetemesemde Deontay Wilder gerçek bir savaşçı olduğunu ispat etti. Luiz Ortiz ise gerçek bir boksör olduğunu.

 

La Casa De Papel

Dizi izlemeye artık çok vaktin olmuyor, fırsat buldukça internetteki yorumlara göre başarılı olduğunu düşündüğüm dizileri takip edebiliyorum. Ve La Casa De Papel‘in son zamanlarda izlediğim en iyi dizi olduğunu düşünüyorum. İspanyol yapımı bir dizi, bir soygunu anlatıyor fakat bildiğimiz soygunlardan biri değil. Dizi her ne kadar çok fazla siyasi görüş barındırıyor olsa da gerçekten bir başyapıt olduğunu düşünüyorum. Komünizm vurgusunun sıklıkla yapıldığı, arkada her daim bir ciao bella melodisi duyduğunuz dizinin her saniyesinde heyecan var. Özellikle Tokio (Úrsula Corberó) ve Berlin(Pedro Alonso) karakterlerini inanılmaz başarılı buldum.

WordPress Rev Slider etkinleştirme hatası

Bir WordPress temasında Rev Slider önerilen eklentilerden bir tanesi ve kurulduktan sonra aktif etmeye çalıştığımda

“Eklenti etkinleştirilemedi, çünkü önlenemeyen bir hataya sebep oldu.”

Uncaught Error: [] operator not supported for strings in

 hatası alıyordum. Biraz araştırdıktan sonra çözümünü buldum aynı hata ile karşılaşanların işine yarayacaktır. Eklentinin bulunduğu dizine girdikten sonra sırasıyla includes/framework klasörünü buluyoruz burada base-admin.class.php dosyası var. 21. satırda yer alan

 private static $arrMetaBoxes = '';

kod parçacağını

 private static $arrMetaBoxes = array();

şeklinde değiştiriyoruz.

tam yol şu şekilde :

 public_html/wp-content/plugins/revslider/includes/framework/base-admin.class.php

Centos web panel wildcard subdomain

Bir müşterimize çoklu dil desteğini subdomain üzerinden yaptırmak istedik ve CentOS web panelin yönetim arayüzünde Cpanel gibi “*” ile wildcard subdomain açmayı denedik fakat special character hatası verdi. Uğraşmamak için subdomain yerine GET veya klasör şeklinde url yapısı yapalım diye düşünürken, Mert kendi sunucusunda ki Apache vHosts dosyasını editleyerek (/usr/local/apache/conf.d/vhosts.conf) :


# vhost_start *.domainadi.com

ServerName _wildcard_.domainadi.com
ServerAlias *.domainadi.com
ServerAdmin erdemoralalp@gmail.com
DocumentRoot "/home/domainadi/public_html"
ErrorLog "/home/domainadi/public_html/error.log"
ScriptAlias /cgi-bin/ /home/domainadi/public_html/cgi-bin/
#
# Custom settings are loaded below this line (if any exist)
# Include "/usr/local/apache/conf/userdata/domainadi/*.domainadi.com/*.conf

SuexecUserGroup domainadi domainadi

suPHP_UserGroup domainadi domainadi

<Directory "/home/domainadi/public_html">
AllowOverride All

# vhost_end *.domainadi.com

 

şu şekilde çalıştırmayı başardı.

domainadi yazan yere kendi alan adınızı yazın dememe gerek yok sanırım 🙂

Centos Web Panel Roundcube SPAM klasörü

Cpanel lisansını ödememek için Ufuk‘un tavsiyesi ile kurmuş olduğum CenOS Web Paneli ücretsiz bir sisteme göre gayet başarılı buluyorum. Tabi ki bazı eksiklikleri var ama ücretsiz olması bunları gözardı etmeye yetiyor sanırım. Websitesini hazırlayıp aynı zamanda barındırma hizmetini de vermiş olduğum rahatsız(!) bir müşterim webmaile giriş yaptığında SPAM klasörünü görmek istediğini ve bunun burada olması gerektiğini söyledi. Gerçekten webmaile giriş yapıp baktığımda sadece “Gelen Kutusu” klasörünün aktif olduğunu gördüm.

Ayarları biraz kurcaladım belki buradadır sorun diye ama nafile.

Daha sonra Roundcube config.php dosyasını biraz kurcalamaya başladım ve aynı dizinde yer alan defaults.inc.php dosyasında :


// automatically create the above listed default folders on user login
$config['create_default_folders'] = false;

bu ayarı true olarak değiştirdim ve webmail oturumunu kapatıp, tekrar giriş yaptığımda tüm klasörler olması gerektiği gibiydi.

Bu arada CWP’deki bahsi geçen defaults.inc.php şurada bulunuyor : /usr/local/cwpsrv/var/services/roundcube/defaults.inc.php

WHMCS 7 premium domain özelliği

Eğer WHMCS 7 güncellemesini yaptıysanız ve premium özelliğini aktif etmek istiyorsanız bu sayfadaki bilgiler işinize yarayacaktır. Premium domain özelliğini aktif etmeniz; ödeme yapmış ama domaini alamamış olan sinirli müşteriye o domainin aslında fiyatı şuydu ve özel bir domaindir açıklaması yapmanızın önüne geçecektir. Panelden özelliği aktif etmeniz için varsayılan lookup servisini “ResellerClub” ile değiştirmeniz gerekiyor.

Değiştirdiniz ve olmadı mı? Bunun sebebi büyük ihtimalle modules/registrars/dottk klasöründe ki dottk.php IonCube uyumsuz bir versiyonu ile şifrelendiği için sorun yaratıyor, klasöre giderek silin.

$.post('cart.php', {
	dataType: 'json',
	domain: domainName,
	token: $("input[name='token']").val(),
	'a' : 'checkDomain',
	'type' : 'domain'
}, function(response) {
	var domain_adi = response.result[0]['domainName'];
	
	if(response.result[0]['isPremium'])
	{
		$('.sorgulanan-sag h3').html(domain_adi + ' 
<div class="badge badge-warning">Premium</div>

');
	}else{
		$('.sorgulanan-sag h3').html(domain_adi);
	}
	
	if(response.result[0].tld.substr(response.result[0].tld.length - 2) == 'tr')
	{
		var dadi = response.result[0]['domainName'];
		$.ajax({
			url: "nic-whois.php",
			method : 'POST',
			dataType: 'json',
			data : { domain : dadi},
			success : function(cevap)
				{

Şimdi bu işlemi yaptığınız da karşınıza başka bir sorun çıkıyor, ResellerClub “tr” uzantılarını false döndürüyor. (com.tr, av.tr, biz.tr vbg.) Her halükarda müşteriye bu alan adları satın alınmış olarak gözükecektir. Bunu önlemek için aklıma gelen ilk yöntem sisteme hook atmak olduysa da dökümantasyonu okumak eziyet geldi onun yerine nic.tr’ye bir sorgu yapıp tld eğer tr uzantılı ise isRegister değerini nic.tr’den gelen cevaba göre güncelledim.

Daha iyi bir çözüm bulana kadar kısaca izlemeniz gereken yol :
Bizim üzerinde uğraştığımız WHMCS sistemde post JQuery ile yapılıyor ve spotlight domain özelliğini kullanıyoruz. Ve seçmiş olduğumuz spotlight tld uzantıları arasında com.tr, biz.tr de var.

WHMCS cart.php’den normal bir şekilde sorgulamamızı yapıyoruz tabi ki premium özelliği aktif olduğu için ResellerClub’dan cevap geliyor. Ve eğer domain uzantısı tr ise ikinci bir istek gönderiyoruz nic-whois.php’ye ve gelen cevaba göre domainin kayıtlı olup olmadığını müşteriye gösteriyoruz.

nic-whois.php

<?
function whois($whoisserver, $domain) {
	$port = 43;
	$timeout = 10;
	$fp = @fsockopen($whoisserver, $port, $errno, $errstr, $timeout) or die("Socket Error " . $errno . " - " . $errstr);
	fputs($fp, $domain . "\r\n");
	$out = "";
	while(!feof($fp)){
		$out .= fgets($fp);
	}
	fclose($fp);
	
	return $out;
}
if (!empty($_POST))
{	
	//$_POST['domain'] için filtrleme yapılabilir
	$sorgu = whois("whois.nic.tr",$_POST['domain']);
	if(!$sorgu) {
		return false;
		echo "Sorgu hatası.";
	}
	else {
		if(substr($sorgu,0,2) == "No")
		{	//domain boş
			$sonuc = false;
		}
		else{
			$sonuc = true;
		}
	}
	
	echo json_encode($sonuc);
}


?>

A non well formed numeric value encountered class.upload.php

Phalcon framework ile hazırladığım CMS sisteminde bir ortam yöneticisi bulunuyor ve yerel bilgisayarımda PHP 5.6 üzerinde geliştiriyorum fakat sunucuda 7.1 var. Kullanıcıların içeriklere otomatik boyutlandırılmış resim eklemesi için bir upload sistemi. Bunu da çok beğendiğim Verot.net’in class.upload.php scriptini kullanarak hazırlamıştım. Fakat sunucuya test için sistemi yükleyince 2656. satırda “A non well formed numeric value encountered” hatası verdi. Aynı hata ile karşılaşanlar olabileceğini düşündüm. Hatanın çözümü için switch deyiminin önüne ” $size = (int)$size;” eklemeniz yeterli olacaktır. Yani kod bloğu şu şekilde olmalı :


	function getsize($size) {
        $last = strtolower($size{strlen($size)-1});
		$size = (int)$size;
        switch($last) {
            case 'g':
                $size *= 1024;
            case 'm':
                $size *= 1024;
            case 'k':
                $size *= 1024;
        }
        return $size;
    }

0-1 Greedy Problemi Python ile çözümü

Ege üniversitesinde okuyan bir arkadaşımın dönem ödemi olan 0-1 Greedy probleminin python ile çözülmesi.

0-1 Greedy Problemi :

Elimiz de 6 adet eşya vardır.Her eşyanın bir değeri bir de ağırlığı vardır. Bize bir çanta veriliyor ve bu çantanın bir kapasitesi var. Çantanın içerisine en değerli eşyaları çantanın kapasitesini geçmeden koyduğumuz da çantanın içerisinde bulunan eşyaların toplam değeri kaç olur?

0-1 olmasının mantığı her eşyanın çantaya sadece bir kez eklenebilecek olmasıdır.Yani eşya ya alınır ya bırakılır.

Kodları buradan inceleyebilirsiniz.

 

Bu tarz sorular Torba Problemi (knapsack problem) olarakta adlandırılıyor.