FileZilla Alternatifi Olmaktan Daha Fazlası
FTP • FTPS • SFTP • SSH Console • SQL Console • Panel Algılama • İşletim Sistemi Algılama • Veritabanı Yönetimi
ÜCRETSİZ DEMO
https://cox.com.tr/

MERHABA R10 AİLESİ
Bir süredir üzerinde çalıştığım ve sıfırdan geliştirdiğim web tabanlı FTP / sunucu yönetim yazılımını R10 üyeleriyle paylaşmak istiyorum.
Projeyi geliştirirken temel düşüncem şuydu:
Bir web sitesi veya sunucu üzerinde çalışırken neden dosya işlemleri için FileZilla, SSH için PuTTY/Terminal, MySQL için phpMyAdmin/Navicat/HeidiSQL ve hosting yönetimi için ayrıca cPanel, DirectAdmin veya farklı araçlar arasında sürekli geçiş yapıyoruz?
Bunların mümkün olduğunca büyük bir bölümünü tek bir web tabanlı çalışma ortamında birleştirebilir miyim?
Proje bu düşünceden ortaya çıktı.
İlk bakışta FileZilla benzeri bir web FTP istemcisi olarak görülebilir. Ancak sistem sadece dosya yükleme ve indirme üzerine kurulu değildir.
Tek bir web arayüzünün içerisinde;
- FTP / FTPS / SFTP bağlantısı
- Uzak dosya yöneticisi
- Dahili kod editörü
- SSH Console
- SQL Console
- Hosting paneli algılama
- İşletim sistemi algılama
- Hosting paneli üzerinden veritabanı yönetimi
R10'da hosting, sunucu, yazılım ve webmaster tarafında çalışan çok fazla arkadaş olduğu için özellikle burada paylaşmak istedim.
Teknik bilgisi çok ileri seviyede olmayan arkadaşların da sistemin ne yaptığını anlayabilmesi için aşağıda özellikleri mümkün olduğunca detaylı anlatıyorum.
FTP / SFTP / SSH / SQL WEB CLIENT TAM OLARAK NEDİR?
Normal şartlarda bir hosting veya sunucu yönetirken farklı işler için farklı programlar kullanıyoruz.
- Dosya transferi: FileZilla / WinSCP
- SSH bağlantısı: PuTTY / Terminal
- MySQL yönetimi: phpMyAdmin / Navicat / HeidiSQL
- Hosting yönetimi: cPanel / DirectAdmin / Plesk / CyberPanel vb.
Tarayıcı üzerinden bağlantı kurup;
- Dosyalarınıza erişebilirsiniz.
- Dosya yükleyip indirebilirsiniz.
- Sunucunuza SSH komutu gönderebilirsiniz.
- SQL veritabanınızı yönetebilirsiniz.
- Bağlı olduğunuz sunucudaki hosting panelini algılayabilirsiniz.
- Sunucunun işletim sistemini tespit edebilirsiniz.
- Desteklenen hosting panellerinde API üzerinden veritabanı işlemleri gerçekleştirebilirsiniz.
FileZilla çok başarılı ve yıllardır kullanılan bir FTP / FTPS / SFTP dosya transfer istemcisidir.
Benim geliştirdiğim sistemde de temel FTP özellikleri bulunuyor:
- Dosya yükleme
- Dosya indirme
- Klasör açma
- Yeni klasör oluşturma
- Yeni dosya oluşturma
- Dosya silme
- Dosya yeniden adlandırma
- CHMOD değiştirme
- Sürükle bırak
- Uzak dosya düzenleme
Örneğin bir VPS/VDS sunucuya SFTP ile bağlandınız.
FileZilla'da ağırlıklı olarak dosyalarınızı yönetirsiniz.
Bu sistemde ise aynı çalışma ortamında;
- Dosyalarınızı yönetebilirsiniz.
- SSH Console açabilirsiniz.
- Sunucunun işletim sistemini algılayabilirsiniz.
- Hosting panelini algılayabilirsiniz.
- SQL Console üzerinden MySQL'e bağlanabilirsiniz.
- Desteklenen hosting panelleri üzerinden veritabanı işlemleri gerçekleştirebilirsiniz.
FileZilla = Dosya transferi + dosya yönetimi
Bu proje = Dosya yönetimi + SSH + SQL + Panel Algılama + İşletim Sistemi Algılama + Veritabanı Yönetimi
FTP / FTPS / SFTP DESTEĞİ
Sistem üç temel bağlantı yapısını destekliyor.
FTP
Klasik FTP bağlantısıdır.
Standart port genellikle:
21Hosting firmanızın verdiği FTP kullanıcı adı ve şifresiyle bağlantı kurulabilir.
FTPS
FTP bağlantısının TLS/SSL kullanılarak güvenli hale getirilmiş şeklidir.
Sistem otomatik bağlantıda öncelikle güvenli FTP bağlantısını denemeye çalışır.
SFTP
Burada sık karıştırılan bir konuya da değineyim:
SFTP, FTP'nin SSL'li hali değildir.
SSH altyapısı üzerinde çalışan farklı bir protokoldür.
Standart port:
22Özellikle VPS, VDS ve dedicated sunucularda çok sık kullanılmaktadır.
SFTP'nin SSH tabanlı olması sayesinde sistem bazı gelişmiş sunucu özelliklerini de kullanabiliyor.
OTOMATİK PORT VE PROTOKOL ALGILAMA
Bağlantı ekranında protokolü otomatik seçebilirsiniz.
Genel mantık:
FTPS / FTP : 21 SFTP / SSH : 22Böylece her bağlantıda;
"Bu FTP mi?"
"FTPS mi?"
"SFTP mi?"
"Hangi portu kullanıyor?"
diye uğraşmanız gerekmiyor.
Özel port kullanan sunucularda port manuel olarak da belirtilebilir.
UZAK DOSYA YÖNETİCİSİ
Sistemin temel bölümlerinden biri uzak dosya yöneticisidir.
Sunucuya bağlandıktan sonra klasör ve dosyalar listelenir.
Desteklenen temel işlemler:
- Dosya yükleme
- Dosya indirme
- Dosya silme
- Klasör silme
- Dosya yeniden adlandırma
- Yeni klasör oluşturma
- Yeni dosya oluşturma
- CHMOD değiştirme
- Dosya düzenleme
- Klasörler arasında gezinme
- Sürükle bırak
DAHİLİ KOD EDİTÖRÜ
Uzak sunucudaki metin tabanlı dosyalar doğrudan tarayıcı içerisinde açılıp düzenlenebilir.
Örneğin:
index.php config.php .htaccess style.css app.js functions.phpNormal yöntemde:
Dosyayı FTP ile indir ↓ VS Code aç ↓ Düzenle ↓ Kaydet ↓ Tekrar FTP'ye yükleBu sistemde ise uzak dosyayı doğrudan açıp düzenleyebilirsiniz.
Ctrl + S ile kaydetme desteği de bulunmaktadır.
Özellikle ufak PHP, HTML, CSS veya JavaScript değişikliklerinde zaman kazandırabilir.
SSH CONSOLE NEDİR?
Burası projenin klasik FTP istemcisinden ayrıldığı en önemli alanlardan biri.
SSH Console, sunucunun komut satırına bağlanmanızı sağlar.
En basit şekilde:
FTP = Sunucunun dosyalarını yönetir.
SSH = Sunucunun kendisine komut vermenizi sağlar.
Örneğin VPS/VDS sunucunuza bağlandınız.
SSH Console üzerinden:
pwd ls ls -la cd /var/www df -h free -m uname -a php -v mysql --version topgibi komutlar çalıştırabilirsiniz.
Çalıştırabileceğiniz komutlar elbette bağlantı yaptığınız SSH kullanıcısının yetkilerine bağlıdır.
Root ile bağlanırsanız root yetkileri geçerlidir.
Normal kullanıcıyla bağlanırsanız yalnızca o kullanıcının yetkileri kullanılabilir.
SSH CONSOLE NE İŞİME YARAR?
Örneğin sunucunuzdaki web sitesi çalışmıyor.
FTP ile bağlandığınızda çoğunlukla dosyaları görürsünüz.
SSH üzerinden ise;
- Disk dolmuş mu?
- RAM kullanımı nedir?
- PHP kurulu mu?
- PHP sürümü nedir?
- MySQL kurulu mu?
- Sunucunun işletim sistemi nedir?
- Hangi klasörde bulunuyorum?
- Dosya izinleri doğru mu?
- Sunucudaki servislerin durumu nedir?
CD KOMUTLARI VE TERMİNAL
Örneğin:
cd /var/wwwyazdığınızda çalışma klasörü değiştirilebilir.
Sonraki komutlar ilgili dizinde çalıştırılır.
Terminali temizlemek için:
clearkomutu kullanılabilir.
ETKİLEŞİMLİ SSH TERMİNAL
Sistemde yalnızca:
komut gönder → cevabı göster
mantığı bulunmuyor.
Terminal tabanlı uygulamaların kullanılabilmesi için etkileşimli terminal altyapısı üzerinde de çalışıldı.
Örneğin:
top nano bsdconfiggibi sürekli ekran kullanan uygulamalar normal tek komut sisteminden farklı çalışmaktadır.
Terminal tarafında;
- Enter
- Tab
- Escape
- Backspace
- Yön tuşları
- Page Up / Page Down
Bu özellik bağlı olduğunuz sunucunun SSH altyapısına ve kullanıcı yetkilerine bağlıdır.
SQL CONSOLE NEDİR?
Sistemin önemli modüllerinden bir diğeri:
SQL Console
Burada özellikle bir ayrımı belirtmek istiyorum:
SQL Console ile "Veritabanı" bölümü aynı şey değildir.
SQL Console doğrudan MySQL/MariaDB sunucusuna bağlanır.
Standart MySQL portu:
3306Bağlantı için genel olarak:
Host Port MySQL Kullanıcı Adı MySQL Parolası Varsayılan Veritabanıbilgileri kullanılmaktadır.
SQL CONSOLE NE İŞE YARIYOR?
En basit tanımla:
Tarayıcı içerisindeki mini MySQL yönetim aracı.
phpMyAdmin, Navicat veya HeidiSQL gibi programlarda gerçekleştirilen günlük veritabanı işlemlerinin önemli bir kısmını tek panelden gerçekleştirmek amaçlanmıştır.
MySQL kullanıcınızın yetkisine göre veritabanları ve tablolar görüntülenebilir.
Veritabanlarını Görüntüleme
Örneğin:
wordpress forum panel crm testgibi erişim yetkinizin bulunduğu veritabanlarını görüntüleyebilirsiniz.
Tabloları Görüntüleme
Örneğin WordPress veritabanında:
wp_users wp_posts wp_options wp_commentsgibi tablolar görüntülenebilir.
Tabloyu açtığınızda içerisindeki satırlara erişebilirsiniz.
Çoklu Tablo Sekmesi
Aynı anda:
users orders products settingsgibi birden fazla tabloyu ayrı sekmelerde açık tutabilirsiniz.
Veritabanı Satırı Düzenleme
SQL Console içerisinde temel CRUD işlemleri bulunmaktadır:
- Yeni kayıt ekleme
- Mevcut kaydı düzenleme
- Kayıt silme
- Hücre düzenleme
- ENUM değerlerini seçme
Örneğin:
SELECT * FROM users;veya:
SELECT * FROM users WHERE id = 1;gibi sorgular çalıştırılabilir.
Gerekli MySQL yetkisine sahipseniz INSERT, UPDATE ve DELETE gibi sorgular da çalıştırılabilir.
DİKKAT
SQL Console gerçek veritabanına bağlıdır.
Yanlışlıkla:
DROP TABLE users;gibi bir sorgu çalıştırırsanız tablo gerçekten silinebilir.
Canlı sistemlerde SQL işlemleri yapmadan önce mutlaka yedek alın.
VERİTABANI OLUŞTURMA VE SİLME
MySQL hesabınızın gerekli yetkileri varsa:
- Yeni veritabanı oluşturma
- Veritabanı silme
- Yeni tablo oluşturma
- Tablo silme
- Tabloyu TRUNCATE etme
Buradaki yetki tamamen kullandığınız MySQL hesabına bağlıdır.
PANELİ ALGILA ÖZELLİĞİ
Sistemin farklı özelliklerinden biri:
Paneli Algıla
Elinizde bir VPS/VDS olduğunu ancak üzerinde hangi hosting panelinin kurulu olduğunu bilmediğinizi düşünün.
Tek tek:
:2083 :2222 :8090 :8443 :10000gibi portları kontrol etmek yerine sistem otomatik tespit yapmaya çalışabilir.
Algılanmaya çalışılan paneller:
- cPanel
- DirectAdmin
- CyberPanel
- aaPanel
- HestiaCP
- Webmin
- Virtualmin
- CWP
- Plesk
- ISPConfig
Yaygın hosting panel portları kontrol edilir.
Örneğin:
cPanel : 2083 DirectAdmin : 2222 CyberPanel : 8090 aaPanel : 7800 HestiaCP : 8083 Webmin : 10000 CWP : 2031 Plesk : 8443 ISPConfig : 8080Ancak sistem sadece:
"2083 açık = kesin cPanel"
mantığıyla çalışmaz.
Uygun durumlarda HTTP/HTTPS cevabı içerisindeki panel işaretleri de kontrol edilir.
Örneğin cPanel tarafında:
cpanel whostmgr cpsessgibi işaretler aranabilir.
Not: Hosting paneli özel porta taşınmışsa veya giriş ekranı değiştirilmişse otomatik tespit her zaman mümkün olmayabilir.
İŞLETİM SİSTEMİ ALGILAMA
Uygun SSH/SFTP bağlantılarında sunucunun işletim sistemi de tespit edilmeye çalışılır.
Bunun için:
uname /etc/os-releasegibi sistem bilgileri kullanılabilir.
Algılanabilecek sistemlerden bazıları:
- Ubuntu
- Debian
- AlmaLinux
- Rocky Linux
- CentOS
- Red Hat Enterprise Linux
- Fedora
- Arch Linux
- Gentoo
- openSUSE
- SUSE
- Oracle Linux
- CloudLinux
- Amazon Linux
- Alpine Linux
- Void Linux
- Slackware
- Mageia
- FreeBSD
- OpenBSD
- NetBSD
- DragonFly BSD
- macOS / Darwin
- Solaris / SunOS
Bazı sunucularda SFTP erişimi açıkken SSH shell erişimi kapalı olabilir.
Uygun durumlarda sistem SFTP üzerinden:
/etc/os-release /etc/debian_version /etc/alpine-release /etc/redhat-release /etc/centos-releasegibi sistem dosyalarını okuyarak işletim sistemi ailesini tahmin etmeye çalışabilir.
SQL CONSOLE İLE VERİTABANI BÖLÜMÜ AYNI DEĞİL
SQL Console:
Doğrudan MySQL sunucusuna bağlanır.
Örneğin:
mysql-server:3306MySQL kullanıcı adı ve parolası kullanılır.
Veritabanı Bölümü:
Hosting panelinin API sistemi üzerinden işlem gerçekleştirir.
Örneğin cPanel hesabınız bulunuyorsa sistem cPanel API üzerinden MySQL işlemlerini gerçekleştirebilir.
CPANEL VERİTABANI YÖNETİMİ
cPanel tarafında desteklenen işlemler:
- Veritabanlarını listeleme
- MySQL kullanıcılarını listeleme
- Yeni veritabanı oluşturma
- Yeni MySQL kullanıcısı oluşturma
- Kullanıcıyı veritabanına bağlama
- Kullanıcı yetkilerini görüntüleme
- Yetkileri değiştirme
- ALL PRIVILEGES verme
- Veritabanı silme
DIRECTADMIN DESTEĞİ
DirectAdmin tarafında da API entegrasyonu bulunmaktadır.
Mevcut yapıda özellikle:
- Veritabanı oluşturma
- Veritabanı silme
cPanel entegrasyonu mevcut sürümde daha kapsamlıdır.
PLESK DESTEĞİ
Plesk, otomatik panel algılama bölümünde tespit edilebilir.
Ancak yanlış anlaşılmaması adına:
Panelin algılanabilmesi ile panelin bütün API fonksiyonlarının desteklenmesi aynı şey değildir.
Mevcut sürümde Plesk tarafındaki tam veritabanı yönetim entegrasyonu cPanel seviyesinde değildir.
BAĞLANTI / SİTE YÖNETİCİSİ
Birden fazla bağlantıyla çalışan kullanıcılar için bağlantı profilleri oluşturulabilir.
Örneğin:
Müşteri 1 FTP Müşteri 2 FTP Ana VPS SSH Yedek VPS SSH Ana MySQL Test MySQLBöylece sürekli aynı bağlantı bilgilerini tekrar yazmanız gerekmez.
BİRDEN FAZLA SUNUCU İLE ÇALIŞMA
Sistem sekmeli çalışma mantığını desteklemektedir.
Bir sunucuyla çalışırken başka bir bağlantı açıp farklı bir sunucuya geçebilirsiniz.
Bu yapı özellikle:
- Hosting firmaları
- Freelancer geliştiriciler
- Sistem yöneticileri
- Birden fazla müşteri sitesi yöneten kişiler
SİSTEM KİMLER İÇİN?
- Hosting firmaları
- Web geliştiriciler
- PHP geliştiriciler
- Freelancerlar
- VPS/VDS kullanıcıları
- Dedicated sunucu kullanıcıları
- Sistem yöneticileri
- cPanel kullanıcıları
- DirectAdmin kullanıcıları
- Birden fazla web sitesi yönetenler
- Bilgisayarına FTP programı kurmadan işlem yapmak isteyenler
GÜVENLİK KONUSU – LÜTFEN OKUYUN
Bu sistem sıradan bir web sitesi değildir.
FTP, SSH veya SQL bağlantısı yaptığınız için sisteme:
- FTP kullanıcı adı/parolası
- SSH kullanıcı adı/parolası
- MySQL kullanıcı adı/parolası
- cPanel / DirectAdmin bilgileri
Bu nedenle güvenlik konusunda dikkatli olun.
Özellikle kendi sunucunuza kuracaksanız:
- HTTPS kullanın.
- Güncel PHP sürümü kullanın.
- Sunucu güvenliğinizi sağlayın.
- Dosya izinlerini doğru yapılandırın.
- Yönetim alanlarını gereksiz şekilde dışarıya açık bırakmayın.
- Root bilgilerinizi güvenmediğiniz sistemlere girmeyin.
SSH üzerinden yanlış bir komut çalıştırırsanız sunucunuz etkilenebilir.
SQL Console üzerinden yanlış bir DELETE, DROP veya TRUNCATE sorgusu çalıştırırsanız verileriniz silinebilir.
Canlı sunucularda işlem yapmadan önce mutlaka yedek alın.
FILEZILLA'NIN YERİNİ TAMAMEN ALIR MI?
Burada iddialı veya yanıltıcı konuşmak istemiyorum.
FileZilla yıllardır geliştirilen, oturmuş ve başarılı bir masaüstü FTP istemcisidir.
Çok büyük dosya transferlerinde, uzun süreli transfer kuyruklarında ve bilgisayardaki yerel dosyalara doğrudan erişim konusunda masaüstü uygulamalarının doğal avantajları bulunmaktadır.
Bu projenin amacı:
"FileZilla'yı kopyalamak"
değil.
Amaç:
"FileZilla tarzı dosya yönetimini SSH + SQL + hosting paneli yönetimiyle tek bir web arayüzünde birleştirmek."
Yani birbirinden farklı kategorilerdeki araçları mümkün olduğunca tek çalışma ortamında toplamaya çalışıyorum.
ÖRNEK KULLANIM SENARYOSU
Bir müşterinizin web sitesinde ufak bir PHP değişikliği yapacağınızı düşünelim.
Normal yöntem:
FileZilla aç ↓ FTP'ye bağlan ↓ Dosyayı indir ↓ VS Code aç ↓ Düzenle ↓ Kaydet ↓ Tekrar FTP'ye yükleBu sistemde:
Web Client'a gir ↓ FTP/SFTP bağlan ↓ Dosyaya çift tıkla ↓ Düzenle ↓ Ctrl + SSunucu tarafında problem varsa aynı çalışma ortamından SSH Console'a geçebilirsiniz.
Veritabanında işlem yapmanız gerekiyorsa SQL Console'a geçebilirsiniz.
Sunucuda hangi panelin kurulu olduğunu bilmiyorsanız Paneli Algıla özelliğini kullanabilirsiniz.
Temel hedef:
İş akışını mümkün olduğunca tek panelde toplamak.
PROJEYİ TEK CÜMLEYLE ANLATIRSAK
Web tabanlı FTP / FTPS / SFTP istemcisi + uzak dosya yöneticisi + kod editörü + SSH terminali + SQL yönetim aracı + hosting paneli algılama + işletim sistemi algılama + hosting paneli veritabanı yönetimi.
Yani;
Dosya tarafında → FileZilla mantığı
Sunucu tarafında → SSH terminal mantığı
Veritabanı tarafında → phpMyAdmin / Navicat benzeri temel yönetim mantığı
Hosting tarafında → Panel algılama + API entegrasyonları
tek bir web arayüzünde bir araya getirilmeye çalışıldı.
R10 ÜYELERİNE ÜCRETSİZ PAYLAŞIM
Projeyi sıfırdan geliştirdim ve geliştirmeye devam ediyorum.
Hazır geliştirmişken R10'da hosting, yazılım, webmaster ve sunucu işleriyle uğraşan arkadaşların da kullanabilmesi için R10 üyeleriyle ücretsiz olarak paylaşmak istedim.
Eksik gördüğünüz alanları, özellik önerilerinizi veya karşılaştığınız hataları konu altından açık şekilde yazabilirsiniz.
Özellikle farklı;
- Hosting panellerinde
- Linux dağıtımlarında
- BSD sistemlerinde
- Shared hosting hesaplarında
- VPS/VDS sunucularda
- Farklı FTP/SFTP yapılandırmalarında
"Şu özellik olsa güzel olur"
"Şu paneli de destekleyebilir misin?"
"Şu sunucuda bağlantı problemi yaşadım"
"Bu bölümü şöyle yapmak daha kullanışlı olur"
gibi önerilerinizi konu altında paylaşabilirsiniz.
Uygulanabilir özellikleri sonraki sürümlere eklemeye çalışacağım.
DEMO
https://cox.com.tr/
İNDİRME
Google Driver - DosyaCo
Geliştirme: Alpdagtas