![[Proiect] Panel OS v5.0 — Universal Metin2 Server Management | BETA - Mesaj 1 - Imagine 1 [Proiect] Panel OS v5.0 — Universal Metin2 Server Management | BETA - Mesaj 1 - Imagine 1](https://i.imgur.com/tR30gvP.png)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
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 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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Panel OS va avea propriul sistem de compilare a surselor.
AutoDiscovery încearcă să detecteze automat sursele Game și DB, inclusiv surse aflate în:
/usr/srcCompilatorul va avea o fereastră proprie în Panel OS, cu output live, unde vei putea urmări comenzile și rezultatul compilării.
$ cd /usr/src/Source
$ gmake clean
$ gmake -j6 game-server
Compiling...
Compiling...
Build succeeded!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.”
Partea de explicații este încă în dezvoltare și vreau să o îmbunătățesc în continuare.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
item_proto.txt
item_names.txt
✓ 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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Codul itemului introdus va fi verificat folosind informațiile detectate din:
item_proto.txt
item_names.txt
Ideea este să existe cât mai multe validări înainte ca o modificare să ajungă în baza de date.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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ă.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Direcția actuală este:
La bază, sistemul execută operațiile și comenzile normale ale serverului, exact cum ai executa o comandă precum:
sh start.shPanel 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.
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.”
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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ă.
DATABASE •
PLAYERS •
BACKUP •
COMPILER •
DIAGNOSTICS
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.”
„Arată-mi serverul tău și voi încerca să înțeleg cum este construit.”
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
Built from an idea. Still learning. Still building.
BETA — WORK IN PROGRESS




![[Proiect] Panel OS v5.0 — Universal Metin2 Server Management | BETA - Mesaj 2 - Imagine 1 [Proiect] Panel OS v5.0 — Universal Metin2 Server Management | BETA - Mesaj 2 - Imagine 1](https://i.imgur.com/7e9RIJX.png)