Aller au contenu

Faire Un Spk


MrWaloo

Messages recommandés

Salut,

Je me suis documenté pas mal pour savoir comment faire un spk. Ça n'a pas l'air insurmontable...

J'ai toutefois des petites questions :

- quel est l'intérêt de mettre le package_icon encodé en BASE64 dans le fichier INFO (comme c'est le cas dans les spk SynoCommunity) au lieu de l'enregistrer en PACKAGE_ICON.PNG à coté du fichier INFO (comme c'est le cas pour les spk Synology) ?

- existe-t-il un exemple de spk qui ne lance pas une page web avec un port différent (genre 9091 pour transmission) mais une fenêtre ExtJS? C'est juste pour la syntaxe.

- avec le paquet Python installé, on peut faire un CGI en python ? (réponse : oui, il faut juste faire un .htaccess qui va bien)

Merci

A+

Michel

Modifié par MrWaloo
Lien vers le commentaire
Partager sur d’autres sites

Je réponds dans l'ordre :

  • Pas vraiment d'intérêt, les deux méthodes ont coexistées à une époque, base64 prédominait chez Syno avant, c'est possible que maintenant ce soit la méthode PACKAGE_ICON qu'ils privilégient. Je ne sais pas. En tout cas pour le repo c'est facile à stocker en base de donnée via le base64 ;) Faut voir avec Piwi pour le repo.
  • Oui il en existe, je te recommande le SPK subliminal comme exemple, ça utilise le must en Python du moment et j'ai essayé de rendre clair le ExtJS qui ne l'est pas forcément... Je n'ai pas regardé shellinabox mais je te conseille de rester sur du "maison" SynoCommunity ;)
  • Oui, même sans .htaccess, cf le SPK subliminal.

Pour résumer, le SPK subliminal c'est :

  • Un fichier de config pour sauvegarder les paramètres utilisateurs
  • Une petite base de donnée sqlite avec une table pour stocker une liste de répertoires
  • Une interface ExtJS qui permet d'éditer tout ce beau monde
  • Un folder picker dans ExtJS pour sélectionner un dossier facilement (comme dans les SPK de Synology)
  • Un CGI protégé des intrusions exterieures grace à une authentification DSM et un contrôle sur le groupe utilisateur (restreint à administrators)

Tout ça en Python parce que ça fait un code lisible et synthétique.

Du coté des modules Python en vogue en ce moment ça utilise :

  • Flask (framework web)
  • SQLAlchemy (ORM)

Enjoy :)

Lien vers le commentaire
Partager sur d’autres sites

  • Pas vraiment d'intérêt, les deux méthodes ont coexistées à une époque, base64 prédominait chez Syno avant, c'est possible que maintenant ce soit la méthode PACKAGE_ICON qu'ils privilégient. Je ne sais pas. En tout cas pour le repo c'est facile à stocker en base de donnée via le base64 ;) Faut voir avec Piwi pour le repo.

Peu importe, le dépôt supporte les deux méthodes avec une priorité sur l'icône en base64 dans le fichier INFO.

C'est-à-dire que si l'icône est définie dans le fichier INFO, le fichier PACKAGE_ICON.PNG sera ignoré.

  • Une petite base de donnée sqlite avec une table pour stocker une liste de répertoires

Pour stocker des paramètres d'application, je privilégié les fichiers JSON.

Je ne sais pas si c'est aussi transparent en Python qu'en PHP, mais en PHP c'est très simple de récupérer un fichier JSON sous forme de tableau ou d'objets imbriqués (et surtout très performant).

Modifié par PiwiLAbruti
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.