Atomic web Serveur (Unicode)
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Atomic web Serveur (Unicode)
C'est impressionnant cette page CSS, avec même un test inclus
Le WEB ça va vraiment très vite, pour moi le CSS la dernière fois que je me suis penché dessus c'était une liste d'instructions imbuvables.
Peut être qu'un jour j'arriverais à aimer le WEB....
Merci de ton sujet et de ce lien
Le WEB ça va vraiment très vite, pour moi le CSS la dernière fois que je me suis penché dessus c'était une liste d'instructions imbuvables.
Peut être qu'un jour j'arriverais à aimer le WEB....
Merci de ton sujet et de ce lien
Re: Atomic web Serveur (Unicode)
Mort pour le momentfalsam a écrit : Lien pour rappel : http://109.13.115.206:6832/index.html
Sinon je suis un peu babé sur ce coup.
Pourriez vous faire un exemple concret avec les variables adéquate.
Une fois que l'atomic web est lancé. Comment gère-t-il le contenu de la page index par exemple ?
Un input qui demande un NOM et selon la réponse renvoyée afficher Bienvenu admin si le NOM est admin ou "DESOLE MAUVAIS NOM" si la réponse n'est pas admin.
J'espère ne pas être à coté de la plaque mais j'avoue ne pas saisir le fonctionnement de la bête entre traitement local et en ligne.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Atomic web Serveur (Unicode)
Pfiou, c'est du boulot d'expliquer tout ça. Tu connais un peu le client/serveur, les requêtes http put/get ou pas du tout?
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Atomic web Serveur (Unicode)
De nouveau en ligne. Je coupe mon serveur le soir et je ne relance pas systématiquement.Ar-S a écrit :Mort pour le moment
Voici un extrait de la page index.html dans laquelle se trouve deux variables {{userip}} pour l'adresse IP et {{countviews}} pour le compteur de vues.Ar-S a écrit :Une fois que l'atomic web est lancé. Comment gère-t-il le contenu de la page index par exemple ?
Code : Tout sélectionner
<!-- Show client ip -->
...
<div class="w3-center">
<p>Votre adresse ip <strong>{{userip}}</strong></p>
</div>
....
<!-- Footer -->
<div class="w3-bottom">
<p class="w3-padding-medium">Powered by <a href="http://www.w3schools.com/w3css/default.asp" target="_blank">w3.css</a>
& <a href="http://purebasic.fr" target="_blank">PureBasic</a>
- {{countviews}} views</p>
</div>
Code : Tout sélectionner
*BufferOffset
Code : Tout sélectionner
BufferOffset = PeekS(*BufferOffset, -1, #PB_UTF8)
Code : Tout sélectionner
Result = ReplaceString(BufferOffset, "{{userip}}", IPString(GetClientIP(ClientID))) : BufferOffset = Result
Result = ReplaceString(BufferOffset, "{{countviews}}", Str(CountViews\count))
je n'ai pas encore traités les données POST mais j'ai mon idée sachant que le serveur est capable de reconnaître la page demandée.Ar-s a écrit :Un input qui demande un NOM et selon la réponse renvoyée afficher Bienvenu admin si le NOM est admin ou "DESOLE MAUVAIS NOM" si la réponse n'est pas admin.
Parser une chaine connect.html?login=admin&password=1234 n'est pas compliqué
Etant encore en phase de test je ne publie pas encore le code.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Atomic web Serveur (Unicode)
Merci, c'est déjà une bonne base qui m'a décanté le cerveau.
ça reste pas simple tout de même...
Ton code tu le mets dans le fichier atomic ou tu l'insères via un include ?
@Djes
client/serveur on va dire que je connais le principe.
Le client interagit sur une page (form, jeu etc..), tout est balancé au serveur qui traite, valide et renvois les nouvelles données ?
J'ai ma page web
Mon CSS: ars.css
Si tu as le temps de coder l'atomic pour l'exemple.
Merci
ça reste pas simple tout de même...
Ton code tu le mets dans le fichier atomic ou tu l'insères via un include ?
@Djes
client/serveur on va dire que je connais le principe.
Le client interagit sur une page (form, jeu etc..), tout est balancé au serveur qui traite, valide et renvois les nouvelles données ?
J'ai ma page web
Code : Tout sélectionner
<!DOCTYPE html>
<html>
<head>
<link href="ars.css" rel="stylesheet" />
<title>Atomic Web Server Ar-S Test</title>
</head>
<body>
<div class="titre"> Atomic Web Server (<em>Unicode</em>) </div>
<p style='text-align:center'>Ceci est la première page de votre site web. / This is the first page of your website.</p>
<p> IP : {{userip}} - Visite : {{countviews}}
</body>
</html>
Code : Tout sélectionner
<style type="text/css">
body{ text-align:center; font-size:12px; background-color:#A3B0C8; min-width:960px; }
.titre{ background-color:#A3B0C8; position:relative; width:960px; text-align:center; margin:0 auto; height:35px; font-size:24px; text-shadow: 1px 1px #dddddd;}
</style>
Merci
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Atomic web Serveur (Unicode)
Ta page web ne demande rien de dynamique au serveur. C'est une page "statique", le serveur va l'envoyer telle quelle, éventuellement tu peux le programmer pour qu'il repère dans le code source certaines choses et qu'il les modifie avant de l'envoyer... Non, pour faire un formulaire, il faut au moins que tu aies la balise <form> qui permet d'interroger le serveur. C'est la base. Pour aller plus loin, on a, à partir du javascript et d'extensions des navigateurs, créé l'AJAX (j'imagine déjà les commentaires de KCC...). Ça permet de créer une page dynamique, qui va interroger régulièrement le serveur, et se modifier en fonction des réponses. Javascript est le langage "client" qui modifie la page. Le serveur est le même, il attend une requête, et envoie une réponse, comme d'habitude.
Le fait que le serveur soit programmé en Purebasic, plutôt qu'en C ou en Java n'a aucune importance, du moment qu'il sait recevoir des requêtes HTTP et envoyer des réponses HTTP. Et ça, c'est juste un protocole, un langage. Il suffit de créer un programme qui sait comprendre certaines commandes et répondre de la bonne façon, comme le fait l'atomic web server.
Quant au CSS, ce n'est qu'une façon pratique de formater les éléments d'une page, c'est une feuille de style. On nomme les styles, on peut les utiliser x fois dans un document, et quand on change le style, toutes les occurrences sont changées automatiquement. Le CSS permet en outre de redéfinir toutes les balises HTML, un peu comme si à chaque fois qu'on utilisait print(), on écrivait en rouge ou en vert selon un fichier de préférences...
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Atomic web Serveur (Unicode)
A chaque lecture de page HTML, Atomic Web Server récupère la page à lire contenue le buffer de lecture en testant ce qui se trouve après "GET /". Exemple : GET /index.html HTTP/1/1
Le code d'extraction est celui-çi : https://github.com/falsam/AtomicWebServ ... pb#L78-L87
Contrainte : Dans une prochaine version des variables pourraient être incluses
Exemple : GET /index.html?login=admin&password=1234 HTTP/1/1
Exemple de ce que peut contenir la variable Buffer.s
- Simplifier la procédure d'extraction,
- Continuer à stocker la page à lire dans la variable RequestedFile
- Stocker les variables reçus (Si variables) dans la variable RequestedVariable.
Merci de votre aide.
Le code d'extraction est celui-çi : https://github.com/falsam/AtomicWebServ ... pb#L78-L87
Contrainte : Dans une prochaine version des variables pourraient être incluses
Exemple : GET /index.html?login=admin&password=1234 HTTP/1/1
Exemple de ce que peut contenir la variable Buffer.s
GET /index.html HTTP/1.1
Host: 109.13.115.206:6834
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
GET /style.css HTTP/1.1
Host: 109.13.115.206:6834
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/css,*/*;q=0.1
Referer: http://109.13.115.206:6834/index.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
J'aimerais pouvoir :GET /favicon.ico HTTP/1.1
Host: 109.13.115.206:6834
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: image/webp,image/*,*/*;q=0.8
Referer: http://109.13.115.206:6834/index.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
- Simplifier la procédure d'extraction,
- Continuer à stocker la page à lire dans la variable RequestedFile
- Stocker les variables reçus (Si variables) dans la variable RequestedVariable.
Merci de votre aide.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Atomic web Serveur (Unicode)
J'ai finalement remplacé par
Code : Tout sélectionner
;Extract page html from GET /yourpage.html HTTP/1.1
MaxPosition = FindString(Buffer, Chr(13), 5)
Position = FindString(Buffer, " ", 5)
If Position < MaxPosition
RequestedFile = Mid(Buffer, 6, Position-5) ; Automatically remove the leading '/'
RequestedFile = RTrim(RequestedFile)
Else
RequestedFile = Mid(Buffer, 6, MaxPosition-5) ; When a command like 'GET /' is sent..
Code : Tout sélectionner
RequestedFile = Trim(Mid(StringField(Buffer, 1, "HTTP"), 6))
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Atomic web Serveur (Unicode)
Oui voilà, c'est juste une recherche et extraction de chaîne. Mes codes datent, et sont bourrés de trim, de stringfield et autres. Sinon, une url est toujours formée de la même façon, alors ce n'est pas trop dur. Ensuite il faut repérer les &, le ?, les =
Il doit y avoir un code quelque part pour traiter une requête post.
Il doit y avoir un code quelque part pour traiter une requête post.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Atomic web Serveur (Unicode)
Merci djes. je suis en mode decryptage de cet exemple qui je le rappelle est fourni avec PB.
Voila qui m'interpelle et peut être que tu peux me répondre. Pourquoi avant de faire appel à la procédure BuildRequestHeader() on ajoute 200 à la taille de *FileBuffer
FileLength contient la taille de la page à envoyer au client
Rappel de la procédureAu final *FileBuffer ne contient rien à par #CRLF ? ^^
Voila qui m'interpelle et peut être que tu peux me répondre. Pourquoi avant de faire appel à la procédure BuildRequestHeader() on ajoute 200 à la taille de *FileBuffer
FileLength contient la taille de la page à envoyer au client
Code : Tout sélectionner
*FileBuffer = AllocateMemory(FileLength + 200) ;MemoryStringLength(@ContentType))
*BufferOffset = BuildRequestHeader(*FileBuffer, FileLength, ContentType)
Code : Tout sélectionner
Procedure BuildRequestHeader(*FileBuffer, FileLength, ContentType.s)
Protected Length
Protected Week.s = "Sun, Mon,Tue,Wed,Thu,Fri,Sat"
Protected MonthsOfYear.s = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"
Protected DayOfWeek.s = StringField("Sun, Mon,Tue,Wed,Thu,Fri,Sat", DayOfWeek(Date()) + 1, ",")
Protected Day = Day(Date())
Protected Month.s = StringField("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", Month(Date()), ",")
Protected Year.s = Str(Year(Date()))
Protected Time.s = FormatDate("%hh:%ii:%ss GMT", Date())
Length = PokeS(*FileBuffer, "HTTP/1.1 200 OK" + #CRLF$, -1, #PB_UTF8) : *FileBuffer + Length
Length = PokeS(*FileBuffer, "Date: " + DayOfWeek + ", " + Day + " " + Month + " " + Year + " " + Time + #CRLF$, -1, #PB_UTF8) : *FileBuffer + Length
Length = PokeS(*FileBuffer, "Server: "+ Title + #CRLF$, -1, #PB_UTF8) : *FileBuffer + Length
Length = PokeS(*FileBuffer, "Content-Length: " + Str(FileLength) + #CRLF$, -1, #PB_UTF8) : *FileBuffer + Length
Length = PokeS(*FileBuffer, "Content-Type: " + ContentType + #CRLF$, -1, #PB_UTF8) : *FileBuffer + Length
Length = PokeS(*FileBuffer, #CRLF$, -1, #PB_UTF8) : *FileBuffer + Length
ProcedureReturn *FileBuffer
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Atomic web Serveur (Unicode)
il me semble me souvenir, que les '+200' sont la pour éviter un débordement possible du buffer
c'est une securité juste pour eviter un depassement de memoire ...
je dis ça de memoire ...
c'est une securité juste pour eviter un depassement de memoire ...
je dis ça de memoire ...
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Atomic web Serveur (Unicode)
Allons bon !! Est que cela voudrait dire que si je faisZorro a écrit :il me semble me souvenir, que les '+200' sont la pour éviter un débordement possible du buffer
c'est une securité juste pour eviter un depassement de memoire ...
Code : Tout sélectionner
FileLength = Lof(0)
/me est perplexe et perturber
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Atomic web Serveur (Unicode)
on avait deja abordé le sujet a propos de Allocatememory
http://www.purebasic.fr/french/viewtopi ... Memory+bug
une histoire d'unicode (encore ) et de caractere de fin de chaine ..
http://www.purebasic.fr/french/viewtopi ... Memory+bug
une histoire d'unicode (encore ) et de caractere de fin de chaine ..
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Atomic web Serveur (Unicode)
Je l'avais oublié ce topic qui me remémore ces soucis d'allocation mémoire. Merci pour ce rappel. Je vais relire.Zorro a écrit :on avait deja abordé le sujet a propos de Allocatememory
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- JohnJohnsonSHERMAN
- Messages : 648
- Inscription : dim. 13/déc./2015 11:05
- Localisation : Allez, cherche...
- Contact :
Re: Atomic web Serveur (Unicode)
C'est un probléme que j'ai eu aussi sur ma version de serveur Web... A mon avis, le +200 est là pour laisser de la place au header qui se met au début du buffer, avant le fichier.... Et on ne peut pas connaître par avance la taille du header... D'ou ce +200 qui laisse de la place au header en début de buffer.
On pourrait faire plus propre avec des CopyMemory()...
On pourrait faire plus propre avec des CopyMemory()...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
Votre expert national en bogage et segfaults.
CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
- Windows 10 x64 - PB 5.61 x64
- Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé