summaryrefslogtreecommitdiffstats
path: root/actions/services/__init__.py.in
blob: dc64db4499b974ddca7a26c0ac2c4c1010cfd48f (plain)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#!@PYTHON@
# -*-python-*-
# Copyright (C) 2005 by Sebastien Estienne
#
# This file may be distributed and/or modified under the terms of
# the GNU General Public License version 2 as published by
# the Free Software Foundation.
# This file is distributed without any warranty; without even the implied
# warranty of merchantability or fitness for a particular purpose.
# See "COPYING" in the source distribution for more information.
#
# $id$
#

import subprocess
import gnome

def pair_to_dict(l):
    res = dict()
    for el in l:
        if "=" not in el:
            res[el]=''
        else:
            tmp = el.split('=',1)
            if len(tmp[0]) > 0:
                res[tmp[0]] = tmp[1]
    return res
                                                                

def build_url(uri = "http", hostname="127.0.0.1", port = None, path = None, username = None, password = None):
    if path and path != None:
        if path[0] == "/":
            path = path[1:]
    else:
        path = ""
        
    if username:
        if password:
            username="%s:%s@" % (username,password)
        else:
            username="%s@" % (username)
    else:
        username=""
    if port and port != None:
        hostname="%s:%i" % (hostname,port)
    return "%s://%s%s/%s" % (uri,username,hostname,path)

def get_txt_value(txts, txt):
    if txts.has_key(txt):
        return txts[txt]
    else:
        return None
    
    
def _http_tcp(name, hostname, address, port, txts):
    path = get_txt_value(txts,"path")
    username = get_txt_value(txts,"u")
    password = get_txt_value(txts,"p")
    url = build_url("http",address,port, path, username,password)
    gnome.url_show(url)
        
def _https_tcp(name, hostname, address, port, txts):
    path = get_txt_value(txts,"path")
    username = get_txt_value(txts,"u")
    password = get_txt_value(txts,"p")
    url = build_url("https",address,port, path, username,password)
    gnome.url_show(url)
        
def _ftp_tcp(name, hostname, address, port, txts):
    path = get_txt_value(txts,"path")
    username = get_txt_value(txts,"u")
    password = get_txt_value(txts,"p")
    url = build_url("ftp",address,port, path, username,password)
    gnome.url_show(url)
        
def _ssh_tcp(name, hostname, address, port, txts):
    if txts.has_key("u"):
        sshline = "ssh -l %s -p %i %s" % (txts["u"], port, address)
    else:
        sshline = "ssh -p %i %s" % (port, address)

    cmdline = []
    cmdline.append("gnome-terminal")
    cmdline.append("--tab")
    cmdline.append("-t %s" % name)
    cmdline.append("-e %s" % sshline)
    pid = subprocess.Popen(cmdline).pid

def _sftpssh_tcp(name, hostname, address, port, txts):
    path = get_txt_value(txts,"path")
    username = get_txt_value(txts,"u")
    password = get_txt_value(txts,"p")
    url = build_url("ftp",address,port, path, username,password)
    gnome.url_show(url)

def handle(name, stype, hostname, address, port, txts):
    if stype == "_http._tcp":
        _http_tcp(name, hostname, address, port, txts)
        return
    if stype == "_https._tcp":
        _https_tcp(name, hostname, address, port, txts)
        return
    if stype == "_ftp._tcp":
        _ftp_tcp(name, hostname, address, port, txts)
        return
    if stype == "_ssh._tcp":
        _ssh_tcp(name, hostname, address, port, txts)
        return
    if stype == "_sftp-ssh._tcp":
        _sftpssh_tcp(name, hostname, address, port, txts)
        return
            
            
if __name__ == "__main__":
    print build_url()
    print build_url("ftp")
    print build_url("https","www.google.com")
    print build_url("https","www.google.com",80)
    print build_url("https","www.google.com",80)
    print build_url("https","www.google.com",80,"test")
    print build_url("https","www.google.com",80,"/test")
    print build_url("https","www.google.com",80,"/test", "user")
    print build_url("https","www.google.com",0, "", None, "pass")
    print build_url("https","www.google.com",80,"/test", "user", "pass")