SYSTEM AND METHOD FOR TRANSFERRING FILES
Field of the Invention
The present invention relates to transferring files across a network, and more specifically, to transferring files from one user to another where control over such transfer may be established at a server.
Background of the Invention
User to user file sharing (also referred to as person to person, peer to peer or "P2P") has been available for many years but has rapidly increased in popularity since the introduction of file sharing programs and systems, such as Napster or Scour. A P2P system may allow any personal computer with an Internet connection to act as a file server, making files available for other users to retrieve and, when taken as a whole, forming a vast network for real-time distribution of content. The files shared may include documents, music, audio, video, photographs, graphics, images, multimedia, data, databases, or any other information or combinations thereof that users may want to share.
A P2P system may allow users direct access to files located with other users. This may eliminate the need for users to access a central location to search for and receive files. Each user in a P2P system acts as a storage device for the files, rather than using one central location. This alleviates the need for the network to provide large amounts of storage for the files users wish to make available, increases the number and variety of files that may be made available, and reduces the demand for bandwidth for users to upload and download the files.
A P2P system, however, may suffer drawbacks resulting from the lack of well- developed control mechanisms to manage the data transfers. An example of these drawbacks may include the illegal transfer of files, as intellectual property and other forms of ownership rights of the files and their content may be ignored in a P2P network. P2P file sharing systems may also result in large amounts of bandwidth usage at the end-users' portion of the network, because users making files available will need bandwidth to upload files each time they wish to accommodate a request for a
download. Bandwidth usage at a portion of the network not equipped to handle such volume will not only harm that user's network, but may result in degradation of the P2P service as a whole, including slow transfer and lost files.
Another drawback of current P2P systems is that they may pose a substantial risk of spreading or permitting the spread of computer viruses. In P2P systems, files are sent from one person to another, often with little or no security in between. For example, there have been well-known instances of files sent between end users as attachments to emails that have caused widespread destruction and costs to corporate and public networks and user machines. Similar damage could result from file transfers using P2P systems. Moreover, this risk may dissuade users from using a P2P network for transferring files, thereby limiting the usefulness of the P2P system.
A further drawback with P2P systems is that they may lack an infrastructure which will permit legitimate business services to be offered. Current technology may fail to provide an infrastructure that is dynamic, scalable, and flexible enough to allow businesses to add value through additional functions at various points in the network. P2P music sharing provides an example of this, since many P2P music sharing systems (Napster, MP3.com, Gnutella) have been unable to capitalize on their popularity by formulating effective, profitable business plans. Businesses may be unable to let consumers choose which value proposition fits their needs, further limiting the ability to create and deliver viable P2P solutions.
As referred to above, another system used for transferring and receiving files may involve uploading a file to a conventional server at a central location for storage for later download of the file. A conventional server at a central location may provide efficiencies, as a user only has to access one server to gain access to a plurality of files for down load. Further, an administrator at the central location may be able to exercise control over the conventional server.
A drawback associated with a conventional server at a central location is that storage at the central location may prove costly and prohibitive. An additional drawback may occur if a plurality of unrelated, competing conventional servers are available to the user for sharing files. Differences in how the competing conventional servers function to transfer files may inhibit a user's ability and desire to use multiple
conventional servers, thereby reducing the files available at a particular conventional server.
Present file transfer systems suffer from the drawback of being too restricted, in that theses systems are limited to a particular file transfer method. These systems provide no option for a user or administrator to use different types of file transfer methods' within the same system.
These and other drawbacks may be present.
Summary of the Invention It is therefore an object of the present invention to overcome these and other drawbacks in existing systems and methods.
Another object of the invention is to provide a system and methodology for allowing files to be transferred over a network.
Another object of the invention is to provide a system and method for designating a transfer method for transferring one or more files, thereby enabling the use of the appropriate transfer method for a particular file, taking advantage of the strengths of a transfer method when appropriate.
Additional objects and advantages of the invention will be set forth in part in the description, or may be learned by practice of the invention. The objects and advantages of the invention may be realized and attained by means of instrumentalities and combinations particularly pointed out in the appended claims.
To achieve these objects and in accordance with the purpose of the invention, as embodied and broadly described herein, a control server for transferring at least one file from an originator module to a download module over a network is provided, where the control server comprises a directory module for managing a directory of the at least one file, where the receiver module uses the directory module to locate the at least one file, and a manager module for managing the transfer of the at least one file from the originator module to the receiver module based on a request from the receiver module; wherein managing the transfer comprises designating a transfer method according to instructions received at the control server.
A further embodiment of the invention may include a system for transferring at least one file over a network which comprises an originator module for initially storing
the at least one file for transfer, where the originator module is connected to the network, a receiver module for receiving the at least one file, where the receiver module connected to the network, and a control server for controlling the transfer of the at least one file from the originator module to the receiver module through the network, where the control server is connected to the network and controls the transfer by designating a transfer method according to instructions received at the control server.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment of the invention and, together with the description, serve to explain the principles of the invention.
Brief Description of the Drawings
Figure 1 is a flowchart illustrating a process for transferring files according to an embodiment of the invention.
Figure 2 is a flowchart illustrating a process for an end user to post a file according to an embodiment of the invention.
Figure 3 is a flowchart illustrating a process for a control server to receive a file according to an embodiment of the invention.
Figure 4 is a flowchart illustrating a process for an end user to search for a file according to an embodiment of the invention. Figure 5 is a flowchart illustrating a process for a control server to search for a file according to an embodiment of the invention.
Figure 6 is a flowchart illustrating a process for an end user to receive a file according to an embodiment of the invention.
Figure 7 is a flowchart illustrating a process for a control server to transmit a file according to an embodiment of the invention.
Figure 8 is a schematic representation of a system for file transfer according to an embodiment of the invention.
Figure 9 is an example of a graphic user interface for transferring files according to an embodiment of the invention. Figure 10 is a schematic representation of a network system according to an embodiment of the invention.
Detailed Description of the Preferred Embodiments
Reference will now be made in detail to the present preferred embodiment of the invention, an example of which is illustrated in the accompanying drawings, in which like reference characters refer to corresponding elements. The present invention relates to a system and method for transferring files from one end user to another end user. It is understood that the transferring a file may include providing a copy of an existing file to another location, or moving a copy from one location to another. An end user (which may be referred to as an originator end user) may indicate to a control server that one or more files are available for transfer to other end users (which may be referred to as receiver end users). An end user may act as a receiver end user at some times and as an originator end user at other times. Receiver end users may contact the control server to find and receive files from originator end users. Based on instructions received from a control server administrator, the control server may control the manner of transfer of the files, such as direct peer to peer transfer, virtual peer to peer transfer, direct transfer to the control server, HTTP transfer, or other transfer methods. Further, the control administrator may instruct the control server to invoke various functions during the file transfer when appropriate, such as virus check, content check, digital rights management, and/or other functions. Virtual peer to peer file sharing ("NP2P"), as referred to above, involves transferring files through a control server without end users knowledge. Various functions, such as scanning files for viruses and ensuring compliance with digital rights may be performed on the files, based on instructions received at the control server. However, the control server provides no long term storage for the file and transmits the file to the receiver end user in near real-time. Thus, to the originator end users and the receiver end users, a NP2P system looks and acts like a regular P2P system.
Use of instructions to the control server enables the control server administrator to control various aspects of the file transfer, including the method of file transfer. The control server administrator may instruct the control server to perform various functions without the end users being aware the functions are being performed. By way of example, the control server administrator may instruct the control server to perform virtual peer to peer file transfer with a virus check function. The control server
may transfer the files according to these instructions. The end users transmit and receive the files without knowing that these functions are occurring. According to another embodiment of the invention, the originator end user and/or the receiver end user may provide instructions to the control server to control various aspects of the file transfer.
The present invention may enable a control administrator to select among file transfer methods based on the nature of the system, the users, or the types of files transferred. The present invention also allows the administrator to apply NP2P transfers so that he may exercise greater control over the P2P transfer process by adding and removing functions via the addition and removal of various plug-in function modules from a control server. A control server administrator may update a system and process of the present invention with appropriate functions while maintaining a seamless appearance to end users of the system. The present invention will now be described in greater detail below in relation to the following figures, which describe various functions that may be used within the invention. These functions may be interrelated, but appear to end users as seamless functions of an embodiment of the invention.
Fig. 1 is a flowchart illustrating an overview for a process for file transfer using a virtual peer-to-peer transfer according to an embodiment of the invention. This process may be illustrated by reference to the systems of Figs. 8 and 10. At step 80, an end user at originator module 30a (referred to collectively as originator module 30a) accesses control server 20 through network 10. Access may occur through any type of connection to a network, such as through a Connector Provider 110, as described in more detail in Fig. 9 below. At step 82, originator module 30a informs control server 20 regarding the availability of one or more files located at originator module 30a. According to an embodiment of the invention, originator module 30a indicates that certain files are available for transfer to end users at receiver module 30b (collectively referred to as receiver module 30b). Originator module 30a may indicate criteria for transferring a file. By way of example, originator module 30a may indicate that only certain files located at originator module 30a are available to other end users. An end user at originator module 30a may also indicate that only certain end users may receive a file.
It is understood that an originator module 30a may also function as a receiver module 30b. Other criteria may also be designated.
At step 84, a control server administrator may provide criteria to control server 20 to govern the transfer of one or more files. According to an embodiment of the invention, a control server administrator may designate criteria, such as through activating one or more functions, to instruct control server 20 regarding transferring files. Functions, which are described in greater detail below in relation to their associated module, may include, but are not limited to, a temporary storage function, a virus check function, a digital rights management function, a firewall function, a bandwidth management function, a streaming media function, and a statistic tracking function. Other functions may also be used.
At step 86, receiver module 30b requests one or more files. According to an embodiment of the invention, when receiver module 30b knows the name of a file, receiver module 30b may request a file by name at directory module 24 of control server 20. According to an embodiment of the invention, when receiver module 30b does not know the name of a file, receiver module 30b may send a search request for certain types of files, such as a request for photograph files from a certain photographer. Other manners of requesting files may also be used.
At step 88, directory module 24, through control server 20, presents files available for receiver module 30b to receive. Presentation of files may include indicating the name of the file, the contents, the format, the location of the file (e.g., the originator module who has a file, the control server 20 that has the file, etc.) and other information. According to an embodiment of the invention, directory module 24 may search for files based on requests by receiver module 30b. Directory module 24 may present one or more files that meet the request criteria of receiver module 30b, thereby enabling receiver module 30b to choose what file or files to receive. Searching and sorting may be performed in any conventional manner for searching for and sorting files. Other manners for sorting and presenting files may be used.
At step 90, originator module 30b selects one or more files to receive. According to an embodiment of the invention, a selection may be performed by receiver module 30b by using an interface located on a device, such as a requester device 105 described below in Fig. 9.
At step 92, manager module 22, through control server 20, receives one or more selected file(s). According to an embodiment of the invention, when a selected file is located at originator module 30a, manager module 22 receives the file from originator module 30a. As described below in greater detail, a file may be stored in a temporary cache in control server 20, thereby allowing multiple end users to receive a file.
At step 94, control server 20 performs one or more functions on the files received from originator module 30a. Functions, by way of example only, may include checking a file for virus, deteπnining digital rights for a file, or other functions. Functions that may be performed, and their associated modules, are described in greater detail below.
At step 94, manager module 22, through control server 20, transmits the file to a receiver module 30b. Transmitting the file may occur in any conventional manner for transferring files. Various aspects of file transfer methods will now be described in greater detail. According to an embodiment of the invention, the processes of Figs. 2 and 3 may be related, such that Fig. 2 illustrates a process for posting a file from the originator module 30a's viewpoint, while Fig. 3 illustrates a process for posting a file from control server 20's viewpoint. Fig. 2 illustrates a process for posting a file for transfer to by other users according to an embodiment of the invention. As described above, the transfer method may be by a transfer method indicated in instructions received at control module 20. At step 202, an end user, such as an end user using originator module 30a, selects one or more files for posting. Posting a file may vary depending on the file transfer method to be used and may include indicating that a file is available for retrieval by other end users (such as in peer to peer or virtual peer to peer file transfer), storing a file at control server 20 (such as for direct transfer of the file to the control server), or other manner of posting.
At step 204, the originator module 30a selects a transfer method for transferring a file to a receiver module 30b. According to another embodiment of the invention, as described below, a control server administrator or a network administrator may provide default settings or limit the transfer methods available for a particular file, originator end user, and/or receiver end user. A transfer method may include using direct peer-to- peer (e.g., the originator module 30a transferring the file directly to receiver module
30b in a traditional peer-to-peer transfer), virtual peer-to-peer file transfer (e.g., the originator module 30a transferring the file through control server 20 to receiver module 30b where neither end user is aware of the control server's role in the file transfer), transferring a URL address which may serve as a pointer to a location on a third party world wide web server where the file is stored, transferring a file directly to control server 20 for storage at control server 20 and later retrieval, or other manners of file transfer. According to an embodiment of the invention, the transferred URL address may provide a link for a user to activate to the URL address (e.g., the user activates the link with a mouse and views the information associated with the URL address on a viewer). According to another embodiment of the invention, the transferred URL address may automatically display the information associated the URL address on a viewer (e.g., a browser). Other manners of transfer may also be used.
At step 206, metadata for a file may be provided. According to an embodiment of the invention, originator module 30a may provide metadata for a file, such as indicating the format of the file, the contents of the file, a file title, a thumbnail or other sample of the file contents, file size, file date or timestamp, file version information, and other information associated with the file. According to another embodiment of the invention, a metadata identification module 46 may be present at control server 20 for providing metadata for a file. By way of example, metadata identification module 46 may scan a file and provide the metadata information for that file, thereby eliminating the need for an end user to provide the metadata information. Other methods for providing metadata may also be used.
At step 208, originator module 30a determines whether to transfer a file to control server 20. If a file is not to be transferred to the control server 20, originator module 30a transmits the transfer method and metadata for a particular file to be posted to control server 20, at step 210. If a file is to be transferred, originator module 30a transmits the transfer method, the metadata associated with the file, and the file to control server 20 at step 212. Control server 20 may confirm receipt of a transmission from originator module 30a at step 214. Other manners for posting files for availability for transfer may also be used.
Fig. 3 illustrates a process for control server 20 to receive a file and information related to the file according to an embodiment of the invention. At step 220, control
server 20 receives a transfer method, metadata associated with a file, and if applicable for the particular transfer method, an actual file from originator module 30a. As described earlier, a transfer method may include a direct peer-to-peer transfer, a virtual peer-to-peer transfer, a transfer from an originator end user to the control server, or a URL transfer. Some transfer methods may require a file to be transferred to control server 20, while other transfer methods may require a file to stay with originator module 30a. Also as described above, metadata may be provided directly by an originator module 30a or may be automatically provided by a metadata identification module 46 at control server 20. At step 222, one or more applicable plug-in function modules may be invoked.
Whether a plug-in function module is invoked at this step may be determined by instructions from control server administrator module 60, instructions from originator module 30a, receiver module 30b, or instructions from others. Applicable plug-in function modules may include, but are not limited to, a virus check module 28, a metadata identification module 46, a digital rights management module 30, or other types of modules. Various types of plug-in function modules that may be used in connection with the present invention are described in greater detail below in connection with Fig. 8.
At step 224, control server 20 updates a database with the received metadata. According to an embodiment of the invention, control server 20 maintains in directory module 24 a database of files available for transfer to receiver module 30b. The database may include metadata associated with the files, thereby allowing for various search techniques to be employed to retrieve one or more selected files.
At step 226, control server 20 determines whether a file has been received and needs to be stored. If so, the control server stores the file at step 228. Once the file is stored or if no file has been received, control server 20 invokes applicable plug-in function modules at step 230. As described above, the invocation of applicable plug-in modules may be determined by instructions received from a control server administrator using control server administrator module 60 (referred to collectively as control server administrator module 60), originator module 30a, receiver module 30b, or other parties. Applicable plug-in functions modules may include, but are not limited
to, statistic tracking module 38, firewall module 32, or other types of modules as described below in connection with Fig. 8.
At step 232, a status is transmitted to originator module 30a. According to an embodiment of the invention, control server 20 may transmit the status of a transmission received from an originator end user. A status may indicate that a transfer method, metadata, and if applicable, one or more files have been received by control server 20 and have been posted for availability to receiver module 30b.
According to an embodiment of the invention, the processes of Figs. 4 and 5 may be related, such that Fig. 4 illustrates a process for searching from receiver module 30b's viewpoint, while Fig. 5 illustrates a process for searching from control server 20 's viewpoint. Further, the process may be used to search for a posted file, such as a file posted in the processes illustrated in Figs. 2 and 3. Fig. 4 is a flowchart illustrating a process for receiver module 30b to search for a file according to an embodiment of the invention. At step 240, receiver module 30b collects search criteria. Collectively search criteria may include an end user inputting search criteria into receiver module 30b. According to an embodiment of the invention, if receiver module 30b does not know the name of a particular file, receiver module 30b may indicate search criteria for finding certain types of files. Search criteria may include the type of file to receive, the contents of the file, the creator of the content of a file, metadata associated with the file, a file transfer method designated by an originator 30a, or other such criteria. By way of example only, a receiver end user may designate the search criteria indicating the desire to find music files of a song performed by a certain musician, where the files are in a Real-Player format. According to another embodiment of the invention, where receiver module 30b knows the name of a file to be received, receiver module 30b may indicate that name as its search criteria. At step 242, receiver module 30b sends the search criteria to control server 20.
At step 244, control server 20 receives the search criteria from receiver module 30b. According to an embodiment of the invention, search criteria may also include indicating metadata information for a particular file as well as indicating desired transfer method. By way of example, receiver module 30b may desire to receive a file associated with sailing via a virtual peer-to-peer file transfer method. Other types of
search criteria may also be transmitted. At step 246, the results of a search based on search criteria are presented to receiver module 30b.
Figure 5 is a flowchart illustrating a process for control server 20 to perform a search according to an embodiment at the invention. At step 250, control server 20 receives search criteria from receiver module 30b. As described above with regard to Figure 4, search criteria may include the type of file to be received, the content of a file, the creator of a file, metadata associated with the file, a file transfer method, or other search criteria. At step 252, control server 20 determines the search mechanism to be invoked. A search mechanism may include invoking a search module which is a plug- in function module to control server 20. Additionally, a search mechanism may involve a third party search engine which is separate and distinct from control server 20. Determining a search mechanism may include using one or more search engines to find a file for a receiver module 30b. Other manners of determining search mechanisms may also be used. At step 254, the appropriate search modules and/or search mechanisms are invoked. As described above, invoking a search module and/or search mechanism may include invoking a plug-in search module associated with control server 20 and/or invoking one or more search engines which are separate and distinct from control server 20. Other manners of invoking a search module and/or a search mechanism may also be used. Search results are received at control server 20 from the invoked search modules and/or search mechanisms at step 256. According to an embodiment of the invention, control server 20 may sort and arrange the received search results based on instructions from control server administrator module 50 or from receiver module 30b sorting search results. At step 258, the control server sends the results to receiver module 30b.
According to an embodiment of the invention, the processes of Figs. 6 and 7 may be related, such that Fig. 6 illustrates a process for receiving a file from receiver module 30b's viewpoint, while Fig. 7 illustrates a process for transmitting a file searching from control server 20's viewpoint. As described above, the process may be used to transfer a posted file, such as a file posted in the processes illustrated in Figs. 2 and 3, and or a searched for file, such as a file searched for in the processes illustrated in Figs. 4 and 5.
Fig. 6 is a flowchart illustrating retrieval of a file by receiver module 30b according to an embodiment of the invention. At step 270, the receiver module 30 requests one or more files to receive. At step 272, control server 20 determines whether a file transfer is to occur via direct peer-to-peer transfer between originator module 30a and receiver module 30b. If a direct peer-to-peer file transfer is to be used, receiver module 30b contacts originator module 30a to receive the file directly from originator module 30a at step 274. If direct peer-to-peer file transfer is not to be used, control server 20 determines if a virtual peer-to-peer file transfer is to be used at step 276. If a virtual peer-to-peer file transfer is to be used, receiver module 30b receives the file from originator module 30a via control server 20 at step 278.
If virtual peer-to-peer file transfer is not to be used, control server 20 determines if direct file transfer download from control server 20 is to be used at step 280. If a direct file transfer download from control server 20 is to be used, receiver module 30b pulls file from control server 20 at step 282. If a direct file fransfer download from control server 20 is not used, a determination is made if a transfer of a URL address is to occur at step 284. If a URL address transfer is to occur, the receiver module may make a request to receive a file via hypertext transfer protocol (http) from a web site or web server at step 286. If a URL location transfer is not to occur, another transfer mechanism occurs at step 288 and the appropriate transfer functions occur at step 290. Upon transfer of the appropriate file and/or information to receiver module 30b control server 20 determines whether or not to log the file transfer information to control server 20 at step 292. If the file transfer is to be logged, control server 20 logs the file transfer to an appropriate portion of control server 20 such as to a statistics tracking module 38. Once the file transfer has been logged or, if no file transfer is to be logged, receiver module 30b receives the file at step 296. Other manners for transferring a file may also be used.
Figure 7 is a flowchart illustrating a process for control server 20 to retrieve and transmit files according to an embodiment of the invention. At step 300, control server 20 receives a file retrieval request from receiver module 30b. Control server 20 invokes any applicable pre-retrieval plug-in function modules at step 302. According to an embodiment of the invention, a plug-in function module invoked at the pre- retrieval portion of the process may be designated by a control server administrator
module 60, originator module 30a, receiver module 30b, and/or a third party as illustrated above and as will described below in greater detail in connection with Fig. 8. Plug-in function modules may include, but are not limited to, a virus check module 28, a digital rights management module 30, content module 50, or other types of modules. At step 304, control server 20 initiates the transfer of a file to receiver module
30b. According to an embodiment of the invention, the manner of transferring the file may include a direct peer-to-peer file transfer, a virtual peer-to-peer file transfer, a download from a storage area within control server 20 to receiving module 30b, a fransfer of a URL address, or other type of file transfer. At step 306, control server 20 invokes post-retrieval plug-in function modules as applicable.
The present invention as illustrated in Fig. 8 describes a file transfer system 2 for content distribution which may be based on a virtual P2P file transfer system. In contrast to a direct P2P file transfer system, where a file is transferred directly from one end user to another, a virtual P2P file transfer system may involve a control server 20, including manager module 22 and directory module 24 for providing the distribution mechanism. Additional modules may be added to provided additional functions to file transfer system 2. Additional modules are described below in greater detail. End users may be provided with the benefits of file transfer, and businesses may be provided with the ability to build services on top of file transfer system 2 to address file transfer issues related to bandwidth, copyright, and virus protection.
File transfer system 2 includes a network 10, control server 20, which may further comprise various plug-in function modules, originator module 30a, receiver module 30b, and control server administrator 60. It is understood that an end user may switch between acting as an originator module 30a and a receiver module 30 at various times, such as when an end user posts one file and searches for another file. Control server 20 may comprise a plurality of plug-in function modules for facilitating the transfer of one or more files over a network and providing additional functions. Each module may be integral with central server 20, separate from control server 20, separate from each other, or integrated with one or more plug-in function modules. Directory module 24 may be responsible for managing the directory of files across a file transfer network. The directory may include metadata that can be used in a search, thereby allowing users to browse and search the network. By way of example, search directory
module 24 may be searched for all files related to a particular musician. Directory module 24 may search the metadata for the particular musician, and may present files associated with the musician.
Manager module 22 may manage the distribution of files across a network 10. Distribution may include direct file transfer between end users, such as between originator module 30a and receiver module 30b.
According to an embodiment of the invention, a direct P2P file transfer system may be a subset of file transfer system 2. The benefits of a direct P2P transfer between end user computers may be alternatively provided in file transfer system 2 through a virtual file transfer based on the distribution rules. In a virtual P2P file transfer, originator module 30a does not have to manually upload files to control server 20. Originator module 30a may designate what file to share, and control server 20 controls updating directory module 24. A receiver end user is unaware of a file's physical location. This configuration may permit external users to access folders with files. Further, hiding the physical location of files from receiver end users may provide new opportunities to manage the distribution of the files. Manager module 22 may become the content distribution platform.
A control server administrator may be a user using control server administrator module 60 (collectively referred to as "control server administrator module 60"). Control server administrator module 60 may provide information to control server 20 regarding the transfer of files through file transfer system 2. Information may include designating functions, settings, and/or toggles, and adding or deleting functions at either the control server 20 or an end user, such as originator module 30a or receiver module 30b, or other information. According to an embodiment of the invention, control server administrator module 60 may designate to various file transfer methods, such as disabling or enabling a particular file transfer method, or may set a particular file transfer method as a default for all transfers or other types of configurations. As described above, file transfer method may comprise a direct peer-to-peer file transfer, a virtual peer-to-peer file transfer, a file transfer from an originator end user to the control server, or a URL information transfer. According to another embodiment of the invention, control server administrator module 60 may add or remove plug-in function modules located at either control server 20, originator module 30a and/or receiver
module 30b. In addition to adding or removing such plug-in function modules, control server administrator module 60 may designate to various functions and options within the plug-in function modules. Thus, by way of example only, control server administrator module 60 may designate that for a particular originator module 30a, only certain plug-in function modules will be enabled while other plug-in function modules are disabled. Additionally, control server administrator module 60 may provide other plug-in function modules for an originator module 30a to control. Other combinations of designations options defaults, toggle settings, functions and other information may also be used. According to an embodiment of the invention, control server administrator module 60 may work within an organized hierarchy for controlling file transfer system 2. In such a hierarchy, control server administrator module 60 may designate the operability of certain functions to others within a group thereby permitting one or more end users within the group to decide whether or not a particular plug-in function module is invoked for members of that group. Other manners for delegating responsibility within a hierarchy may also be used.
According to an embodiment of the invention, within such an organized hierarchy, default rules may be established for transferring files. A network may contain various groups or communities which share files. By way of example, a corporation may have a network, where various departments within the corporation are separate groups. Members of each department may share files among members of that department, as well as among different departments within the corporation. According to an embodiment of the invention, each department may have a control server administrator to administer control server functions for file transfers among members of that particular department. Further, the network may have default settings that instruct control server functions within the entire network of the corporation and/or for various departments. By way of example, default settings for a network may indicate that the preferred method of file transfer is regular peer to peer, while the next preferred method is virtual peer to peer. The control server may determine the transfer capabilities of the originator module and based on the transfer capabilities, indicate how a file is transferred. If the originator module is able to directly transfer the file to the receiver module, the control server may instruct that the file be transferred directly
from the originator module to the receiver module. If the originator module is unable to directly transfer the file to the receiver module, the control server may instruct that the file be transferred through the control server to the receiver module, using a virtual peer to peer file transfer method. Other default settings may also be used. Default settings may be similar to control server administrator instructions in that default settings may instruct that one or more functions be performed on a file during transfer, such as by the control server. Default settings may be indicated when the system of the present invention is first installed. Alternatively, the network administrator may designate the default settings. According to an embodiment of the invention, control server administrators may be permitted to override the default instructions. Thus, by way of the example of a corporation, a network administrator may indicate the default settings for the network (e.g., all internal file transfers are scanned for virus infections), but allow each department's control server administrator to override the default settings. The sales department may decide not to set new default settings (e.g., continue to scan all internal file transfers for virus infections), while the engineering department may decide to change the default settings (e.g., scan only external file transfers for virus infections). Other manners of using default settings may also be used. Various plug-in function modules will now be described in greater detail below. Control server 20 may be used to create an abstraction layer, tuning a "direct" file transfer into a "virtual" P2P file transfer. File transfer system 2 may be a modular system that supports various other functions, such as through plug-in function modules. Plug-in function modules may include a storage/caching module 26, a virus check module 28, a digital rights management ("DRM") module 30, a firewall module 32, a bandwidth management module 34, a streaming media module 36, a statistic module 38, file version control module 40, archive module 42, compression module 44, metadata identification module 46, search module 48, content module 50 or other modules. Manager module 22 may enable heavy file transfer loads to be shifted to control server 20 portion of the network such as where the manager module 22 resides. This portion of network 10 may be designed to handle a heavy load, so such a heavy load may be desirable as a sign that the service is popular. And as the usage grows,
manager module 22 and/or control server 20, as well as any other plug-in function module(s), may be replicated to handle the load.
Storage/caching module 26 may allow manager module 22 to store or cache files based on the distribution rules. According to an embodiment of the invention, storage/caching module 26 may temporarily store one or more files received from an originating end user 30a. Based on distribution rules, appropriate files may be transferred to a receiving end user 30b. Storage/cache module 26 may help reduce bandwidth use, especially at originator module 30a and by permitting one file transfer to storage/cache module 26 to provide multiple file transfers to receiver modules 30b. Virus check module 28 may allow manager module 22 to perform a virus check for potentially dangerous viruses located on or within transferred files. When handling all file transfers, control server 20 may use virus check module 28 to scan some or all files, thereby reducing the chance of an end user being infected by a computer virus. Control server administrator module 60 may designate that only certain files should be checked, such as files transferred outside a particular group. Virus checks may be made based on a set of business rules.
Digital rights management (DRM) module 30 may allow for authorization of a file transfer based on digital rights. According to an embodiment of the invention, DRM module 30 may be used to regulate copying and transferring of files protected by copyright. By way of example, one musician may permit the free transfer of a music file embodying that musician's work. Under such conditions, DRM module 30 would let any receiver module 30b receive the file. By way of another example, another musician may permit only authorized end users to download a music file embodying that musician's work. Under such conditions, DRM module 30 would let .only authorized receiver modules 30b receive the file. DRM module 30 may review all files transferred through to file transfer system 2 to ensure that only the appropriate or authorized end users are receiving the file. According to an embodiment of the invention, DRM module 30 may work with a digital signature. In this embodiment, a content owner may first encode the file with the usage rules, such as price. The encoded file may then be distributed anywhere, because only authorized applications would be permitted to use it. A clearing house may also be used to ensure that the rules are followed.
Firewall module 32 may enable control server module 20 to transfer a file when end users are behind firewalls. By way of example, control server 20, through firewall module 32, may establish a relationship with an end user, thus allowing a file transfer through a firewall. Bandwidth management module 34 may allow control server 20 to monitor bandwidth usage, and shift portions of the bandwidth load from the end users' portion of the network into control server 20's portion of the network, or other portions of the network as appropriate, which may be designed to handle the load.
Streaming media module 36 may permit control server 20 to host streaming media tools for automatic translation of media files and down sampling. According to an embodiment of the invention, streaming media module 36 may permit the use of other modules (e.g., DRM module 30, virus check module 32, etc.) with streaming media content.
Statistics tracking module 38 may enable control server 20 to provide the statistics regarding files that are transferred. Statistics may include what files are transferred, where files are transferred to, how many users visit a directory module 24, or other tabulations. Statistics may be used for various entities, such as network provides, content owners, end-users, and various value-added service providers.
File version control module 40 may enable control server 20 to control what version of a file, such as a document, is sent to receiver module 30b. By way of example, control server administrator 60 may instruct file version control module 40 that the most recent version of a file is the default for file transfer. In this example, if originator module 30a does not designate the version of a file to be posted, control server 20, through file version control module 40, will post the most up-to-date version of the file. Other manners for controlling file versions may also be used.
Archive module 42 may provide backup for all files transferred by control server 20. By providing a backup, archive module 42 may ensure that each file is successfully transferred to the proper receiver module 30b. If a file transfer is
incomplete, interrupted or does not occur properly, control server 20 may access archive module 42 to retrieve the file and properly transfer it to receiver module 30b.
Compression module 44 may enable control server 20 to compress a file for transfer to receiver module 30b. Compression of a file may further reduce bandwidth transmission issues and the time necessary for a file to be received. Compression of a file may also reduce storage needs. Compression module 44 may use various type of compression of a file, including a zip process, as well as batch processing, queuing a file for transfer, and scheduling transfers of multiple files, thereby optimizing file transfer over a network. Metadata identification module 46, as described above, may provide for automatic identification of metadata associated with a particular file. Metadata may include the name of the file, the type of file, the content of a file, the author of a file, the author of the content of a file, and other metadata information. According to an embodiment of the invention, metadata identification module 46 may review a file received from originator module 30a and provide the metadata information for that file.
Search module 48, as described above, may be used for searching for a particular file for a receiver module 30b. Further, search module 48 may enable control server 20 to access search mechanisms apart from control server 20, such as search engines located on other servers. Generally, using search module 48, receiver module 30b may search for files which may have been posted by originator modules 30a. Control server 20, through search module 48, may present receiver module 30b with one or more files which correspond to search criteria received from receiver module 30b.
Content module 50 may ensure the accuracy and content of a file received from originator module 30a. According to an embodiment of the invention, control server 20 through content module 50 may examine the content of a file received from receiver module 30a. Content module 50 may ensure that the content has been accurately described by originator module 30a and that this content is consistent with the type of content requested by receiver module 30b. As described above, file transfer system 2 may include one or more of the above-described modules or none of the modules. Further, control server administrator module 60 may activate or deactivate any number of these plug in function modules for
functioning with control server 20. Plug-in function modules as described above, may enable control server administrator module 60 to add or delete functions a particular file transfer system, thereby customizing the functions for a file transfer system 2. A plug-in aspect of the plug in function modules may enable control server administrator module 60 to easily add or delete plug-in function modules to and from file transfer system 2 without affecting other plug-in function modules or control server 20. This plug-in aspect may enable easier use of a file transfer system, as well as other advantages with other plug-in function modules which may also be apparent. Function modules may also be added in a non-plug-in format. As described above, a system according to an embodiment of the present invention may include a control server having a plurality of function modules for performing functions on one or more files that are transferred. According to an embodiment of the invention, the function modules may operate independently of one another to perform synchronous oc asynchronous functions on a file. According to another embodiment of the invention, the function modules may operate dependently with each other to perform a function(s) on a file and/or the data in the file. Other embodiments may also be used.
For purposes of illustrating the present invention, an example of an embodiment using photo files will now be described in relation to Fig. 9. Photo sharing functionality may allow originator end user, through originator module 30a, to share photographs through control server 20 with one or more receiver end users, through receiver modules 30b. Fig. 9 is an example of a graphic user interface 200 for receiver module 30b to receive a file according to an embodiment of the invention. Graphic user interface 200 may comprise a tool bar 202, with standard toolbar functions, such as print, copy, cut, paste, stop, home, back, and other functions typically associated with standard browser software applications. The toolbar functions described herein and illustrated in Fig. 9 are merely illustrative and are not in any manner limiting.
Graphic user interface 200 may comprise a display window 204 for display results of various functions. Thus, according to an embodiment of the invention, originator module 30a posts a file to control server 20 for other users to receive, and receiver module 30b generates a search request for control server 20 to search for one or more files. Searching for one or more files may include viewing metadata, such as
the thumbnail images, for each file, such as viewing a list of files. Alternatively, if receiver module 30b does not know which photos it wishes to retrieve, or does not have access to browse through thumbnail images, receiver module 30b may perform a search inquiry with directory module 24 to find a photo file. Control server 20 uses window display 204 of graphic user interface 200 to display to receiver module 30b the results of the search request. By way of an example, a search request may include a request for photographs with "Greg" as the creator. As illustrated in this example, three files 206 are displayed in window display 204, as shown in Fig. 9.
Graphic user interface 200 further displays metadata 208 associated with each file. As described above, metadata 208 may be a variety of information associated with the file. As illustrated in graphic user interface 200 of Fig. 9, metadata includes a thumbnail picture representation of the photograph file, the title of the file, the date the file was created, the name of the creator, the size of the file, and other metadata. By way of example for one type of metadata, to provide for easy display of one or more photos, either originator or receiver module 30a or 30b or metadata identification module 46 may contain one or more functions that may convert a photograph file, such as a full BMP, JPEG and PNG files, or other photograph file format, into a smaller, thumbnail images. These images may be displayed to receiver module 30b, as illustrated in graphic user interface 200, or may be added to an image list made available on control server 20, such as through directory module 24, for search by receiver module 30b.
Once receiver module 30b has determined which photo(s) it wishes to retrieve, receiver module 30b may select a file. According to an embodiment of the invention, and as illustrated in graphic user interface 200, receiver module 30b may select a file and display a menu 210. By way of one example, menu 210 may be displayed by using the right button on a mouse. Other manners for displaying menu 210 may also be used.
Menu 210 may enable a user to determine how files are presented (e.g., viewing icons, thumbnails, details, lists, etc.), find files (e.g., search for files), refresh the view, or other functions. Using menu 210, receiver module 30b may transfer the file, such as by activating the save as function. Receiver module 30b may receive the file using a transfer method designated by control server 20. As described above, the transfer method (e.g., peer to peer, virtual peer to peer, file upload and download, etc.) method
may be determined based on instructions from a control server administrator (or originator module 30a or receiver module 30b). Receiving a file may include first determining if the file is available for traditional download on control server 20. If so, receiver module 30b may receive the photo file and launch it to an appropriate viewer. If the photo file is not on control server 20, receiver module may be told the photo file may be accessed by a virtual peer-to-peer connection to originator module 30a (such as through control server 20), a direct peer-to-peer transfer from originator module 30a, or download from a web server at a specified URL address. Other manners of transferring photographic files may also be used. Figure 10 illustrates a System 100 according to an embodiment of the present invention. Various personnel involved in identifying and prioritizing strategic initiatives may use System 100 to interact, such as by gathering information, creating schedules, enabling tools to be accessed by other personnel, and other portions of the process. System 100 comprises multiple requester devices 105 (or "computers") used by requesters to connect to Network 102 through multiple Connector Providers (CPs) 110. Network 102 may be any network that permits multiple requesters or computers to connect and interact. According to an embodiment of the invention, Network 102 may be comprised of a dedicated line to connect requester, such as the Internet, an intranet, a local area network (LAN), a wide area network (EVAN), a wireless network, or other type of network. CP 110 may be a provider that connects the requesters to the network 302. For example, CP 110 may be an internet service provider (ISP), a dial-up access means, such as a modem, or other manner of connecting to network 102. In actual practice, there may be significantly more users connected to System 100 than shown in Fig. 3. This would mean that there would be additional requesters which are connected through the same CPs shown or through other CPs. Nevertheless, for purposes of illustration, the discussion will presume four requester devices 105 are connected to Network 102 through two CPs 110.
According to an embodiment of the invention, requester devices 105a - 105d may each make use of any device (e.g., computer, wireless telephone, personal digital assistant, etc.) capable of accessing Network 102 through CP 110. Alternatively, some or all of requester devices 105a - 105d may access Network 102 through a direct connection, such as a TI line, or similar connection. Fig. 3 shows four requester
devices 105a - 105d, each having a connection to Network 102 through a CP 110a and 110b. Requester devices 105a-105d may each make use of a personal computer such as a computer located in the requester's home, or may use other devices which allow the requester to access and interact with others on Network 102. Central controller module 112 may also have a connection to Network 102 as described above. Central controller module 112 may communicate with one or more data storage modules 114, the latter being discussed in more detail below.
Each computer 105a-105d used by requesters may contain a processor module 104, a display module 108, and a user interface module 106. Each computer 105a-105d may have at least one user interface module 106 for interacting and controlling the computer. The user interface module 106 may be comprised of one or more of a keyboard, joystick, touchpad, mouse, scanner or any similar device or combination of devices. Each of the computers 105a-105d used by requesters may also include a display module 108, such as a CRT display or other device. System 100 further includes a central controller module 112. Central controller module 112 may maintain a connection to Network 102 such as through transmitter module 118 and receiver module 120. Transmitter module 118 and receiver module 120 may be comprised of conventional devices which enable central controller module 112 to interact with Network 102. According to an embodiment of the invention, transmitter module 118 and receiver module 120 may be integral with central controller module 112. The connection to Network 102 by central controller module 112 and computers 105 may be a high speed, large bandwidth connection, such as a though Tl or T3 line, a cable connection, a telephone line connection, DSL connection, or other type connection. Central controller module 112 functions to permit requester's devices 105a-105d to interact with each other in connection with various applications, messaging services and other services which may be provided through System 100. Central controller module 112 may perform various calculations, such as calculating a strength model, or determining a rating for a strategic initiative.
Central controller module 112 preferably comprises either a single server computer or a plurality of multiple server computers configured to appear to clients 105 as a single resource. Central controller module 112 communicates with a number of data storage modules 114. Each data storage module 114 stores various information
associated with a control server administrator, a receiver module, an originator module, received instructions, files or other information. According to an embodiment of the invention, any data storage module 114 may be located on one or more data storage devices, where the data storage devices are combined or separate from central controller module 112.
Processor module 116 performs the various processing functions required in the practice of the process taught by the present invention, such as performing the search of a directory, generating the search results, generating a message to be sent and displayed for the requester, and other similar processing functions. Processor module 116 may be comprised of a standard processor, such as a central processing unit (CPU), which is capable of processing the information in the necessary manner.
While system 100 of Fig. 3 discloses a computer 105 connected to Network 102, it is understood that a personal digital assistant ("PDA"), a mobile telephone, a television, or other device that permits access to Network 102 may be used to arrive at the system of the present invention.
According to another embodiment of the invention, a computer-usable and writeable medium having a plurality of computer readable program code stored therein may be provided for practicing the method of the present invention. For example, the computer-usable medium may comprise a CD ROM, a floppy disk, a hard disk, or any other computer-usable medium. One or more of the components of the system may comprise computer readable program code in the form of functional instructions stored in the computer-usable medium, such that when the computer-usable medium is installed on a computer system, those components cause the computer system to perform the functions described. According to one embodiment, central controller module 112, data storage 114, processor module, 116, receiver module 118, transmitter module 120, control server 20, manager module 22, directory module 24, storage/caching module 35, virus check module 40, DRM module 45, firewall module 50, bandwidth management module 55, streaming media module 60, and statistic tracking module 65 may comprise computer- readable code that, when installed on a computer, perform the functions described above. Also, only some of the components may be provided in computer-readable code.
According to one specific embodiment of the present invention, the system may operate on a network and may be connected to other systems sharing a common database. Other hardware arrangements may also be used.
Other embodiments, uses and advantages of the present invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. The specification and examples should be considered exemplary only. The intended scope of the invention is only limited by the claims appended hereto.