cgi
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 581

@1 Helpdesk XP 1.2
Online helpdesk system written in Perl CGI. more>> A very powerful web-based helpdesk system. It supports file attachments, hidden remarks, priority marking etc. You can even tell whether your replies have been read by the visitors.<<less
Download (44KB)
Added: 2009-04-27 License: Freeware Price: Free
184 downloads
Abyss Web Server X1 2.6
Abyss Web Server X1 is a free and compact Web server. It supports SSL, compression, CGI/FastCGI, ISAPI, XSSI, URL rewriting,bandwidth throttling, anti-leeching, anti-hacking, and features a remote web management interface. more>> <<less
Download (0.64MB)
Added: 2009-04-04 License: Freeware Price: $0
73043 downloads
CGI::Builder::Magic 1.31
CGI::Builder::Magic Perl module contains CGI::Builder and Template::Magic integration. more>>
CGI::Builder::Magic Perl module contains CGI::Builder and Template::Magic integration.
SYNOPSIS
# just include it in your build
use CGI::Builder
qw| CGI::Builder::Magic
|;
<<lessSYNOPSIS
# just include it in your build
use CGI::Builder
qw| CGI::Builder::Magic
|;
Download (0.015MB)
Added: 2007-08-01 License: Perl Artistic License Price:
816 downloads
CGI::Application::Magic 1.21
CGI::Application::Magic is a template based framework for CGI applications. more>>
CGI::Application::Magic is a template based framework for CGI applications.
SYNOPSIS
package WebApp ;
use base CGI::Application::Magic ;
# optional runmethod
sub RM_myRunMmode
{
... do_something_useful ...
... no_need_to_set_page ...
... returned_value_will_be_ignored ...
}
# package where Template::Magic will looks up
package WebApp::Lookups ;
# this value will be substituted to each
# app_name label in each template that include it
our $app_name = WebApp 1.0 ;
# same for each Time label
sub Time { scalar localtime }
# and same for each ENV_table block
sub ENV_table
{
my ($self, # $self is your WebApp object
$zone) = @_ ; # $zone is the Template::Magic::Zone object
my @table ;
while (my @line = each %ENV)
{
push @table, @line
}
@table ;
}
<<lessSYNOPSIS
package WebApp ;
use base CGI::Application::Magic ;
# optional runmethod
sub RM_myRunMmode
{
... do_something_useful ...
... no_need_to_set_page ...
... returned_value_will_be_ignored ...
}
# package where Template::Magic will looks up
package WebApp::Lookups ;
# this value will be substituted to each
# app_name label in each template that include it
our $app_name = WebApp 1.0 ;
# same for each Time label
sub Time { scalar localtime }
# and same for each ENV_table block
sub ENV_table
{
my ($self, # $self is your WebApp object
$zone) = @_ ; # $zone is the Template::Magic::Zone object
my @table ;
while (my @line = each %ENV)
{
push @table, @line
}
@table ;
}
Download (0.034MB)
Added: 2007-08-01 License: Perl Artistic License Price:
818 downloads
CGI::Enurl 1.07
CGI::Enurl.pm is a Perl module for URL-encoding strings and hashes. more>>
CGI::Enurl.pm is a Perl module for URL-encoding strings and hashes.
SYNOPSIS
use CGI::Enurl;
%hash = (name=>Jenda Krynicky,address=>Nerudova 1016);
print "Location: http://$ENV{SERVER_NAME}/cgi-bin/do.pl?",enurl %hash,"nn";
This is a little module made for CGI scripting. It encodes the parameters to be passed to a CGI. It does nothing more, so its much smaller and loads more quickly.
Functions
enurl STRING
enurl ARRAY
enurl HASH
Encodes the parameter. If the parameter is a single string it encodes it and returns the encoded form.
If it is an array or a reference to an array it encodes all items and returns them joined by &.
If it is a hash it encodes the values and return a querystring in form "key2=encoded_value1&key2=encoded_value2&...".
!!! Please note that a hash in a list context returns a list of all keys and values. This means that if you call enurl(%hash) you will NOT get what you may thing you should. You HAVE to use enurl(%hash) !!!
enURL STRING
Encodes the parameter, this version doesnt encode = and & characters, so you should make sure they are not present in the data.
Notice the difference :
enurl a&b=f o o => a%26b%3Df+o+o
enURL a&b=f o o => a&b=f+o+o
$CGI::Enurl::ParamSeparator
You may specify another character to be used as the parameter separator. Simply set this variable to the character (or string) you want to use.
The default value is &
$CGI::Enurl::KeepUnencoded
This variable contains the characters that should stay unencoded. Please keep in mind that the string will be interpolated into a regexp in a [^...] group!
Any change of this variable will be ignored after the first call to enurl or enURL. (Im using /o switch in the regexp.) So if you want to change the variable you should do it as soon as posible. You may do that even before you "use" the module!
The default value is a-zA-Z 0-9_-@.=
<<lessSYNOPSIS
use CGI::Enurl;
%hash = (name=>Jenda Krynicky,address=>Nerudova 1016);
print "Location: http://$ENV{SERVER_NAME}/cgi-bin/do.pl?",enurl %hash,"nn";
This is a little module made for CGI scripting. It encodes the parameters to be passed to a CGI. It does nothing more, so its much smaller and loads more quickly.
Functions
enurl STRING
enurl ARRAY
enurl HASH
Encodes the parameter. If the parameter is a single string it encodes it and returns the encoded form.
If it is an array or a reference to an array it encodes all items and returns them joined by &.
If it is a hash it encodes the values and return a querystring in form "key2=encoded_value1&key2=encoded_value2&...".
!!! Please note that a hash in a list context returns a list of all keys and values. This means that if you call enurl(%hash) you will NOT get what you may thing you should. You HAVE to use enurl(%hash) !!!
enURL STRING
Encodes the parameter, this version doesnt encode = and & characters, so you should make sure they are not present in the data.
Notice the difference :
enurl a&b=f o o => a%26b%3Df+o+o
enURL a&b=f o o => a&b=f+o+o
$CGI::Enurl::ParamSeparator
You may specify another character to be used as the parameter separator. Simply set this variable to the character (or string) you want to use.
The default value is &
$CGI::Enurl::KeepUnencoded
This variable contains the characters that should stay unencoded. Please keep in mind that the string will be interpolated into a regexp in a [^...] group!
Any change of this variable will be ignored after the first call to enurl or enURL. (Im using /o switch in the regexp.) So if you want to change the variable you should do it as soon as posible. You may do that even before you "use" the module!
The default value is a-zA-Z 0-9_-@.=
Download (0.004MB)
Added: 2007-07-19 License: Perl Artistic License Price:
828 downloads
CGI::AppBuilder::Table 0.12
CGI::AppBuilder::Table module contains a configuration initializer. more>>
CGI::AppBuilder::Table module contains a configuration initializer.
SYNOPSIS
use CGI::AppBuilder::Table;
my $ab = CGI::AppBuilder::Table->new(
ifn, my_init.cfg, opt, vhS:a:);
my ($q, $ar, $ar_log) = $ab->start_app($0, %ARGV);
print $ab->disp_form($q, $ar);
This class provides methods for reading and parsing configuration files.
new (ifn => file.cfg, opt => hvS:)
This is a inherited method from CGI::AppBuilder. See the same method in CGI::AppBuilder for more details.
html_table($arf, $cns, $br)
Input variables:
$arf - array ref containing the content of the table
$cns - column names separated by comma or
AUTO|AH|HASH - use $k in AH Array ${$arf}[$i]{$k}
$br - hash array ref for table format, it contains
css_table - CSS class name for < TABLE>
atr_table - attribute parameters for < TABLE>
css_tr - CSS class name for < TR>
atr_tr - attribute parameters for < TR>
atr_tr_odd - attribute parameters for ODD < TR>
atr_tr_even - attribute parameters for EVEN < TR>
css_tr_odd - CSS class name for ODD < TR>
css_tr_even - CSS class name for EVEN < TR>
css_select - CSS class name for < SELECT ...>
css_input - CSS class name for < INPUT type=input ...>
atr_sel - attributes for itemized < SELECT ...> for instance:
atr_sel = {
var1 => style="display:none",
var2 => style="display:block",
var3 => class="FormSel",
}
atr_inp - attributes for itemized < INPUT type=input ...>
css_td - CSS class name for < TD>
atr_td - attribute parameters for < TD>
atr_cell - an array ref to attribute parameters for each cell
${$br}{atr_cell}[$i][$j]
esc_vars - a list of escaped variables separated by comma.
fh_out - output file handler
cns_desc - hash ref containing column name description
tab_caption - table caption/header
tab_footer - table footer/notes
<<lessSYNOPSIS
use CGI::AppBuilder::Table;
my $ab = CGI::AppBuilder::Table->new(
ifn, my_init.cfg, opt, vhS:a:);
my ($q, $ar, $ar_log) = $ab->start_app($0, %ARGV);
print $ab->disp_form($q, $ar);
This class provides methods for reading and parsing configuration files.
new (ifn => file.cfg, opt => hvS:)
This is a inherited method from CGI::AppBuilder. See the same method in CGI::AppBuilder for more details.
html_table($arf, $cns, $br)
Input variables:
$arf - array ref containing the content of the table
$cns - column names separated by comma or
AUTO|AH|HASH - use $k in AH Array ${$arf}[$i]{$k}
$br - hash array ref for table format, it contains
css_table - CSS class name for < TABLE>
atr_table - attribute parameters for < TABLE>
css_tr - CSS class name for < TR>
atr_tr - attribute parameters for < TR>
atr_tr_odd - attribute parameters for ODD < TR>
atr_tr_even - attribute parameters for EVEN < TR>
css_tr_odd - CSS class name for ODD < TR>
css_tr_even - CSS class name for EVEN < TR>
css_select - CSS class name for < SELECT ...>
css_input - CSS class name for < INPUT type=input ...>
atr_sel - attributes for itemized < SELECT ...> for instance:
atr_sel = {
var1 => style="display:none",
var2 => style="display:block",
var3 => class="FormSel",
}
atr_inp - attributes for itemized < INPUT type=input ...>
css_td - CSS class name for < TD>
atr_td - attribute parameters for < TD>
atr_cell - an array ref to attribute parameters for each cell
${$br}{atr_cell}[$i][$j]
esc_vars - a list of escaped variables separated by comma.
fh_out - output file handler
cns_desc - hash ref containing column name description
tab_caption - table caption/header
tab_footer - table footer/notes
Download (0.012MB)
Added: 2007-07-19 License: Perl Artistic License Price:
828 downloads
CGI::Wiki::Kwiki 0.59
CGI::Wiki::Kwiki is an instant wiki built on CGI::Wiki. more>>
CGI::Wiki::Kwiki is an instant wiki built on CGI::Wiki.
A simple-to-use front-end to CGI::Wiki. It can be used for several purposes: to migrate from a CGI::Kwiki wiki (its original purpose), to provide a quickly set up wiki that can later be extended to use more of CGI::Wikis capabilities, and so on. It uses the Template Toolkit to allow quick and easy customisation of your wikis look without you needing to dive into the code.
INSTALLATION
The distribution ships with and installs a script called cgi-wiki-kwiki-install. Create an empty directory somewhere that your web server can see, and run the script. It will set up a SQLite database, install the default templates into the current directory, and create a cgi script to run the wiki. You now have a wiki - edit wiki.cgi to change any of the default options, and youre done.
MORE DETAILS
wiki.cgi will look something like this:
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use CGI::Wiki::Kwiki;
my %config = (
db_type => SQLite,
db_name => /home/wiki/data/node.db,
formatters => {
default => CGI::Wiki::Formatter::Default,
},
);
my %vars = CGI::Vars();
eval {
CGI::Wiki::Kwiki->new(%config)->run(%vars);
};
if ($@) {
print "Content-type: text/plainnn";
print "There was a problem with CGI::Wiki::Kwiki:nn--n";
print "$@";
print "n--n";
print STDERR $@;
}
In the following directions, we use "webserver" to mean the user that your webserver executes CGI scripts as. Often this is actually you yourself; sometimes it is "www-data" or "apache". If you dont know, ask your ISP.
In the script above and in the following, replace /home/wiki/data/node.db with a filename in a directory that you will be able to make readable and writeable by the webserver. SQLite requires access to both the file (for writing data) and the directory it resides in (for creating a lockfile).
<<lessA simple-to-use front-end to CGI::Wiki. It can be used for several purposes: to migrate from a CGI::Kwiki wiki (its original purpose), to provide a quickly set up wiki that can later be extended to use more of CGI::Wikis capabilities, and so on. It uses the Template Toolkit to allow quick and easy customisation of your wikis look without you needing to dive into the code.
INSTALLATION
The distribution ships with and installs a script called cgi-wiki-kwiki-install. Create an empty directory somewhere that your web server can see, and run the script. It will set up a SQLite database, install the default templates into the current directory, and create a cgi script to run the wiki. You now have a wiki - edit wiki.cgi to change any of the default options, and youre done.
MORE DETAILS
wiki.cgi will look something like this:
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI;
use CGI::Wiki::Kwiki;
my %config = (
db_type => SQLite,
db_name => /home/wiki/data/node.db,
formatters => {
default => CGI::Wiki::Formatter::Default,
},
);
my %vars = CGI::Vars();
eval {
CGI::Wiki::Kwiki->new(%config)->run(%vars);
};
if ($@) {
print "Content-type: text/plainnn";
print "There was a problem with CGI::Wiki::Kwiki:nn--n";
print "$@";
print "n--n";
print STDERR $@;
}
In the following directions, we use "webserver" to mean the user that your webserver executes CGI scripts as. Often this is actually you yourself; sometimes it is "www-data" or "apache". If you dont know, ask your ISP.
In the script above and in the following, replace /home/wiki/data/node.db with a filename in a directory that you will be able to make readable and writeable by the webserver. SQLite requires access to both the file (for writing data) and the directory it resides in (for creating a lockfile).
Download (0.025MB)
Added: 2007-07-17 License: Perl Artistic License Price:
831 downloads
CGI::kSession 0.5.3
CGI::kSession is a sessions manager for CGI. more>>
CGI::kSession is a sessions manager for CGI.
This module can be used anywhere you need sessions. As a session management module, it uses files with a configurable lifetime to handle your session data. For those of you familiar with PHP, you will notice that the session syntax is a little bit similar.
METHODS
The following public methods are availible:
$s = new CGI::kSession();
The constructor, this starts the ball rolling. It can take the following hash-style parameters:
lifetime - how long the session lasts, in seconds
path - the directory where you want to store your session files
id - if you want to give the session a non-random name, use this parameter as well
$s->start();
This creates a session or resumes an old one (could be used in conjunction with something like HTTP::Cookie). This will return 1 if this is a new session, and 0 if its resuming an old one. If you defined no values in the new() call, then the session will start with a default lifetime of 600 seconds, a path of /var/tmp, and a random string for an id.
$s->save_path();
Save the session path or, without an argument, return the current session path. Used with an argument, this performs the same thing as the path parameter in the constructor.
$s->id();
If the session id exists, this will return the current session id - useful if you want to maintain state with a cookie! If you pass a parameter, it acts the same as new( id => some_session_name), i.e., it creates a session with that id.
$s->register();
This takes a string as an arguement and basically tells the session object this: "Hey, this is a variable Im thinking about associating with some data down the road. Hang onto it for me, and Ill let you know what Im going to do with it". Once you register a variable name here, you can use it in set() and get().
$s->is_registered();
Check to see if the function is registered. Returns 1 for true, 0 for false.
$s->unregister();
Tell the session jinn that you no longer want to use this variable, and it can go back in the bottle (the variable, not the jinn... you still want the jinn around until you call destroy()).
$s->set();
This is where you actually define your variables (once you have "reserved" them using register()). This method takes two arguments: the first is the name of the variable that you registerd, and the second is the info you want to store in the variable.
$s->get();
This method allows you to access the data that you have saved in a session - just pass it the name of the variable that you set().
$s->unset();
Calling this method will wipe all the variables stored in your session.
$s->destroy();
This method deletes the session file, destroys all the evidence, and skips bail.
Enhancements:
- updated the documentation
<<lessThis module can be used anywhere you need sessions. As a session management module, it uses files with a configurable lifetime to handle your session data. For those of you familiar with PHP, you will notice that the session syntax is a little bit similar.
METHODS
The following public methods are availible:
$s = new CGI::kSession();
The constructor, this starts the ball rolling. It can take the following hash-style parameters:
lifetime - how long the session lasts, in seconds
path - the directory where you want to store your session files
id - if you want to give the session a non-random name, use this parameter as well
$s->start();
This creates a session or resumes an old one (could be used in conjunction with something like HTTP::Cookie). This will return 1 if this is a new session, and 0 if its resuming an old one. If you defined no values in the new() call, then the session will start with a default lifetime of 600 seconds, a path of /var/tmp, and a random string for an id.
$s->save_path();
Save the session path or, without an argument, return the current session path. Used with an argument, this performs the same thing as the path parameter in the constructor.
$s->id();
If the session id exists, this will return the current session id - useful if you want to maintain state with a cookie! If you pass a parameter, it acts the same as new( id => some_session_name), i.e., it creates a session with that id.
$s->register();
This takes a string as an arguement and basically tells the session object this: "Hey, this is a variable Im thinking about associating with some data down the road. Hang onto it for me, and Ill let you know what Im going to do with it". Once you register a variable name here, you can use it in set() and get().
$s->is_registered();
Check to see if the function is registered. Returns 1 for true, 0 for false.
$s->unregister();
Tell the session jinn that you no longer want to use this variable, and it can go back in the bottle (the variable, not the jinn... you still want the jinn around until you call destroy()).
$s->set();
This is where you actually define your variables (once you have "reserved" them using register()). This method takes two arguments: the first is the name of the variable that you registerd, and the second is the info you want to store in the variable.
$s->get();
This method allows you to access the data that you have saved in a session - just pass it the name of the variable that you set().
$s->unset();
Calling this method will wipe all the variables stored in your session.
$s->destroy();
This method deletes the session file, destroys all the evidence, and skips bail.
Enhancements:
- updated the documentation
Download (0.004MB)
Added: 2007-07-17 License: Perl Artistic License Price:
831 downloads
CGI::SecureState 0.36
CGI::SecureState is a transparent, secure statefulness for CGI programs. more>>
CGI::SecureState is a transparent, secure statefulness for CGI programs.
SYNOPSIS
use CGI::SecureState;
my @memory = qw(param1 param2 other_params_to_remember);
my $cgi = new CGI::SecureState(-stateDir => "states",
-mindSet => forgetful,
-memory => @memory);
print $cgi->header(), $cgi->start_html;
my $url = $cgi->state_url();
my $param = $cgi->state_param();
print I am a stateful CGI session.";
printI am a different ",
"script that also has access to this session.quot;;
Very Important Note for Users of CGI::SecureState 0.2x
For those still using the 0.2x series, CGI::SecureState changed enormously between 0.26 and 0.30. Specifically, the addition of mindsets is so important that if you run your old scripts unchanged under CGI::SecureState 0.3x, you will receive nasty warnings (likely both in output web pages and your log files) that will tell you not to do so. Please do yourself a favor by re-reading this documentation, as this mysterious mindset business (as well as all the scrumptious new features) will be made clear.
Of course, any and all comments on the changes are welcome. If you are interested, send mail to behroozi@cpan.org with the subject "CGI::SecureState Comment".
A Better Solution to the stateless problem.
HTTP is by nature a stateless protocol; as soon as the requested object is delivered, HTTP severs the objects connection to the client. HTTP retains no memory of the request details and does not relate subsequent requests with what it has already served.
There are a few methods available to deal with this problem, including forms and cookies, but most have problems themselves, including security issues (cookie stealing), browser support (cookie blocking), and painful implementations (forms).
CGI::SecureState solves this problem by storing session data in an encrypted state file on the server. CGI::SecureState is similar in purpose to CGI::Persistent (and retains much of the same user interface) but has a completely different implementation. For those of you who have worked with CGI::Persistent before, you will be pleased to learn that CGI::SecureState was designed to work with Perls taint mode and has worked flawlessly with mod_perl and Apache::Registry for over two years. CGI::SecureState was also designed from the ground up for security, a fact which may rear its ugly head if anybody tries to do something tricksy.
<<lessSYNOPSIS
use CGI::SecureState;
my @memory = qw(param1 param2 other_params_to_remember);
my $cgi = new CGI::SecureState(-stateDir => "states",
-mindSet => forgetful,
-memory => @memory);
print $cgi->header(), $cgi->start_html;
my $url = $cgi->state_url();
my $param = $cgi->state_param();
print I am a stateful CGI session.";
printI am a different ",
"script that also has access to this session.quot;;
Very Important Note for Users of CGI::SecureState 0.2x
For those still using the 0.2x series, CGI::SecureState changed enormously between 0.26 and 0.30. Specifically, the addition of mindsets is so important that if you run your old scripts unchanged under CGI::SecureState 0.3x, you will receive nasty warnings (likely both in output web pages and your log files) that will tell you not to do so. Please do yourself a favor by re-reading this documentation, as this mysterious mindset business (as well as all the scrumptious new features) will be made clear.
Of course, any and all comments on the changes are welcome. If you are interested, send mail to behroozi@cpan.org with the subject "CGI::SecureState Comment".
A Better Solution to the stateless problem.
HTTP is by nature a stateless protocol; as soon as the requested object is delivered, HTTP severs the objects connection to the client. HTTP retains no memory of the request details and does not relate subsequent requests with what it has already served.
There are a few methods available to deal with this problem, including forms and cookies, but most have problems themselves, including security issues (cookie stealing), browser support (cookie blocking), and painful implementations (forms).
CGI::SecureState solves this problem by storing session data in an encrypted state file on the server. CGI::SecureState is similar in purpose to CGI::Persistent (and retains much of the same user interface) but has a completely different implementation. For those of you who have worked with CGI::Persistent before, you will be pleased to learn that CGI::SecureState was designed to work with Perls taint mode and has worked flawlessly with mod_perl and Apache::Registry for over two years. CGI::SecureState was also designed from the ground up for security, a fact which may rear its ugly head if anybody tries to do something tricksy.
Download (0.020MB)
Added: 2007-07-16 License: Perl Artistic License Price:
831 downloads
CGI::WML 0.09
CGI::WML is a Perl module with subclass LDSs CGI.pm for WML output and WML methods. more>>
CGI::WML is a Perl module with subclass LDSs "CGI.pm" for WML output and WML methods.
SYNOPSIS
use CGI::WML;
$query = new CGI::WML;
$content = $query->p("Hello WAP world");
print
$query->header(),
$query->start_wml(),
$query->template(-content=>$query->prev()),
$query->card(-id=>"first_card",
-title=>"First card",
-content=>$content),
$query->end_wml();
print
$query->wml_to_wmlc(-wml=>$wml_buffer,
-errorcontext=>2);
($page_title,$content) = $query->html_to_wml($buffer);
This is a library of perl functions to allow CGI.pm-style programming to be applied to WAP/WML. Since this is a subclass of Lincoln Steins CGI.pm all the normal CGI.pm methods are available. See perldoc CGI if you are not familiar with CGI.pm
<<lessSYNOPSIS
use CGI::WML;
$query = new CGI::WML;
$content = $query->p("Hello WAP world");
$query->header(),
$query->start_wml(),
$query->template(-content=>$query->prev()),
$query->card(-id=>"first_card",
-title=>"First card",
-content=>$content),
$query->end_wml();
$query->wml_to_wmlc(-wml=>$wml_buffer,
-errorcontext=>2);
($page_title,$content) = $query->html_to_wml($buffer);
This is a library of perl functions to allow CGI.pm-style programming to be applied to WAP/WML. Since this is a subclass of Lincoln Steins CGI.pm all the normal CGI.pm methods are available. See perldoc CGI if you are not familiar with CGI.pm
Download (0.021MB)
Added: 2007-07-12 License: Perl Artistic License Price:
838 downloads
CGI::AppBuilder::Frame 0.10
CGI::AppBuilder::Frame is a configuration initializer. more>>
CGI::AppBuilder::Frame is a configuration initializer.
SYNOPSIS
use CGI::AppBuilder::Frame;
my $ab = CGI::AppBuilder::Frame- >new(
ifn, my_init.cfg, opt, vhS:a:);
my ($q, $ar, $ar_log) = $ab- >start_app($0, %ARGV);
print $ab- >disp_form($q, $ar);
This class provides methods for reading and parsing configuration files.
new (ifn = > file.cfg, opt = > hvS:)
This is a inherited method from CGI::AppBuilder. See the same method in CGI::AppBuilder for more details.
frame_set ($fr, $pr)
Input variables:
$fr - frame set definiton array reference. The $fr contains two
elements [$hr, $ar]:
$hr - a hash ref containing the frame set attributes
$ar - a array ref containing hash references defining each
frames in the frame set.
$pr - tag attribute array ref. It contains three elements:
class - CSS class name
attr - attribute string such as width=5 onChange=js_func
hr - hash ref with key and value pairs. This will be obtained
from $fr for each frame set and frame.
pretty - whether to add line breaks
Variables used or methods called:
CGI::AppBuilder::Table
html_tag - generate HTML tags
CGI::AppBuilder::Message
echo_msg - display message
How to use:
The following shows how to define the frame array ($fr):
+-+----+ The following defines the left layout:
| | T |
| +----+ [{cols= >"150,*"},[
| | | {src= >"left.htm",name= >"L"},
|L| C | [{rows= >"100,*,50"},[
| | | {src= >"top.htm",name= >"T"},
| |----| {src= >"main.htm",name= >"C"},
| | B | {src= >"bottom.htm",name= >"B"}]]]
+-+----+ ]
In YAML, here is how it looks like:
---
cols: 150,*
- src: left.htm
name: L
- rows: 100,*,50
- src: top.htm
name: T
- src: main.htm
name: C
- src: bottom.htm
name: B
...
+-+------+ The following defines the left layout:
| | T |
| +----+-+ [{cols= >"150,*"},[
| | | | {src= >"left.htm",name= >"L"},
|L| C |R| [{rows= >"100,*,50"},[
| | | | {src= >"top.htm",name= >"T"},
| | | | [{cols= >"*,100"},[
| |----+-+ {src= >"main.htm",name= >"C"},
| | | {src= >"right.htm",name= >"R"}] ] ],
| | B | {src= >"bottom.htm",name= >"B"}]]
+-+----+-+ ]
In YAML, here is how it looks like:
---
cols: 150,*
- src: left.htm
name: L
- rows: 100,*,50
- src: top.htm
name: T
- cols: *,100
- src: main.htm
name: C
- src: right.htm
name: R
- src: bottom.htm
name: B
...
Here is the testing codes:
my $fr = [{cols= >"150,*"},[
{src= >"left.htm",name= >"L"},
[{rows= >"100,*,50"},[
{src= >"top.htm",name= >"T"},
{src= >"main.htm",name= >"C"},
{src= >"bottom.htm",name= >"B"}]
]]
];
my $pr = {pretty= >1};
print $obj- >frame_set($fr,$pr);
# the following is the result:
< FRAMESET cols=150,* >
< FRAME src=left.htm name=L >
< FRAMESET rows=100,*,50 >
< FRAME src=top.htm name=T >
< FRAME src=main.htm name=C >
< FRAME src=bottom.htm name=B >
< / FRAMESET >
< / FRAMESET >
$pr- >{_frameset_count} = 0; # reset frame set counter
my $f2 = [ {cols= >"150,*"},[
{src= >"left.htm",name= >"L"},
[{rows= >"100,*,50"},[
{src= >"top.htm",name= >"T"},
[{cols= >"*,100"},[
{src= >"main.htm",name= >"C"},
{src= >"right.htm",name= >"R"}]
],
{src= >"bottom.htm",name= >"B"}]
]]
];
print $obj- >frame_set($f2,$pr);
# the following is the result:
< FRAMESET cols=150,* >
< FRAME src=left.htm name=L >
< FRAMESET rows=100,*,50 >
< FRAME src=top.htm name=T >
< FRAMESET cols=*,100 >
< FRAME src=main.htm name=C >
< FRAME src=right.htm name=R >
< / FRAMESET >
< FRAME src=bottom.htm name=B >
< / FRAMESET >
< / FRAMESET >
Return: HTML codes.
This method generates HTML codes based on the information provided. This method is also called < I >frameset< / I >.
<<lessSYNOPSIS
use CGI::AppBuilder::Frame;
my $ab = CGI::AppBuilder::Frame- >new(
ifn, my_init.cfg, opt, vhS:a:);
my ($q, $ar, $ar_log) = $ab- >start_app($0, %ARGV);
print $ab- >disp_form($q, $ar);
This class provides methods for reading and parsing configuration files.
new (ifn = > file.cfg, opt = > hvS:)
This is a inherited method from CGI::AppBuilder. See the same method in CGI::AppBuilder for more details.
frame_set ($fr, $pr)
Input variables:
$fr - frame set definiton array reference. The $fr contains two
elements [$hr, $ar]:
$hr - a hash ref containing the frame set attributes
$ar - a array ref containing hash references defining each
frames in the frame set.
$pr - tag attribute array ref. It contains three elements:
class - CSS class name
attr - attribute string such as width=5 onChange=js_func
hr - hash ref with key and value pairs. This will be obtained
from $fr for each frame set and frame.
pretty - whether to add line breaks
Variables used or methods called:
CGI::AppBuilder::Table
html_tag - generate HTML tags
CGI::AppBuilder::Message
echo_msg - display message
How to use:
The following shows how to define the frame array ($fr):
+-+----+ The following defines the left layout:
| | T |
| +----+ [{cols= >"150,*"},[
| | | {src= >"left.htm",name= >"L"},
|L| C | [{rows= >"100,*,50"},[
| | | {src= >"top.htm",name= >"T"},
| |----| {src= >"main.htm",name= >"C"},
| | B | {src= >"bottom.htm",name= >"B"}]]]
+-+----+ ]
In YAML, here is how it looks like:
---
cols: 150,*
- src: left.htm
name: L
- rows: 100,*,50
- src: top.htm
name: T
- src: main.htm
name: C
- src: bottom.htm
name: B
...
+-+------+ The following defines the left layout:
| | T |
| +----+-+ [{cols= >"150,*"},[
| | | | {src= >"left.htm",name= >"L"},
|L| C |R| [{rows= >"100,*,50"},[
| | | | {src= >"top.htm",name= >"T"},
| | | | [{cols= >"*,100"},[
| |----+-+ {src= >"main.htm",name= >"C"},
| | | {src= >"right.htm",name= >"R"}] ] ],
| | B | {src= >"bottom.htm",name= >"B"}]]
+-+----+-+ ]
In YAML, here is how it looks like:
---
cols: 150,*
- src: left.htm
name: L
- rows: 100,*,50
- src: top.htm
name: T
- cols: *,100
- src: main.htm
name: C
- src: right.htm
name: R
- src: bottom.htm
name: B
...
Here is the testing codes:
my $fr = [{cols= >"150,*"},[
{src= >"left.htm",name= >"L"},
[{rows= >"100,*,50"},[
{src= >"top.htm",name= >"T"},
{src= >"main.htm",name= >"C"},
{src= >"bottom.htm",name= >"B"}]
]]
];
my $pr = {pretty= >1};
print $obj- >frame_set($fr,$pr);
# the following is the result:
< FRAMESET cols=150,* >
< FRAME src=left.htm name=L >
< FRAMESET rows=100,*,50 >
< FRAME src=top.htm name=T >
< FRAME src=main.htm name=C >
< FRAME src=bottom.htm name=B >
< / FRAMESET >
< / FRAMESET >
$pr- >{_frameset_count} = 0; # reset frame set counter
my $f2 = [ {cols= >"150,*"},[
{src= >"left.htm",name= >"L"},
[{rows= >"100,*,50"},[
{src= >"top.htm",name= >"T"},
[{cols= >"*,100"},[
{src= >"main.htm",name= >"C"},
{src= >"right.htm",name= >"R"}]
],
{src= >"bottom.htm",name= >"B"}]
]]
];
print $obj- >frame_set($f2,$pr);
# the following is the result:
< FRAMESET cols=150,* >
< FRAME src=left.htm name=L >
< FRAMESET rows=100,*,50 >
< FRAME src=top.htm name=T >
< FRAMESET cols=*,100 >
< FRAME src=main.htm name=C >
< FRAME src=right.htm name=R >
< / FRAMESET >
< FRAME src=bottom.htm name=B >
< / FRAMESET >
< / FRAMESET >
Return: HTML codes.
This method generates HTML codes based on the information provided. This method is also called < I >frameset< / I >.
Download (0.010MB)
Added: 2007-07-12 License: Perl Artistic License Price:
841 downloads
CGI::Kwiki::New 0.18
CGI::Kwiki::New is the default new wiki generator for CGI::Kwiki. more>>
CGI::Kwiki::New is the default new wiki generator for CGI::Kwiki.
A Wiki is a website that allows its users to add pages, and edit any existing pages. It is one of the most popular forms of web collaboration. If you are new to wiki, visit http://c2.com/cgi/wiki?WelcomeVisitors which is possibly the oldest wiki, and has lots of information about how wikis work.
There are dozens of wiki implementations in the world, and many of those are written in Perl. As is common with many Perl hacks, they are rarely modular, and almost never released on CPAN. One major exception is CGI::Wiki. This is a wiki framework that is extensible and is actively maintained.
Another exception is this module, CGI::Kwiki. CGI::Kwiki focuses on simplicity and extensibility. You can create a new kwiki website with a single command. The module has no prerequisite modules, except the ones that ship with Perl. It doesnt require a database backend, although it could be made to use one. The default kwiki behaviour is fairly full featured, and includes support for html tables. Any behaviour of the kwiki can be customized, without much trouble.
SPECIAL FEATURES
CGI::Kwiki will come with some fancy addons not found in most wiki implementations. This comes with the promise that they will not interfere with the sheer simplicity of the default kwiki interface.
Check http://http://www.kwiki.org/index.cgi?KwikiFeatures from time to time to see what hot features have been added.
Kwiki Slide Show
You can create an entire PowerPoint-like slideshow, in a single kwiki page. There is Javascript magic for advancing slides, etc. See the sample page KwikiSlideShow.
EXTENDING
CGI::Kwiki is completely Object Oriented. You can easily override every last behaviour by subclassing one of its class modules and overriding one or more methods. This is generally accomplished in just a few lines of Perl.
The best way to describe this is with an example. Start with the config file. The default config file is called "config.yaml". It contains a set of lines like this:
config_class: CGI::Kwiki::Config
driver_class: CGI::Kwiki::Driver
cgi_class: CGI::Kwiki::CGI
cookie_class: CGI::Kwiki::Cookie
database_class: CGI::Kwiki::Database
metadata_class: CGI::Kwiki::Metadata
display_class: CGI::Kwiki::Display
edit_class: CGI::Kwiki::Edit
formatter_class: CGI::Kwiki::Formatter
template_class: CGI::Kwiki::Template
search_class: CGI::Kwiki::Search
changes_class: CGI::Kwiki::Changes
prefs_class: CGI::Kwiki::Prefs
pages_class: CGI::Kwiki::Pages
slides_class: CGI::Kwiki::Slides
javascript_class: CGI::Kwiki::Javascript
style_class: CGI::Kwiki::Style
scripts_class: CGI::Kwiki::Scripts
This is a list of all the classes that make up the kwiki. You can change anyone of them to be a class of your own.
Lets say that you wanted to change the BOLD format indicator from "*bold*" to bold. You just need to override the "bold()" method of the Formatter class. Start by changing "config.yaml".
formatter_class: MyKwikiFormatter
Then write a module called "MyKwikiFormatter.pm". You can put this module right in your kwiki installation directory if you want. The module might look like this:
package MyKwikiFormatter;
use base CGI::Kwiki::Formatter;
sub bold {
my ($self, $text) = @_;
$text =~ s!(.*?)!$1!g;
return $text;
}
1;
Not too hard, eh? You can change all aspects of CGI::Kwiki like this, from the database storage to the search engine, to the main driver code. If you come up with a set of classes that you want to share with the world, just package them up as a distribution and put them on CPAN.
By the way, you can even change the configuration file format from the YAML default. If you wanted to use say, XML, just call the file "config.xml" and write a module called "CGI::Kwiki::Config_xml".
<<lessA Wiki is a website that allows its users to add pages, and edit any existing pages. It is one of the most popular forms of web collaboration. If you are new to wiki, visit http://c2.com/cgi/wiki?WelcomeVisitors which is possibly the oldest wiki, and has lots of information about how wikis work.
There are dozens of wiki implementations in the world, and many of those are written in Perl. As is common with many Perl hacks, they are rarely modular, and almost never released on CPAN. One major exception is CGI::Wiki. This is a wiki framework that is extensible and is actively maintained.
Another exception is this module, CGI::Kwiki. CGI::Kwiki focuses on simplicity and extensibility. You can create a new kwiki website with a single command. The module has no prerequisite modules, except the ones that ship with Perl. It doesnt require a database backend, although it could be made to use one. The default kwiki behaviour is fairly full featured, and includes support for html tables. Any behaviour of the kwiki can be customized, without much trouble.
SPECIAL FEATURES
CGI::Kwiki will come with some fancy addons not found in most wiki implementations. This comes with the promise that they will not interfere with the sheer simplicity of the default kwiki interface.
Check http://http://www.kwiki.org/index.cgi?KwikiFeatures from time to time to see what hot features have been added.
Kwiki Slide Show
You can create an entire PowerPoint-like slideshow, in a single kwiki page. There is Javascript magic for advancing slides, etc. See the sample page KwikiSlideShow.
EXTENDING
CGI::Kwiki is completely Object Oriented. You can easily override every last behaviour by subclassing one of its class modules and overriding one or more methods. This is generally accomplished in just a few lines of Perl.
The best way to describe this is with an example. Start with the config file. The default config file is called "config.yaml". It contains a set of lines like this:
config_class: CGI::Kwiki::Config
driver_class: CGI::Kwiki::Driver
cgi_class: CGI::Kwiki::CGI
cookie_class: CGI::Kwiki::Cookie
database_class: CGI::Kwiki::Database
metadata_class: CGI::Kwiki::Metadata
display_class: CGI::Kwiki::Display
edit_class: CGI::Kwiki::Edit
formatter_class: CGI::Kwiki::Formatter
template_class: CGI::Kwiki::Template
search_class: CGI::Kwiki::Search
changes_class: CGI::Kwiki::Changes
prefs_class: CGI::Kwiki::Prefs
pages_class: CGI::Kwiki::Pages
slides_class: CGI::Kwiki::Slides
javascript_class: CGI::Kwiki::Javascript
style_class: CGI::Kwiki::Style
scripts_class: CGI::Kwiki::Scripts
This is a list of all the classes that make up the kwiki. You can change anyone of them to be a class of your own.
Lets say that you wanted to change the BOLD format indicator from "*bold*" to bold. You just need to override the "bold()" method of the Formatter class. Start by changing "config.yaml".
formatter_class: MyKwikiFormatter
Then write a module called "MyKwikiFormatter.pm". You can put this module right in your kwiki installation directory if you want. The module might look like this:
package MyKwikiFormatter;
use base CGI::Kwiki::Formatter;
sub bold {
my ($self, $text) = @_;
$text =~ s!(.*?)!$1!g;
return $text;
}
1;
Not too hard, eh? You can change all aspects of CGI::Kwiki like this, from the database storage to the search engine, to the main driver code. If you come up with a set of classes that you want to share with the world, just package them up as a distribution and put them on CPAN.
By the way, you can even change the configuration file format from the YAML default. If you wanted to use say, XML, just call the file "config.xml" and write a module called "CGI::Kwiki::Config_xml".
Download (0.075MB)
Added: 2007-07-10 License: Perl Artistic License Price:
836 downloads
CGI::Expand 2.02
CGI::Expand is a Perl module that can convert flat hash to nested data using TT2s dot convention. more>>
CGI::Expand is a Perl module that can convert flat hash to nested data using TT2s dot convention.
SYNOPSIS
use CGI::Expand;
use CGI; # or Apache::Request, etc.
$args = expand_cgi( CGI->new(a.0=3&a.2=4&b.c.0=x) );
# $args = { a => [3,undef,4], b => { c => [x] }, }
# Or to catch exceptions:
eval {
$args = expand_cgi( CGI->new(a.0=3&a.2=4&b.c.0=x) );
} or log_and_exit( $@ );
#-----
use CGI::Expand qw(expand_hash);
$args = expand_hash({a.0=>77}); # $args = { a => [ 77 ] }
Converts a CGI query into structured data using a dotted name convention similar to TT2.
expand_cgi works with CGI.pm, Apache::Request or anything with an appropriate "param" method. Or you can use expand_hash directly.
If you prefer to use a different flattening convention then CGI::Expand can be subclassed.
<<lessSYNOPSIS
use CGI::Expand;
use CGI; # or Apache::Request, etc.
$args = expand_cgi( CGI->new(a.0=3&a.2=4&b.c.0=x) );
# $args = { a => [3,undef,4], b => { c => [x] }, }
# Or to catch exceptions:
eval {
$args = expand_cgi( CGI->new(a.0=3&a.2=4&b.c.0=x) );
} or log_and_exit( $@ );
#-----
use CGI::Expand qw(expand_hash);
$args = expand_hash({a.0=>77}); # $args = { a => [ 77 ] }
Converts a CGI query into structured data using a dotted name convention similar to TT2.
expand_cgi works with CGI.pm, Apache::Request or anything with an appropriate "param" method. Or you can use expand_hash directly.
If you prefer to use a different flattening convention then CGI::Expand can be subclassed.
Download (0.008MB)
Added: 2007-07-07 License: Perl Artistic License Price:
840 downloads
CGI::XMLForm 0.10
CGI::XMLForm is a Perl extension of CGI.pm which reads/generates formated XML. more>>
CGI::XMLForm is a Perl extension of CGI.pm which reads/generates formated XML. NB: This is a subclass of CGI.pm, so can be used in its place.
SYNOPSIS
use CGI::XMLForm;
my $cgi = new CGI::XMLForm;
if ($cgi->param) {
print $cgi->header, $cgi->pre($cgi->escapeHTML($cgi->toXML));
}
else {
open(FILE, "test.xml") or die "Cant open: $!";
my @queries = (/a, /a/b*, /a/b/c*, /a/d);
print $cgi->header,
$cgi->pre($cgi->escapeHTML(
join "n", $cgi->readXML(*FILE, @queries)));
}
<<lessSYNOPSIS
use CGI::XMLForm;
my $cgi = new CGI::XMLForm;
if ($cgi->param) {
print $cgi->header, $cgi->pre($cgi->escapeHTML($cgi->toXML));
}
else {
open(FILE, "test.xml") or die "Cant open: $!";
my @queries = (/a, /a/b*, /a/b/c*, /a/d);
print $cgi->header,
$cgi->pre($cgi->escapeHTML(
join "n", $cgi->readXML(*FILE, @queries)));
}
Download (0.014MB)
Added: 2007-07-06 License: Perl Artistic License Price:
843 downloads
CGI::Test 0.104
CGI::Test is a CGI regression test framework. more>>
CGI::Test is a CGI regression test framework.
SYNOPSIS
# In some t/script.t regression test, for instance
use CGI::Test; # exports ok()
my $ct = CGI::Test->new(
-base_url => "http://some.server:1234/cgi-bin",
-cgi_dir => "/path/to/cgi-bin",
);
my $page = $ct->GET("http://some.server:1234/cgi-bin/script?arg=1");
ok 1, $page->content_type =~ m|text/htmlb|;
my $form = $page->forms->[0];
ok 2, $form->action eq "/cgi-bin/some_target";
my $menu = $form->menu_by_name("months");
ok 3, $menu->is_selected("January");
ok 4, !$menu->is_selected("March");
ok 5, $menu->multiple;
my $send = $form->submit_by_name("send_form");
ok 6, defined $send;
#
# Now interact with the CGI
#
$menu->select("March"); # "click" on the March label
my $answer = $send->press; # "click" on the send button
ok 7, $answer->is_ok; # and make sure we dont get an HTTP error
The CGI::Test module provides a CGI regression test framework which allows you to run your CGI programs offline, i.e. outside a web server, and interact with them programmatically, without the need to type data and click from a web browser.
If youre using the CGI module, you may be familiar with its offline testing mode. However, this mode is appropriate for simple things, and there is no support for conducting a full session with a stateful script. CGI::Test fills this gap by providing the necessary infrastructure to run CGI scripts, then parse the output to construct objects that can be queried, and on which you can interact to "play" with the scripts control widgets, finally submitting data back. And so on...
Note that the CGI scripts you can test with CGI::Test need not be implemented in Perl at all. As far as this framework is concerned, CGI scripts are executables that are run on a CGI-like environment and which produce an output.
To use the CGI::Test framework, you need to configure a CGI::Test object to act like a web server, by providing the URL base where CGI scripts lie on this pseudo-server, and which physical directory corresponds to that URL base.
From then on, you may issue GET and POST requests giving an URL, and the pseudo-server returns a CGI::Test::Page object representing the outcome of the request. This page may be an error, plain text, some binary data, or an HTML page (see CGI::Test::Page for details).
The latter (an HTML page) can contain one or more CGI forms (identified by tags), which are described by instances of CGI::Test::Form objects (see CGI::Test::Form for details).
Forms can be queried to see whether they contain a particular type of widget (menu, text area, button, etc...), of a particular name (thats the CGI parameter name). Once found, one may interact with a widget as the user would from a browser. Widgets are described by polymorphic objects which conform to the CGI::Test::Form::Widget type. The specific interaction that is offered depends on the dynamic type of the object (see CGI::Test::Form::Widget for details).
An interaction with a form ends by a submission of the form data to the server, and getting a reply back. This is done by pressing a submit button, and the press() routine returns a new page. Naturally, no server is contacted at all within the CGI::Test framework, and the CGI script is ran through a proper call to one of the GET/POST method on the CGI::Test object.
Finally, since CGI::Test is meant to be used from regression test scripts, it exports a single ok() routine which merely prints the messages expected by Test::Harness. This is the only functional routine in this module, all other accesses being made through a CGI::Test object.
<<lessSYNOPSIS
# In some t/script.t regression test, for instance
use CGI::Test; # exports ok()
my $ct = CGI::Test->new(
-base_url => "http://some.server:1234/cgi-bin",
-cgi_dir => "/path/to/cgi-bin",
);
my $page = $ct->GET("http://some.server:1234/cgi-bin/script?arg=1");
ok 1, $page->content_type =~ m|text/htmlb|;
my $form = $page->forms->[0];
ok 2, $form->action eq "/cgi-bin/some_target";
my $menu = $form->menu_by_name("months");
ok 3, $menu->is_selected("January");
ok 4, !$menu->is_selected("March");
ok 5, $menu->multiple;
my $send = $form->submit_by_name("send_form");
ok 6, defined $send;
#
# Now interact with the CGI
#
$menu->select("March"); # "click" on the March label
my $answer = $send->press; # "click" on the send button
ok 7, $answer->is_ok; # and make sure we dont get an HTTP error
The CGI::Test module provides a CGI regression test framework which allows you to run your CGI programs offline, i.e. outside a web server, and interact with them programmatically, without the need to type data and click from a web browser.
If youre using the CGI module, you may be familiar with its offline testing mode. However, this mode is appropriate for simple things, and there is no support for conducting a full session with a stateful script. CGI::Test fills this gap by providing the necessary infrastructure to run CGI scripts, then parse the output to construct objects that can be queried, and on which you can interact to "play" with the scripts control widgets, finally submitting data back. And so on...
Note that the CGI scripts you can test with CGI::Test need not be implemented in Perl at all. As far as this framework is concerned, CGI scripts are executables that are run on a CGI-like environment and which produce an output.
To use the CGI::Test framework, you need to configure a CGI::Test object to act like a web server, by providing the URL base where CGI scripts lie on this pseudo-server, and which physical directory corresponds to that URL base.
From then on, you may issue GET and POST requests giving an URL, and the pseudo-server returns a CGI::Test::Page object representing the outcome of the request. This page may be an error, plain text, some binary data, or an HTML page (see CGI::Test::Page for details).
The latter (an HTML page) can contain one or more CGI forms (identified by tags), which are described by instances of CGI::Test::Form objects (see CGI::Test::Form for details).
Forms can be queried to see whether they contain a particular type of widget (menu, text area, button, etc...), of a particular name (thats the CGI parameter name). Once found, one may interact with a widget as the user would from a browser. Widgets are described by polymorphic objects which conform to the CGI::Test::Form::Widget type. The specific interaction that is offered depends on the dynamic type of the object (see CGI::Test::Form::Widget for details).
An interaction with a form ends by a submission of the form data to the server, and getting a reply back. This is done by pressing a submit button, and the press() routine returns a new page. Naturally, no server is contacted at all within the CGI::Test framework, and the CGI script is ran through a proper call to one of the GET/POST method on the CGI::Test object.
Finally, since CGI::Test is meant to be used from regression test scripts, it exports a single ok() routine which merely prints the messages expected by Test::Harness. This is the only functional routine in this module, all other accesses being made through a CGI::Test object.
Download (0.050MB)
Added: 2007-06-12 License: Perl Artistic License Price:
864 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above cgi search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed