Pokemon GO’da Bot Nasıl Kullanılır

Pokemon GO oynayan arkadaşlar bilirler dağ tepe gezmeniz gerekir. Telefon elinizde bir günüz pokemon ararken diğer gözünüzde şarjın kaç kaldığına bakar yanınıza powerbank alsanız bile o şarja bakarsınız hızlı düştüğünü görürsünüz hızlı hareket edersiniz. Buraya kadar her şey gerçekten normal peki botu çıkmışken biz niye botu kurmayalım kullanımı oldukça basit geliştirilmeye devam ediliyor ve oldukça güzel özellikleri var.

Bot : PokemonGo-Bot

Özellikleri

  • Pokestop noktalarını ziyaret eder ve poketopu toplar
  • Pokemon yakalama özelliğine sahiptir
  • Düşük CPsi olan pokemonları yakalamaz yada candy yapar
  • Otomatik olarak yürür
  • Pokestop için belirli alanlarda farm yapabilir
  • İşlevsel IV filtresi ile gereksiz pokemonlar candy yapılır.( CP yüksek olsa bile IV puanı dikkate alınır)
  • Otomatik geçiş modu (pokemon yakalama, poketopu yakalama)
  • Belirlediğiniz pokemonları yakalamaz
  • Gerektiğinde üstün top türlerini kullanmaktan çekinmez
  • İtem toplar
  • Pokemon yakalama filitresi
  • Google MAP APİ Aracılığı ile çalışır.
  • Haritada tüm objeler gözükür (GYM, pokestop)
  • Pokemonları geliştirir.
  • Yumurta yakalar
  • Yumurtaları kırar

bunlar dışında sayamadığım pek çok özelliği bulunmaktadır. Bot genel olarak Google MAP APİ kullanır koordinatlara göre rastgele bir şekilde yürür ve pokestop noktalarını gezer. Bunu yaparken de yolda yada gittiği yerlerde rastladığı tüm pokemonları yakalar.

Kurulum

Multiplatform olarak geliştirilmiş bir uygulamadır python kurulu olan her şeyde çalışacaktır. Windows için kurulumu oldukça zor ancak MAC ve Linux üzerine kurulumları basit ve 5 dakika içerisinde bot ile oynamaya başlayabilirsiniz.

Windows

Bu linkte bulunan PyYAML-3.11-cp27-cp27m-win32.whl dosyasını indirin(eğer sisteminiz 64bit ise ve hata verir ise PyYAML-3.11-cp27-cp27m-win_amd64.whl olan sürümü indirip sisteminize dahil edin)

Ayrıca Python 2.7.x sürümünden bir tanesinin kurulu olması gerekmektedir.

cd download-directory
pip2 install PyYAML-3.11-cp27-cp27m-win32.whl
// 64 bit kullanıyorsanız aşağıdakini uygulayın
pip2 install PyYAML-3.11-cp27-cp27m-win_amd64.whl

Ardından yapılması gerekenler

git clone -b master https://github.com/PokemonGoF/PokemonGo-Bot  
cd PokemonGo-Bot  
pip2 install -r requirements.txt
git submodule init
git submodule update

MAC

git clone --recursive -b master https://github.com/PokemonGoF/PokemonGo-Bot  
cd PokemonGo-Bot  
virtualenv .  
source bin/activate  
pip install -r requirements.txt

Linux

git clone --recursive -b master https://github.com/PokemonGoF/PokemonGo-Bot  
cd PokemonGo-Bot  
pip install -r requirements.txt

Kurulumu Linux üzerinde yapacağım zaten en stabil linux üzerinde ve MAC üzerinde çalışıyor. Komutları verdikten sonra belirttiğiniz yerde kurulum işlemleri yapılmış olacak bizim düzenleyeceğimiz iki şey var burada

  • config.json.example
  • release_config.json.example

Bu iki dosyanın sonundaki .example yazısını kaldırıyorsunuz. Hemen ardından ana ayarlamaları yapacak olduğunuz config.json dosyasını herhangi bir metin editörü ile açıyorsunuz.

{
    "auth_service": "google",
    "username": "[email protected]",
    "password": "YOURPASSWORD",
    "location": "SOME LOCATION",
    "gmapkey": "AGMAPAPIKEY",
    "max_steps": 5,
    "mode": "all",
    "walk": 4.16,
    "debug": false,
    "test": false,
    "initial_transfer": 0,
    "location_cache": true,
    "distance_unit": "km",
    "item_filter": "101,102,103,104",
    "evolve_all": "NONE"
}

Yukarıdaki ayarları içeren bir dosya ile karşılaşacaksınız Google hesap bilgilerinizi username ve password kısmına giriyorsunuz eğer hesabınızda 2FA aktif ise google tarafından sağlanan uygulama şifresi metodunu kullanarak bir şifre yaratın bunun işin bu linkten faydalanabilirsiniz.

Ardından size 1 adet Google MAP Javascript APİ gerekiyor bunu edinebilmek için kullandığınız google hesabından Google APİ Console bu link aracılığı ile giriş yapıyorsunuz. Arama kısmına Google MAP Javascript APİ yazdığınızda karşınıza 1 adet seçenek çıkacak bunu seçip Enable diyorsunuz APİ hesabınızda aktif hale gelecek solda bulunan Credentials kısmını kullanarak da kendinize 1 adet browser için key oluşturun oluşturma sırasında domain sorar ise boş bırakın yada localhost yazın.

Geldik son olarak location ayarlamaya bunun için koordinat girmeniz gerekiyor koordinatları edinirken Pokevision sitesini kullanabilirsiniz. Fareniz ile işaretlediğiniz yerin koordinatları tarayıcınızın URL kısmında gözükecek kopyalayıp direk olarak json da bulunan location kısmına giriniz.

Yürüme hızınızı değiştirmek isterseniz.

"max_steps": 5

bu değeri istediğiniz bir değer ile değiştirin 25 geçmeyin en ideali 15 hem hızlı hemde sıkıntısız.

Yumurta çatlatma

"hatch_eggs": true,
"longer_eggs_first": true,

yukarıdaki iki satırıda config.json dosyanıza ekleyip botu çalıştırın ardından bot yumurtaları otomatik olarak kulukça cihazımıza ekleyecek ve otomatik olarak açacak bu sayede çok miktarda yumurta çatlatabilir ve XP kasabilirsiniz.

Botu Çalıştırma

python pokecli.py

Eğer çalıştırdığınız sırada SSL konusunda sıkıntı çıkarsa pokecli.py herhangi bir metin editörü ile açın 43 ve 44 numaralı satırlarda bulunan kodlara # ekleyin kayıt edin ve kapatın.

Sonuç

pokemongo-bot

Dikkat Edilmesi Gerekenler

  • her zaman oynadığınız konumdan daha uzaklara çıkmayın Türkiyede oynuyorsanız bir anda New York koordinatlarını girmeyin
  • Yürüme hızını bahsettiğim aralıklar içerisinde girmeye özen gösterin
  • Bot çalıştırırken telefondan kesinlikle oyuna giriş yapmayın ve GPS açmayın
  • Botu kullanmadığınız zamanlarda telefonunuzdan oyuna giriş yapacaksanız eğer GPS kapatarak açın ve itemlerinizi yumurtalarınızı kontrol edin yapacaklarınızı yapın

Yukarıda bahsettiğim durumlara uyulmadığı zaman Softban denen ve oyun içinde yaklaşık 1-2 saat boyunca pokemon yakalayamadığınız bir duruma düşersiniz.

Web Arayüz kullanımı

Botu çalıştırdınız her şey güzel ilerliyor. Kasılıyorsunuz ve pokemonları yakalıyorsunuz konsolda bunu görüyorsunuz peki ya bu bot nereden ne yapıyor ve nerelere hareket ediyor diye merak ediyorsanız işte bu web uygulaması tam sizin için düşünülmüş üstelik web arayüzünü kullanırken hesabınız hakkında detaylı bilgi sahibide olabilirsiniz.

  • Hesabınızın genel özelliklerine bakabilirsiniz.
  • Çantanızda hangi pokemonların olduğunu görebilirsiniz
  • Pokedexinizi görebilirsiniz.
  • İtemleriniz hakkında bilgi alabilirsiniz.(Potlar, Yumurtalar vb)

Kurulumu ise şu şekilde

İlk olarak sisteminize bir adet nginx web server kuruyorsunuz.

sudo apt-get update
sudo apt-get install nginx

Uygulamanın web sunucusu ile iletişime geçebilmesi ve dosyaları görebilmesi için metin editörü ile ön tanımlı konfigürasyondan kök dizin değişikliği yapıyoruz.

sudo nano "/etc/nginx/sites-enabled/default"

ardından aşağıdaki değişikliği yapıyoruz siz botu nereye indirdiyseniz o yolu vermek zorundasınız.

root /home/mertcan/Desktop/PokemonGo-Bot/web;

Ayarların geçerli olması için nginx ayarlarını yeniliyoruz.

nginx -s reload

Sayfayı başlatıyoruz.

python -m SimpleHTTPServer 8000

pokemongo-bot-web

Tüm Yazıcılar İçin Cupsenable Çalıştırılması

Sistemde birden çok yazıcı bulunuyor ise ve bunlardan bazıları disable moduna geçmiş ise ve normal şartlar altında otomatik başlatılamıyor ise cupsenable aracılığı ile başlatmamız gerekmektedir.

Aksi durumda;

  • Sistemdeki yazıcının gözükmemesi
  • Çıktı alınamaması
  • Yazdırma kuyruğunun etkilenmesi

Yukarıdaki koşullardan herhangi birisini yaşıyor olabilirsiniz. Bu gibi sorunların üstesinden gelmek için aşağıdaki betik oldukça işinize yarayacak kaç tane yazıcı var ise sisteminizde hepsini yeniden aktif hale getirecektir.

#!/bin/sh
#
# Author Mertcan GOKGOZ - 2016
# Bir sistemdeki tüm yazicilar icin cupsenable komutunun calıstirilmasi

set -e

YAZICILAR=`lpstat -p | grep printer | grep -v enable | awk '{print $2}' | sed '/^$/d'`
if [ "x$YAZICILAR" !=  "x" ]; then
  for yaziciadi in $YAZICILAR; do
    echo "Lutfen Bekleyin $yaziciadi Yazici Etkinlestiriliyor"
    cupsenable -h 127.0.0.1:631 $yaziciadi && logger "$yaziciadi Yazici Etkinlestirildi"
  done
fi
sleep 2

Betiği Çalıştırma işlemi;

chmod +x cupsfix.sh
sh ./cupsfix.sh

Örnek çıktı;

Lutfen Bekleyin _192_168_1_53 Yazici Etkinlestiriliyor
Lutfen Bekleyin Canon_E400_series Yazici Etkinlestiriliyor
Lutfen Bekleyin HP_Deskjet_2050_J510_series Yazici Etkinlestiriliyor
Lutfen Bekleyin HP_LaserJet_Professional_P_1102w Yazici Etkinlestiriliyor

öptüm bye <3

Haveged Uygulaması Ne İşe Yarar

Haveged(Hardware Volatile Entropy Gathering and Expansion) kısaltılmış halidir. HAVAGE projesinden esinlenilerek yapılmıştır aslında benzersiz rastgele sayı üretmeyi kusursuz hale getirmeyi amaçlamışlar bu yüzden güzel bir algoritma oluşturmuşlar

Linux genel olarak her türlü girdi çıktı işlemlerinde random sayı üretmeyi tercih eder genellikle sisteme bağlanan cihazların kimliklerini bu şekilde belirler.

Linux de rastgele sayı üretmek için 2 yöntem bulunmaktadır.

  • /dev/random
  • /dev/urandom

Bu arkadaşlardan ilki yani /dev/random block device ile çalışan değişik bir rastgele sayı üretme şeysi yukarıda bahsettiğim girdi çıktı olaylarındaki cihazların çıkarttığı gürültü ile çalışır yani bir nevi bir şeyin çalışır olmasına ihtiyacı vardır ki rastgele bir şeyler üretebilsin. Entropi yeterli olana kadar devam eder ve en kaliteli random işlemini yapar.

ikinci olanı yani /dev/urandom ise her koşulda çalışabilen ve benzersiz bir şekilde rastgele sayı oluşturma özelliğine sahip bir arkadaşımızdır. Girdisi ile çıktısı farklıdır.

Burada bizi bekleyen sıkıntılardan bir tanesi veri tekrarı oluşması ve haliyle üretilen her neyse onların bir birlerine daha çok denk gelebilme olasılıklarının artmasıdır. Mevcut entropi koşulları düştüğü zaman hizmetin kalitesi de düşer yani kalitesiz şifreleme işlemi demek

Pek çok uygulamada bu haveged ihtiyaç duyuyor. ipsec, openvpn gibi popüler VPN uygulamaları anahtar oluşturmada çok uzun bir süre geçiriyor ise bu sisteminizde entropi sorunu olduğuna işarettir ve mutlaka kurulması gerektiğinin de bir habercisi olabilir.

Genel güvenilirliği arttırmak ve engelleri aşarak yüksek kararlılık elde etmek mümkün kriptografik işlemleri gözle görülür ölçüde arttırıyor ayrıca sayısal tüm işlemlerinizde de eş zamanlı olarak hızlanma göreceksiniz.

Entropi koşullarınızın ne olduğunu görmek için aşağıdaki komut kullanılabilir.

cat /proc/sys/kernel/random/entropy_avail

komutu verilir eğer çıkan sonuç 1000 den düşük ise özellikle haveged kurmanızda yarar var. Şimdi geldik kuruluma öyle uzun uzadıya yok şunu ayarlayın bunu buraya atın şunu şöyle yapın diye bir şey yok direk olarak kullandığınız dağıtımın paket yöneticisi ile çok kolay bir şekilde kurulumu yapabilirsiniz.

sudo apt install haveged

Her dağıtımın reposun da özellikle bulunduğu için bulamama gibi bir lüxünüz yoktur diye düşünüyorum. Ayarları default bırakacağız ama ben kurcalamak istiyorum diyen arkadaşlar için

cat /etc/default/haveged

komutunun çıktısı aşağıdaki gibi olacak bu sizi tatmin etmedi ise bu değeri yükseltebilirsiniz.

# Configuration file for haveged

# Options to pass to haveged:
#   -w sets low entropy watermark (in bits)
DAEMON_ARGS="-w 1024"

Kayıt edip çıktığınızda zaten ayarlar otomatik olarak işleyecek ne başlatmanıza nede ön yükleyiciye eklemenize gerek yok zaten kendi işini kendisi yapıyor.

Test etmek istersenizde şöyle bir komut verebilirsiniz.Bu komutu kullanabilmek için sisteminizde rng-tools paketinin kurulu olması gerekmektedir.

sudo apt install rng-tools

Test için örnek kodumuz

cat /dev/random | rngtest -c 1000

test sonucunda eğer hata sayısı azsa ve verdiğiniz sayıya yakınsa haveged mükemmel bir şekilde çalışıyor ve görevini yerine getiriyor demektir.

rngtest 5
Copyright (c) 2004 by Henrique de Moraes Holschuh
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

rngtest: starting FIPS tests...
rngtest: bits received from input: 20000032
rngtest: FIPS 140-2 successes: 1000
rngtest: FIPS 140-2 failures: 0
rngtest: FIPS 140-2(2001-10-10) Monobit: 0
rngtest: FIPS 140-2(2001-10-10) Poker: 0
rngtest: FIPS 140-2(2001-10-10) Runs: 0
rngtest: FIPS 140-2(2001-10-10) Long run: 0
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0
rngtest: input channel speed: (min=1.531; avg=19.793; max=9536.743)Mibits/s
rngtest: FIPS tests speed: (min=20.575; avg=82.842; max=93.041)Mibits/s
rngtest: Program run time: 1194076 microseconds

dipnot: Ubuntu her ne kadar bu entropi sorununu çözdüğünü söylese de uyulama kurulmadan önceki ve sonraki testlerde sonuçlar oldukça farklılık göstermekte. Benim kişisel fikrim uygulamanın kurulması yönünde…

öptüm bye <3

TMUX Komut ve Kısayolları

Herhangi bir linux distro kullanıyorsanız en az 2-3 kez ilgilenmiş olmanız gerekiyor diye düşünüyorum tmux özellikle bir çok sanal terminal açmamıza imkan sağladığı için kullanıyoruz.Ya birader bunu ben tab ile yaparım en olmadı sağ tıklayıp yeni sekme açarım niye bunu kurayım boşa paket kurdurma bize ya diyen bir kaç kişiyi görür gibiyim belki onlardan biride siz olabilirsiniz.

Ancak unutmayın tam o işlemi yaptığınız esnada elektrik gitti yada internetiniz koptu hadi bunlar olmadı kullandığınız bilgisayar kendini bi şekilde kapattı yada terminal işleminizi engelleyecek bir durum oldu ne yapacaksınız?

İşte bu noktada tmux bizi kurtarıyor. Açtığınız sekmeler devam edbilebilir sekmelerdir. istediğiniz zaman kapatıp gidebilirsiniz. screen uygulaması ile aynı görevi görür daha yeni ve daha esnek bir yapısı vardır.

Kurulumu oldukça basit her dağıtımda bulunuyor.

sudo apt-get install tmux

Kurulum tamamlandıktan sonra ufak bir ayarlama yapmamız gerekiyor normalde ön tanımlı olarak gelen kısayol CTRL + b tuşudur ancak b biraz uzağımızda kaldığı için ben bunu her zaman CTRL + a ya getiriyorum böylelikle biraz daha hızlı işimi görüyorum.

nano ~/.tmux.conf

içerisinde bir takım değerler olacak biz bunu şu şekilde değiştiriyoruz.

unbind C-b
set -g prefix C-a

kayıt edip çıktıktan sonra başlattığımızda zaten aktif hale geldiğini göreceksiniz. Gelmez ise aşağıda ipucunu verdim ben oradan yola çıkarsınız artık. Şimdi geldik aydınlanmaya;

Tmux oturumu açılmadan önce yapabilecekleriniz;

Komut Açıklama
tmux list-sessions Oturumları listeler
tmux list-keys Kısayolları gösterir
tmux list-commands Tüm komutları listeler
tmux source-file ~/.tmux.conf TMUX ayarlarını yeniler
tmux a -t oturum_adi oturumu sabitler

Tmux oturumu oluşturulduğunda geçerli olan kısayollar (prefix olarak tmux\’un varsayılanı Ctrl+b kullanılmıştır);

Komut Açıklama
C-b new -s oturum_adi Yeni adlandırılmış oturum açar
C-b c Yeni pencere açar
C-b [0-9] 0-9 arası istenilen pencereyi seçer
C-b , Ekranı adlandırmak
C-b w Ekranları listeleme
C-b l Önceki seçilen ekrana geçer
C-b n Sonraki ekrana geçer
C-b p Önceki ekrana geçer
C-b d Oturumdan ayrılma
C-b D Oturumları listeleyip istenileni ayırma
C-b s Oturumları listeler(varsayılan), eşleşmiyor ise
C-b ? Tüm kısayolları listeler
C-b % Ekranı dikey böler
C-b " Ekranı yatay böler
C-b n ve C-b p Ekranlar arasında geçiş
C-b {Yukarı, Aşağı, Sol, Sağ} Bölünmüş ekranlar arası geçiş
C-b space Her ekranı aynı boyutlandır
C-b s Oturumları eşitleme
C-b [ Kopyalama modu
C-b ] Kopyalama modundan kopyalanı yapıştırma

Bu aşamadan sonra benim kullandığım ve oldukça sevdiğim bir yöntem var ben bunu oturumları takip etmek için kullanıyorum. Belirli süre işlem yapmadığımda renk değişiyor ve ben son olarak işlem ney yapmışım onu görebiliyorum.

setw -g monitor-silence 60

Böylelikle ben 1 dakika boyunca işlem yapmaz ise oturum farklı bir renk ile gözükecek bana bende anlayacağım ki orada işlem yapıyormuşum ama yapmayı durdurmuşum.

Bir diğer kullandığım olay ise aktif olan oturumun renginin değiştirilmesi onuda şu şekilde sağlıyoruz.

set-window-option -g window-status-current-bg red

Son olarak fare ile kopyalamayı açalım ben bunu genellikle kullandığım için diğer türlü zorlandığımdan açtım isterseniz açmayabilirsiniz.

setw -g mode-mouse on

Bu ayarları yukarıda bahsettiğim kişisel ayar dosyanıza uygulamayı unutmayın yani ~/.tmux.conf

Raspberry Pi İle OwnCloud Yapılandırma

raspberrypi1

Dosyalarımı cloud’da barındırıp para vermekten usanmıştım elimde 2 adet Raspberry pi bulunuyordu bende bunlardan bir tanesini niye kullanmayayım ki dedim.Bu işlem zor olmayacaktı yapacağım 3 işlem vardı çünkü pek fazla bir zorluğu yoktu

Yapılacaklar;

  • Sabit İP tahsis edilmesi
  • Port ve router ayarları
  • Kurulum ve ayarlama işlemleri

İlk olarak internet sağlayıcımı aradım 444 0 126(Uydunet Müşteri hizmetleri) Karşıma Duygu adında bayan bir görevli çıktı dedim ben sabit ip almak istiyorum.Tamam dedi 2.99 TL ücreti var dedim yapıştır gelsin.

Hattınıza ben tanımladım 1 saat sonra aktif olur kolay gelsin dedi kapattı insan bi güle güle der sesi de pek güzeldi ayıp etti ama olsun ben alacağımı aldım Sabit İP adresimi edindim.

Modem arayüzüme girdim port yönlendirmeden gerekli olan Portları raspberry pi nin lokal ip adresine yönlendirdim.

  • 192.168.0.10

Tabi HTTP ve HTTPS olarak kullanılacağı için 2 adet port açılacaktı bunlar 80 ve 443 portları herhalde NAT ayarlamayı biliyorsunuzdur işte onu yapıyorsunuz.Zor bir yanı yok yani herneyse yönlendirme işlemlerini yaptıysanız fazla birşey kalmadı kurulumları yapmak kaldı

Öncelikle belirteyim ben bu rehberi hazırlarken temel kurulumları gerçekleştirdiğinizi varsayarak yapacağım bunlar arasında SD karta işletim sistemini kurup raspberry pi cihazınızı açmış olmanız gerekiyor.Eğer bunları yapmadıysanız makalemin bu kısmında okumaktan vazgeçip ister favorilerinize ekleyebilir isterseniz de direk olarak çıkış yapabilirsiniz.

Şimdi SD kart içerisine daha önceden indirmiş olduğum Raspbian sistemini dd aracılığı ile kurdum. Server olarak kullanacağımız içinde Desktop ekipmanlarını kurmadım lite sürümünü indirdim oldukça düşük boyutlu bir kalıp indireceksiniz.

Raspberry Pi cihazımıza bağlanıyoruz. ilk bağlanırken kullanılacak olan bilgiler şu şekilde

Kullanıcı adı: pi
Şifre: raspberry

SSH zaten açık olacağı için bağlantımızı kuralım.İp adresini DHCP den öğrenebilirsiniz.Modem arayüzüne bakmanız yeterli desktop sürümünü kullanıyorsanız HDMI dan bağlanıp `ip addr show’ komutu aracılığı ilede bakabilirsiniz.

ssh [email protected]

Bağlantığımı kurduktan sonra ilk olarak sistemi bir güzel güncelleyin çünkü içindeki bir takım paketler eski

sudo su
sudo apt-get update && apt-get upgrade && apt-get dist-upgrade
reboot

Bunu güzelce yaptıktan sonra artık tertemiz kuruluma geçebiliriz.İlk önce raspberry pi cihazımızın ayarlarını yapmamız gerekiyor bunun için şu komutu vererek gereken adımları takip edin

sudo raspi-config
  1. Genel Ayarlardan Dili değiştirin bunun için change local yolunu takip edin ve değeri en_US.UTF8 olarak değiştirin biraz altlarda o yüzden göremeyebilirsiniz.
  2. Advanced Options olan kısma tıklayın ve ardından Memory split kısmına geçiş yapın buradan değeri 16 yada 32 olarak değiştirin.
  3. Son olarak da overclock seçeneğine gelin ve CPU değerini High yapın.Isınması 1-2 derece daha fazla olacak ancak işlemleri daha hızlı yapabilecek cihazımız

Web serverda kullanacağımız kullanıcımızı ekleyelim.

sudo usermod -a -G www-data www-data

Ardından gerekli olan tüm paketlerin toplu bir şekilde kurulumunu gerçekleştirelim.

sudo apt-get install nginx openssl ssl-cert php5-cli php5-sqlite php5-gd php5-common php5-cgi sqlite3 php-pear php-apc curl libapr1 libtool curl libcurl4-openssl-dev php-xml-parser php5 php5-dev php5-curl php5-gd php5-fpm memcached php5-memcache php5* varnish

Bu işlem internet hızınıza göre biraz sürecek zaten cihaz yavaş olduğu için kurmasıda biraz zaman alabilir.

Cloudflare SSL kullanacağım için ben sunucu tarafında da bir SSL oluşturmayı tercih ediyorum bu sayada güvenliği arttıracağız ayrıca owncloud için ssl de gerekiyor. Kurmasanızda olur ancak kursanız fena olmaz

sudo openssl req $@ -new -x509 -days 730 -nodes -out /etc/nginx/cert.pem -keyout /etc/nginx/cert.key

Oluşturulan bu 2 anahtarın yetkilerini düzenliyoruz.

sudo chmod 600 /etc/nginx/cert.pem
sudo chmod 600 /etc/nginx/cert.key

Sistemde ön tanımlı olarak gelen default dosyasını temizliyoruz.

sudo sh -c "echo '' > /etc/nginx/sites-available/default"

Ve herhangi bir metin editörü ile açıp aşağıdaki ayarları giriyoruz.

upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}
server {
    listen 80;
    server_name 192.168.1.116;
    return 301 https://$server_name$request_uri;  # enforce https
}

server {
    listen 443 ssl;
    server_name 192.168.1.116;
    ssl_certificate /etc/nginx/cert.pem;
    ssl_certificate_key /etc/nginx/cert.key;
    root /var/www/owncloud;
    client_max_body_size 1000M; # set max upload size
    fastcgi_buffers 64 4K;
    rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
    rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
    rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
    index index.php;
    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;
    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }
    location ~ ^/(?:.htaccess|data|config|db_structure.xml|README) {
        deny all;
    }
    location / {
        # The following 2 rules are only needed with webfinger
        rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
        rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
        rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
        rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
        rewrite ^(/core/doc/[^/]+/)$ $1/index.html;
        try_files $uri $uri/ index.php;
    }
    location ~ .php(?:$|/) {
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass php-handler;
   }
   # Optional: set long EXPIRES header on static assets
   location ~* .(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
        expires 30d;
        # Optional: Don't log access to assets
        access_log off;
   }
}

Ayar dosyamız içerisinde sizin dosyalarınızın yolu olacak bir kısım bulunuyor bunu kendi alışkanlıklarınıza göre düzenleyebilirsiniz.

root /var/www/owncloud;

Kayıt edip çıkış yaptıktan sonra ownCloud uygulamasını indirmeye geldi sıra sitesinden son sürümü indiriyoruz ve gereken adımları takip ediyoruz.

sudo mkdir -p /var/www/owncloud
sudo wget https://download.owncloud.org/community/owncloud-9.0.3.tar.bz2
sudo tar xvf owncloud-9.0.3.tar.bz2
sudo mv owncloud/ /var/www/
sudo chown -R www-data:www-data /var/www
rm -rf owncloud owncloud-9.0.3.tar.bz2

Başarılı bir şekilde dosyaları ana dizinimize atma işlemimiz tamamlandı ufak bir kaç ayardan sonra sistemimiz çalışır hale gelecek o ayarlamalardan ilki .htaccess içerisindeki dosya upload boyutları

cd /var/www/owncloud
sudo nano .htaccess

Dosyamızı açtıktan sonra içerisindeki satırları şu şekilde değiştiriyoruz.Tabi siz kendinize görede ayarlayabilirsiniz.

php_value_upload_max_filesize 2048M
php_value_post_max_size 2048M
php_value_memory_limit 2048M

Kullanıcılar içinde tanımlama yapıyoruz.

sudo nano .user.ini

Dosya içerisinde arama yaparak aşağıdaki değişiklikleri gerçekleştiriyoruz.

upload_max_filesize=2048M
post_max_size=2048M
memory_limit=2048M

Artık İP adresiniz ile sisteme erişebiliyor olmanız gerekiyor. Tabi bu ayarlardan sonra ilk olarak Nginx bi yeniden başlatmanız gerekiyor yapmışsınızdır diyerek geçiyorum.

Geldik sisteme disk eklemeye Raspberry pi cihazımız 5v üstünde gelen her cihaza güç yetiremediği için çalışmıyor haliyle HDD leri takamıyoruz SATA to USB olsa dahi çünkü volt yetmiyor.Hal böyle olunca sizin diski takabilme imkanınız 2 şeye kalıyor ya bir şekilde ek güç çekeceksiniz yada gerçekten bir şekilde ek güç edineceksiniz.

Bunun için ise hepsiburada gibi yerlerde satılan Adaptör ile beslemeli USB HUB edinmek böylelikle herhangi bir diski sisteme entegre edebilirsiniz ama unutmayın Raspberry pi 4 TB kadar diskleri görmekte 4 tane 1 TB yada 2 Tane 2 TB disk takabilme imkanınız var.Tabi bu arttırılabiliyor mu bilmiyorum.

NTFS paketimizi kuralım

sudo apt-get install ntfs-3g

Media klasöründe gerekli olan klasörü oluşturalım.bu işimizi kolaylaştıracak isterseniz farklı bir yol kullanabilirsiniz.

sudo mkdir -P /media/ownclouddrive

Bu alanı kullanacak olan kullanıcı kardeşin id bilgilerini bulmaya geldi sıra bunlar içinde aşağıdakileri sırasıyla çalıştırıyoruz.

id -g www-data
id -u www-data

USB portunuzdan bağladığınız diskinizi UUID aracılığı ile fstab dosyamıza ekleyeceğiz ama diskin UUID sinin tespit edilmesi gerekiyor bunun için sistemdeki tüm hepsini listeyelim zaten 2 tane çıkacak eğer 1 tane disk takmışsanız

ls -l /dev/disk/by-uuid

Daha sonra yukarda bahsettiğim gibi fstab dosyamızı açıyoruz.

sudo nano /etc/fstab

İçerisine en son satıra aşağıdaki kaydı giriyoruz.

UUID=368DE6723F50766B /media/ownclouddrive auto nofail,uid=33,gid=33,umask=0027,dmask=0027,noatime 0 0

Buradaki UUID sizin yukardaki komut ile aldığınız UUID herkeste haliyle farklılık gösterecek düzenlemeyi unutmayın. id -g www-data ile gelen bilgi gid bilginiz id -u www-data ile gelen bilgi ise uid bilginiz olacak.

Ardından Raspberry pi cihazınızı yeniden başlatmanız gerekiyor.

reboot

Şimdi ise yapacağımız şey ownCloud uygulamasının kurulumunu tamamlamak bunun için ip adresinize giriş yapıp gereken bilgileri doldurmanız yeterli bunların başında sizden 2 adet bilgi isteyecek bunlar kullanıcı adı ve parola ikincisi ise data folder yani verilerin kayıt edileceği yer yani ayarladığımız /media/ownclouddrive klasörü isterseniz veritabanını da ayarlayabilirsiniz ben gerek duymadım bu yüzden o ayarları değiştirmedim.

Tüm bu işlemlerde tamamlandıktan sonra Nginx amcamızı tekrar yeniden başlatıyoruz sudo service nginx restart bundan sonra artık özgürce kullanabileceğiniz bir ownCloud serverınız oldu güle güle kullanın.

raspberrypi2

Tüm Docker Containerlarını Silme

Docker kullanmayı öğrenirken pek çok container oluşturmuştum. Bunları tek tek silmek yerine hepsini bir çırpıda kolaylıkla silebileceğimizi öğrendim şöyle ki;

docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)

Bu komut sayesinde durdurup tek tek silme derdinden kurtulacaksınız ve bu komut da geçen docker ps -a -q ID lerine göre containerları listelemekte haliyle docker rm denildiği içinde silme işlemi gerçekleşiyor.

Alternatif yöntem olarak kullanmak isterseniz Buradan gerekli aşamalara ulaşabilirsiniz.

Counter Strike Global Offensive Server Kurulumu

Counter Strike Global Offensive oyununu oynayan bir kaç arkadaş mail aracılığı ile bana ulaşarak kurulumu göstermemi istedi bende onları kırmayarak kurulumun nasıl gerçekleştirildiğinden kısaca bahsetmek istedim.

Bu iş için özellikle internette pek çok kurulum ekipmanı olmasa da stabil olarak çalışan 1 adet kurulum ekipmanı bulabildim. Bu script ile oldukça kolay bir şekilde sunucunuzu oluşturabilecek ve oynayabileceksiniz

Ancak bilmenizde fayda var yurtdışı lokasyonlu sunucular kullanırsanız oldukça yüksek ping değerleri göreceksiniz bu kurulumu yapmadan önce hemen kendinize 1 adet türkiye lokasyon sunucu edinin

İşetim sistemi olarak Debian yada Ubuntu seçimi yapın sürüm fark etmez hemen ardından aşağıdaki uygulamaları kurun

sudo apt-get install screen wget tar

Kurulum sırasında sistemde awk bulunamadı derse onuda ek olarak kurun ama awk bulunmayan bir debian yada ubuntu dağıtımı kaldı mı bu durum tartışılır.

cd /etc/init.d/
wget https://raw.githubusercontent.com/crazy-max/csgo-server-launcher/master/csgo-server-launcher.sh -O csgo-server-launcher --no-check-certificate
chmod +x csgo-server-launcher
update-rc.d csgo-server-launcher defaults
mkdir /etc/csgo-server-launcher/
wget https://raw.githubusercontent.com/crazy-max/csgo-server-launcher/master/csgo-server-launcher.conf -O /etc/csgo-server-launcher/csgo-server-launcher.conf --no-check-certificate

Kurulumu gerçekleştirdikten sonra /etc/csgo-server-launcher/csgo-server-launcher.conf yolunu takip ederek aşağıdaki bir takım ayarlamaları yapın

  • SCREEN_NAME – Ekran adı, istediğinizi yazabilirsiniz ama benzersiz olmalıdır ve sadece alfa-sayısal karakter içermelidir.
  • USER – Sunucu başlatan kullanıcının adı.
  • IP – WAN IP adresiniz
  • PORT – dinlenecek olan port
  • GSLT – Anonim bağlantısı yakın gelecekte kaldırılacaktır. Bu nedenle token oluşturulması gerekmektedir. Oluşturmak için : http://steamcommunity.com/dev/managegameservers
  • DIR_STEAMCMD – steamcmd yolu
  • STEAM_LOGIN – Steam kullanıcı adınız
  • STEAM_PASSWORD – Steam şifreniz
  • STEAM_RUNSCRIPT – Normalde bu değişkeni değiştirmek gerekmez.
  • DIR_ROOT – Sunucu dizini.
  • DIR_GAME – Oyun dizini.
  • DIR_LOGS – Oyun günlük kayıtlarının tutulacağı dizin
  • DAEMON_GAME – Normalde bu değişkeni değiştirmek gerekmez.
  • UPDATE_LOG – Güncelleme günlük kayıt dosyası.
  • UPDATE_EMAIL – Güncelleme günlük kayıtlarının gönderileceği mail adresi(Boş bırakılabilir)
  • UPDATE_RETRY – Güncelleştirmenin başarısız olması durumunda yeniden deneme sayısı.
  • API_AUTHORIZATION_KEY – Atolyedeki haritaları indirebilmeniz için APİ’ye ihtiyacınız var webapi_authkey.txt varsa boş bırakın. Yoksa ve oluşturmanız gerekirse : http://steamcommunity.com/dev/apikey
  • WORKSHOP_COLLECTION_ID – Koleksiyon ID kullanım için API_AUTHORIZATION_KEY gereklidir : https://developer.valvesoftware.com/wiki/CSGO_Workshop_For_Server_Operators
  • WORKSHOP_START_MAP – Seçilen koleksiyondaki harita ID WORKSHOP_COLLECTION_ID ve API_AUTHORIZATION_KEY gereklidir.
  • MAXPLAYERS – maximum kullanıcı sayısı.
  • TICKRATE – Sunucu ticrate değeri
  • EXTRAPARAMS – isteğe bağlı komutlar
  • PARAM_START – Sunucu başlatma ayarları
  • PARAM_UPDATE – Sunucu güncelleme ayarları.

Nasıl Kullanılır

Konsol mod için CTRL + A, CTRL + D sunucuyu durdurmadan screen durdurmak için kullanılır.Ayrıca Scripti ilk kez kullanacaksanız create komutu vererek sunucu oluşturmanız gerekmektedir.

  • start – Sunucuyu çalıştır
  • stop – Sunucuyu durdur
  • status – Sunucunun durumunu gösterir
  • restart – Sunucuyu yeniden başlat (stop && start)
  • console – Komutları girebileceğiniz konsolu çalıştırır.
  • update – Güncelleştirmeleri yapar ve LOG_DIR yoluna dosya bırakır
  • create – Sunucu oluşturma (önce ayarlamaları yapın).

Örnek: service csgo-server-launcher start

Otomatik Güncelleştirmeyi Çalıştırmak

Crontab işlemleri arasına aşağıdaki satırları ekleyin

0 4 * * * cd /etc/init.d/csgo-server-launcher update >/dev/null 2>&1

Her gün saat 4 de otomatik güncelleme çalıştırılmaktadır.

Linux Sunucu Güvenliği Eğitim Seti

20 Videoyu geçmeyecek bir seri düşündüm ve bu seride sizlere linux sunucu güvenliği hakkında bilgiler vermek istedim. Adımları izleyerek kolaylıkla sunucularınızı güvenli hale getirebilirsiniz.
Anlatım sırasında işletim sistemi olarak RHEL ailesine yakınlığı ile bilinen Centos 7.x Serisini kullanmayı planlıyorum.

Peki bu video serisinde ne gibi konulara değineceğiz.

  1. Grub Ön yükleyici güvenliği
  2. Disk güvenliği
  3. Dosya güvenliği
  4. Kullanıcı güvenliği
  5. Virüs taraması
  6. Rootkit taraması
  7. İPTABLES sıkılaştırması
  8. SSH sıkılaştırması
  9. History format düzenleme
  10. PAM modulü
  11. Kernel güvenliği
  12. Bash Aktivilerinin kayıt edilmesi
  13. NGİNX sıkılaştırması
  14. APACHE sıkılaştırması
  15. PHP sıkılaştırmaları
  16. Gereksiz servislerin kapatılması
  17. Kurulu paketlerin kontrol edilmesi
  18. Bütünlük kontrolü
  19. CHROOT kafesleme
  20. Kmod-tpe(trusted path execution) kurulumu

Yazıcılar İçin CSS Düzenlemeleri

Normal şartlar altında css yazmayı sevmem çünkü bir yerini düzeltirken aynı zamanda bir başka yeri bozabiliyorsunuz.Yazıcılar için ise CSS yazmak oldukça zevkli çünkü sadece CTRL + P tuş kombinasyonu ile çalıştırabilirsiniz veya javascript ile tetikleyebileceksiniz.

Çıktısının alınmasını istediğiniz sayfalarınıza aşağıdaki gibi bir css dosyası ekliyoruz.Bunu ayrı tutacağız hem bizim açımızdan işler kolay olacak hemde tarayıcıya yol göstermiş olacağız

<link rel="stylesheet" type="text/css" media="print" href="/assets/css/print.css">

Şimdi belirli standartlara göre düzenlemeler yapmamız gerekiyor yapacağımız bu düzenlemeler akademik makalelerde kullanılan bir şablona göre.Birebir tabi ki de aynı değil çünkü birebir aynısını yaptığımız zaman oldukça fazla sayfa oluşuyor bunun nedeni sayfanın 4 bir yanından içeri 3 cm kadar girinti yapmamız olurdu biz bu şekilde bir düzenleme yapmayacağız.Ama sayfada yazdırırken görüntüsü oldukça hoşunuza gidecek

/*Print.css
Copyleft © Mertcan GÖKGÖZ 2016*/

@media only print {

  @page { size: A4; margin: 1.5cm !important; }

  body {
    width:100% !important;
    margin:0 !important;
    padding:0 !important;
    filter:none !important;
    -ms-filter: none !important;
    border-top: none;
    background: none;
    color: black;
    text-align: justify;
    font-family: Garamond, 'Times New Roman', serif;
    line-height: 1.45;
    font-size: 14pt;
    word-spacing: 1px;
    letter-spacing: 0.2px;
  }

  *,
  *:before,
  *:after,
  *:first-letter,
  *:first-line {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
    border-bottom: none;
  }

  h1,h2,h3,h4,h5,h6 { page-break-after:avoid; page-break-inside:avoid; }
  h1,h2,h3 { text-transform: capitalize; }
  h1 { font-size:19pt; }
  h2 { font-size:17pt; }
  h3 { font-size:15pt; }
  h4,h5,h6 { font-size:14pt; }

  p, h2, h3 { orphans: 3; widows: 3; }

  .content h1 { text-align: center; }

  .content {
    background: transparent;
    border-left: none;
    width: 100%;
    margin: 0;
    padding: 0;
    color: black;
    float: none !important;
  }

  table { margin: 1px; text-align:left; }
  th { border-bottom: 1px solid #333;  font-weight: bold; }
  td { border-bottom: 1px solid #333; }
  th,td { padding: 4px 10px 4px 0; }
  tfoot { font-style: italic; }
  caption { background: #fff; margin-bottom:2em; text-align:left; }
  thead {display: table-header-group;}
  img,tr {page-break-inside: avoid;}

  pre, blockquote, table { page-break-inside: avoid; }

  pre { padding-left: 0.8cm; color: #FE7FAC !important; white-space: pre-wrap; word-wrap: break-word; }
  code { font: 12pt Courier, monospace; }
  blockquote { margin: 1.2em; padding: 1em;  font-size: 12pt; }

  ul, ol, dl { page-break-before:avoid }

  img { float: left; margin: 1em 1.5em 1.5em 0; max-width: 100% !important; }
  a img { border: none; }
  /* gözükmesini istemediginiz idlerimiz */
  #nav, #sidebar, #paylasim, #related, #disqus_thread{ display: none; }
  /* gözükmesini istemediğiniz classlarımız */
  .sidebar, .disclaimer, .meta, .seo, .pagination, .menuM{ display: none; }

  hr { display: none; }

  a:link, a:visited { background: transparent; font-weight: 700; text-decoration: underline;color:#333; }

  a[href]:after { content: " (" attr(href) ")"; }

  abbr[title]:after { content: " (" attr(title) ")"; }

  .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after { content: ""; }

  aside { display:block; page-break-before: always; }
}

Bu CSS kodlarını sitenize bahsettiğim şekilde eklediğiniz anda yazıcılar için güzel bir düzen elde etmiş olacaksınız.Kodlarda belirtiğim yerleri sayfanızda yazdırılmasını istemediğiniz alanların class ve id lerini ekleyerek düzenleyebilirsiniz.