Captures écrans de Yamm (map maker)
Publié par The Troll le 19 04 2015

les choix de configurations

choix de configuration

En action

screen de yamm
Jeux - RPG - Commentez
Un petit jeux pour android
Publié par The Troll le 21 04 2015

Réalisé avec bennuGD pour m'amuser avec mon gamin. Sans prétention il permet de passer un peu de temps.

splashscreen du jeux space shooter

Il se joue avec le doigt, le vaisseau suivant le doigt. Il tire lorsqu'il touche le doigt. C'est plus un essai de gameplay qu'un jeu qui va me/nous rendre riche.
En action :

screen du jeux action

Il est disponible dans l'espace téléchargement et également au bout de ce lien : space.apk

Jeux - Commentez
GÉRER SON SERVEUR
Publié par The Troll le 28 04 2015

Avec le temps j'ai pris l'habitude de ne pas utiliser de panel pour gérer mes serveurs. Le premier panel que j'ai utilisé était un AlternC,. Il m'avait semblé comprendre qu'il réécrivait à la volé toutes les requêtes car il ne fabriquait pas les fichiers de config mais répondait à la demande.

Bien plus tard j'ai connu Webmin qui était plus complet (et complexe) mais j'ai fini par prendre en horreur les panels web, car souvent avec ma connexion pas top, je devais attendre trop longtemps entre 2 validations de pages et il fallait refaire les mêmes opérations pour chaque domaine. Et c'était long. J'ai donc commencé à le faire "à la mano" comme on dit. Et pour être honnête, cela me protégeais des failles de sécurités des outils car je ne prenais pas le temps de suivre les mises à jour.

Mais cela implique de prendre le temps d'apprendre (c'est bénéfique) et surtout de se souvenir régulièrement comment on fait les choses. Car les configs ca ne se fait pas tous les jours. Pour la dernière migration, pour la première fois plutôt que de faire à la main j'ai écrit des scripts pour ne pas avoir à me souvenir à chaque fois des opérations nécessaires et pour gagner du temps.

Je vais donc dévoiler mes scripts pour que ceux qui en ont envie, puisse les utiliser. Ils ne sont pas parfaits et peuvent probablement être améliorés. Ils sont en bash (enfin dash plus exactement) pour qu'ils puissent fonctionner sur mes machines Debian sans avoir de nouveau trucs à installer. Ils fonctionnent chez moi. Si vous voyez des imperfections, vous pouvez sans aucun problème les corriger dans les réponses.

Je ferais donc un nouveau post avec les scripts pour chaque type de service géré.

ATTENTION : si vous ne connaissez pas un minimum comment un serveur marche, je vous déconseille vivement de les utiliser sans comprendre. Ils ne sont destiné qu'a servir à ceux qui savent plus ou moins faire (ou qui cherchent à savoir comment faire), juste pour automatiser la/les procédure(s).

PS : je pensais les garder pour moi devenir maître du monde MOUAAAAHHAAAAHAAA, mais ma maman elle veut pas.
Serveurs - Commentez
BOITE À OUTILS APACHE
Publié par The Troll le 19 04 2015

Bon c'est plutôt le truc basique, facile à faire, la base de la base, et donc le plus simple à mettre en place. L'dée est d'avoir un fichier générique (les génériques c'est automatique). que l'on personnalise au moment de la création du serveur virtuel.


============== default_virtual_host ====================

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName DOMAIN
    ServerAlias www.DOMAIN
    DocumentRoot /var/www/DIRECTORY
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/DIRECTORY/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error.log
     # Possible values include: debug, info, notice, warn, error, crit,
     # alert, emerg.
     LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
    #CustomLog ${APACHE_LOG_DIR}/stats/DOMAIN.log combined
</VirtualHost>

Comme vous pouvez le voir, j'ai supprimé le répertoire cgi que je n'utilise pas, et j'ai préparé un endroit particulier pour les logs que je désire analyser par un logiciel tiers. Le répertoire /var/log/apache2/stats doit exister dans ce cas (il faut le créer avec autorisation d'écriture pour www-data.)

Ensuite un fichier tout simple pour faire le taff

============== do_apache_server ====================

# Pour créer les fichiers site de apache2 : do_apache_server DOMAIN DIRECTORY
#!/bin/sh
sed -e 's/DOMAIN/'$1'/g' default_virtual_host > site_$1
sed -i "s/DIRECTORY/"$2"/g"  site_$1
sed -i "s/§/\//g"  site_$1
echo "======================="
more  site_$1
echo "======================="
read -p "Config ok [o/n]]?" reponse
  
if [[ $reponse == "o" ]];then
mv site_$1 /etc/apache2/sites-available/site_$1
ln -s /etc/apache2/sites-available/site_$1 /etc/apache2/sites-enabled/site_$1
service apache2 reload
fi

Il suffit de placer les 2 fichiers dans un répertoire, de rendre do_apache_server exécutable et de l'appeler ainsi (il faut être root):


$./do_apache_server mon_domaine.com repertoire§sousrepertoire 

et cela créera le virtualhost pointant sur /var/www/repertoire/sousrepertoire/ (ca marche aussi avec juste


$./do_apache_server mon_domaine.com repertoire)
On visualise alors le fichier créé que l'on peut modifier dans un autre shell si on veut ajouter ou modifier des options (c'est le fichier site_domaine), cliquer sur o le place dans les bons répertoires apache et redémarre le serveur.

Serveurs - 1 commentaire(s)
BOITE À OUTILS : VSFTPD (serveur ftp)
Publié par The Troll le 21 04 2015

Ce soir dans la série je gère mon site sans panel, un truc pas si compliqué et pas forcément nécessaire : la création de compte ftp pour permettre à des utilisateurs d'accéder aux dossiers.

Présupposés :
  • je n'utilise pas d'utilisateurs ayant un compte sur la machine (donc que des utilisateurs virtuels).
  • je veux un petit serveur ftp et pas une usine à gaz, même si cela me restreint dans la gestion du bousin (mais avec mes petits besoins, je n'ai pas eu ce soucis).
  • je veux pouvoir librement choisir le répertoire de chacun d'eux.
  • je veux que les fichiers sur le serveur appartiennent au même utilisateur système,
  • je veux pouvoir gérer les identifiant et pass avec un fichier texte.

vsftpd me permettait tout cela, je l'ai donc naturellement choisi. Bonus : il est pensé sécurité avant tout et performance. Et il est tout petit (Installed-Size: 464) et semble avoir une toute petite empreinte mémoire.

Une fois installé, quelques modifs dans le fichier : /etc/vsftpd.conf


listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=user
user_config_dir=/etc/vsftpd-virtual-user/
virtual_use_local_privs=YES
pam_service_name=vsftpd

Il y a d'autres options, mais celles-ci permettent au bousin de tomber en marche. Comme on peut le voir nous avons besoin d'un répertoire pour y mettre les fichiers de configuration des utilisateurs (car vous pouvez avoir des configurations différentes pour chaque utilisateur.) ici, c'est /etc/vsftpd-virtual-user/ (vous devez le créer). Les fichiers qui arriveront sur le serveur appartiendront à l'utilisateur user (un "vrai" utilisateur système). On peut voir également que pam se charge de l'authentification,

donc modification du fichier /etc/pam.d/vsftpd


auth    required        pam_userdb.so db=/etc/virtual_users
account required        pam_userdb.so db=/etc/virtual_users

Il n'y a rien d'autre dans le fichier en question.Comme vous pouvez le voir, il s'attend à trouver une base de donnée : /etc/virtual_users, nous y viendrons plus tard. C'est un nom que j'ai choisi, vous pouvez en choisir un autre sans aucun soucis.

ATTENTION, il n'y a pas de .db à la fin, c'est normal.

Notre fichier modèle utilisateur /root/ftp_user_model


local_root=DIRECTORY
cmds_allowed=USER,PASS,SYST,FEAT,OPTS,PWD,TYPE,PASV,LIST,STOR,DELE,CWD,MKD,SIZE,MDTM,CDUP,RETR,RNFR,RNTO
local_umask=022
write_enable=YES

La liste des commandes utilisées semble classique, vous pouvez la personnaliser. Liste des commandes FTP sur wikipedia

c'est maintenant que ça va shazammer : le script de la mort qui tue (bon, pas tellement en fait) do_ftp


#!/bin/sh
USER_CONF_DIR=/etc/vsftpd-virtual-user/
USER_CONF_MODEl=/root/ftp_user_model
USERS_FILE=/etc/users_ftp
USERS_DB=/etc/virtual_users.db
did=" effectué"
action=$1
user=$2
pass=$3
the_directory=$4
 usage(){
    echo "Usage :$0 ACTION var(s)"
    echo "Action : add_user nom_user password /directory"
    echo "    del_user nom_user"
    echo "    list_user"
    echo "    list_pass"
    exit
}
 [ "$1" = "" ] && usage;
 add_user(){
    echo "création utilisateur $user avec le pass $pass pour le répertoire $the_directory"
    sed -e 's,DIRECTORY,'$the_directory',g' $USER_CONF_MODEl > user_$user
    more user_$user
    read -p "Config ok [o/n] ?" reponse

    if [ $reponse = "o" ]; then
        mv user_$user $USER_CONF_DIR/$user && echo "mise en place du fichier utilisateur$did"
        sed -i '1i'$user'\n'$pass'' $USERS_FILE && echo "inscription dans la base des mots de passe$did"
        /usr/bin/db_load -T -thash -f $USERS_FILE $USERS_DB && echo "re-hash de la base$did"
    fi
exit
}

del_users(){
    read -p "Voulez vous vraiment effacer l'utilisateur $user [o/n] ?" reponse
       
    if [ $reponse = "o" ]; then
        sed -i '/'$user'/{N;d}' $USERS_FILE
        echo "Utiliateur $user effacé"
        rm $USER_CONF_DIR/$user
        /usr/bin/db_load -T -thash -f $USERS_FILE $USERS_DB && echo "re-hash de la base$did"
     fi
}


list_userss(){
    find $USER_CONF_DIR -type f -printf "%f\n" | sort
}

list_passs(){
    echo "Liste des mots de passe ===="
    < users sed "N;s/\n/ -> /"
}


case $action in
        add_user)
              [ "$the_directory" = "" ] && usage;

              if ( [ -f "$USER_CONF_DIR/$user" ] );then
                    echo "l'utilisateur $user existe déja"
                    exit
              fi

              if !( [ -d "$the_directory" ] );then
                    echo "$the_directory doit être un répertoire existant";exit
              fi

              add_user;;

    list_users)
        list_userss;;

    list_pass)
        list_passs;;

    del_user)
        del_users;;

esac

Comme on peut le voir dans le code, il permet d'ajouter, supprimer, lister utilisateurs et mots de passe

Usage :./do_ftp ACTION var(s)
Action :
  • add_user nom_user password /directory
  • del_user nom_user
  • list_user
  • list_pass

C'est presque fini : il vous faut configurer le script :

USER_CONF_DIR=/etc/vsftpd-virtual-user/ (répertoire créé pour /etc/vsftpd.conf)
USER_CONF_MODEl=/root/ftp_user_model (le modèle de fichier utilisateur)
USERS_FILE=/etc/users_ftp (le fichier texte des utilisateurs)
USERS_DB=/etc/virtual_users.db (la base de donnée, même chose que dans le fichier /etc/pam.d/vsftpd - avec le .db en plus, c'est normal)

enfin il faut créer le fichier /etc/users_ftp avec une ligne vide, par exemple


touch /etc/users_ftp && echo "" > /etc/users_ftp && chmod 600  /etc/users_ftp 

et voila.

le fichier /etc/users_ftp est un fichier texte en clair sous la forme :
ident1
pass_ident1
ident2
pass_ident2
ident3
pass_ident3

Ce qui peut en rebuter plus d'un. J'ai choisi de le laisser sur mon système en le rendant en lecture uniquement par root (si un personne devient root sur la machine, ce sera le moindre de vos soucis).

  • Vous pouvez le déplacer dans un autre endroit de la machine (en changeant son nom) et le remettre lorsque vous en avez besoin,
  • vous pouvez le garder en local sur votre machine et le ssh-er lorsque vous en avez besoin. Ce sont des contournements à cette problématique.

Comme d'hab, le script(doit être exécutable) et le fichier de conf dans le bon répertoire et pour créer votre premier utilisateur :


./do_ftp nom_user pass_user /rept/de/utilisateur

on vous demande si la configuration est bonne. Avant de continuer, vous pouvez à ce moment là, depuis un autre terminal (shell) modifier les commandes pour par exemple supprimer l'upload de fichier et la personne ne pourra que télécharger, ou pas de droit de créer des répertoires...

Note : Le répertoire utilisateur doit exister AVANT de créer l'utilisateur, il doit appartenir à l'utilisateur user (défini dans /etc/vsftpd.conf)

Note 2:La version que j'utilise ne permet à l'utilisateur d'écrire dans son répertoire de premier niveau, j'ai ajusté ma structure de répertoires pour pallier cet inconvénient

Et voila... suite au prochain épisode.

Serveurs - Commentez