Daemon processes are applications that run in the background of a computer operating system and are usually spawned by the operating system during initialization. A daemon process may run inside a sandbox, i.e., a processing environment limiting the functionality of the daemon process.
Embodiments include methods, systems, and devices where, for example a method embodiment may include the steps of: (a) initiating, by a client, a set of one or more applications, wherein each initiated application may be associated with an Uniform Resource Locator (URL), and wherein the initiating may be based on a Hypertext Transfer Protocol (HTTP) request to a computer host having a server, and (b) executing an application from the set of one or more applications, based on a rule set, in a processing environment limiting the functionality of the initiated application, and where the application may be executed in the background of an operating system of the server based on the rule set. Optionally the client may be external to the server. The server may also be disposed outside a network firewall.
In some embodiments the server may be a multifunction peripheral (MFP) device. Optionally the client may also be a multifunction peripheral (MFP) device. The MFP device may comprise a web application hosting platform.
Other embodiments include methods, systems, and devices where, for example a method embodiment may include the steps of: (a) invoking, by a server of a computer host, via a Hypertext Transfer Protocol (HTTP) request from a client, a set of one or more applications, where each invoked application may be associated with an Uniform Resource Locator (URL), and (b) executing, by the server, an application from the set of one or more applications, based on a rule set, in an environment limiting the functionality of the executed application; and where the application may be executed in the background of an operating system of the server based on the rule set.
Other embodiments include methods, systems, and devices where, for example a device embodiment may include (a) a processor and (b) addressable memory—where the addressable memory may for example be: flash memory, eprom, and/or a disk drive or other hard drive—comprising a set of one or more applications, wherein the processor may be configured to: (a) initiate a selected one or more applications of the set of one or more applications, wherein each initiated application may be associated with an Uniform Resource Locator (URL), and wherein the selection of the one or more applications may be based on a Hypertext Transfer Protocol (HTTP) request from a client; and (b) execute an application from the set of one or more applications, based on a rule set, in a processing environment limiting the functionality of the initiated application; and wherein the application may be executable in the background of an operating system of the device based on the rule set.
In some embodiments, the client may be external to the device. Optionally, the server may be disposed outside a network firewall. Optionally, the device may be a multifunction peripheral (MFP) device, and where the processor may host the client. The MFP device may also comprise a web application hosting platform.
Other embodiments include methods, systems, and devices where, for example a system embodiment may include: a server device, operably coupled to a client device via a communication medium, where the server device may be configured to execute a set of one or more applications, the device may comprise: (a) a memory that may be configured to store the set of one or more applications; (b) a processor that may be adapted to: (i) initiate a selected one or more applications of the set of one or more applications, wherein each initiated application may be associated with an Uniform Resource Locator (URL), and wherein the selection of the one or more applications may be based on a Hypertext Transfer Protocol (HTTP) request from a client; and (ii) execute an application from the set of one or more applications, based on a rule set, in an environment limiting the functionality of the initiated application; and wherein the application may be executable in the background of an operating system of the server based on the rule set.
Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, and in which:
In a computer networked environment, a first computing device may host a virtual network computing server and a second computing device may host a virtual network computing client where the client may access and send commands to the server. A multifunction peripheral (MFP) device may be used to print and fax information from a computing device in communication, e.g., networked, with the MFP device. An MFP device may additionally be configured to scan sheets of documents and transmit the scanned sheets, in electronic form, to computing devices. In computing networks, the MFP device may be configured as a peripheral equipment having capabilities generally akin to a computing device with a processor and memory. In addition, the MFP device may execute one or more scripts at the MFP device. In some embodiments, an MFP device may act as the server and the client may be implemented as part of the MFP device.
In some embodiments, the MFP devices may comprise of a web application hosting/execution environment and a web browser client. The web browser client may serve as the user interface (UI) for embedded applications. The web application hosting environment may serve as the platform on which embedded applications execute. Applications may be invoked by the web browser via making HTTP requests to specific URLs. Each URL may correspond to a specific web application that is deployed on the MFP. The embedded applications may, for example, be developed using a server-side scripting language. The server-side scripts may be executed on the web application hosting platform in an environment limiting the functionality of the application, e.g., sandboxed environment.
Each MFP device may comprise an embedded web application server that may allow executable applications or scripts, e.g., Embedded Java Script (EJS), to be executed on the MFP device. Applications may be developed using EJS and may be installed and executed directly, on the MFP devices 420, 430.
In some embodiments, background processes, e.g., a daemon process, may be used in a number of operating systems, for example, the UNIX operating system makes extensive use of daemon processes. The Windows operating system also makes use of background processes, e.g., system services. Daemon processes may run in the background and process incoming print requests, for example, in Linux operating systems the line printing daemon may operate through the lpr protocol. Some examples of tasks that may be performed by a daemon process are: parsing and processing of lpr commands, queuing of print data, and dispatching print data to the correct printers. In some embodiments, the daemon may run perpetually in the background until either the system shuts down or the daemon is explicitly terminated. Daemon processes may not interact with the user directly and hence, may have no user interface elements.
In some embodiments, a sandboxed daemon process hosted on a web application platform may be implemented in an embedded system and additionally, may be invoked through standard HTTP requests. On a web-based application platform, a sandboxed daemon process may be used to provide, for example, monitoring services. The daemon processes may be implemented in server-side scripts which may be executed via a scripting engine in the embedded system. In some embodiments daemon processes may be developed and deployed on-demand without having to update the device firmware. Newly-developed daemon processes may be deployed without linking precompiled binaries into the target image and reprogramming the device firmware. On an operating system with a flat memory model, daemon processes may call system APIs or write to critical memory regions and crash the system. With a web-based application hosting environment, daemon processes may run inside a sandbox, where they may only access methods that are explicitly exposed to them. The sandbox environment may make the target embedded system much more secure and robust. The sandbox environment provided by the web application hosting platform may protect the target system from being compromised by rogue or misbehaved daemons.
In some embodiments, the applications may interact with the user through standard input controls on web pages, e.g., standard web applications, and may perform specific functions and return results through standard web pages. In other embodiments, the applications, e.g., UNIX daemons, may execute in the background and not necessarily return results immediately or at all.
The applications that execute in the background may execute asynchronously, and may perform one or more functions that require long durations, and may terminate when all the tasks have been completed. As an example, a daemon application may be developed to allow the MFP devices, which may reside within a networked environment, to be monitored and managed from outside of a firewall. In this example, the application may run in the background and periodically communicate with a designated external computing device.
In an embodiment where an HTTP request may invoke a background process, a remote cloud application may start a daemon process, e.g., to monitor a print or scan operation. The daemon process may have to live for a period sufficient to monitor the job to either successful completion or terminal failure. In another example, a cloud application may start a daemon process to monitor application installations. The daemon process may have to live until the application is either successfully installed or the installation is aborted due to an irrecoverable error. In another example, a click-count-collecting embedded application may start a daemon process. After the application is installed, the application may need to be triggered to start running in the background. This may be done by sending an HTTP request message to the URL corresponding to the particular application. The click-count-collecting daemon may then run until the MFP is powered down, or until the application is explicitly uninstalled or terminated.
In some embodiments, a web application hosting environment may require explicit HTTP requests to the server to initiate execution of server-side scripts within the sandboxed environment. A server-side script may take input parameters through HTTP query strings or from POST parameters. For long-lived daemon processes that may need to be started on system power-up, a generic TCP client may be used to initiate the process. For ephemeral daemon processes, the application may be started on-demand by making HTTP requests to the associated URLs when needed. For a web-based application platform, the executable components may be initiated by making an HTTP request to an associated URL. This HTTP invocation may be analogous to a shell command processor, where applications are invoked through command lines. Application arguments may be passed in through query strings or POST elements, similar to command line arguments.
The application may be continuously running in the background in order for the commands to be received and processed. In another example, the application may perform device discovery where a starting IP address and an ending IP address may be provided by a client. The application may then scan through the range of specified IP addresses to search for the presence of MFP devices in the network. The discovery application may run in the background until the entire range of IP addresses has been exhausted, or optionally, until the search is explicitly canceled.
It is contemplated that various combinations and/or sub-combinations of the specific features and aspects of the above embodiments may be made and still fall within the scope of the invention. Accordingly, it should be understood that various features and aspects of the disclosed embodiments may be combined with or substituted for one another in order to form varying modes of the disclosed invention. Further it is intended that the scope of the present invention is herein disclosed by way of examples and should not be limited by the particular disclosed embodiments described above.
Number | Name | Date | Kind |
---|---|---|---|
6038296 | Brunson et al. | Mar 2000 | A |
6298445 | Shostack et al. | Oct 2001 | B1 |
6457063 | Chintalapati et al. | Sep 2002 | B1 |
6651108 | Popp et al. | Nov 2003 | B2 |
6654785 | Craig | Nov 2003 | B1 |
6711618 | Danner et al. | Mar 2004 | B1 |
6766351 | Datla | Jul 2004 | B1 |
6948183 | Peterka | Sep 2005 | B1 |
7685638 | Buches | Mar 2010 | B1 |
7761863 | Illowsky et al. | Jul 2010 | B2 |
20030014521 | Elson et al. | Jan 2003 | A1 |
20030144894 | Robertson et al. | Jul 2003 | A1 |
20040031052 | Wannamaker et al. | Feb 2004 | A1 |
20040153493 | Slavin et al. | Aug 2004 | A1 |
20050021953 | Trommler | Jan 2005 | A1 |
20060213975 | Krishnan et al. | Sep 2006 | A1 |
20060253785 | Dowling | Nov 2006 | A1 |
20060277307 | Bernardin et al. | Dec 2006 | A1 |
20070282951 | Selimis et al. | Dec 2007 | A1 |
20080127292 | Cooper et al. | May 2008 | A1 |
20080167732 | Slavin et al. | Jul 2008 | A1 |
20080189423 | Takahashi et al. | Aug 2008 | A1 |
20080215677 | Osias | Sep 2008 | A1 |
20090234913 | Lee | Sep 2009 | A1 |
20100064299 | Kacin et al. | Mar 2010 | A1 |
20110145926 | Dalcher et al. | Jun 2011 | A1 |
20110167493 | Song et al. | Jul 2011 | A1 |
20110179483 | Paterson et al. | Jul 2011 | A1 |
20110185433 | Amarasinghe et al. | Jul 2011 | A1 |
20110246618 | Howard et al. | Oct 2011 | A1 |
20110289556 | Pieczul et al. | Nov 2011 | A1 |
20110296515 | Krstic et al. | Dec 2011 | A1 |
20120022943 | Howard et al. | Jan 2012 | A1 |
20120041752 | Wang et al. | Feb 2012 | A1 |
20120185863 | Krstic et al. | Jul 2012 | A1 |
20120207290 | Moyers et al. | Aug 2012 | A1 |
20120221955 | Raleigh et al. | Aug 2012 | A1 |
20120284715 | Fitzgerald et al. | Nov 2012 | A1 |
20130036448 | Aciicmez et al. | Feb 2013 | A1 |
20130055341 | Cooper et al. | Feb 2013 | A1 |
Number | Date | Country |
---|---|---|
1130510 | Sep 2001 | EP |
2008-211747 | Sep 2008 | JP |
2009-253853 | Oct 2009 | JP |
2010-247520 | Nov 2010 | JP |
Number | Date | Country | |
---|---|---|---|
20130013665 A1 | Jan 2013 | US |