FTP / SFTP / SSH / SQL WEB CLIENT 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
gibi özellikleri bir araya getirmeye çalıştım.
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.
Benim geliştirdiğim sistemin amacı bunların mümkün olduğunca büyük bir bölümünü
tek bir web panelinde bir araya getirmek.
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'DAN FARKI NEDİR?
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
Ancak sistem burada bitmiyor.
Ö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.
Kısaca: 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:
21
Hosting 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 : 22
Bö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
Özellikle web sitesi taşıma, script yükleme veya hızlı dosya düzenleme işlemlerinde kullanılabilir.
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.php
Normal yöntemde:
Dosyayı FTP ile indir
↓
VS Code aç
↓
Düzenle
↓
Kaydet
↓
Tekrar FTP'ye yükle
Bu 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
top
gibi 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?
gibi birçok noktayı kontrol edebilirsiniz.
CD KOMUTLARI VE TERMİNAL
Örneğin:
cd /var/www
yazdığınızda çalışma klasörü değiştirilebilir.
Sonraki komutlar ilgili dizinde çalıştırılır.
Terminali temizlemek için:
clear
komutu 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
bsdconfig
gibi 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
gibi girişler de işlenebilmektedir.
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:
3306
Bağ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
test
gibi 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_comments
gibi tablolar görüntülenebilir.
Tabloyu açtığınızda içerisindeki satırlara erişebilirsiniz.
Çoklu Tablo Sekmesi
Aynı anda:
users
orders
products
settings
gibi 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
Manuel SQL Sorguları
Ö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
işlemleri gerçekleştirilebilir.
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
:10000
gibi 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
PANEL ALGILAMA NASIL ÇALIŞIYOR?
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 : 8080
Ancak 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
cpsess
gibi 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-release
gibi 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
SSH ERİŞİMİ KAPALIYSA?
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-release
gibi 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:3306
MySQL 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
İşlemler cPanel'in API altyapısı üzerinden gerçekleştirilir.
DIRECTADMIN DESTEĞİ
DirectAdmin tarafında da API entegrasyonu bulunmaktadır.
Mevcut yapıda özellikle:
- Veritabanı oluşturma
- Veritabanı silme
işlemleri desteklenmektedir.
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 MySQL
Bö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
için kullanışlı olabilir.
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
Özellikle R10 üzerinde hosting, webmaster, yazılım ve sunucu yönetimiyle ilgilenen arkadaşların işine yarayacağını düşünüyorum.
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
gibi kritik bilgiler girilebilir.
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 Console ve SQL Console gerçek sistem üzerinde işlem gerçekleştirir; simülasyon değildir.
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ükle
Bu sistemde:
Web Client'a gir
↓
FTP/SFTP bağlan
↓
Dosyaya çift tıkla
↓
Düzenle
↓
Ctrl + S
Sunucu 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
test eden R10 üyelerinin geri dönüşleri geliştirme açısından benim için faydalı olacaktır.
"Ş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