Tym-Project

From: SUPINFO
To: Tous
Subject: IT

Installation De Ss5 Sur Une Debian 5

ss5 est un service de proxy SOCKS très performant, développé par une seule personne je tiens à le souligner ! J’ai eu à l’installer sur une Debian 5, et j’ai donc réalisé un petit script pour automatiser tout cela.

On installe…

N’oubliez pas de préciser le numéro de version complet dans la variable VER :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
VER="3.8.4-1"
DIR="/tmp/ss5_install"
apt-get update
apt-get -y install build-essential libpam0g-dev libpam-devperm libldap2-dev libssl-dev

if ! [ -d "$DIR" ];then mkdir $DIR fi
cd $DIR wget
http://downloads.sourceforge.net/project/ss5/ss5/$VER/ss5-$VER.tar.gz

tar xzf ss5-$VER.tar.gz

VER=`echo $VER | cut -d "-" -f 1`

cd ss5-$VER

./configure --with-defaultport=80 && make clean && make && make install

Une particularité du .tar.gz de ss5 c’est de ne pas intégrer le numéro de sous-version (“-2” par exemple) dans le nom du dossier, ce qui oblige à cette pirouette dans le script :

VER=`echo $VER | cut -d "-" -f 1`

…et on démarre !

J’ai aussi créé un script pour init.d (assez basique), basé sur /etc/init.d/skeleton. Il intègre quelques options comme le port par défaut ou le lancement en mode daemon (DAEMON_ARGS="-t -u root -b 0.0.0.0:80") :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#! /bin/sh
### BEGIN INIT INFO
# Provides:          ss5
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Initscript for ss5
# Description:
### END INIT INFO
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/bin/:/usr/bin:/sbin:/usr/sbin
DESC="ss5 proxy server"
NAME=ss5
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS="-t -u root -b 0.0.0.0:80"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
        $DAEMON_ARGS \
        || return 2
}
#
# Function that stops the daemon/service
#
do_stop()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently.  A last resort is to
    # sleep for some time.
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
}
case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  restart|force-reload)
    log_daemon_msg "Restarting $DESC" "$NAME"
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
    exit 3
    ;;
esac

Bonne installation ;-)

Comments