You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Gaëtan Maiuri 9207ee3dec
updates
7 years ago
cuper updates 7 years ago
mkriz updates 7 years ago
.gitignore Initial commit 7 years ago
README.md updates 7 years ago

README.md

Cuper (DRAFT)

RIZ file header

                         32 bits
    <---------------------------------------------->
              16 bits                       8 bits
    <---------------------->            <---------->
    +----------------------------------------------+  <----------------------+
  0 |                IDENTIFICATOR                 |                         |
    +----------------------------------------------+                         |
  1 |          ARCH        |          OS           |                         |
    +----------------------------------------------+                         |
  2 |                     TIME                     |                         |
    +----------------------------------------------+                         |
  3 |          TYPE        |   PROT.   |    VER    |    Base informations.   |
    +----------------------------------------------+       Frame 0-9         |
  4 |           HL         |          MDL          |       + OPTIONS.        |
    +----------------------------------------------+                         |
5-9 |                   RESERVED                   |                         |
    +----------------------------------------------+                         |
    |                   OPTIONS                    |  <----------------------+
    +----------------------------------------------+  <----------------------+
    |                   METADATA                   |                         |
    +----------------------------------------------+         Contents.       |
    |                   PAYLOAD                    |   Frame post-OPTIONS-n. |
    +----------------------------------------------+  <----------------------+

Description

Nom du champ Position Longeur (bits) Valeur(s)
Identificator 0 32 0x7f 0x52 0x49 0x5a
Arch 4 16 0x0000 = no arch
0x0001 = i386
0x0002 = x86_64
OS 6 16 0x0000 = no OS
0x0001 = Linux
Time 8 32 current timestamp
Type 12 16 0x0000 = container
0x0001 = meta container
Protected 14 8 0x00 = unprotected
0x01 = AES-128
0x02 = AES-192
0x04 = AES-256
Version 15 8 0x00 = first (current)
HL 16 16 0x000a = no options
MDL 18 16 0x0000 = no metadata
RESERVED 20 120 0x0000 = not used
  • ARCH: l'identifiant de la machine cible (architecture du processeur).
  • OS: l'identifiant de la machine cible (environnement d'execution).
  • TIME: le timestamp de compilation.
  • TYPE: le type de conteneur, ex: conteneur, méta-conteneur, etc...
  • VER: la version de l'entête.
  • HL: la taille de l'entête en mot de 32 bits.
  • MDL: la taille des méta-données en mot de 32 bits.
  • RESERVED: 20 octets réservés.
  • OPTIONS: des données optionnels.
  • METADATA: les informations du contenu (see Cupfile).
  • PAYLOAD: le contenu.

NOTE:

  • Si HL == 10d (000ah, frame 0 to 9), alors il n'y à pas d'options.
  • Si MDL == 0d (0000h), alors il n'y à pas de méta-données.

Cupfile

Le fichier Cupfile permet de rassembler des informations qui seront utilisés lors de la compilation.

Voici la structure d'un Cupfile:

+-------------------->
|                      VAR1 = value1
|   User variables.    VAR2 = value2
|                      VAR3 = value3
+-------------------->
|                      ([add:] | set:)X-CONST1 = value1
|     Constantes.      ([add:] | set:)X-CONST2 = value2
|                      ([add:] | set:)X-CONST3 = value3
+-------------------->
+--------------------> (2x new ligne: `0x0a 0x0a`)
+--------------------> `exec` executable_file [arguments]

Voici un exemple de Cupfile, ce conteneur permet l'execution d'un script Python, en incluant toutes les dépendances:

AUTOR = Maiuri Gaëtan <maiuri.gaetan@lessonsharing.fr>
DATE = 2017-09-22
DESCRIPTION = A simple Cuper container with a text reader.
X-ENV = ["set:VERBOSE=1", "LD_LIBRARY_PATH=$_CWD/python-linux-x86-64/"] # LD_LIBRARY_PATH=... => is equivalente of add:LD_LIBRARY_PATH=...
X-INCLUDES = ["python-linux-x86-64/", "main.py"]

# POSIX
exec ./python/python main.py -v -i myfile.txt
# Windows
#exec python\python.exe main.py -v -i myfile.txt

Le Cupfile doit se situer à la raçine de votre projet, exemple:

reader:
    |-- .git/
	|-- test/
	|-- python-windows-x86-64/
		|-- exemple.dll
		`-- python.exe
    |-- python-linux-x86-64/
        |-- exemple.so
        `-- python
    |-- Cupfile
    |-- main.py

Constantes internes

Des constantes internes sont utilisable dans le Cupfile, afin de formater votre environnement d'execution dynamiquement.

NOTE: Ces constantes ne sont pas modifiable.

Non Type Description Exemple
$_CWD string Le path du dossier courant post-extraction /path/to/riz/contents

Atributs d'extension

Les attributs d'extension permettent d'injecter des intructions à la compilation.

Non Type Description Exemple
X-ENV array Inject des variable d'environnement dans le contexte d'execution ["VERBOSE=1", "LD_LIBRARY_PATH=libs/"]
X-INCLUDES array Inclure seulement ces fichiers/dossiers dans le contener ["myfile", "mydir/"]

Powered by TurnKey Linux.