Remplacement d'une Box ADSL OVH par un routeur / Firewall PfSense.

nasmaison Remplacement d'une Box ADSL par un routeur / Firewall PfSense.

PfSense


Voilà quelques temps que j'ai un accès ADSL OVH.
J'ai comme la majorité des gens utilisé un bon moment leur routeur livré en standard.
OVH envoi à ses abonnés le Technicolor TG788vn

technicolor


Ce n'est pas un mauvais modem routeur, mais je trouve son interface particulièrement lourde et les fonctionnalités assez limités.
Si on veut faire des conf un peu touchy il faut tout de suite les faire en ligne de commande. ( Et cela ne fonctionne pas toujours)

Il me manquait des fonctionnalités agréables tels que:
  • VPN ( IPSEC, PPTP, OpenVPN)
  • Un vrai firewall
  • Des logs dignent de nom
  • Gestion des DMZ
  • ...

J'ai cherché un petit moment et mon choix s'est porté sur PfSense.

2 Problèmes majeurs se présentaient:
  1. Sur quoi installer PsSense
  2. Comment continuer à bénéficier de la téléphonie OVH sans leur Box !!!

Installation de PfSense

  • Plateforme matérielle:
Je voulais un système qui consomme peu, silencieux, avec 3 ports réseaux.
Mon choix s'est porté sur un Boitier Alix 2D13
J'ai trouvé ce boitier d'occasion sur le bon coin à 100€


alix 2D13
  • Processeur : 500 MHz AMD Geode LX800 
  • DRAM : 256 MB DDR DRAM 
  • Stockage : CompactFlash 4GB ( non fournie)
  • Alimentation : DC jack or passive POE, min. 7V to max. 20V 
  • Trois diodes en facade arrière 
  • Extension : 1 slots miniPCI slots, sur bus LPC
  • Connectivité : 3 ports Ethernet (Via VT6105M 10/100) dont un port PoE

  • Installation logicielle.
Préparation de la carte Compact Flash:

Il faut en premier lieu , installer le systeme PfSense sur la carte CF.
Pour cela nous allons utiliser les images disques fournies par PfSense

L'installation de PfSense est relativement rapide.
N'inséréz pas encore la carte CF dans la boitier Alix,

https://www.pfsense.org/download/mirror.php?section=downloads

On choisi la version 32 Bits/ Nano BSD / Port Série / 4GB ( dépend de votre CF)

psense download

Une fois l'image récupérée il suffit de la copier en mode Bloc sur votre carte.
Pour Cela rien de tel qu'un bon vieux dd

On branche la carte CF sur un lecteur de carte CF et on copie l'image sur la carte.


Depuis un Linux, la commande ressemble à ça

#zcat pfSense-2.1.5-RELEASE-4g-i386-nanobsd.img.gz | dd of=/dev/sdc bs=16k

Voilà l'image est copiée

Attention !!!
J'ai galéré une journée entière... sur ce point là
J'avais une erreur du type : Can't load kernel...
J'ai fini par essayer un autre lecteur de carte USB et là miracle plus d'erreur.
Je pense que mon lecteur de carte générique, écrivait des blocs corrompus..


On insère la CF dans le boitier Alix , on branche un cable DB9 sur le port série + un adaptateur USB série.

Au départ de base le boitier Alix est en 38400Baud

Paramétrez votre client console avec ces paramètres 3600 / 8 / 1

Démmarez le boitier

On appui sur S rapidement dès le boot du boitier, et on arrive sur le Bios.

Comme PfSense utilise une connexion série en 9600bps, il vaut mieux paramétrer le bios de la même maniere.

PC Engines ALIX.2 v0.99h
640 KB Base Memory
261120 KB Extended Memory
01F0 - no drive found !
BIOS setup:
*9* 9600 baud (2) 19200 baud (3) 38400 baud (5) 57600 baud (1) 115200 baud
*C* CHS mode (L) LBA mode (W) HDD wait (V) HDD slave (U) UDMA enable
(M) MFGPT workaround
(P) late PCI init
*R* Serial console enable
(E) PXE boot enable
(X) Xmodem upload
(Q) Quit
Save changes Y/N ?

il suffit d'appuyer sur 9 pour passer en 9600baud et sauvegarder avec Y

Pour information; Le bios 0.99h est conseillé pour utiliser pFsense et CF
SI il n'est pas dans cette version je vous invite à le mettre à jour : https://doc.pfsense.org/index.php/ALIX_BIOS_Update_Procedure

Si tout c'est bien passé, en démarrant votre boitier, PfSense devrait booter:

boot-pfsense

L'installation est assez intuitive.
Elle va vous demander de choisir vos interfaces WAN / LAN
FreeBSD détecte vos carte réseau et leur donne un nom; En général ce nom dépend du construteur de la carte.

Pour moi les cartes du boitier Alix sont vr1, vr2, vr3
Asigner une adresse IP à votre carte LAN

Brancher la patte Lan de votre boitier Alix sur votre réseau Local

ET vous pouvez maintenant vous y connecter depuis l'interface Web
Pour ma part je n'ai pas paramétré l'interface WAN au départ car je souhaitais faire du PPPOE


  • Mon schéma réseau CIBLE:
lan maison

Voiçi le schéma de mon réseau complet à la maison.

Seule la partie Modem/Routeur est nouvelle
Je remplace ma Box ADSL par un Modem + PfSense sur boitier ALIX

Je branche mon modem sur la patte Wan de l'Alix et mon réseau local sur la patte LAN.

Et c'est parti pour l'interface Web.

web

Il ne reste plus qu'à paramétrer l'interface WAN en PPPOE - Avec login et mot de passe
Pour info pour OVH j'ai placé le MTU à 1456

pppoe


PfSense est connecté et à pris mon IP Publique.

JE vous laisse faire les paramétrages qui vous conviennent.
DNS, DHCP, NAT, Rules etc...


La téléphonie:

L'incovénient quand on utilise pas la Box OVH est qu'on ne bénéficie plus de la téléphonie.
Je voulais faire du SIP, mais OVH ne fournit pas les identifiants SIP...

Par contre ils ont eut l'intelligence de proposer des équipements préconfigurés SIP.
J'ai donc opté pour le boitier Cisco SPA112
spa112

Ce boitier permet de relier 2 téléphone analogiques.
Il s'occupe de la partie SIP
Il suffit donc de le relier sur le réseau local ( pour ma part je l'ai laissé en DHCP)

Pour info, chez OVH, il faut activer l'équipement dans votre manager afin que les appels soient bien renvoyé sur le boitier.
Comme OVH vous l'envoi préconfiguré, il n'y a rien à faire de plus.




Scripter des commandes à distance : EXPECT

Trim

Cela faisait un moment que je cherchais un outil capable d'envoyer une liste de commande à distance.
La pupart du temps quand on souhaite envoyer des commandes à distance, on est confronté au problème du mot de passe.
En effet il faut entrer le mot de passe et cela empêche de pouvoir scripter à distance...


  A quoi sa sert

Dans le cadre du travail, j'ai dut scripter quelques petites lignes de commandes pour backuper tous mes switchs. ( plus de 80 !!)
Avant de connaitre la fameuse commande, je me tappais les switchs 1 par 1... et du coup moins souvent.

Depuis j'ai découvert la commande EXPECT



Le script:

Après avoir installé le paquet expect sur votre distribution Gnu/Linux préférée vous pouvez commencer.

#!/usr/bin/expect
#expect.sh
set username admin
set password motdepasse
set tftp 192.168.1.10
set switch [lrange $argv 0 0]
set switchname [lrange $argv 1 1]


set timeout 60
spawn ssh $username@$switch
sleep 2
send "$password\n"
sleep 2
send "\031"
sleep 2
send "save config\n"
sleep 12
send "copy config tftp address $tftp filename $switch-$switchname.cc\n"
sleep 10
send "copy running-config tftp address $tftp filename $switch-$switchname.ascii\n"
sleep 2
send "exit\n"
interact


Vous l'aurez compris, le script est ultra simple, il va envoyer des commandes en ssh directement au switch.
expect permet en fait d'enchainer des commandes comme si vous tappiez vous même sur le clavier.

Ce genre de bidouille n'a bien sur pas vraiment d'interêt sur un systeme qui peut directement executer des scripts, par contre cela prend tout son sens sur des systèmes figés comme des switchs, des routeurs, des bornes Wifi etc...
Pour info le send "\031" correspond à un "Ctrl-Y" ( nécessaire pour se connecter sur des switchs Nortell)

Ce genre de script est utilisable dans de nombreuses situations !

Pour finir j'ai créer un autre script qui lance la commande précédente en boucle switch par switch.
#!/bin/bash
#backupswitchs.sh
#SWITCH1 192.168.1.1
#SWITCH2 192.168.1.2
#SWITCH3 192.168.1.3
#SWITCH4 192.168.1.4
#SWITCH5 192.168.1.5

SWITCHS=$(cat /root/backupswitchs.sh| grep "#" | grep "10." | awk '{print $2}')

for i in $SWITCHS
do
NAME=$(cat /root/backupswitchs.sh | grep -w $i | grep "#" | awk '{print $1}' | cut -d"#" -f2)
/root/expect.sh $i $NAME
done

Voilà, au final mes switchs sont backupés en TFP en binaire et en ascii :)

 

Scrumblr : Tableau collaboratif en ligne

srumblr
  scrumblr logo

Scrumblr vous offre la possibilité de créer un tableau blanc collaboratif sous forme de Post-it de toutes les couleurs.
L'application en ligne sur vos serveur offre un environnement graphique simple d'utilisation sans enregistrement préalable.

Plateforme Materielle :



Comme d'habitude, j'ai monté mon prototype sur ma plateforme de virtualisation:

Dedibox Pro HP
Plateforme logicielle hyperviseur:
  • Dom0 Ubuntu 12.04 X86_64 Xen 4.1
Plateforme Virtuelle:

  • DomU Xen Ubuntu 12.04 X86_64 Paravirtualisé
  • 2 vcpus 
  • 512 Mo de Ram
  • HDD 16GB


Installation:

Scrumblr demande quelques prérequis:
redis v2.2.2
node.js >= 0.4.7

En effet scrumblr se base sur redis : Redis (de l'anglais REmote DIctionary Server qui peut-être traduit par « serveur de dictionnaire distant » et jeu de mot avec Redistribute1) est un système de gestion de base de données clef-valeur scalable, très hautes performances, écrit avec le langage de programmation C ANSI et distribué sous licence BSD. Il fait partie de la mouvance NoSQL et vise à fournir les performances les plus élevées possibles.

  • Installation des prérequis
root@antony-linux:/home/antony# apt-get install git-core build-essential

  • Installation de node.js
On télécharge la dernière version de node.js et on la compile
Attention, ethercalc n'est pour l'instant pas compatible avec node.js v9
On utilise la version packagée dans ubuntu 12.04 : nodejs_0.6.12
    root@antony-linux:/home/antony# apt-get install nodejs npm

    root@ubuntu:/# node --version
    v0.6.12
    root@ubuntu:/# npm --version
    1.1.4

  • Installation de redis
On télécharge la version 2.6.4 sur http://redis.io/download

root@ubuntu:/opt#cd /opt
root@ubuntu:/opt# wget http://redis.googlecode.com/files/redis-2.6.4.tar.gz
root@ubuntu:/opt# tar xvfz redis-2.6.4.tar.gz
mv redis-2.6.4 redis
root@ubuntu:/opt# cd /opt/redis/

root@ubuntu:/opt/redis# make

root@ubuntu:/opt/redis# cd src/
root@ubuntu:/opt/redis/src# ./redis-server
[18712] 12 Nov 16:21:00.849 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
[18712] 12 Nov 16:21:00.850 * Max number of open files set to 10032
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.6.4 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 18712
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'

[18712] 12 Nov 16:21:00.851 # Server started, Redis version 2.6.4
[18712] 12 Nov 16:21:00.851 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
[18712] 12 Nov 16:21:00.851 * The server is now ready to accept connections on port 6379

Bon ok redis tourne
Cf Wikipedia: Une des principales caractéristiques de Redis est de conserver l'intégralité des données en RAM. Cela permet d'obtenir d'excellentes performances en évitant les accès disques, particulièrement coûteux.

Lorsque la taille des données est trop importante pour tenir en mémoire, Redis peut également utiliser de la mémoire virtuelle.

Afin d'assurer la conservation des données en cas d'incident — la mémoire vive étant volatile — Redis offre la possibilité de « capturer » l'état de la base dans un fichier. Cette technique ne permettant pas de garantir la conservation des manipulations effectuées entre deux captures, il est également possible de conserver une trace de toutes ces manipulations. En cas d'incident, la base peut être restaurée en les ré-appliquant dans l'ordre.

On va donc modifier la conf pour le rendre persistent:
On modifie le redis.conf
daemonize yes
pidfile /var/run/redis.pid
logfile /var/log/redis.log

port 6379
bind 127.0.0.1
timeout 300

loglevel notice

## Default configuration options
databases 16

save 900 1
save 300 10
save 60 10000

rdbcompression yes
dbfilename dump.rdb

dir /opt/redis/

glueoutputbuf yes


##Persistence
appendonly yes
appendfsync everysec


root@antony-linux:/home/antony# /opt/redis/redis-cli bgrewriteaof

Redis de base ne démarre pas automatiquement... c'est un peu balot.
Il faut créer un  script d'init.
On crée d'abord un user "redis"
root@ubuntu:/etc/init.d# adduser --system --no-create-home --disabled-login --disabled-password --group redis

root@ubuntu:/etc/init.d# chown -R redis /opt/redis

Mon script d'init:

#!/bin/sh

### BEGIN INIT INFO
# Provides: ethercalc
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts ethercalc
# Description: starts ethercalc lite using start-stop-daemon
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/var/log/redis.log"
CONFFILE="/opt/redis/redis.conf"
EPLITE_DIR="/opt/redis/src/redis-server"
USER="redis"
GROUP="redis"
DESC="redis"
NAME="redis"

set -e

. /lib/lsb/init-functions

start() {
echo "Starting $DESC... "

start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR -- $CONFFILE || true
echo "done"
}

#We need this function to ensure the whole process tree will be killed
killtree() {
local _pid=$1
local _sig=${2-TERM}
for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
killtree ${_child} ${_sig}
done
kill -${_sig} ${_pid}
}

stop() {
echo "Stopping $DESC... "
while test -d /proc/$(cat /var/run/$NAME.pid); do
killtree $(cat /var/run/$NAME.pid) 15
sleep 0.5
done
rm /var/run/$NAME.pid
echo "done"
}

status() {
status_of_proc -p /var/run/$NAME.pid "" "$NAME" && exit 0 || exit $?
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo "Usage: $NAME {start|stop|restart|status}" >&2
exit 1
;;
esac

exit 0

root@ubuntu:/etc/init.d# update-rc.d redis defaults
Adding system startup for /etc/init.d/redis ...
/etc/rc0.d/K20redis -> ../init.d/redis
/etc/rc1.d/K20redis -> ../init.d/redis
/etc/rc6.d/K20redis -> ../init.d/redis
/etc/rc2.d/S20redis -> ../init.d/redis
/etc/rc3.d/S20redis -> ../init.d/redis
/etc/rc4.d/S20redis -> ../init.d/redis
/etc/rc5.d/S20redis -> ../init.d/redis



root@ubuntu:/etc/init.d# /etc/init.d/redis start

root@ubuntu:/etc/init.d# ps aux | grep redis
redis 19666 0.3 0.3 34900 1724 ? Ssl 17:05 0:00 /opt/redis/src/redis-server /opt/redis/redis.conf


Une bonne chose de faite.
Redis se lance
 
  • Installation de Scrumblr
On utilse git pour récupérer la dernière version.
root@ubuntu:~# cd /opt/
git clone https://github.com/aliasaria/scrumblr.git

Avant toute chose modifier le package.json ("express": ">2.4.x",)
{
"name": "scrumblr",
"description": "Web-based simulation of a physical agile sprint board that supports real-time collaboration.",
"version": "0.1.0",
"repository": {
"url": "http://github.com/aliasaria/scrumblr"
},
"author": "Ali Asaria",
"main": "server.js",
"directories": {
"lib": "lib/"
},
"engines": {
"node": "0.4.7"
},
"dependencies": {
"async": "0.1.x",
"connect": "1.7.x",
"redis-client": "0.3.x",
"redis": "0.6.x",
"sanitizer": "0.0.x",
"socket.io": "0.8.x",
"simplesets": "1.1.x",
"connect-redis":"1.0.x",
"express": ">2.4.x",
"jade": "0.14.x"
}
}




root@ubuntu:~# cd /opt/scrumblr

root@ubuntu:/opt/scrumblr# npm install
npm http GET https://registry.npmjs.org/redis-client
npm http GET https://registry.npmjs.org/sanitizer
npm http GET https://registry.npmjs.org/express/2.4.5
npm http GET https://registry.npmjs.org/jade
npm http GET https://registry.npmjs.org/simplesets
npm http GET https://registry.npmjs.org/connect
npm http GET https://registry.npmjs.org/connect-redis
npm http GET https://registry.npmjs.org/redis
npm http GET https://registry.npmjs.org/socket.io
npm http GET https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/redis-client
npm WARN redis-client@0.3.5 package.json: bugs['web'] should probably be bugs['url']
npm http 304 https://registry.npmjs.org/sanitizer
npm http 304 https://registry.npmjs.org/simplesets
npm http 304 https://registry.npmjs.org/connect
npm http GET https://registry.npmjs.org/connect/-/connect-1.7.3.tgz
npm http 304 https://registry.npmjs.org/connect-redis
npm http GET https://registry.npmjs.org/connect-redis/-/connect-redis-1.0.7.tgz
npm http 304 https://registry.npmjs.org/redis
npm http 200 https://registry.npmjs.org/express/2.4.5
npm http GET https://registry.npmjs.org/redis/-/redis-0.6.7.tgz
npm http GET https://registry.npmjs.org/express/-/express-2.4.5.tgz
npm http 304 https://registry.npmjs.org/socket.io
npm http GET https://registry.npmjs.org/socket.io/-/socket.io-0.8.7.tgz
npm http 304 https://registry.npmjs.org/async
npm http 200 https://registry.npmjs.org/connect/-/connect-1.7.3.tgz
npm http GET https://registry.npmjs.org/async/-/async-0.1.22.tgz
npm http 200 https://registry.npmjs.org/connect-redis/-/connect-redis-1.0.7.tgz
npm http 200 https://registry.npmjs.org/redis/-/redis-0.6.7.tgz
npm http 200 https://registry.npmjs.org/express/-/express-2.4.5.tgz
npm http 200 https://registry.npmjs.org/socket.io/-/socket.io-0.8.7.tgz
npm http 200 https://registry.npmjs.org/jade
npm http 200 https://registry.npmjs.org/async/-/async-0.1.22.tgz
npm http GET https://registry.npmjs.org/jade/-/jade-0.14.2.tgz
npm http 200 https://registry.npmjs.org/jade/-/jade-0.14.2.tgz

npm ERR! Unsupported
npm ERR! Not compatible with your version of node/npm: express@2.4.5
npm ERR! Required: {"node":">= 0.4.1 < 0.5.0"}
npm ERR! Actual: {"npm":"1.1.4","node":"0.6.12"}
npm ERR!
npm ERR! System Linux 3.2.0-32-generic
npm ERR! command "node" "/usr/bin/npm" "install"
npm ERR! cwd /opt/scrumblr
npm ERR! node -v v0.6.12
npm ERR! npm -v 1.1.4
npm ERR! code ENOTSUP
npm ERR! message Unsupported
npm ERR! errno {}
npm http GET https://registry.npmjs.org/socket.io-client/0.8.7
npm http GET https://registry.npmjs.org/policyfile/0.0.4
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/mime
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /opt/scrumblr/npm-debug.log
npm not ok
root@ubuntu:/opt/scrumblr# vi package.json ^C
root@ubuntu:/opt/scrumblr# vi README.markdown
root@ubuntu:/opt/scrumblr# vi package.json
root@ubuntu:/opt/scrumblr# npm install
npm http GET https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/jade
npm http 304 https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/jade
npm http GET https://registry.npmjs.org/express/-/express-3.0.2.tgz
npm http 200 https://registry.npmjs.org/express/-/express-3.0.2.tgz
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
npm http GET https://registry.npmjs.org/cookie/0.0.4
npm http GET https://registry.npmjs.org/crc/0.2.0
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/cookie-signature/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/connect/2.6.2
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http 200 https://registry.npmjs.org/cookie/0.0.4
npm http 200 https://registry.npmjs.org/mkdirp/0.3.3
npm http GET https://registry.npmjs.org/cookie/-/cookie-0.0.4.tgz
npm http GET https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz
npm http 200 https://registry.npmjs.org/crc/0.2.0
npm http 200 https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/crc/-/crc-0.2.0.tgz
npm http GET https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz
npm http 200 https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz
npm http 200 https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/methods/-/methods-0.0.1.tgz
npm http 200 https://registry.npmjs.org/cookie-signature/0.0.1
npm http GET https://registry.npmjs.org/cookie-signature/-/cookie-signature-0.0.1.tgz
npm http 200 https://registry.npmjs.org/cookie/-/cookie-0.0.4.tgz
npm http 200 https://registry.npmjs.org/send/0.1.0
npm http 200 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/send/-/send-0.1.0.tgz
npm http GET https://registry.npmjs.org/debug/-/debug-0.7.0.tgz
npm http 200 https://registry.npmjs.org/connect/2.6.2
npm http GET https://registry.npmjs.org/connect/-/connect-2.6.2.tgz
npm http 200 https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/commander/-/commander-0.6.1.tgz
npm http 200 https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.3.tgz
npm http 200 https://registry.npmjs.org/crc/-/crc-0.2.0.tgz
npm http 200 https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz
npm http 200 https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz
npm http 200 https://registry.npmjs.org/methods/-/methods-0.0.1.tgz
npm http 200 https://registry.npmjs.org/cookie-signature/-/cookie-signature-0.0.1.tgz
npm http 200 https://registry.npmjs.org/send/-/send-0.1.0.tgz
npm http 200 https://registry.npmjs.org/debug/-/debug-0.7.0.tgz
npm http 200 https://registry.npmjs.org/connect/-/connect-2.6.2.tgz
npm http 200 https://registry.npmjs.org/commander/-/commander-0.6.1.tgz
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.5.1
npm http GET https://registry.npmjs.org/formidable/1.0.11
npm http GET https://registry.npmjs.org/bytes/0.1.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 200 https://registry.npmjs.org/pause/0.0.1
npm http GET https://registry.npmjs.org/pause/-/pause-0.0.1.tgz
npm http 200 https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/mime/-/mime-1.2.6.tgz
npm http 200 https://registry.npmjs.org/qs/0.5.1
npm http GET https://registry.npmjs.org/qs/-/qs-0.5.1.tgz
npm http 200 https://registry.npmjs.org/formidable/1.0.11
npm http GET https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz
npm http 200 https://registry.npmjs.org/bytes/0.1.0
npm http GET https://registry.npmjs.org/bytes/-/bytes-0.1.0.tgz
npm http 200 https://registry.npmjs.org/pause/-/pause-0.0.1.tgz
npm http 200 https://registry.npmjs.org/mime/-/mime-1.2.6.tgz
npm http 200 https://registry.npmjs.org/qs/-/qs-0.5.1.tgz
npm http 200 https://registry.npmjs.org/formidable/-/formidable-1.0.11.tgz
npm http 200 https://registry.npmjs.org/bytes/-/bytes-0.1.0.tgz
jade@0.14.2 ./node_modules/jade
express@3.0.2 ./node_modules/express
├── methods@0.0.1
├── fresh@0.1.0
├── cookie-signature@0.0.1
├── range-parser@0.0.4
├── cookie@0.0.4
├── crc@0.2.0
├── commander@0.6.1
├── debug@0.7.0
├── mkdirp@0.3.3
├── send@0.1.0 (mime@1.2.6)
└── connect@2.6.2


On va tenter de lancer Scrumblr

root@ubuntu:/opt/scrumblr# node server.js 80
The "sys" module is now called "util". It should have a similar interface.
Warning: express.createServer() is deprecated, express
applications no longer inherit from http.Server,
please use:

var express = require("express");
var app = express();

info - socket.io started

node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Cannot read property 'url' of undefined
at Function.handle (/opt/scrumblr/node_modules/express/node_modules/connect/lib/proto.js:104:18)
at Server.app (/opt/scrumblr/node_modules/express/node_modules/connect/lib/connect.js:66:31)
at Server.serverListening (/opt/scrumblr/node_modules/socket.io/node_modules/policyfile/lib/server.js:136:16)
at Server.g (events.js:156:14)
at Server.emit (events.js:64:17)
at Array.1 (net.js:753:10)
at EventEmitter._tickCallback (node.js:192:41)


Arghhh error !!!!!!
Bon j'ai passer un bon moment à me gratter la tête et j'ai réussi à trouver la solution.
Je vous l'offre sur un plateau.
Il semblerait que la version de express installé avec ubuntu 12.04 pose des problème.
On va installer express 2.5.9

root@ubuntu:/opt/scrumblr# npm uninstall express
root@ubuntu:/opt/scrumblr# npm install express@2.5.9

On tente de lancer Srumblr

root@ubuntu:/opt/scrumblr# node server.js 80
The "sys" module is now called "util". It should have a similar interface.
info - socket.io started
Youpi ca se lance.


Maintenant on va aussi faire un script pour lancer Scrumblr en tant que daemon au boot du serveur.

On va utiliser le script /opt/scrumblr/forever.sh
Pour cela il faut install le module forever avec npm


root@ubuntu:/opt/scrumblr# npm install forever -g

root@ubuntu:/opt/scrumblr# vi /etc/init.d/scrumblr

#!/bin/sh

### BEGIN INIT INFO
# Provides: Scrumblr
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts Scrumblr
# Description: starts Scrumblr lite using start-stop-daemon
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/var/log/scrumblr.log"
EPLITE_BIN="/opt/scrumblr/forever.sh"
USER="scrumblr"
GROUP="scrumblr"
DESC="scrumblr"
NAME="scrumblr"
PORT="80"

set -e

. /lib/lsb/init-functions

start() {
echo "Starting $DESC... "
$EPLITE_BIN
echo "done"
}


stop() {
echo "Stopping $DESC... "
PIDS=$(pgrep node)
for i in $PIDS;
do
kill -9 $i
done
echo "done"
}

status() {
PIDS=$(pgrep node)
if [ -z "$PID" ]
then
echo "$NAME is running"
else
echo "$NAME is not running"
fi
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart


On le rend executable.
root@ubuntults:/var/log# chmod +x /etc/init.d/scrumblr

On active le script au démmarage:

 root@ubuntu:/opt/scrumblr# update-rc.d scrumblr defaults
Adding system startup for /etc/init.d/scrumblr ...
/etc/rc0.d/K20scrumblr -> ../init.d/scrumblr
/etc/rc1.d/K20scrumblr -> ../init.d/scrumblr
/etc/rc6.d/K20scrumblr -> ../init.d/scrumblr
/etc/rc2.d/S20scrumblr -> ../init.d/scrumblr
/etc/rc3.d/S20scrumblr -> ../init.d/scrumblr
/etc/rc4.d/S20scrumblr -> ../init.d/scrumblr
/etc/rc5.d/S20scrumblr -> ../init.d/scrumblr


root@ubuntults:/var/log# /etc/init.d/scrumblr start

Notre scrumblr est bien lancé

root@ubuntu:/opt/scrumblr# ps aux | grep node
root 3541 0.0 2.6 721084 13412 ? Ssl 12:30 0:00 node /usr/local/bin/forever start -o out.log -e err.log server.js 80
root 3542 0.2 3.7 782720 18608 ? Sl 12:30 0:00 node /opt/scrumblr/server.js 80

L'interface:
Notre node écoute sur le port 80

on arrive donc sur notre board à partir de : http://votre_serveur

scrumblr 1
Ho que c'est joli par contre c'est en Anglais.
Moi j'aime mieux le français.

Il suffit de modifier le fichier: /opt/scrumblr/views/home.jade

Et hop :)

Scrumblr 2

La belle interface, ou vous pouvez créer des notes, des sections, et même coller des gommettes :)

scrumblr3

FreeMobile: Les tests sont ils vraiment fiables ?

Test de débit : pipés ?

Un petit billet flash éclair pour montrer le peu de pertinence que peut nous apporter un test de débit sur les gros acteurs tels que dégroupTest and Co...


Logo Freemobile

Materiel:

  • Mobile Samsung Galaxy S2 sous Cyanogen Mod9 (ICS) en partage de connexion Wifi.

Test de débit avec l'application dégoup Test Sur Android


Test de débit DegroupTest Avec FreeMobile en 3G+ Réseau Orange (HSDPA).

Degroup TEST

Là on aurait envie de se dire, Génial !!!!
J'ai un super débit ca va flyer :)
Mais dans les fait quand on surf, c'est tout lent et tout pourri...

Je faits donc un test de transfert de fichier entre un serveur Web sur un de mes serveur Dédiés

Transfert de fichier HTTP à partir d'un serveur Web Dedibox.

J'ai utilisé mon serveur dédibox, afin d'heberger des fichiers web.

webfile




test debit freemobile reel web

La résultat est sans Appel ....
Un magnifique transfert de fichier à 21,4Kbits/s !!!

Alors que selon dégroupTest on est censé monter à 6393Kbits/s ...

Pour conclure, j'ai bien l'impression que FreeMobiles ( mais a ne doit pas être le seul), optimise leur réseau pour ce genre de tests...

Autrement dit les tests sont pipés... mais ça on le savait déjà :)

Comparaison de quelques Explorateurs de fichiers sous Android

File-Managers-Android
Une fois n'est pas coutume, j'ai décidé dans ce billet de comparer rapidement 4 explorateurs de fichiers disponibles sous Android.
J'en ai essayé pas mal, mais j'ai galéré pour trouver celui qui me va bien.
Si ce billet peut aider certain à choisir leur File Manager sous Android j'en serais heureux.

En regardant sur le Google Play, et en triant par popularité, 4 sortent du lot:

 logo esfm vs     Logo Astro-fm    vs  Logo OIfm   vs  Logo OIfm    


Fonctionnalités


logo esfm Logo Astro-fm Logo OIfm Logo OIfm
Prix
Gratuit
Gratuit Gratuit Gratuit
Popularité
214500
323540
21380
40270

Je vais tester 2 choses:
  1. Les fonctionnalités
  2. Les débit réseaux (cifs)
Je m'attache beaucoup au débit réseau en CIFS, car il m'arrive très souvent de faire des copies de fichiers entre mon NAS et mes terminaux mobiles


Plateforme de test :
Un terminal Mobile


  • Samsung Galaxy S2
  • Cyanogen MOD9
  • Android ICS

Mon NAS (assemblé à la main)

  • CPU Intel Pentium G620 ( dual Core Sandy Bridge 2.6Ghz)
  • Carte Mère : MSI H61I-E35 (Révision B3)
  • RAM: Crucial Ballistix Sport DDR3 2 x 4 Go PC12800
  • Alim: Be Quiet SFX Power - 300W
  • Boitier: Fractal Design Core 1000
  • HDD 2.5'' 80Go WD 5400tpm ( OS)
  • HDD: 3.5'' 2 x 1 To Western Dgital RE2 SATA2 ( déjà en ma possession) DATA
Connectivité:

  • Le NAS est rélié en Gigabit sur mon réseau Local ( débit soutenu 800Mbits/s)
  • Le mobile est relié en Wifi 802.11g (borne linksys WAP 54G)
  • Débit Max constaté en WIFI 25Mbit/s


ES File  Explorer logo esfm

ES File Explorer est un des plus populaire

  • L'interface
interface ES


Interface ES

Interface ES

Remarques & Fonctionnalités:
  • Interface Sobre et simpliste mais rapide
  • Multiselections
  • Recherches
  • Gestion des applications (désinstallation)
  • Intégration de partages LAN CIFS / FTP / BlueTooth...
  • Integration de Dropbox, UbuntuOne, Skydrive ... Mais pas Google Drive !!!
Débits Transfert CIFS

Débit ES

Débit transfert CIFS 16Mbits/s


Astro  File Manager Logo Astro-fm 
Astro est de loin le plus populaire des gestionnaire de fichier sur Android.
Je comprend aisément ce choix, car son interface est de loin la plus aboutie.

  • L'interface
Astro interface
                                                                    










Comme je le disais plus haut l'interface est sans commune mesure avec ses concurents.

Les fonctionnalités sont nombreuses:

  • Interface Sobre et intuitive
  • Multiselections
  • Recherches
  • Gestion des applications (désinstallation)
  • Recherche des partage réseaux en automatique
  • Intégration de partages LAN CIFS / FTP / SFTP
  • Integration de Dropbox, GoogleDrive, (Pas de Skydrive)

Malgré une interface superbe et intuitive j'ai trouvé quelques points négatifs

  • Interface belle mais poussive, pas très rapide
  • Pas de notification de transfert en arriere plan !!!
  • Impossible d'ouvrir une Vidéo en réseau CIFS !!! il la télécharge avant ...


Débits Transfert CIFS



Débit transfert CIFS 11 Mbits/s



Comme je le disais plus haut la fonctionnalité ouvrir avec est bien présente sur
un fichier en LAN CIFS, mais une fois cliqué sur Vidéo, Astro télécharge la vidéo...
Donc inutilisable pour lire des vidéos en direct.
Il existe une version payante à 3€99


OI File Manager Logo OIfm 

OI File manager est moins populaire que les autres, mais reste dans le top 4

  • L'interface
OI Interface



Rien de transcandant dans l'interface de OI

Remarques & Fonctionnalités
  • Interface sobre et efficace
  • Recherche
  • Paramètres peu nombreux
  • Pas de multiselection
  • Pas d'interface partage réseaux !!!!
OI est simple mais ne comporte pas assez de fonctionnalités à mon gout.



File Manager (Rhythm Software)Logo OIfm

FM est l'interface que j'utilisais depuis longtemps sur Android.
Je la trouvais simple, efficace et rapide.

  • L'interface
File Manager Rhythm interface



Remarques & fonctionnalités:

  • Interface Sobre et intuitive
  • Multiselections
  • Recherches
  • Intégration de partages LAN CIFS
  • Integration de Dropbox, GoogleDrive, Skydrive, Box...



Débits Transfert CIFS


File_manager_RS_débit
Débit transfert CIFS 6Mbits/s
Impossible de monter au dessus des 6Mbits/s !!!


Conclusion

Maxi 5 étoiles


logo esfm Logo Astro-fm Logo OIfm Logo OIfm
Interface
****
*****
***
***
Fonctionnalités
****
*****
*
***
Intégration Cloud
****
****

*****
Débit CIFS
*****
****

**
Total /20
17
18
4
13

Pour conclure on vois que mis à part OI, les autres solutions sont très bonnes.
OI n'est pas mauvais, mais au niveau des 3 autres...

Astro
A voir les notes on aurait tendance à conseiller Astro qui à une interface superbe, énormément de fonctionnalités, une bonne intégration au cloud ( même si on aurait aimé skydrive, hubic, ubuntuone en plus)
En effet pour quelqun qui ne veut pas regarder de vidéos en réseau Astro est à mon avis le meilleur choix.
Mais pour moi le problème rédibitoire d'Astro, c'est qu'il à été incapable de lancer une vidéo directement !!!
quand on fait "ouvrir avec" il télécharge la vidéo en arrière plan... donc autrement dit vous n'êtes pas prêt de lire votre média...
Surtout si c'est de la HD à plusieurs GigaOctets...

FM Rhythm Soft
J'utilisais depuis très longtemps File Manager de Rhythm, il était rapide, bien intégré à Android, de bonne fonctionnalité Cloud et réseau.
Mais les tests de débits réseau sont catastrophiques !!!
Impossible de dépasser le 6Mbit/s en transfert et en lecture..
C'est long, très long !!!
Ceci en résulte de gros probleme pour lire les vidéos en direct, puisque le débit n'est pas suffisant pour emplir assez vite le buffer du player vidéo..
Donc cela donne des sacades et des freeze intempestifs de la vidéo.

ES
Pour mon utilisation, ES File Explorer est le plus utile.
Même si son interface ne vaut pas Astro, et qu'il à moins de fonctionnalités, il reste rapide et intuitif.
Et surtout c'est le grand gagnant du réseau.
J'ai vu monter les transfert CIFS en pointe a 20Mbits/s, la lecture en direct d'un flux vidéo ne pose pas de problème.


Les liens pour les installer à partir du Google Play


précédente page 2 sur 11 suivante »