9ème séquence - Proxy féminisant internet

Langage libre
Equipe libre
Une semaine sans échange de projet

Créer un proxy web qui puisse retraité les pages visité par l’utilisatrice en y appliquant la / les modification(s) choisie(s) par l’équipe. (ex: stats des genre utilisés, remplacement de mot, mise en couleur, etc …)

Notions à aborder :

  • web
  • adresse IP
  • technologie réseau
  • DNS

Groupes :

https://practicingruby.com/articles/implementing-an-http-file-server

Ne vous inquiétez pas, je mettrais en page à la fin de la semaine bisous

3 J'aimes

Journal de Gwen

27.01.2020

On a vu comment fonctionne une recherche sur internet, les adresses IP (ipv ou
ipv6), la différences entre les adresses IP personnelles et publiques.

Une ipv4 se présente ... et chaque _ correspond à un chiffre entre 0 et 255.
Une ipv6 sera .....
L’adresse 127.0.0.1 correspond à l’adresse de base, qui signifie que c’est notre
machine, ce qui permet de faire un serveur ou un client sur le pc et non
connecté.
192.168.. ou 10.0.. sont les adresses données de base par les routeurs.
Si on va sur https://whatismyipaddress.com/ l’adresse affichée est celle du
routeur.
Chaque appareil connecté à internet possède une adresse ip.

Les DNS, Domain Name System, convertis l’adresse web (url) en adresse IP.

Il y a 65536 possibilités de port mais certains ports ont une utilité fixes:
Le port utilisé pour internet est le 80, celui utilisé en https c’est le 443.

Le proxy est un serveur qui permet de faire le lien entre l’ordinateur et
internet. On peut filtrer les rencherche en interdisant des URL, des mots clés …

Cet aprem, avec Zakia, on a pris le temps de se renseigner sur les proxy en
python, et on a nommé notre projet for_child-proxy . on a galérer à
comprendre quel type de proxy faire et comment, on se lancera surement
completement demain.
On a bien galérer avec l’écriture du serveur et au final on repartira à zéro car
ce qu’on a fait n’était pas complet.

28.01.2020

Arrivée en retard pour la plénière donc je n’ai pas tout compris.
L’après midi avec Zakia on a galérer à trouver un code proxy en python et on en a trouvé un mais il semble fait en python2.
On a utilisé sharemycode pour que zakia me passe le code qu’elle a trouvé car on a eu des petits problèmes git

29.01.2020

Abs

30.01.2020

Kheops nous a fait revoir les branches git et on a eu besoin de l’aide d’élodie pour résoudre les problèmes de push et de pull de notre git. On a appris quelques manipulation afin de « supprimer »" nos anciens commit pour revenir à une version égale sur les deux pc.

branches:

  • créer nouvelle branche
    git branch ma-nouvelle-branche
  • Pour se déplacer dans cette nouvelle branche
    git checkout ma-nouvelle-branche
  • Combiner les deux commandes précédentes avec :
    git checkout -b ma-nouvelle-branche
  • vérifier branche
    git branch

conflis:

  • mettre travail local de coté
    git stash
  • retourner en arrière jusque là ou tout le monde avait la même chose
    git rest --hard

commit:

  • voir les différents commits
    git log
  • voir les modifications des commits
    git log --stat

31.01.2020

Je n’ai pas été très productives aujourd’hui, mais j’ai été très surprise, gênée et contente des différents messages d’anniversaires.
Sinon, j’ai très envie de refaire du C et un peu de shell, je pense reprendre les exercices de la piscine de 42 au prochain forum ouvert.

Journal (lundi 27)

J’ai appris avec Mohamed comment utiliser les chiffres avec chmod.
Au départ, je n’utilisais que des options comme u+x.
J’ai compris qu’une option comme 744 était absolue, contrairement à +w par exemple qui dépend de l’état d’origine des permissions.

J’ai appris ce qu’était un proxy rien que ça.
J’entendais beaucoup cette notion sans jamais vraiment la comprendre auparavant.
J’ai appris que ce n’est ni plus ni moins qu’un serveur et un client.

J’ai appris à ouvrir un serveur en python.
J’ai appris à utiliser les objets de la bib standard pour convertir b'' en objet.
C’est utile pour convertir la requête du client et l’utiliser ensuite avec requests.
J’ai appris que b'' représentait une chaîne de bytes en python.
C’est cohérent avec le fait que f'' représente une String formattée.

Journal (mardi 28)

J’ai appris qu’en python il y avait la même différence entre func et func() qu’en js.
Le premier correspond à l’addresse mémoire de la fonction, le second le retour de son appel.

J’ai appris que 0.0.0.0 était un alias pour « toutes les ip » (« et tous les ports? »).
J’ai compris que notre code ne fonctionnait pas pour les raisons pour lesquelles je pensais qu’il fonctionnait.
Je ne suis pas sûr d’avoir compris pourquoi il fonctionnait.

Journal (mercredi 29)

J’ai appris à faire de l’héritage d’objet en python.
J’ai appris à utiliser le builtin super() pour appeler une méthode du parent.
J’ai un peu mieux compris par intuition l’usage de self, argument un peu caché…
J’ai appris à mieux utiliser import, from, as et la notion de module.

J’ai appris avec Mohamed que ^D dans vim voulait dire « scroll down »
Par déduction, on a appris que ^U voulait dire « scroll up ».
Je ne sais pas si c’est plus pratique que H et L cependant.

J’ai appris que l’on pouvait faire file:///dev/null dans un navigateur (ça n’a pas d’intérêt)

Journal (jeudi 30)

J’ai appris beaucoup de choses sur l’administration de base de données.
Je prie ma mémoire pour m’en souvenir en temps voulu, ce n’est pas une bonne idée.

Lætitia nous a parlé de ça : art-mella.

J’ai appris en le faisant un peu au pif l’intérêt de documenter avant d’écrire le code.
J’ai appris avec Mohamed à faire des dessins pour planifier le projet.

Plénière sur le protocole HTTP

HTTP : Hyper Text Transfer Protocol. C’est une syntaxe commune parlée par les navigateurs web (aussi appelés clients) et les serveurs, où sont hébergés les sites web.

Dans le cas particulier d’un serveur mandataire (proxy), il est à la fois serveur (pour recevoir la requête du client) et client (pour faire transiter la requête vers le serveur).

Nous avons examiné le contenu de l’échange entre un client et le serveur sur perdu.com. Le client envoie ces données :

GET / HTTP/1.1
Host: perdu.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0)
Gecko/20100101 Firefox/60.0
Accept: */*

Les deux premières lignes permettent d’identifier le site qu’on veut contacter (perdu.com, deuxième ligne) et le chemin de page à visiter (/, première ligne).

Ces quatre ligne correspondent à des en-têtes HTTP.

Le serveur a répondu avec ces données :

HTTP/1.1 200 OK
Date: Tue, 28 Jan 2020 12:45:06 GMT
Server: Apache
Upgrade: h2
Connection: Upgrade
Last-Modified: Thu, 02 Jun 2016 06:01:08 GMT
ETag: "cc-5344555136fe9"
Accept-Ranges: bytes
Content-Length: 204
Vary: Accept-Encoding
Content-Type: text/html

<html><head><title>Vous Etes Perdu ?</title></head><body><h1>Perdu sur l'Internet ?</h1><h2>Pas de panique, on va vous aider</h2><strong><pre>    * <----- vous &ecirc;tes ici</pre></strong></body></html>

Les 11 premières lignes sont les en-têtes HTTP émis par le serveur. Pour le proxy féminisant, c’est le corps de la réponse, qui contient le code HTML, qui nous intéresse. Il est séparé du bloc d’en-têtes par un double saut de lignes.

Plénière sur les branches git

J’ai eu l’impression de remarquer qu’il y avait encore de temps en temps des personnes qui hésitaient à pousser du code dans le dépôt partagé de leur équipe, par exemple.

J’ai montré les opérations autour des branches pour qu’on se sente aisément libre de « tout casser » dans un projet ou simplement travailler sur une fonctionnalité sans perturer le reste du projet.

Pour créer une branche ma-nouvelle-branche

git branch ma-nouvelle-branche

Pour se déplacer dans cette nouvelle branche :

git checkout ma-nouvelle-branche

Alternativement on peut combiner les deux commandes précédentes avec :

git checkout -b ma-nouvelle-branche

Une fois dans la nouvelle branche, on peut faire des commits et des pushs autant qu’on veut sans perturber le travail dans la branche master. Lors du tout premier push, git va nous demander d’associer la branche locale qu’on a créee à une branche sur le dépôt distant, avec :

git push --set-upstream origin ma-nouvelle-branche

Ensuite on fait des pushs classiques.

Lorsqu’on est contente du travail réalisé dans la nouvelle branche, on peut la fusionner dans master pour intégrer la nouvelle fonctionnalité implémentée :

git checkout master
git merge ma-nouvelle-branche

Un excellent tutoriel pour apprendre à manipuler git ici.

Témoignage de Laetitia AVROT

twitter = @l_avrot
mail laetitia.avrot@gmail.com

DBA = Data Base Analyst
C’est un métier qui recrute énormément même en étant junior, ils abandonne le SQL et
reviennent en relationnel

A fait une école ingénieur informatique, a travaillé à INSA lyon, d’abord à déboger pour orange (à l’époque France Télécom) puis a été chez ATOS WORLDLINE, a traviller sur SQL serveur, oracle, DBE = sous traitance de celio, IGN, PMU, ASN et quelques autres

Elle a fait un passage chez easyteam mais ça ne lui a pas vraiment convenu et ça a fini de manière assez compliqué.
Par la suite, elle est embauchée en tant que DBA chez APICIL mais ils n’en avaient pas vraiment besoin. Ils étaient en progiciel et elle a trouvé usant de faire des choses
inutiles.
Elle est passé chef de projet sans projet et a décider de quitter l’entreprise.

Elle a ensuite été chez CMRE ou elle a vécu un harcèlement moral par une personne, en vérifiant en permanence ce qu’elle disait, on ne la prenait pas au sérieux.
Elle a apprit qu’il ne fallait pas se recroqueviller et ne pas laisser passer ce genre de chose.

Elle a été en mission chez Oriolis où a compris qu’elle ne voulais plus être chef de projet car c’est frustrant de gérer les problèmes humain et de se rendre compte que ça ne suffit pas toujours de tout donner.

Elle a été prise à Loxodata, elle cherche à diversifié les personnes ans le milieu tech, et a tenté de féminiser le vocabulaire, de rendre moins sexiste le milieu.

Jeux vidéos : elle s’y est ennuyé et ils étaient en pleine transition.

EDB Postgres : c’est la version payante de postgres. Elle y travaille en tant que consultante, en veille techno, donner des conférences et réparer les problèmes des clients.

Base de sonnées:

  • donnée : représentation conventionnelle d’une information en vue de son traitement informatique
  • information : élément de connaissance susceptible d’être représenté à l’aide de conventions pour être conservé, traité ou communiqué.
  • base de données : ensemble structuré et organisé de données qui représente un système d’informations sélectionnées de telle sorte qu’elles puissent être consultées par des utilisateurs ou par des programmes.
  • stratégie, enjeux : connaissance, prédiction, anticipation …

Les rôles de DBA

Il n’y a pas d’étude et les missions diffère entre chaque entreprise.

  • DBA étude : c’est celui qui va définir le modèle
  • DBA recette : scrute tout ce qui se passe lors des phases de recette et sert à les améliorer. La phase de recette c’est la phase de test.
  • DBA production : gère tous les problèmes de production « une journée avec problème est une bonne journée »
  • DBA support : en général extériorisé, sert à aider les dev ou aide à débloquer les problèmes
  • formations : sert à mettre à niveau, à comprendre le pourquoi du comment
  • expertise : expliquer comment résoudre le problème, apporter des solutions adaptés au problème après avoir écouter. Ne pas avoir peur des voyages !

Les rôles du DBA sont la plupart du temps fondus ensemble pour des raisons budgétaires.

Personne ne comprends le métier de DBA, un DBA qu’on ne voit pas c’est un DBA qui fait bien son travaille : il n’y a pas de problèmes.
Le 1er vendredi de juillet, c’est journée pour dire merci à son DBA.
Le dernier vendredi de juiller, journée pour dire merci aux sys-admin.

La communication

  • Ne jamais prendre une remarque personnellement
    La plupart du temps c’est en rapport avec votre post

  • Ne jamais « attaquer »
    Ne pas dire qui a fait quoi, mais plutôt gérer le problème et peut être en parler plus tard

  • Rester calmer, relativiser

  • Sourire

  • Saluer

  • Discuter (de tout et de rien) tisser des liens avant un incident permet de mieux gérer les crises

  • Décrocher le téléphone quand il sonne

  • Être disponible / se rendre disponible

  • Respecter ses engagements

L’éthique

  • Demander un ordre écrit sur les consignes douteuses

  • Se réserver le droit de dire « non »

  • On peut dire « non » de manière agréable

  • Imaginer les situations « limites »

  • Vous restez responsables de vos actions

    • Scandale VolksWagen
    • 2e Procès Nuremberg

Gérer la tension

  • surtout rester calme, quoiqu’il arrive!

Avant:

  • Préciser l’architecture en fonction du besoin
  • Préciser les risques

Sur le moment:

  • Vous rendre disponible
  • Faire une analyse factuelle sans accusation (utilisation du passif)
  • Expliquer de manière claire (= non technique)
  • Dire si on est fatigue / pas à l’aise et laisser la main à quelqu’un d’autre

Après:

  • Réexpliquer les prérequis, les normales, le fonctionnement d’une instance
  • Proposer des améliorations pour éviter que le problème ne recommence

Journal de Lydia

PROXY POUR FEMINISER LE WEB

  • 27/01/2020

https://fr.wikipedia.org/wiki/Proxy definition wiki

Routeur

IPV4
IPV6

192.168.0.1
IP régulièrement vu
127.0.0.1 : est une exception = la machine
généralement on créé un site et qu’on souhaite s’y connecter

Parallèle avec une adresse dans un immeuble
Adresse et complément d’adresse (étage et porte)
Même adresse mais pas même porte

IP statique ou dynamique
Chez Orange, devrait être dynamique

IP publique, IP privée

Adresse MAC : identifie la carte réseau

DNS : https://fr.wikipedia.org/wiki/Domain_Name_System

Un proxy est un serveur, donc une machine à part.
Pourquoi un proxy : connaitre les sites visités, interdire des sites, modifier du contenu
Interdire spécifiquement une URL ou interdire certains mots clés

  • 28/01/2020

Get / HTTP/1.1\r demande de co
Host: url\r définit vers quel url

Mitmproxy

Entête n’apparaissent pas.
C’est une partie protocolaire

Protocole TCP = protocole connecté
Protocole UDP = streaming video
Protocole ICMP = protocole non connecté

Web = ce qu’il se passe dans le navigateur
Internet = Réseau qui relie machines entre elles

  • 29/01/2020

Branches - Git

Commande pour créer une branche :
git checkout -b nom du projet
Ou git branch sans argument

Git checkout
Git switch
Basculer d’une branche à une autre

-m ou -s
-s : ajout le signed of by nom de la personne qui a commit

Git merge : ramène le fichier vers master

Voir fetch

Git rebase -i
Pour faire un historique plus propre ?

accept()
fork()
https://ruby-doc.org/stdlib-2.4.0/libdoc/socket/rdoc/TCPServer.html