mercredi, décembre 01, 2010

Commande Find

Pour rechercher tous les fichiers se terminant par .c dans le répertoire /usr, vous taperez :
find /usr -name " *.c " -print

Pour connaître les derniers fichiers modifiés dans les 3 derniers jours dans toute l'arborescence (/), vous devez taper :
find / -mtime 3 -print

Vous pouvez chercher dans toute l'arborescence, les fichiers ordinaires appartenant à olivier, dont la permission est fixée à 755, on obtient :
find / -type f -user olivier -perm 755 -print

Recherche des fichiers qui obéissent à la fois à la condition a pour nom core et à la condition a une taille supérieure à 1Mo.
find . \  (-name core -a size +2000 \  ) -print

Exemple recherche des fichiers ayant pour nom core, suivi de l'effacement de ces fichiers.
find . -name core -exec rm '{}' \;

En tapant cette commande vous allez rechercher dans le répertoire courant tous les fichiers normaux (sans les répertoires, fichiers spéciaux), et rechercher dans ces fichiers tous ceux contenant la chaîne toto.
find . -type f -print | xargs grep toto
find / -type f ! -path '/proc/*' ! -path '/sys/*'  -print | xargs grep toto


http://www.funix.org/fr/unix/grep-find.htm

mercredi, octobre 13, 2010

iptables chaines et filtres


NOTES :
- Au premier routing, le traffic passe par INPUT ou FORWARD selon qu'il est destiné à la machine locale ou non
- PREROUTING, INPUT, FORWARD, OUTPUT et POSTPROCESSING sont des "chaines"
- mangle, nat, filter sont des "tables"

Connexion à UltraVPN en OpenVPN - Ubuntu 10.10 - Offre Gratuite


PARTIE 0 : INFORMATION SUR ULTRAVPN


- Connexion Open VPN gratuite 
- IP obtenue américaine
- Provider VPN français. (Service en réalité fourni par Lynanda)
- Ports P2P bloqués, et autres nombreux ports TCP 
- Débit lent



PARTIE 1 : CONFIGURATION DE LA CONNEXION

1.Installation paquet ubuntu
sudo apt-get install openvpn


2.Récupération certificat UltraVPN

sudo mkdir /etc/openvpn/ultravpn
sudo wget -O /etc/openvpn/ultravpn/UltraVPN_conf.tar.gz http://ia311024.us.archive.org/0/items/UltraVPN_Config/UltraVPN_conf.tar.gz
sudo tar -xzf /etc/openvpn/ultravpn/UltraVPN_conf.tar.gz -C /etc/openvpn/ultravpn/
sudo cp /etc/openvpn/ultravpn/UltraVPN.crt /etc/openvpn

3.Création fichier d'authentification avec le compte ultravpn

sudo nano /etc/openvpn/ultravpn.user
USER
PASSWORD

sudo chmod 600 /etc/openvpn/ultravpn.user

4.Création de fichiers de configuration pour UltraVPN

* Serveurs :
Les serveurs vpn disponibles sont :
Pour UltraVPN:
    * servers443.ultravpn.fr 443
    * servers24.ultravpn.fr 24
    * servers21.ultravpn.fr 21
    * servers54.ultravpn.fr 54
    * servers24.ultravpn.net 24
    * servers443.ultravpn.net 443


On peut soit
- créer un fichier de configuration par serveur pour pouvoir utiliser plusieurs tunnels à la fois
- lister les serveurs dans un même fichier de configuration ce qui met en place le "failover". Cad que le client essaye de se connecter aux serveurs dans l'ordre. (L'option remote-random dans la configuration permet d'essayer les serveurs dans un ordre aléatoire)

* Fichier de configuration pour UltraVPN :
Dans cet exemple, un seul fichier de configuration pour tous les serveurs

sudo nano /etc/openvpn/ultravpn.conf


client
dev tun
proto udp
hand-window 15
remote servers443.ultravpn.fr 443
remote servers24.ultravpn.fr 24
remote servers21.ultravpn.fr 21
remote servers54.ultravpn.fr 54
remote servers24.ultravpn.net 24
remote servers443.ultravpn.net 443
remote-random
resolv-retry infinite
nobind
persist-key
persist-tun
persist-remote-ip
ca UltraVPN.crt
auth-user-pass /etc/openvpn/ultravpn.user
comp-lzo
verb 3
log /var/log/openvpn.log

* Fichier de configuration de openvn :
sudo nano /etc/default/openvpn
AUTOSTART="none"

* Lancement et vérification état de la connexion du client vers le serveur VPN :

sudo service openvpn restart ultravpn
sudo service openvpn status ultravpn
sudo more /var/log/openvpn.log


5.Ajustements

* Ajouter/enlever cette connexion au boot de la machine :
sudo nano /etc/default/openvpn
Enlever "none" dans AUTOSTART et mettre le nom du fichier de configuration du tunnel
AUTOSTART="ultravpn"




PARTIE 2 : ROUTAGE



à remplir


REFERENCES

UltraVPN : 
https://www.ultravpn.fr/forum/index.php?topic=204.0

OpenVPN :
http://www.vogelweith.com/debian_server/10_openvpn.php#x1-60002
http://matu.tv/2009/09/creation-dune-passerelle-vpn-a-laide-dopenvpn-clientserveur/
http://blog.nicolargo.com/2010/10/installation-dun-serveur-openvpn-sous-debianubuntu.html

mardi, octobre 12, 2010

Connexion à Vyprvpn en PPTP - Ubuntu 10.10 - Offre Vyprvpn ou Offre Giganews

[EN COURS DE REDACTION]

PARTIE 1 : CONFIGURATION DE LA CONNEXION


0. Cas particuliers des FAI

Pour la freeboxV6 : testé avec aucune configuration particulère effectuée
Pour numericable : testé avec le routeur/modem Castelnet 30Mo, il faut activer l'option PPTP PassThrough dans l'administration. (IPSec PassThrough étant désactivé lors de mon test)


1. Installation paquet ubuntu
sudo apt-get install pptp-linux

correction d'un bug de pptpsetup, apparemment encore présent dans pptp-linux 1.7.2-5 :
Le script pptsetup n'écrit pas le double \\ dans le fichier /etc/ppp/chap-secrets mais un seul \
Correctif :
sudo sed -i 's/= "\$DOMAIN\\\\"/\= "$DOMAIN\\\\\\\\"/g' /usr/sbin/pptpsetup'



2. Création des fichiers de configuration de tunnels PPTP

Les serveurs vpn disponibles sont pour Vyprvpn :
    * us1.vyprvpn.com OU us1.vpn.goldenfrog.com pour Los Angeles, CA
    * us2.vyprvpn.com OU us2.vpn.goldenfrog.com pour Washington, DC
    * eu1.vyprvpn.com OU eu1.vpn.goldenfrog.com pour Amsterdam
    * uk1.vyprvpn.com OU uk1.vpn.goldenfrog.com pour Londres [Nouveau Serveur 2011]
    * hk1.vyprvpn.com OU hk1.vpn.goldenfrog.com pour Hong Kong

Dans le cas de l'offre Vyprvpn groupée à l'offre Giganews :
    * us1.vpn.giganews.com pour Los Angeles, CA
    * us2.vpn.giganews.com pour Washington, DC
    * eu1.vpn.giganews.com pour Amsterdam
    * uk1.vpn.giganews.com pour Londres [Nouveau Serveur 2011]
    * hk1.vpn.giganews.com pour Hong Kong


Pour créer la configuration d'un client PPTP, on va utiliser le script pptpsetup qui se charge pour nous de modifier les fichiers de configuration adéquats.

* Syntaxe :
sudo pptpsetup --create NOM_TUNNEL --server IP_VYPRVPN --domain NOM_DOMAINE --username USER--password PASSWORD --encrypt
NOM_TUNNEL : nom au choix
NOM_DOMAINE : nom de domaine du provider VPN : NE PAS UTILISER pour Vyprvpn
IP_VYPRVPN : un des serveurs VyprVPN

* Exemple pour VyVPRN :
sudo pptpsetup --create us1vyprvpn_ppt --server us1.vpn.giganews.com  --username USER --password PASSWORD --encrypt

On peut créer autant de tunnels que de serveurs vpn Vyvprvpn

* En cas d'erreur relative à MPPE (cryptage) :
Si vous avez une erreur en à la création des tunnels :
sudo modprobe ppp-compress-18

* Pour effacer un tunnel :
sudo pptpsetup --delete us1vyprvpn_ppt


3. Ouverture et fermeture des tunnels

* Syntaxe :
sudo pon NOM_TUNNEL
sudo poff NOM_TUNNEL

* Exemple :
sudo pon us1vyprvpn_ppt
sudo poff us1vyprvpn_ppt

* Mode debug :
sudo pon us1vyprvpn_ppt debug dump logfd 2 nodetach


4. Ajustements


* Numero d'interface pppX:

Pour que les tunnels se voient attribués toujours le même numéro d'interface (ppp0, ppp1, etc...),
il faut préciser le numéro dans le fichier /etc/ppp/peers correspondant avec le mot clé unit en l'ajoutant à la fin du fichier.
Sinon, par défaut, les tunnels se voient attribués un numéro en fonction de leur ordre d'activation.

exemple pour associer ppp1 au tunnel eu1vyprvpn_ppt :
sudo nano /etc/ppp/peers/eu1vyprvpn_ppt
unit 1




* Autoreconnect :
Pour que les tunnels se reconnectent automatiquement en cas d'échec
sudo nano /etc/ppp/options
ajouter le mot clé
persist
Ou ajouter ce mot clé seulement aux tunnels désirés dans les fichiers présents dans /etc/ppp/peers

* Démarrage automatique :
Pour que les tunnels démarrent au boot du systeme
sudo nano /etc/network/interfaces
ajouter la section suivante pour chaque tunnel

auto NOM_INTERFACE
iface NOM_INTERFACE inet ppp
        provider NOM_TUNNEL



auto us1ppp0
iface us1ppp0 inet ppp
       provider us1vyprvpn_ppt



auto eu1ppp1
iface eu1ppp1 inet ppp
       provider eu1vyprvpn_ppt




Pour piloter manuellement les tunnels, il faut alors utiliser les commandes
sudo ifdown us1ppp1
sudo ifup us1ppp1
Pour désactiver le démarrage automatique d'un tunnel, il faut commenter la ligne auto us1pp1
NOTE : les interfaces crées sont alors "ppp0" pour  us1ppp0 et "ppp1" pour eu1ppp1. Le nom est toujours ppp et le numéro dépend de l'ordre d'activation (ou d'une option dans /etc/peers, cf ci dessus)

* Bug MTU
https://bugs.launchpad.net/ubuntu/+source/network-manager-pptp/+bug/294564
Connexion interrompue dès que du traffic traverse le tunnel
Si c'est le cas ajouter dans /etc/ppp/options
MTU 1500




PARTIE 2 : ROUTAGE


[a remplir]



REFERENCES :

PPTP :
http://ubuntuforums.org/showthread.php?t=1443735
http://pptpclient.sourceforge.net/howto-ubuntu.phtml

VyprVPN :
https://www.goldenfrog.com/FR/support/vyprvpn/vpn-setup

MPPE et PPTP :
http://ubuntuforums.org/showthread.php?t=75676
http://pptpclient.sourceforge.net/howto-diagnosis.phtml#mppe_kernel

Routage :
http://pptpclient.sourceforge.net/routing.phtml
http://blog.dantesk.net/post/2010/04/23/Routage-d-une-application-spécifique-a-travers-un-réseau-VPN
http://www.hleroy.com/post/2009/10/29/IPREDATOR-sur-Dedibox-/-Free-:-configurer-le-policy-routing

Connexion à Vyprvpn en OpenVPN - Ubuntu 10.10

[EN COURS DE REDACTION]


PARTIE 0 : INFORMATION SUR VYPRVPN



Les bénéficiaires d'un accès VyprVPN via l'offre diamond de Giganews, ne peuvent pas accèder au vpn en openvpn. Ils doivent se rabbatre sur du PPTP.

PARTIE 1 : CONFIGURATION DE LA CONNEXION

1.Installation paquet ubuntu
sudo apt-get install openvpn


2.Récupération certificat VyprVPN 

Offre VyprVPN en openvpn :
sudo wget -O /etc/openvpn/ca.vyprvpn.com.crt https://www.goldenfrog.com/downloads/ca.vyprvpn.com.crt

3.Création fichier avec le compte vyprvpn

sudo nano /etc/openvpn/vyprvpn.user
USER
PASSWORD

sudo chmod 600 /etc/openvpn/vyprvpn.user

4.Création de fichiers de configuration pour VyprVPN

* Serveurs :
Les serveurs vpn disponibles sont :
Pour Vyprvpn :
    * us1.vyprvpn.com OU us1.vpn.goldenfrog.com pour Los Angeles, CA
    * us2
.vyprvpn.com OU us2.vpn.goldenfrog.com pour Washington, DC
    *
eu1.vyprvpn.com OU eu1.vpn.goldenfrog.com pour Amsterdam
    *
hk1.vyprvpn.com OU hk1.vpn.goldenfrog.com pour Hong Kong

On peut soit
- créer un fichier de configuration par serveur pour pouvoir utiliser plusieurs tunnels à la fois
- lister les serveurs dans un même fichier de configuration ce qui met en place le "failover". Cad que le client essaye de se connecter aux serveurs dans l'ordre. (L'option remote-random dans la configuration permet d'essayer les serveurs dans un ordre aléatoire)

* Fichier de configuration pour VyprVPN :
Dans cet exemple, un fichier de configuration différent par serveur
sudo nano /etc/openvpn/us1.vyprvpn.conf


client
dev tun
proto udp
remote us1.vyprvpn.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
persist-remote-ip
ca ca.vyprvpn.com.crt
tls-remote  us1.vyprvpn.com
auth-user-pass /etc/openvpn/vyprvpn.user
comp-lzo
verb 3
log /var/log/openvpn.log

* Fichier de configuration de openvn :
sudo nano /etc/default/openvpn
AUTOSTART="none"

* Lancement et vérification état de la connection du client vers le serveur VPN de VyprVPN

sudo service openvpn restart us1.vyprvpn
sudo service openvpn status us1.vyprvpn
sudo more /var/log/openvpn.log



5.Ajustements

* Ajouter/enlever cette connexion au boot de la machine :
sudo nano /etc/default/openvpn
Enlever "none" dans AUTOSTART et mettre le nom du fichier de configuration du tunnel AUTOSTART="us1.vyprvpn"



PARTIE 2 : ROUTAGE

à remplir

REFERENCES

VyprVPN :
https://www.goldenfrog.com/FR/support/vyprvpn/vpn-setup

OpenVPN :
http://www.vogelweith.com/debian_server/10_openvpn.php#x1-60002
http://matu.tv/2009/09/creation-dune-passerelle-vpn-a-laide-dopenvpn-clientserveur/
http://blog.nicolargo.com/2010/10/installation-dun-serveur-openvpn-sous-debianubuntu.html

dimanche, octobre 10, 2010

Configuring anonymous public shares with Samba 3

Exemple :
#/etc/samba/smb.conf
[public]
        comment = Public Shares
        browsable = yes
        path = /data/pub
        public = yes
        writable = no
        write list = user_who_can_write
        guest ok = yes 
 
[global]
        #...
        guest account = nobody            
        map to guest = Bad Password 
 
 
---

AND

This will create the user with no password :
# smbpasswd -an nobody





http://micheljansen.org/blog/entry/182

mercredi, mai 19, 2010

Bug maven 2.x "plugin does not exist or no valid" (ie: The plugin 'org.codehaus.mojo:sonar-maven-plugin' does not exist or no valid version could be found)

maven sometimes stop working with plugin

The bug is well known and often appear when using Hudson and Sonar together.

The bug is about corrupt metadata xml file of local maven repository.
http://docs.codehaus.org/display/MAVENUSER/FAQs-1#FAQs-1-novalidversion
http://jira.codehaus.org/browse/MNG-2408

- A simple work around is to erase the local maven repository
- The best work around is to use -U while using mvn.

In the context of hudson/sonar, just set in -U to the additional properties in the global configuration of the Sonar plugin for Hudson
>Add Sonar
>Nom : sonar2.0.1
>URL : http://host:16080/sonar
>URL du serveur public : http://host:16080/sonar
>URL BDD : jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
>Nom user BDD : xxx
>Mot de passe BDD : xxx
>Driver BDD : com.mysql.jdbc.Driver
>Additional properties : -U

jeudi, mai 13, 2010

Sacred 2

Partie en réseau local mais sur internet (via hamachi) :
- utiliser un réseau local constitué avec hamachi (testé avec la version 2.0.2.85)
- bien configurer hamachi (cad connexion hamachi devant les autres et métrique de la connexion a 10 )
tutorial : http://www.hamachifrance.com/forum/tutoriels-jeux-hamachi/149-tuto-configurer-hamachi-pour-xp-vista-et-7-a.html
- Aucun routage de port nécessaire vers la machine serveur à travers le réseau hamachi

Patchs officiels :
http://update.sacred2.com/apache2-default/

Hamachi

Toutes les versions :
http://www.filehippo.com/download_hamachi


Configuration de Hamashi sur win XP, vista, win7 :
http://www.hamachifrance.com/forum/tutoriels-jeux-hamachi/149-tuto-configurer-hamachi-pour-xp-vista-et-7-a.html

Dungeon Siege 2 et hamachi et resolution

http://logmeinwiki.com/wiki/Hamachi:Dungeon_Siege_2




Pour jouer en résolution plus élevée que la résolution standard, modifier l icone de lancement est ajoutée a la fin de la commande
height=1050 width=1680

samedi, avril 24, 2010

Civ4 - parties réseaux

Le serveur hébergeant la partie doit se voir rediriger les ports 2000-2400
Les joueurs doivrent rediriger le port 2056

En cas de joueur tous a l'extérieur du lan (sur internet)
- lancer une nouvelle partie via "connexion ip directe"
- communiquer son ip publique aux autres joueurs (utiliser http://checkip.dyndns.org )
- tous les joueurs peuvent alors se connecter via "connexion ip directe"

Cas de joueur présent dans le lan ET a l'extérieur
- lancer une nouvelle partie via connexion ip directe
- les joueurs présent dans le lan se connectent en PREMIER via "connexion ip directe", en utilisant l'ip locale du serveur (par exemple : 192.168.0.100)
- les joueurs a l'extérieur du lan se connectent en SECOND, via "connexion ip directe", en utilisant l'ip publique du lan


PORTS UTILISES PAR CIV4 POUR INFO:

* 6667 (IRC)
* 2033 (Civ4)
* 2056 (Civ4)
* 47624 (Directplay)
* 3783 (Voice Chat Port)
* 27900 (Master Server UDP Heartbeat)
* 28900 (Master Server List Request)
* 29900 (GP Connection Manager)
* 29901 (GP Search Manager)
* 13139 (Custom UDP Pings)
* 6500 (Query Port)
* 6515 (Dplay UDP)
* 2300-2400 (DirectPlay - UDP)

mercredi, avril 14, 2010

Gestion de série télé - TVShow - FileBot

Gestion de collection de série télé
soustitres, rename file, etc..

http://sourceforge.net/projects/filebot/

Ubuntu Python Package Easy Install

Pour installer des packages pythons depuis le repository http://pypi.python.org (aka cheeseshop)

installer le package ubuntu "python-setuptools" :
sudo apt-get install python-setuptools


installer le package ubuntu des libs de developpement python (optionel) pour compiler les dépendences des projets téléchargés depuis pypi :
sudo apt-get install python-dev


pour l'utiliser :
sudo easy_install packagename

lundi, avril 12, 2010

XBMC et Xubuntu 9.10 - Divers

NOTE :
Installation: http://wiki.xbmc.org/?title=HOW-TO_install_XBMC_for_Linux_on_Ubuntu_with_a_minimal_installation_step-by-step

SVN Repo installer contient une liste de depot svn de plugins XBMC
SVN Repo Installer toutes versions :
http://xbmc-addons.googlecode.com/svn/packages/plugins/programs/

Plugins XBMC notable (Depot present dans SVN Repo Installer):
pour les sous titres : http://code.google.com/p/dandar3-xbmc-addons/

SKIN Mediastream 1.75 :
http://www.mediafire.com/?qutmzw2ljai

mardi, décembre 08, 2009

Samba configuration

* Pour afficher la liste des options disponibles sur le serveur samba pour le configurer via /etc/samba/smb.conf :

sudo testparm --show-all-parameters

mardi, novembre 03, 2009

Ubuntu - Proxy HTTP

Localisation de la gestion de proxy sur Ubuntu 9.04




* Pour tout les utilisateurs
ajouter dans /etc/environment
HTTP_PROXY="http://login:pass@host_proxy:port_proxy/"
HTTPS_PROXY="http://login:pass@host_proxy:port_proxy/"

http_proxy="http://login:pass@host_proxy:port_proxy/"
https_proxy="http://login:pass@host_proxy:port_proxy/"

ajouter dans /etc/profile
export HTTP_PROXY="http://login:pass@host_proxy:port_proxy/"
export HTTPS_PROXY="http://login:pass@host_proxy:port_proxy/"
export http_proxy="http://login:pass@host_proxy:port_proxy/"
export https_proxy="http://login:pass@host_proxy:port_proxy/"




* Pour un utilisateur
ajouter dans ~user/.profile
export HTTP_PROXY="http://login:pass@host_proxy:port_proxy/"
export HTTPS_PROXY="http://login:pass@host_proxy:port_proxy/"
export http_proxy="http://login:pass@host_proxy:port_proxy/"
export https_proxy="http://login:pass@host_proxy:port_proxy/"




* Pour un utilisateur, dans gnome
Menu Systeme / Préférences / Serveur Mandataire
Spécifier le proxy
Les modifications sont enregistrées dans ~user/.gconf/system dans les fichiers des répertoires http_proxy et proxy






* Gestionnaire de paquet Synaptic
Menu Configurer / Préférences / Réseau
Spécifier le proxy
Le proxy ici renseigné est également utilisé par le Gestionnaire de mise à jour. (Même s'il y n'ya pas de panneau de configuration de proxy dans le Gestionnaire de mise à jour)

jeudi, octobre 29, 2009

Maven 2 : Lifecyle & autres

Option pour lancer une tâche sans les tests :
mvn -DskipTests=true nom_task
(ne lance pas l'exécution des tests, ni leur compilation)

Cycle de vie :
Le cycle de vie par défaut est constitué de tâches successives. En appelant une des taches de ce cycle de vie, toutes les taches précédentes sont exécutées


Le cycle de vie par défaut de maven est le suivant :
  • validate - validate the project is correct and all necessary information is available
  • compile - compile the source code of the project
  • test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
  • package - take the compiled code and package it in its distributable format, such as a JAR.
  • integration-test - process and deploy the package if necessary into an environment where integration tests can be run
  • verify - run any checks to verify the package is valid and meets quality criteria
  • install - install the package into the local repository, for use as a dependency in other projects locally
  • deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. 

Cycle de vie en détail :

validate
validate the project is correct and all necessary information is available.
initialize
initialize build state, e.g. set properties or create directories.
generate-sources
generate any source code for inclusion in compilation.
process-sources
process the source code, for example to filter any values.
generate-resources
generate resources for inclusion in the package.
process-resources
copy and process the resources into the destination directory, ready for packaging.
compile
compile the source code of the project.
process-classes
post-process the generated files from compilation, for example to do bytecode enhancement on Java classes.
generate-test-sources
generate any test source code for inclusion in compilation.
process-test-sources
process the test source code, for example to filter any values.
generate-test-resources
create resources for testing.
process-test-resources
copy and process the resources into the test destination directory.
test-compile
compile the test source code into the test destination directory
process-test-classes
post-process the generated files from test compilation, for example to do bytecode enhancement on Java classes. For Maven 2.0.5 and above.
test
run tests using a suitable unit testing framework. These tests should not require the code be packaged or deployed.
prepare-package
perform any operations necessary to prepare a package before the actual packaging. This often results in an unpacked, processed version of the package. (Maven 2.1 and above)
package
take the compiled code and package it in its distributable format, such as a JAR.
pre-integration-test
perform actions required before integration tests are executed. This may involve things such as setting up the required environment.
integration-test
process and deploy the package if necessary into an environment where integration tests can be run.
post-integration-test
perform actions required after integration tests have been executed. This may including cleaning up the environment.
verify
run any checks to verify the package is valid and meets quality criteria.
install
install the package into the local repository, for use as a dependency in other projects locally.
deploy
done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

lundi, octobre 12, 2009

Webservice : style et encoding

Intro:
Le style et l'encoding qui caractérise un webservice définissent la façon dont un message SOAP sera construit en fonction de la wsdl.

Style : RPC ou Document
Encoding : Literal ou Encoded
Autre : Wrapped Document Literal



Type :
RPC/Encoded :
- Le message SOAP ne contiendra pas le nom de l'opération en tant que racine à l'intérieur du <soap:body>
- Le message SOAP doit contenir des attributs xsd définissant le type de chaque élément
(exemple : xsd:int)
- No WSI-Compliant
- Validation XSD peut aisée car le schéma XSD est éclatée dans la wsdl

RPC/Literal :
- Le message SOAP contient le nom de l'opération en tant que racine à l'intérieur du <soap:body>
- Le message SOAP ne contient pas des attributs xsd définissant le type de chaque élément
(exemple : xsd:int)
- WSI-Compliant
- Validation XSD peut aisée car le schéma XSD est éclatée dans la wsdl

Document/Encoded :
N'existe pas

Document/Literal
- Le message SOAP ne contient pas le nom de l'opération en tant que racine à l'intérieur du <soap:body>
- Le message SOAP ne contient pas des attributs xsd définissant le type de l'élément
(exemple : xsd:int)
- WSI-Compliant partiellement. Dû au fait qu'une des restrictions de la norme préconise de ne faire apparaitre dans le <soap:body> qu'un seul élément racine. Alors que le Document Literal ne fait pas figurer de nom d'opération et n'a donc pas d'élément racine dans le <soap:body>
- Validation XSD aisée

Wrapped Document/Literal
- Le message SOAP contient le nom de l'opération en tant que racine à l'intérieur du <soap:body>
Il s'agit en réalité d'un contournement du type Document/Literal. L'élément racine n'est en réalité pas vraiment le nom de l'opération comme dans un type RPC/Literal, mais est un wrapper qui porte le même nom que l'opération. (Ce qui revient au meme in fine!)
- Le message SOAP ne contient pas des attributs xsd définissant le type de l'élément
(exemple : xsd:int)
- WSI-Compliant
- Validation XSD aisée


Notes :

- Historiquement, le RPC-Encoded fut le premier à apparaitre et est le plus populaire.
Il permet d'écrire des wsdl les moins complexes
- Le type RPC-Encoded présente à machines équivalentes des performances moindre qu'un type Document/Literal
- Le type Wrapped Document Literal est une amélioration du type Document/Literal en paliant à ses défauts.


Source :
http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/
http://www.ibm.com/developerworks/webservices/library/ws-soapenc/

mardi, octobre 06, 2009

JBoss esb et JBoss Remoting gateway (jbr)

Pour chaque service ESB, une ou plusieurs gateway sont définies.

Pour une gateway HTTP attachée a un provider JBR définissant un bus HTTP, il faut a chaque fois déclarer un nouveau port.

Ce qui peut etre problématique (ouvrir de multiple port HTTP, par service ESB)

La version 4.6 de Jboss ESB ne prend pas en charge un routage basé sur l'url (type JBossWS)

Ce sera peut être pris en charge dans la version 4.7
https://jira.jboss.org/jira/browse/JBESB-1557

En attendant, voici une implémentation d'un nouveau ListenerGateway, qui prend en charge un routage basé sur l'url passée, l'authentification http, etc :
http://www.jboss.org/community/wiki/HTTPGatewayListenerConfiguration

lundi, septembre 14, 2009

JBoss ESB : archives, services, messages

Archive .esb
Fichier zip contenant tout ce qu'on retrouverait dans un fichier ear avec en sus
META-INF\jboss-esb.xml
META-INF\deployment.xml
fichier.war (optionnel)
etc...


Fichier jboss-esb.xml

Fichier descriptif de l'application esb. On y retrouve
* des BUS instanciés depuis des providers (HTTP, socket, JMS, ...)
* des services

Services
Un service de JBoss ESB défini
* des listeners gateway
* des listeners ESB-aware
* une sequence d'action

Les messages et listeners

- listeners qui lisent des messages au format ESB (dit listener ESB-Aware)
- listener dit "gateway" qui sont en charge de transformer le message recu de l'extérieur de l'ESB en message de type ESB.

--> Bus GATEWAY (ou EPR End Point Reference) --> LISTENER GATEWAY --> Bus ESB-Aware --> LISTENER ESB-Aware --> Service


Structure d'un message ESB (org.jboss.soa.esb.message)
  • Header: the header information contains information such as the destination EPR, the sender EPR, and where the reply goes--general message-level functional information.
  • Context: additional information that further explains the message; for example, transaction or security data, the identity of the ultimate receiver, or HTTP-cookie-like information.
  • Body: the actual payload of the message.
  • Fault: any error information associated with the message.
  • Attachment: any attachments (additional files) associated with the message.
  • Properties: any message specific properties (for example the jbossesb.message.id property is a unique value for each message.
XSD correspondant :

<xs:complexType name="Envelope">
<
xs:attribute ref="Header" use="required"/>
<
xs:attribute ref="Context" use="required"/>
<
xs:attribute ref="Body" use="required"/>
<
xs:attribute ref="Attachment" use="optional"/>
<
xs:attribute ref="Properties" use="optional"/>
<
xs:attribute ref="Fault" use="optional"/>