vendredi 30 mai 2014

Déployer son site web Grails sur le cloud OpenShift




J'ai utilisé le cloud d'OpenShift pour déployer un site web faits en Grails. Cet article va présenter un résumé des étapes nécessaires ainsi que quelques conseils et retours d'expériences.


  Quel est la meilleur méthode pour déployer son site Grails sur OpenShift ?


La meilleur méthode que j'ai trouvé pour déployer son site Grails est de construire un war puis de le copier sur le cloud.

Par défaut, Grails a une option pour générer un war : grails war

Pour plus de détails : http://grails.org/doc/2.2.1/ref/Command%20Line/war.html


Remarque :

  • Vous pouvez utiliser le plugin Tomcat de Grails Tomcat plugin pour faire de Tomcat le servlet container utilisé par défaut lors du développement.
  • Vous pouvez effacer les fichiers non nécessaire dans votre war en ajoutant des configurations dans le fichier Config.groovy :
    1:  grails.war.resources = {  
    2:     stagingDir -> delete(dir: "$stagingDir/selenium")   
    3:  }   
    


Installation et configuration du client ssh


Il vous faut tout d'abord créer un compte sur OpenShift. Ensuite, vous pourrez configurer votre accès ssh. Il suffit simplement d'installer le package rubygems et git. Par exemple sur Gentoo, il suffit de faire ;

 emerge dev-ruby/rubygems  
 emerge git   


Si vous n'avez pas Gentoo, vous pouvez aller voir sur le site d'OpenShift  : https://www.openshift.com/get-started#cli


 gem install rhc  
 su - user  
 rhc-setup   

Voici un exemple de output de la commande rhc-setup :
#rhc setup
OpenShift Client Tools (RHC) Setup Wizard

This wizard will help you upload your SSH keys, set your application namespace, and check that other programs like Git are properly installed.

Using XXXX to login to openshift.redhat.com
Password: ******

OpenShift can create and store a token on disk which allows to you to access the server without using your password. The key is stored in your home directory and should be kept secret.  You can delete the key at any time by running 'rhc
logout'.
Generate a token now? (yes|no) yes
Generating an authorization token for this client ... lasts about 1 month

Saving configuration to /home/USER/.openshift/express.conf ... done
Checking for git ... found git version 1.8.5.5
Checking common problems .. done
Checking for a domain ... MYDOMAIN
Checking for applications ... found 1
  opendoowap http://opendoowap-totalprog.rhcloud.com/

  You are using 1 of 3 total gears
  The following gear sizes are available to you: small

Your client tools are now configured.



Déployer votre application sur le cloud

Une fois l'accès ssh configuré et que vous avez builder le war, il vous suffit de le copier sur le cloud. OpenShift utilise Git pour déployer automatiquement les applications.Si vous voulez que cela fonctionne avec un war, il y a une petite astuce : http://totalprog.blogspot.fr/2013/12/probleme-avec-le-deploiement-de-rootwar.html

Accès à votre application

 

Comment se connecter avec ssh ?

  • Logguer vous sur le site d'OpenShift.
  • Clic sur l'onglet Application.
  • Clic sur votre application.










  • A droite de l'écran, clic sur le lien : "Want to log in your application 
  • Copie la ligne sur votre console.

Par exemple :

#ssh 529e2274e0b???b@myapp.rhcloud.com


Commandes utiles :

help
tail_all
ctl_app stop
ctl_app start

Voici quelques liens utiles pour plus de détails :

  • https://www.openshift.com/developers/remote-access#keys
  • https://www.openshift.com/get-started#cli


Visitez votre site web

Le lien pour accéder à votre site web est dans la partie Application details sur le site d'OpenShift.

Temps de réponse très long

J'ai rencontré un problème lors de l' accès au  site. Le temps de chargement était vraiment très long. J'ai trouvé la solution à ce problème sur StackOverFlow :

 openshift : my local gears often timeout and go down which cause response time very long

If you do not access your application for 24 hours, it will get idled (if this is a free acount), and depending on how large your application is, it could take awhile to spin back up when you do access it again.

En fait, pour les comptes "gratuits", ils sont automatiquement  mis à "idled" si il n'y a pas d'accès pendant 24 heures.


Conclusion

Déployer un site fait avec Grails n'est pas très difficile.Si vous souhaitez voir un projet example, j'ai mis un projet sur GitHub https://github.com/drieu/fjLearning et j'ai mis en ligne le site à cette adresse :  opendoowap-totalprog.rhcloud.com








vendredi 9 mai 2014

Créer un jar executable avec Gradle et Groovy facilement

Pour ceux qui souhaitent créer un jar exécutable avec Groovy et Gradle, il existe un projet sur GitHub qui vous fera gagner du temps :  https://github.com/bond-/gradle-groovy-jar-example

mercredi 7 mai 2014

new Blog( perso );: test de services Rest

 new Blog( perso );: test de services Rest: Il y a quelques années, lorsque je développais des applications web (avant de devenir essentiellement un développeur  middleware/backend) ...

dimanche 4 mai 2014

Firefox Hacks : Extraire les informations utilisateurs stockées sur son ordinateur avec Groovy !


Firefox stockent toutes ses données dans un répertoire (Sur Linux, en général il s'agit de $HOME/.mozilla et sur Windows, c'est dans le répertoire C:\users\MUYSER\AppData\Roaming\Mozilla\Firefox\Profiles\). Dans ce répertoire, on peut trouver la liste des addons, la liste des recherches, des cookies ... et aussi les logins et mot de passe !
En clair, si une personne récupère le contenu de ce répertoire, elle va avoir toute votre vie en sa possession.

Dans cet article, nous allons montrer les informations que l'on peut récupérer très facilement à l'aide des fichiers contenus dans ce répertoire. Nous montrerons aussi des exemples de code avec Groovy. Vous verrez que ce n'est pas très compliqué.

Code source des exemples

L'ensemble des codes sources utilisés de cet article sont disponibles sur GitHub : https://github.com/drieu/GFirefoxData.Un fichier README contient les instructions nécessaires pour compiler et exécuter le projet.

Data stockées dans Sqlite files

Comment utiliser Sqlite ?


Firefox utilise SQLITE pour stocker ses données. Si vous cherchez dans le répertoire, vous verrez des fichiers .sqlite ( ex : cookies.sqlite ). Vous pouvez en ligne de commande lire ses informations.

Voici un exemple montrant comment se connecter à la base cookies et les requêtes à effectuer pour lire ses données :

 # cd $HOME/.mozilla/???  
 # sqlite3 cookies.sqlite  
 SQLite version 3.8.2 2013-12-06 14:53:30  
 Enter ".help" for instructions  
 Enter SQL statements terminated with a ";"  
 sqlite>  


Une fois connecté, il suffit d'exécuter des requêtes sql ou des commands sqlite.Voici quelques commandes indispensables :

Help

sqlite> .help

Liste de toutes les tables

sqlite> .tables

Liste des champs d'une table

sqlite> .schema moz_cookies

Select

sqlite> select * from  moz_cookies

Quit

sqlite> .quit


Liste des fichiers sqlite contenant des informations

Maintenant que vous savez utiliser sqlite, vous pouvez faire de même avec les fichiers suivants :

cookies.sqlite
addons.sqlite
formhistory.sqlite
content-prefs.sqlite
healthreport.sqlite
permissions.sqlite
places.sqlite
signons.sqlite
webappsstore.sqlite

Nous allons maintenant étudier comment récupérer ses informations avec Groovy.

Obtenir la liste de tous les cookies


Pour les codes qui vont suivre, nous utiliserons une librairie pour pouvoir exécuter des requêtes sqlite : sqlite-jdbc ( https://bitbucket.org/xerial/sqlite-jdbc ). Vous pouvez télécharger le jar : ICI

Il vous suffit ensuite de créer un fichier firefox.groovy et d'adapter le code pour qu'il pointe vers le fichier cookies.sqlite.Voici le code source de firefox.groovy :


     import groovy.sql.Sql 
     def url = "jdbc:sqlite:/home/USER/tmp/.mozilla/firefox/fe31xbna.default/cookies.sqlite" 
     def sql = Sql.newInstance(url, "org.sqlite.JDBC") 
     sql.eachRow("select DISTINCT host from moz_cookies") { 
       println("host= ${it.host}") 
     } 

Obtenir les données des formulaires

     def sql = Sql.newInstance(url, "org.sqlite.JDBC")  
     sql.eachRow("select DISTINCT value from moz_formhistory") {  
       println("value= ${it.value}")  
     }  
     println("")  

Obtenir la liste des addons

     def sql = Sql.newInstance(url, "org.sqlite.JDBC")  
     sql.eachRow("select DISTINCT name from addon") {  
       println("name= ${it.name}")  
     }  
     println("")  

Voir les password

Le Master password est stocké dans le fichier key3.db. Il y a aussi le fichier signons.sqlite qui contient les utilsateurs et mot de passes cryptés :

sqlite>sqlite3 signons.sqlite  
 sqlite>select hostname,usernameField,passwordField,encryptedUsername,encryptedPassword from moz_logins limit 1;  

Voir les mots de passes lorsqu'il n'y a pas de master password. 

Il suffit d'aller dans  Menu Outils -> Option -> Sécurité et vous pouvez voir les mots de passe sauvegardés.Donc si une personne récupère les fichiers contenant les mots de passes, il lui suffira de créer un nouveau profil firefox avec ses fichiers ( key3.db, signons.sqlite et cert8.db ).
Voici comment faire :

1. Fermez firefox
2. Créez un nouveau profil firefox ( firefox --ProfileManager )
3. Fermez firefox
4. Aller dans le répertoire du profil firefox ( $HOME/.mozilla/...)
5. Remplacer les fichiers key3.db, signons.sqlite et cert8.db par les vôtres.
6. Redémarrez firefox
7. Allez dans Menu Outils -> Option -> Sécurité et voir les mots de passes enregistrés
et vous verrez tous les mots de passes !

Donc un bon conseil est de mettre un master password !
Cependant, cela reste utile seulement dans le cas où une personne utilise firefox pour naviguer sur internet.Cela lui évite de voir tous vos mots de passe en quelques clics.
Il y a cependant un moyen de récupérer les mots de passe même si il y a un master password !


Voir les mots de passes lorsqu'il y a un master password.

C'est possible en regardant le code source de firefox : http://www.infond.fr/2010/04/firefox-passwords-management-leaks.html 

Une seconde méthode, plus facile, est d'utiliser un outil de mozilla : http://securityxploded.com/firemaster.php

Voici un exemple d'utilisation :

FireMaster.exe -q -b -m 3 -l 10 -c "abcdetps123" "c:\my test\firefox"

 

Conclusion

Dans cet article, nous avons vus toutes les informations qui sont stockées par firefox sur votre disque dur.Est-ce que cela veut dire que firefox n'est pas sécurisé ? Non. Toutes les applications stockent leurs informations dans des fichiers. Par contre, il faut avoir conscience des points suivants :
  • Si un pirate arrive à copier les fichiers que l'on a vu, elle aura accès à toute votre vie.
  • Les plugins firefox ont accès à un certains nombre d'informations.Avez-vous confiance en vos plugins ?
  • Certaines données sont utilisées dans un but commerciale (par exemple les cookies )

gradlew idea : FAILURE: Could not determine which tasks to execute.


Une petite astuce, pour ceux qui comme moi, ne connaisse pas bien gradlew.

Problème

Pour "idealizer" mon projet GroovyFx, j'ai voulu utiliser la commande gradlew

$gralew idea

J'ai eu le message d'erreur suivant :

FAILURE: Could not determine which tasks to execute.

* What went wrong:
Task 'idea' not found in root project 'tsecure'.

* Try:
Run gradlew tasks to get a list of available tasks.


Solution


Il suffit d'ajouter la ligne suivante à votre fichier build.gradle :

 apply plugin: 'idea'

Vous pouvez ensuite relancer:

$gralew idea