Stickers perso

En rangeant ma tanière mon bureau, j'ai retrouvé des feuilles de stickers pour mon imprimante et du coup, j'ai pris un moment pour refaire des autocollants.

Le lien du PDF est juste en dessous, au cas où ça intéresse quelqu'un.

stickermini.jpg

Téléchargement.

Install – Nextcloud

Bon, j'ai enfin pris le temps de regarder sérieusement nextcloud à la faveur de l'arrêt de la version proposée en demo dans l'académie de Rouen et que mon épouse utilisait beaucoup.

Mazette !

J'en étais resté à mes tentatives d'install qui foiraient sur mon O2switch: une fois à l'époque où il apparaissait dans les applis softaculous du Cpanel, puis une autre quand il avait disparu de là.

Pas un bon  souvenir

J'avais galéré pour à peu près tout, en bon poissard.

Et là...

j'étais obligé de m'y coller vu que j'avais fanfaronné en disant à mon épouse que son «renata» c'était «juste du nextcloud» et que j'allais te me lui résoudre, moi, le problème...

Après quelques déboires avec une install que je passe parce qu'elle serait fastidieuse et hors de propos, je me suis aperçu que mon hébergeur, o2switch, propose toujours ce service, mais à part: il est accessible en un clic depuis l'espace client (et pas le Cpanel): je sens bien l'équipe qui en avait marre de dépanner des bidouilleurs qui avaient planté leur nextcloud en faisant joujou avec depuis le cpanel.

LOL

Bref, une fois le service demandé par le biais du lien qui va bien idoine à mon propos, je reçois un mail de confirmation une grosse paire de minutes plus tard. Dans le mail, mes identifiants et le lien vers mon nextcloud...

Ça marche et c'est   configuré automatiquement  avec les dépendances  la base de données tout !
Mais l'URL est à chier, pitin !  à quoi ça sert d'avoir un nom  de domaine si c'est pour se  retrouver avec une URL à la  mords-moi le zboub impossible  à mémoriser...pfff !
Ferme ta yueule, ça fonctionne   sans que j'y passe trois plombes.    On va faire une URL de redirection  pis c'est marre.

Les applis

Autre avantage de Nextcloud, ya des applis pour tous les systèmes, je récupère donc celle pour linux et celle d'Android.

Si l'adresse de téléchargement pour linux ne fonctionne pas, en voici une autre: https://download.nextcloud.com/desktop/daily/Linux/

On lance, on se connecte, on clique sur autoriser pis ça fonctionne. Une fois qu'on a spécifié un dossier local avec lequel synchroniser le claoude, ça fait le job direct.

J'ai procédé de même sur Android en passant par F-droid, rien à dire à part que c'est über simple. Vraiment.

tropcalme.jpg

Nextcloud: l'UI

Rien à redire, même si on a parfois des problèmes pour retrouver où sont les choses, c'est propre. par contre, la pitin de popup pour «nextcloub hub», ça fait biiiieeeennnn chier de la revoir à tous les chargements de page. donc, pour la virer, direction l'icône de votre profil->applications puis désactiver «first run wizard»

Super intuitif, les gars...  Si,si, vraiment...

Conclusion

Ben, ça fait le job, ça synchronise impec, on peut partager des dossiers temporairement, en écriture ou en lecture seule, ajouter des applis et des users, ya des applis desktop et mobiles...

C'est tellement bien que je ne vois vraiment pas pourquoi je continuerais à bosser sur BoZoN !

Franchement, je suis en train de faire à peu près la même chose de mon côté. Sérieux, ça vaut pas tellement le coup de bosser autant pour faire sans doute moins bien (en particulier du point de vue de la sécurité).

Allez, hop: Bozon aux archives...

Plinstagram: j'ai trouvé Euréka pis tout ça... Modsecurity

Yesss ! J'ai trouvé   pourquoi  ça bloquait !

Dans Cpanel, il y a une option activée par défaut, c'est le module ModSecurity qui est là précisément pour kéblo les requêtes un peu... comment dire... originales ? exotiques ? Bref, exactement celles que semble faire Plinstagram.

modsecurity.jpg

https://www.webfulcreations.com/how-to-fix-an-appropriate-representation-of-the-requested-resource-could-not-be-found-on-this-server-this-error-was-generated-by-mod_security-error/[/center]

Une fois ce module désactivé, la requête aboutit bien à la page article.php...

Chus trô cônten !  Comment j'a pô  lâché l'affaire
Mais bon, premièrement je suis  cramé et j'ai passé deux jours   là-dessus par pure obstination.
Et deuxièmement, je ne suis  pas persuadé qu'il soit très   malin de laisser désactivé un   module d'Apache qui protège le   serveur des requêtes malignes...

Bref: pain.jpeg



Mardi 1 Mars 2022: Plinstagram, c'est toujours pas ça... [Edit à 14:23]

Précédemment sur le Warriordudimanche: https://warriordudimanche.net/index.php?article1636/ya-pas-que-les-voitures-qui-sont-allergiques-vanille-php-aussi-fait-trucs-passionnants-help

Bon, je bosse dessus parce que je suis entêté et que j'aime bien comprendre mais là... j'ai du mal.

Ce que j'ai fait

Côté frontend

  • J'ai épuré mon code JS au max
  • j'ai simplifié le formulaire en laissant tomber les noms de fichier: je n'envoie que le contenu de l'image en base64 et je génère un nom backend.
  • j'ai changé l'ajout des hidden servant à transmettre les images au format base64: au lieu de les ajouter au fur et à mesure de la génération des images redimensionnées, je les crée dans l'événement onSubmit du formulaire.
  • j'ai essayé de virer l'enctype du formulaire vu que, avec l'URL_rewriting à off j'obtenais une erreur 406 en distant... J'ai même essayé en text/plain pour voir... C'est pas ça.

    Capture du 2022-03-01 11-03-18.png

côté backend

  • j'ai simplifié au max
  • j'ai ajouté la création d'un nom de fichier local (l'extension est déduite des données base64 qui démarrent comme suit: base64:image/jpeg ...)
  • j'ai regardé, en local, la taille des données envoyées:
    'data' => 
      array (size=6)
        0 => string 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAOEBLADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1'... (length=286259)
        1 => string 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAOEBLADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1'... (length=782555)
        2 => string 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAOEBLADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1'... (length=900279)
        3 => string 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCASwA4QDAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1'... (length=903563)
        4 => string 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAOEBLADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1'... (length=636547)
        5 => string 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAOEBLADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1'... (length=1020399)

Je sais, on a l'impression que c'est toujours la même image mais en fait non... c'est sans doute dû au fait que base64 est très verbeux et que le début est toujours le même pour des images.

Le tout fait un post d'environ 4.5 Mo ce qui n'est pas choquant dans un formulaire multipart/form-data et reste très en dessous des limites de PHP_INI sur le serveur.

Aucun fichier .htaccess ne vient non plus foutre le bran...

HELP

Encore une fois, ça marche impeccable en local.

J'ai commenté au max mon code pour le cas où quelqu'un se sent de regarder, parce que pour ma part, je commence à voir flou et à avoir des hallucinations... je vous mets un zip: http://warriordudimanche.net/vrac/Plinstagram.zip

PISTE DE RECHERCHE

Omagad ! en cherchant, j'ai trouvé un truc: un problème éventuel avec ModSecurity disponible sur CPanel ( https://doc.ubuntu-fr.org/modsecurity & https://www.webfulcreations.com/how-to-fix-an-appropriate-representation-of-the-requested-resource-could-not-be-found-on-this-server-this-error-was-generated-by-mod_security-error/ ) En le mettant sur off depuis cpanel, mon script parvient à la page article.php !

Bon, ça fait une erreur de token, hein, mais on progresse !!!

Ya pas que les voitures qui sont allergiques à la vanille... PHP aussi fait des trucs passionnants. HELP

(wink @Sebsauvage : https://sebsauvage.net/links/?-WagqA )

Bon, accrochez-vous les lacets,   mettez du collyre, prenez un   Xanax, parce que là,   j'ai besoin de parler.

Je me suis aperçu que mon plugin Plinstagram faisait des trucs étranges et refusait parfois de poster. Pensant à une erreur d'identification, j'ai repris le code mais rien n'y faisait.

J'ai commencé à avoir des problèmes de redirection incompréhensibles: le header("location") ne fonctionnait pas (voir https://warriordudimanche.net/article1635/1635 )

Une fois la ruse très moche appliquée, ça semblait revenu à la normale. Puis j'ai décidé d'aller marcher un peu et j'ai pris des photos dans l'idée de tester à nouveau Plinstagram.

Et là, c'est le drame

J'ai beau tout essayer, pas moyen d'envoyer le post avec les photos... mais curieusement, j'aboutis à une erreur 404 et pas à une erreur d'exécution. Je me dis que ça doit être un problème de taille de formulaire et je me rappelle que, comme un con, j'ai omis de virer l'input files du formulaire avant envoi. J'explique rapidement comment fonctionne Plinstagram:

Côté JS

1 - l'utilisateur sélectionne des photos sur son ordinateur

2 - pour chaque image, le script js se charge de:

  • récupérer les images sélectionnées,
  • créer une miniature avec un canvas
  • stocker l'image réduite sous forme de donnée base64 dans un input hidden (avec le nom de fichier dans un autre input hidden) créés à la volée

Ainsi on obtient un $_POST[data] et un $_POST[filename] qui contiennent chacun un tableau avec les données de chaque image pour l'un et le nom de chaque image pour l'autre.

Quand on poste, le script vire l'input file pour éviter l'upload de grosses photos.

Côté PHP

Vient ensuite le hook AdminArticlePrepend de la page core/admin/article.php vers laquelle pointe le formulaire de plinstagram: celui-ci se charge de :

1 - parcourir l'array des images redimensionnées postées en base64,

2 - récupérer le nom de chaque image

3 - sauvegarder localement chaque image dans un sous-dossier dédié à l'article

4 - générer une galerie qu'il ajoute au corps du post

5 - finaliser la création des données de l'article.

À ce moment-là pluXML reprend la main et s'occupe du stockage de ces données.

Quand je teste en distant (sur WDD)

Avec une photo, tout se passe normalement. Si j'en mets ne serait-ce que deux, pluXML me renvoie à la page 404, comme si l'URL était fausse: or, il n'en est rien ! L'URL de la barre d'adresse est la bonne, celle du formulaire aussi... pourtant, avec plus d'une photo, la requête n'arrive jamais à core/admin/article.php

Pire, une fois sur la page 404, si je clique dans la barre d'adresse puis que j'appuie sur entrée, j'arrive sans encombre à la page voulue (mais sans les données de formulaire bien entendu): l'URL est donc bonne.

J'ai pensé à une redirection foireuse mais la seule redirection qui reste est celle qui se fait AVANT le formulaire et seulement dans le cas où l'utilisateur n'est pas connecté.

Et puis ça ne semble pas être la faute de mon script PHP vu qu'on n'arrive même pas jusqu'à lui (j'ai collé des exit('moncul'); partout pour voir et rien !)

Quand je teste en local... ô surprise!

TOUT FONCTIONNE SANS PROBLEME ! (le fameux «ça marche sur mon ordi»)

  • J'ai pensé à un problème de version de PHP: j'ai essayé de changer et c'est pas ça
  • j'ai songé à une limite de la taille de fichiers ou la limite de taille de post... c'est pas ça (puis ça générerait une erreur, pas un pseudo 404)

Pour résumer

index.jpeg

Conclusion

J'en suis à me dire qu'il doit y avoir un genre de restriction pour la taille des données contenues dans des inputs et que cette restriction ne doit pas être la même en local.

Une autre piste que je dois explorer est une éventuelle incompatibilité entre deux plugins... Mais je vois pas lesquels et pis là, faut que j'aille pleurer d'abord.

EDIT dix minutes plus tard:

Tiens, la différence entre le local et le distant, c'est la configuration du rewrite URL dans pluXML: activée en distant. Je mets sur OFF et là, j'obtiens une erreur 406:

Not Acceptable: An appropriate representation of the requested resource could not be found on this server.

ça progresse. Je retourne pleurer.

Cette conférence sur le thème de   la loose en programmation et la   remise en question de mes   passions, compétences et priorités   générales dans la vie est à présent   terminée... Vous pouvez disposer.

J-58 - YouTube

Bon, celle-là est magnifique aussi ! Macron et les candidats VS un mec qui chasse les ours torse nu... 'tain, je suis mort de rire. Jaune, hein, mais mort de rire quand même...

EDIT: OMAGAD, Naïm a fait un sketch dans sa semaine de Naïm sur le sujet ! https://www.youtube.com/watch?v=5vTNgxBPQ10 Lol!



Le "POUUUURKOOOOOOAAAA" du jour

Quand

  • avant ça marchait bien
  • ça fonctionnait sur tous supports et navigateurs
  • ça redirigeait impec sur la page de login si pas connecté

Mais que

  • ça marche plus
  • sur aucun navigateur
  • que c'est pas un souci de session
  • ni de cookie
  • que header('location... ') ne redirige pas du tout
  • qu'il n'y a aucune erreur affichée même en E_ALL
  • qu'aucune sortie n'a été faite avant header()
  • que t'avais ABSOLUMENT PAS prévu de passer ta journée à corriger un bug de plugin pluXml
  • que tu commences à envisager sérieusement de mettre fin à ta misérable existence

Ben tu ponds une horreur, un patch façon pelle de chantier.

Tu colmates au lieu de résoudre.

Parce que tu comprends pas.

Tu as honte.

Tu te refais un café.

Tu postes ton désarroi.

Journal de campagne de Pierre Emmanuel Barré J-61 - YouTube

Via https://journaldecampagne.pebarre.com/videos-gratuites ...

plus que 61 jours 2 heures 7 minutes et 53 secondes avant l'élection présidentielle et le gouvernement aurait enfin trouvé une solution pour lutter contre l'abstentionnisme :

  • le respect desprogrammes électoraux ? Non,
  • un mandat unique non reconductible ? Non,
  • la révocabilité des élus ? Non,
  • la prise en compte des décisions des conventions citoyenne ? Non...

Je sais pas... quand même pas des vidéos poignantes sur tik tok et snap chatte qui disent aux jeunes que «leur destin est entre leurs mains et qu'il faut qu'ils aillent s'inscrire sur les listes électorales parce que choisir c'est agir» ?!

Si...

Fil RSS des articles