ATTENZIONE: Per Lasciare un Commento bisogna essere utenti Iscritti

 

Vuoi Iscriverti e Commentare?

 
Sei già Iscritto? Accedi!

 

Guida introduttiva allo sviluppo di plug-in di CyberPanel!

Guida introduttiva allo sviluppo di plug-in di CyberPanel!

Se sei interessato ad estendere le funzionalità del core di CyberPanel, questa guida può aiutarti a iniziare spiegando come estendere CyberPanel creando e aggiungendo plugin.

 

Se sei uno sviluppatore esperto, puoi semplicemente guardare il piccolo plug-in di esempio e spostarti da lì. Ogni applicazione CyberPanel (app Django) contiene un file di segnale, che è possibile utilizzare per collegare eventi. Per l'app websiteFunctions, il file dei segnali si trova qui. Ecco un piccolo esempio di come un evento da questo file viene utilizzato per fare qualcos'altro nel plugin di esempio menzionato sopra.

Prerequisiti
 

Pitone
Django
HTML (base)
CSS (base)
 

Dovresti avere una chiara comprensione del linguaggio di programmazione Python e del framework Django, poiché in questa guida assumiamo che tu abbia esperienza con entrambe queste tecnologie.

 

Nota: puoi usare semplicemente JavaScript nei tuoi plugin o in qualsiasi framework JavaScript, dipende totalmente da te. Devi solo seguire le norme del framework Django, perché il plugin CyberPanel è solo un'altra app di Django.

Passaggio 1: imposta il tuo ambiente di sviluppo
Per prima cosa è necessario configurare un ambiente di sviluppo locale, è possibile clonare CyberPanel dal repository GitHub.

git clone https://github.com/usmannasir/cyberpanel/ --single-branch v1.7.2-plugin

Una volta che il repository è clonato localmente, è necessario prima creare una semplice app Django.

cd v1.7.2-plugin
django-admin startapp pluginName

Ora questo creerà un'app Django e una struttura di directory predefinita nella directory pluginName, il nome del plugin è di grande importanza, quindi assicurati di sceglierlo con saggezza. Una volta creata l'app Django, devi definire un meta file per il tuo plug-in, in modo che CyberPanel possa leggere le informazioni sul tuo plug-in, puoi mettere questo meta file all'interno della cartella principale dell'app.

cd pluginName
nano meta.xml ## This will open the editor, you can paste following in this file
<?xml version="1.0" encoding="UTF-8"?>
<cyberpanelPluginConfig>
  <name>customplugin</name>
  <type>plugin</type>
  <description>Plugin to make custom changes</description>
  <version>0</version>
</cyberpanelPluginConfig>

Passaggio 2: creazione di un file di segnale e regolazione di alcune impostazioni
Una volta impostato l'ambiente di sviluppo, è necessario creare un file di segnali. Puoi dare un nome a questo file, ma nel nostro plugin di esempio abbiamo chiamato signal.py, dopo averlo creato puoi lasciare questo file vuoto per ora. Vediamo come dovrebbero apparire alcuni dei tuoi file all'interno della cartella dei plugin.

apps.py

Nel tuo file apps.py, devi importare questo file di segnali all'interno della funzione ready.

def ready(self):
        import signals

Se hai nominato questo file qualcos'altro, modifica i nomi di conseguenza, puoi vedere il file di esempio qui.

__init__.py

È necessario specificare una variabile default_app_config in questo file, ad esempio

default_app_config = 'examplePlugin.apps.ExamplepluginConfig'

Puoi regolare i nomi in base al nome del tuo plug-in. Esempio può essere visto qui.

urls.py

All'interno della directory principale dell'app creare urls.py e incollare questo contenuto

from django.conf.urls import url
import views
urlpatterns = [
    url(r'^$', views.examplePlugin, name='examplePlugin'),
]

Puoi avere tanti URL in questo file (con le corrispondenti funzioni di visualizzazione), ma questa definizione di URL è molto importante, sostituisci examplePlugin con il tuo nome di plugin, come

url(r'^$', views.yourPluginName, name='yourPluginName'),

Questo è molto importante per CyberPanel per registrare la pagina del plugin. In questa vista puoi caricare la pagina predefinita del tuo plugin (o il file delle impostazioni per il tuo plugin). Con questa definizione dell'URL il tuo plugin non funzionerà.

Alcuni file opzionali

Il programma di installazione dei plug-in (illustreremo in seguito come installare i plug-in in seguito) non si prenderà cura di alcun modello creato nel file model.py del progetto, quindi se si creano alcuni modelli è possibile scrivere la propria logica per applicare questi modelli al database, per proprio per questo è possibile creare due file.

 

Possono essere codice Python o semplice script bash.

 

pre_install (Se esiste, verrà eseguito prima dell'installazione del plugin)
post_install (Se esiste, verrà eseguito dopo l'installazione del plugin)
 

Metti questi file nella stessa cartella con gli altri file che hai creato sopra. Se il tuo file è un codice Python, non dimenticare di includere questa riga in alto #! / Usr / local / CyberCP / bin / python2

 

Questo completa la struttura delle directory del tuo plugin, se ti sei confuso lungo la strada, puoi guardare il plugin di esempio. Puoi creare tutto ciò che puoi fare con una normale applicazione Django come creare viste e modelli.

Passaggio 3: risposta agli eventi
Una volta terminato con il Passaggio 2 sopra, si desidera collegare gli eventi attivati ​​dal core di CyberPanel. Puoi anche creare un plugin che non dipenda dai segnali (in altre parole non vuoi interagire con il core). Ma questo passaggio ti aiuterà a capire come puoi rispondere a vari eventi che si verificano nel nucleo.

 

Per ottenere l'elenco degli eventi nella funzione del sito Web è possibile visitare il file di segnale (queste applicazioni di base riguardano la creazione e la cancellazione di siti Web, domini figlio e alias dominio). Alcuni eventi sono:

 

preWebsiteCreation: questa operazione viene attivata prima che CyberPanel avvii la creazione del sito Web, quindi è possibile utilizzare questo evento per interrompere l'ulteriore esecuzione del codice di base, ne parleremo più avanti.
postWebsiteDeletion: questo viene attivato dopo che il core ha terminato la cancellazione del sito web.
 

Puoi visitare il file per altri eventi, sono auto-esplicativi. Quindi, come puoi rispondere a questi eventi, potresti ricordare che nel nostro plugin abbiamo creato un file signals.py. Puoi rispondere agli eventi in quel file. Vediamo come possiamo rispondere all'evento postWebsiteDeletion.

from django.dispatch import receiver
from django.http import HttpResponse
from websiteFunctions.signals import postWebsiteDeletion
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
@receiver(postWebsiteDeletion)
def rcvr(sender, **kwargs):
    request = kwargs['request']
    logging.writeToFile('Hello World from Example Plugin.')
    return HttpResponse('Hello World from Example Plugin.')

Dalle funzioni del gestore di eventi è possibile restituire l'oggetto HttpResponse o l'int 200. Tuttavia, il comportamento cambierà in base a ciò che è stato restituito. Se è stato restituito l'oggetto HttpResponse, il core CyberPanel interromperà l'ulteriore elaborazione e considererà la risposta come definitiva e la restituirà al browser. Tuttavia, se si restituisce int 200, il core CyberPanel continuerà l'elaborazione, presupponendo che gli eventi siano stati eseguiti correttamente.

Passaggio 4: imballaggio, spedizione e installazione del plug-in
È necessario pacchettizzare il plugin in modo che possa essere installato su CyberPanel. Dopo aver completato il plugin, basta comprimere la tua app Django. Il nome del file zip dovrebbe essere il nome del tuo plug-in i.es examplePlugin.zip, altrimenti l'installazione fallirà.

Per installare il tuo plugin puoi usare l'installer del plugin situato in / usr / local / CyberCP / pluginInstaller, usa i seguenti comandi per installare e rimuovere il tuo plugin.

Installazione

Per prima cosa carica il tuo plugin su / usr / local / CyberCP / pluginInstaller

cd /usr/local/CyberCP/pluginInstaller
python pluginInstaller.py install --pluginName examplePlugin

Disinstalla

cd /usr/local/CyberCP/pluginInstaller
python pluginInstaller.py remove --pluginName examplePlugin

Bei nomi
Abbiamo rilasciato un plugin ufficiale chiamato Beautiful names, puoi leggere di più. La funzione di installazione del plugin è in versione beta e non è ancora disponibile con l'installazione ufficiale, per installare la versione compatibile con plugin è possibile installare CyberPanel tramite

sh <(curl https://mirror.cyberpanel.net/install-test.sh || wget -O - https://mirror.cyberpanel.net/install-test.sh)

 


Stampa