Skip to content

Latest commit

 

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

####   ###  #     #   #  ###   ####      #        ###   ####
#   # #   # #     #   # #   # #          #       #   #  #   #
####  #   # #      ###  #   #  ###       #       #####  #### 
#     #   # #       #   #   #     #      #       #   #  #   #
#      ###  ####    #    ###  ####       ####    #   #  #### 

Versiyon: 1.7.5 | Durum: Kararlı

Eğitim kurumları ve bilgisayar laboratuvarları için modern, güvenli ve anlık yönetim ekosistemi.

PolyOS Lab CI/CD Build & Release Versiyon Lisans Platform

Go React Vite Electron WebSocket

WOL Live Screen Input Lock USB Block Dil TR

Nedir?Ekran GörüntüleriÖzelliklerMimari YapıKurulumYol HaritasıLisans


🌟 Nedir?

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.


🖼️ Ekran Görüntüleri (Galeri)

🖥️ Ana Kontrol Paneli ve İstemci Listesi (Detayları Göster)
Öğretmen Kontrol Paneli İstemci Listesi
Öğretmen Dashboard İstemci Listesi
📺 Ekran İzleme ve Hızlı İşlemler (Detayları Göster)
Ekran İzleme Hızlı İşlemler
Ekran İzleme Hızlı İşlemler
📁 Dosya Transferi ve Ağ Yönetimi (Detayları Göster)
Dosya Transferi Ağ Yönetimi
Dosya Transferi Ağ Yönetimi
⚡ PolyOS Wake ve Sağlık Haritası (Detayları Göster)
PolyOS Wake Sistem Sağlık Haritası
PolyOS Wake Sağlık Haritası
⚙️ Ayarlar ve Log Kayıtları (Detayları Göster)
Genel Ayarlar Ayarlar Devamı Log Kayıtları
Ayarlar Ayarlar Devamı Log Kayıtları

❓ Neden PolyOS Lab?

  • 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.

🚀 Özellikler

🖥️ Ekran İzleme ve Uzaktan Kontrol

  • 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.

🔒 Güvenlik ve Odak Modu

  • Girdileri Kapat & Kilitle: Tek tıkla tüm klavye/fare girdilerini xinput seviyesinde 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-storage ve uas ç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/hosts dosyasını manipüle ederek yasaklı web sitelerini sunucu üzerindeki özel /blocked uyarı sayfasına yönlendirir.

⚡ Hızlı Operasyonlar ve WOL

  • 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ı.

🏗️ Mimari Yapı

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;
Loading

📁 Klasör Yapısı

  • 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ı.

⚙️ Kurulum ve Geliştirme

Sistem Gereksinimleri

  • Öğrenci Bilgisayarı (Linux/Pardus): xinput, scrot, xdotool, xclip, python3-tk, x11vnc
  • Geliştirme Ortamı: Go 1.20+, Node.js 18+

1. Sunucuyu Çalıştırın

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)

2. Dashboard'u (Öğretmen Paneli) Çalıştırın

cd dashboard
npm install
npm run electron:dev

3. İstemciyi (Öğrenci İstemcisi) Başlatın

Yö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.go

Yö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-client

Bu yöntem, olası bir güvenlik açığında saldırganın elde edebileceği hakları dramatik biçimde sınırlar.


🗺️ Yol Haritası

  • Ç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

📄 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Daha fazla bilgi için LICENSE dosyasına göz atabilirsiniz.

About

Pardus uyumlu, Go ve TSX tabanlı, yerli ve milli akıllı laboratuvar/sınıf yönetim ekosistemi

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages