#### ### # # # ### #### # ### #### # # # # # # # # # # # # # # # #### # # # ### # # ### # ##### #### # # # # # # # # # # # # # # ### #### # ### #### #### # # ####
Versiyon: 1.7.5 | Durum: Kararlı
Eğitim kurumları ve bilgisayar laboratuvarları için modern, güvenli ve anlık yönetim ekosistemi.
Nedir? • Ekran Görüntüleri • Özellikler • Mimari Yapı • Kurulum • Yol Haritası • Lisans
PolyOS Lab, okul laboratuvarlarında öğretmenlerin öğrenci bilgisayarlarını canlı olarak izlemesini, uzaktan kontrol etmesini ve yönetmesini sağlayan modern, yüksek performanslı ve hafif bir laboratuvar yönetim ekosistemidir.
Geleneksel hantal yönetim yazılımlarının aksine, Go dilinin sunduğu yerel hız ve eşzamanlılık (concurrency) avantajları ile React/Vite/Electron üçlüsünün esnek arayüz dinamiklerini birleştirir. Ürün %100 oranında Pardus (Linux) işletim sistemine uyumlu olacak şekilde geliştirilmiş ve test edilmiştir.
Note
PolyOS Lab bir PolyOS ürünüdür — Pardus Okul Laboratuvar Yönetim ve Ödev Sistemi.
- Pardus ve EBA Sınıfları İçin Tam Uyum: Pardus ve diğer Debian tabanlı sistemler için sıfır yapılandırmayla çalışır.
- Go Gücü ile Düşük Kaynak Tüketimi: Arka planda minimum RAM ve CPU harcayarak eski bilgisayarlarda bile performans kaybı yaşatmaz.
- Ultra Düşük Gecikmeli Ekran Paylaşımı: Öğretmenin ekranını veya öğrencilerin ekranlarını noVNC tabanlı yenilikçi yapısı sayesinde gecikmesiz olarak aktarır.
- Bütünleşik Sınıf Kontrolü: Kilit ekranı, USB bloklama, internet engeli ve dosya gönderme gibi tüm araçlar tek noktada birleşir.
- Düşük Gecikmeli Canlı Yayın: İstemcilerden sunucuya optimize edilmiş ekran görüntüleri akar.
- noVNC Tabanlı Canlı Akış: VNC protokolünü tarayıcı tabanlı noVNC kitaplığıyla entegre ederek harici istemci programı ihtiyacını ortadan kaldırır.
- Fare ve Klavye Simülasyonu: Tek tıklamayla uzak makinedeki fare koordinatlarını yüzdesel olarak hesaplar ve
xdotool/ CoreGraphics aracılığıyla anında simüle eder. - Pano (Clipboard) Senkronizasyonu: Öğretmen panosundaki herhangi bir metni anında öğrenci bilgisayarının kopyalama hafızasına gönderir.
- Girdileri Kapat & Kilitle: Tek tıkla tüm klavye/fare girdilerini
xinputseviyesinde kapatır ve aşılması imkansız, tam ekran bir "Bu Bilgisayar Kilitlendi" uyarısı açar. - Masaüstü Duvar Kağıdı Kilidi: Öğrencilerin masaüstü arka plan resmini değiştirmesini engeller. Öğretmen, panelden istediği bir görseli yükleyerek tüm istemcilere uygulayabilir ve kilit altında tutabilir.
- USB Depolama Engelleme: İstemci cihazlarında
usb-storageveuasçekirdek (kernel) modüllerini kara listeye alarak USB belleklerin bağlanmasını engeller. - İnternet ve Web Filtresi:
- Tüm laboratuvarın internetini tek tıkla ağ seviyesinde kesip açabilir.
- İstemcilerin
/etc/hostsdosyasını manipüle ederek yasaklı web sitelerini sunucu üzerindeki özel/blockeduyarı sayfasına yönlendirir.
- PolyOS Wake (Wake-on-LAN): Bağlanan tüm bilgisayarların MAC adreslerini kaydeder. Bilgisayarlar kapalı olsa bile Ethernet üzerinden sihirli paket (Magic Packet) göndererek topluca uyandırır.
- Sürükle-Bırak Dosya Transferi: İstediğiniz bir dosyayı istemci kartının üstüne sürükleyip bırakarak o öğrencinin Masaüstüne doğrudan aktarabilirsiniz.
- Seçili Cihazlara Dosya Gönderme: Gelişmiş "Dosya Gönder" penceresi ile seçilen 3-5 istemciye aynı anda toplu dosya aktarımı.
PolyOS Lab, modüler yapısı sayesinde esnek ve ölçeklenebilirdir. Aşağıda, sistemin bileşenleri arasındaki veri ve protokol akışını gösteren detaylı mimariyi inceleyebilirsiniz:
graph TB
%% Nodes
subgraph DashboardEnv ["💻 Teacher Dashboard (Electron & React)"]
DashboardUI["UI Layout (Vite + TS)"]
VncViewer["noVNC Viewer (RFB Client)"]
ElectronMain["Electron Main Process"]
end
subgraph ServerEnv ["🖥️ Central Management Server (Go)"]
WSHub["WebSocket Hub (Command Dispatcher)"]
UploadSrv["File Upload Service (/api/upload)"]
WOLSrv["WOL Wakeup Service (UDP)"]
end
subgraph ClientEnv ["👥 Student Devices (Pardus / Linux)"]
direction LR
subgraph Client1 ["Client 1 Daemon"]
GoClient1["Go Client (Root Privilege)"]
VncSrv1["X11VNC Server"]
Kiosk1["Browser Kiosk Screen"]
end
subgraph Client2 ["Client 2 Daemon"]
GoClient2["Go Client (Root Privilege)"]
VncSrv2["X11VNC Server"]
Kiosk2["Browser Kiosk Screen"]
end
end
%% Connections
DashboardUI -->|"1. REST API & WebSocket Control"| WSHub
VncViewer -->|"2. noVNC Stream (Port 5900)"| VncSrv1
ElectronMain -->|"3. Spawn Server Subprocess"| ServerEnv
WSHub <-->|"4. Bidirectional Live Connection"| GoClient1
WSHub <-->|"4. Bidirectional Live Connection"| GoClient2
UploadSrv -.->|"5. HTTP File Transmission"| GoClient1
UploadSrv -.->|"5. HTTP File Transmission"| GoClient2
WOLSrv -.->|"6. Magic Packet (Port 9/UDP)"| GoClient1
WOLSrv -.->|"6. Magic Packet (Port 9/UDP)"| GoClient2
%% Styling
classDef ogretmen fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e3a8a;
classDef sunucu fill:#f0fdf4,stroke:#22c55e,stroke-width:2px,color:#14532d;
classDef istemci fill:#fff7ed,stroke:#f97316,stroke-width:2px,color:#7c2d12;
classDef default fill:#f8fafc,stroke:#cbd5e1,stroke-width:1px,color:#0f172a;
class DashboardUI,VncViewer,ElectronMain ogretmen;
class WSHub,UploadSrv,WOLSrv sunucu;
class Client1,Client2 istemci;
server/: Komut yönlendirme, dosya yükleme, WOL yayını ve WebSocket istemci yönetimini sağlayan Go sunucu kodları.client/: Öğrenci bilgisayarlarında yetkili modda çalışan, ekran yakalayan ve işletim sistemi komutlarını tetikleyen Go istemci kodları.dashboard/: Öğretmenin kullandığı, canlı ekran önizlemelerini gösteren, toplu/tekil komut gönderen React & Electron masaüstü uygulaması.
- Öğrenci Bilgisayarı (Linux/Pardus):
xinput,scrot,xdotool,xclip,python3-tk,x11vnc - Geliştirme Ortamı:
Go 1.20+,Node.js 18+
cd server
go run main.go- Sunucu Varsayılan Port:
8080 - Dosya Transferi Yolu:
/uploads(Kullanıcı yapılandırmasına göre dinamik olarak yönetilir)
cd dashboard
npm install
npm run electron:devYöntem A: Tam Root Yetkileri ile Çalıştırma (Hızlı Geliştirme)
cd client
# Giriş cihazlarını (xinput) ve USB erişimini (modprobe) yönetmek için root yetkisi gereklidir:
sudo go run main.goYöntem B: Linux Capabilities ile Çalıştırma (Önerilen - Güvenli Üretim Ortamı)
Tam root yetkisi (sudo) vermek yerine, derlenmiş binary dosyasına sadece ihtiyaç duyduğu yetenekleri (Ağ yönetimi ve Sistem yönetimi yetkileri) atayarak çalıştırabilirsiniz:
cd client
# Binary'yi derleyin
go build -o polyos-client main.go
# Gerekli capabilities atamalarını yapın
sudo setcap cap_net_admin,cap_sys_admin+ep ./polyos-client
# Root yetkisi olmadan sıradan kullanıcı olarak çalıştırın
./polyos-clientBu yöntem, olası bir güvenlik açığında saldırganın elde edebileceği hakları dramatik biçimde sınırlar.
- Çoklu İstemci Canlı İzleme ve Uzaktan Yönetim
- Ekran Kilitleme ve Tam Ekran Engelleyici Arayüzü
- Sistem Seviyesinde USB Kilitleme / Açma
- Wake-On-LAN Entegrasyonu (PolyOS Wake)
- Öğretmen Ekranını Öğrencilere Yansıtma (Screen Share)
- Cihazları Uzaktan Uyku Moduna Alma
- Sürükle-Bırak Dosya Gönderme Sistemi
- Öğrenciler İçin Anlık Soru/Cevap ve Sınav Modu
- Ağ Bant Genişliği Limitleme
Bu proje MIT lisansı altında lisanslanmıştır. Daha fazla bilgi için LICENSE dosyasına göz atabilirsiniz.










