~ubuntu-branches/ubuntu/utopic/exabgp/utopic

« back to all changes in this revision

Viewing changes to dev/bin/recorder-connect

  • Committer: Package Import Robot
  • Author(s): Henry-Nicolas Tourneur
  • Date: 2014-03-08 19:07:00 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20140308190700-xjbibpg1g6001c9x
Tags: 3.3.1-1
* New upstream release
* Bump python minimal required version (2.7)
* Closes: #726066 Debian packaging improvements proposed by Vincent Bernat
* Closes: #703774 not existent rundir (/var/run/exabgp) after reboot

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
import os
 
4
import sys
 
5
import pwd
 
6
import socket
 
7
 
 
8
def od (value):
 
9
        def spaced (value):
 
10
                even = None
 
11
                for v in value:
 
12
                        if even is False:
 
13
                                yield ' '
 
14
                        yield '%02X' % ord(v)
 
15
                        even = not even
 
16
        return ''.join(spaced(value))
 
17
 
 
18
def drop ():
 
19
        uid = os.getuid()
 
20
        gid = os.getgid()
 
21
 
 
22
        if uid and gid:
 
23
                return
 
24
 
 
25
        for name in ['nobody',]:
 
26
                try:
 
27
                        user = pwd.getpwnam(name)
 
28
                        nuid = int(user.pw_uid)
 
29
                        ngid = int(user.pw_uid)
 
30
                except KeyError:
 
31
                        pass
 
32
 
 
33
        if not gid:
 
34
                os.setgid(ngid)
 
35
        if not uid:
 
36
                os.setuid(nuid)
 
37
 
 
38
 
 
39
drop()
 
40
 
 
41
# Create a TCP/IP socket
 
42
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
43
 
 
44
# Connect the socket to the port on the server given by the caller
 
45
server_address = (sys.argv[1], int(sys.argv[2]))
 
46
print >>sys.stderr, 'connecting to %s port %s' % server_address
 
47
sock.connect(server_address)
 
48
 
 
49
with open(sys.argv[3]) as record:
 
50
        try:
 
51
                while True:
 
52
                        count = 0
 
53
                        even = False
 
54
                        byte = sock.recv(1)
 
55
                        if byte == '': break
 
56
                        record.write('%02X' % ord(byte))
 
57
                        count = (count + 1) % 8
 
58
                        if not count:
 
59
                                record.write('\n')
 
60
                                even = False
 
61
                        else:
 
62
                                even != even
 
63
                                if even:
 
64
                                        record.write(' ')
 
65
        finally:
 
66
                sock.close()