Statistics
| Branch: | Tag: | Revision:

root / ui / views.py @ aff0be51

History | View | Annotate | Download (5.4 kB)

1 a5bc3755 Vangelis Koukis
# Copyright 2011 GRNET S.A. All rights reserved.
2 8950a78f Christodoulos Psaltis
#
3 a5bc3755 Vangelis Koukis
# Redistribution and use in source and binary forms, with or
4 a5bc3755 Vangelis Koukis
# without modification, are permitted provided that the following
5 a5bc3755 Vangelis Koukis
# conditions are met:
6 8950a78f Christodoulos Psaltis
#
7 a5bc3755 Vangelis Koukis
#   1. Redistributions of source code must retain the above
8 a5bc3755 Vangelis Koukis
#      copyright notice, this list of conditions and the following
9 a5bc3755 Vangelis Koukis
#      disclaimer.
10 8950a78f Christodoulos Psaltis
#
11 a5bc3755 Vangelis Koukis
#   2. Redistributions in binary form must reproduce the above
12 a5bc3755 Vangelis Koukis
#      copyright notice, this list of conditions and the following
13 a5bc3755 Vangelis Koukis
#      disclaimer in the documentation and/or other materials
14 a5bc3755 Vangelis Koukis
#      provided with the distribution.
15 8950a78f Christodoulos Psaltis
#
16 a5bc3755 Vangelis Koukis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 a5bc3755 Vangelis Koukis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 a5bc3755 Vangelis Koukis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 a5bc3755 Vangelis Koukis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 a5bc3755 Vangelis Koukis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 a5bc3755 Vangelis Koukis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 a5bc3755 Vangelis Koukis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 a5bc3755 Vangelis Koukis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 a5bc3755 Vangelis Koukis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 a5bc3755 Vangelis Koukis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 a5bc3755 Vangelis Koukis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 a5bc3755 Vangelis Koukis
# POSSIBILITY OF SUCH DAMAGE.
28 8950a78f Christodoulos Psaltis
#
29 a5bc3755 Vangelis Koukis
# The views and conclusions contained in the software and
30 a5bc3755 Vangelis Koukis
# documentation are those of the authors and should not be
31 a5bc3755 Vangelis Koukis
# interpreted as representing official policies, either expressed
32 a5bc3755 Vangelis Koukis
# or implied, of GRNET S.A.
33 8950a78f Christodoulos Psaltis
#
34 edda4d30 Markos Gogoulos
import os
35 abf90954 Markos Gogoulos
from django.conf import settings
36 edda4d30 Markos Gogoulos
from django.utils.translation import gettext_lazy as _
37 b303ba05 Christodoulos Psaltis
from django.template import Context, loader
38 cc7c5902 Dimitris Moraitis
from django.http import HttpResponse
39 ec06b07c Dimitris Moraitis
from django.utils.translation import get_language
40 9c901aec Markos Gogoulos
from django.utils import simplejson as json
41 f533f224 Vangelis Koukis
from django.shortcuts import render_to_response
42 b687587e Kostas Papadimitriou
from django.core.urlresolvers import reverse
43 cc7c5902 Dimitris Moraitis
44 abf90954 Markos Gogoulos
TIMEOUT = settings.TIMEOUT
45 7b03c69d Dimitris Moraitis
UPDATE_INTERVAL = settings.UPDATE_INTERVAL
46 f533f224 Vangelis Koukis
IMAGE_ICONS = settings.IMAGE_ICONS
47 e646ebe5 Dimitris Moraitis
48 cc7c5902 Dimitris Moraitis
def template(name, context):
49 e646ebe5 Dimitris Moraitis
    template_path = os.path.join(os.path.dirname(__file__), "templates/")
50 b303ba05 Christodoulos Psaltis
    current_template = template_path + name + '.html'
51 b303ba05 Christodoulos Psaltis
    t = loader.get_template(current_template)
52 b303ba05 Christodoulos Psaltis
    return HttpResponse(t.render(Context(context)))
53 cc7c5902 Dimitris Moraitis
54 cc7c5902 Dimitris Moraitis
def home(request):
55 e646ebe5 Dimitris Moraitis
    context = {'timeout': TIMEOUT,
56 a226ff9f Christodoulos Psaltis
               'project': '+nefo',
57 e646ebe5 Dimitris Moraitis
               'request': request,
58 f533f224 Vangelis Koukis
               'current_lang': get_language() or 'en',
59 7b03c69d Dimitris Moraitis
               'update_interval': UPDATE_INTERVAL,
60 f533f224 Vangelis Koukis
               'image_icons': IMAGE_ICONS,}
61 cc7c5902 Dimitris Moraitis
    return template('home', context)
62 cc7c5902 Dimitris Moraitis
63 43df43aa Markos Gogoulos
def machines(request):
64 f533f224 Vangelis Koukis
    context = {'default_keywords': settings.DEFAULT_KEYWORDS}
65 43df43aa Markos Gogoulos
    return template('machines', context)
66 42f67a2a Dimitris Moraitis
67 f533f224 Vangelis Koukis
def machines_icon(request):
68 f533f224 Vangelis Koukis
    context = {'default_keywords': settings.DEFAULT_KEYWORDS}
69 f533f224 Vangelis Koukis
    return template('machines_icon', context)
70 f533f224 Vangelis Koukis
71 f533f224 Vangelis Koukis
def machines_list(request):
72 f533f224 Vangelis Koukis
    context = {'default_keywords': settings.DEFAULT_KEYWORDS}
73 f533f224 Vangelis Koukis
    return template('machines_list', context)
74 f533f224 Vangelis Koukis
75 f533f224 Vangelis Koukis
def machines_single(request):
76 f533f224 Vangelis Koukis
    context = {'default_keywords': settings.DEFAULT_KEYWORDS}
77 f533f224 Vangelis Koukis
    return template('machines_single', context)
78 f533f224 Vangelis Koukis
79 f533f224 Vangelis Koukis
def machines_console(request):
80 473d37cc Markos Gogoulos
    host, port, password = ('','','')
81 6912c72b Markos Gogoulos
    host = request.GET.get('host','')
82 6912c72b Markos Gogoulos
    port = request.GET.get('port','')
83 6912c72b Markos Gogoulos
    password = request.GET.get('password','')
84 f533f224 Vangelis Koukis
    machine = request.GET.get('machine','')
85 f533f224 Vangelis Koukis
    host_ip = request.GET.get('host_ip','')
86 f533f224 Vangelis Koukis
    context = {'host': host, 'port': port, 'password': password, 'machine': machine, 'host_ip': host_ip}
87 f533f224 Vangelis Koukis
    return template('machines_console', context)
88 e646ebe5 Dimitris Moraitis
89 fd70c1db Markos Gogoulos
def machines_connect(request):
90 fd70c1db Markos Gogoulos
    ip_address = request.GET.get('ip_address','')
91 afedad4d Markos Gogoulos
    operating_system = request.GET.get('os','')
92 b687587e Kostas Papadimitriou
    if operating_system == 'windows' and request.GET.get("rdp", False): #check if we are on windows
93 fd70c1db Markos Gogoulos
        rdp_file = os.path.join(os.path.dirname(__file__), "static/") + 'synnefo-windows.rdp'
94 fd70c1db Markos Gogoulos
        connect_data = open(rdp_file, 'r').read()
95 fd70c1db Markos Gogoulos
        connect_data = connect_data + 'full address:s:' + ip_address + '\n'
96 fd70c1db Markos Gogoulos
        response = HttpResponse(connect_data, mimetype='application/x-rdp')
97 fd70c1db Markos Gogoulos
        response['Content-Disposition'] = 'attachment; filename=synnefo-windows.rdp'
98 fd70c1db Markos Gogoulos
    else:
99 b687587e Kostas Papadimitriou
        ssh = False
100 b687587e Kostas Papadimitriou
        if (operating_system != "windows"):
101 b687587e Kostas Papadimitriou
            ssh = True
102 b687587e Kostas Papadimitriou
103 b687587e Kostas Papadimitriou
        info = _("Connect on windows using the following RDP shortcut file")
104 b687587e Kostas Papadimitriou
        link_title = _("Windows RDP shortcut file")
105 b687587e Kostas Papadimitriou
        link_url = "%s?ip_address=%s&os=%s&rdp=1" % (reverse("machines-connect"), ip_address, operating_system)
106 b687587e Kostas Papadimitriou
107 b687587e Kostas Papadimitriou
        if (operating_system != "windows"):
108 b687587e Kostas Papadimitriou
            info = _("Connect on linux machine using the following url")
109 b687587e Kostas Papadimitriou
            link_url = "ssh://%s/" % ip_address
110 b687587e Kostas Papadimitriou
            link_title = link_url
111 b687587e Kostas Papadimitriou
112 b687587e Kostas Papadimitriou
        response_object = {
113 b687587e Kostas Papadimitriou
                'ip': ip_address,
114 b687587e Kostas Papadimitriou
                'os': operating_system,
115 b687587e Kostas Papadimitriou
                'ssh': ssh,
116 b687587e Kostas Papadimitriou
                'info': unicode(info),
117 b687587e Kostas Papadimitriou
                'link': {'title': unicode(link_title), 'url': link_url}
118 b687587e Kostas Papadimitriou
            }
119 b687587e Kostas Papadimitriou
        response = HttpResponse(json.dumps(response_object), mimetype='application/json')  #no windows, no rdp
120 fd70c1db Markos Gogoulos
    return response
121 fd70c1db Markos Gogoulos
122 fd70c1db Markos Gogoulos
123 e646ebe5 Dimitris Moraitis
def images(request):
124 ec06b07c Dimitris Moraitis
    context = {}
125 cc7c5902 Dimitris Moraitis
    return template('images', context)
126 cc7c5902 Dimitris Moraitis
127 cc7c5902 Dimitris Moraitis
def disks(request):
128 ec06b07c Dimitris Moraitis
    context = {}
129 cc7c5902 Dimitris Moraitis
    return template('disks', context)
130 cc7c5902 Dimitris Moraitis
131 cc7c5902 Dimitris Moraitis
def networks(request):
132 ec06b07c Dimitris Moraitis
    context = {}
133 cc7c5902 Dimitris Moraitis
    return template('networks', context)
134 0dedf601 Christodoulos Psaltis
135 f533f224 Vangelis Koukis
def files(request):
136 0dedf601 Christodoulos Psaltis
    context = {}
137 0dedf601 Christodoulos Psaltis
    return template('files', context)
138 0dedf601 Christodoulos Psaltis
139 0dedf601 Christodoulos Psaltis
def desktops(request):
140 0dedf601 Christodoulos Psaltis
    context = {}
141 0dedf601 Christodoulos Psaltis
    return template('desktops', context)
142 0dedf601 Christodoulos Psaltis
143 0dedf601 Christodoulos Psaltis
def apps(request):
144 0dedf601 Christodoulos Psaltis
    context = {}
145 0dedf601 Christodoulos Psaltis
    return template('apps', context)