Membru Începător
Membru Începător
  • Mesaje: 10
    Membru din: 17 Ian 2025, 12:20
  • Reacții: 18
  • Mesaje utile: 0
  • Status: Învăț programare singur, prin proiecte Metin2
    Server: LUCKY2.RO
  • Regat: Shinsoo
  • [ID Discord]
  • Contact:

    Medalii

    ⚡ PANEL OS v5.0
    Universal Metin2 Server Management System
    BETA PREVIEW — proiect în dezvoltare

    [Proiect] Panel OS v5.0 — Universal Metin2 Server Management | BETA - Mesaj 1 - Imagine 1


    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    👋 CINE SUNT EU?


    Salut tuturor!

    Înainte să vă prezint Panel OS, vreau să vă spun câteva lucruri despre omul din spatele proiectului.

    Mă numesc Stelian Ionascu, iar în comunitate folosesc numele IONASCU/ARTYOM.

    Nu sunt un programator cu 10 ani de experiență și nu am lucrat într-o companie de software. Sunt încă la început și învăț programare construind efectiv lucruri.

    Am avut o copilărie dificilă, iar din cauza situației mele personale și a problemelor de sănătate mi-a fost foarte greu să îmi găsesc un loc de muncă și să îmi construiesc drumul profesional pe care mi l-aș fi dorit.

    În loc să renunț, am început să învăț. Am început cu lucruri mici, am greșit foarte mult, am luat-o de la capăt de multe ori și, încet-încet, am început să construiesc lucruri din ce în ce mai complexe.

    Panel OS este unul dintre proiectele în care am investit foarte mult timp.

    Este primul meu proiect de această dimensiune și nu pretind că este perfect. Din contră, încă învăț în timp ce îl construiesc.

    Dar tocmai de aceea am vrut să îl prezint comunității: vreau să vă arăt ce am reușit să construiesc până acum și, mai ales, ce vreau să devină acest proiect.


    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    💡 DE UNDE A PORNIT IDEEA?


    Panel OS nu a pornit de la ideea de a copia un panel existent.

    A pornit de la o întrebare aparent simplă:

    „Cum ar fi dacă un panel ar putea să își descopere singur serverul?”


    De aici a apărut AutoDiscovery.

    În administrarea serverelor Metin2, foarte multe lucruri sunt făcute manual: scripturi de start și stop, căi către canale, core-uri, porturi, configurații, quest-uri, surse, locale și diferite structuri care pot varia foarte mult de la un serverfile la altul.

    M-am gândit:

    De ce trebuie ca un panel să presupună cum este organizat serverul?

    De ce nu ar încerca să îl descopere singur?


    Scopul este să construiesc un sistem cât mai universal și agnostic față de structura serverfile-ului, astfel încât administratorul să nu fie obligat să își reorganizeze serverul doar pentru a putea folosi panelul.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    🔎 AUTODISCOVERY


    AutoDiscovery este punctul de pornire al Panel OS.

    Atunci când este pus lângă serverfile-ul instalat pe FreeBSD, sistemul începe să îl scaneze și să încerce să înțeleagă structura reală a serverului.

    Nu trebuie să îi spui manual unde se află fiecare canal, câte core-uri există sau toate porturile. AutoDiscovery încearcă să găsească aceste informații singur.

    Poate detecta automat:

    Canalele și core-urile
    Auth
    DB
    Porturile serverului
    Locale
    Quest și QC
    Structura DATA/PACKAGE
    Item Proto și Mob Proto
    Configurațiile serverului
    Sursele Game și DB
    Surse aflate în /usr/src, indiferent de numele folderului

    După scanare, AutoDiscovery generează automat:



    Acest fișier devine practic harta pe care Panel OS o folosește pentru a ști cum este construit serverul.

    AutoDiscovery nu este tot Panel OS. Este fundația pe care se bazează restul sistemului.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    ⚙️ DAEMON — SERVER CARE SE SUPRAVEGHEAZĂ SINGUR


    Una dintre ideile importante ale Panel OS este sistemul de Daemon.

    Daemon-ul folosit pornește de la scriptul existent în MartySama, însă a fost rescris și îmbunătățit pentru a se integra cu structura și funcțiile Panel OS.

    Atunci când pornești serverul din Panel OS, daemon-ul lucrează împreună cu configurația generată de AutoDiscovery.

    El urmărește procesele serverului și poate detecta situații precum:

    cade un proces Game
    cade un core
    cade un canal
    apare o problemă la DB

    În funcție de situație, sistemul poate interveni și încerca să repornească procesul afectat.

    Dacă administratorul este plecat, serverul nu ar trebui să depindă de faptul că acesta stă permanent lângă SSH.


    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    📡 LIVE MONITORING


    Panel OS va monitoriza în timp real starea serverului.

    În dashboard vei putea vedea:

    Server — ONLINE / OFFLINE
    Daemon — ACTIV / INACTIV
    MySQL — CONECTAT / DECONECTAT
    Canale active
    Procese active
    Jucători online

    Există și Live Log, unde vor apărea evenimentele detectate în timp real:

    jucător conectat
    jucător deconectat
    eroare detectată
    proces căzut
    proces repornit
    server pornit

    Scopul este să poți vedea ce se întâmplă cu serverul fără să deschizi permanent mai multe sesiuni SSH și să urmărești manual logurile.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    🎛️ CONTROL SERVER


    Din Quick Actions vei putea controla serverul direct:

    START
    STOP
    RESTART
    Backup

    START folosește informațiile detectate de AutoDiscovery pentru a porni structura serverului.

    STOP oprește procesele folosind aceeași configurație.

    RESTART oprește procesele, verifică faptul că acestea au fost oprite și apoi pornește serverul din nou.

    Ideea este ca toate aceste operațiuni să fie gestionate centralizat.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    💾 BACKUP SYSTEM


    Sistemul de backup este unul dintre modulele în care vreau să duc proiectul mai departe decât un simplu script de arhivare.

    La Backup vei putea selecta:

    Game
    DB
    Sursa Game
    Sursa DB

    Va exista și un sistem de Auto Backup, cu interval configurabil.

    Vor exista loguri pentru:

    când a început
    ce a fost salvat
    dacă operațiunea a avut succes
    dacă a apărut o eroare

    Va exista și opțiunea de a decide dacă backup-ul anterior trebuie șters după realizarea cu succes a celui nou.

    Voi lua în calcul și mai multe metode de arhivare și compresie.
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    🔨 COMPILER


    Panel OS va avea propriul sistem de compilare a surselor.

    AutoDiscovery încearcă să detecteze automat sursele Game și DB, inclusiv surse aflate în:

    Code:
    /usr/src
    fără ca utilizatorul să fie obligat să folosească un nume de folder prestabilit.

    Compilatorul va avea o fereastră proprie în Panel OS, cu output live, unde vei putea urmări comenzile și rezultatul compilării.
    Code:
    $ cd /usr/src/Source
    $ gmake clean
    $ gmake -j6 game-server
    
    Compiling...
    Compiling...
    Build succeeded!
    
    Această parte este încă în dezvoltare.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🩺 DIAGNOSTICS & CORE ANALYSIS
    Sistemul de diagnosticare este momentan în lucru.

    Ideea este ca Panel OS să poată verifica automat logurile canalelor și să găsească problemele importante.

    Folosindu-se de AutoDiscovery și Daemon, sistemul poate analiza:

    SYSLOG
    SYSERR
    erori Game
    erori DB
    probleme ale canalelor

    De asemenea, Panel OS poate analiza fișiere precum game.core și db.core prin apăsarea unui singur buton.

    Erorile sunt organizate după severitate:

    CRITICAL
    ERROR
    WARNING

    Ideea nu este ca Panel OS să spună doar:
    „A fost găsită o eroare.”
    ci să încerce să explice ce înseamnă eroarea, ce trebuie verificat și cum ar putea fi rezolvată.

    Partea de explicații este încă în dezvoltare și vreau să o îmbunătățesc în continuare.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    👥 PLAYER MANAGEMENT
    Panel OS va avea și un sistem de administrare a jucătorilor.

    Poți căuta un jucător după:

    Numele din joc
    Username-ul contului
    IP

    După selectarea unui jucător vei putea vedea informațiile disponibile, inclusiv mapa în care se află.

    Vor exista funcții precum:

    BAN
    UNBAN
    administrarea contului
    acțiuni de depanare pentru personaje

    Vreau ca aceste funcții să aibă cât mai multe verificări de siguranță, pentru a evita modificările accidentale asupra bazei de date.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🛡️ HWID BAN INTEGRATION
    Panel OS va putea integra și sistemul HWID Ban.

    Important: această funcționalitate necesită ca sistemul HWID Ban să existe deja în sursa serverului.

    Panel OS nu poate inventa un sistem HWID care nu există în server.

    De aceea, AutoDiscovery va putea verifica dacă serverul are implementarea necesară. Dacă aceasta nu există, utilizatorul va primi o notificare că funcția HWID nu este disponibilă.

    Scopul este ca Panel OS să fie cât mai inteligent în ceea ce privește compatibilitatea cu serverfile-ul utilizatorului.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🎁 CREATE ITEM
    Panel OS va încerca să detecteze automat:
    Code:
    item_proto.txt
    item_names.txt
    
    Itemele vor putea fi căutate după:

    Cod
    Nume

    După selectarea jucătorului și a itemului, acesta va putea fi trimis în depozitul / item shop-ul jucătorului, în funcție de structura serverului.

    Un aspect important este sistemul de bonusuri.

    Nu vreau opțiuni generice care permit orice combinație indiferent de item. Panel OS va încerca să determine automat dacă itemul selectat suportă anumite opțiuni și să afișeze doar ceea ce este permis.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🎟️ REWARD SYSTEM
    Va exista și un sistem de reward.

    Codul itemului introdus va fi verificat folosind informațiile detectate din:
    Code:
    item_proto.txt
    item_names.txt
    
    Astfel, Panel OS poate verifica dacă itemul există și poate afișa numele corespunzător înainte de acordarea acestuia.

    Ideea este să existe cât mai multe validări înainte ca o modificare să ajungă în baza de date.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🔐 SECURITATE & FIRST TIME SETUP
    Panel OS va avea propriul sistem de autentificare.

    La prima pornire, utilizatorul își creează contul de administrator:

    Username
    Parolă
    3 întrebări de securitate

    Accesul va fi permis doar dacă datele de autentificare sunt corecte.

    După crearea primului cont, nu va mai fi permisă crearea liberă de alte conturi din interfața de first-time setup.

    Parola va fi stocată securizat.

    În cazul în care utilizatorul își uită parola, va exista un sistem de recuperare bazat pe întrebările de securitate configurate la prima creare a contului.

    Datele Panel OS vor fi stocate în baza de date originală a serverului Metin2, însă într-un database separat, creat special pentru Panel OS.

    AutoDiscovery va verifica existența acestuia și, dacă nu există, îl va putea crea automat împreună cu structura necesară.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🔒 SSH / PUTTY & ACCES
    Panel OS nu este un panel web și nu este accesibil printr-un browser sau printr-un link public.

    Direcția actuală este:
    SSH / Putty → Panel OS → FreeBSD
    Panel OS folosește conexiunea SSH și informațiile existente în configurația serverului, inclusiv CONFIG și conf.txt.

    La bază, sistemul execută operațiile și comenzile normale ale serverului, exact cum ai executa o comandă precum:
    Code:
    sh start.sh
    Pentru protecție suplimentară poate fi folosit un firewall și, opțional, autentificarea SSH prin cheie PPK.

    Panel OS poate fi accesat și de pe telefon printr-un client SSH, dacă IP-ul respectiv este permis în firewall.
    Panel OS nu deschide un serviciu web public și nu introduce o metodă separată de conectare la server.
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🤖 AI ASSISTANT
    Una dintre ideile pe care vreau să le dezvolt este un mini-AI integrat în Panel OS.

    Vreau să încerc să construiesc această componentă astfel încât administratorul să poată interacționa cu panelul printr-un chat și comenzi naturale.

    De exemplu:
    „Salut, dă-mi restart la server.”
    Evident, restartul poate fi făcut mult mai simplu apăsând butonul dedicat. 😄

    Pentru mine însă este o funcție interesantă și „fun”: vreau ca interacțiunea cu panelul să fie mai naturală, nu doar o colecție de butoane.

    În viitor vreau ca AI-ul să poată primi și informațiile relevante găsite de Diagnostics și să ajute la explicarea problemelor.

    Nu vreau să promit că acest sistem va fi perfect. Este o parte pe care încă o cercetez și o dezvolt.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🖥️ INTERFAȚA
    Panel OS este construit în Python, folosind Textual 8.x.

    Este o interfață TUI care rulează direct în terminal și nu folosește browser sau Electron.

    Textual îmi oferă posibilitatea de a construi o interfață textuală modernă și, din punctul meu de vedere, destul de frumoasă pentru un sistem care rulează prin SSH.

    Una dintre provocările proiectului este să construiesc o interfață care să arate cât mai modern și premium fără să ies din ceea ce poate face Textual.

    În spatele interfeței sunt mii de linii de cod rescrise și dezvoltate pentru proiect. La bază, Panel OS execută comenzile și operațiile normale ale serverului, însă le integrează într-o interfață centralizată și mult mai sofisticată.
    SERVER
    DATABASE
    PLAYERS
    BACKUP
    COMPILER
    DIAGNOSTICS
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🧠 DE CE VREAU SĂ FIE UNIVERSAL?
    Pentru mine, acesta este probabil cel mai important lucru din proiect.

    Nu vreau să construiesc un panel care funcționează perfect doar pentru un singur serverfile.

    Există foarte multe serverfile-uri Metin2, structuri diferite, nume diferite pentru foldere, număr diferit de canale, core-uri și configurații.

    AutoDiscovery este încercarea mea de a rezolva această problemă.

    În loc să spun:
    „Serverul tău trebuie să arate exact așa pentru ca Panel OS să funcționeze.”
    vreau ca Panel OS să spună:
    „Arată-mi serverul tău și voi încerca să înțeleg cum este construit.”
    Este direcția în care vreau să duc proiectul.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    🚧 STADIUL PROIECTULUI
    Panel OS este în prezent BETA / WORK IN PROGRESS.

    Dashboard-ul există deja, iar mai multe sisteme sunt în dezvoltare.

    Unele funcții sunt funcționale, altele sunt în lucru, iar unele reprezintă încă direcții pe care vreau să le dezvolt.

    Nu vreau să pretind că este un produs perfect.

    Este primul meu proiect de această dimensiune.

    Am învățat foarte multe construindu-l și am folosit și ajutorul AI-ului pentru a înțelege și rezolva anumite probleme, dar încerc să înțeleg și să construiesc proiectul, nu doar să copiez cod.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ❤️ DE CE ÎL PREZINT ACUM?
    Pentru că înainte să merg mai departe vreau să știu dacă direcția în care merg are sens.

    Nu caut doar complimente.

    Vreau feedback real.

    Dacă vedeți o funcție care nu are sens, spuneți-mi.

    Dacă aveți o idee mai bună, spuneți-mi.

    Dacă administrați servere Metin2 și există ceva ce v-ar face viața mai ușoară, vreau să știu.

    Dacă observați o problemă în concept, vreau să o aflu acum, nu după ce termin proiectul.
    Nu sunt aici să spun că am construit cel mai bun panel Metin2.

    Sunt aici să vă arăt ce am încercat să construiesc și să vă întreb dacă merită să duc mai departe pasiunea mea.
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    ⚡ PANEL OS v5.0

    Built from an idea. Still learning. Still building.

    BETA — WORK IN PROGRESS

    💬 Aștept feedback-ul vostru.
    [/b][/i]
    Membru Începător
    Membru Începător
  • Mesaje: 10
    Membru din: 17 Ian 2025, 12:20
  • Reacții: 18
  • Mesaje utile: 0
  • Status: Învăț programare singur, prin proiecte Metin2
    Server: LUCKY2.RO
  • Regat: Shinsoo
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Membru Începător
    Membru Începător

    Mesaj de Ionascu »

    [Proiect] Panel OS v5.0 — Universal Metin2 Server Management | BETA - Mesaj 2 - Imagine 1
    BETA — WORK IN PROGRESS
    Membru Începător
    Membru Începător
  • Mesaje: 10
    Membru din: 17 Ian 2025, 12:20
  • Reacții: 18
  • Mesaje utile: 0
  • Status: Învăț programare singur, prin proiecte Metin2
    Server: LUCKY2.RO
  • Regat: Shinsoo
  • [ID Discord]
  • Contact:

    Medalii

    Avatar utilizator
    Membru Începător
    Membru Începător

    Mesaj de Ionascu »


    + 🎉 **VEȘTI BUNE! 🚀**

    + De fapt, Panel OS poate fi accesat și remote.
    Panelul poate fi folosit și în **varianta de pe PC** 💻, nu doar direct de pe server! 🔥


    Singura diferență este că, pentru conectarea de pe PC, trebuie făcute **configurările manual**, respectiv:
    + 🔹 IP-ul serverului
    + 🔹 Portul
    + 🔹 Username-ul
    + 🔹 Parola
    + 🔹 și celelalte date necesare conexiunii ⚙️

    După configurare, panelul poate comunica cu serverul și poate fi utilizat de pe PC. 😎

    Practic, avem **suport pentru ambele variante**:
    🖥️ PC → configurare manuală → conectare la server
    🖥️ Server/VPS → utilizare directă, fără configurări externe complicate

    Asta e chiar o veste bună pentru flexibilitatea proiectului. 💪🔥
    Scrie răspuns

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Proiecte personale”

    Informații

    Utilizatori ce navighează pe acest forum: Niciun utilizator înregistrat și 2 vizitatori

    Discord ID copiat: