pterodactyl / panel

Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.
https://pterodactyl.io
Other
6.58k stars 1.64k forks source link

Official Support for Add-ons #2234

Open schrej opened 4 years ago

schrej commented 4 years ago

We should make it easier to create add-ons for the panel, and ideally also for wings. Currently most add-ons overwrite files in order to add additional functionality. Each update to the panel requires to reinstall any previously installed add-ons. In addition, add-ons are very tightly coupled to the installed version of the panel. Using outdated add-ons can even re-introduce fixed security issues in the worst case.

A better system should therefore

Wouter0100 commented 3 years ago

Personally I don't think I'd be all to difficult to add it using composer. This would allow it to more easily hook into routes and so on. As far as I know, Laravel has some pretty good features for this where the panel could make use of. I think a good start would be to be able to load pages from a composer-loaded package (maybe even with a pterodactyl-addon-type of some sorts) and possibly add menu items to redirect users to these pages.

Later, further integrations could be made with parts of the panel and the ability to replace/expand features.

ThatProgrammerr commented 3 years ago

I'd definitely like to see that, although I can see that a lot of developers wouldn't like the composer way as sadly, developers like to charge for their addons and therefore composer wouldn't an option. Although, the concept in general of an addon system that would allow people to upload their addons into an addons folder or an addons page in the panel would really help a lot and avoid unrequired edits to the panel's source code. Best of both worlds really.

Wouter0100 commented 3 years ago

I'd definitely like to see that, although I can see that a lot of developers wouldn't like the composer way as sadly, developers like to charge for their addons and therefore composer wouldn't an option.

That's actually possible just fine with composer :-). You can release packages behind a payment wall just fine. Or atleast, require authentication on which you can enforce a subscription of some sort.

ThatProgrammerr commented 3 years ago

Wouldn't that make sites like Pterodactyl Market useless though? As people would have to buy from composer payment walls instead of through sites dedicated to allow developers to sell their creations.

Wouter0100 commented 3 years ago

Wouldn't that make sites like Pterodactyl Market useless though? As people would have to buy from composer payment walls instead of through sites dedicated to allow developers to sell their creations.

No, you can add your own repository from for example the Market you mentioned.

ThatProgrammerr commented 3 years ago

Oh, okay. Then maybe composer could work.

reesericci commented 2 years ago

Any update on this?

DaneEveritt commented 2 years ago

No

Jelcoo commented 2 years ago

No

VozDeOuro commented 2 years ago

any update on this ? maybe add it on the v2 upcoming panel version ?

TekExplorer commented 1 year ago

Doesn't Golang have a way to load plugins via .so files? Honestly the trickiest bits are going to be Wings and the React frontend, as the former would require a plugin implementation and the latter requires building

parkervcp commented 1 year ago

Golang have a way to load plugins

While plugins are supported in go, They are not simple to implement and basically require being built on the same system as the main application.

There are ways around this like using gRPC that would just add complexity in other ways.

TekExplorer commented 1 year ago

i suppose the important question is, what do people actually need out of addon support?

creating api routes is simple enough with composer

for the UI... generally people create new pages and add new elements to existing pages, and, of course, themes - altering existing elements.

and wings, what do people usually need to alter it for?

people can get really creative with what they are given, so what can we give that would cover most use-cases?

TekExplorer commented 1 year ago

I've been poking around, and ChatGPT of all things seems to be suggesting the use of HOCs for the React app as addons If that is considered, it might be necessary to make much greater use of props and default props, kind of similar to the way that the current account and server routes are populated, actually.

I reiterate that i dont actually know a whole lot about this, but i thought i'd throw it out there and see if it catches any proverbial fish