Gitlab – Connaitre l’adresse email d’un utilisateur

Bonjour à tous et à toutes !

 

Tout d'abord, je vous remercie de votre patience, en effet mes publications ont connus il y a quelques années un rythme effréné de 3 à 4 publications par semaine, qui s'est aujourd'hui  stabilisé aux alentours de 1 à 2 par mois.

Comme je vous l'ai annoncé précédemment, j'ai décidé de prendre un peu de recul sur certains de mes choix de vie, et cela passe également par la vie de ce blog.

Aussi, j'ai décidé (entre autres) de devenir contributeur dans quelques projets Open Source.
Il s'agit là d'un investissement en temps, mais qui rentre dans cette philosophie que j'ai essayé de vous transmettre : Le partage.

Un de mes proches amis m'avait fait part de son expérience dans cet univers, il était contributeur sur KDE.
Cela lui a ouvert des portes, et même fait voyagé aux frais de ... Google

Enfin, vous pourriez être sans le sou, mais avoir de multiples compétences et un peu de temps :

  • Faire du développement
  • Faire du design
  • De la recherche de bug
  • Des propositions de fonctionnalités
  • Du testing
  • De la traduction
  • ...

L'Open Source, c'est de permettre à tout le monde de faire évoluer les choses, c'est de proposer des alternatives très souvent gratuites que vous utiliserez au quotidien dans votre vie personnelle et professionnelle !

Mais l'Open Source c'est aussi la fierté d'avoir créé une toute petite bricole à l'intérieur d'un gros projet qui se retrouvera distribué et utilisé par des milliers de personnes.
Ce n'est donc pas négligeable en terme de satisfaction personnelle.

Gitlab dans tout ça

Gitlab est une plateforme et un outil de versionning.
De nombreux projets ont recours à ce genre d'outils qui sont très utiles lorsqu'il s'agit de travailler collectivement, et sur plusieurs partie d'un projet. Cela permet entre autres de :

  • Créer simultanément des fonctionnalités / corriger des bugs sur un projet sans déranger le copain qui travaillera peut être sur les mêmes fichiers que vous
  • Revenir en arrière, lorsque l'on se rend compte d'une erreur, d'un dysfonctionnement
  • D'avoir un suivi de qui fait quoi
  • D'avoir d'un coup d'oeil la vie complète du projet
  • ...

Bref vous l'aurez compris ça permet pas mal de chose !
Cependant, si vous n'êtes pas admin, ou si vous n'avez pas les bons droits, vous ne pourrez pas faire ce que vous voulez. D'où l'écriture de cet article qui vous permettra facilement depuis votre navigateur de récupérer l'adresse mail d'un contributeur !

 

Récupérer le mail d'un contributeur Gitlab

 

J'ai écrit un script qui vous permettra facilement depuis votre navigateur de récupérer l'adresse mail d'un contributeur (sous condition que celui-ci ne l'est pas mise en privée).
Pour cela il vous suffit simplement de:

  1. Vous rendre sur le profil de l'utilisateur.
  2. Ouvrir votre console (touche F12)
  3. Allez sur l'onglet "console"
  4. Copier-coller le code ci-dessous
  5. Valider par la touche entrée de votre clavier
  6. Patienter
/*
*
*	(c) Dyrk.org 2020 -2021
*	Dave - Hill
*	Get the email's user of Gitlab member
*
*/
var users = {},
	/* Extract Users from url */
	user = /\/users\/([A-Za-z0-9\-\_]{1,30})\/|([A-Za-z0-9\-\_]{1,30})$/g
		.exec(document.location.toString()),
	user = user[1] ? user[1] : user[0],
	/* Make synchronous GET request */
	wget = (url) => {
		rq = new XMLHttpRequest();
		rq.open('GET', url, false);
		rq.send();
		return rq.responseText;
	},
	/* Change the current url with a relative path */
	toReplace = new RegExp('(\/users.*)|(\/'+user+'.*)'),
	setUrl = (relPath) => document.location
							.toString().replace(toReplace, relPath),
	/* Extract the project list of user */
	extractProjectName = html => {
		try {
			return JSON.parse(html).html
				.match(/data\-qa\-project\-name\=\"([A-Za-z0-9\-\_]{1,60})\"/g)
		} catch (e){
			return [];
		}
	},
	/* Extract the user's list */
	extratMailUsers = html => {
		try {
			return JSON.parse(html);
		} catch (e){
			return [];
		}
	},
	/* 
		Below the main action:
		(1) 1st Download the user's projects
		(2) 2nd Get & store all the contributors datas of them
		(3) Display the datas of the user
	*/
	personalProject = setUrl('/users/'+user+'/projects.json'),
	projs = extractProjectName(wget(personalProject)).map( proj =>/"(.*)"/.exec(proj)[1])
	.map( proj => extratMailUsers(wget(setUrl('/'+user+'/'+proj+'/-/graphs/master?format=json'))))
	.map( usr => usr.map( el => users[el.author_name] = el.author_email ));
console.log(users[user]);

Au bout de quelques secondes, vous devriez voir apparaître l'adresse email.

 

Que fait ce script ?

Rien de mal, rassurez-vous, il ne s'agit pas d'une vulnérabilité de catégorie 9/10 #CVE
En réalité, le script va simplement déterminer le nom d'utilisateur de la personne dont vous consulter le profil. Elle consultera ensuite ses projets personnels, et ira voir la liste des "contributeurs" de ces projets. Sur la page contributeur d'un projet, les adresses emails sont affichées, c'est ici le script ira chercher l'utilisateur et son mails.

 

 

Conclusion

Bien que la finalité de cet article soit de vous partager un script qui vous sera utile ou pas, car il existe d'autre moyen d'accéder à ses emails en ligne de commande, j'espère vous avoir donné envie de contribuer à des projets Open Source !
Et pour reprendre un slogan très connu "Venez comme vous êtes !"

 

Partagez ce contenu

2 comments

  • Hey Dyrk,

    merci pour tout ce que tu partages !

    si tu as une astuce similaire afin de récupérer le mail ou numéro de tel sur les réseaux tels que Facebook, Twitter ou autre , n’hésite pas ;)!

    au plaisir de te lire ;).

    • Merci de ton soutien Diego ;)

      Pas de souci pour ta demande si l’occasion se présente à moi et que j’ai un truc bien solide et surtout stable à présenter sur le sujet ça sera fait ^^

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *