Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

applitutoriel-js

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

applitutoriel-js

Application tutoriel utilisant le Framework hornet

  • 5.0.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

applitutoriel-js

L'application TUTORIEL a pour objectif de présenter une application basée sur le framework Hornet.

A noter :

  • Hornet facilite la mise en oeuvre du RGAA V3 dans une application.
  • Mais l'utilisation de Hornet ne garantit pas qu'une application soit valide RGAA.

Cas fonctionnels

Les cas fonctionnels présentés dans l'application sont :

  • Formulaire de recherche
  • Présentation du résultat sous forme de tableau éditable
  • Formulaire étendu
  • Tableau d'ajout/suppression/modification d'items
  • Affichage de graphique

RGAA V3

L'applitutoriel est une mise en pratique du RGAA V3 au travers du framework Hornet.

Prérequis

  • NodeJS 4.X
  • hornet-js-builder 1.X installé en global:
    $ npm install -g hornet-js-builder
  • checkout du projet applitutoriel-js

Initialisation

Se positionner dans le répertoire du projet applitutoriel-js et lancer la commande:

    $ hb install

Démarrage de l'application en mode développement

Commande par défaut

la commande à exécuter en mode développement est la suivante:

    $ hb w

Elle permet de lancer l'application en mode watcher afin que les modifications soient prises en compte (ce qui entrainera un redémarrage du serveur node dans le cas d'une détection de modification).

Options

Il est également possible d'ajouter à cette commande l'option:

    $ hb w -i

Cette commande indique au builder de ne pas transpiler les fichiers typescript en javascript. Elle est à utiliser dans le cas où l'IDE a été configuré de telle sorte que la transpilation ts->js se fasse via ce dernier.

Vérification

L'application est accessible depuis un navigateur à l'addresse : http://localhost:8888/applitutoriel/applitutoriel correspond au contextPath dans le fichier config/default.json.

Mode Mock

Il est possible d'utiliser l'applitutoriel sans déployer la partie service. Pour cela, activer le mode mock dans le config/default.json.

  "mock": {
    "enabled": true,
    "host": "127.0.0.1", //default localhost
    "routes": "/mock/routes"
  }

Packaging de l'application

$ hb package

Les livrables sont à récupérer dans le répertoire : target

  • applitutoriel-5.0.X-static.zip
  • applitutoriel-5.0.X-dynamic.zip

Fichier de configuration de l'application : default.json

L'ensemble de la configuration applicative du serveur NodeJS se situe dans le fichier default.json contenu dans les sources de l'application

Ce fichier ne doit pas être modifié, excepté pour le log console. Les modifications sont à apporter dans les fichiers d'infrastructure.

Configuration applicative

ParamètreDescriptionValeur
contextPathContext de l'applicatin déployéPar défaut vide
welcomePagePage de démarrage de l'applicationPassé en paramètre du ServerConfiguration
themeUrlUrl du thème applicative[Protocol]://[host]:[port]/hornet/themName
{
  "contextPath": "applitutoriel",
  "welcomePage": "/accueil",
  "themeHost": "http://localhost:7777",
  "themeUrl": "${themeHost}/5.0.X/default"
  ...
}

Configuration serveur

ParamètreDescriptionValeur
routeRoute identifié pour l'affinité de session nodejsjs1
portPort de démarrage du serveur8888
keepAliveActivation du mode HTTP KeepAlivetrue
maxConnectionsNombre maximal de connexion à l'instance nodejs100
timeoutTimeout des réponses HTTP300000
uploadFileSizeTaille maximal d'upload de fichier1000000
sessionTimeoutTimeout des sessions utilisateur1800000
  "server": {
    "route": "js1",
    "port": 8888,
    "keepAlive": true,
    "maxConnections": 100,
    "timeout": 300000,
    "uploadFileSize": 1000000,
    "sessionTimeout": 1800000
  }

Cette partie contient l'ensemble du paramétrage spécifique aux exécutions réalisées coté serveur, ainsi que ses spécificités de démarrage.

ParamètreDescriptionValeur
domainDomain du cookienull
pathPath du cookienull
httpOnlyActivation du mode HTTP KeepAlivetrue
securesecurisation du cookietrue
alwaysSetCookieAjout du cookie dans le Headerfalse
  "cookie": {
    //"domain": null,
    //"path": null,
    "httpOnly": true,
    "secure": false
    //"alwaysSetCookie": false
  }

Configuration de la sécurité

Ce bloc contient l'ensemble des paramètres destinés à la configuration de helmet.

ParamètreDescriptionValeur
enabledActivation de la sécuritétrue
hppHTTP Parameter Pollution attackstrue
ienoopenMiddleware for IE security. Set X-Download-Options to noopentrue
noSniffkeep clients from sniffing the MIME typetrue
csp.enabledActivation de CSP (Content Security Policy)true
csp.defaultSrcnoms de domaine par défaut des différentes ressources du site["'self'", {hostname}]
csp.scriptSrcnoms de domaine des différentes ressources de scripts du site["'self'", "'unsafe-inline'", "'unsafe-eval'"]
csp.styleSrcnoms de domaine des différentes ressources de css du site["'self'", {hostname}]
csp.fontSrcnoms de domaine des différentes ressources de fonts du site["'self'", {hostname}]
csp.imgSrcnoms de domaine des différentes ressources d'images scripts du site["'self'", {hostname}]
csp.reportOnlysi valorisé à true, génération d'un rapport d'erreur uniquementfalse
csp.setAllHeadersvalorisé à true si tous les headers doivent être settésfalse
csp.disableAndroidpermet de désactiver la navigation via Androidfalse
csp.safari5permet de désactiver la navigation via safari5false
xss.enabledActivation de la protection contre les failles XSStrue
xss.setOnOldIEForce le header X-XSS-Protection sur les anciens IEtrue
hpkp.enabledActivation du Public Key Pinning: HPKP, HTTPS certificates can be forged, allowing man-in-the middle attackstrue
hpkp.maxAgeDurée de validation7776000000
hpkp.sha256sListe des sha au format 256["AbCdEf123=","ZyXwVu456="]
hpkp.includeSubdomainsInclusion des sous domainestrue
hpkp.reportUriurl de rapportvide
hsts.enabledActivation du HTTP Strict Transport Security: hstsfalse
hsts.maxAgeDurée de validation7776000000
hsts.includeSubdomainsInclusion des sous domainestrue
hsts.preloadActivation du preload dans le header HSTSfalse
csrf.enabledActivation du mode CSRF : Cross-Site Request Forgerytrue
csrf.maxTokensPerSessionNombre de token par session10
"security": {
    "enabled": true,
    "hpp": true,
    "ienoopen": true,
    "noSniff": true,
    "csp": {
      "enabled": true,
      "defaultSrc": [
        "'self'",
        "'unsafe-inline'",
        "'unsafe-eval'",
        "[Protocol]://[host]:[port]"
      ],
      "scriptSrc": [
        "'self'",
        "'unsafe-inline'",
        "'unsafe-eval'"
      ],
      "styleSrc":[
        "'self'",
        "[Protocol]://[host]:[port]",
        "'unsafe-inline'"
      ],
      "fontSrc":[
        "'self'",
        "[Protocol]://[host]:[port]"
      ],
      "imgSrc":[
        "'self'",
        "[Protocol]://[host]:[port]"
      ],
      "reportOnly": false,
      "setAllHeaders": false,
      "disableAndroid": false,
      "safari5": false
    },
    "frameguard": {
      "enabled": true,
      "mode": "deny",
      "allowFromPattern": ""
    },
    "xss": {
      "enabled": true,
      "setOnOldIE": true
    },
    "hpkp": {
      "enabled": true,
      "maxAge": 7776000000,
      "sha256s": [
        "AbCdEf123=",
        "ZyXwVu456="
      ],
      "includeSubdomains": true,
      "reportUri": null
    },
    "hsts": {
      "enabled": false,
      "maxAge": 10886400000,
      "includeSubdomains": true,
      "preload": false
    },
    "csrf": {
      "enabled": true,
      "maxTokensPerSession": 10
    }
  }

Configuration des logs serveurs

Niveau de log :

ParamètreDescriptionValeur
level.[all]niveau de log pour toute l'applicationINFO
level.monappli.viewniveau de log spécifique pour une partie de l'applicationoptionnel
 "log": {
    "levels": {
      "[all]": "DEBUG",
      "hornet-js-components.table": "TRACE"
    }
    ...

Déclaration des appenders :

ParamètreDescriptionValeur
typeType d'appenderfile pour un fichier simple
dateFile pour un fichier contenant la date
console ...
filenameChemin absolu ou relatif au lancement du fichier de log/var/log/nodejs/applitutoriel/applitutoriel-1.log
patternPrésent pour les types dateFile
Permet de donner un pattern de date qui sera ajouté au nom du fichier.
-yyyy-MM-dd
layout.typeType d'affichage des messagespattern
layout.patternSchéma d'affichage des messages"%[%d{ISO8601}

Ex: type console

"appenders": [
	{
	    "type": "console",
	    "layout": {
	      "type": "pattern",
	      "pattern": "%[%d{ISO8601}|%x{tid}|%x{user}|%p|%c|%x{fn}|%m%]"
	    }
	}
]

ex : type fichier

"appenders": [
	{
	    "type": "dateFile",
	    "filename": "log/app.log",
	    "layout": {
	      "type": "pattern",
	      "pattern": "%d{ISO8601}|%x{tid}|%x{user}|%p|%c|%x{fn}|%m"
	    }
	}
]

Configuration des logs client

ParamètreDescriptionValeur
remoteActivatino des remotes logfalse
levelniveau de logINFO
  "logClient": {
    "remote": false,
    "level": "TRACE",
    ...

Déclaration des appenders

Type BrowserConsole :

ParamètreDescriptionValeur
typeType d'appenderBrowserConsole
layout.typeType d'affichage des messagesTHIN/BASIC/pattern/...
layout.patternSchéma d'affichage des messages"%p
"appenders": [
{
	"type": "BrowserConsole",
	"layout": {
	  "type": "THIN"
	}
}

Type Ajax :

ParamètreDescriptionValeur
typeType d'appenderAjax
layout.typeType d'affichage des messagesTHIN/BASIC/pattern/...
layout.patternSchéma d'affichage des messages"%p
thresholdSeuil d'envoi des messages de log100
timeoutTimeout d'envoie des messages3000
urlurl d'envoie des logs/logs
"appenders": [
	{
	    "type": "Ajax",
	    "layout": {
	      "type": "BASIC"
	    },
	    "threshold": 100,
	    "timeout": 3000,
	    "url": "/log"
	}
]

Configuration des services

Configuration de l'adresse du service par défaut

  • possibilité de définir des adresses supplémentaires pour gérer le multi-services.
ParamètreDescriptionValeur
defaultServices.hostURL de déploiement du module applitutoriel-service[Protocol]://[host]:[port]
defaultServices.nameNom de déploiement des servicesapplitutoriel
secteursServices.hostURL de déploiement d'un service supplémentaire[Protocol]://[host]:[port]
secteursServices.nameNom de déploiement d'un service supplémentaireapplitutoriel
    "defaultServices": {
      "host": "http://localhost:8080/",
      "name": "applitutoriel-service"
    },
    "secteursServices": { // configuration multi-service : exemple de definition d'un service specifique pour les secteurs
      "host": "http://localhost:8080/",
      "name": "applitutoriel-service"
    },

Mode mock

ParamètreDescriptionValeur
enabledActivation du mode mock de l'applicationfalse
routesChemin vers le fichier de routes mocké sans le /src/mock/routes
defaultServices.hostHost local du mocklocalhost
secteursServices.hostURL de déploiement d'un service mock supplémentaire[Protocol]://[host]:[port]
secteursServices.nameNom de déploiement d'un service mock supplémentaireapplitutoriel/hornet-mock
  "mock": {
      "enabled": false,
      "routes": "/mock/routes",
      "defaultServices": { // service mock par defaut : le contexte est toujours "applitutoriel/hornet-mock"
        "host": "http://localhost:${server.port}/" //default localhost:8888
      },
      "secteursServices": { // configuration multi-service : exemple de definition d'un mock specifique pour les secteurs
        "host": "http://localhost:${server.port}/",
        "name": "applitutoriel/hornet-mock"
      }
  }

Mode fullSPA

NOTE : Le mode fullSPA n'est pas encore complètement supporté par hornet, la configuration est présente à titre d'information

ParamètreDescriptionValeur
enabledActivation du mode fullSPAfalse
hostHost du mode fullSPA""
namenom du service pour le mode fullSPA/services
staticPathprefixe des resources statiques pour le mode fullSPA""
"fullSpa": {
    "enabled": false,
    "host": "",
    "name": "/services",
    "staticPath": ""
  }

NOTE : non opérationnel

Configuration de l'authentification

Note : Il ne s'agit pas d'une configuration à proprement parler de Hornet mais uniquement viable dans l'applitutoriel

ParamètreDescriptionValeur
loginUrlUrl de connexion à l'application/login
logoutUrlUrl de déconnexion à l'application/logout
cas.enabledActivation du mode CASfalse
cas.configuration.urlCasurl complète du CAS
cas.configuration.hostUrlReturnTourl de retour après authentification sur le CAS
cas.configuration.paths.loginurl déclenchant le process de connexion/login
cas.configuration.paths.logouturl déclenchant le process de déconnexion/logout
cas.configuration.paths.validateurl du service de validation des tichets CAS
cas.configuration.paths.casLoginurl de connexion du CAS
cas.configuration.paths.casLogouturl de déconnexion du CAS
  "authentication": {
    "loginUrl": "/login",
    "logoutUrl": "/logout"
    "cas": {
      "enabled": true,
      "configuration": {
        "urlCas": "http://cas-url:80",
        "hostUrlReturnTo": "http://localhost:8888",
        "paths": {
          "login": "/login",
          "logout": "/logout",
          "validate": "http://cas-url/serviceValidate",
          "casLogin": "http://cas-url/login",
          "casLogout": "http://cas-url/logout"
        }
      }
    }
  }

Configuration du Cache

ParamètreDescriptionValeur
enabledActivation du cache sur les requêtes de servicestrue
timetoliveDurée de rétention du cache60
"cache": {
    "enabled": true,
    "timetolive": 60
  }

Licence

applitutoriel-service est sous licence cecill 2.1.

Site web : http://www.cecill.info

FAQs

Package last updated on 26 Feb 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc