summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorivan <ivan>2002-03-20 21:31:49 +0000
committerivan <ivan>2002-03-20 21:31:49 +0000
commitf1038a648b3d53db925b23519e7cd2a30c6837ed (patch)
treecda6c30496db688ed3fd702d111a76bc2c6d2e82 /httemplate
parent74f795a943560dfc03f46642536386ce36355bb4 (diff)
new export! infostreet and sqlradius provisioning switched over
(Bug #299 - doesn't close it, but all the groundwork is done) also removes non-transactional ICRADIUS export from svc_acct.export (closes: Bug#347)
Diffstat (limited to 'httemplate')
-rwxr-xr-xhttemplate/docs/export.html1
-rw-r--r--httemplate/docs/upgrade8.html6
-rw-r--r--httemplate/edit/part_export.cgi130
-rw-r--r--httemplate/edit/process/part_export.cgi3
4 files changed, 125 insertions, 15 deletions
diff --git a/httemplate/docs/export.html b/httemplate/docs/export.html
index c7f1b4c9e..71e3acf1f 100755
--- a/httemplate/docs/export.html
+++ b/httemplate/docs/export.html
@@ -3,6 +3,7 @@
</head>
<body>
<h1>File exporting</h1>
+ <font size="+2">NOTE: This file is OUT OF DATE with the landing of the new export code and is only here for reference. DO NOT follow these instructions. Instead use the new exports in the web interface.</font>
<ul>
<li>bin/svc_acct.export will create UNIX <b>passwd</b>, <b>shadow</b> and <b>master.passwd</b> files, ERPCD <b>acp_passwd</b> and <b>acp_dialup</b> files and a RADIUS <b>users</b> file in the <b>/usr/local/etc/freeside/export.<i>datasrc</i></b> directory. Some RADIUS servers (such as <a href="http://www.open.com.au/radiator/">Radiator</a>, <a href="ftp://ftp.cheapnet.net/pub/icradius/">ICRADIUS</a> and <a href="http://www.freeradius.org/">FreeRADIUS</a>) will authenticate directly out of an SQL database. In these cases,
it is reccommended that you replicate (<a href="http://www.mysql.com/documentation/mysql/bychapter/manual_MySQL_Database_Administration.html#Replication">Replication in MySQL</a>) the data to an external RADIUS machine or point icradius_secrets to the external machine rather than running the RADIUS server on your Freeside machine. Using the appropriate <a href="../config/config-view.cgi">configuration settings</a>, you can export these files to your remote machines unattended:
diff --git a/httemplate/docs/upgrade8.html b/httemplate/docs/upgrade8.html
index 25e766b1e..e52b69ad3 100644
--- a/httemplate/docs/upgrade8.html
+++ b/httemplate/docs/upgrade8.html
@@ -319,5 +319,11 @@ ALTER TABLE cust_refund DROP COLUMN crednum;
<b>freeside-expiration-alerter</b> to be run daily by cron or similar
facility. The message it sends can be configured from the
<u>Configuration</u> choice of the main menu as <u>alerter_template</u>.
+ <li>Export has been rewritten. If you were using the icradiusmachines,
+ icradius_mysqldest, icradius_mysqlsource, or icradius_secrets files, add
+ an appropriate "sqlradius" export to all relevant Service Definitions
+ instead. Use <a href="http://www.mysql.com/documentation/mysql/bychapter/manual_MySQL_Database_Administration.html#Replication">MySQL replication</a> or
+ point the "sqlradius" export directly at your external ICRADIUS or FreeRADIUS
+ database (or through an SSL-necrypting proxy...)
</ul>
</body>
diff --git a/httemplate/edit/part_export.cgi b/httemplate/edit/part_export.cgi
index ffce0438f..a44bd39d5 100644
--- a/httemplate/edit/part_export.cgi
+++ b/httemplate/edit/part_export.cgi
@@ -22,7 +22,7 @@ if ( $cgi->param('error') ) {
} );
}
-warn "***$query***";
+#warn "***$query***";
if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
$action = 'Add';
my $old_part_export = qsearchs('part_export', { 'exportnum' => $1 } );
@@ -37,7 +37,112 @@ if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {
}
$action ||= $part_export->exportnum ? 'Edit' : 'Add';
-my @types = qw(shell bsdshell textradius sqlradius cp);
+my %exports = (
+ 'svc_acct' => {
+ 'sysvshell' => {
+ 'desc' =>
+ 'Batch export of /etc/passwd and /etc/shadow files (Linux/SysV)',
+ 'options' => {},
+ },
+ 'bsdshell' => {
+ 'desc' =>
+ 'Batch export of /etc/passwd and /etc/master.passwd files (BSD)',
+ 'options' => {},
+ },
+# 'nis' => {
+# 'desc' =>
+# 'Batch export of /etc/global/passwd and /etc/global/shadow for NIS ',
+# 'options' => {},
+# },
+ 'bsdshell' => {
+ 'desc' =>
+ 'Batch export of /etc/passwd and /etc/master.passwd files (BSD)',
+ 'options' => {},
+ },
+ 'textradius' => {
+ 'desc' => 'Batch export of a text /etc/raddb/users file (Livingston, Cistron)',
+ },
+ 'sqlradius' => {
+ 'desc' => 'Real-time export to SQL-backed RADIUS (ICRADIUS, FreeRADIUS)',
+ 'options' => {
+ 'datasrc' => { label=>'DBI data source' },
+ 'username' => { label=>'Database username' },
+ 'password' => { label=>'Database password' },
+ },
+ 'nodomain' => 'Y',
+ 'notes' => 'Not specifying datasrc will export to the freeside database? (no... notes on MySQL replication, etc., from Conf.pm && export.html etc.',
+ },
+ 'cyrus' => {
+ 'desc' => 'Real-time export to Cyrus IMAP server',
+ },
+ 'cp' => {
+ 'desc' => 'Real-time export to Critical Path Account Provisioning Protocol',
+ },
+ 'infostreet' => {
+ 'desc' => 'Real-time export to InfoStreet streetSmartAPI',
+ 'options' => {
+ 'url' => { label=>'XML-RPC Access URL', },
+ 'login' => { label=>'InfoStreet login', },
+ 'password' => { label=>'InfoStreet password', },
+ 'groupID' => { label=>'InfoStreet groupID', },
+ },
+ 'nodomain' => 'Y',
+ 'notes' => 'http://www.infostreet.com/ .... install Frontier::Client',
+ }
+ },
+
+ 'svc_domain' => {},
+
+ 'svc_acct_sm' => {},
+
+ 'svc_forward' => {},
+
+ 'svc_www' => {},
+
+);
+
+my $svcdb = $part_export->part_svc->svcdb;
+my %layers = map { $_ => "$_ - ". $exports{$svcdb}{$_}{desc} }
+ keys %{$exports{$svcdb}};
+$layers{''}='';
+
+my $widget = new HTML::Widgets::SelectLayers(
+ 'selected_layer' => $part_export->exporttype,
+ 'selected_layer' => $part_export->exporttype,
+ 'options' => \%layers,
+ 'form_name' => 'dummy',
+ 'form_action' => 'process/part_export.cgi',
+ 'form_text' => [qw( exportnum svcpart machine )],
+# 'form_checkbox' => [qw()],
+ 'html_between' => "</TD></TR></TABLE>\n",
+ 'layer_callback' => sub {
+ my $layer = shift;
+ my $html = qq!<INPUT TYPE="hidden" NAME="exporttype" VALUE="$layer">!.
+ ntable("#cccccc",2);
+ foreach my $option ( keys %{$exports{$svcdb}->{$layer}{options}} ) {
+# foreach my $option ( qw(url login password groupID ) ) {
+ my $optinfo = $exports{$svcdb}->{$layer}{options}{$option};
+ my $label = $optinfo->{label};
+ my $value = $part_export->option($option);
+ $html .= qq!<TR><TD ALIGN="right">$label</TD><TD>!.
+ qq!<TD><INPUT TYPE="text" NAME="$option" VALUE="$value"></TD>!.
+ '</TR>';
+ }
+ $html .= '</TABLE>';
+
+ $html .= '<INPUT TYPE="hidden" NAME="options" VALUE="'.
+ join(',', keys %{$exports{$svcdb}->{$layer}{options}} ). '">';
+
+ $html .= '<INPUT TYPE="hidden" NAME="nodomain" VALUE="'.
+ $exports{$svcdb}->{$layer}{nodomain}. '">';
+
+ $html .= '<INPUT TYPE="submit" VALUE="'.
+ ( $part_export->exportnum ? "Apply changes" : "Add export" ).
+ '">';
+
+ $html;
+ },
+);
%>
<%= header("$action Export", menubar(
@@ -46,35 +151,30 @@ my @types = qw(shell bsdshell textradius sqlradius cp);
%>
<% if ( $cgi->param('error') ) { %>
-<FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT>
+ <FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT>
+ <BR><BR>
<% } %>
-<FORM ACTION="<%= popurl(1) %>process/part_export.cgi" METHOD=POST>
-<% #print '<FORM NAME="dummy">'; %>
+<FORM NAME="dummy">
+<INPUT TYPE="hidden" NAME="exportnum" VALUE="<%= $part_export->exportnum %>">
<%= ntable("#cccccc",2) %>
<TR>
<TD ALIGN="right">Service</TD>
<TD BGCOLOR="#ffffff">
<%= $part_export->svcpart %> - <%= $part_export->part_svc->svc %>
+ <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%= $part_export->svcpart %>">
</TD>
</TR>
<TR>
- <TD ALIGN="right">Export</TD>
- <TD><SELECT NAME="exporttype"><OPTION></OPTION>
-<% foreach my $type ( @types ) { %>
- <OPTION><%= $type %></OPTION>
-<% } %>
- </SELECT></TD>
-</TR>
-<TR>
<TD ALIGN="right">Export host</TD>
<TD>
<INPUT TYPE="text" NAME="machine" VALUE="<%= $part_export->machine %>">
</TD>
</TR>
-</TABLE>
-</FORM>
+<TR>
+ <TD ALIGN="right">Export</TD>
+ <TD><%= $widget->html %>
</BODY>
</HTML>
diff --git a/httemplate/edit/process/part_export.cgi b/httemplate/edit/process/part_export.cgi
index 9ee1c5974..8160527f6 100644
--- a/httemplate/edit/process/part_export.cgi
+++ b/httemplate/edit/process/part_export.cgi
@@ -6,6 +6,9 @@ my $exportnum = $cgi->param('exportnum');
my $old = qsearchs('part_export', { 'exportnum'=>$exportnum } ) if $exportnum;
+#fixup options
+my %options = map { $_=>$cgi->param($_) } $cgi->param('options');
+
my $new = new FS::part_export ( {
map {
$_, scalar($cgi->param($_));