Patent ID: 8689307

Claim:
A method for establishing a peer-to-peer session between a real endpoint and a mapped endpoint, wherein the real endpoint is a first device configured to directly access a peer-to-peer network, the method comprising: receiving, by a shadow server, a login request from the mapped endpoint, wherein the mapped endpoint is a second device that lacks the functionality needed to directly access the peer-to-peer network; creating, by the shadow server, a virtual endpoint corresponding to the mapped endpoint; receiving, by the virtual endpoint, authentication information from the mapped endpoint, wherein the authentication information is needed to gain access to the peer-to-peer network by the virtual endpoint; sending, by the virtual endpoint, the authentication information to an access server in the peer-to-peer network to log the virtual endpoint into the network; receiving, by the virtual endpoint, a profile from the access server in response to sending the authentication information, wherein the profile contains a list of all real endpoints with which the virtual endpoint has permission to communicate and a status of online or offline for each of the real endpoints, and wherein the profile further includes address information for each of the real endpoints that is currently online when the profile is received; sending, by the virtual endpoint, a presence notification directly to the real endpoint to notify the real endpoint that the mapped endpoint is online, wherein the presence message is initiated by the virtual endpoint and not the mapped endpoint and is sent only if the real endpoint is listed in the profile as currently online, and wherein the presence message includes network address information needed by the real endpoint to communicate with the virtual endpoint; receiving, by the virtual endpoint, a message from the mapped endpoint that is to be sent to the real endpoint; and sending, by the virtual endpoint, the message directly to the real endpoint, wherein all communications between the mapped endpoint and the real endpoint pass through the virtual endpoint.