Skip to content

Structure du fichier content.json

Tout les sites ZeroNet ont un fichier content.json. (Exemple de fichier content.json)

Ce fichier aura, entre autre, une liste de tout les fichiers sur votre site et une signature crée avec votre clée privée. C'est utilisé pour assurer l'authenticité des fichiers du site et éviter des modifications non souhaités. (NB: seulement vous, ou des personnes que vous avez choissit, peuvent mettre à jour le contenu du site).

Voici une liste des champs supporté dans le fichier content.json :


Champs générés automatiquement

Ces chaps sint ajoutés automatiquement lorsque le site est créé ou cloné.

address

L'adresse de votre site

Example: 1TaLk3zM7ZRskJvrh3ZNCDVGXvkJusPKQ


address_index

L'index de la sous-clé BIP 32 correspondant à l'adresse de votre site. Ajouté automatiquement lorsque que vous clonez un site. Cela permet de regénéré votre clé privé à partir de votre BIP32 source (ou 'seed').

Example: 30926910


cloned_from

Seulement pour les sites clonés. L'adresse du site depuis lequel il a été cloné.

Example: 1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8


clone_root

Seulement pour les sites clonés. Le sous-répertoire du site qui a été cloné.

Example: template-new


files

Taille et sha512 des fichiers automatiquement téléchargés appartenant au site. Automatiquement ajouté avec la commande zeronet.py siteSign siteaddress privatekey.

Example:

    "css/all.css": {
      "sha512": "869b09328f07bac538c313c4702baa5276544346418378199fa5cef644c139e8",
      "size": 148208
    }


files_optional

Taille et sha512 des fichiers optionnels appartenant au site. Automatiquement ajouté avec la commande zeronet.py siteSign siteaddress privatekey.

Example:

    "data/myvideo.mp4": {
      "sha512": "538c09328aa52765443464135cef644c144346418378199fa5cef61837819538",
      "size": 832103
    }


modified

Temps (timestamps) lorsque le content.json est généré.

Example: 1425857522.076


sign (deprecated)

Signature ECDSA du contenu du fichier content.json. (champs dans l'ordre, sans espace et les noeuds sign et signers_sign). Pour compatibilité avec les version antérieur, sera retiré bientôt.

Example:

  "sign": [
    43117356513690007125104018825100786623580298637039067305407092800990252156956,
    94139380599940414070721501960181245022427741524702752954181461080408625270000
  ],


signers_sign

Les adresses authorisés à signer le principale content.json signé utilisant la clé privée de l'adresse du site. Plusieurs entrées sont possible ici, permettant d'activer la fonctionalité multisig.

Format de la chaine de caractère signé: [number_of_signers_required]:[signer address],[signer address]

Example:

signs_required: 1:1PcxwuHYxuJEmM4ydtB1vbiAY6WkNgsz9G,1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE
signers_sign: MEUCIQDuz+CzOVvFkv1P2ra9i5E1p1G0/1cOGecm7GpLpMLhuwIgBIbCL0YHXD1S2+x48QS5VO/rISrkdLiUR+o+x1X0y1A=

Le messagne signé ci-dessus a été signé avec l'adresse "1PcxwuHYxuJEmM4ydtB1vbiAY6WkNgsz9G".


signs

Signature ECDSA pour le contenu du content.json :

  • sign, signs champs JSON sont retirés
  • JSON reformatté avec ses champs dans l'ordre alphabétique et sans espace
  • Signature généré sur les données formatées avec Electrum Bitcoin format de signature de message :
    • Message encodé: sha256("\x18" || "Bitcoin Signed Message:\n" || num_to_var_int(len(message)) || message)
    • Format: recovery_id || r || s, où 27 ≤ recovery_id ≤ 30; taille de la signature = 1 + 32 + 32 = 65 bytes.
    • La double barre verticale || représente la concatenation des bytes.

Exemple:

  "signs": {
    "1TaLk3zM7ZRskJvrh3ZNCDVGXvkJusPKQ": "G6/QXFKvACPQ7LhoZG4fgqmeOSK99vGM2arVWkm9pV/WPCfc2ulv6iuQnuzw4v5z82qWswcRq907VPdBsdb9VRo="
  },


zeronet_version

La version de Zeronet utilisé pour générer le fichier content.json.

Exemple: 0.2.5


Champs optionels

Les champs suivants peuvent être ajouté si besoin.

background-color

Couleur de fond du wrapper.

Exemple: #F5F5F5


cloneable

Authorise n'importe qui à cloner le site si true.

To make your site properly cloneable you have to have a separate folder of data files for a clean start (e.g. without any blog posts). To do this you have to add the -default postfix to your data files and directories. During the cloning process, only directories with the -default postfix are copied. The postfix is removed from the new site.


description

Description de votre site, il sera affiché sous son titre dans ZeroHello.

Example: Forum décentralisé (démo)


domain

Le nom de domaine Namecoin pour votre site. ZeroHello lien redirigera vers celui-ci le plugin Zeroname est activé.

Example: Blog.ZeroNetwork.bit


ignore

Ne pas signer les fichiers associés à cette règle.

Exemple: ((js|css)/(?!all.(js|css))|data/users/.*) (ignore tout les fichiers js et css sauf all.js et all.css et ignore le contenu du dossier data/users/)

Note: Quelques restrictions sur les combinaisons possibles.


includes

Ajoute un autre content.json au site. C'est souvent utilisé pour ajouter un sous content.json pour les données des utilisateurs.

Exemple:

"includes": {
  "data/users/content.json": {
    "signers": [  # Signataire autorisé pour ce site
      "1LSxsKfC9S9TVXGGNSM3vPHjyW82jgCX5f"
    ],
    "signers_required": 1 # Nombre de signature valide nécessaire pour accepter le fichier
    "files_allowed": "data.json", # Fichiers autorisés (peut être une expression régulière)
    "includes_allowed": false, # Si des sous-includes sont autorisés
    "max_size": 10000, # Taille maximale du content.json inclus et fichiers signés (en bytes)
  }
}

merged_type

Le type de groupe ('merger') ce site fait partie.

Exemple: ZeroMe


optional

Expression régulière pour les fichiers optionnels.

Exemple: (data/mp4/.*|updater/.*) (tout dans le répertoire data/mp4 et updater/ est optionnel)

Note: Quelques restrictions sur les combinaisons possibles.


signs_required

Le nombre de signature valide nécessaire pour accepter le fichier. Permet d'obtenir des site Multisig.

Exemple: 1


title

Le titre du site, visible depuis le navigateur et sur ZeroHello.

Exemple: ZeroTalk


translate

Fichier à traduire. (utilise les fichiers de language json qui sont dans le répertoire languages)

Exemple: ["index.html", "js/all.js"]


favicon

Le favicon du site. Va remplacer l'icône Zeronet qui est utilisé par défault avec l'icône spécifié. Il peut être .ico, .png, .svg, etc.

Exemple: favicon.ico


user_contents

Règles autorisées pour le contenu de l'utilisateur dans ce répertoire.

Noeud Déscription
archived Efface le contenu du répertoire de l'utilisateur spécifié qui a été signé avant la date specifié (key: directory name, value: timestamp)
archived_before Efface tout le contenu des répertoires d'utilisateur qui ont été signé avant la date spécifié (unix timestamp)
cert_signers Nom de domaine acceptée et addresse de signataire valide
cert_signers_pattern Expression régulière accepté pour les signataire de certificat
permission_rules Noms de fichiers autorisés et taille du répertoire autorisés par domaine
permissions Permission cas par cas

Exemple:

  "user_contents": {
    "archived": {
      "1165u6pt5mQNFjyhMVwy6azB7bZuQGLA9b": 1523088096
    },
    "archived_before": 1523088096,
    "cert_signers": {
      "zeroid.bit": [ "1iD5ZQJMNXu43w1qLB8sfdHVKppVMduGz" ]
    },
    "cert_signers_pattern": "1Zero[0-9].*",
    "permission_rules": {
      ".*": {
        "files_allowed": "data.json",
        "files_allowed_optional" : "\\.(png|jpeg|jpg|gif|webm|mp4|ogg|mp3|pdf|epub|zip|tar\\.gz)(\\.piecemap\\.msgpack)",
        "max_size": 10000,
        "max_size_optional": 10000000
      },
      "bitid/.*@zeroid.bit": { "max_size": 40000 },
      "bitmsg/.*@zeroid.bit": { "max_size": 15000 }
    },
    "permissions": {
      "bad@zeroid.bit": false,
      "nofish@zeroid.bit": { "max_size": 100000 }
    }
  }

Note: Quelques restrictions sur les combinaisons possibles.


viewport

Contenu pour le meta tag "viewport". (A utiliser pour les pages mobile-friendly)

Exemple: width=device-width, initial-scale=1.0


Regular expression limitations

Pour éviter des attaques ReDoS, les restrictions suivantes sur chaque expression sont appliqués:

  • Le . caractère est obligatoire avant la répitions des caractères *,+,{
  • Une expression peut avoir au maximum 9 répétitions
  • La longueur maximale d'une expression est de 255 caractères

Exemples:

  • ((?!json).)*$ pas autorisé à cause du ) avant le caractère *. Alternative : .*(?!json)$
  • (.*.epub|.*.jpg|.*.jpeg|.*.png|data/.*.gif|.*.avi|.*.ogg|.*.webm|.*.mp4|.*.mp3|.*.mkv|.*.eot) pas autorisé car possède 12 répétitions .*. Alternative: .*(epub|jpg|jpeg|png|data/gif|avi|ogg|webm|mp4|mp3|mkv|eot)