Aller au contenu

Package Center


Diaoul

Messages recommandés

Bonjour tout le monde,

Comme Synology n'est pas très généreux en terme de documentation, j'ai décide de regarder le fonctionnement de Package Center afin de créer éventuellement notre propre serveur de paquets afin de faciliter leur distribution.

L'analyse des paquets HTTP transitant par le réseau devrait être suffisante pour essayer de répliquer le fonctionnement du serveur de paquets Synology.

Cette analyse est encore en cours, n'hésitez pas à contribuer.

Merci PiwiLAbruti pour la récupération des requêtes brutes

Les intérogations restantes sont en orrange

Récupération de la liste des paquets:

Requête brute :


POST /packageupdate/getpackages.php HTTP/1.1

User-Agent: "Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)"

Host: update.synology.com

Accept: */*

Content-Length: 93

Content-Type: application/x-www-form-urlencoded

timezone=Brussels&language=fre&unique=synology_x86_411+II&arch=x86&major=3&minor=2&build=1922

Analyse requête : Si j'ai bien compris, la requête est faite vers update.synology.com/packageupdate/getpackages.php en POST avec comme paramètres:
  • timezone: le timezone (format ISO... ?)
  • language: format ISO 639-2
  • unique: identifiant du Syno (synology_arch_modèle), résultat de `get_key_value /etc.defaults/synoinfo.conf unique`
  • arch: architecture, résultat de `get_key_value /etc.defaults/synoinfo.conf unique | cut -d_ -f2`
  • major: major du DSM
  • minor: minor du DSM
  • build: build du DSM
Réponse brute :

HTTP/1.1 200 OK

Date: Wed, 07 Sep 2011 10:46:41 GMT

Server: Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/1.0.0c PHP/5.3.3

X-Powered-By: PHP/5.3.3

Vary: Accept-Encoding

Transfer-Encoding: chunked

Content-Type: text/html


1afbb

[{"package":"phpMyAdmin","version":"3.2.5-003","dname":"phpMyAdmin","desc":"phpMyAdmin est un outil logiciel gratuit con\u00e7u pour g\u00e9rer les bases de donn\u00e9es MySQL. G\u00e9rez les bases de donn\u00e9es MySQL stock\u00e9es sur votre DiskStation en installant ce programme.","link":"http:\/\/ukdl.synology.com\/download\/packages\/phpMyAdmin-3.2.5-003.spk","md5":"fc2898f5f46e603cac06cb91cb271aca","icon":"[image encodée en Base64]","size":3840000,"qinst":true,"depsers":"apache-web mysql","deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},

{"package":"MailStation","version":"20110715-035","dname":"Mail Station","desc":"Mail Station 2 fournit un service webmail afin que vous puissiez acc\u00e9der aux courriers \u00e9lectroniques stock\u00e9s sur votre DiskStation. De plus, vous pouvez \u00e9galement recevoir des courriers de n\u2019importe quel autre serveur de messagerie pour conserver tous vos messages dans un seul endroit facile d\u2019acc\u00e8s.","link":"http:\/\/ukdl.synology.com\/download\/packages\/MailStation2-20110715-035.spk","md5":"905efb6a4dd4fd5bfd3d9da4eceede95","icon":"[image encodée en Base64]","size":2119680,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"WordPress","version":"3.2-006","dname":"WordPress","desc":"WordPress est un outil open source de blog et une plateforme de publication \u00e0 base de PHP et MySQL. Le programme vous permet d'h\u00e9berger un blog WordPress sur votre DiskStation.","link":"http:\/\/ukdl.synology.com\/download\/packages\/WordPress-3.2-006.spk","md5":"a940355c11485e7fdf87bee0327498c3","icon":"[image encodée en Base64]","size":9441280,"qinst":false,"depsers":"apache-web mysql","deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"Hasplm","version":"8.3.0-3","dname":"Hasplm","desc":"Le programme Synology HASP est con\u00e7u pour fonctionner avec 1C ou d'autres applications install\u00e9es sur votre PC. DiskStation offrira la possibilit\u00e9 d'authentifier les applications sur vos clients PC et emp\u00eachera les utilisations non autoris\u00e9es et la duplication en installant ce programme.","link":"http:\/\/ukdl.synology.com\/download\/packages\/Hasplm-x86-8.3.0-3.spk","md5":"567e13df98781b9bcba7ee097b062b43","icon":"[image encodée en Base64]","size":3225600,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"HiDriveBackup","version":"1.0-1922","dname":"HiDrive Backup","desc":"HiDrive Backup fournit un moyen flexible et rapide de sauvegarder les dossiers partag\u00e9s du DiskStation vers le stockage en ligne STRATO HiDrive, qui peut servir comme votre site d'urgence pour la pr\u00e9servation des donn\u00e9es. Vous pouvez restaurer les donn\u00e9es de sauvegarde lorsque la r\u00e9cup\u00e9ration des donn\u00e9es existe.","link":"http:\/\/ukdl.synology.com\/download\/packages\/HiDriveBackup-x86-1.0-1922.spk","md5":"88fdce55d739ee20a43575bad891e9be","icon":"[image encodée en Base64]","size":634880,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"TimeBackup","version":"1.1-1922","dname":"Time Backup","desc":"Time Backup est une solution innovante qui sauvegarde les donn\u00e9es de la DiskStation en multiples versions. Vous pouvez naviguer intuitivement dans les versions et restaurer facilement les donn\u00e9es vers n'importe quelle version d'une heure sp\u00e9cifique.","link":"http:\/\/ukdl.synology.com\/download\/packages\/TimeBackup-x86-1.1-1922.spk","md5":"d81062947d90de19381c0d441c5f7989","icon":"[image encodée en Base64]","size":1976320,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"VPNCenter","version":"1.0-1922","dname":"VPN Server","desc":"VPN Server offre une solution simple VPN qui transforme votre DiskStation en un serveur VPN, fournissant une mani\u00e8re s\u00e9curis\u00e9e de connecter \u00e0 un r\u00e9seau local priv\u00e9 \u00e0 un emplacement distant. Les services PPTP et OpenVPN sont tous les deux pris en charge.","link":"http:\/\/ukdl.synology.com\/download\/packages\/VPNServer-x86-1.0-1922.spk","md5":"f3cdf8db5e12fa56175f4a58f916d29c","icon":"[image encodée en Base64]","size":2201600,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"DirectoryServer","version":"1.0-1922","dname":"Directory Server","desc":"Directory Server fournit le service LDAP avec un contr\u00f4le d'acc\u00e8s centralis\u00e9, l\u2019authentification et la gestion des comptes. Vous pouvez g\u00e9rer les utilisateurs et les groupes LDAP avec ce programme.","link":"http:\/\/ukdl.synology.com\/download\/packages\/DirectoryServer-x86-1.0-1922.spk","md5":"6dd688a47cea5bb6c61df8f7a341f60b","icon":"[image encodée en Base64]","size":256000,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"SqueezeCenter","version":"7.6.1-001","dname":"Squeezebox Server","desc":"Le serveur Squeezebox diffuse la musique stock\u00e9e sur le DiskStation vers votre Squeezebox Logitech\u00ae. Maintenant, commencez \u00e0 \u00e9couter votre collection de musique partout dans la maison.","link":"http:\/\/ukdl.synology.com\/download\/packages\/SqueezeboxServer-7.6.1-x86-001.spk","md5":"6673995bc1cacc1ea16703039ce94ded","icon":"[image encodée en Base64]","size":24842240,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"SyslogServer","version":"1.0-1922","dname":"Syslog Server","desc":"Le serveur Syslog offre une solution simple pour la collecte et l'affichage des messages de journaux des appareils r\u00e9seau. Il vous fournit une interface de gestion des journaux centralis\u00e9e et la fonction de recherche flexible pour vous aider \u00e0 trouver les informations utiles de mani\u00e8re efficace.","link":"http:\/\/ukdl.synology.com\/download\/packages\/SyslogServer-x86-1.0-1922.spk","md5":"3e1f330cc93d872bd7c83b3f4d0f12ec","icon":"[image encodée en Base64]","size":440320,"qinst":true,"depsers":null,"deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false},{"package":"Webalizer","version":"2.21-07","dname":"Webalizer","desc":"Webalizer est un programme d'analyse de journaux de serveur Web rapide et gratuit. DiskStation vous offre la possibilit\u00e9 de consulter les statistiques d'utilisation des services Web qui sont ex\u00e9cut\u00e9s sur DiskStation et utilisent le port , comme Web Station et Photo Station, apr\u00e8s l\u2019installation de ce programme.","link":"http:\/\/ukdl.synology.com\/download\/packages\/Webalizer-x86-2.21-07.spk","md5":"189283b0b1b1a886f695d875d331e3ac","icon":"[image encodée en Base64]","size":573440,"qinst":true,"depsers":"apache-web mysql","deppkgs":null,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false}]

Analyse réponse :

Réponse en JSON encodé en UTF-8 et images en Base64. Aucune idée de ce que peut être 1afbb au début de la réponse...

Pour les champs coté réponse:

  • package: nom du package
  • version: version du package (semble être au format x.x.x-yyy) avec x.x.x la version du binaire ou de l'appli et yyy le numéro de build du SPK. yyy peut aussi être un numéro de version standart (y.y.y par exemple)
  • dname: nom à afficher du package
  • desc: description longue dans la langue demandée
  • link: lien vers le SPK
  • md5: checksum md5 du SPK
  • icon: image PNG 72*72 encodée en base64
  • size: taille du SPK, aucun impact sur l'installation
  • qinst: quick install, permet de zapper quelques popups lors de l'i
  • depsers: dépendances vers les services Synology (apache-web, mysql, etc.). Quelle est la liste des "services" ?
  • deppkgs: dépendances vers d'autres packages
  • start: le package est lançable ?
  • maintainer: auteur/maintainer
  • changelog: toujours null donc je ne connais pas le format mais sans doute une string
  • beta: le package est en beta ?

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

Pour info, j'ai pris la requête n°9 et la réponse n°33 (ACK n°17) de la capture Wireshark.

Pour simplifier la lecture de la capture, il suffit de faire un clic-droit sur le n°9 puis Follow TCP Stream. La réponse complète fait 110556 octets (107,96 Ko).

Le 1afbb est la longueur du JSON en hexadécimal (du crochet ouvrant au crochet fermant inclus), soit 110 523 caractères.

Il y a aussi des caractères après le JSON :


[ ... ,"start":true,"maintainer":"Synology Inc.","changelog":null,"beta":false}]

1



0



La chaîne hexa ASCII est 5d 0d 0a 31 0d 0a 0a 0d 0a 30 0d 0a (5d est le crochet fermant).

Contrairement au 1afbb, je ne trouve pas d'explication à cette chaîne

Maintenant je vais regarder la requête pour le téléchargement d'un paquet.

Lien vers le commentaire
Partager sur d’autres sites

Pour le téléchargement du paquet Syslog Server, il s'agit d'une vulgaire requête GET http://ukdl.synology.com/download/packages/SyslogServer-x86-1.0-1922.spk.

Donc maintenant on sait qu'on peut créer notre propre dépôt et que les .spk peuvent être hébergés n'importe où.

Il ne reste plus qu'à créer une base de données avec les variables référencées plus haut, un ptit script qui transforme le tout en JSON, et ça roule.

Avec un peu de chance nas-forum sera le premier dépôt non-officiel pour NAS Synology. cool.png Il faudrait juste héberger le JSON généré en dur quelque part sur nas-forum (du type http://packages.nas-forum.com qui redigerait vers http://www.nas-forum.com/packages.json).


GET /download/packages/SyslogServer-x86-1.0-1922.spk HTTP/1.1

User-Agent: "Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)"

Host: ukdl.synology.com

Accept: */*


HTTP/1.1 200 OK

Date: Thu, 08 Sep 2011 12:37:53 GMT

Server: Apache/2.2.13 (Unix)

Last-Modified: Mon, 05 Sep 2011 11:39:35 GMT

ETag: "5406d-6b800-4ac302a4debc0"

Accept-Ranges: bytes

Content-Length: 440320

Content-Type: application/octet-stream


INFO................................................................................................0000644.0000000.0000000.00000014035.11630474415.010242. 0....................................................................................................ustar  .root............................root...................................................................................................................................................................................................................package="SyslogServer"

displayname="Syslog Server"

version="1.0-1922"

description="Synology Syslog Server"

maintainer="Synology Inc."

dsmappname="SYNO.SDS.SYSLOG.Instance"

arch="x86"

firmware="3.2-1922"

dsmuidir="app"

description_chs="Syslog Server ......................................................................................................................................................................................................"

description_cht="Syslog Server ......................................................................................................................................................................................................"

Je n'ai mis que le début du paquet Syslog Server sinon j'ai droit à un "post too long" de la part du forum (400 Ko ça passe pas ? Comprends pô... ph34r.png).

Lien vers le commentaire
Partager sur d’autres sites

C'est pas grave, ce qui transite en HTTP est juste le contenu du paquet en clair : Fichier INFO, dossier scripts avec ses fichiers et le package.tgz, le tout en tar.

Je suis curieux pour cette histoire de build number des packages. J'aurai bien aimé un numéro de version plutot qu'un build number... yyy c'est flou...

Lien vers le commentaire
Partager sur d’autres sites

Voici les différentes versions actuelles des packages (peuvent varier selon le matériel) :


phpMyAdmin 3.2.5-003

MailStation 20110715-035

WordPress 3.2-006

Hasplm 8.3.0-3

HiDriveBackup 1.0-1922

TimeBackup 1.1-1922

VPNCenter 1.0-1922

DirectoryServer 1.0-1922

SqueezeCenter 7.6.1-001

SyslogServer 1.0-1922

Webalizer 2.21-07

L'important est ce qui est avant le tiret (3.2.5, 20110715, 3.2, 8.3.0, ...).

Après le tiret c'est un peu n'importe quoi, en tout cas il n'y a pas de cohérence sauf pour les paquets estampillés 1922 (Synology va fêter ses 90 ans l'année prochaine ?! tongue.png).

Lien vers le commentaire
Partager sur d’autres sites

Voici les différentes versions actuelles des packages (peuvent varier selon le matériel) :


phpMyAdmin 3.2.5-003

MailStation 20110715-035

WordPress 3.2-006

Hasplm 8.3.0-3

HiDriveBackup 1.0-1922

TimeBackup 1.1-1922

VPNCenter 1.0-1922

DirectoryServer 1.0-1922

SqueezeCenter 7.6.1-001

SyslogServer 1.0-1922

Webalizer 2.21-07

L'important est ce qui est avant le tiret (3.2.5, 20110715, 3.2, 8.3.0, ...).

Après le tiret c'est un peu n'importe quoi, en tout cas il n'y a pas de cohérence sauf pour les paquets estampillés 1922 (Synology va fêter ses 90 ans l'année prochaine ?! tongue.png).

Ouep mais je pense que c'est ce qui est utilisé après le tiret qui est utilisé pour savoir si Package Center doit faire une mise à jour ou pas. Du coup, si au lieu de mettre un build number (1922) on met un version number avec un point, est-ce que le détecteur de nouvelles version pete un cable ou pas ? Genre 1.9, etc.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

J'ai fait quelques tests dans mon coin, et j'ai quelques infos:

Il semble que tous les champs de la requêtes soient nécessaires, je n'ai pas été exhaustif, mais je reçois une erreur 500 chaque fois que j'enlève un paramètre. Casse pied.

Les paramètres unique, et arch se trouvent dans /etc.defaults/synoinfo.conf, timezone, language dans /etc/synoinfo.conf, et major, minor et build dans /etc.defaults/VERSION

Le format des icons, c'est du PNG, avec transparence, taille 72x72.

Un nouveau dossier fait son apparition au sein des SPK: WIZARD_UIFILES. Ce sont des elements d'interface Ext/Sencha (éléments de GUI Web codé en JSON). Il semble que ces éléments soient nommée de la même manière que les scripts, et que les valeurs soient passé dans une variable dont le nom est key dans le uifile. Ce sont là des suppositions en démontant le package wordpress.

Par contre, comme la réponse dépend du type de NAS (champ arch), se baser sur un fichier statique n'est pas possible, sauf pour les packages indépendant de l'architecture.

Le script python suivant download et sauve la liste de packages, extrait les icons et les sauve dans un fichier au nom du package. En décommentant les deux dernipères lignes, les spk seront sauver en local.


import urllib

import urllib2

import json

import base64


url = "http://update.synology.com/packageupdate/getpackages.php"

data = {'unique' : "synology_ppc854x_408",

    	'timezone' : 'Brussels',

    	'language' : '123',

    	'arch' : 'ppc854x',

    	'major' : '3',

    	'minor' : '2',

    	'build' : '1922'}


resp = urllib2.urlopen (url, urllib.urlencode (data))

packages = json.load (resp)

json.dump (packages, open ('packages.json', 'wt'), indent=4)

for pkg in packages :

	name = pkg['package']

	icon = base64.b64decode (pkg['icon'])

	open (name+'.png', 'w').write (icon)

	#spk = urllib2.urlopen (pkg['link'])

	#open (name+'.spk', 'w').writelines (spk.readlines ())

Lien vers le commentaire
Partager sur d’autres sites

Je suis en train de faire un script PHP d'upload de SPK. Le but est de parser le SPK uploadé (nom du SPK + Fichier INFO) de récupérer quelques autres informations (hash md5, size, etc.) et de remplir une base MySQL avec ces données.

Un autre script récupèrera ces infos de la base MySQL et transmettra la liste des packages avec leur URL.

J'ai déjà testé avec succès l'ajout d'un serveur personnalisé de paquets via DSM :D

Aussi, dans syno-packager, je rajouterai une règle "publish" qui permettra d'uploader les SPK fraichement compilés directement et de déclencher tout ce bazar avec cURL.

Ca fait longtemps que j'ai pas fait de PHP donc il va sans doute falloir sécuriser mon travail de porc ph34r.png

Lien vers le commentaire
Partager sur d’autres sites

Syno à répondu à ma demande de documentation. Elle sera fournie avec la prochaine version de DSM, il parrait. Autant dire que c'est pas pour tout de suite.

Par ailleurs, j'ai testé un paramètre dans les fichiers INFO:

install_dep_packages="dependance"

Si le package "dependance" n'est pas installé, une erreur s'affiche. C'est super d'avoir la gestion des dépendances mais c'est limité à une seule dépendance. J'ai essayé pein de séparateurs sans succès, y compris le même que install_dep_services à savoir un espace.

Dommage mais bon, c'est déjà un début.

Lien vers le commentaire
Partager sur d’autres sites

J'ai écrit une classe PHP permettant de tester rapidement un dépôt à partir des informations locales du NAS (merci zebulon501 pour la localisation des variables).

@Diaoul : Tu as fait une modélisation de ta base MySQL pour gérer les différentes versions (en fonction de l'architecture par exemple) ?

Je vais regarder si les différentes valeurs de unique sont renseignées dans le wiki.

CPU Architecture. "noarch" if it will fit all DiskStations. Other "arch" values can be "x86", "88f6281", "88f5281", "ppc853x" or "ppc854x", depending on the CPU. For models with the PPC 8241 CPU there are two different values for "arch" depending on the Linux version. It is "powerpc" for Linux 2.4 and "ppc824x" for Linux 2.6. Calling "uname -r" on a shell shows the Linux version.

Il manque "88f6282" et peut-être d'autres.

Si le package "dependance" n'est pas installé, une erreur s'affiche. C'est super d'avoir la gestion des dépendances mais c'est limité à une seule dépendance. J'ai essayé pein de séparateurs sans succès, y compris le même que install_dep_services à savoir un espace.

Tu as regardé dans les paquets officiels ?

Lien vers le commentaire
Partager sur d’autres sites

J'ai écrit un une classe PHP permettant de tester rapidement un dépôt à partir des informations locales du NAS.

@Diaoul : Tu as fait une modélisation de ta base MySQL pour gérer les différentes versions (en fonction de l'architecture par exemple) ?

Je vais regarder si les différentes valeurs de unique sont renseignées dans le wiki.

Il manque "88f6282" et peut-être d'autres.

Tu as regardé dans les paquets officiels ?

Pour la modélisation, ça va être 1 ligne dans la BDD par fichier. Donc index unique de la table packages serait package+arch PK id. Je pense reprendre la liste des champs de la réponse en JSON pour faire la base en y ajoutant l'architecture.

Ca pose un problème pour les langues donc je ferai peut être une autre table package_descriptions avec une FK id_package, language CHAR 3 (ISO-639-2) et description (TEXT).

Une simple jointure permettrait de répondre avec un JSON tout propre.

Je ne sais pas si ça vaut le coup de garder l'historique des versions surtout quand on voit le format des versions Synology... De toutes façon, la réponse ne renvoit que la dernière version en date.

Si on veut garder l'historique je splitterai le champ JSON version en deux : pkg_version et spk_version. Le champ JSON de la réponse sera recomposé facilement comme ça et on pourra plus facilement trier la table avec deux champs que un seul.

Pour l'architecture il manque 88f6282 mais en fait il ne manque pas. Les synos à base de 88f6282 accèptent des SPK avec arch 88f6281. Soit j'écrirai 88f628x en base (plus cohérent) soit 88f6281. Ce qui est sûr c'est qu'il n'y aura pas de distinction entre 88f6281 et 88f6282 en base de donnée.

Il ne me semble pas qu'il y ait des dépendances au sein des paquets de Synology donc je n'ai pas "cherché" ce champ. En admetant qu'il y en ait, je ne pense pas qu'elles soient multiples. Je l'ai deviné en fait car j'ai trouvé "install_dep_services" dans le INFO et j'ai vu "depsers" en JSON. J'ai donc déduit "install_dep_packages" car il y a "deppkgs" en JSON ;) Mais le fonctionnement semble légèrement différent

Lien vers le commentaire
Partager sur d’autres sites

Ok, merci pour les précisions.

Il va falloir rajouter plusieurs tables pour bien gérer les compatibilités. Au minimum, un même paquet pourra être compatible avec différentes build ou architectures du DSM.

Je pense qu'il faudrait donc une table arch (pk, name), une table build (pk, number), et une table compatibility qui liera les clés primaires des tables packages, arch et build.

Il ne faut pas oublier que certains utilisateurs utilisent encore (et ils ont raison) le DSM 2.2 sur leurs NAS vieillissants de façon à ne pas les surcharger avec des versions plus récentes du DSM.

Il sera peut-être même nécessaire de gérer les modèles et la quantité de RAM disponible (model - pk, name, memory) pour ne pas distribuer des paquets trop gourmands pour certains modèles.

Lien vers le commentaire
Partager sur d’autres sites

Mon but est de remplir la base de donnée à l'upload d'un fichier via un script. Je ne suis pas sûr que ce soit faisable facilement avec cette approche.

L'avantage c'est que c'est vraiment précis mais ça en devient complexe.

Toi tu veux une ligne par package, moi je préfère une ligne par fichier. D'autant que les infos de JSON (hash md5, size, link) sont relatives au fichier, pas au package. Dans ton approche, tu les stoquerai ou ?

Ca fait longtemps que je ne fais plus de SPK compatible DSM 2, c'est plus du tout la même approche que DSM 3.

La compatibilité devrait être assurée avec DSM 3.x, plus de features pour DSM 3.2+ ceci-dit.

Pour les modèles pareil. Chacun installe ce qu'il veut, si ça ramme il désinstalle et basta.

Lien vers le commentaire
Partager sur d’autres sites

Je n'avais pas fait de distinction entre package et fichier ph34r.png.

En effet, il faut impérativement une table contenant toutes les infos extraites des fichiers. Une éventuelle table des packages pourrait regrouper les informations communes aux fichiers d'un même package mais vu la faible volumétrie on en aura certainement pas besoin.

Lien vers le commentaire
Partager sur d’autres sites

Voilà j'ai codé 2 scripts PHP. Un pour l'upload avec un formulaire et un autre à indiquer dans DSM.

Les sources seront là demain : https://github.com/Diaoul/syno-package-server

Tout est automatique, on sélectionne le SPK, ça rempli la base de donnée et le rend téléchargeable via DSM.

Lien vers le commentaire
Partager sur d’autres sites

Voici les différentes versions actuelles des packages (peuvent varier selon le matériel) :


phpMyAdmin 3.2.5-003

MailStation 20110715-035

WordPress 3.2-006

Hasplm 8.3.0-3

HiDriveBackup 1.0-1922

TimeBackup 1.1-1922

VPNCenter 1.0-1922

DirectoryServer 1.0-1922

SqueezeCenter 7.6.1-001

SyslogServer 1.0-1922

Webalizer 2.21-07

L'important est ce qui est avant le tiret (3.2.5, 20110715, 3.2, 8.3.0, ...).

Après le tiret c'est un peu n'importe quoi, en tout cas il n'y a pas de cohérence sauf pour les paquets estampillés 1922 (Synology va fêter ses 90 ans l'année prochaine ?! tongue.png).

1.0-1922

version -sous-versionDSMassociée(la version actuelle du DSM est 3.2-1922 ^^)

Et voilà ^^ .

Juste un truc à signaler : en passant par l'interface graphique on peut voir dans les paramètres qu'il est possible d'ajouter des sources tierces pour les packages du syno ^^

Lien vers le commentaire
Partager sur d’autres sites

1.0-1922

version -sous-versionDSMassociée(la version actuelle du DSM est 3.2-1922 ^^)

Et voilà ^^ .

Merci Captain Obvious wink.png mais ça n'explique pas 3.2.5-003, 20110715-035, ni 3.2-006.

Juste un truc à signaler : en passant par l'interface graphique on peut voir dans les paramètres qu'il est possible d'ajouter des sources tierces pour les packages du syno ^^

C'est justement de quoi il est question dans ce sujet mais ce n'est pas assez explicite apparemment.

On crée notre propre dépôt pour y distribuer des paquets non-officiels.

Lien vers le commentaire
Partager sur d’autres sites

Une des requêtes AJAX de DSM quand on ouvre le gestionnaire de paquets donne ça, c'est assez intéressant puisqu'on voit "startable". J'ai essayé plusieurs choses dans mes SPK pour le mettre à false sans succès.


{

   "data" : [

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 0,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Perl (used by other SPKs)",

     	"pkgdisplayname" : "perl",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "perl",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "tip-0.1"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 9200,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Open Source Binary Newsreader written in Python",

     	"pkgdisplayname" : "SABnzbd",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "SABnzbd",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "0.6.8-1.4"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 0,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Python (used by other SPKs)",

     	"pkgdisplayname" : "Python",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "Python",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "2.7.2-2.0"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 0,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Debian environment",

     	"pkgdisplayname" : "debian-chroot",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "debian-chroot",

     	"pkgstartable" : true,

     	"pkgstatus" : "running",

     	"pkgurl" : "",

     	"pkgversion" : "tip-0.3"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 9100,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "A Fast and Easy BitTorrent Client",

     	"pkgdisplayname" : "transmission",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "transmission",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "2.33-1.0"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 0,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "VPN Server offre une solution simple VPN qui transforme votre DiskStation en un serveur VPN, fournissant une manière sécurisée de connecter à un réseau local privé à un emplacement distant. Les services PPTP et OpenVPN sont tous les deux pris en charge.",

     	"pkgdisplayname" : "VPN Server",

     	"pkgdsmappnames" : "SYNO.SDS.VPN.Instance",

     	"pkghelpurl" : "",

     	"pkgicon" : "VPNCenter",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "Synology Inc.",

     	"pkgname" : "VPNCenter",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "1.0-1922"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 0,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Useful tools (used by other SPKs)",

     	"pkgdisplayname" : "toolbox",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "toolbox",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "tip-1.1"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 0,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Cron Manager",

     	"pkgdisplayname" : "cron-manager",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "cron-manager",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "tip-0.2"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 9500,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Automatic music downloader for SABnzbd",

     	"pkgdisplayname" : "headphones",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "headphones",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "tip-1.0"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 9400,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Téléchargeur automatique de films via NZB ou torrent",

     	"pkgdisplayname" : "CouchPotato",

     	"pkghelpurl" : "",

     	"pkgicon" : "CouchPotato",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "CouchPotato",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "tip-1.0"

  	},

  	{

     	"pkgadminpath" : "",

     	"pkgadminport" : 9300,

     	"pkgadminporturl" : "",

     	"pkgautostart" : false,

     	"pkgdescription" : "Automatic NZB and torrent downloader for TV shows",

     	"pkgdisplayname" : "SickBeard",

     	"pkghelpurl" : "",

     	"pkgicon" : "",

     	"pkgisuninstui" : false,

     	"pkgmaintainer" : "diaoulael@gmail.com",

     	"pkgname" : "SickBeard",

     	"pkgstartable" : true,

     	"pkgstatus" : "stop",

     	"pkgurl" : "",

     	"pkgversion" : "tip-1.2"

  	}

   ],

   "success" : true

}

Lien vers le commentaire
Partager sur d’autres sites

un package non startable n'as pas de script start-stop-status...

Testé à l'instant sur mon python26. (EDIT: en hackant l'install, il faudrait refaire le spk pour s'assurer que ça s'installe toujours)

Pour les versions, je pense que le pkgman ne fait que vérifier que c'est différent de la version installé.

Lien vers le commentaire
Partager sur d’autres sites

un package non startable n'as pas de script start-stop-status...

Testé à l'instant sur mon python26. (EDIT: en hackant l'install, il faudrait refaire le spk pour s'assurer que ça s'installe toujours)

Pour les versions, je pense que le pkgman ne fait que vérifier que c'est différent de la version installé.

Donc si je vire start-stop-status ça le met non startable ? Cool.

Pour les versions, d'après ce que j'ai pu constater, il faut que la seconde partie de la version 'xxxx-yyyy', 'yyyy' donc, soit > pour qu'il propose une mise à jour. Rien ne se passe sinon.

J'ai fait le test en vitesse donc je peux me tromper.

A versions identiques mais hash md5 différents, rien ne se passe.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Si vous le souhaitez je peux vous faire un compte d'hébergement pour le domaine http://package.nas-forum.com (ou autre).

N'hésitez pas à me contacter en MP pour plus d'informations.

En voilà une bonne idée ;)

et nous aurons enfin un système centralisé de diffusion des packages non officiels...

Lien vers le commentaire
Partager sur d’autres sites

En voilà une bonne idée wink.png

et nous aurons enfin un système centralisé de diffusion des packages non officiels...

Une initiative similaire à été lancée par le forum de la communauté allemande : http://forum.synology.com/enu/viewtopic.php?f=27&t=41015

J'ai regardé ça à l'air sympa mais y'a aucun outil commun de cross compilation...

Je suis en contact avec le gars pour en savoir un peu plus.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Si vous le souhaitez je peux vous faire un compte d'hébergement pour le domaine http://package.nas-forum.com (ou autre).

N'hésitez pas à me contacter en MP pour plus d'informations.

Cool je regarde ce que je peux faire avec ça :)

@zebulon: C'est bon ça comme canal de diffusion tu penses ? L'URL est plutôt pro et internationale je trouve

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • 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.