Carnet Wiki

Plugin SiloSPIP

Version 1 — Mai 2009 dani

Plugin en desarrollo, aún no operacional : http://zone.spip.org/trac/spip-zone...

La idea : sitios SPIP « todo public »

Sitios SPIP en auto-servicio, tan fáciles como un blog-bigbrother.com, pero que no secuestran ni el contenido del sitio, ni el acceso a la tecnología que hay por debajo.

La motivación : los primeros peldaños que faltan a la escalera

En la SPIP design party en Nantes en 2007, Têtue ilustraba la situación de SPIP como una escalera que va muy alto, pero a la que le faltan los primeros peldaños. Para quienes pueden llegar por otros medios a la escala es genial, pero no todo el mundo puede llegar ahí.

Por eso, cantidad de gente — incluso mucha que en principio adhiere al manifiesto del web independiente — se dirigen hacia servicios comerciales (o publi-gratuitos) de realización de blogs o de sitios web, en vez de elegir una solución y una infraestructura que les permitiría preservar su libertad.

En la línea de las soluciones de mutualization de SPIP, este plugin SiloSPIP (no hay especial preferencia por ese nombre), intenta plasmar las ideas que acabamos de mencionar, en particular la idea de abrir el acceso a las tecnologías qu sustentan un servicios « todo público » : se pueden crear sitios SPIP « en libre servicio web », elegir juegos de esqueletos, activar o no tal o tal plugin, etc. pero luego, si se quiere, se puede acceder, « por debajo », a los esqueletos SPIP, al PHP y el MySQL, etc.

La visión de solución : Plugin de inscripción, acoplamiento a una mutualizaión y a un panel AlternC

  1. Un@ se inscribe como visitante — o con el mecanismo de Inscription2 que se quiera — en un sitio SiloSPIP
  2. De ahí, se pueden crar uno o varios sitos SPIP. Se elije :
    1. un nombre y eventualmente un dominio,
    2. un título de sitio,
    3. una descripción,
    4. un juego de esqueletos y una « vestimenta » (skin, habillage).
  3. El usuario no tiene porqué saberlo, pero se crea automáticamente una cuenta AlternC, y ahí se configuran automáticamente :
    1. el subdominio del con el nombre del sitio : nombre.dominiomutualizado.org.bo
    2. la base de datos del sitio SPIP y un usario mysql,
    3. las carpetas de contenido del sitio.
  4. Eventualmente, se sindica en RSS/Atom en el sitio SiloSPIP el sitio creado.
  5. En acceso autenticado al sitio SiloSPIP, el visitante" :
    1. ve la lista de sus sitios SPIP :
    2. puede manejarlos, suprimirlos, etc.
    3. en un espacio « experto » accede a su cuenta AlternC,
  6. Como AlternC no tiene mecanismo de recuperación de contraseña olvidada, una sincronización de la constraseñoa entre el sitio SiloSPIP y el de AlternC permitiría subsanarlo.

El embrión de desarrollo

El proceso de instalación y las dependencias

SiloSPIP depende de los plugins CFG, Inscription2 y Mutualisation.

A la instalación se agreaga una tabla spip_silosites y su bucle (en silospip_mes_fonctions.php). Se podría imaginar de acoplar esta tabla a la tabla spip_sites de sitios sindicados, al igual que el plugin Inscription2 cra una tabla auteurs_elargis, que simplemente extiende la notion de autor, y tiene una clave común con la tabla spip_auteurs.

El plugin comprende una página de configuración CFG, en el que se define la dirección del panel AlternC al cual el servicio está acoplado, con un nombre de Administrador AlternC y su contraseña. También se define el dominio o la lista de dominios en sub-dominios de los cuales se pueden crar sitios del silo.

Las balizas y bucles

Una baliza #FORMULAIRE_SILO_CREER_SITE genera un formulario permite a un usuario autenticado crear un sitio en el silo. Se la llama así :

   <div class="ajax">
        #FORMULAIRE_SILO_CREER_SITE{#SESSION{id_auteur}}
   </div>

Una baliza #FORMULAIRE_SILO_SITES, que se llama de la misma manera, permite listar los sitios creados.

Ninguna funcionalidad está aún terminada. La creación de de un sitio lo inscribe en la base, e intenta algunas llamadas a la interface del panel AlternC, utilizando la librería cURL para crear el usuario AlternC, la base MySQL del sitio, el usuario mysql y sus derechos.

El modo de organización de la mutualización de los sitios

Se instala un AlternC.

En una carpeta, a priori fuera de una cuenta AlternC, se instala un código SPIP con el plugin de mutualisation. Por ejemplo, en /usr/share/spip/

Se crea un alias Apache de esta carpeta, válida en todo VirtualHost. Por ejemplo, creamos un archivo /etc/apache2/conf.d/spip.conf con el contenido siguiente :

Alias /spip_mut /usr/share/spip

<Directory /usr/share/php/spip>
        Options Indexes FollowSymLinks
        DirectoryIndex index.php

                AddType application/x-httpd-php .php
                php_flag magic_quotes_gpc Off
                php_flag track_vars On
                php_flag register_globals Off
                php_value include_path .
        </IfModule>
</Directory>

La mutualización podrá ser hecha de la manera siguiente :
-  la creación de la base de datos en el Manejador de Archivos del usuario AlternC correspondiente,
-  la declaración del sub-dominio nombre.domaine_mutu.org entre los dominios del mismo usuario,
-  la configuración de este dominio hacia una carpeta del usuario, en el que una regla de re-escritura (RewriteRule Apache en le archivo .htaccess) lo redirige hacia el alias del SPIP mutualizado : http//nombre.domaine_mutu.org/spip_mut/
-  en la carpeta ’sites’ del SPIP mutualizado, en vez de una carpeta por sitio, encontramos un enlace simbólico hacia la carpeta de la cuenta AlternC del usuario : /usr/share/spip/sites/nombre.domaine_mutu.org -> /var/alternc/html/l/login/nombre.domaine_mutu.org la cual, conforme al plugin mutualización, contiene las carpetas de contenido : /tmp/<c/ode>, <code>/IMG/, etc.