1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 """\
21 X2goServerSessionList and X2goServerSessionInfo classes - data handling for
22 X2go server sessions.
23
24 This backend handles X2go server implementations that respond with session infos
25 via server-side STDOUT.
26
27 """
28 __NAME__ = 'x2goserversessioninfo-pylib'
29
31 """\
32 L{X2goServerSessionInfo} is used to store all information
33 that is retrieved from the connected X2go server on
34 C{X2goTerminalSessionBACKEND.start()} resp. C{X2goTerminalSessionBACKEND.resume()}.
35
36 """
40 return "<%s instance: %s>" % (self.__class__, self.name)
41
43 """\
44 Parse a single line of X2go's listsessions output.
45
46 """
47 try:
48 l = x2go_output.split("|")
49 self.name = l[1]
50 self.cookie = l[6]
51 self.agent_pid = int(l[0])
52 self.display = int(l[2])
53 self.status = l[4]
54 self.graphics_port = int(l[8])
55 self.snd_port = int(l[9])
56 self.sshfs_port = int(l[13])
57 self.username = l[11]
58 self.hostname = l[3]
59
60 self.date_created = l[5]
61
62 self.date_suspended = l[10]
63 self.local_container = ''
64 except IndexError, e:
65
66 print 'Encountered IndexError: %s' % str(e)
67 print 'THIS SHOULD NOT HAPPEN... HERE IS THE x2golistsessions OUTPUT THAT CAUSED THE ERROR...'
68 print x2go_output
69 raise e
70 except ValueError, e:
71
72 print 'Encountered IndexError: %s' % str(e)
73 print 'THIS SHOULD NOT HAPPEN... HERE IS THE x2golistsessions OUTPUT THAT CAUSED THE ERROR...'
74 print x2go_output
75 raise e
76
78
79 return self.status == 'R'
80
82
83 return self.status == 'S'
84
86 """\
87 Parse x2gostartagent output.
88
89 """
90 l = x2go_output.split("\n")
91 self.name = l[3]
92 self.cookie = l[1]
93 self.agent_pid = int(l[2])
94 self.display = int(l[0])
95 self.graphics_port = int(l[4])
96 self.snd_port = int(l[5])
97 self.sshfs_port = int(l[6])
98 self.username = ''
99 self.hostname = ''
100
101 self.date_created = ''
102 self.date_suspended = ''
103
104 self.status = 'R'
105 self.local_container = ''
106 self.remote_container = ''
107
108 - def initialize(self, x2go_output, username='', hostname='', local_container='', remote_container=''):
109 """\
110 Parse X2go server's C{x2gostartagent} stdout values.
111
112 @param x2go_output: X2go server's C{x2gostartagent} command output, each value
113 separated by a newline character.
114 @type x2go_output: str
115 @param username: session user name
116 @type username: str
117 @param hostname: hostname of X2go server
118 @type hostname: str
119 @param local_container: X2go client session directory for config files, cache and session logs
120 @type local_container: str
121 @param remote_container: X2go server session directory for config files, cache and session logs
122 @type remote_container: str
123
124 """
125 self._parse_x2gostartagent_output(x2go_output)
126 self.username = username
127 self.hostname = hostname
128 self.local_container = local_container
129 self.remote_container = remote_container
130
132 """\
133 Clear all properties of a L{X2goServerSessionInfo} object.
134
135 """
136 self.name = ''
137 self.cookie = ''
138 self.agent_pid = ''
139 self.display = ''
140 self.graphics_port = ''
141 self.snd_port = ''
142 self.sshfs_port = ''
143 self.username = ''
144 self.hostname = ''
145 self.date_created = ''
146 self.date_suspended = ''
147 self.status = ''
148 self.local_container = ''
149 self.remote_container = ''
150
151 __init__ = clear
152
153
155 """\
156 L{X2goServerSessionListSTDOUT} is used to store all information
157 that is retrieved from a connected X2go server on a
158 C{X2goControlSessionBACKEND.list_sessions()} call.
159
160 """
162 """\
163 @param x2go_output: X2go server's C{x2golistsessions} command output, each
164 session separated by a newline character. Session values are separated
165 by Unix Pipe Symbols ('|')
166 @type x2go_output: str
167
168 """
169 self.sessions = {}
170 lines = x2go_output.split("\n")
171 for line in lines:
172 if not line:
173 continue
174 s_info = info_backend()
175 s_info._parse_x2golistsessions_line(line)
176 self.sessions[s_info.name] = s_info
177
180
182 """\
183 STILL UNDOCUMENTED
184
185 """
186 try:
187 return self.sessions[session_name]
188 except KeyError:
189 return None
190