From 166b45612d76209146ef93e569f14aaad04641ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Tun=C3=A7?= Date: Sat, 28 Mar 2026 07:34:41 +0300 Subject: [PATCH] docs: update implementation plan for multi-PHP support --- implementation_plan.md | 45 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/implementation_plan.md b/implementation_plan.md index 6fd1055..4f319c7 100644 --- a/implementation_plan.md +++ b/implementation_plan.md @@ -80,3 +80,48 @@ multiphp/ 2. **Güvenlik Testi**: Renderer içinden Node yeteneklerine erişilemediğinin teyidi. 3. **Performans**: Başlangıç süresi ve RAM kullanım ölçümleri. 4. **Temiz Kapanış**: Uygulama kapandığında tüm alt süreçlerin (Nginx, PHP, MySQL) sonlanması. + +## Platformlar Arası (Cross-Platform) Yönetim Stratejisi + +Uygulamanın Windows, macOS ve Linux üzerinde sorunsuz ve sürdürülebilir bir şekilde çalışması için "Platform Strategy Pattern" benimsenecektir. + +### 1. Mimari Yaklaşım: Strategy Pattern +İşletim sistemine duyarlı işlemler (servis başlatma, hosts dosyası düzenleme vb.) için bir interface tanımlanacak ve her platform için ayrı sınıflar oluşturulacaktır. + +```typescript +interface OSOperations { + restartService(name: string, config: any): Promise; + editHostsFile(domain: string, ip: string): Promise; + getElevatedPrivileges(): Promise; +} +// WindowsOps, MacOSOps ve LinuxOps sınıfları bu arayüzü implemente eder. +``` + +### 2. Kritik Platform Farklılıkları ve Çözümler + +#### **Yetki Yönetimi (Elevated Privileges)** +- **Windows**: `sudo-prompt` veya `runas` ile admin yetkisi istenir. +- **macOS/Linux**: `sudo` veya `polkit` kullanılır. +- **Strateji**: Uygulamanın tamamını admin yapmak yerine, sadece yetki gerektiren "servis başlatma" veya "hosts yazma" gibi atomik işlemler yetki yükseltilerek (elevated) tetiklenmelidir. + +#### **Dosya Sistemi ve Yapılandırma** +- **Yollar**: Mutlaka `path.join()` kullanılacak. (Windows `\` vs Unix `/`). +- **Harf Duyarlılığı**: Linux/macOS'te `php.ini` ile `PHP.ini` farkı gözetilecek. +- **Satır Sonları**: Konfigürasyon dosyaları yazılırken Windows için `CRLF`, Unix için `LF` (`os.EOL`) kullanılacak. + +#### **Servis Yönetimi (Process Managers)** +- **Windows**: `.exe` spawn veya Windows Service (`sc.exe`/`winsw`). +- **macOS**: `launchd` (`.plist` dosyaları). +- **Linux**: `systemd` (`systemctl`). +- **Hosts Dosyası**: Windows (`C:\Windows\System32\drivers\etc\hosts`) vs Unix (`/etc/hosts`). + +#### **Paketleme ve Güvenlik (Code Signing)** +- **Windows**: Blue Screen (SmartScreen) uyarısını engellemek için **EV Code Signing Certificate**. +- **macOS**: "Uygulama hasarlı" hatasını engellemek için **Apple Notarization** (Xcode & Apple Developer ID). +- **Linux**: `.deb`, `.rpm` ve **AppImage** formatlarında dağıtım. + +#### **Terminal ve Log Akışı** +- `node-pty` kütüphanesi kullanılarak her platformda yerel terminal emülasyonu sağlanacak (Windows için `conpty` desteği). + +### 3. Geliştirme Sıralaması +**Öneri**: Geliştirmeye **Windows** platformu üzerinde başlanması (en yaygın kullanım senaryosu olduğu için), ancak `OSOperations` yapısının ilk günden kurulmasıyla macOS ve Linux desteğinin eklenti/modül olarak kolayca dahil edilmesi hedeflenmektedir.