Vous n'êtes pas connecté.
Salut xavier,
Et bravo pour ton serveur web ZazouMiniWebServer qui m'a vraiment convaincu quand je l'ai essayé.
Je suis en train de développé un petite interface de chargement/paramètrage pour ZMWS (qui sera cadeau ici bientôt).
J'utilise pour cela la DLL "ZazouMiniWebServer.dll" qui permet de démarrer/arréter le serveur.
Ca marche bien mais avec PHP, j'ai des fenètres type "ligne de commande" qui s'affichent et disparaisent quand le serveur doit traiter une page PHP.
En fait, y'a 2 fenètres "php-cgi.exe" qui apparaissent et disparaissent aussitot pendant le chargement des pages PHP.
Je pensais que ça venait de mon code mais c'est la même chose avec ton appli "ZMWSMonitor.exe".
As-tu une idée de la source du problème ?
Enfin, j'ai réalisé quelques modifs (simplification, amélioration) dans le code source de ZMWS.
Comment ça se passer pour te faire passer tout ca ?
Je poste ici ou je t'envoie un mail ?
A+, Raph
Salut,
Merci d'avance pour ton travail.
Pour l'instant, le mieux est de m'envoyer un mail.
Les fenêtres php-cgi.exe n'apparaissent pas quand on travaille déjà dans une console mais effectivement en utilisant la dll oui. Il faut que je regarde ça, ce sera nécessaire de s'en occupper pour sortir une vraie version windows ...
On doit pouvoir s'en sortir et ajoutant STARTF_USESHOWWINDOW au dwFlags de CreateProcess et en positionnant wShowWindow à SW_HIDE (dans StartPHP)
A vérifier ...
Hors ligne
Dans un registre plus global, je pense qu'il faudrait pouvoir spécifier un pipe à utiliser pour les sorties habituellement redirigées vers la console. Pour faire un onglet ou une fenêtre "log" dans l'appli.
Qu'en penses-tu ?
a+
Hors ligne
Salut,
En mettant le code suivant dans la fonction StartPHP, les fenètres semblent disparaitre... Enfin je n'ai que Dev-cpp et c'est pas le top pour compiler la DLL.
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
Si tu pouvais intégrer ces 2 lignes et tenter de compiler une nouvelle DLL.
Sinon, ça serait cool d'ajouter une ou deux fonctions simples à la DLL pour récupérer le n° de port du serveur et le path des logs par exemple.
Pour le loader, ça me permettrait de récupérer ça du serveur sans avoir à parser une fois de + le fichier de config (quand il existe).
Pour ce qui est du pipe, je suis pas très familiariser à ce type de programmation, mais je vais me documenter un peu...
A+, Raph
Hors ligne
Merci pour le test, j'intègre ça dans la 0.8.14, que je sortirai pour php5.1.0 histoire de faire d'une pierre 2 coups.
Pour le pipe, c'est simple en fait au lieu d'écrire sur la console, j'écris dans un handle fourni par le prog qui charge la dll et la dll peut récupérer le contenu en lisant le handle de l'autre bout du pipe.
Pour la récupération de la config, je suis entièrement d'accord. Récupérer l'objet ZMWSConfig en lecture seule serait bien.
a+
Hors ligne
Salut,
J'ai mis en ligne mon petit loader pour ZMWS.
Il est dispo sur http://devplanete.free.fr/ avec une petite capture d'écran.
C'est seulement la première version et donc il manque des fonctions et il y a surement des bugs. Il faut bien commencer lol.
Pour développer la fonction d'accès à la config :
- soit la DLL me fournit les infos
- soit je parse le fichier de config
Si la DLL faisait le boulot (ça serait ça de moins à faire pour moi
) mais surtout c'est plus logique pour obtenir la configuration courante du serveur.
Pour l'instant le loader ouvre le fichier de log dans l'emplacement par défaut et ouvre la page web sur le port par défaut 80.
Il faudrait ajouter des fonctions simples dans la DLL pour retourner ces infos.
La fonction zmws_start par exemple pourrait retourner le n° de port du serveur quand il démarre correctement.
Dernière chose, quand on ouvre le fichier de log avec notepad (les sauts de lignes sont foireux). Ca me gène pas + que ça vu que j'utilise Notepad2 mais c'est pas méchant à modifier dans ton code pour corriger cela.
A+, Raph
Hors ligne
Salut !
Bravo pour le travail ...
Seulement voilà, il y a un problème de taille ... (ca rime en plus
)
Quand on démarre ZMWS, no problem, quand je rajoute dans la barre URL des noms de dossier pour aller à une page personelle, il marche ... Mais quand je demande de recharger la page, il réfléchi sans s'arrêter (il "cherche" la page depuis environ cinq minutes ...).
Je ne sais pas si c'est la DLL ou si c'est ZMWS_Loader qui foire, mais en tout cas, ça foire quand même ...
Bon courage donc,
++
Hors ligne
Salut,
Je ne l'ai pas testé encore mais:
- Oui, je remplace le n par un endl pour les logs. Ca devrait ainsi convenir à notepad.
- Je trouve dommage que tu ne diffuse pas les sources, mais c'est ton droit.
- J'ajouterai ce qu'il faut à la Dll pour la 0.8.14.
- Du joli boulot apparemment, je ferai un test ce midi je pense.
- Ca mériterait une entrée ici: http://www.xgarreau.org/forum5/?8
a+
Hors ligne
Salut,
Content que mon petit loader vous plaise
...
Je vais tester le problème de rechargement des pages mais à première vue, je pense plutôt pour un soucis de DLL (je me contente de démarrer/arrêter le serveur).
Pour les sources, je les diffuserais sûrement quand j'aurais organisé un peu mon code. C'est du C++ pur avec appel direct aux API Windows et traitement des messages donc un peu brouillon pour le moment.
A+, Raph
Hors ligne
Salut,
J'ai mis une dll mise à jour ici:
http://fichiers.xgarreau.org/zazouminiw … Server.dll
J'ai juste modifié les fins de lignes pour les logs et la structure STARTUP_INFO pour suppprimer les fenêtres php. J'ajouterai la config plus tard.
J'avais un plantage en quittant avec ta dll, avec celle ci, ça ne plante plus chez moi (Win2000).
Isaac, je n'ai pas réussi à reproduire ce que tu expliques et j'ai testé des pages statiques, du listing de répertoires et des fichiers php. Qu'as tu fais exactement ? Pour que je puisse le reproduire ?
a+
Hors ligne
Je note que endl ne plait pas plus à notepad que n, il lui faut peut être rn. C'est pénible, wordpad et webalizer sont très contents avec les autres
a+
Hors ligne
Exacte je pense que rn devrait plus plaire à Notepad.
Sinon, la modif de la structure STARTUP_INFO suppprime bien les fenêtres php.
Ca serait bien que tu ajoutes des informations de versions à la DLL (à l'EXE aussi d'ailleurs).
Car sans ça, c'est pas évident de différentier la nouvelle version de l'anciènne.
A+, Raph
Hors ligne
Complètement psychotique ce notepad ...
Pour les infos de version, au sens ressources, je me tate. Je pencherais plus pour un fonction.
Quoique, un HEAD / HTTP/1.0 sur le port 80 te donne la version
.
S'agissant d'un clic droit sur propriétés, ce serait effectivement plus pratique ...
a+
Hors ligne
Oui je pensais aux infos de version, au sens ressources...
C'est pratique pour identifier tout de suite la version qu'on utilise
Pendant que j'y suis, petite amélioration pour le fichier ZMWSCONFIG.cpp, dans le constucteur de la classe.
Tu peux remplacer ta série de 9 fois :
---------------------------------------------------------------------------------
if (!phpOK) {
pathToPHP = "php\php-cgi";
if ( ! ZMWSFileUtils::fileExists((pathToPHP+".exe").c_str())) {
pathToPHP = "";
} else {
phpOK = 1;
}
}.....
---------------------------------------------------------------------------------
Par cette boucle :
---------------------------------------------------------------------------------
const char* valid_pathToPHP[] = {
"php\php-cgi",
"c:\php\php-cgi",
"c:\php4\php-cgi",
"c:\php5\php-cgi",
"php5\php",
"php\php",
"c:\php\php",
"c:\php4\php",
NULL
};
/* Try to find php */
BYTE phpOK = 0;
WORD j = 0;
if ( ! ZMWSFileUtils::fileExists((pathToPHP+".exe").c_str())) {
while (valid_pathToPHP[j] && !phpOK) {
pathToPHP = valid_pathToPHP[j];
if ( ! ZMWSFileUtils::fileExists((pathToPHP+".exe").c_str())) {
pathToPHP = "";
} else {
phpOK = 1;
}
j++;
}
}
---------------------------------------------------------------------------------
Heu... sans les espaces ça rend pas très bien je sais.
La prochaine fois je t'enverrais des fichiers plutot
A+, Raph
Hors ligne
Bon, j'ai ajouté une version pour la dll ...
Je n'ai pas changé les endl en rn, tant pis pour notepad pour l'instant.
J'ai ajouté zmws_get_config, on l'utilise comme ça:
http://fichiers.xgarreau.org/zazouminiw … onsole.cpp
Sachant qu'on récupère une struct définie comme ça:
struct BaseZMWSConfig
{
int port;
std::string BindAddr;
std::string documentRoot;
std::string logsDir;
std::string pathToConfigFile;
std::string pathToPHP;
std::string defCharSet;
std::string startPages;
std::string allowFrom;
DWORD maxClients;
BOOL hideConsole;
BOOL try808xPorts;
BOOL canIndex;
BOOL beQuiet;
BOOL canStop;
BOOL closeBrowser;
BOOL reverseDNS;
BOOL writeLogs;
BOOL browseNow;
BOOL dropClients;
};
a+
Hors ligne
Bon travail,
Je vais regardé ça de + prêt et faire évoluer ZMWS Loader en conséquence.
PS : tu as réussi à récupérer ma modif de code ci-dessus ou tu veux que je t'envois mon fichier ZMWSCONFIG.cpp
A+, Raph
Hors ligne
J'ai quelques soucis lors de l'exécution de :
zmws_get_config(&zmws_config);
Tout ce compile bien sous Dev-C++, les fonctions sont bien liées à la DLL mais quand le programme arrive sur zmws_get_config(&zmws_config) ça plante...
Bizzard, je vais essayer de chercher un peu + mais je voulais te prévenir.
Hors ligne
Ca doit venir du fait que c'est une liaison C et que dans la structure il y a des std::string.
Avec VC ça passe (as tu essayé ZMWS_Console ?)
Je réécrirai ça en char* ou char[MAX_PATH_LEN]
Pour ta modif, je ne l'ai pas encore intégrée mais oui, je la récupèrerai ici.
a+
Hors ligne
Après avoir posté mon message hier, j'ai essayé avec un char[255] à la place du std::string.
Ca plantait plus mais impossible de récupérer les valeurs de config de type string.
Je vais essayer avec ZMWS_Console pour voir si ça fait pareil.
A+
Hors ligne
Salut Xavier,
Je viens de voir que je t'avais pas répondu...
Mais j'ai bien les mêmes problèmes avec ZMWS_Console.
Pour ne plus avoir de soucis, je pense egalement que dans ta structure BaseZMWSConfig, il faut remplacer les std::string par un char* ou par un char[n] qui seraient + portable.
A+ Raph
Hors ligne
C'est fait, désolé, je n'ai pas posté pour le signaler ...
void ZMWSConfig::GetCBaseConfig(CBaseZMWSConfig* conf) const {
(*conf).port=port;
(*conf).BindAddr=strdup(BindAddr.c_str());
(*conf).documentRoot=strdup(documentRoot.c_str());
(*conf).logsDir=strdup(logsDir.c_str());
(*conf).pathToConfigFile=strdup(pathToConfigFile.c_str());
(*conf).pathToPHP=strdup(pathToPHP.c_str());
(*conf).defCharSet=strdup(defCharSet.c_str());
(*conf).startPages=strdup(startPages.c_str());
(*conf).allowFrom=strdup(allowFrom.c_str());
(*conf).maxClients=maxClients;
(*conf).hideConsole=hideConsole;
(*conf).try808xPorts=try808xPorts;
(*conf).canIndex=canIndex;
(*conf).beQuiet=beQuiet;
(*conf).canStop=canStop;
(*conf).closeBrowser=closeBrowser;
(*conf).reverseDNS=reverseDNS;
(*conf).writeLogs=writeLogs;
(*conf).browseNow=browseNow;
(*conf).dropClients=dropClients;
}
Naturellement, c'est à toi ensuite de libérer la mémoire pour les champs obtenus par strdup.
a+
Hors ligne
Salut,
Je viens de mettre en ligne une nouvelle version de ZMWS Loader, estampillée version 0.2
Voici le changelog :
- Le bouton Localhost démarre maintenant sur la page par défaut et sur le port du serveur ZMWS.
- Le bouton Afficher les logs ouvre les logs à partir de l'emplacement spécifié dans la configuration.
- Ajout de la fenêtre Configuration de ZMWS qui affiche les différents paramètres du serveur Web.
- Nouvelle fenêtre A propos de... qui donne la version de ZMWS Loader mais aussi de la DLL ZazouMiniWebServer. De plus un lien cliquable vers le site Internet des 2 applications est disponible.
- Les boutons Start et Stop sont grisés en fonction de l'état du serveur.
- Le menu s'adapte maintenant à la police de caractère utilisée sur le client.
Tout est dispo sur http://devplanete.free.fr/ avec des captures d'écran des nouvelles fenêtres.
N'hésitez pas à faire vos commentaires
A+, Raph
Hors ligne
En ce qui me concerne, ça plante au premier double click:
XP Familial SP2
a+
Hors ligne
Bizarre, j'ai moi aussi XP Familial SP2.
Ca plante dès que tu lances le programme ?
Tu n'as pas de message d'erreur ?
Est-ce que l'icone de ZMWS Loader apparait à coté de l'heure ?
J'ai supprimé quelques lignes de codes suspéctes et j'ai mis sur http://devplanete.free.fr/ un nouveau EXE version 0.2.0.1
Tu lances le programme à partir de quel répertoire ?
Est-ce que tu as téléchargé le ZIP de mon site avec la DLL v0.8.13.2 ou tu utilises une DLL que tu avais déjà ?
Essaye de lancer l'EXE sans DLL dans le même répertoire pour voir si tu as bien un message d'érreur.
Oula... ça fait pas mal de questions tout ca
A+, Raph
Hors ligne
Y'a personne d'autre qui a essayé la version 0.2 et qui pourrait me dire si ca plante aussi chez lui...
Je comprend pas comment ça peut planter sans message d'erreur (enfin bon, c'est les joies de l'informatique quoi...)
A+, Raph
Hors ligne