powered by..

corz distro machine
install..

 

stand-alone mode..

corz distro machine was primarily designed to be self-contained automatic distribution system. Drop any files you wish to distribute into the "download" folder, simple. If you have any source files or scripts you wish to allow users to view, pop those into the "source" folder the same way.

If you don't need the source facility, simply disable it..

$machine['show_source_menu'] = false;

Drop the whole "machine" folder into your website and rename to whatever you like. let's say you called it "goodies", and dropped it in the root of your site, navigating to..

http://mysite.com/goodies/

..will bring up either the default download menu, or the source viewing menu, depending on how you set your preferences.

Users can easily switch between the "download" and "source" menus and download zips of source files from the source viewer page. All downloads are counted and totals stored in a simple flat-file database. This database is very secure.

There is also a hidden ".htaccess" file inside the "download" folder, preventing direct access to its contents, and not in the ordinary 403 DENIED way; instead when a user attempts to load that directory, or any file inside it, they will be redirected back to the main menu page. neat, check it out. YOu can set this up however you like.

* there is also a "docs" folder with readme's, extra css, special offers and stuff, but you don't need this to run the machine. the distribution also contains sample php source and zip files. Have fun!
 

as a backend download engine..

corz distro machine can provide backend download and counter services for your web site.. Instead of providing direct links to the files, you send them to the distro machine! Like this..

<a href="/goodies/index.php?download=some_file.zip">some file</a>

Drop some_file.zip into your "download" folder and it's ready to go! the distro machine will handle the download and count it for you transparently.

You could easily move the machine into your root, and perhaps rename index.php to "download.php" or something like that. don't forget the invisible .ht files!

In that case, the links would then be..

<a href="/download.php?download=some_file.zip">some file</a>

Bright sparks will have figured out that this also allows you to have your downloads embedded in other website's pages, providing a means to easily syndicate your content. All they need to do is add one valid URL..

<a href="http://mysite/download.php?download=some_file.zip">some file</a>

Of course, this may be something you want to prevent, and there are numerous ways to do this, including strict hot-linking preferences. Do read through the preferences.
 

embedded menus on-the-fly..

corz distro machine can create embedded download menus for your pages, too. simply pass "&clean=true" in your url, and the distro machine will return the menu of your choice, stripped of all headers, footers and jump links, like this..

<?php readfile('http://'. $_SERVER['HTTP_HOST'] .'/engine?download=menu&section=php/newsfeed%20scripts&clean=true'); ?>

Or even (*eew*) like this..

<iframe width=400 height=160 src="/beta?download=menu&clean=true"></iframe>

Here's first example from above..

powered by corz distro machine v0.9.23b
 
You can slam these anywhere you like, and along with its other roles, the distro machine will happily provide backend menu services for your site. Check out the download page for an extreme example. you can embed source menus this way, too.

special features..

You can specify certain parameters in the embedding URL, adding special features..

&titles=true    enable section and sub-section titles
&text=true    show custom text (from a file)
&sections=true    sub-section menus

Here's one with everything  switched on..

 

the source viewer..

corz distro machine comes with a built-in source viewer..

Many web servers don't support php source highlighting, and on those that do (you can add support in .htaccess files), you will often find the output truncated, which is frustrating.

Here is a solution which works under all conditions (php4+) and add to it by supporting a wide variety of other script formats; currently php ('.php', '.inc', 'phps'), text (.txt), shell and perl scripts (.sh, .pl), batch (.bat) files, as well as AutoIt, and more. The text highlighting code is ripped from my own textviewer script and can handle most things, though is fairly rudimentary compared to the php highlighting. Nice, though.

Simply drop any scripts you would like to have available for viewing directly into the "source" folder, and they will automagically be available from the source menu. YOu can enable/disable extensions in the prefs
 

the pretty coloured source page..

Presenting your source like this is very neat.

Remember, in order for the "download" link at the bottom to work, you will need to have a zip archive in the specified download folder, called "script-filename.zip"

For instance, to allow users to download "rss.php", you would create a zip called "rss.php.zip" and drop it in the "download" folder.

Clearly, there's no way to count folks copying-and-pasting source from the source view pages, but if your download links work, they *will* use them!

The source viewing facility is disabled by default; if you want to use it; check the prefs.
 

back-end source highlighting service

The distro machine can provide back-end source highlighting services for your website, too. So you can have cool highlighted source code embedded within your pages, like this..

<?php

/* some sample source code from the source folder
*/
echo 'I am only a poor sample';
debug('a poor sample');
/*
function:debug()
*/
function debug($data) {
global 
$debug_string;

    if (
$data == 'out') {
        
$debug_string .= "\n\n";
        
        if (
is_writable('debug.out')) {
            
$debug_file fopen('debug.out''w');
            
fputs($debug_file$debug_string);
            
fclose($debug_file);
        }
    } else { 
$debug_string .= $data; }
}
/*
end function debug()
*/
debug('out');
?>

All you do is pass the regular URL, except add "&clean=true", like this..

<?php readfile('http://'.$_SERVER['HTTP_HOST'].
'/engine?section=php&source=sample.php&clean=true'); ?>


Rather than specifying section and file, you might prefer to use the short format, like this..

<?php readfile('http://'.$_SERVER['HTTP_HOST'].
'/engine?source=php/sample.php&clean=true'); ?>


Either way, the distro machine will return your pretty colored source with the usual source viewer page header and footer stripped off. neat.

NOTE: using include() to embed machine objects is now deprecated in favour of readfile(). include() has the advantage of not leaving extra requests in your web logs, but is more likely to fail on a particular server setup, though if it works on your server, it will work well. readfile() has the advantage of working no matter what your server configuration happens to be. Your call.

You can use the source highlighting facility for non-php files, too, where it automatically converts your shell/bash/batch/perl/AutoIt/etc. scripts, .nfo files, or just plain old text into html; XHTML, rather; which could be handy. I should make it a feature.. Auto-XHTMLizing info viewer, or something. Anyway, this is what a regular text file (in this case, one of my readme's) might look like..
 

     #####    ###     ##  ### ########             ###     ##  ###    ###TM 
   #######  #######   ####### ########           #######   #######  ####### 
  ###      ###   ###  ###         ###           ###   ###  ###     ###   ## 
  ##       ##     ##  ##         ###            ##     ##  ##      ##    ## 
  ###      ###   ###  ##       ###              ###   ###  ##      ###   ## 
   #######  #######   ##      ########    ###    #######   ##        ###### 
     #####    ###     ##      ########    ###      ###     ##           ### 
                                                                    #####   


                "corz-style" beta-tester license version 1.3


    By installing and using this product, you confirm your acceptance of,
    and agree to become bound by the terms of this agreement. If you do not
    agree to be bound by these terms, do not install this software!
    
    You may not copy, lend, share, or otherwise distribute this software or 
    "significant portions" thereof, without the express written consent of 
    the author, me.
    
    Warranty: This software comes "as-is", and while designed to be as fast 
    and secure and fit as possible for its intended purpose, it comes with no
    warranty, expressed or implied. Please endeavour to report any bugs/
    strangeness to the email address at the foot of this document.
    
    Disclaimer: neither corz.org nor its developers will be liable or 
    responsible for any damages you, your business or any third party may 
    suffer, including, but not limited to the use or inability to use this 
    software. corz.org makes no warranties of any kind, expressed or implied, 
    for this software, and disclaims any warranty or merchantability or 
    fitness for a particular purpose. Though, of course, it will probably
    work great!
    
    This software is provided on the condition that you test it fully and
    report back any issues, bugs, problems, errors (both in the software and
    documentation), along with your general report. I'm always keen to receive 
    feedback on the overall package and documentation, as well as the installer
    program, if any is supplied. Include anything at all, even if you think 
    it's not that important. Your feelings and random thoughts are very much 
    appreciated. I read them all carefully.
    
    On successful completion of the beta-testing phase, and software "release",
    providing you have complied with the terms of the agreement, in return for 
    your beta test report(s), you will receive a fully licensed copy of the 
    software, for your own personal use, with thanks!

    This work is copyright © cor and corz.org 2008
    
    ;o)
    (or
    
    betas at corz dot org

    note: corz.org reserves the right to amend or update these policies without 
    notice. failure to comply with the terms and conditions will result in 
    license termination, and possibly a terse email.
    

It looks like text, but acts like 100% XHTML strict. And if you are wondering how on earth the cool "/engine?" links work, check out the faq page, or just dive directly into some mod_rewite hacking.
 

stats, counters and admin..

I added a funky stats page so you can get a neat list of your download statistics

There's an (optional) "stats" link at the bottom-right of the menu page, which can (optionally) be hidden. Clicking that will bring up your (optionally) password protected statistics page. you can (optionally) disable this altogether.

You can edit your download scores there, too, handy if you do a few tests and don't want them messing up your statistics, etc. if the stats page is open to the public (no password has been set), editing functions are not available.

This feature was brought to you with the help of the word "optionally"
 

see ya..

You can click here so see corz distro machine dealing with the downloads here at corz.org

 
cbparser powered comments..

previous comments (two pages)   show all comments

cor - 30.03.05 1:17 pm

pavan, all the info you need is right here, on this very page.

To run as-is, simply drop it somewhere, really, and load in a browser. That's it! Open up the file itself to set any preferences you require. If you want to know if it meets your requirements, check out one of the four distro machines running here at corz.org, like here.. http://corz.org/engine

To "integrate" into other stuff, you simply embed the machine in your pages, usually with a php "include". For full details, see above.

;o)
(or


Rob - 13.04.05 4:38 pm

Ugh!

I LOVE this program! But I'm baffled by how to add it into a page itself. I see the directions above, but they don't make sense to me (I'm only just beginning to learn php)

I can't figure out the link to post to get an embedded menu in a page.

Let's say I dropped the machine in my server in a folder called "machine", and my page is at robsdemo.com/audio/test.php

What do I change the above php include line to look like?

Ack! I'm so confused!

Your machine sure does look to be a brilliant piece of work!


cor - 18.04.05 1:48 pm

ahh feck! I did SUCH a good answer for this! I musta closed my browser before posting it, and that was DAYS ago! DAMN!

erm.. try again..

okay, you need to "include" the file. Not like a regular include (via the filesystem) but via a normal http request, so inside test.php, put a line like this..

<?php include 'http://'. $_SERVER['HTTP_HOST'] .'/machine/index.php?clean=true'; ?>

wherever you want the menu to appear. The "$_SERVER['HTTP_HOST']" part simply inserts your hostname, ie "robsdemo.com", and makes the whole thing very portable, but you could use a hard link too..

<?php include 'http://robsdemo.com/machine/index.php?clean=true'; ?>

Remember you can specify other elements that can be included by passing more "GET" variables, like maybe "&text=true" if you want your custom text to appear in the menu, etc. see above for more details.

feel free to ask more questions, I'm particularly inclined to help php n00bs, and code all my stuff with you in mind.

for now..

;o)
(or



cor - 18.04.05 1:53 pm

obviously, if you are already inside some php code, you can ommit the <?php and ?> tags!

;o)
(or


cor - 15.06.05 12:50 pm

security notice!

Due to the discovery (and fixing) of a potentially serious security hole in the distro machine's verification mechanisms, existing users are urged to upgrade to 0.8rc8 IMMEDIATELY!

Thanks to PCheese for the heads-up. On recieving my first "Security Vulnerability Notice" this morning , I now feel like a "real" software developer!

So maybe those disappearing scores had nothing to do with file-locking, after all. Good news! PLUS now we have the finest file-locking code in the php universe! smiley for :lol:

onwards..

;o)
(or

ps.. all users who have mailed me regarding the machine have received a copy of 0.8rc8 in their email, and subscribers to my devlog newsfeed will notice a new entry. what else does one do in these situations? it has me thinking about compulsory email validation before download, or something. hmm.


phat - 08.03.06 7:05 pm

Hi cor,

I like it can I request you add an option to make the downloads and viewing work only within the domain. Basically adding an anti-leech for downloads and source viewing.

=D


cor - 08.10.07 11:53 am

phat, irvin, your wish is my command!
Although not my first command, obviously smiley for ;)

Feast your eyes on the latest version, hot-link protection, infinite-depth, 100% XHTML strict output, and lots more!

Comments re-enabled!

;o)
(or


Dee - 10.02.08 4:05 am

Hey i recently tested out the Distro Machine and thought it was awesome because of its simplicity since i'm a noob, i was trying to get how use use .htaaccess but didn't really get any real idea what other sites were talking about at certain times. My question is that I have a php/MySql based user authentication system setup, and i wanted to allow the members to download the files in the memebrs area but not see the link for the file or be able to dir3eectly access it(.htaccess prevention), for which reason I like your distro machine, however I wanted to make my own layout for showing the download file different from the distro Index page but if I embed it like this ( <a href="http://mysite/download.php?download=some_file.zip">some file</a> ) then can't they just easily bypass the User authentication process which I created through PHP/MySQL and go straight to the Index of the distro machine if they type in http://mysite/download.php

I know it sounds like a dum question but i'm totally new at this and I made sure I read everything before commenting so i hope its not a bother, I thought maybe it has something to do with the engine and I tried reading that but didn't really get it. If you can help me fine a solution that would be great or even give me advice how to do it....Thank you so much in advance.


cor - 26.02.08 9:43 am

Dee, the distro machine has its own password protection; check the prefs inside the main file (index.php, or whatever you named it). I haven't attempted to tie it into MySQL (I don't use or like database servers).

The simplest solution is to post the distro machine password somewhere within your MySQL protected area, so only authenticated users can use the links/index. They only have to login once, then they can download from any of your links.

Or, if you are handy with php, you can simply get your authentication script to set the areapass session variable to an MD5 of your area password (once they have authenticated, of course)..

<?php
$_SESSION
['machine']['areapass'] = md5("MyPassword");
?>
And then your authenticated users can download the files without trouble, while non-authenticated users will have no access whatesoever. Just add that line to your auth script (in the correct place) and you're done.

Note: you can also disable the index/menus altogether (again, in the distro machine prefs) whilst still allowing background downloads. I definitely recommend you spend some time with the preferences; there's lots that can be done to protect your downloads, and much more.

;o)
(or


Dee - 11.03.08 12:21 am

Thanx alot for the reply, I get what you mean. Looking forward to more disto machine updates


anne - 01.04.08 2:39 am

when &clean=true is used, is there a way so that the css is also included?


cor - 01.04.08 5:18 pm

There used to be; but that behaviour has been deprecated in more recent versions, because it makes for bad xhtml - dropping style sections in the middle of a page isn't legal; it will usually work, but sometimes not.

The new way of doing things is much better - you add the styles to the containing page. This gives you much more control over the look and feel of the menus. Simply drop a single import into your page's style section*..

@import "/inc/css/machine.css";

and the embedded menus will use those styles. It's a lot cleaner this way, and your pages will validate, too. Check out the source for the download or install pages (links at the top of this page) and you'll see how easy it is to do.

If that doesn't help, feel free to get back here and tell me why. I'm always open to suggestions for optional behaviour in my scripts.

;o)
(or

references:
* except with the correct path to wherever you keep your machine styles. If css "import" is new to you, note: just like any css, later styles will override earlier styles, so simply put it wherever it makes sense to do so.

You could also create a separate cut-down version (perhaps called embedded.css) and import that, instead. That way you can use different styles for machine pages and embedded menus. The possibilities are practically limitless.



anne - 02.04.08 1:28 am

Thank you for replying promptly. I am trying to embed menus onto a phpbb3 through the bbcode feature so that the menus work in complement with the template that I use.

It doesn't seem to let me use the php include feature, then I resort to using an iframe as it allows the use of html. But unfortunately, using iframe leaves the links style-less. This is the reason why I want to know a way to include the css.

I see two options at this point: (1) Find a way to get the bbcode feature parse php codes, (2) Find a way so that a javascript works like a php include.

Do you have any suggestions?

Thank you.


cor - 03.04.08 11:24 am

In the older version (0.8rc8) of the distro machine (which is actually still the current "release", for those who haven't upgraded to the beta) you can do exactly what you want by passing &css=styles.css, assuming styles.css is the name of the stylesheet.

So either use the older version, or hack this feature into the newer xhtml version. Download the older release and copy the correct code parts into the new version, there are two..

First, there's a "check css" section, that looks for a possible $_GET string and loads it into $css_style, drop this (cut-down version) right after the "init" section, below session_start()..

<?php
/*
check css..    */
if (isset($_GET['css']) and file_exists($_GET['css'])) {
    
$css_style implode(''file($_GET['css']));
}

And then later, right above where it says "check for embedding options", it simply spits out the $css_style inside regular style tags, like this..

<?php
    
echo '
<style type="text/css"><!--
'
,$css_style,'
//--></style>
'
;

If you are using an iFrame, you'll probably want to use a full style sheet, with body styles, etc (though customised to your needs, of course). Also, you will need to keep the stylesheet next to the distro machine.

I might even do this hack myself at some point, just for situations like yours, which in truth, I hadn't considered. But it will be quicker for you to do it yourself, meantime. If you need any more help or pointers, just get back here.

;o)
(or


anne - 04.04.08 5:09 pm

Thank you very much! I got the css "attached" per your instruction using &css=styles.css.

I still have one question though (I hope you don't mind), is there any way I can also show the download count per file. For example in the menu:

download files...
File_Name1 (XXX times downloaded)
File_Name2 (XX times downloaded)
File_Name3 (X times downloaded)

or would that be too long to code? Thank you very much, once again.


cor - 04.04.08 7:09 pm

Ahh.. you're already using the old version! Please rtfm! It's all in there! How to attach css, how to get to the download statistics (that optionally hidden link at the bottom of the main (not embedded) page), and so on.

Really, I spend hours on documentation!

;o)
(or

ps. the new (currently beta) version is waaay improved. Upgrade and do the hacks I posted, and you'll have the best of everything. The location of the download statistics hasn't changed, either!


anne - 05.04.08 4:31 am

Yes, I read your 0.9.19b manual (index.php) and browsed through changelog here: http://corz.org/serv/tools/distromachine/. I'm would like to upgrade onto the latest beta, 0.9.21 for a "waaay improved version" but you're download engine only has packages 0.9.19b and 0.9.16b here: http://corz.org/engine?download=menu&section=beta%2Fcorz%20distro%20machine. I believe the "attach" feature is developed on 0.9.20+ as per your changelog. I also browsed through your devblog (for March), and it doesn't seem to have any post related to the file I wanted.

Thank you very much for your patience. And I'm sorry for not reading your manual thoroughly. smiley for :blank:


cor - 05.04.08 12:30 pm

Och, no one reads manuals thoroughly, sadly. I was just a bit shocked that you wouldn't know how to get to the download stats, that's always been the same.

"waaay improved", refers to any 0.9 version (xhtml and depth infinity, for starters). All available downloads are on the download page (link at the top of this page). There is no 0.9.21 beta yet, that's the current in-testing version. v0.9.19 is the current beta; get it on the downloads page.

The "attach" feature (I assume you mean attaching css) is DEPRECATED*. Since the xhtml upgrade, there's no real need to be attaching css (at least, for normal users), but like I say, I hadn't considered someone might want to embed menus inside forum posts, so I may hack it back in, quietly. Attaching css will always create invalid markup, and though most popular browsers can handle it, it's bad practice, because not everyone uses the popular web browsers, or even web browsers at all.

If you download any 0.9 series distro machine, and want to attach css, you'll need to hack it in yourself, as per above instructions. It's a five-second job.

Or else wait for we to put out another beta release, where it will probably be hacked back in. There's still a few ripples to iron out in the latest version (it works great here at the .org, but has been doing weird things on my test servers), so it' won't be released until I can get around to sorting them out.

Feel free to ask any questions. My patience is fairly limitless for stuff like this. At the end of the day, it's you helping me to make my software better, by revealing what confuses/sticks people, so it's all good. Fire away!

;o)
(or

references:
A new preference was added in 0.9.20, "always attach", but that's something completely different; for folk dealing exclusively with multimedia downloads.



anne - 05.04.08 7:48 pm

Thank you for your limitless patience! I hope my questions do help your script development instead of ... ^_^

I don't know. I might be just misunderstanding this. Or you may just be misunderstanding me.. Either way, I just want to clarify one thing. The "download count" that I'm referring above is not the stats page. I do know by reading your manual that I can have an option of showing the stats "link" below the download menu, etc. even password protecting it.

What I'm hoping for though is the download count to show right beside each file name on the menu itself (i,e,
FileName.zip (XXX times)
) ...and not on the stats page.

Ofcoure, if I once again misunderstood your explanation.. I apologize in advance.


cor - 05.04.08 8:07 pm

I see! Right next to the download link! Gotcha!

Hmm. I hadn't really considered it. Truth is, I've avoided putting any other information next to the links themselves because things can quickly start to look ugly, particularly with embedded menus.

Personally, I like to keep that information to myself, another reason why I've not considered it. I don't buy into the whole "popular" thing, and wouldn't want it influencing people's choices. But that's just me.

You'll note the files have pop-up tips, with the file size in them. I guess it would be possible, assuming the webmaster has enabled public viewing of the stats, to pop something in there, though there are limits to just how many characters you can throw in there - some browsers are better than others when it comes to pop-up titles (amazingly, IE is the best for this). I could certainly add it to the to-do list, though.

Thanks for your persistence!

;o)
(or


anne - 05.04.08 9:23 pm

smiley for :lol: That's true. Oh well, I guess I'll quit the download count for now. And just wait more of your updates. Specially regarding the insertion onto forum posts. smiley for :)

Thank you very much for your patience..


 

leave a comment, become part of this site!


First, confirm that you are human by entering the code you see..

(if you find it difficult to read, refresh the page for a new code)


Enter the 5-digit code this text sounds like : lower-case zed, Upper-Case Em, sicks, lower-case dbl-u, Upper-Case Em


 
 
[site notice]

If you give a shit, BUY A SHIRT!