PROXY HTTP AVEC LE JOURNAL POUR CHAQUE UTILISATEUR

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 16 août 2006 à 13:22
souabni_yassine Messages postés 5 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 28 février 2009 - 20 janv. 2008 à 11:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39141-proxy-http-avec-le-journal-pour-chaque-utilisateur

souabni_yassine Messages postés 5 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 28 février 2009
20 janv. 2008 à 11:41
Bonjour,
je n'arrive pas a le faire fonctionner correctement,
je m'explique:

j'ai changé le chemin du raccourci,
j'ai corrigé comme prévu le .bat,
j'exécute, mon CPU s'affolle un peu
(sans doute à cause des threds...),
je clique sur demarrer,
j'ajoute une URL dans la blackListe,
j'ouvre mon naviguateur j'y insère l'url,
appuie sur entrée et là le site s'affiche
quand meme ...??

Il marche pour vous tous d'ares ce que je lis ....
Je loupe quelque chose c'est sur mais quoi???

besoin d'aide s'il vous plait.

-----------------Juste pour info----------------------
1)J'utilise une connexion bas débit avec modem
2)j'ai configuré mon navigateur I.E en y mettant
l'@ip du proxy (127.0.0.1).

est ce que le probleme est du au fait que je met
l'@ de la bcle locale comme @ proxy....????
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
21 août 2006 à 12:52
Cool un 'derivated work' de ma source ! lol

Bon courage ;-)
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
17 août 2006 à 15:00
Salut,

Bah de rien, je pense que c'est pour partager ton savoir et essayer d'evoluer que tu a posté cette source donc il n'y a pas de raison que l'on ne t'aide pas dans ce sens.


petite correction concernant la methode listImage(...) enfaite c'est un copier collé d'un de mes projet perso que j'ai en cours donc pour toi il est plus logique de la renomer en listFiles
cs_hoavinh Messages postés 11 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 17 août 2006
17 août 2006 à 14:52
Merci encore tes remarques!!!
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
17 août 2006 à 12:26
Salut,

il est normale que tu est ce genre d'erreurs vu que quand tu fais cmd.exe /c start "+path+"\" si le path contient des espaces il vont etre consideré comme des arguments et non comme fesant parti du path cela dit une solution pour eviter ça serait de les mettrent entre quotes soit cmd.exe /c start ""+path+""\".

ence qui concerner Runtime.getRuntime().exec("cmd.exe /c start "+path+"\" fichier.doc); il n'y a pas de vraie solution portable si tu concerve cette façon de faire ce pendand tu peux aisément remplacer ce bout de code par (vu que ce n'est pas un vrai .doc reste en .txt):

private void consul_journalActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_consul_journalActionPerformed
new FileViewer(this).setVisible(true);
}//GEN-LAST:event_consul_journalActionPerformed

ensuite il te faut changer la ligne 95 de Automatique.java par String pathTmp = FileViewer.PATH + File.separator + formatter.format(dateDuJour);
la ligne ~389 du fichier Fenetre.java par new File(FileViewer.PATH).mkdir();
la ligne ~360 du fichier Fenetre.java par String pathTmp = FileViewer.PATH + File.separator +formatter.format(dateDuJour);

et utiliser cette classe (un peut long mais tu reste portable comme ça (colle le code dans une classe que tu appels FileViewer.java)

package proxyserver;

import java.awt.Frame;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.DefaultListModel;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class FileViewer extends JDialog implements ListSelectionListener{

private static final long serialVersionUID = 3662231313575386271L;
public static final String PATH = System.getProperty("user.home")
+ File.separator
+ "Journal_Gestions_Utilisateurs";
private JSplitPane splitLeft = null;
private JSplitPane splitCenter = null;
private JList listFile = null;
private JList listDir = null;
private JTextArea textArea = null;

public FileViewer(){
super();
initialize();
}

public FileViewer(Frame owner){
super(owner, true);
initialize();
}

private void initialize(){
setSize(800, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setContentPane(getSplitCenter());

File file = new File(PATH);
if(!file.exists()) file.mkdirs();
DefaultListModel modelDir = (DefaultListModel)getListDir().getModel();
DefaultListModel modelFile = (DefaultListModel)getListFile().getModel();

File root = new File(PATH);
MFile mroot = new MFile(root.getName(),
root.getAbsolutePath(), root.getParent());
MFile.changeDir(modelDir, mroot);
MFile.listImage(modelFile, mroot);
}

/**
* Recuperation et initialisation de la liste contenant les repertoires
* @return listDir
*/
private JList getListDir() {
if(listDir == null){
listDir = new JList();
listDir.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listDir.addListSelectionListener(this);
listDir.setModel(new DefaultListModel());
}
return listDir;
}

/**
* Recuperation et initialisation de la liste contenant les fichiers
* @return listFile
*/
private JList getListFile() {
if(listFile == null){
listFile = new JList();
listFile.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
listFile.addListSelectionListener(this);
listFile.setModel(new DefaultListModel());
}
return listFile;
}

/**
* Recuperation et initialisation du split central
* Ce split contient le panel avec l'image et le slipt de choix du repertoire et de l'image
* @return splitCenter
*/
private JSplitPane getSplitCenter() {
if(splitCenter == null){
splitCenter = new JSplitPane();
splitCenter.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
//taille de la barre qui permet d'agrandire ou reduire la zone
splitCenter.setDividerSize(5);
//decoupe les sections a 70% de la taille pour avoir une meilleur repartition
splitCenter.setResizeWeight(0.3);
splitCenter.setRightComponent(new JScrollPane(getTextArea()));
splitCenter.setLeftComponent(getSplitLeft());
}
return splitCenter;
}

/**
* Recuperation et initialisation du split de gauche
* Ce split contient la liste des repertoires et la liste des images relatif au repertoire
* @return splitLeft
*/
private JSplitPane getSplitLeft() {
if(splitLeft == null){
splitLeft = new JSplitPane();
splitLeft.setOrientation(JSplitPane.VERTICAL_SPLIT);
//taille de la barre qui permet d'agrandire ou reduire la zone
splitLeft.setDividerSize(5);
//decoupe les sections a 50% de la taille pour avoir une meilleur repartition
splitLeft.setResizeWeight(0.5);
splitLeft.setLeftComponent(new JScrollPane(getListDir()));
splitLeft.setRightComponent(new JScrollPane(getListFile()));

}
return splitLeft;
}

/**
* Recuperation et initialisation de la liste contenant les fichiers
* @return textArea
*/
public JTextArea getTextArea() {
if(textArea == null){
textArea = new JTextArea();
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setEditable(false);
}
return textArea;
}

public void valueChanged(ListSelectionEvent e) {
if(e.getSource().equals(getListDir())){
Object obj = getListDir().getSelectedValue();
if(obj != null){//petit teste pour le fun
if(obj instanceof MFile){//petit teste pour le cast
MFile mfile = (MFile)obj;
DefaultListModel modelDir = (DefaultListModel)getListDir().getModel();
MFile.changeDir(modelDir, mfile);
//on rempli la liste contenant les fichers image si il y en a
DefaultListModel modelFile = (DefaultListModel)getListFile().getModel();
MFile.listImage(modelFile, mfile);
}
}
}else if(e.getSource().equals(getListFile())){//on affiche le text
Object obj = getListFile().getSelectedValue();
if(obj != null){//petit teste pour le fun
if(obj instanceof MFile){//petit teste pour le cast
MFile mfile = (MFile)obj;
String path = mfile.getAbsolutePath();
if(path != null && path.trim().compareTo("") != 0)//petit test pour eviter de faire le travail pour rien
MFile.readFile(getTextArea(), mfile.getAbsolutePath());
}
}
}

}

/**
* Cette classe permet une utilisation plus simple de la
* JListe contenant les repertoires elle permet egalement de remplire les listes
*
*/
public static class MFile {
public static final String RETURN_LABEL = "..";
private String name = "";
private String absolutePath = "";
private String parent = "";

public MFile(){
name = "";
absolutePath = "";
parent = "";
}

public MFile(String name, String absolutePath, String parent){
this.name = name;
this.absolutePath = absolutePath;
this.parent = parent;
}

/**
* @return Retourne le nom
*/
public String getName() {
return name;
}

/**
* Change le nom
* @param name le nouveau nom
*/
public void setName(String name) {
this.name = name;
}

/**
* @return Retourne le chemin absolue
*/
public String getAbsolutePath() {
return absolutePath;
}

/**
* Change le chemin absolue
* @param absolutePath le nouveau chemin
*/
public void setAbsolutePath(String absolutePath) {
this.absolutePath = absolutePath;
}

/**
* @return Retourne le parent ou null si l'on est deja dans un root dir
*/
public String getParent() {
return parent;
}

/**
* Change le parent
* @param parent le noveau parent
*/
public void setParent(String parent) {
this.parent = parent;
}

/**
* @return Retourne le nom
*/
public String toString(){
return getName();
}


/**
* Change le repertoire courrant
* @param model le model ou ajouter les entree
* @param mroot le root dir
*/
public static void changeDir(DefaultListModel model, MFile mroot){
model.clear();//on supprime toute les entre deja presente
if(mroot.getName().compareTo(RETURN_LABEL) == 0){//on demande un retour arriere
if(mroot.getParent() != null){//si il y a toujour un parent on reviens
File root = new File(mroot.getParent());
//ici on ajoute toujour le parent comme etant le parent du parent pour avoir un affichage logique
model.addElement(new MFile(RETURN_LABEL,
mroot.getAbsolutePath(), root.getParent()));
for(File f : root.listFiles())
if(f.isDirectory() && f.canRead()){
File parent = f.getParentFile();
//on ajoute le nouveau chemin
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), parent.getParent()));
}
}else{//si il n'y a plus de parents on liste les root dir
for(File f : File.listRoots())
//pour le root le nom doit etre le chemin
model.addElement(new MFile(f.getAbsolutePath(),
f.getAbsolutePath(), f.getParent()));
}
} else{//on continue notre chemin
File root = new File(mroot.getAbsolutePath());
model.addElement(new MFile(RETURN_LABEL,
mroot.getAbsolutePath(), mroot.getParent()));
for(File f : root.listFiles())
if(f.isDirectory() && f.canRead())
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), f.getParent()));
}
}

/**
* Ajoute les images a la liste image celon le root dir
* @param model le model ou ajouter les entree
* @param mroot le root dir
*/
public static void listImage(DefaultListModel model, MFile mroot){
model.clear();
File root = new File(mroot.getAbsolutePath());
for(File f : root.listFiles())//on teste tout les fichiers
//si c'est bien un fichier et que l'on peut lire l'image(question de droits)
if(f.isFile() && f.canRead() && f.getName().endsWith(".txt")){//le fichier est valide
File parent = f.getParentFile();
model.addElement(new MFile(f.getName(),
f.getAbsolutePath(), parent.getParent()));
}
}

public static void readFile(JTextArea area, String filename){
try {
BufferedReader buffInp = new BufferedReader(
new InputStreamReader(new FileInputStream(filename)));
String s = "";
String newLine = System.getProperty("line.separator");
while(true){
try {
s = buffInp.readLine();
if(s == null)//plus rien a lire
break;
area.append(s + newLine);
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

}
cs_larsson Messages postés 41 Date d'inscription dimanche 16 février 2003 Statut Membre Dernière intervention 8 juin 2007
17 août 2006 à 10:23
Hoavinh
beau boulot, pour une premiere sources.
je suis d'accord sur ce que Twinuts a dit, mais n'exagerons pas sur ces details, car on risque de passer a coté de la plaque. les details sont trés important, mais il ne faut pas planter là.
ciao j'ai bien apprécié la souce
cs_hoavinh Messages postés 11 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 17 août 2006
17 août 2006 à 10:21
saluit,
quand je teste System.getProperty("user.home");
//il affiche l'erreur: Windows ne trouve pas "C:\Documents" ....
Et tandis que le répertoire c'est "C:\Documents and Settings" ?? je comprends pas !!!!!!!!
cs_hoavinh Messages postés 11 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 17 août 2006
17 août 2006 à 10:16
Saluit,
Concerné la ligne du code
Runtime.getRuntime().exec("cmd.exe /c start "+path+"\");
Est ce que tu as d'autre méthode qui peut fonctionner sous windows et souw linux? si oui, montre-moi!!
Merci d'avance
cs_hoavinh Messages postés 11 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 17 août 2006
16 août 2006 à 18:57
merci,
quand Je fais le code, c'est dévelopé avec netbeans donc le ficher manifes c'est pas moi qui cree, je compte ça fontionne sous windows, pas rendu compte sous linux
Merci encore tes remarques
La connaisance appartient à tout le monde!
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
16 août 2006 à 18:41
"ce qui t'évite de rendre importable ta source sous d'autre os que windows et t'évite par la même occasion de pénaliser java ..."

je parle du Runtime.getRuntime().exec("cmd.exe /c start "+path+"\"); (cmd.exe n'existe pas sous les unix)
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
16 août 2006 à 18:38
Salut,

concernant mes remarques ci-dessus voici des solutions :

1 - change ton manifest par : (comme ca tu garde l'utilisation de java -jar ProxyServer.jar)
Manifest-Version: 1.0
Class-Path: lib/swing-layout-1.0.jar
X-COMMENT: Main-Class will be added automatically by build

2 -le répertoire : "C:\\Journal_Gestions_Utilisateurs"
tu peux faire :
public static final String path = System.getProperty("user.home") + File.separator + "Journal_Gestions_Utilisateurs";

même pour les utilisateurs windows le mieux c'est de ne pas le mettre a la racine mais soit
dans le home : System.getProperty("user.home");
dans le répertoire courant : System.getProperty("user.dir");
cela évite d'avoir des erreur si ils n'ont pas de disque C: mais exemple un D: (c'est rare mais ca arrive);

concernant tes \\ oublie et utilise File.separator qui reste portable
donc tu peux remplacer les lignes suivantes :

Fenetre.java
360 String pathTmp = path + "\"+formatter.format(dateDuJour);
par String pathTmp = path + File.separator +formatter.format(dateDuJour);

369 File fTmp new File(pathTmp+"\"+ AdrIp+".doc"); par File fTmp new File(pathTmp+File.separator+ AdrIp+".doc");

Automatique.java
96 String pathTmp Fenetre.path + "\" + formatter.format(dateDuJour); par String pathTmp Fenetre.path + File.separator + formatter.format(dateDuJour);
105 File fTmp new File(pathTmp+"\"+ AdrIp+".doc"); par File fTmp new File(pathTmp+File.separator+ AdrIp+".doc");

maintenant concernant la création du .doc pourquoi un .doc qui d'après ce que je vois de sa création n'en est pas vraiment un, pour quoi ne pas créer un .csv qui peut être ouvert même par excel (et OpenOffice) comme ça l'utilisateur peut avoir un vrai journal et le mettre en page comme il le faut et toi de ton coté pour le bouton consulter le journal bah tu nous ouvre une fenêtre contenant un JTable par exemple avec les données mise en page ce qui t'évite de rendre importable ta source sous d'autre os que windows et t'évite par la même occasion de pénaliser java ...
cs_hoavinh Messages postés 11 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 17 août 2006
16 août 2006 à 17:54
Saluit,
Comment tu peux faire avec d'autre façon?
Moi je suis encore débutant
cs_hoavinh Messages postés 11 Date d'inscription vendredi 19 août 2005 Statut Membre Dernière intervention 17 août 2006
16 août 2006 à 17:49
Saluit,
Je comprends pas trop tes remarques:"c'est vraiment gacher la puissance de java que d'ecrire de tel choses". Expliquez plus clairement STP!
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
16 août 2006 à 13:25
Salut,

autre remaque voir ce qui suit dans un code java ne donne meme pas envie de le tester c'est vraiment gacher la puissance de java que d'ecrire de tel choses

public static final String path = "C:\\Journal_Gestions_Utilisateurs"
Runtime.getRuntime().exec("cmd.exe /c start "+path+"\");
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
16 août 2006 à 13:22
Salut,

qd tu utilise un jar qui depends d'autre jar renseigne la balise Class-Path du fichier manifest et comme ca tu peux concerver les avantage de la commande java -jar monjar.jar et sous win tu conserve le double clic pour l'execution

le principe de cette balise est simple si tu as un jar en guise d'archive ton manifest ressemble à :

Main-Class: proxyserver.Fenetre
Class-Path: lib/swing-layout-1.0.jar

et si tu devais en avoir plusieurs il devra ressembler à :

Main-Class: proxyserver.Fenetre
Class-Path: lib/swing-layout-1.0.jar , jar2.jar , jar3.jar

IMPORTANT :
- Que tu sois sous win ou non ne met pas de \ dans ton manifest mais concerve les /
- les espaces avant et apres chaque virgule sont obligatoire
Rejoignez-nous