Archive

Archive for August, 2010

phpxml2form, or how to quick-build an HTML form from any XML document

August 25, 2010 2 comments

I’ve been trying to find the kind of PHP library that allows you to quick-generate an HTML form a basic XML structure. Apparently there is no such thing, so here you can find some code that will help you do that (you still have to build the form tags from outside the function). This code is LGPL

/**
 * This function builds and prints an HTML form from a given XML Element (loaded by simplexml_load_file())
 * @param    object    A SimpleXML object
 * @param    int        Iteration (to know what level of recursivity we're in and print margins accordingly)
 * @param    string    The basename (prefix) to use for the input names
 * @example
 * $xml = simplexml_load_file($xml_file_path);
 * echo '<form action="" method="POST">';
 * xml2form($xml);
 * echo '<input type="submit" name="submit" value="Submit">';
 * echo '</form>';
 */
function xml2form($xml,$iter=0,$basename='') {
 global $attributes_non_editable; // an array of elements to "disable" in the form
 $s = '- '; // the symbol to repeat to show a tree-like structure
 foreach ($xml->children() as $c) {
  $n = $c->getName();
  $id = 0;
  $attribs = '';
  if ($c->attributes()) {
   foreach ($c->attributes() as $k => $e) {
    if ($k == 'id') {
     $id = $e;
    }
    $attribs .= str_repeat($s,$iter+1).'<label for="'.$basename.'['.$n.']['.$id.']['.trim($k).']">'.trim($k).'</label>';
    $dis = '';
    if (in_array($k, $attributes_non_editable)) {
     $dis = 'disabled="disabled"';
    }
    $attribs .= '<input type="text" name="'.$basename.'['.$n.']['.$id.']['.trim($k).']'.'" value="'.trim($e).'" '.$dis.' />';
    $attribs .= '<br />';
   }            
  }
  if (!empty($n)) {
   echo str_repeat($s,$iter).'<label for="'.$basename.'['.$n.']['.$id.']'.'">'.$n.'</label>';
   echo '<br />';
  }
  if ($c->children()) {
   echo $attribs;
   if (empty($basename)) {
    xml2form($c,$iter+1,$n.'['.$id.']');
   } else {
    xml2form($c,$iter+1,$basename.'['.$n.']['.$id.']');
   }
   echo '<br />';
  } else {
   if (isset($c[0])) {
    echo '<input type="text" name="'.$basename.'['.$n.']['.$id.']'.'" value="'.trim($c[0]).'" /><br />';
   }
   echo $attribs;
  }
  echo "\n";
 }
 if ($iter == 2) { echo '<hr />';}
 return true;
}

Many things can be improved (styling-wise) and it would be better with a function to wite the XML as well, but this should be enough for now…

Conferencia certificación Zend PHP5

August 21, 2010 Leave a comment

Las diapositivas de la conferencia sobre la certificación Zend PHP5 dado en la Universidad San Martin de Porres durante el V Freedom Open Source Day se pueden descargar siguiendo este enlace.

Categories: Conferences, php, PHP Perú, Spanish Tags: , ,

Drupal 6: embedding just about any content securely

August 17, 2010 3 comments

Introduction: the requirements

A customer of ours wanted a website which could manage the integration of just about any external content (meaning video, audio, images, but also Google docs, slides from Slideshare and books from Scribd) in a ‘Resource’ content type. There are multiple ways to do this in Drupal, however there are lots of possible pitfalls.

The possible solutions

I investigated and looked at the following solutions:

  • The Embedded Media Field module: the module creates CCK field types that allow you to add EITHER video, audio or image from different content providers. The module has the following problems however:
    • It creates 3 CCK field types: Embedded Audio Field, Embedded Video Field and Embedded Image Field. There is a patch here that creates an Embedded generic field which supports all media types, however the patch didn’t work in my case.
    • You can “only” embed audio, video and images, so if you want to embed more (like Slideshare or Google Docs content), you will have to find another solution.
    • Each time you want to add a new provider, if it’s not already provided as a Drupal module, you have to write a small module.
  • The Media module will be THE media embedding solution in the future, however, at the time of writing this article, it is still unstable and under heavy development.
  • Finally, the last solution that came to my mind was to allow users to simply embed some HTML code within a Resource. They would simply go to their YouTube video or Slideshare slides or whatever and copy and paste the embed code provided by the website, and all done.

Security pitfall: what NOT to do

It would be very tempting for someone who doesn’t know about Cross site scripting to simply allow his users to use “Full HTML” within their posts. That would allow your users to embed about anything however they want to embed it, without further configuration needed. However, for obvious reasons if you know about cross site scripting issues, you do not want to allow that, and you want to find a more secure way of doing it.

The modules

In order to do it securely, you will basically need one single module: Embed filter. This module filters various embed tags (embed, object and script) based on a hostname, so for example you can say that you allow your users to embed anything that comes from youtube.com, but you won’t allow them to embed from any other website. This solves the cross site scripting issues while still allowing your users to embed just about anything.

If you want to configure it in the same way that I’m going to show you in the following lines, you will also need the Better Formats module.

How to configure it ?

First, you obviously need to create a ‘Resource’ content type. Allow your resource to have a Title and a Description.

Then, in your resource content type, create a text field labeled Embed HTML for example.

Then, you will need to create a new Input format. Site configuration > Input formats > Add input format. I called mine Filtered HTML with embed. When you configure it, make sure you activate the Object and embed tag filter which should be present if you have the Embed filter module activated. Also, when you configure it, make sure you allow the <object>, <script>, <embed> and <param> tags in the configuration of the HTML filter.

Then, you will need to allow your users to use this new format. Once you have done this, you will see that your users will be prompted to choose between the Filtered HTML format or the Filtered HTML with embed format. What you probably want is to remove this prompt, and allow the Filtered HTML with embed for the Embed HTML CCK field you created, but only allow the Filtered HTML format for the other fields (like the Description of the resource for example). This is where the Better Formats module kicks in.

Go to Input Formats and in Settings, check “Control formats per node type”. Then, you will need to apply this patch to the Better Formats module. Then go to your Modules list and activate the “Better Formats additional CCK text widgets” module. Go back to your resource content type and edit the ‘Embed HTML’ field you created. Click on ‘Change basic information’ and choose ‘Text field using Better Formats module’ as the Widget type. In the configuration of the field, you should now see an ‘Input format settings’ collapsible box. Only allow the ‘Filtered HTML with embed’ in the list of allowed formats.

Finally, in order to remove those collapsible boxes that allow users to choose their input format, go to the User permissions list and, in the ‘better_formats module’, uncheck the permission to ‘collapsible format selection’.

Configuring the embed filter module

Finally, you will need to configure the embed filter module. Go to Site configuration > Embed filter and add whatever allowed hosts you want to allow in the list. Be careful as, sometimes, some providers do not host their content at the same address as their site. For example, if you want to allow Slideshare, you need to add slidesharecdn.com in your allowed hosts instead of slideshare.com.

Also note that if you want to allow img tags or iframe tags (Google uses iframes to embed their presentations and google docs), you will need to apply this patch to the embed filter module.

Conclusion: or help Media…

You can either do what’s explained in this article, or help the development of the Media module, because everything I wrote in this article will become obsolete when the Media module becomes stable. So waiting and helping the development of the Media module can also be a good option…

Drupal 6 Calendar: case study

August 5, 2010 8 comments

Introduction: the requirements

A customer wanted a website with some event management that would include:

  • A public, general calendar with all of the events
  • A per-group calendar for each group of users that would display the group events
  • The possibility for group members to create private events, accessible only to the other group members
  • A per-user calendar that would display the events created by a specific user
  • The possibility for users to create private events, that would be displayed only in their calendar and not viewable by any other user

I believe this set-up can be quite common for any relatively large social website, but I didn’t find any extensive documentation for it.

What NOT to do: the event and OG Calendar module

At first, I thought about installing the Event module, along with the OG Calendar module for the per-group calendars and the Calendar module for the per-user and public calendars. Turns out this is a bad idea, and there are many reasons why:

  • The Calendar and Event modules don’t go together: Calendar is based on Views, while Event isn’t. Even when using Event Views, the Calendar module can not display events coming from the Event module (or I missed something, which is possible).
  • The Calendar and Event modules have two different ways of displaying their calendar, which would be double work for the designer if you were to use both modules
  • The OG Calendar module is no longer being maintained

The modules

Here is the list of modules I needed to realize the setup:

  • Calendar
  • CCK: obviously needed, to create a node of type Event, you should already have it installed
  • Views: required by Calendar, you should already have it installed
  • Organic groups: this should be part of your installation as well, if you need a per-group calendar
  • Private: to allow users to create private events

Understanding Calendar and first steps

The Calendar module is smart: it uses a custom content type that you have to create (you can call it ‘event’) to display events in a calendar display. It basically adds the ‘Calendar’ style to the Views module. So basically, what you have to do is to create a content type to manage your events (which should include a date field, obviously), and then create a view to display the events.

Sean Effel, from Drupaltherapy, shows the detailed steps on how to achieve this in his screencast. Just follow the link and watch the video.

Setting up a per-group calendar

What Sean doesn’t show in his screencast however, is how to set up a per-group and a per-user calendar. If you followed the video, you should now have a public/general calendar showing all of your events.

Creating some test data

In your Drupal installation, create 4 events entitled: ‘Private user event’, ‘Public user event’, ‘Private group event’, ‘Public group event’. The idea is that, at the end of this article, you should have a public calendar displaying the ‘Public user event’ and ‘Public group event’, a group calendar displaying (when you are logged in as a group member) the ‘Public group event’ and ‘Private group event’ and finally a user calendar displaying (when you are logged in as the user who created the ‘Private user event’) the ‘Private user event’ and ‘Public user event’.

Setting up Organic Groups

If you want to have private group events, you simply have to check “Visibility chosen by author/editor …” under “Visibility of posts” in “Organic groups access configuration”. This will allow the event author to create private group events, visible only by group members.

Setting up the per-group calendar view

Go to Site building > Views > List. Select your general calendar view (which should be called calendar) and click on Clone. As View name, use ‘calendar_og’, enter a description such as ‘per-group calendar view’ and click Next.

Now I had a problem which seems to me like a bug: after you cloned the view, if you try to get a Preview of the “Calendar page” display, you will only get the Navigation bars. In order to change this, change the style plugin to “Calendar” in “Defaults”, AS WELL AS in “Year view”, “Month view”, “Day view” and “Week view”.

Then, you will need to change the Path of this new view. Select “Calendar page” > Page settings > Path and change it to ‘node/%/calendar’. Also, if you wish, set the Menu to “Menu tab” and entitle it “Calendar”.

You now need to add an argument to the view in order to tell it from which group it should retrieve the events. Add an argument of the type “Organic groups: Groups”, select “Provide default argument” and “Node ID from URL”. You can also select a “Group nodes” validator if you wish. DON’T FORGET, after you added this argument, to organize it so that the FIRST argument is the “Organic groups: Groups” one, and the second is the date argument, otherwise the view will not work.

If you go to a group page, you should now have a tab saying “Calendar” or, if you didn’t set a Menu tab, you can navigate to http://urlofyoursite/node/%gid%/calendar, and you should see a calendar displaying only the events of the group identified by the id given in the URL.

Edit the ‘Private group event’ you created earlier and make it private, using the “Organic groups” option, and it should not appear in the group calendar, unless you are logged in as a group member.

Setting up a per-user calendar

Almost the same steps can be followed in order to set up a per-user calendar, you simply have to change a few things:

  • Change the name of the cloned view to something like ‘calendar_my’ or ‘calendar_user’
  • Change the path of the Calendar page to ‘user/%/calendar’
  • Change the “Organic groups: Groups” argument to a “User: Uid” argument and in the “Provide default argument” select “User ID from URL”. Don’t forget, once again, to put the argument first in the list

At the end of these steps, you should be able to see a calendar when you navigate to http://urlofyoursite/user/%uid%/calendar, showing only the events created by the user identified by %uid%.

User private events

In order to allow users to create private events (ie accessible by themselves only), I used a very simple module: Private. There might be some other modules that can do the same thing and more, but Private simply does the job. It allows you to let your users say whether they want a specific node to be private or not. Once the module is installed, edit the ‘event’ content type you created and, under ‘Workflow settings’, set the ‘Privacy’ option to ‘Enabled (public by default)’. This will enable a checkbox in the event creation form, allowing your users to define an event as private.

Go back to the ‘Private user event’ you created earlier and make it private. It should now only show in your per-user calendar if you are connected as the author of the event.

Conclusion: views power

Views is a very powerful module and the idea of using it through the Calendar module is great. Given that your event content type is a simple node, you can also easily add it some more things, such as geolocalization using the GMap + Location module.

Howto upgrade from Chamilo 1.8.7 to Chamilo 1.8.7.1

Chamilo LMS logoIt’s *very* easy, doesn’t generate any data loss whatsoever, and doesn’t imply any database change.

Find the explanation here: http://campus.chamilo.org/documentation/installation_guide.html#3._Upgrade_from_a_previous_version_of

Howto send mails with PHP + Ubuntu

August 2, 2010 4 comments

Update 2010-12-21: A really serious security flaw has been detected in Exim 4 < 0.70. Please make sure your version is secure: https://forum.bytemark.co.uk/comments.php?DiscussionID=2701

If you’re a developer who works with Ubuntu or Debian, or at least with PHP and Apache, you will have the problem at some point that you want to send e-mails from your web application (for example using the PHP mail() function).

The most logical for a PHP developer is to use the default configuration of PHP: sendmail. However, sendmail has a enough enemies and Wikipedia has this to say about sendmail

Sendmail can be difficult to configure. Whereas nearly all popular Unix based server software has human readable configuration files, Sendmail’s configuration is not considered human readable. Instead, the Sendmail authors recommend that administrators learn and use macro language tools, particularly M4 to configure Sendmail. Sendmail is unique amongst Unix based MTAs in this requirement, and no MTA developed since Sendmail requires or recommends the use of macro languages for configuration.

What is unclear when you install sendmail is that it is, in fact, a very poorly usable system, which requires a lot of configuration to work well, and this configuration is made very complicated, as Wikipedia explains.

One solution is then to use Exim4, which can be quickly configured (but not *that* easily).

To install Exim4, we first need to remove sendmail if it is present

sudo apt-get remove sendmail

The apt-get indicates that we can remove a series of packages initially installed with sendmail, using the following command

sudo apt-get autoremove

Now we get to install exim

sudo apt-get install exim4

This installs a series of packages, but it’s not enough, you also need to configure exim:

sudo dpkg-reconfigure exim4-config

The system then opens a colorful terminal which can  be browsed this way:

  1. OK
  2. Internet distribution (SMTP)
  3. Name of the system e-mail: the name of the computer (or any name, just avoid funny characters)
  4. OK
  5. IP addresses: 127.0.0.1
  6. Other destinations: localhost
  7. Relays: leave empty
  8. Relays 2: leave empty
  9. OK
  10. Minimize DNS requests DNS: yes (it is a development machine, not a server)
  11. Maildir Format (we’re developers, we want things made easy)
  12. Split the configuration: No (there’s not much in there anyway)
  13. Done

At the end of the process and of restarting Apache (sudo /etc/init.d/apache2 restart), use a PHP script which contains, for example: mail(‘myself@example.com’,’hello’,’my message reached you’); this should send the message correctly to the myself@example.com address.

Finally, if you ever end up with a big queue (mailq or mailq -d command) of e-mails that are **frozen** because your previous configuration was wrong, you can send them anew with exim -qff.

Categories: Documentation, English, php, Tech Crunch Tags: ,

Installer la vidéoconférence de Chamilo sur une machine virtuelle

August 2, 2010 5 comments

Ce type d’explication étant en grande demande, voici comment installer la vidéoconférence sur une machine virtuelle. Libre au lecteur de l’appliquer ensuite à un serveur.

Ce guide n’en est pas vraiment un. En fait, il s’agit de ma conversation avec Sandrine, une utilisatrice de Chamilo tentant désespérément d’installer la vidéoconférence, malgré mes recommendations de ne pas essayer sans avoir un niveau technique suffisant au niveau administration système.  Bien qu’étant généralement de très bonne volonté, l’installation de la vidéoconférence est un processus long, qui repose sur des connaissances techniques avancées. C’est pourquoi le risque de problèmes en cours de chemin est grand, et c’est pour cette raison (pour les curieux) que nous ne passons pas plus de temps à élaborer des guides d’installation. Il y a chaque fois des problèmes propres au système sur lequel on l’installer, ce qui requiert d’un temps d’installation assez long. À noter aussi que tout le temps passé à l’expliquer à quelqu’un qui ne communiquerait pas ses résultats par la suite est du temps *perdu* pour le développement de Chamilo, donc j’essaie d’éviter.

BeezNest offre le service d’installation de la vidéoconférence si vous ne voulez pas vous confronter aux problèmes rencontrés ou pas ci-dessous. Contactez-nous sur info @ beeznest point com.

Notez qu’à l’avenir nous utiliserons très probablement BigBlueButton au lieu de notre système de vidéoconférence actuel. Bien qu’il reste quelques problèmes à solutionner, l’équipe en charge du développement de cette solution entièrement libre est bien plus nombreuse que nous et avance dans le domaine spécifique de la vidéoconférence tandis que nous devons nous occuper en même temps du LMS Chamilo.

Quoi qu’il en soit, voici la conversation, copiée-collée et avec quelques modifications (dont un certain nombre de “merci” qui ne servent pas l’objectif instructif de ce guide).

Mon pseudo, c’est yannoo.

(10:44:34) sandrine:
tu a vu mon tutoriel?
LE SECOND
j'ai toujours l'affichage connecting to the streaming serveur
mais red5 fonctionne je l'ai tester
j'ai acces a la page d'administration de tomcat sur le porrt 8180
(10:45:54) yannoo:
tu me donnes un lien?
(10:46:06) sandrine:
oki
http://www.chamilo.org/fr/node/474
regarde la partie ebauche n°2
(11:06:32) yannoo:
pq ubuntu 6.06 en particulier?
(11:07:35) sandrine:
en fait j'ai suivie un tuto de dokeos qui faisai utiliser cette version
(11:08:20) yannoo:
à mon avis avec une 10.04 ça ne devrait pas poser de problème (ou au moins avec une 8.04)
(11:08:29) sandrine:
en fait jai deja reussi a faire fonctionner la videoconference avec dokeos 1.8.2 en suivant ce tuto
mais avec la version 1.8.6.2 puis 1.8.7 cela ne marche pas
mais jai essayer avec la version ubuntu 9.10 sans plus de succes
jai aussi essayer avec 8.04.4 sans plus de succes
(11:12:56) yannoo:
ok ok, mais je ne crois pas que ce soit ça le facteur changeant puisque ça ne marche pas avec 6.06
je refais tout avec toi hein
je pars d'une 10.04 desktop edition
que j'installe dans un virtual box
tu connais virtual box?
(11:19:12) sandrine:
non c koi?
(11:19:28) yannoo:
tu utilises quoi comme système d'exploitation sur ta machine?
(11:19:58) sandrine:
sur mon portable jai windows vista
et sur mon pc de bureau (qui jou le role de serveur) jai ubuntu
(11:20:19) yannoo:
http://www.virtualbox.org/
c'est un système qui permet de faire des installs (d'ubuntu par exemple) en machine virtuelle
en gros, tu utilises une espèce de "bac à sable" sur ta propre machine
ça n'affecte en rien ta machine
mais ça te permet de tout installer
sans devoir réinstaller un ordi entier à chaque fois
(11:21:45) sandrine:
donc pour resumer et voir si jai bien compris je vai rester sur windows et installer virtual box et dans virtual box je vais installer ubuntu et ça jouera le role de serveur c'est cela?
(11:21:50) yannoo:
tu peux télécharger ici: http://download.virtualbox.org/virtualbox/3.2.4/VirtualBox-3.2.4-62467-Win.exe
oui, c'est ça
(11:22:41) sandrine:
donc attend sur mon pc de bureau kjai deux partion une avec donc ubuntu et lautre avec windows xp je vai sur la partition xp du serveur c ça?
(11:23:23) yannoo:
si tu as Windows Vista, tu utilises Windows Vista
t'auras juste besoin de virtual box, d'un CD d'ubuntu 10.04 (ou une image .iso sur ton windows vista)
t'installe virtual box pour windows puis tu le démarres
tu cliques sur "nouveau" (comprendre "nouveau système virtuel")
page de bienvenue -> Suivant
il te demande un nom de système
tu lui mets par exemple ubuntu 10.04
puis il demande le syst d'exploitation tu sélectionnes Linux et Ubuntu
Tu valides et il te demande combien de mémoire vive tu veux mettre (il te propose 384MB et c'est très bien pour notre test), tu valides
après il te demande si tu veux créer un nouveau disque ou en réutiliser un. C'est un disque virtuel, donc tu dis "créer un nouveau" puis suivant
suivant de nouveau
Image à taille dynamique, suivant
Emplacement (tu choisis un endroit pour le mettre sur ton ordi, ça prend max 1GB je crois)
tu laisses la taille par défaut (8GB), de toute façon c dynamique ça prendra jamais tout ça
Suivant
Terminer
Terminer de nouveau
là y a le nom du système virtuel qui apparaît dans la liste. Tu cliques dessus et tu cliques sur "disque optique" à droite
là tu cliques sur "Insérer un disque optique" et tu sélectionnes ton lecteur CD si t'as un CD d'ubuntu 10.04 ou tu sélectionnes l'image iso du CD d'ubuntu 10.04 si tu l'as sur ton ordi, puis tu fais OK
là tu reviens à la liste des systèmes et tu cliques  sur le ubuntu 10.04 puis sur "lancer"
là il va lancer l'installation d'ubuntu
rien de bien complexe, c'est une installation normale. Parfois VirtualBox te coince ton curseur dans la nouvelle fenêtre. C'est normal. Pour en sortir tu utilises la touche CTRL de droite
attends apparemment j'ai un problème pour installer Ubuntu 10.04 sur mon virtual box (c la première fois que j'essaie), du coup je vais repasser en Ubuntu 9.10 si ça te dérange pas
bon, la 9.10 je l'ai en déjà installée
donc je m'ouvre un terminal et je commence direct en 9.10
(11:35:42) sandrine:
di c une version serveur ou une version desktop???
Terminal donc desktop
(11:36:33) yannoo:
c une version desktop mais pour ce qu'on va en faire ça ne change pas grand chose
bon alors là je retourne à ta doc
sudo apt-get install apache2-mpm-prefork
sudo apt-get install mysql-server
 (pas de 5.0 stp, c'est vieux ça, même si ça change rien)
en fait tu peux direct faire sudo apt-get install apache2 mysql-server libapache2-mod-php5 php5-mysql
en une ligne
mon adresse ip c'est 10.0.2.15 dans ma machine virtuelle
sudo apt-get install php-pear php5-gd php5-xsl php5-mcrypt php5-ldap
c'est pas vraiment nécessaire en fait, mais c mieux pour chamilo après
(11:40:39) sandrine:
oki c l'ip local ???
(11:40:53) yannoo:
c l'ip locale de ma machine dans virtual box, oui
(11:40:53) sandrine:
Ou l'ip internet??
(11:41:20) yannoo:
mais comme elle va servir de serveur pour chamilo *et* la vidéoconférence, dans ce cas-ci on s'en fout un peu, du moment qu'on en a une :-)
(11:41:38) sandrine:
juste question rapide pour ubuntu 9.10 je prend I386 Ou AMD ?
(11:41:45) yannoo:
i386
c le plus "compatible"
on va y aller direct avec chamilo 1.8.7 si ça te dérange pas
ma vitesse de téléchargement est pas top, donc il va falloir attendre que ça arrive
là je suis encore occupé avec mysql-server
(11:42:50) sandrine:
il faudrait installer d'autre choses avant??
(11:43:07) yannoo:
non, ça devrait suffire pour la partie chamilo
après on va installer les java et les autres trucs
(11:44:28) sandrine:
dis moi il y aura une diference après quand je travaillerai non pas sur virtual box mais sur mon pc serveur ?
(11:45:11) yannoo:
non
pas pour la première partie
(11:45:20) sandrine:
Ok
(11:45:39) yannoo:
après il y aura une deuxième couche à mettre par dessus (qu'on ne verra pas aujourd'hui) pour rendre ton serveur de video public
(11:45:57) sandrine:
ok
(11:47:08) yannoo:
cd /var/www; sudo wget http://chamilo.googlecode.com/files/chamilo-1.8.7.tar.gz; sudo tar zxvf chamilo-1.8.7.tar.gz; sudo chmod -R 0777 chamilo-1.8.7
il va prendre 7 minutes pour moi, donc je te laisse un petit moment
(11:48:31) sandrine:
je reste la
(11:57:50) yannoo:
bien, on continue
je lance rapidement l'install de Chamilo
ici c'est important d'être cohérent
(11:58:24) sandrine:
cohérent c'est a dire?
(11:58:30) yannoo:
si je vais utiliser la même adresse ip, alors il faut l'utiliser partout
donc j'installe mon chamilo sur 10.0.2.15
(11:59:23) sandrine:
oui donc dans l'installe de chamilo a un moment je dois saisir l'ip de ma machine virtuell?
(11:59:27) yannoo:
par contre, pour éviter les éventuels problèmes, je vais mettre tout le contenu du répertoire chamilo dans la racine web (/var/www):
sudo mv chamilo-1.8.7/* .
juste après la commande de téléchargement
maintenant quoi :-) (avant l'install)
(12:00:20) sandrine:
oki
et après je fai l'install c ça?
(12:00:40) yannoo:
donc maintenant j'ouvre un browser (là c chouette d'avoir une version desktop pour ça)
(12:00:59) sandrine:
UN BROWSER c un navigateur c ça?
(12:00:59) yannoo:
et je charge: http://10.0.2.15/
oui
(12:01:21) sandrine:
localhost n'aurai pas fonctionner?
(12:01:46) yannoo:
si, mais justement, il faut pas le confondre
il faut utiliser l'adresse IP tout le temps
(12:02:05) sandrine:
oki et toujours l ip locale
(12:02:21) yannoo:
par contre il faut aussi probablement relancer apache: sudo /etc/init.d/apache2 restart
(12:02:45) sandrine:
après l'installe de chamilo je relance apache ok
dis moi au cours de l'installation de chamilo je dois preciser l'ip a quel moment ?? (a quelle étape ?)
(12:03:39) yannoo:
en fait c'est après l'install des packages de php
bon ben donc on peut installer chamilo là hein
(12:18:03) sandrine:
donc maintenant linstall de chamilo
(12:18:26) yannoo:
je te laisse installer toute seule hein, y a rien de compliqué
(12:18:36) sandrine:
non ça ça va
(12:18:52) yannoo:
normalement au moment de l'installation de mysql il t'a demandé un mot de passe de root, que tu lui donnes ici
(12:19:01) sandrine:
mais ya pas un moment ou je dois preciser une adresse ip afin d'être coherent comme tu disais plus haut
?
(12:19:37) yannoo:
normalement il te la donne par défaut
il détecte celle que tu utilises lors de l'installation
(12:19:52) sandrine:
ok l'ip de ma virtual box tjrs
(12:19:56) yannoo:
oui
(12:20:05) sandrine:
dis juste comment je connai l ip de ma virtual box?
(12:20:55) yannoo:
ah, tu peux lancer dans un terminal: /sbin/ifconfig
(12:21:03) sandrine:
OKI merci
(12:21:13) yannoo:
et elle apparaît au milieu de plein d'autres trucs comme "inet addr"
(12:21:21) sandrine:
oki
rien de particulier pendant l'install de chamilo?
Juste l'ip doit etre preciser (tu ma di qu elle y serait par defaut) mais a quelle étape de l'installation??
(12:23:24) yannoo:
heu... 3 ème page je crois
(12:23:47) sandrine:
oki je regarderai et c'est tjrs l'ip de ma virtual box
(12:23:53) yannoo:
quand il te demande les infos communes sur le serveur (nom du campus et tout ça), c'est le premier champ de la page
oui
(12:24:02) sandrine:
oki
et après?
(12:24:12) yannoo:
ok maintenant on installe red5
à noter qu'on charge un package debian, donc celui-ci devrait se charger d'installer ses dépendances (par exemple java) tout seul
(12:25:03) sandrine:
ok (bon la je comprend pas vraiment tout mais jte suis :) )
(12:25:13) yannoo:
pour télécharger et ne pas mettre le désordre, on va dans /tmp, un répertoire qui est nettoyé à chaque redémarrage
cd /tmp; wget http://dl.fancycode.com/red5/debian/0.6.2/red5_0.6.2-1_all.deb; sudo dpkg -i red5_0.6.2-1_all.deb
(12:25:52) sandrine:
oki
(12:28:01) yannoo:
normalement après il faut télécharger les modifications de red5 pour la videoconf
wget http://www.dokeos.com/maven/repository/com/dokeos/dokeos-videoconf/2.0.0-M2/dokeos-videoconf-2.0.0-M2.war
(12:28:26) sandrine:
oki
et je les mets ou?
car la ils sont ds le dossier TMP
(12:29:04) yannoo:
après tu le renommes en "dokeos-videoconf.war" et tu le bouges dans /usr/lib/red5/webapps
(12:29:46) sandrine:
sudo mv dokeos-videoconf.war /usr/lib/red5/webapss
c ça??
C'est la bonne commande?
(12:32:11) yannoo:
mets-lui un slash de + après webapps
(12:32:20) sandrine:
ok
(12:32:21) yannoo:
...red5/webapps/
(12:32:29) sandrine:
oki
l'idee de oogie est interessante mais jai vu que AutorPointLite convertit des pps en swf
(12:36:45) yannoo:
oui
le problème pour nous est que ce n'est pas libre
donc on ne peut pas l'intégrer à notre outil
(12:37:20) sandrine:
ben jai lu sur micro hebdo que il etait gratuit
(12:37:30) yannoo:
gratuit ne veut pas dire libre
(12:37:33) sandrine:
mais peut etre pas libre en effet
oui tu as raison
tu as le fichier?
(12:38:20) yannoo:
oui
bon, ici on a un premier gros problème
qui est que red5 a besoin de sun-java5-bin
(12:38:45) sandrine:
C'est a dire????
(12:38:50) yannoo:
qui n'est plus disponible dans Ubuntu 9.10
alors on a trois solutions:
(12:38:59) sandrine:
arghhhhhhhhhhhhh
(12:39:10) yannoo:
- on réessaie avec Ubuntu 9.04 ou 8.04
(12:39:17) sandrine:
oui ou
(12:39:19) yannoo:
- on modifie le paquet red5
(12:39:24) sandrine:
oui ou
(12:39:37) yannoo:
- on trouve quand même une façon d'installer sun-java5-bin
(12:39:54) sandrine:
quelle est la methode la plus simple?
(12:40:15) yannoo:
la dernière est problématique, potentiellement, parce qu'on aurait besoin de maltraiter le serveur
la première est la plus simple mais prend bcp de temps
(12:40:33) sandrine:
SI on partait sur la premiere?
(12:40:43) yannoo:
et la deuxième est vachement compliquée et peut prendre aussi longtemps
bon apparemment c pas si compliqué le numéro 2
(12:46:19) sandrine:
ok :-)
jte suis
(12:48:58) yannoo:
ok bon... note bien parce que c compliqué quand même
(12:49:32) sandrine:
tu peu me donner les ligne de commande stp
je note tous :-)
juste je doit etre dans quel repertoire?
(12:49:56) yannoo:
ok donc on se retrouve avec le paquet red5_... dans /tmp/, ok?
bien, alors là tu lances: dpkg -x red5_0.6.2-1_all.deb red5
ça va créer un répertoire red5 avec des fichiers dedans (en fait on désempaquette le paquet red5)
puis, du même endroit, tu fais:
mkdir red5/DEBIAN
dpkg -e red5_0.6.2-1_all.deb red5/DEBIAN/
du même endroit où tu es
tu y restes
tu bouges pas :-)
puis tu fais: vi red5/DEBIAN/control et là tu verras une ligne qui dit depends: sun-java5-bin
avec ton curseur, tu vas sur le 5 et tu tapes "r" puis "6"
puis tu sauves, en faisant la touche d'échappement puis ":wq" et entrée
puis tu lances: dpkg -b red5 red5.deb
là tu auras un paquet red5.deb dans /tmp
qui ne dépend plus de java5 mais bien de java6
donc il faut d'abord installer java6: sudo apt-get install sun-java6-bin
puis installer notre  nouveau red5: sudo dpkg -i red5.deb
(12:57:51) sandrine:
Pour résumer du meme endroit c'est à dire /tmp/ je fais dpkg -x red5_0.6.2-1_all.deb red5 ; mkdir red5/DEBIAN ; dpkg -e red5_0.6.2-1_all.deb red5/DEBIAN/ ; vi red5/DEBIAN/control ; r6 ; echap ; :wq ; entrée ; dpkg -b red5 red5.deb ; sudo apt-get install sun-java6-bin ; sudo dpkg -i red5.deb
(12:58:14) yannoo:
oui
sauf que ça tu peux pas le lancer en une seule commande :-)
(12:58:44) sandrine:
oui j'ai juste fais un résumé :-)
(12:59:10) yannoo:
comme on traficotte un peu avec les dépendances de Red5, c possible qu'il y ait des problèmes plus tard. Ça on verra en temps voulu
(12:59:51) sandrine:
sinon si on avait utiliser ubuntu 8.04 on aurait pas eu ce genre de soucis c ça?
(13:00:01) yannoo:
probablement pas...
mais bon, il faudrait vérifier
bref, continuons
sudo mv dokeos-videoconf.war /usr/lib/red5/webapps/
puis on doit créer un fichier de config dans /etc/dokeos
donc:
sudo mkdir /etc/dokeos
puis
sudo vi /etc/dokeos/videoconference-config.xml
(13:01:11) sandrine:
je laisse le repertoire appelé dokeos?s
(13:01:20) yannoo:
oui
pas le choix
jusqu'à ce qu'on reprogramme la vidéoconférence
puis normalement on est dans un éditeur de texte, et on tape "i" pour insérer puis:
<?xml version="1.0" encoding="UTF-8"?>
 <videoconference-config>
 <server-keys>
 <server-key host="10.0.2.15_" key="pass" />
 </server-keys>
 <moderator-check-on-whiteboard>false</moderator-check-on-whiteboard>
 <video-streams-dir>/opt/dokeos/recorded-streams</video-streams-dir>
 <vod-streams-dir>/opt/dokeos/vod-streams</vod-streams-dir>
 </videoconference-config>
où "pass" est le mot de passe qu'on va utiliser dans chamilo pour la config de la videoconf
(13:02:44) sandrine:
juste plutot que d'utiliser vi je peux utiliser nano??
(13:03:56) yannoo:
oui
puis on relance red5 pour qu'il prenne la config en compte
sudo /etc/init.d/red5 restart
maintenant on repasse dans chamilo (on peut déjà lancer l'installation du plugin flash sur la machine qui va utiliser la videoconf, mais comme dans ce cas-ci c la même machine...)
sudo apt-get install flash-plugin-nonfree
pardon c flashplugin-nonfree
(13:06:40) sandrine:
l'installation du plugin flash il faut la faire aussi qd on ne travaille pas sur virtual box mais sur le serveur?
(13:07:02) yannoo:
non, le serveur ne doit pas l'avoir
c juste les machines qui l'utilisent au travers du navigateur
bon et donc on va dans chamilo -> administration -> videoconference -> on remplit les champs
(13:07:34) sandrine:
oui mais la je linstalle sur ma machine virtuelle c ça ?
(13:07:41) yannoo:
oui
(13:07:46) sandrine:
donc sur mon serveur virtuel c ça?
(13:07:51) yannoo:
oui
nom d'hôte 10.0.2.15 (l'ip locale)
(13:08:14) sandrine:
oki
(13:08:15) yannoo:
port du serveur: 1935
mot de passe: "pass"
rtmpt: non (bien que ça ne change pas grand chose ici)
activer le service
puis il faut redémarrer le browser pour qu'il ait flash
le fermer puis le ré-ouvrir quoi
(13:09:36) sandrine:
oki
(13:09:57) sandrine:
juste le browser c'est celui de la virtual box c ça??
(13:10:28) yannoo:
oui
puis je vais dans un cours, je clique sur "classe virtuelle" et mon serveur de videoconf se démarre
cqfd
(13:12:03) sandrine:
ça marche chez toi?
(13:12:04) yannoo:
tu le testes et tu me fais une belle doc?
oui
(13:12:19) sandrine:
Dis moi quelques questions
j'utilise tjrs le browser de la virtual box c ça???
(13:12:49) yannoo:
oui
évidemment c'est un environnement un peu restreint
mais ça prouve le concept
après il y a une série de nouveaux trucs à faire
(13:13:24) sandrine:
Si je veux tester avec deux ordinateurs,
je rentre dans chamilo depuis un autre pc connecter sur le reseau en utilisnant l'ip
et ça marchera ???
(13:14:44) yannoo:
pas dans une virtual box
mais sur ton serveur oui
techniquement c la même démarche
sauf que le faire dans une virtual box te fait gagner du temps pour les essais
(13:15:16) sandrine:
Donc dans la box je ne peux tester qu'une machine avec la videoconference c ça?
(13:15:23) yannoo:
bon, je dois te laisser, si tu as encore des questions je reviens un peu plus tard
oui
c ca
(13:15:50) sandrine:
ET apres pour le mettre sur un serveur l'install difere bcp de ça?
je teste et je prepare une doc
merciiiii

Le lendemain…

(09:42:32) sandrine:
salut yannick et merci pour hier
j'aurai juste 2 question très rapide
voila mes deux questions si tu pouvais y repondre rapido ça serait super
(09:50:10) yannoo:
vas-y
(09:50:17) sandrine:
1ere question : en rentrant l'ip dans mon browser 10.0.2.15 (j'ai la même ip local que toi c'est bizard) et bien je n'arrive pas directement au portail de chamilo mais j'ai une page ou il est ecrit en gros ITS WORKS. Pour accéder à la page d'accueil de d'installation de chamilo j'ai du saisir http://10.0.2.15/index.php cela aura-t-il des conséquence pour le fichier configuration.xml ???
(09:51:57) yannoo:
ah, non ça n'a pas de conséquences
en fait... tu peux le solutionner en retirant index.html
du répertoire de base
(09:52:21) sandrine:
en effaçant le fichier index c ça??
(09:52:31) yannoo:
le index.html, pas le index.php
oui
(09:52:44) sandrine:
En l'effaçant du dossier /var/WWW?
il se situe ou le fichier index.html.
,,,,?
(09:53:44) yannoo:
ben oui, dans /var/www/
(09:53:56) yannoo:
c'est un fichier qui est là *avant* qu'on y mette chamilo
faut juste le virer
(09:54:06) sandrine:
daccord
(09:54:11) sandrine:
2NDE QUESTION
(09:54:43) sandrine:
je suis actuellement en train de regler le pb java5 java6 en suivant à la lettre tes instruction : dpkg -x red5_0.6.2-1_all.deb red5 ; mkdir red5/DEBIAN ; dpkg -e red5_0.6.2-1_all.deb red5/DEBIAN/ ; vi red5/DEBIAN/control ; r6 ; echap ; :wq ; entrée ; dpkg -b red5 red5.deb ; sudo apt-get install sun-java6-bin ; sudo dpkg -i red5.deb
(09:55:10) sandrine:
J'en suis à l'étape sudo apt-get install sun-java6-bin
(09:55:22) sandrine:
et voila ce qui s'affiche dans mon terminal
(09:56:13) yannoo:
c'est parce que t'as essayé d'installer sun-java5-bin avant. Fais-lui simplement un "sudo apt-get remove red5" et tu valides
il te dit qu'il ne peut pas parce que sun-java5-bin doit être installé ou un truc comme ça
pas vrai?
(09:57:12) sandrine:
il me di java6.bin depend de java6.jre
(09:57:46) sandrine:
depend: unixodbc mains ne sera pas installé
(09:58:57) yannoo:
houla
ben alors tu lui fais un "sudo apt-get -f install"
tout seul
essaie
(09:59:24) sandrine:
sans rien a la suite?
(09:59:43) yannoo:
sans rien
c'est une espèce de commande pour nettoyer les bases
(10:00:09) sandrine:
ça menleve un paquet red5
(10:00:25) yannoo:
oui c bien
(10:00:38) sandrine:
oki et je recommence a quelle etape?
dpkg -x red5_0.6.2-1_all.deb red5 ; mkdir red5/DEBIAN ; dpkg -e red5_0.6.2-1_all.deb red5/DEBIAN/ ; vi red5/DEBIAN/control ; r6 ; echap ; :wq ; entrée ; dpkg -b red5 red5.deb ; sudo apt-get install sun-java6-bin ; sudo dpkg -i red5.deb
je reprend par sudo apt-get install sun-java6-bin?
(10:01:56) yannoo:
oui
(10:02:50) sandrine:
ça telecharge apparement c bon
je continue :-)
aie je suis maudite c'est pas vrai !!!!
j'ai toujours connecting to streaming server
(11:20:33) yannoo:
bah écoute, relis mes instructions, c'est pas possible que pour moi ça marche et pas pour toi
(11:21:47) sandrine:
je sais je vais tous reprendre
attend
ça sarrange
jai la fenetre de flash player qui me propose d'accepter ou de refuser
Bon ça a avancer
j'ai la fenetre adobe flash player c'est normal?
(11:33:33) yannoo:
je sais pas
(11:33:51) yannoo:
normalement le flash te demande si tu veux partager ta webcam ou non
(11:34:01) yannoo:
tu lui dis oui et après t'arrives sur la videoconf
(11:34:54) sandrine:
jai di oui et la ya ecris transfert de donner depuis 10.0.2.15
(11:35:19) yannoo:
ok ben je sais pas, normalement il devrait te mettre dans la videoconf
ct le cas pour moi et on a eu exactement la même config
(11:35:32) sandrine:
je reprend tout ça et je vai preparer un tutoreil

Le surlendemain

(12:40:00) sandrine:
je viens te remercier j'ai reussi a faire afficher le module de videoconference dans ma virtual box
l'affichage n'était pas entier mais je crois que c'est normal
je vais preparer un tutoriel
que je mettrai sur le forum
dis moi si je passe maintenant sur un pc serveur, la premiere "couche" comme tu disais sera la même...?
(14:59:37) yannoo:
pour ta question de toute à l'heure, c'est pas vraiment le même procédé pour ton PC
(14:59:40) sandrine:
MERCI encore jai reussi l'install sur virtual box
(14:59:51) yannoo:
pas de problème
(15:00:01) sandrine:
et la en fait je vien d'essayer sur un pc et ça a marcher aussi
(15:00:15) yannoo:
il va falloir définir un "virtual host" (un nom de domaine au moins en interne, au mieux tout à fait public)
oui, ça fonctionne mais juste à partir de ton pc, non?
(15:00:38) sandrine:
voila
(15:00:42) yannoo:
t'as déjà essayé de te connecter depuis une autre machine?
(15:00:54) sandrine:
ya pas de communication possible entre mon serveur et mon pc client
oui
(15:01:06) yannoo:
voilà
en gros maintenant il va falloir être un peu plus détailliste
(15:01:18) sandrine:
depuis mon pc client j'arrive a ouvrir la page de videoconference mais il n'y a pas de communication
(15:01:20) yannoo:
et définir un virtual host
(15:01:24) sandrine:
oki
(15:01:27) yannoo:
oui oui, c logique
(15:01:36) sandrine:
c'est la deuxième couche dont tu me parler?
(15:01:39) yannoo:
oui
mais elle passe au-dessus de la première couche
(15:02:47) sandrine:
je vais regarder
(15:02:57) yannoo:
tu cherches "définir un virtual host apache" et tu devrais trouver des explications un peu partout
(15:03:39) sandrine:
tu pense que ça prendra combien de temps a peu près?
(15:04:10) yannoo:
ben si tu étudies d'abord les virtual hosts et que tu t'exerces un peu (tu peux le faire dans une virtual box aussi, ça), ça prendra 10 minutes
ce serait bien que tu le fasses, parce que sinon c'est mon temps qu'on gaspille
(15:04:58) sandrine:
je comprend je regarderai mais c vrai que comme je suis pas informaticienne des fois je nage un peu
(15:05:05) sandrine:
di moi derniere question
la pour cette deuxieme couche, on va faire une installation en local c ça avec un pc serveur et un pc client donc en travaillant avec des ip local
mais par la suite une installation sur un serveur dédié se fera de la meme façon mais en utilisant les ip internet c ça???
(15:06:48) yannoo:
oui, c'est ça
(15:06:57) yannoo:
dans ta couche client, y a rien qui change
sur ton serveur, par contre, on utilise les IPs publiques ("internet") et les noms publics (ex: video.chamilo.org  au lieu d'une IP)
(15:07:53) sandrine:
oki
pour une installation en local, on utilise aussi les IP public??
(15:09:51) yannoo:
on peut, si l'installation locale est connectée à internet
et qu'il y a effectivement des IP publiques
(15:10:16) sandrine:
Ok
(15:10:22) sandrine:
pour resumer :
(15:10:53) sandrine:
en local ip local (voir eventuellement ip public) sinon pour une installation sur serveur dédié ip public
(15:11:11) yannoo:
oui
(15:13:26) sandrine:
mais pour essayer toute seule tu peu me donner le principe stp
(15:16:10) yannoo:
ben d'abord le chamilo que t'avais installé dans /var/www sur ton virtual box, tu le re-bouges dans un sous-répertoire "chamilo" (donc /var/www/chamilo) puis tu modifies la configuration d'Apache (sur ubuntu tu copies le /etc/apache2/sites-available/default dans un /etc/apache2/sites-available/chamilo.sandrine.org) et tu modifies le fichier lui-même pour que son DocumentRoot (c'est dans le fichier) soit /var/www/chamilo au lieu de /var/www
(15:16:57) sandrine:
je vai mi pencher dessus
(15:17:19) yannoo:
puis tu dois activer le virtual host (ce nouveau fichier) avec "sudo a2ensite chamilo.sandrine.org" puis recharger la config d'Apache (sudo /etc/init.d/apache2 reload) et puis tu dois modifier (sur ton client) le fichier /etc/hosts pour qu'il aie l'adresse ip du serveur, espace, chamilo.sandrine.org
et de là tu dois modifier partout où t'avais l'adresse IP en un nom de domaine
(15:17:36) sandrine:
oki
(15:17:43) yannoo:
(y compris dans la config de la videoconf)
(15:17:45) yannoo:
voilà
(15:17:47) yannoo:
en résumé
(15:17:52) sandrine:
oki
(15:17:56) yannoo:
bonne chance
%d bloggers like this: