PyGitWeb v0.1 is released !

Ça y est la première release de PyGitWeb est sortie!

Il s’agit de la version 0.1.

Elle est stable mais ne propose qu’un nombre limité de fonctionalités.

Fonctionalités :

  • Vue principale :

On affiche la liste des dépôts du serveur avec leur dernier commit. Si on clique sur l’un des dépôt on ouvre la vue vue détaillée du dépôt.

  • Vue détaillé d’un dépôt :

On affiche un menu sous le dernier commit. Ce menu permet d’aller dans le répertoire du dépôt (pratique si c’est un site web), d’afficher la liste des commits et leurs détails, et d’afficher le diff s’il y a eu des modifications depuis le dernier commit.

Démo et download :

Si vous voulez le tester ou le télécharger (lien en bas de la page) : http://pygitweb.julienpecqueur.com.

About Julien

Unix, code & web from Picardie!
This entry was posted in Archlinux, Asus EeeBox, Code, Debian, Linux, PyGitWeb, Python 2, XHTML+CSS. Bookmark the permalink.

3 Responses to PyGitWeb v0.1 is released !

  1. Comme tu fais appelle directement aux commandes git, je me suis permis de faire une petite vérification du code niveau sécurité. Je n’ai pas trouvé de problème au niveau de l’exécution des commandes, par contre j’ai trouvé un petit problème de Cross-Site Scripting dans le titre de la page.

    Exemple : http://78.232.69.135/dev/pygitweb/PyGitWeb.py?repo=%3C/title%3E%3C/head%3E%3Cbody%3E%3Cscript%3Ealert%28%27xss%27%29%3C/script%3E&alone=no

    Il faudrait faire un encodage des caractères spéciaux html avant de les inclure dans la page.

  2. Julien says:

    Merci de l’info!

    J’ai fait un patch rapide pour bloquer les balises dans l’url :

    diff –git a/PyGitWeb.py b/PyGitWeb.py
    index 047c57f..3b55c78 100755
    — a/PyGitWeb.py
    +++ b/PyGitWeb.py
    @@ -141,6 +141,7 @@ class WebPage:
    if self.url.debug == “yes”:
    self.content.append(“

    “)
    self.content.append(“DEBUG: “+self.url.url+”
    “)
    + self.content.append(“DEBUG: “+str(cgi.FieldStorage())+”")
    self.content.append(“

    “)
    # Loop on each repo extracted :
    for res in self.brut:
    @@ -217,7 +218,10 @@ class WebPage:
    line = ““+line[0:-1]+”
    self.content.append(line)
    self.content.append(“")
    -
    + if len(self.brut) < 1:
    + self.content.append("

    ERROR !
    Log: " \
    + +str(cgi.FieldStorage())+"")
    +
    def render(self):
    """ Render the web page """
    for line in self.page:
    @@ -264,7 +268,8 @@ class Url:
    """ Gets http parameters (GET). """
    para = cgi.FieldStorage()
    # repo - name of the active repo :
    - if para.has_key("repo"):
    + if para.has_key("repo") and not \
    + ("< " in para["repo"].value or ">" in para["repo"].value):
    self.repo = para["repo"].value
    else:
    self.repo = None

  3. Julien says:

    Version fix sécurité disponible : v0.1.1 sur http://pygitweb.julienpecqueur.com

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>