diff options
author | Thomas "Cakeisalie5" Touhey <thomas@touhey.fr> | 2018-03-27 23:17:02 +0200 |
---|---|---|
committer | Thomas "Cakeisalie5" Touhey <thomas@touhey.fr> | 2018-03-27 23:17:02 +0200 |
commit | 1ade62d72740e61c2c3ef65b7a815db9aa49a5b8 (patch) | |
tree | b62502e0360475875167bc635cafdbc08012ce74 | |
parent | f0dcaf360f1a5173dde2426063747febfbb00c99 (diff) |
Commencé à intégrer les formats de paquet en ASN.1
-rwxr-xr-x | Makefile | 26 | ||||
-rw-r--r-- | Makefile.asn1c | 3 | ||||
-rw-r--r-- | README.md | 57 | ||||
-rw-r--r-- | README.rst | 67 | ||||
-rw-r--r-- | daemon/server.c | 1 | ||||
-rw-r--r-- | doc/M2M.notes.txt (renamed from NOTES.txt) | 0 | ||||
-rw-r--r-- | scheme.asn1 | 36 |
7 files changed, 128 insertions, 62 deletions
@@ -1,4 +1,6 @@ #!/usr/bin/make -f +.ONESHELL: + VER_MAJ := 0 VER_MIN := 1 @@ -9,7 +11,8 @@ BUILD := build CC := clang CFLAGS := -Weverything -Wno-disabled-macro-expansion -Wno-switch-enum \ - -Wno-missing-field-initializers -Wno-format-nonliteral + -Wno-missing-field-initializers -Wno-format-nonliteral \ + -Wno-reserved-id-macro -Wno-padded LD := clang DIR_D := daemon @@ -17,8 +20,8 @@ SRC_D := $(wildcard $(DIR_D)/*.c) SRC_D := $(foreach x,$(SRC_D),$(x:$(DIR_D)/%=%)) OBJ_D := $(foreach x,$(SRC_D),$(BUILD)/$(DIR_D)/$(x:%=%.o)) - CFL_D := $(CFLAGS) -g $(shell pkg-config libcurl --cflags) - LIB_D := $(shell pkg-config libcurl --libs) + CFL_D := $(CFLAGS) -g $(shell pkg-config libcurl --cflags) -I$(BUILD)/scheme + LIB_D := $(shell pkg-config libcurl --libs) -L $(BUILD) -lscheme DIR_L := lib HDR_L := $(HDR) $(wildcard $(DIR_L)/*.h $(DIR_L)/**/*.h) @@ -39,14 +42,27 @@ re: clean all .PHONY: all clean re # --- +# ASN.1 targets. +# --- + + $(BUILD): + mkdir -p $@ + + $(BUILD)/libscheme.a: scheme.asn1 | $(BUILD) + rm -rf $(BUILD)/scheme && mkdir -p $(BUILD)/scheme + cd $(BUILD)/scheme && asn1c -pdu=WeshProtocol ../../scheme.asn1 && cd ../.. + cp Makefile.asn1c $(BUILD)/scheme/Makefile + make -C $(BUILD)/scheme ../libscheme.a + +# --- # Daemon-specific targets. # --- $(BUILD)/$(DIR_D): mkdir -p "$@" - $(BUILD)/$(BIN): $(OBJ_D) | $(BUILD)/$(DIR_D) - $(LD) $(LIB_D) -o "$@" $^ + $(BUILD)/$(BIN): $(BUILD)/libscheme.a $(OBJ_D) | $(BUILD)/$(DIR_D) + $(LD) $(LIB_D) -o "$@" $(OBJ_D) $(BUILD)/$(DIR_D)/%.c.o: $(DIR_D)/%.c $(HDR_D) | $(BUILD)/$(DIR_D) $(CC) $(CFL_D) -c -o "$@" "$<" diff --git a/Makefile.asn1c b/Makefile.asn1c new file mode 100644 index 0000000..c27bb1c --- /dev/null +++ b/Makefile.asn1c @@ -0,0 +1,3 @@ +include Makefile.am.sample +../libscheme.a: $(ASN_MODULE_SOURCES:%.c=%.o) + ar crs $@ $^ diff --git a/README.md b/README.md deleted file mode 100644 index 74d4c54..0000000 --- a/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Démon de gestion de serveurs WES -Ce projet, nommé « weshd » pour « WES Handling Daemon », permet de gérer -un ou plusieurs [serveurs WES][wes], superviseurs d'énergie produits par -l'entreprise française [Cartelectronic][celec]. - -Il a été écrit en 2018 par [Thomas Touhey][thomas] à l'occasion -d'un projet de [BTS SNIR][bts] organisé par le [GRETA de l'Essonne][greta] -et l'équipe pédagogique du [lycée Michelet d'Arpajon][lyc]. -Ce projet vise à améliorer l'infrastructure de gestion de la consommation -de ressources telles que l'électricité ou l'eau pour l'association -[Monde en Marge, Monde en Marche][mem], qui fournit des logements sociaux. - -Le projet est disponible sous les conditions de la licence de logiciel -libre [CeCILL][cecill] dans [sa version 2.1][cecill21]. Cette licence a -été sélectionnée de par sa compatibilité avec le droit français. - -Il contient trois composants : - -- le [démon][daemon], qui gère les ressources en elles-mêmes et répond à - des requêtes concernant celles-ci ; -- la [bibliothèque][lib] [client][client] qui permet de faire des requêtes - au démon ; -- un [client][client] utilisant la bibliothèque citée précédemment pour - faire quelques opérations, comme servir de callback au serveur DHCP - lorsque celui-ci a attribué ou retiré une adresse IP à un nouveau - serveur WES sur le réseau. - -La contruction de ces composants se fait en deux étapes : - -- la _configuration_, soit la sélection de différentes options de - construction et d'installation ; -- la _construction_ en elle-même. - -## Dépendances -| Name | Version | -|------------------------------------------|---------| -| [libcurl](https://curl.haxx.se/libcurl/) | >= 7.0 | - -## Configuration -Pour configurer le logiciel, il faut utiliser le script `./configure`. - -**TODO** - -**TODO: decode CGX using libxml-2.0 package?** - -[daemon]: https://fr.wikipedia.org/wiki/Daemon_%28informatique%29 -[lib]: https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_logicielle -[client]: https://fr.wikipedia.org/wiki/Client_(informatique) -[celec]: https://www.cartelectronic.fr/ -[wes]: https://www.cartelectronic.fr/content/8-serveur-wes -[thomas]: https://thomas.touhey.fr/ -[mem]: https://metmmetm.fr/ -[greta]: http://www.greta-essonne.fr/ -[bts]: http://www.onisep.fr/Ressources/Univers-Formation/Formations/Post-bac/BTS-Systemes-numeriques-option-A-informatique-et-reseaux -[lyc]: http://www.lyc-michelet-arpajon.ac-versailles.fr/ -[cecill]: http://cecill.info/ -[cecill21]: http://cecill.info/licences/Licence_CeCILL_V2.1-fr.html diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..eadfe70 --- /dev/null +++ b/README.rst @@ -0,0 +1,67 @@ +Démon de gestion de serveurs WES +================================ + +Ce projet, nommé « weshd » pour « WES Handling Daemon », permet de gérer +un ou plusieurs `serveurs WES`_, superviseurs d'énergie produits par +l'entreprise française `Cartelectronic`_. + +Il a été écrit en 2018 par `Thomas Touhey`_ à l'occasion d'un projet de +`BTS SNIR`_ organisé par le `GRETA de l'Essonne`_ et l'équipe pédagogique +du `lycée Michelet d'Arpajon`_. Ce projet vise à améliorer l'infrastructure +de gestion de la consommation de ressources telles que l'électricité ou +l'eau pour l'association `Monde en Marge, Monde en Marche`_, qui fournit +des logements sociaux. + +Le projet est disponible sous les conditions de la licence de logiciel +libre `CeCILL`_ dans `sa version 2.1 <CeCILL 2.1_>`_. Cette licence a +été sélectionnée de par sa compatibilité avec le droit français. + +Il contient trois composants : + +- le `démon`_, qui gère les ressources en elles-mêmes et répond à + des requêtes concernant celles-ci ; +- la `bibliothèque`_ `client`_ qui permet de faire des requêtes + au démon ; +- un `client`_ utilisant la bibliothèque citée précédemment pour + faire quelques opérations, comme servir de callback au serveur DHCP + lorsque celui-ci a attribué ou retiré une adresse IP à un nouveau + serveur WES sur le réseau. + +La contruction de ces composants se fait en deux étapes : + +- la *configuration*, soit la sélection de différentes options de + construction et d'installation ; +- la *construction* en elle-même. + +----------- +Dépendances +----------- + +- un système `POSIX`_-compliant ; +- la `libcurl`_ >= 7.0 ; +- `asn1c`_. + +------------- +Configuration +------------- + +Pour configurer le logiciel, il faut utiliser le script ``./configure``. + +**TODO** +**TODO: decode CGX using libxml-2.0 package?** + +.. _serveurs WES: https://www.cartelectronic.fr/content/8-serveur-wes +.. _Cartelectronic: https://www.cartelectronic.fr/ +.. _Thomas Touhey: https://thomas.touhey.fr/ +.. _BTS SNIR: http://www.onisep.fr/Ressources/Univers-Formation/Formations/Post-bac/BTS-Systemes-numeriques-option-A-informatique-et-reseaux +.. _GRETA de l'Essonne: http://www.greta-essonne.fr/ +.. _lycée Michelet d'Arpajon: http://www.lyc-michelet-arpajon.ac-versailles.fr/ +.. _Monde en Marge, Monde en Marche: https://metmmetm.fr/ +.. _CeCILL: http://cecill.info/ +.. _CeCILL 2.1: http://cecill.info/licences/Licence_CeCILL_V2.1-fr.html +.. _démon: https://fr.wikipedia.org/wiki/Daemon_%28informatique%29 +.. _bibliothèque: https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_logicielle +.. _client: https://fr.wikipedia.org/wiki/Client_(informatique) +.. _POSIX: https://fr.wikipedia.org/wiki/POSIX +.. _libcurl: https://curl.haxx.se/libcurl/ +.. _asn1c: http://lionet.info/asn1c/compiler.html diff --git a/daemon/server.c b/daemon/server.c index 870a0ae..75f55aa 100644 --- a/daemon/server.c +++ b/daemon/server.c @@ -28,6 +28,7 @@ * knowledge of the CeCILL license and that you accept its terms. * ************************************************************************* */ #include "internals.h" +#include <WeshRequest.h> /* `run_server()`: lancer le serveur. */ diff --git a/NOTES.txt b/doc/M2M.notes.txt index 14e8e7b..14e8e7b 100644 --- a/NOTES.txt +++ b/doc/M2M.notes.txt diff --git a/scheme.asn1 b/scheme.asn1 new file mode 100644 index 0000000..f54b146 --- /dev/null +++ b/scheme.asn1 @@ -0,0 +1,36 @@ +WeshProtocol DEFINITIONS ::= BEGIN + -- Utilities. + + WeshIPv4 ::= SEQUENCE { + comp1 INTEGER(0..255), + comp2 INTEGER(0..255), + comp3 INTEGER(0..255), + comp4 INTEGER(0..255) + } + + WeshID ::= INTEGER(1..32766) + + -- Request related. + + WeshRequest ::= CHOICE { + create [0] SEQUENCE { + ip WeshIPv4 + }, + delete [1] SEQUENCE { + id WeshID + }, + set [2] SEQUENCE { + id WeshID, + register UTF8String, + value UTF8String + }, + query [3] SEQUENCE { + id WeshID, + register UTF8String + } + } + + -- Response-related. + + -- TODO +END |