Difference between revisions of "CGI Scripting"

From HE FAQ
Jump to: navigation, search
(CGI Scripting)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{1 prefix}}
 
{{1 prefix}}
== Can I use CGI scripts? ==
 
 
Yes, if you have a "Starter Virtual Host" or above, you get your own personal CGI bin.
 
 
Please note that scripting is not enabled for "Simple Virtual Host" accounts.
 
 
If you need this feature, please email support@he.net to request an upgrade of account type.
 
 
 
== CGI Scripting ==
 
== CGI Scripting ==
  
Line 14: Line 6:
 
CGI scripts are a way of using programs to both generate web pages dynamically and process user input.
 
CGI scripts are a way of using programs to both generate web pages dynamically and process user input.
  
You will need to learn a little about how to program in a Unix environment either in C or a script language like Perl.
+
You can call a program written in C/C++ as a CGI script.  To compile the code on our servers, you will need to log onto the server using SSH and use the GCC compiler suite.
 
+
You can call a program written in C/C++ as a CGI script.  To compile the code on our servers, you will need to log onto the server using ssh and use the GCC compiler suite.
+
 
+
We provide the environment so that you can develop scripts and programs.  However, you are completely responsible for your development efforts.
+
 
+
In general, when you are modifying an example program, which is now failing but worked when you started, go back to the example exactly, copy it, and then modify it slowly until it stops working, then you will know what you did that caused the bug.
+
 
+
Here are a few things to check:
+
 
+
* Be sure to upload your scripts with your SFTP client in text/ASCII mode.  Unix uses LF (line feed) to as an end of line marker, Macs use a CR (carriage return) by itself, Windows/DOS uses both CR+LF.  Therefore, if you're not on a Unix system, it's important to ensure that your SFTP client makes the line ending change for you.  If you use a command line SFTP client, type "ASCII" before you send it. If you are using some form of GUI SFTP client, be sure that the ASCII transfer option is enabled.  Please remember to switch back to binary before you download any executables.
+
 
+
* Set your script to executable.  "chmod 700" will be the usual command permissions you'll want for a CGI script.
+
 
+
* If your script is an interpreted script, ensure the first line of the script invokes the proper interpreter. If your script is a Perl script the first line must be "#!/usr/bin/perl" or "#!/usr/local/bin/perl". If your script is a Bourne shell script you first line must be "#!/bin/sh". If your script is using another interpreted language check to make sure that the path name specified is valid for the interpreter you're using. Also, make sure that it is the first line in the script, and that the script was uploaded in ASCII mode.
+
 
+
* Try running your script from the command line.  This will provide a basic syntax check of your script, and possibly more, depending on how much of the code relies on parameters or environment variables set by the web server.  However, some scripts may produce run-time errors when invoked in this manner. If possible, modify your script to fail politely when run at the command line so that you can use this technique to debug it.  If you are a more sophisticated programmer, you can write a test script to set the necessary environment variables and invoke your main script.  If your script is Perl, running it from the command line will print out any syntax errors. If it works from the command line, but fails with an error 500 when you call it, it may be failing to open a file.  One common gotcha is the use of tilde (~) within a Perl script to reference your home directory.  Just use "/home/username/".
+
 
+
* Server side include scripts (the "exec cmd" variety) need to use a full path name to be able to correctly locate your file. For convenience server side includes are usually put in your personal cgi-bin directory. The path name will be something like "/home/username/cgi-bin/userscript".
+
 
+
* When in doubt: simplify.  Reduce the number of subroutines and the amount of code involved to verify that you can invoke your script at all. Then as you can verify that you are getting to a certain point, start adding code back in.
+
  
You need not ask us to enable CGI scripting for your account as we provide you with your own personal cgi-bin into which you can install and modify scripts at your leisure. You do, however, need to have a Starter Virtual Host or higher account.  
+
We provide the environment so that you can develop scripts and programs.  However, you are completely responsible for your development efforts. <b>You are also responsible for adequate security.</b>  If your scripts, including scripts written by someone else and installed by you, allow users to inject malicious content onto your site, or do anything else that violates our [[http://he.net/tos terms of service], we will terminate and remove the scripts at our discretion to ensure continued service for other customers on the server.
  
 
We do not offer any search scripts. You are welcome to install a CGI script to do this. There are several general search packages for Unix which could be invoked via a CGI script.
 
We do not offer any search scripts. You are welcome to install a CGI script to do this. There are several general search packages for Unix which could be invoked via a CGI script.
Line 42: Line 14:
 
We support user CGI scripting and you can install your own form processing CGI script. [http://nms-cgi.sourceforge.net/scripts.shtml NMS FormMail] is one of many such scripts we know works with our service for handling email form processing.
 
We support user CGI scripting and you can install your own form processing CGI script. [http://nms-cgi.sourceforge.net/scripts.shtml NMS FormMail] is one of many such scripts we know works with our service for handling email form processing.
  
We have MySQL available to all accounts. There are many different publicly available CGI front-ends available for it.  We provide [http://www.phpmyadmin.net phpMyAdmin] on version3 servers at http://yourdomain/phpmyadmin/ and https://servername.he.net/phpmyadmin/A MySQL database is included with all accounts.  Your database name is the same as your account name.  Your MySQL database is initialized when your account is created.
+
We have MySQL available to all accounts. Your database name is the same as your account name.  Your MySQL database is initialized when your account is created.  There are many different publicly available CGI front-ends available for it, such as [http://www.adminer.org/ Adminer].  If you use such a front-end, you should restrict access to it using [[Limiting_Access|htpasswd]] and put it in a directory that isn't the default installation directory to keep it hidden and secured.
  
 
See our MySQL FAQ or [http://mysql.he.net]MySQL Mirror Site for more information on using MySQL.
 
See our MySQL FAQ or [http://mysql.he.net]MySQL Mirror Site for more information on using MySQL.
  
Due to performance considerations, we do not offer support for ASP or JSP.
+
== What are CGI scripts and how do I use them? ==
  
You are welcome to install your own set of additional Perl modules. When you build modules, use the PREFIX option when generating Makefiles:
+
They are a way of using programs to both generate web pages dynamically and process user input.
  
<code>perl Makefile.PL PREFIX=/home/mydir/perl</code>
+
You need to learn a little about how to program in a Unix environment either in C or a script language like Perl.
  
then either set the PERL5LIB environment variable before you run scripts that use the modules/libraries (see the perlrun manpage) or say:
+
== Can I use CGI scripts? ==
  
<code>use lib '/home/mydir/perl';</code>
+
Yes, all new accounts can use CGI scripts.
  
== What is a good source of CGI scripts such as Shopping Carts? ==
+
== Do I need to have you activate something so that I can run cgi-bin scripts on my account? ==
  
Two good places to download CGI scripts are:
+
No. You already have the complete ability to install and execute your own scripts.
 
+
http://www.cgi-resources.com
+
 
+
http://www.scriptsearch.com
+
 
+
== What version of Perl are you running? ==
+
 
+
We currently run Perl 5.004 and 5.6.1. We update it frequently, but anything that works under Perl 5.004 or 5.6.1 should work under any other version of Perl 5.
+
 
+
== What is a wrapper CGI script? Does it create any limitations on scripts possibilities? ==
+
 
+
It lets us give you the ability to run your own CGI scripts, without compromising our security. There are few, if any limitations imposed by such wrappers (i.e. most of your scripts will work).
+
 
+
For working examples look at:
+
 
+
http://www.he.net/faq/tutorials
+
  
 
== Will I have access to my own CGI bin directory to run Perl scripts? ==
 
== Will I have access to my own CGI bin directory to run Perl scripts? ==
  
 
Yes.
 
Yes.
 
== What are CGI scripts and how do I use them? ==
 
 
They are a way of using programs to both generate web pages dynamically and process user input.
 
 
You need to learn a little about how to program in a Unix environment either in C or a script language like Perl.
 
 
== Could you let me have a sample of (insert programming task here) for me to look at? ==
 
 
We recommend you search for a publicly available example.
 
 
== I would like to call a program written in C from a CGI script. What is the procedure for compiling the code on your machine? ==
 
 
Log onto the server using ssh and use the compiler GCC (GNU project C and C++ Compiler v2.4).
 
 
A minor note, just so that you understand the conditions under which we support development: We provide the environment so that you can develop script and programs, you are completely responsible for your development efforts.
 
  
 
== I'm having problems with my CGI script. What should I do? ==
 
== I'm having problems with my CGI script. What should I do? ==
Line 102: Line 42:
 
Here are a few things to check:
 
Here are a few things to check:
  
* Be sure to upload your scripts with your FTP client in text mode. Unix uses LF (linefeeds) to separate lines. If you are using DOS it is important the the CR LF to LF translation be done. If you are using the Mac it is important the the CR to LF translation be done. If you use a Unix-style FTP client, type "ASCII" before you send it. If you are using WS_FTP, be sure to click the ASCII radio button (and don't forget to switch back to binary before you download any executables...).
+
* Be sure to upload your scripts with your SFTP client in text/ASCII mode. Unix and Mac OS X use LF (line feed) to as an end of line marker, Macintoshes (before OSX) use a CR (carriage return) by itself, and Windows/DOS uses both CR+LF. Therefore, if you're not on a Unix, Linux, or OS X system, it's important to ensure that your SFTP client makes the line ending change for you. If you use a command line SFTP client, type "ASCII" before you send it. If you are using some form of GUI SFTP client, be sure that the ASCII transfer option is enabled.  Please remember to switch back to binary before you download any executables.
  
* Be sure to set your script to executable. If it is a CGI script use "chmod 700". If it is a script run as a server side include use "chmod 755".
+
* Be sure to set your script to executable. You can do that using the "chmod 700" command when logged in via SSH, or you can set the executable bit on using your SFTP client.
  
* If your script is not a binary executable, check the first line. If your script is a Perl script the first line must be "#!/usr/bin/perl" or "#!/usr/local/bin/perl". If your script is a Bourne shell script you first line must be "#!/bin/sh". If your script is using another shell language check to make sure that the path name specified is valid. Also, make sure an extra blank line didn't get added to the top...
+
* If your script is not a binary executable, check the first line. If your script is a Perl script the first line must be "#!/usr/bin/env perl". If your script is a Bourne shell script you first line must be "#!/usr/bin/env bash". If your script is using another shell language check to make sure that the path name specified is valid. Also, make sure that it is the first line in the script (no blank lines or comments), and that the script was uploaded in ASCII mode.
  
* Try to run your script from the command line. This will completely test your function if it does not rely on parameters or environment variables set by the HTTPD. However, many scripts will produce runtime errors when invoked in this manner. If possible modify your script to fail politely when run at the command line so that you can use this technique to check it. Or if your are a more sophisticated programmer write a test script which sets the necessary environment variables and invokes your main script. Even if your script fails when run at the command line if it is a Perl script running it will check it for syntax errors. If it works from the command line, but fails with an error 500 when you call it, it probably is failing to open a file. Are you trying to reference your home directory with a tilde (~) in Perl? That doesn't work...
+
* Try running your script from the command line. This will provide a basic syntax check of your script, and possibly more, depending on how much of the code relies on parameters or environment variables set by the web server. However, some scripts may produce run-time errors when invoked in this manner. If possible, modify your script to fail politely when run at the command line so that you can use this technique to debug it. If you are a more sophisticated programmer, you can write a test script to set the necessary environment variables and invoke your main script. If your script is Perl, running it from the command line will print out any syntax errors. If it works from the command line, but fails with an error 500 when you call it, it may be failing to open a file. One common gotcha is the use of tilde (~) within a Perl script to reference your home directory. Just use "/home/username/".
  
* Check the URL or path name you are using. CGI scripts invoked as HREFs should use URLs. If your account was on thor.he.net, System CGI scripts have URLs like:
+
* Server side include scripts (the "exec cmd" variety) need to use a full path name to be able to correctly locate your file. For convenience server side includes are usually put in your personal cgi-bin directory. The path name will be something like "/home/username/cgi-bin/userscript".
  
<pre>http://thor.he.net/cgi-bin/systemscript.cgi</pre>
+
* When in doubt: simplify. Reduce the number of subroutines and the amount of code involved to verify that you can invoke your script at all. Then as you can verify that you are getting to a certain point, start adding code back in.
  
User CGI scripts are invoked using slightly different URLs. For example, if your account was rflyer on the server thor.he.net, the URL to invoke your script would be:
+
== What is a wrapper CGI script? Does it create any limitations on scripts possibilities? ==
  
<pre>http://thor.he.net/cgi-bin/suid/~rflyer/userscript.cgi</pre>
+
It lets us give you the ability to run your own CGI scripts, without compromising our security. There are few, if any limitations imposed by such wrappers (i.e. most of your scripts will work).
  
If suEXEC is enabled in your account and you have a domain name, you can invoke your script directly. If the domain name for your account was squishypenguin.com, you would invoke your script with the URL:
+
== Could you let me have a sample of (insert programming task here) for me to look at? ==
  
<pre>http://www.squishypenguin.com/cgi-bin/userscript.cgi</pre>
+
We recommend you search for a publicly available example or hire a web developer experienced with that task.
  
If you have an IP Address Only account, you can substitute your IP address for the domain name.
+
== I would like to call a program written in C from a CGI script. What is the procedure for compiling the code on your machine? ==
  
Please note that suEXEC will only work with a domain name or IP address.
+
Log onto the server using ssh and use the compiler GCC (GNU project C and C++ Compiler v2.4).
  
Make sure to substitute the correct script name, server and account name or domain name in the URL and to be sure to put your script in the directory at:  
+
A minor note, just so that you understand the conditions under which we support development: We provide the environment so that you can develop script and programs, you are completely responsible for your development efforts.
 
+
<pre>/home/username/cgi-bin</pre>
+
 
+
Server side include scripts (the "exec cmd" variety) need to use a full path name to be able to correctly locate your file. For convenience server side includes are usually put in your personal cgi-bin directory. The path name will be something like "/home/username/cgi-bin/userscript".
+
 
+
* When in doubt simplify. Reduce the number of subroutines and the amount of code involved to verify that you can invoke your script at all. Then as you can prove that you are getting to a certain point start adding code back in.  
+
  
 
== I get the following error message, even trying your demo CGI: "suid attempt aborted! Reason: execve failed - Permission denied" ==
 
== I get the following error message, even trying your demo CGI: "suid attempt aborted! Reason: execve failed - Permission denied" ==
  
You need to make your script executable. Telnet to your account, cd to he cgi-bin directory, and type:
+
You need to make your script executable. If you're writing your script locally and uploading it via an SFTP client, you should be able to right-click on the file after it's been uploaded, choose "permissions," and change Owner Permissions to Read, Write, and Execute. If you're editing your script via SSH, cd to he cgi-bin directory, and type:
  
 
<pre>chmod 700 yourscript</pre>
 
<pre>chmod 700 yourscript</pre>
  
 
This will correctly set the permissions for your script.
 
This will correctly set the permissions for your script.
 
== Do I need to have you activate something so that I can run cgi-bin scripts on my account? ==
 
 
No. You already have the complete ability to install and execute your own scripts.
 
 
== Do I need to ask for permission to run a CGI script? ==
 
 
No need to ask for permission, we provide you with your own personal cgi-bin into which you can install and modify scripts at your leisure. All we ask is that you follow the guidelines on the user scripting page that can be reached from:
 
 
http://www.he.net/faq/tutorials
 
 
The key one being respect for server resources.
 
  
 
== Do you offer any kind of search engine so that our customers can perform search amongst a database? ==
 
== Do you offer any kind of search engine so that our customers can perform search amongst a database? ==
Line 168: Line 90:
 
== Do you have support for mail forms? ==
 
== Do you have support for mail forms? ==
  
You can check our tutorials section for [[Forms|NMS FormMail]. Other form scripts work as well, though we recommend NMS.
+
You can check our [[Forms]] tutorial. Other form scripts work as well, though we recommend NMS.
 
+
== Is there a reason the format of my subject line is not working as an HREF? It brings up the web clients mail client, and allows entry of the message. But when 'Send' is clicked, it comes back with an error locating the server 'mail'. ==
+
 
+
Yes. You need to configure your Web clients SMTP server preference. We will assume you are using Netscape. Select the item Preferences from the Options menu. That should bring up the Preferences window. Select Mail and News from the pop up menu item at the top of the window. Enter your pertinent information where it says mail. Be sure to enter a valid SMTP server, if you don't know what the name of the mail server your current provider has running you can enter mailout.he.net. Click Ok. Now you can send mail using Netscape.
+
 
+
The second cause for your problem, if you have already done the above, is that your providers mail server went down.
+
 
+
== I was trying to set up an imagemap last night and noticed you have no imagemap.conf in /httpd/conf/. ==
+
 
+
We use a version of imagemap that eliminates the need for users to change a central configuration file. Every user can add their own imagemaps at their discretion without intervention from us. For more information on how to do imagemaps on our server see:
+
 
+
http://www.he.net/faq/tutorials
+
 
+
== My previous ISP required me to email the imagemap co-ords for him to place on his server somewhere. What happens at your site? What do I do with the hot-spot co-ords? ==
+
 
+
You have complete and total control over your imagemap files. Read the information at:
+
  
http://www.he.net/faq/tutorials
+
== I would like to set up an image map. What is the best way to do so? ==
  
with regards to imagemaps.
+
You don't need CGI scripting to create an image map. It is much simpler to use HTML. Take a look here for an example: http://www.w3schools.com/TAGS/tag_map.asp
  
 
== Can you run a WAIS gateway script on your server? ==
 
== Can you run a WAIS gateway script on your server? ==
Line 196: Line 102:
 
== We would like to be able to seach a database via a form. Do you offer such a capability? ==
 
== We would like to be able to seach a database via a form. Do you offer such a capability? ==
  
We have mySQL, an SQL type database installed. There are many different publically available CGI frontends available for it. A mySQL database is included with all accounts. Your database name is the same as your account name. Your mySQL database should be initialized when your account is created, so that you may immediately begin using it.
+
We have mySQL, an SQL type database installed. There are many different publicly available CGI frontends available for it. A mySQL database is included with all accounts. Your database name is the same as your account name. Your mySQL database should be initialized when your account is created, so that you may immediately begin using it.
  
 
See our [[mySQL|mySQL FAQ]] or [http://mysql.he.net/ mySQL Mirror Site] for more information on using mySQL.
 
See our [[mySQL|mySQL FAQ]] or [http://mysql.he.net/ mySQL Mirror Site] for more information on using mySQL.
Line 204: Line 110:
 
Due to economic and performance considerations, we do not offer support for ASP.
 
Due to economic and performance considerations, we do not offer support for ASP.
  
== Is LWP installed? ==
+
== Is LWP installed?  What about other modules?==
  
 
You are welcome to install your own set of additional modules.
 
You are welcome to install your own set of additional modules.
Line 210: Line 116:
 
When you build modules, use the PREFIX option when generating Makefiles:
 
When you build modules, use the PREFIX option when generating Makefiles:
  
<pre>perl Makefile.PL PREFIX=/home/mydir/perl</pre>
+
<pre>perl Makefile.PL PREFIX=/home/username/perl</pre>
  
 
then either set the PERL5LIB environment variable before you run scripts that use the modules/libraries (see the perlrun manpage) or say:
 
then either set the PERL5LIB environment variable before you run scripts that use the modules/libraries (see the perlrun manpage) or say:
  
<pre>use lib '/home/mydir/perl';</pre>
+
<pre>use lib '/home/username/perl';</pre>
  
 
== Is it possible to invoke a script without using suid? ==
 
== Is it possible to invoke a script without using suid? ==

Latest revision as of 13:03, 19 October 2012

This information only pertains to Hurricane Electric's Shared Web Hosting package. There may be different information in our other categories.

CGI Scripting

We currently run Perl5 for CGI scripting. Compiled C/C++ CGI executables are allowed, along with other available language interpreters (PHP, for example).

CGI scripts are a way of using programs to both generate web pages dynamically and process user input.

You can call a program written in C/C++ as a CGI script. To compile the code on our servers, you will need to log onto the server using SSH and use the GCC compiler suite.

We provide the environment so that you can develop scripts and programs. However, you are completely responsible for your development efforts. You are also responsible for adequate security. If your scripts, including scripts written by someone else and installed by you, allow users to inject malicious content onto your site, or do anything else that violates our [terms of service, we will terminate and remove the scripts at our discretion to ensure continued service for other customers on the server.

We do not offer any search scripts. You are welcome to install a CGI script to do this. There are several general search packages for Unix which could be invoked via a CGI script.

We support user CGI scripting and you can install your own form processing CGI script. NMS FormMail is one of many such scripts we know works with our service for handling email form processing.

We have MySQL available to all accounts. Your database name is the same as your account name. Your MySQL database is initialized when your account is created. There are many different publicly available CGI front-ends available for it, such as Adminer. If you use such a front-end, you should restrict access to it using htpasswd and put it in a directory that isn't the default installation directory to keep it hidden and secured.

See our MySQL FAQ or [1]MySQL Mirror Site for more information on using MySQL.

What are CGI scripts and how do I use them?

They are a way of using programs to both generate web pages dynamically and process user input.

You need to learn a little about how to program in a Unix environment either in C or a script language like Perl.

Can I use CGI scripts?

Yes, all new accounts can use CGI scripts.

Do I need to have you activate something so that I can run cgi-bin scripts on my account?

No. You already have the complete ability to install and execute your own scripts.

Will I have access to my own CGI bin directory to run Perl scripts?

Yes.

I'm having problems with my CGI script. What should I do?

In general, when you are working on modifying an example program, which is now failing but worked when you started, go back to the example exactly, copy it, and then modify it slowly until it stops working, then you will know what you did that caused the bug.

Here are a few things to check:

  • Be sure to upload your scripts with your SFTP client in text/ASCII mode. Unix and Mac OS X use LF (line feed) to as an end of line marker, Macintoshes (before OSX) use a CR (carriage return) by itself, and Windows/DOS uses both CR+LF. Therefore, if you're not on a Unix, Linux, or OS X system, it's important to ensure that your SFTP client makes the line ending change for you. If you use a command line SFTP client, type "ASCII" before you send it. If you are using some form of GUI SFTP client, be sure that the ASCII transfer option is enabled. Please remember to switch back to binary before you download any executables.
  • Be sure to set your script to executable. You can do that using the "chmod 700" command when logged in via SSH, or you can set the executable bit on using your SFTP client.
  • If your script is not a binary executable, check the first line. If your script is a Perl script the first line must be "#!/usr/bin/env perl". If your script is a Bourne shell script you first line must be "#!/usr/bin/env bash". If your script is using another shell language check to make sure that the path name specified is valid. Also, make sure that it is the first line in the script (no blank lines or comments), and that the script was uploaded in ASCII mode.
  • Try running your script from the command line. This will provide a basic syntax check of your script, and possibly more, depending on how much of the code relies on parameters or environment variables set by the web server. However, some scripts may produce run-time errors when invoked in this manner. If possible, modify your script to fail politely when run at the command line so that you can use this technique to debug it. If you are a more sophisticated programmer, you can write a test script to set the necessary environment variables and invoke your main script. If your script is Perl, running it from the command line will print out any syntax errors. If it works from the command line, but fails with an error 500 when you call it, it may be failing to open a file. One common gotcha is the use of tilde (~) within a Perl script to reference your home directory. Just use "/home/username/".
  • Server side include scripts (the "exec cmd" variety) need to use a full path name to be able to correctly locate your file. For convenience server side includes are usually put in your personal cgi-bin directory. The path name will be something like "/home/username/cgi-bin/userscript".
  • When in doubt: simplify. Reduce the number of subroutines and the amount of code involved to verify that you can invoke your script at all. Then as you can verify that you are getting to a certain point, start adding code back in.

What is a wrapper CGI script? Does it create any limitations on scripts possibilities?

It lets us give you the ability to run your own CGI scripts, without compromising our security. There are few, if any limitations imposed by such wrappers (i.e. most of your scripts will work).

Could you let me have a sample of (insert programming task here) for me to look at?

We recommend you search for a publicly available example or hire a web developer experienced with that task.

I would like to call a program written in C from a CGI script. What is the procedure for compiling the code on your machine?

Log onto the server using ssh and use the compiler GCC (GNU project C and C++ Compiler v2.4).

A minor note, just so that you understand the conditions under which we support development: We provide the environment so that you can develop script and programs, you are completely responsible for your development efforts.

I get the following error message, even trying your demo CGI: "suid attempt aborted! Reason: execve failed - Permission denied"

You need to make your script executable. If you're writing your script locally and uploading it via an SFTP client, you should be able to right-click on the file after it's been uploaded, choose "permissions," and change Owner Permissions to Read, Write, and Execute. If you're editing your script via SSH, cd to he cgi-bin directory, and type:

chmod 700 yourscript

This will correctly set the permissions for your script.

Do you offer any kind of search engine so that our customers can perform search amongst a database?

You are welcome to install a CGI script to do this. There are several general database packages for Unix which could be invoked via a CGI script.

Can we install our own development tools?

Yes, in your user directory.

What type of forms do you currently have available?

You can create any kind of form you want. We support user CGI scripting and you can install your own form processing CGI script.

Do you have support for mail forms?

You can check our Forms tutorial. Other form scripts work as well, though we recommend NMS.

I would like to set up an image map. What is the best way to do so?

You don't need CGI scripting to create an image map. It is much simpler to use HTML. Take a look here for an example: http://www.w3schools.com/TAGS/tag_map.asp

Can you run a WAIS gateway script on your server?

Yes you could, provided you obtained the script and installed it yourself.

We would like to be able to seach a database via a form. Do you offer such a capability?

We have mySQL, an SQL type database installed. There are many different publicly available CGI frontends available for it. A mySQL database is included with all accounts. Your database name is the same as your account name. Your mySQL database should be initialized when your account is created, so that you may immediately begin using it.

See our mySQL FAQ or mySQL Mirror Site for more information on using mySQL.

Can I use Active Server Pages on Hurricane Electric?

Due to economic and performance considerations, we do not offer support for ASP.

Is LWP installed? What about other modules?

You are welcome to install your own set of additional modules.

When you build modules, use the PREFIX option when generating Makefiles:

perl Makefile.PL PREFIX=/home/username/perl

then either set the PERL5LIB environment variable before you run scripts that use the modules/libraries (see the perlrun manpage) or say:

use lib '/home/username/perl';

Is it possible to invoke a script without using suid?

Yes, the suEXEC feature is on by default for newer accounts. You can see if suEXEC is enabled for your account by logging into the billing database at:

https://admin.he.net

Then click on Edit Virtual Host Options. Then choose the check box next to suEXEC and click on Change.

Once suEXEC is enabled in your account, and let's say the domain name for your account was squishypenguin.com, you would invoke your script with the URL:

http://www.squishypenguin.com/cgi-bin/userscript.cgi