Un raccourcisseur d’url EDIT!

Aujourd’hui je me suis mis en tête de me faire un script php me permettant de raccourcir mes url.

Pourquoi ? Parce-que …

Parce-que j’avais besoin d’un raccourcisseur d’url qui n’espionne pas les liens que je souhaite raccourcir.

Voici le commentaire de début de mon script :

/***************************/
/* Auteur : Purexo : http://twitter.com/Purexo_
/*
/* Ceci est un raccourcisseur d'url
/* Il fonctionne en 3 temps :
/* 1- l'utilisateur rentre son lien à raccourcir
/* 2- le lien est rentré dans la base de donné, la page fournit à l'utilisateur son lien
/* 3- le lien fourni contient une variable a contenant l'id du lien demandé une requete sql fourni le lien grace à l'id puis la page redirige vers le lien
/*
/* Conseil d'utilisation :
/* - utiliser ce script sous le non de index.php dans la racine du serveur qui lui seras "dédié"
/* - faire un peu d'urlrewriting afin que http://hostname/id redirige vers http://hostname/index.php?a=id (afin d'avoir le lien le plus court possible)
/* - avoir un nom de domaine très court genre li.fr
/*
/* Pourquoi avoir fait mon raccourcisseur d'url ? :
/* - Pour m'entrainer
/* - j'en souhaitais un le plus minimaliste possible : pas de pub, pas de temps d'attente, pas de vérification d'url (ce qui est à la fois un avantage et un désavantage)
/*
/* Avantage et désavantage : 
/* le script ne vérifie rien, n'altère rien : il exécute, j'imagine que par conséquent il y a de grosse faille de sécurité, mais cela me permet d'entrer des liens
/* auto-destructible via zerobin sans que celui-ci ne soit analysé et donc détruit par une machine automatiquement.
/*
/* idée d'amélioration :
/* - fournir le lien avec l'id en hexadécimal. (toujours pour grappiller un peu de place)
/* - le remettre en décimal pour exécuter la requête sql avec redirection
****************************/

Je pense qu’après cela il n’y à pas grand chose à rajouter hormis le fait que j’utilise le SGBD mysql pour faire tourner ma BDD.

Voici mes sources :

short.php :

<?php
/***************************/
/* Auteur : Purexo : http://twitter.com/Purexo_
/*
/* Ceci est un raccourcisseur d'url
/* Il fonctionne en 3 temps :
/* 1- l'utilisateur rentre son lien à raccourcir
/* 2- le lien est rentré dans la base de donné, la page fournit à l'utilisateur son lien
/* 3- le lien fourni contient une variable a contenant l'id du lien demandé une requete sql fourni le lien grace à l'id puis la page redirige vers le lien
/*
/* Conseil d'utilisation :
/* - utiliser ce script sous le non de index.php dans la racine du serveur qui lui seras "dédié"
/* - faire un peu d'urlrewriting afin que http://hostname/id redirige vers http://hostname/index.php?a=id (afin d'avoir le lien le plus court possible)
/* - avoir un nom de domaine très court genre li.fr
/*
/* Pourquoi avoir fait mon raccourcisseur d'url ? :
/* - Pour m'entrainer
/* - j'en souhaitais un le plus minimaliste possible : pas de pub, pas de temps d'attente, pas de vérification d'url (ce qui est à la fois un avantage et un désavantage)
/*   Je pense rajouter une regex pour tester si c'est un lien, mais c'est tout (en meme temps si c'est pas un lien qui est fourni il n'y a aucun interet, que ce sois pour l'user, ou pour son stockage dans la BDD)
/*
/* Avantage et désavantage : 
/* le script ne vérifie rien, n'altère rien : il exécute, j'imagine que par conséquent il y a de grosse faille de sécurité, mais cela me permet d'entrer des liens
/* auto-destructible via zerobin sans que celui-ci ne soit analysé et donc détruit par une machine automatiquement.
/*
/* idée d'amélioration :
/* - fournir le lien avec l'id en hexadécimal. (toujours pour grappiller un peu de place)
/* - le remettre en décimal pour exécuter la requête sql avec redirection
****************************/

    $mysqli = new mysqli("localhost", "root", "********", "shorter"); //connection à la bdd (shorter c'est le nom de la base de donné')
    
    if(isset($_GET["a"])){
        $req = "SELECT link FROM links WHERE id = " . $_GET['a'] ;
        $res = $mysqli->query($req);
        $row = $res->fetch_assoc();
        $link = $row['link'];
        //echo $link;
        $test = header('Location: '.$link);
        //echo $test;
    }

?>
<!DOCTYPE html>
<html>
  <head>
    <title> Raccourcisseur d'url </title>
  </head>
  <body>
    <center>
        <h1> Bienvenue sur ce racoursisseur d'url </h1>
            <?php
                
                if(isset($_POST['lien'])){
                    $req = 'INSERT INTO links ( link ) VALUES ("'.$_POST['lien'].'")';
                    $mysqli->query($req);
                    $link = "https://purexo.tk/short.php?a=".$mysqli->insert_id; // ligne à changer en fonction de votre hébergement : http://hostname/nomduscript.php?a=
                    echo '<p><a href="'.$link.'">Votre Lien</a></p>';
                }
                
            ?>
            <form method="post" action="short.php"> <!-- nom de votre fichier.php -->
                <p>Votre lien à raccourcir</p>
                <textarea name="lien">https://purexo.tk/</textarea><br />
                <input type="submit" value="Envoyer" />
            </form>
    </center>
  </body>
</html>

shorter.sql :

CREATE DATABASE shorter;
USE shorter;

CREATE TABLE links (
  id bigint unsigned NOT NULL AUTO_INCREMENT,
  link text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (id)
);

Si vous avez des questions, des conseils (genre faille de sécurité) n’hésitez pas ^^ !

En attendant vous pouvez tester ça ici : short.php

 

EDIT :  j’ai maintenant un nom de domaine dédié pour ce service, le code source est dispo sur github et j’ai finalement opté pour SQLite3

Mapping Teeworlds

Teeworlds, un jeu que je connais depuis mon début lycée, un vrai jeu gratuit (et open-source) comme on en fais peu, un 2D plateforme shooter au graphisme simple mais néanmoins joli !

Je me suis remis au mapping sur ce jeu fabuleux, (l’editeur de niveau est très bien fichu)

Pour ceux que ça interesse j’ai fais plusieurs map, vous pouvez les visiter en vous connectant sur le serveur de staria (cherchez staria dans la liste des serveurs ou tapez simplement dans l’emplacement pour l’adresse ip : staria.fr).


Si ça vous interesse de faire des maps vous aussi :

Comme le dit l’adage

Pour vivre heureux, vivons cachés !
A cette fin j’ai forcé l’utilisation du https (SSL certificats, toussa koi !) sur mon site web.

Ceci permettant d’avoir une circulation des données entre le serveur et le client cryptées, ainsi quelqu’un de mal intentionné ou de trop currieux (sur un reseau wifi public par exemple, ou encore la NSA parano que nous sommes) pourras toujours evidement voir les données transitant, mais elle serons incomprehensible ^^.

Le certificat etant « Auto-Généré » les navigateurs ce mefient (ce qui est pleinement legitime), donc désolé pour le dérangement qu’a pus représenter le fait d’ajouter une exception pour ce site, je pense qu’à terme je me ferais faire faire un certificat par un autre site !

Bon à part ça, j’ai aussi configuré mon serveur pour utilisés les .htaccess de apache pour securiser via mdp quelques dossiers (c’est une des raisons qui m’a poussé à forcer l’activation de  SSL sur le site).

J’ai donné le nessessaire à Google, pour qu’il référence mon site correctement.

Je pense toujours à installer OpenVPN sur le serveur, mais j’ai pas trop le temps pour le moment (et une fois celuis ci fait pourquoi pas fournir quelques acces à mes amis)

J’ai taté pour installer le serveur mail, mais concretement, c’est la merde ! j’etais tombé sur un tuto pas trop mal, avec bdd et tout mais il n’etait pas à jours et le tuto remplis de fautes de syntaxe du à la sur-utilisation de differents guillemets inadéquat. et tout corriger c’est long, chiant et fastidieux… et apres ça marchais pas … Donc je verrai ça plus tard. (et pareil, une fois fais je pourrais proposer quelques adresses mails)

Voila pour l’avancement du site 😉