public RESTStatus CloseWSServerMappingPort(SQLLib sql, NetString GUID, NetworkConnectionInfo ni) { if (ni.HasAcl(ACLFlags.ComputerLogin) == false) { ni.Error = "Access denied"; ni.ErrorID = ErrorFlags.AccessDenied; return(RESTStatus.Denied); } RemoteNetworkConnectionWSCrosser.CloseSession(ni.Username, GUID.Data); Res = new PushConnectNetworkResult(); Res.Result = 0; return(RESTStatus.Success); }
public RESTStatus PushNetworkDataCreateConnection(SQLLib sql, PushConnectNetwork data, NetworkConnectionInfo ni, string MachineID) { if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false) { ni.Error = "Access denied"; ni.ErrorID = ErrorFlags.AccessDenied; return(RESTStatus.Denied); } string SessionConnectionGUID = RemoteNetworkConnectionWSCrosser.CreateSession(ni.Username, MachineID); data.SessionID = SessionConnectionGUID; string sess = Guid.NewGuid().ToString(); PushData p = new PushData(); p.Action = "netcreatedata2"; p.ReplyID = sess; p.AdditionalData1 = JsonConvert.SerializeObject(data); PushServiceHelper.SendPushService(MachineID, p, 1); PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 1, sess); if (resp == null) { ni.Error = "No response"; ni.ErrorID = ErrorFlags.NoData; RemoteNetworkConnectionWSCrosser.CloseSession(SessionConnectionGUID); return(RESTStatus.NoContent); } try { res1 = JsonConvert.DeserializeObject <PushConnectNetworkResult>(resp.Data.ToString()); } catch { ni.Error = "Faulty data"; ni.ErrorID = ErrorFlags.NoData; RemoteNetworkConnectionWSCrosser.CloseSession(SessionConnectionGUID); return(RESTStatus.NoContent); } return(RESTStatus.Success); }
public RESTStatus WSCreateScreenConnection(SQLLib sql, object dummy, NetworkConnectionInfo ni, string MachineID) { if (ni.HasAcl(ACLFlags.ChangeServerSettings) == false) { ni.Error = "Access denied"; ni.ErrorID = ErrorFlags.AccessDenied; return(RESTStatus.Denied); } string SessionConnectionGUID = RemoteNetworkConnectionWSCrosser.CreateSession(ni.Username, MachineID); string guid = Guid.NewGuid().ToString(); PushData p = new PushData(); p.Action = "startwsscreen"; p.ReplyID = guid; p.AdditionalData1 = SessionConnectionGUID; PushServiceHelper.SendPushService(MachineID, p, 2); PushDataResponse resp = PushServiceHelper.PopResponse(MachineID, 2, guid, Timeout: 240); if (resp == null) { ni.Error = "No response"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.NoContent); } try { res1 = JsonConvert.DeserializeObject <PushConnectNetworkResult>(resp.Data.ToString()); } catch { ni.Error = "Faulty data"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.NoContent); } return(RESTStatus.Success); }
public RESTStatus ConnectWSServerMappingPort(SQLLib sql, NetInt64 ID, NetworkConnectionInfo ni) { if (ni.HasAcl(ACLFlags.ComputerLogin) == false) { ni.Error = "Access denied"; ni.ErrorID = ErrorFlags.AccessDenied; return(RESTStatus.Denied); } List <PolicyObject> pols = Policies.GetPolicyForComputerInternal(sql, ni.Username); PolicyObject FoundPolicy = null; foreach (PolicyObject p in pols) { if (p.ID == ID.Data && p.Type == PolicyIDs.PortMapping) { FoundPolicy = p; break; } } if (FoundPolicy == null) { ni.Error = "Not found"; ni.ErrorID = ErrorFlags.NotAccepted; return(RESTStatus.Denied); } PortMappingPolicy pmp = JsonConvert.DeserializeObject <PortMappingPolicy>(Policies.GetPolicy(sql, FoundPolicy.ID).Data); IPAddress ip; IPHostEntry ipaddr; if (IPAddress.TryParse(pmp.ServerServer, out ip) == false) { ipaddr = Dns.GetHostEntry(pmp.ServerServer); } else { ipaddr = new IPHostEntry(); ipaddr.AddressList = new IPAddress[] { ip }; } if (ipaddr == null) { ni.Error = "Cannot resolve"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.Fail); } if (ipaddr.AddressList.Length == 0) { ni.Error = "Resolve - no data"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.Fail); } Socket socket; try { socket = new Socket(ipaddr.AddressList[0].AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Connect(ipaddr.AddressList[0], pmp.ServerPort); } catch (Exception ee) { Debug.WriteLine("Cannot connect " + ee.ToString()); ni.Error = "Resolve - no data"; ni.ErrorID = ErrorFlags.NoData; return(RESTStatus.Fail); } string SessionID = ""; RemoteNetworkConnectionWSCrosser.CreateCustomAgentConnection <WS_ServerPortMappingConnection>(ni.Username, ref SessionID, i => i.InitThis(ref SessionID, socket)); Res = new PushConnectNetworkResult(); Res.ConnectedGUID = SessionID; Res.Result = 0; return(RESTStatus.Success); }