10 More Discussions You Might Find Interesting
1. Programming
Hi,
I am having two individual scripts
Script 1): CGI script - is a simple script which trigger bash script
Script 2): Bash script - is a script which execute which collects file system utilization information from all the Unix servers
If I am executing CGI script manually from command... (2 Replies)
Discussion started by: Naveen.6025
2 Replies
2. Shell Programming and Scripting
Hi Everyone,
I started looking at the possibility of making some of our bash scripts available through a web server using CGI and the simple ones works just fine. Now I need to execute remote commands using ssh but can't really get it to work. I got private keys all sorted. Must be ssh... (1 Reply)
Discussion started by: arizah
1 Replies
3. Shell Programming and Scripting
greetings,
pretty new to php and i think i might be missing some fundamental limitation of isset. i have two php scripts below that are executed by crond, one using --host X and one that does not. and below that are three different attempts at generating a command line that will be executed. the... (8 Replies)
Discussion started by: crimso
8 Replies
4. Web Development
Hello again!
Three posts in this forum now, as I am trying to understand how CGI is running and the interaction of the input and output with the server/browser. Very confused with them, especially with the param() function that I was trying to figure out how the parameters of it were passed in... (0 Replies)
Discussion started by: yifangt
0 Replies
5. Shell Programming and Scripting
Hi,
I have to write a program to compute the checksums of files
./script.sh
I wrote the program using bash and it took me forever since I am a beginner but it works very well.
I'm getting so close to the deadline and I realised today that actually I have to use normal Bourne shell... (3 Replies)
Discussion started by: pgarg1989
3 Replies
6. Web Development
Hi,
I am trying to create a web interface with Perl CGI with 2 pages. The content of these pages is dependent on the user accessing it. Thus, I need some kind of authentication to identify WHO is logging in but I DO NOT WANT to be restricting the pages to a few.
What is the best way to prompt... (8 Replies)
Discussion started by: garric
8 Replies
7. UNIX for Dummies Questions & Answers
Hi, is it possible to create a CGI folder somewhere on the server and allow all domains on that server be able to access the scripts? I tried a ScriptAlias addition in httpd.conf but still no luck. Would greatly appreciate any tips! Thanks.
Linux version 2.4.20-021stab028.3.777-enterprise
Plesk... (5 Replies)
Discussion started by: karlsworld
5 Replies
8. Shell Programming and Scripting
Hi, is it possible to create a CGI folder somewhere on the server and allow all domains on that server be able to access the scripts? I tried a ScriptAlias addition in httpd.conf but still no luck. Would greatly appreciate any tips! Thanks.
Linux version 2.4.20-021stab028.3.777-enterprise
Plesk... (1 Reply)
Discussion started by: karlsworld
1 Replies
9. Programming
I need to create a webserver to run Perl CGI Scripts. Anyone have any ideas or good links?
Yes I know there are lovely programs out there, but I need to build one in C.
Thanks! (1 Reply)
Discussion started by: cb.mark
1 Replies
10. UNIX for Dummies Questions & Answers
Hi everyone, I need help with writing a script that does the following:
a client/user goes onto my website, hits a link, it would pop up either
1. user name and password
2. password and directory name
and then after they enter the required info, it would take them to their own folder. So... (6 Replies)
Discussion started by: crazycelicagts
6 Replies
SSI(3pm) User Contributed Perl Documentation SSI(3pm)
NAME
CGI::SSI - Use SSI from CGI scripts
SYNOPSIS
# autotie STDOUT or any other open filehandle
use CGI::SSI (autotie => 'STDOUT');
print $shtml; # browser sees resulting HTML
# or tie it yourself to any open filehandle
use CGI::SSI;
open(FILE,'+>'.$html_file) or die $!;
$ssi = tie(*FILE, 'CGI::SSI', filehandle => 'FILE');
print FILE $shtml; # HTML arrives in the file
# or use the object-oriented interface
use CGI::SSI;
$ssi = CGI::SSI->new();
$ssi->if('"$varname" =~ /^foo/');
$html .= $ssi->process($shtml);
$ssi->else();
$html .= $ssi->include(file => $filename);
$ssi->endif();
print $ssi->exec(cgi => $url);
print $ssi->flastmod(file => $filename);
#
# or roll your own favorite flavor of SSI
#
package CGI::SSI::MySSI;
use CGI::SSI;
@CGI::SSI::MySSI::ISA = qw(CGI::SSI);
sub include {
my($self,$type,$file_or_url) = @_;
# my idea of include goes something like this...
return $html;
}
1;
__END__
#
# or use .htaccess to include all files in a dir
#
# in .htaccess
Action cgi-ssi /cgi-bin/ssi/process.cgi
<FilesMatch ".shtml">
SetHandler cgi-ssi
</FilesMatch>
# in /cgi-bin/ssi/process.cgi
#!/usr/local/bin/perl
use CGI::SSI;
CGI::SSI->handler();
__END__
DESCRIPTION
CGI::SSI is meant to be used as an easy way to filter shtml through CGI scripts in a loose imitation of Apache's mod_include. If you're
using Apache, you may want to use either mod_include or the Apache::SSI module instead of CGI::SSI. Limitations in a CGI script's knowledge
of how the server behaves make some SSI directives impossible to imitate from a CGI script.
Most of the time, you'll simply want to filter shtml through STDOUT or some other open filehandle. "autotie" is available for STDOUT, but
in general, you'll want to tie other filehandles yourself:
$ssi = tie(*FH, 'CGI::SSI', filehandle => 'FH');
print FH $shtml;
Note that you'll need to pass the name of the filehandle to "tie()" as a named parameter. Other named parameters are possible, as detailed
below. These parameters are the same as those passed to the "new()" method. However, "new()" will not tie a filehandle for you.
CGI::SSI has it's own flavor of SSI. Test expressions are Perlish. You may create and use multiple CGI::SSI objects; they will not step on
each others' variables.
Object-Oriented methods use the same general format so as to imitate SSI directives:
<!--#include virtual="/foo/bar.footer" -->
would be
$ssi->include(virtual => '/foo/bar.footer');
likewise,
<!--#exec cgi="/cgi-bin/foo.cgi" -->
would be
$ssi->exec(cgi => '/cgi-bin/foo.cgi');
Usually, if there's no chance for ambiguity, the first argument may be left out:
<!--#echo var="var_name" -->
could be either
$ssi->echo(var => 'var_name');
or
$ssi->echo('var_name');
Likewise,
$ssi->set(var => $varname, value => $value)
is the same as
$ssi->set($varname => $value)
$ssi->new([%args])
Creates a new CGI::SSI object. The following are valid (optional) arguments:
DOCUMENT_URI => $doc_uri,
DOCUMENT_NAME => $doc_name,
DOCUMENT_ROOT => $doc_root,
errmsg => $oops,
sizefmt => ('bytes' || 'abbrev'),
timefmt => $time_fmt,
MAX_RECURSIONS => $default_100, # when to stop infinite loops w/ error msg
COOKIE_JAR => HTTP::Cookies->new,
$ssi->config($type, $arg)
$type is either 'sizefmt', 'timefmt', or 'errmsg'. $arg is similar to those of the SSI "spec", referenced below.
$ssi->set($varname => $value)
Sets variables internal to the CGI::SSI object. (Not to be confused with the normal variables your script uses!) These variables may be
used in test expressions, and retreived using $ssi->echo($varname). These variables also will not be available in external, included
resources.
$ssi->echo($varname)
Returns the value of the variable named $varname. Such variables may be set manually using the "set()" method. There are also several
built-in variables:
DOCUMENT_URI - the URI of this document
DOCUMENT_NAME - the name of the current document
DATE_GMT - the same as 'gmtime'
DATE_LOCAL - the same as 'localtime'
LAST_MODIFIED - the last time this script was modified
$ssi->exec($type, $arg)
$type is either 'cmd' or 'cgi'. $arg is similar to the SSI "spec" (see below).
$ssi->include($type, $arg)
Similar to "exec", but "virtual" and "file" are the two valid types. SSI variables will not be available outside of your CGI::SSI
object, regardless of whether the virtual resource is on the local system or a remote system.
$ssi->flastmod($type, $filename)
Similar to "include".
$ssi->fsize($type, $filename)
Same as "flastmod".
$ssi->printenv
Returns the environment similar to Apache's mod_include.
$ssi->cookie_jar([$jar])
Returns the currently-used HTTP::Cookies object. You may optionally pass in a new HTTP::Cookies object. The jar is used for web
requests in exec cgi and include virtual directives.
FLOW-CONTROL METHODS
The following methods may be used to test expressions. During a "block" where the test $expr is false, nothing will be returned (or
printed, if tied).
$ssi->if($expr)
The expr can be anything Perl, but care should be taken. This causes problems:
$ssi->set(varname => "foo");
<!--#if expr="'$varname' =~ /^foo$/" -->ok<!--#endif -->
The $varname is expanded as you would expect. (We escape it so as to use the $varname within the CGI::SSI object, instead of that
within our progam.) But the $/ inside the regex is also expanded. This is fixed by escaping the "$":
<!--#if expr="'$varname' =~ /^value$/" -->ok<!--#endif -->
The expressions used in if and elif tags/calls are tricky due to the number of escapes required. In some cases, you'll need to write
"\\" to mean "".
$ssi->elif($expr)
$ssi->else
$ssi->endif
SEE ALSO
"Apache::SSI" and the SSI "spec" at http://www.apache.org/docs/mod/mod_include.html
AUTHOR
(c) 2000-2005 James Tolley <james@bitperfect.com> All Rights Reserved.
This is free software. You may copy and/or modify it under the same terms as perl itself.
CREDITS
Many Thanks to Corey Wilson and Fitz Elliot for bug reports and fixes.
perl v5.12.4 2007-08-08 SSI(3pm)