Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Android SMS Gateway — SMS Portal

Android telefonları fiziksel SMS çıkış noktalarına (gateway) dönüştüren, PHP tabanlı, abonelik yönetimli self-hosted bir SMS Gateway platformu. Android cihazları SIM üzerinden gerçek SMS gönderir; panel üzerinden tekli/toplu SMS gönderimi, rehber yönetimi, zamanlama, kuyruk, API entegrasyonu, PayTR ile paket satışı ve admin paneli sunar.

Anahtar kelimeler: android sms gateway · sms gateway · self-hosted sms gateway · bulk sms · sms api · php sms gateway · android sms sender · sim gateway · sms reseller · paytr sms · whatsapp sms · open source sms gateway


İçindekiler

  1. Öne Çıkan Özellikler
  2. Dizin Yapısı
  3. Sistem Gereksinimleri
  4. Kurulum
  5. Varsayılan Yönetici Hesabı
  6. PayTR Kurulumu
  7. Havale/EFT + WhatsApp Kurulumu
  8. Harici Entegrasyon API
  9. Android Uygulaması
  10. Güvenlik
  11. Sık Karşılaşılan Hosting Notları

Öne Çıkan Özellikler

  • public/: Web giriş noktası ve statik dosyalar
  • app/: Controller, model, core sınıflar ve view dosyaları
  • database/schema.sql: Temiz kurulum için MySQL şeması
  • database/migrate_2026_04_08_user_agreements.sql: Mevcut kurulumlar için kullanıcı sözleşmesi kabul kayıt tablosu
  • database/migrate_2026_04_08_paytr_payments.sql: Mevcut kurulumlar için PayTR ödeme tabloları ve ayarları
  • database/migrate_2026_04_08_whatsapp_bank_transfer.sql: Mevcut kurulumlar için Havale/EFT WhatsApp ayarı
  • docs/api.md: Harici entegrasyon API dokümantasyonu
  • android-app/: Kotlin tabanlı Android istemci uygulaması

Öne Çıkan Özellikler

  • Kayıt, giriş, e-posta doğrulama ve şifre sıfırlama
  • Kullanıcı profili düzenleme ve şifre değiştirme
  • Eşleştirme kodu ile Android cihaz bağlama
  • Birden fazla cihaz yönetimi, düzenleme, duraklatma ve silme
  • Rehber, grup, toplu içe aktarma ve boş şablon indirme
  • Tekli, gruplu ve tüm rehbere SMS gönderimi
  • Zamanlama, hız limiti ve cihaz seçimi destekli SMS kuyruğu
  • SMS durum raporları ve Excel dışa aktarma
  • Kullanıcı API anahtarı üretme ve harici sistem entegrasyonu
  • Kullanıcılar için PayTR ile online paket satın alma, uzatma ve yükseltme
  • Kullanıcılar için Havale/EFT ödeme talebi ve WhatsApp üzerinden dekont iletimi
  • Admin panelinden APK yükleme ve kullanıcılar için APK indirme sayfası
  • Kullanıcı sözleşmesi kabulü, kabul tarihi, IP adresi ve tarayıcı bilgisi loglama
  • Android tarafında foreground service, polling, heartbeat, boot sonrası yeniden başlatma ve pil optimizasyonu uyarısı

Sistem Gereksinimleri

  • PHP ≥ 8.1 (PDO MySQL, mbstring, openssl, fileinfo extension'ları)
  • MySQL ≥ 5.7 / MariaDB ≥ 10.3
  • Apache veya Nginx (mod_rewrite / rewrite desteği) — paylaşımlı hostingde .htaccess kullanılır
  • HTTPS (PayTR callback ve güvenli oturum için zorunlu)
  • Yazılabilir storage/ klasörü (log, rate-limit, APK upload)

Kurulum

1. Veritabanı Hazırlığı

  1. Hosting panelinizden veya phpMyAdmin üzerinden boş bir veritabanı ve yetkili bir kullanıcı oluşturun.
  2. İlgili veritabanını phpMyAdmin içinde seçin.
  3. Temiz kurulum yapıyorsanız database/schema.sql dosyasını içe aktarın (tüm tablolar + seed verisi içerir).
  4. Mevcut kurulumu güncelliyorsanız sırasıyla migrasyon dosyalarını çalıştırın:
    • database/migrate_2026_04_08_contact_address.sql
    • database/migrate_2026_04_08_user_agreements.sql
    • database/migrate_2026_04_08_plan_limits.sql
    • database/migrate_2026_04_08_paytr_payments.sql
    • database/migrate_2026_04_08_whatsapp_bank_transfer.sql

2. Dosya Yükleme ve İzinler

  1. Proje dosyalarını sunucuya yükleyin (paylaşımlı hosting: public_html/sms/ altına).
  2. storage/ klasörünü ve alt klasörlerini (logs, rate_limits, uploads) yazılabilir yapın (chmod -R 775 storage).
  3. index.php, .htaccess ve .env dosyalarının gerçekten sunucuda olduğundan emin olun.

3. Ortam Yapılandırması

  1. .env dosyasındaki veritabanı ve uygulama ayarlarını kendi ortamınıza göre güncelleyin.

Örnek .env:

APP_ENV=production
APP_DEBUG=false
APP_URL=https://akcsoft.com/sms
APP_NAME=SMS Portal
APP_TIMEZONE=Europe/Istanbul
MAIL_FROM=noreply@example.com
MAIL_FROM_NAME=SMS Portal
SMTP_ENABLED=false
SMTP_HOST=
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_ENCRYPTION=tls
SMTP_FROM_EMAIL=noreply@example.com
SMTP_FROM_NAME=SMS Portal
PAYTR_ENABLED=false
PAYTR_MERCHANT_ID=
PAYTR_MERCHANT_KEY=
PAYTR_MERCHANT_SALT=
PAYTR_TEST_MODE=true
PAYTR_DEBUG_ON=false
DB_HOST=localhost
DB_PORT=3306
DB_NAME=akcsoftc_sms
DB_USER=akcsoftc_sms
DB_PASS=akcsoftc_sms
RATE_LIMIT_PER_MINUTE=120
DEVICE_RATE_LIMIT_PER_MINUTE=1200
DEVICE_TASK_BATCH_LIMIT=20

Yerelde PHP geliştirme sunucusu açmak için:

php -S localhost:8000 -t public

Paylaşımlı hosting kullanıyorsanız:

  • Proje dosyalarını doğrudan public_html/sms/ altına yükleyin
  • index.php, .htaccess ve .env dosyalarının gerçekten sunucuda olduğundan emin olun
  • storage/ klasörünün yazılabilir olması gerekir

Varsayılan Yönetici Hesabı

  • E-posta: admin@example.com
  • Parola: Admin123!

Web Sayfaları

  • Landing (SEO one-page): /
  • Kullanıcı paneli: /dashboard
  • Rehber: /contacts
  • Cihazlar: /devices
  • SMS: /sms
  • Abonelik ve ödeme: /billing
  • API dokümantasyonu: /api-docs
  • APK indirme: /apk
  • Kullanıcı sözleşmesi: /kullanici-sozlesmesi
  • robots dosyası: /robots.txt
  • sitemap dosyası: /sitemap.xml

PayTR Kurulumu

  1. Yönetici panelinden Yönetim -> PayTR Ayarları sayfasına gidin.
  2. Merchant ID, Merchant Key ve Merchant Salt bilgilerinizi girin.
  3. Test aşamasında Test modu açık, canlıya geçerken kapalı olmalıdır.
  4. PayTR panelinde bildirim URL'si olarak şu adresi tanımlayın: https://your-domain.example/sms/payment/paytr/callback
  5. Kullanıcılar paket satın alma, uzatma ve yükseltme işlemlerini /billing sayfasından yapar.

Havale/EFT + WhatsApp Kurulumu

  1. Yönetici panelinde Yönetim -> Ayarlar ekranından Havale/EFT WhatsApp alanını doldurun.
  2. Numara uluslararası formatta girilmelidir (örnek: +90 555 123 45 67).
  3. Kullanıcılar /billing sayfasındaki paket kartlarından Havale/EFT için WhatsApp butonuna tıklayarak ödeme talebi oluşturabilir.

Harici Entegrasyon API

Base URL:

https://your-domain.example/sms/api/v1

Temel kullanıcı endpointleri:

  • POST /auth/login
  • GET /me
  • GET /user/devices
  • GET /user/groups
  • POST /user/groups
  • GET /user/contacts
  • POST /user/contacts
  • POST /user/sms/send
  • GET /user/sms/history

Android cihaz endpointleri:

  • POST /devices/register
  • POST /devices/heartbeat
  • GET /devices/tasks
  • POST /devices/tasks/{id}/result

Detaylı örnekler için:

  • Panel içi sayfa: /api-docs
  • Dosya: docs/api.md

Android Uygulaması

  1. android-app/ klasörünü Android Studio ile açın.
  2. Sunucu URL bilgisini kendi API adresinize göre ayarlayın.
  3. Emülatör için örnek adres: http://10.0.2.2:8000/api/v1
  4. Fiziksel cihazda aynı ağdaki sunucu IP adresini veya canlı domaininizi kullanın.
  5. Uygulama açıldığında cihaz kaydı yapılır ve eşleştirme kodu üretilir.
  6. Kullanıcı panelinden bu kod ile cihaz hesabınıza bağlanır.

Arka plan dayanıklılığı için uygulama:

  • Foreground service ile çalışır
  • Cihaz yeniden başlatıldığında servisi tekrar açar
  • Uygulama güncellendiğinde servisi tekrar başlatır
  • Görev listesinden kapatılınca servis yeniden planlanır
  • Pil optimizasyonu muafiyeti ister

Hız optimizasyonu:

  • API tarafında cihaz görev batch limiti .env ile ayarlanır: DEVICE_TASK_BATCH_LIMIT=20
  • Android varsayılan polling aralığı 10 saniye, batch limiti 20 olarak güncellendi
  • Cihaz endpointleri için ayrı rate limit kullanılır: DEVICE_RATE_LIMIT_PER_MINUTE=1200
  • Teorik cihaz kapasitesi formülü: (60 / poll_saniye) x batch_limit

Not: Android derlemesi bu ortamda Gradle yerel kütüphane hatası nedeniyle yeniden doğrulanamadı. Kod tarafındaki değişiklikler hazırdır.

Güvenlik

  • Web formlarında CSRF koruması
  • API isteklerinde Bearer token doğrulaması
  • PDO prepared statement ile SQL injection riskinin azaltılması
  • View katmanında htmlspecialchars tabanlı çıktı kaçışı
  • Dosya tabanlı rate limiting
  • Kullanıcı sözleşmesi kabul kaydı: sürüm, tarih, IP adresi, user agent

Sık Karşılaşılan Hosting Notları

  • #1044 Access denied hatası alırsanız, CREATE DATABASE yetkiniz yoktur; sadece schema.sql dosyasını mevcut veritabanının içine import edin.
  • cPanel benzeri sistemlerde veritabanı adı çoğunlukla kullaniciadi_veritabani formatındadır.
  • /sms altında 404 alıyorsanız dosyalar yanlış klasöre yüklenmiş olabilir veya .htaccess eksik olabilir.

About

Self-hosted Android SMS Gateway platformu (PHP). Android telefonlari SIM uzerinden fiziksel SMS gonderim noktasina dondurur - toplu SMS, rehber, zamanlama, kuyruk, REST API, PayTR odeme, admin paneli. Kurulum: schema.sql import + .env ayari. Sistem: PHP 8.1+ / MySQL 5.7+.

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages