Recherche avancée

Médias (91)

Autres articles (100)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

Sur d’autres sites (8091)

  • Rails Streamio FFMPEG taking a screenshot of the movie and upload with carrierwave

    5 juin 2016, par Felix

    I have got a Form where I can upload a movie. Its uploaded with carrierwave.

    In this process I want to Make a screenshot of the movie while uploading.

    How can I do this with Streamio FFMPEG.

    My code Looks like this at the moment.

    #Laedt ein Video hoch
    def uploadMovie
     @channels = Channel.all
     @vid = Movie.new(movies_params)

     @channel = Channel.find(params[:channel_id])
     @vid.channel = @channel

     if @vid.save
       flash[:notice] = t("flash.saved")
       render :add
     else
       render :add
     end
    end

    Do I have to do this in controller method or in the carrierwave uplaoder ?

    Update : I tried it this way :

    if @vid.save
     flash[:notice] = t("flash.saved")
     movieFile = FFMPEG::Movie.new(@vid.video.to_s)
     screenshot = movieFile.screenshot("uploads/screenshot", :seek_time => 10)
     render :add
    else

    But then I got tis error :

    s3.amazonaws.com/uploads/movie/video/6/2016-04-24_16.26.10.mp4' does not exist
  • Evolution #4158 (En cours) : Permettre de faire une mise à jour de spip qui posséde le même numéro...

    9 juillet 2018, par b b

    Es-tu certain,, as-tu testé ? J’ai souvenir que le loader récupère le zip à partir du moment où on le lance. Donc à partir du moment où tu es branché sur les zips de dev, il doit bien récupérer la dernière version en date du zip en question.

  • Evolution #3926 : Remplacement de safehtml par le plug htmlpurifier ou autre

    17 août 2018, par Guillaume Fahrner

    Après avoir passé pas mal de temps à chercher une solution sécurisée ET fonctionnelle, voilà ce à quoi je suis arrivé sans tout casser ou devoir normaliser "100ans d’historique". La version de SPIP utilisé est SPIP 3.2.1 [23954]. En court : j’inverse la logique actuelle et je fais confiance à la sortie de safehtml du plugin Purifier :

    j’ai modifié la fonction echapper_html_suspect() de inc/texte_mini.php, la fonction echappe_anti_xss() du plugin textwheel et 2 règles YAML et... c’est tout :

    inc/texte_mini.php :

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">echapper_html_suspect</span>(<span class="local-variable">$texte</span>, <span class="local-variable">$strict</span>=<span class="predefined-constant">true</span>) {
    2.     <span class="keyword">if</span> (!<span class="local-variable">$texte</span>
    3.         <span class="keyword">or</span> <span class="predefined">strpos</span>(<span class="local-variable">$texte</span>, <span class="string"><span class="delimiter">'</span><span class="content">&lt;</span><span class="delimiter">'</span></span>) === <span class="predefined-constant">false</span> <span class="keyword">or</span> <span class="predefined">strpos</span>(<span class="local-variable">$texte</span>, <span class="string"><span class="delimiter">'</span><span class="content">=</span><span class="delimiter">'</span></span>) === <span class="predefined-constant">false</span>) {
    4.         <span class="keyword">return</span> <span class="local-variable">$texte</span>;
    5.     }
    6.     <span class="comment">// quand c'est du texte qui passe par propre on est plus coulant tant qu'il y a pas d'attribut du type onxxx=</span>
    7.     <span class="comment">// car sinon on declenche sur les modeles ou ressources</span>
    8.     <span class="keyword">if</span> (!<span class="local-variable">$strict</span> <span class="keyword">and</span>
    9.       (<span class="predefined">strpos</span>(<span class="local-variable">$texte</span>,<span class="string"><span class="delimiter">'</span><span class="content">on</span><span class="delimiter">'</span></span>) === <span class="predefined-constant">false</span> <span class="keyword">or</span> !<span class="predefined">preg_match</span>(<span class="string"><span class="delimiter">"</span><span class="content">,&lt;</span><span class="content">\w</span><span class="content">+.*</span><span class="content">\b</span><span class="content">on</span><span class="content">\w</span><span class="content">+</span><span class="content">\s</span><span class="content">*=,UimsS</span><span class="delimiter">"</span></span>, <span class="local-variable">$texte</span>))
    10.       ){
    11.         <span class="keyword">return</span> <span class="local-variable">$texte</span>;
    12.     }
    13.  
    14.     <span class="local-variable">$safed_texte</span> = safehtml(<span class="local-variable">$texte</span>);
    15.     <span class="keyword">if</span> (<span class="predefined">strlen</span>(<span class="local-variable">$safed_texte</span>) !== <span class="predefined">strlen</span>(<span class="local-variable">$texte</span>)) {
    16.         <span class="local-variable">$texte</span> = <span class="local-variable">$safed_texte</span>;
    17.     }
    18.     <span class="keyword">return</span> <span class="local-variable">$texte</span>;
    19. }
    20. </span>

    Télécharger

    plugins-dist/textwheel/wheels/spip/echappe-js.php :

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">echappe_anti_xss</span>(<span class="local-variable">$match</span>) {
    2.     <span class="keyword">static</span> <span class="local-variable">$safehtml</span>;
    3.     <span class="keyword">if</span> (!<span class="predefined">is_array</span>(<span class="local-variable">$match</span>) <span class="keyword">or</span> !<span class="predefined">strlen</span>(<span class="local-variable">$match</span>[<span class="integer">0</span>])) {
    4.         <span class="keyword">return</span> <span class="string"><span class="delimiter">"</span><span class="delimiter">"</span></span>;
    5.     }
    6.     <span class="local-variable">$texte</span> = &#38;<span class="local-variable">$match</span>[<span class="integer">0</span>];
    7.  
    8.     <span class="keyword">if</span> (
    9.     (<span class="predefined">strpos</span>(<span class="local-variable">$texte</span>, <span class="string"><span class="delimiter">"</span><span class="content">:</span><span class="delimiter">"</span></span>) !== <span class="predefined-constant">false</span> <span class="keyword">and</span> <span class="predefined">preg_match</span>(<span class="string"><span class="delimiter">"</span><span class="content">,(data|script)</span><span class="content">\s</span><span class="content">*:,iS</span><span class="delimiter">"</span></span>, <span class="local-variable">$texte</span>) ) <span class="keyword">or</span>
    10.         (<span class="predefined">stripos</span>(<span class="local-variable">$texte</span>, <span class="string"><span class="delimiter">"</span><span class="content">on</span><span class="delimiter">"</span></span>) !== <span class="predefined-constant">false</span> <span class="keyword">and</span> <span class="predefined">preg_match</span>(<span class="string"><span class="delimiter">"</span><span class="content">,</span><span class="content">\b</span><span class="content">on</span><span class="content">\w</span><span class="content">+</span><span class="content">\s</span><span class="content">*=,i</span><span class="delimiter">"</span></span>, <span class="local-variable">$texte</span>) )
    11.     ) {
    12.         <span class="keyword">if</span> (!<span class="predefined">isset</span>(<span class="local-variable">$safehtml</span>)) {
    13.             <span class="local-variable">$safehtml</span> = charger_fonction(<span class="string"><span class="delimiter">'</span><span class="content">safehtml</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">inc</span><span class="delimiter">'</span></span>, <span class="predefined-constant">true</span>);
    14.         }
    15.         <span class="local-variable">$texte</span> = <span class="local-variable">$safehtml</span>(<span class="local-variable">$texte</span>);        
    16.     }
    17.     <span class="keyword">return</span> <span class="local-variable">$texte</span>;
    18. }
    19. </span>

    Télécharger

    plugins-dist/textwheel/wheels/spip/echappe-js.yaml :

    1. <span class="CodeRay">-
    2.   <span class="key">if_str</span>: <span class="string"><span class="delimiter">"</span><span class="content"><code class="echappe-js">&lt;script&lt;/span&gt;&lt;span class=&quot;delimiter&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; <br />
    3.  &lt;span class=&quot;key&quot;&gt;match&lt;/span&gt;: &lt;span class=&quot;string&quot;&gt;&lt;span class=&quot;delimiter&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;content&quot;&gt;{&lt;script.*?($|&lt;/script.

    Télécharger

    )isS"
    is_wheel : y
    replace :
    -
    type : all
    replace : htmlspecialchars
    is_callback : Y
    -
    type : all
    replace : nl2br
    is_callback : Y
    -
    type : all
    replace : "&lt ;code class=\"echappe-js\"&gt ;$0&lt ;/code&gt ;"

    - 
    if_str : "&lt ;"
    match : "&lt ;[a-z]+.* ?($|&gt ;)UisS"
    is_callback : Y
    replace : echappe_anti_xss

    plugins-dist/textwheel/wheels/spip/interdire-scripts.yaml :

    1. <span class="CodeRay"><span class="key">securite-js</span>:
    2.   <span class="key">if_str</span>: <span class="string"><span class="delimiter">"</span><span class="content">&lt;</span><span class="delimiter">"</span></span>
    3.   <span class="key">if_match</span>: <span class="string"><span class="delimiter">"</span><span class="content">/&lt;[a-z]+/iS</span><span class="delimiter">"</span></span>
    4.   <span class="key">type</span>: <span class="string"><span class="content">all</span></span>
    5.   <span class="key">replace</span>: <span class="string"><span class="delimiter">"</span><span class="content">echappe_js</span><span class="delimiter">"</span></span>
    6.   <span class="key">is_callback</span>: <span class="string"><span class="content">Y</span></span>
    7. </span>

    Télécharger

    Pour le moment, du coté des effets de bord/choses cassées (nos fonctions sont remplis de spip_log() et on affiche le code impacté par safehtml() pour identifier rapidement les régressions) :

    • le changement de statut via le survol des puces (onmouseover inline) n’existe plus car l’attribut onmouseover est supprimé par htmlPurifier (rien de compliqué a fixer à mon sens, mieux cela oblige à développer (très) proprement, jme propose pour le patch si besoin)

    Sinon pas de problème, on publie/modifie/supprime nos objets éditoriaux comme d’habitude, leur mise en forme n’a pas bougé, on install/update/supprime nos plugins, stats OK, config OK, etc, etc (cela fait déjà plusieurs jours que nous utilisons ces modifications).

    Coté performance, la machine virtuelle est suivi via SNMP/librenms et on ne voit aucune différence d’utilisation CPU (merci le cache SPIP et OPcache) entre avant/après. D’autre part, htmlPurifier n’est pas appelé tout le temps, loin de là, on ne passe que "rarement" les conditions dans echappe_anti_xss().

    Coté sécurité :

    Coté publication :
    Cela me semble risqué d’attendre une version majeure de SPIP avant de corriger ces problèmes de sécurité ; surtout que la transition peut se faire doucement en 3.2 avec une nouvelle version de textwheel et le remplacement (enfin) de plugin-dist/safehtml par htmlpurifier.

    En espérant que ça aide et vous serve de base pour la suite.

    g0uZ