Poser Remote Proceedure Call (PRPC) Project

Downloads Note: This project will only work with Windows versions of Poser that have Python support (ProPack, Poser5 and Poser6) Security
Note


Introduction

The basic results of this project allow you to load or save Poser library content to or from an active Poser session using other Windows applications like Windows Explorer, SenoSoft's P3dO Explorer and Dizzi's Advanced Library.

Shown here is a screenshot where I am about to load a pose file into Poser using Windows Explorer.

This project started with my frustration with Poser's library interface. I have many directories that contain large numbers of poser files and using Poser's library interface was very slow and cumbersome. I began to use SenoSoft's P3dO Explorer to browse my Poser libraries so I could quickly find the directories where a specific file was located, then I would go to that directory using the Poser library interface and load it. This was not a perfect solution, but it did speed up finding files.

I kept thinking how nice it would be to bypass Poser's library interface altogether. Then it dawned on me that I could use the networking features of Python (the programming language in Poser ProPack, Poser5 and Poser6) to load files directly from P3dO Explorer.




Poser Remote Proceedure Call Server Daemon (PRPCd)

I figured out a way to do this by writing a 'server daemon' in Python that runs in Poser. Now I hardly ever use Poser's library interface for loading content. The method developed should work with any external Windows program that supports the right-click 'Send To' context menu.

You can load content from any folder/directory, even outside of Poser's runtime folder. You can also create Window's "shortcuts" (.lnk files) that point to Poser content and the content can be loaded into Poser. You can select multiple files and have them all loaded into Poser at the same time and while they're loading in Poser you can keep browsing for more files.

After the initial release of this project, I began to get frustrated when I wanted to 'Save' Poser content because I still had to use the Poser library interface for saving. So, I extended the server daemon to allow saving of Poser content (although with quite a few limitations).

Client Modules

An added bonus that comes from this method of loading Poser content is that a file can be pre-processed before loading. The server daemon supports 'client modules' that can register for filenames based on their type (pose, character, lights, ...). When the server daemon gets a filename of a registered type, it will pass it to the client module. The client module can then do anything it wants with it.

How it works

There are two main components of this method.

Installation, Usage and Options

Installation

Following are instructions for an installation of the basic right-click 'Send To' method.

Usage

Following are brief basic usage instructions for using the Windows Explorer 'Send To' method.

Options

Following is a basic explanation of the options visible on the server daemon interface.

Downloads

The most of this work is released under the GNU General Public License
Some supporting python classes are released under the GNU Lessor Public License

The following links will take you to SourceForge.net, where all files for this project are located.

Download the most recent general public version of the project, version 1.34.33
additional Client Modules released for the general public

Here are all files released for this project, including test and beta versions.

Applications that use or support PRPC

Well, the Windows Explorer method is not really that friendly. You have to visually find the filename that corresponds to the image file (.png) that you see. You have to avoid any .rsr files and it can be frustrating to have to pay attention to all this when all you really want to do is load content into Poser.

I know of two windows applications that make specific use of this project's results. They are a much better alternative to using Windows Explorer. Both of these applications are able to display only the image (.png or .rsr) and send the real content filename to the server daemon. They both have other great features and I highly recommend you use one or both of them.

Limitations, Bugs and other Issues

Some of these are Poser version specific issues, others are issues with all versions. Others are issues that I might be able to fix or work around, but have not been able to as yet.

NOTE: This section is currently incomplete. I'll try and have it finished soon.

Questions and Answers

I might have answered some in the following forum threads.
Renerosity Poser Forum public release announcement for this project.

Security Note

The server daemon can (optionally) accept python script filenames and execute them. Python script execution can have inherent security risks.

Users wishing to allow the server daemon to execute python scripts will need to enable it using the checkbox provided. There is an addtional checkbox that will enable a popup dialog asking for confirmation anytime the server daemon receives a python script filename.
These options have no effect on the normal running of python scripts thru Poser's menus.

(a little more explanation)
The server daemon opens a tcp/ip socket on the loopback (lo) network interface. Then it listens for a connection that will deliver a filename to be loaded. It will only accept a connection from the loopback interface so it is pretty safe from attacks that may come from the internet or your local network. However, if a virus or trojan infects your computer, it could send data over your local loopback interface to the server daemon.

Since this script supports the execution of other python scripts, a virus or trojan that targets this feature (however unlikely) can present a security risk.

Having given the above warning let me say that I feel that the security risks are very low (and I'm very conservative). Particularly if you have the 'with confirmation' check box enabled (that's what I do). Then if the confirmation dialog pops up when you know didn't try to remotely load a python script, you can click 'No' and try to run down a possible virus attack. If you are really worried about all this then just don't check the 'Enable remote python script execution' checkbox.

The truth is that a worm or virus needs to install itself on your computer, install a malicious python script, wait for you to run Poser and PRPCd.py, then attack. If it could do all that prepatory work, then it didn't really need PRPCd.py and the limited python implementation in Poser for anything. It has much more freedom and power running natively in Windows than in the Poser's python environment.

Like I said, I think the risks are very low, however, these days it's a good idea to understand what is going on with your computer setup that could have security implications. I just feel that it is important for me to point out this possibility. The truth is that you already probably have a huge number of security holes in you system that you don't even know about.

Future Developement

Below are some things I hope to get around to someday Developers and users can contact me (tromnek) thru the Rendersosity web site.
Python developers might want to post a message to the Renersosity Python Forum.

Acknowledgements

  • All the persons on the Renderosity Poser-Python Forum for their comments, suggestions and assistance.
  • Ockham, who's code and assistance has helped many of us learn Python and the Poser Python interface.
  • Yarp, from SenoSoft for his P3dO Explorer program and generous assistance with this project.
  • Schlabber, for the huge number of free and affordable high quality poses he created (this is what really started this project).
  • My son Matthew, for reminding me that I should spend more time playing with Poser than coding in Python.

    Finally

    That's it for now. I'll put up more information on this project as I get time.
    Have fun and enjoy,
    tromnek

    SourceForge.net Logo