1/17/2021

[Fr] La signature numérique de Sylae ? Bonjour Sisyphe, bienvenue en enfer

L'histoire suivante se passe sur le site Sylae, un site du service-public.

Quelques "MINUTES" pour afficher un formulaire de signature numérique ?!.

C'est forcément parce que vous êtes en train de me générer une clé avec une complexité de tarée right ? RIGHT ?

Moi dans ces cas là, j'ai juste pas la patience (après 10 secondes d'attente), je check le code-source.

Et comme c'est un service publique, il y a 80% de chance que ça soit un grand moment (Atos, CapGemini, Sopra, ... FTW).

(issTimeout=300)

"Allez, on va dire qu'au bout de 5 minutes, si le formulaire n'est pas chargé, c'est qu'il y a un problème".

NON MAIS LES GARS si vous n'étiez pas les services publics, la moitié du web aurait quitté cette page après 5 secondes !

Le script JS génère du mixed content, les mecs doutent de rien. OKLM.

Mais savez pourquoi ils affichent après 5 MINUTES le message: "Nous vous invitons à vérifier la configuration de votre poste de travail avec les pré-requis" ????????

En fait vous DEVIEZ savoir préalablement qu'il fallait lire un PDF pour ajouter des EXCEPTIONS à l'exécution de l'applet Java en HTTP (sisisisisi). 

Les mixed content en fait c'était pas un bug, mais une feature. 

Cher utilisateur, corrige le problème CHEZ TOI (pov' naz).

Fun fact: il n'y a pas de lien depuis le message pour vous guider vers "la configuration" optimale du "poste de travail" en question (ça serait trop vous aider bande de fainéant)

Une recherche google m'emmène le site d'une communauté de commune qui héberge le PDF DE Sylae.

En conclusion : 

  • on te fait dé-facto poireauter 5 minutes
  • on t'affiche un message pour te dire que t'es qu'une merde (je grossis à peine le trait) 
  • ... qu'il te faut vérifier la "configuration" de "ton poste de travail"
  • ... qui consiste à mettre en place un bypass sécurité

Quand on connait les deux grosses sociétés qui sont derrière le développement et l'hébergement de la majorité des applications des services publiques en France... 
... et le niveau des développements là bas 
... et leurs coût

Merci. Changez rien.

[Bonus] Si vous demandez l'impression manuscrite avec signature, on vous affiche ce message. Les mecs n'ont peur de rien.

[Bonus 2] Je vous explique la blague ou bien ?

[Bonus 3] "deployJava.js" quand même Oracle s'y met. La factorisation ? Pour quoi faire ?

Après 1h30 de bataille. 

  • Brave (good point) ne permettant même pas de désactiver le mixed-content. Contrairement à Chrome/Firefox.
  • Chrome/Firefox/Brave ne supportant plus Java. 
Je me décide à faire l'impensable :

... sauf que c'était trop demander à Microsoft:<+p>

C'est partiiiiiiiiiiiiiiiii... 

[3h plus tard. 3. Heures.] Et 1 VM et le vieux windows de ma femme. Toujours pas.

MAIS NOOOOOOON ! Redirection http => https => homepage

Les plus assidus remarquerons que la redirection depuis https va vers une adresse en ... http
A votre avis, le système Sylaé a: 

  1. enregistré mon mot de passe auto-généré MAIS en enlevant des caractères spéciaux SANS RIEN DIRE
  2. truncate mon mot de passe auto-généré de 22 caractères SANS RIEN DIRE

Et c'étaiiiiiiit ....... 🥁🥁🥁🥁 un truncate du mot de passe silencieux à 20 caractères

Maintenant retour à la case départ  😭

On notera le ©2014 en footer.  Mais QUI voudrait vous copier ??

+ 3 heures et 6 minutes

[Bonus je-sais-plus-combien] Le code d'erreur qui intègre l'adresse IP (privée) du serveur qui a traité la requête..

Début d'une 4ème tentative (+3h31). Si IE9+Win7 est trop récent, peut-être que WinXP fera l'affaire

La réponse est non

Fin.

12/06/2020

How to upload Shopify PDF invoices to Google Drive with Zapier

Yesterday I discovered that my fiancée was manually downloading every invoice (generated with Order Printer Pro app) from Shopify so then she could upload them to her Google Drive "invoices" folder. It's more than a hundred manual operations per month and that number is growing. FAST.

Let's automate that with Zapier 😇.

Step 1: Trigger Zap on new Shopify paid order

First thing first, create a new zap with a Shopify trigger "New Paid Order".

Step 2: Add some glue code

Sadly the Shopify connector does not expose metadata from apps like Order Printer Pro. We won't get the pdf invoice link for free. Hopefully we can download the receipt page html source code and extract the "Download Invoice" link from there.

Add a "Code by Zapier" step along in order to run JavaScript code. Setup the 3 inputs variables below:

Copy/paste the -good-enough- code below:

const order_name_as_file_name = inputData.order_name.replace('#', '-');

fetch(inputData.order_url)
.then((res) => res.text())
.then((body) => {
  const url_regexp = /href="(.*?)"/ig;
  let match;
  while(match = url_regexp.exec(body)){
    if(match[1].includes('.pdf')){
      return callback(null, {
        order_name: order_name_as_file_name, 
        invoice_url: match[1].replace('/.pdf', `/${inputData.order_number}.pdf`)
      });
    }
  }
  
  // we could not find the PDF invoice, fail loudly
 callback(`Could not find pdf URL in: ${body}`);
})
.catch((err) => callback(err));

Step 3: Upload PDF Invoice to Google Drive

One last thing, add a "Upload File in Google Drive" action, select your drive and folder. Select the "Invoice URL" we got from our previous step as the file parameter, customize the filename as needed and you are good to go!

Job done, you now get full tracability and alerting capabilities from Zapier, enjoy!

11/20/2020

How to fix "there is no timer running, must be called from the context of Tokio runtime"

Some context

You just tried to compile your Rust project and got the there is no timer running, must be called from the context of Tokio runtime error?

You are desesperatly trying to understand what is going on?

So did I!

For future reference, my project relied on tokio v0.3. I added a dependency (bollard) that was relying on tokio v0.2.

Even when my code was in the execution context of a tokio runtime (v0.3) calling bollard code triggered at runtime the there is no timer running, must be called from the context of Tokio runtime error.

How do I fix this?

Option 1: start a new runtime in tokio v0.2

Your first option would be to start another runtime in the same tokio version that your dependency requires, something like:

use tokio::runtime::Runtime;

// Create the runtime
let rt = Runtime::new().unwrap();

// Spawn a future onto the runtime
rt.block_on(async {
    // call your dependency
});

That would result in two threadpools so it might be an issue in some case. I did not go down this path

Option 2: use the same version that your dependency

It's the easiest option. Downgrade your tokio project dependency to v0.2 so it can be the same as your dependency. But yep, it sucks.

Option 3: send a patch to the dependency

Last option (and the best one) is to create and send a patch to your dependency project to upgrade its tokio version.

« »
 
 
Made with on a hot august night from an airplane the 19th of March 2017.