Ovine - A Python module for e-mail users of the www.distributed.net client "Bovine"    
         
    What is Ovine?    
   

Ovine is a small Python script for users of the Bovine cryptography client who use e-mail to fetch work. It manages a queue of buff-in files, allowing a user to download several files of work at one time and then leave the work unattended until all of it is done. Ovine 2 can optionally flush and fetch work via e-mail when a file is completed.

   
         
    Who might find Ovine useful?    
   

If a user of the Bovine client cannot be on-line frequently (while you are on holiday, perhaps), or if firewall restrictions prevent the normal fetch and flushing of the buff-in and buff-out files via the Internet, they will have a use for Ovine. More typical users, who can use the net for fetching and connect regularly will probably not need it.

But also:
Ovine is configurable, so anyone who needs a utility to manage simple queues of files where the following conditions apply will have a use for the script:

  1. For each project there is a single buffer file which is gradually emptied down to a fixed "empty" content size, measured by number of bytes in the file (not necessarily zero), and then discarded.
  2. A set of one or more "candidate" files (identified by name) can be placed in the same directory as the active buffer file for promotion to be the new buffer as the work progresses. Promotion is done on an "oldest first" basis.

Ovine 2.0.2 (posted 8 December 2000) is now available. Version history

Ovine1.0.3 is still available for download. It is smaller and the configuration is a bit less complicated, which may suit you just fine if the mail options are of no interest.

Save as "ovine.py" into a suitable folder, ideally your Python/Lib folder, created when you install Python.

Please note that you use Ovine at your own risk. I can't be held responsible for anything, ever. The good news is that you can read the source (Luke), so you can see how it works and what it does.

Mail me if you would like to be notified of any new versions of the script. I won't use your mail address for anything else.

What's new in Ovine2?

Ovine 2.0.2 includes new e-mail functionality:

When work on a buffer is completed it will attempt to send the work up to Distributed.net and fetch a new batch of work to do. If it cannot connect to the mail server it will fail gracefully, leaving your work unaffected.

Flushed work is saved into a folder in your current Distributed project folder, so you can always resend it if you need to (just rename the file back to buff-in.rc5 or whatever). This should seldom be necessary, but occasionally Distributed.net requests that you resend the work later, due to busyness.

In future versions of Ovine, I hope to add the ability to recognise both acknowledgements of work received and requests to resend, so even this will be handled automatically. Note: until these functions are available, you will still need to save the fetched buff-in file into your Bovine folder, suitably prefixed (see below).

Important
Please do mail me if you try Ovine. It's useful to know that the script is working. If you have any problems, please mail me so I can fix any bugs.

   
         
         
    The Ovine Module    
    The script requires Python to be installed on your computer. I plan to make Ovine into a stand-alone application at some point. Until then, go to www.python.org to download Python.    
         
   

Getting it to work
Ovine can be run from a command line, but really needs to be fired -off at regular intervals (every hour or two will do) by another application to work usefully. I use the Windows Task Scheduler to run it. Mac and Linux (etc.) users will have their own ways to do this.

If you need to know how to use Task Scheduler, consult the Windows Help files, or look at my comments here.

Using Ovine
Ovine can be used as a general queue manager, but if you are running the Bovine client you'll want to read these tips:

  1. You will need to set up the "config" tuple at the top of the module. It should be clear how to do this from looking at the examples in place and the comments in the module.

  2. Ovine is designed to be used with Bovine's Internet fetch and flush turned off.
    (It might run fine (but do nothing) with these functions left on, but I have not tested this.)

  3. Don't download too many files of work.
    Remember that Distributed.net will send any work that has not been processed in 90 days out to another participant.

  4. Rename your "queued" work files by adding a prefix to the file name. Don't break the text which makes up the eventual name of the buffer.
    e.g. 1buff-in.rc5 and 99buff-in.rc5 will both be recognised as queued files, but buff-in1.rc5 and buff99-in.rc5 will not .

  5. It is fine to run more than one project in the same folder, as Ovine uses the whole file name (including the file extension) to identify files. (If you need to, you can run unrelated (non-Bovine) projects in different folders; just specify the folders in the config dictionary at the top of the script.)

  6. Add a new project by putting a comma inside the last bracket, then a space, then copy one of the existing project configurations at this point, including the surrounding brackets. Then edit the settings appropriately. (This is more straightforward than it sounds!) Remove projects by removing their entry in the config tuple, or set the state to 0 (the number zero), which makes Ovine ignore the project.

  7. I find that I get a good sized chunk of work sent to me (about 5 days worth on my PIII 600) if I mail fetch@distributed.net with numblocks=3000 in the body of the mail.

Wish List
Ovine 1.0.3 does not do the following:

  • alert you when your buffer folder is empty
  • mail Distributed.net to request more work
  • nor does it save the incoming work file into your designated folder
  • nor does it flush your buff-out file up to Distributed.

Ovine 2.0.2 includes e-mail functionality which can do the second and fourth items on the list. So, it still can not:

  • alert you when your buffer folder is empty
  • nor does it save the incoming work file into your designated folder

I plan to add POP support soon, so Ovine will be able to automatically accept incoming work fetched from Dnet, and more options for reporting on work in progress by the Bovine client.

I'm also looking at adding a simple GUI to make setting the configuration more friendly. I'll get there eventually.

I hope people find this useful. Please do let me know if you use it and if you have any comments or suggestions.

   
         
    <BACK TO PYTHON PAGE>      <SQUIDGE>       <HOME>