forked from cedrozor/myrtille
-
Notifications
You must be signed in to change notification settings - Fork 0
/
GetUpdate.aspx.cs
72 lines (61 loc) · 2.72 KB
/
GetUpdate.aspx.cs
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
/*
Myrtille: A native HTML4/5 Remote Desktop Protocol client.
Copyright(c) 2014-2021 Cedric Coste
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
using System;
using System.Web.UI;
namespace Myrtille.Web
{
public partial class GetUpdate : Page
{
/// <summary>
/// retrieve an image update (region or fullscreen) from the remote session and send it to the browser
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(
object sender,
EventArgs e)
{
// if cookies are enabled, the http session id is added to the http request headers; otherwise, it's added to the http request url
// in both cases, the given http session is automatically bound to the current http context
RemoteSession remoteSession = null;
try
{
if (Session[HttpSessionStateVariables.RemoteSession.ToString()] == null)
throw new NullReferenceException();
// retrieve the remote session for the current http session
remoteSession = (RemoteSession)Session[HttpSessionStateVariables.RemoteSession.ToString()];
try
{
// retrieve params
var imgIdx = int.Parse(Request.QueryString["imgIdx"]);
// retrieve image data
var img = remoteSession.Manager.GetCachedUpdate(imgIdx);
if (img != null && img.Data.Length > 0)
{
// write the output
Response.OutputStream.Write(img.Data, 0, img.Data.Length);
}
}
catch (Exception exc)
{
System.Diagnostics.Trace.TraceError("Failed to retrieve display update, remote session {0} ({1})", remoteSession.Id, exc);
}
}
catch (Exception exc)
{
System.Diagnostics.Trace.TraceError("Failed to retrieve the active remote session ({0})", exc);
}
}
}
}