2 <title>Signup, self-service and reseller interfaces</title>
5 <h1>Signup, self-service and reseller interfaces</h1>
6 For security reasons, the self-service interface should run on a public
7 machine, not the backend Freeside server. On the public machine, install:
9 <li>A web server, such as <a href="http://www.apache.org">Apache</a> (<a href="http://www.modssl.org/">mod_ssl</a> or <a href="http://www.apache-ssl.org">Apache-SSL</a> highly recommended)
11 <li><a href="ftp://ftp.cs.hut.fi/pub/ssh/">SSH</a>
12 <li><a href="http://www.perl.com/CPAN/doc/relinfo/INSTALL.html">Perl</a>.
13 <li><a href="http://search.cpan.org/search?dist=Text-Template">Text::Template</a>
14 <li><a href="http://search.cpan.org/search?dist=Storable">Storable</a>
15 <li><a href="http://search.cpan.org/search?dist=Business-CreditCard">Business-CreditCard</a>
16 <li><a href="http://search.cpan.org/search?dist=HTTP-BrowserDetect">HTTP::BrowserDetect</a>
17 <li><a href="http://search.cpan.org/search?dist=HTML-Parser">HTML::Parser</a>
19 <li><a href="man/FS/SelfService.html">FS::SelfService</a> (copy the fs_selfservice/FS-SelfService directory to the external machine, then: perl Makefile.PL; make; make install)
23 <li>Set the <a href="../config/config.cgi#unclassified"><i>signup_server-default_agentnum</i></a> configuration value to a default <a href="../browse/agent.cgi">agent number</a>.
24 <li>Set the <a href="../config/config.cgi#unclassified"><i>signup_server-default_refnum</i></a> configuration value to a default <a href="../browse/part_referral.cgi">advertising source</a>.
25 <li>Set the <a href="../config/config.cgi#unclassified"><i>signup_server-payby</i></a> configuration value to the acceptable payment types for signups.
26 <li>Set the <a href="../config/config.cgi#unclassified"><i>signup_server-realtime</i></a> configuration value to run billing for signups immediately.
27 <li>Add the user `freeside' to the the external machine.
28 <li>Copy or symlink the <code>fs_selfservice/FS-SelfService/cgi/</code> directory into the web server's document space. Optionally, customize the .html templates. "Entry points" (useful places to link to) are:
30 <li>signup.cgi - Signup
31 <li>selfservice.cgi - Customer self-service
32 <li>agent.cgi - Reseller interface
33 <li>passwd.cgi - Simple password-changing interface
34 <li>promocode.html - Promotional code pre-signup
35 <li>regcode.html - Registration code pre-signup
36 <li>stateselect.html - State selection pre-signup
38 <li>Enable CGI execution for files with the `.cgi' extension. (with <a href="http://www.apache.org/docs/mod/mod_mime.html#addhandler">Apache</a>), for example: <pre>
39 #directory where selfservice .cgi scripts and .html templates are located
40 <Directory /var/www/selfservice>
41 AddHandler cgi-script .cgi
43 </Directory></pre>
44 <li>Create the /usr/local/freeside directory on the external machine (owned by the freeside user).
45 <li>touch /usr/local/freeside/selfservice_socket; chown freeside /usr/local/freeside/selfservice_socket; chmod 600 /usr/local/freeside/selfservice_socket
46 <li>Use <a href="http://www.apache.org/docs/suexec.html">suEXEC</a> or <a href="http://www.perl.com/CPAN-local/doc/manual/html/pod/perlsec.html#Security_Bugs">setuid</a> to run signup.cgi, selfservice.cgi, agent.cgi and passwd.cgi as the freeside user. <b>Do not run your public web server as the freeside user!</b>
47 <li>Append the identity.pub from the freeside user on your freeside machine to the authorized_keys file of the newly created freeside user on the external machine(s).
48 <li>Run an instance of <pre>freeside-selfservice-server <i>user</i> <i>machine</i></pre> on the Freeside machine for each external machine.
50 <li><i>user</i> is a user from the mapsecrets file.
51 <li><i>machine</i> is the name of the external machine.
58 <li>You can install the files in the <code>fs_selfservice/FS-SelfService/cgi/</code> directory multiple places in your web server's document space, and customize the .html templates differently for each. You can set the agentnum used for each signup by editing signup.html and including a hidden field with the agentnum:
60 <INPUT TYPE="hidden" NAME="agentnum" VALUE="3"></pre>
61 <li>When linking to signup.cgi, you can include a referring custnum in the URL as follows: <code>http://public.web.server/path/signup.cgi?ref=1542</code>
62 <li>If you create a <b>/usr/local/freeside/ieak.template</b> file on the external machine, it will be sent to IE users with MIME type <i>application/x-Internet-signup</i>. This file will be processed with <a href="http://search.cpan.org/doc/MJD/Text-Template-1.23/Template.pm">Text::Template</a> with the variables listed below available.
63 (an example file is included as <b>fs_selfservice/FS-SelfService/ieak.template</b>) See the section on <a href="http://www.microsoft.com/windows/ieak/techinfo/deploy/60/en/INS.HTM">internet settings files</a> in the <a href="http://www.microsoft.com/windows/ieak/techinfo/deploy/60/en/toc.asp">IEAK documentation</a> for more information.
64 <!-- <li>If you create a <b>/usr/local/freeside/success.html</b> file on the external machine, it will be used as the success HTML page. Although template substiutions are available, a regular HTML file will work fine here, unlike signup.html. An example file is included as <b>fs_signup/FS-SignupClient/cgi/success.html</b>-->
65 <li>Variable substitutions available in <b>ieak.template</b> and <b>success.html</b>:
67 <li>$ac - area code of selected POP
68 <li>$exch - exchange of selected POP
69 <li>$loc - local part of selected POP
72 <li>$email_name - first and last name
73 <li>$pkg - package name
75 <!-- <li>If you create a <b>/usr/local/freeside/signup.html</b> file on the external machine, it will be used as a template for the form HTML. This requires the template to be constructed appropriately; probably best to start with the example file included as <b>fs_signup/FS-SignupClient/cgi/signup.html</b>. -->
76 <!-- <li>If there are any entries in the <i>prepay_credit</i> table, a user can enter a string matching the <b>identifier</i> column to receive the credit specified in the <b>amount</b> column, and/or the time specified in the <b>seconds</b> column (for use with the <a href="session.html">session monitor</a>), after which that <b>identifier</b> is no longer valid. This can be used to implement pre-paid "calling card" type signups. The <i>bin/generate-prepay</i> script can be used to populate the <i>prepay_credit</i> table. -->