ICRADIUS export bugfix
[freeside.git] / TODO
diff --git a/TODO b/TODO
index 9641831..19baa72 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,4 @@
-$Id: TODO,v 1.32 1999-07-08 01:02:24 ivan Exp $
+$Id: TODO,v 1.42 2000-03-06 14:12:56 ivan Exp $
 
 If you are interested in helping with any of these, please join the mailing
 list (send a blank message to ivan-freeside-subscribe@sisd.com) to avoid 
@@ -6,6 +6,329 @@ duplication of effort.
 
 ---
 
+more email which should make it into a more organized TODO list:
+.
+I would also love to see Freeside support bandwidth billing by reading the
+Cisco NetFlow Accounting data so we and other ISP's could automatically bill
+co-located servers and even potentially other virtually hosted sites like
+MUD, Palace Chat, IRC Chat, etc based on the bandwidth they use or average
+sustained rates or whatever. I'm not much of a programmer so I don't know
+what all this entails but I did download a NetFlow client agent/whatever for
+Linux though.
+ .
+It would also be nice to see Freeside be able to read Apache log files and
+bill customers for web traffic that way as an option also. Plus an option to
+bill for excessive disk usage without having to use quotas if you didn't
+want to, would be a nice feature as well. So you could monitor with a script
+or something to see how much disk space a user was using then get some
+average and charge a certain amount for anything above some preset limit for
+that account type. I might be able to hack something like this up, but I'm
+not 100% sure where to start or if there is something out there that could
+be modified or not.
+.
+Do you think that you will ever support the HKS CCVS (Hell's Kitchen
+Software Credit Card Verification Software) since Red Hat bought them out
+and is going to be including that for credit card processing when you buy
+the professional version? What about possibly supporting the OpenCCVS which
+is a GNU/GPL version of a credit card program? I haven't had time to comb
+through the Freeside code to see how hard it would be to add support for
+these as externally called programs.
+.
+Also any thoughts on help desk, and knowledge base stuff? Any thoughts on
+this stuff, and how possible and what kinds of work or time frame would be
+involved?
+.
+Tim Jung
+System Admin
+Internet Gateway Inc.
+tjung@igateway.net
+
+
+
+           CVS via SSH (Score:1)
+           by platinum (jedgar at fxp dot org) on Thursday September 30, @07:13PM EDT (#4)
+           (User Info) http://www.fxp.org/~jedgar
+           The links above are your best bet for basic cvs server configuration. Once you have a pserver set up, you
+           may consider using cvs via ssh. All you need to do is the following: 
+
+           1) Have ssh and sshd set up on the client and server machines 
+           2) Set CVSROOT="joe@example.com:/home/ncvs" 
+           3) Set CVS_RSH="/usr/local/bin/ssh" 
+           4) Use cvs normally 
+           (Obviously, insert the proper host/paths above) 
+
+           You can also set up cvs/ssh to not need a password every time (similiar to an initial 'cvs login'): 
+
+           1) run ssh-keygen on client machine using no passphrase. 
+           2) copy/add ~/.ssh/identity.pub on the client to ~/.ssh/authorized_keys on the server 
+           (man ssh for more details) 
+
+           The main reason I mentio
+           CVS via SSH (Score:1)
+           by platinum (jedgar at fxp dot org) on Thursday September 30, @07:13PM EDT (#4)
+           (User Info) http://www.fxp.org/~jedgar
+
+
+There's no way to do this currently, though it would be pretty
+straightforward to modify the source - specifically, the _collect_
+subroutine in FS::cust_main.
+>
+On Mon, Dec 13, 1999 at 04:05:32PM -0700, Jeff Garner wrote:
+> Freeside will e-mail my users when they are billed if they are setup as
+> billing.
+>
+> When setup by credit card it does not e-mail them.  Is there a way to
+> turn on e-mail invoices for those who are billed via credit card?  Kind
+> of like a recipt of billing....
+
+
+doc: http://www.softagency.co.jp/mysql/qmail.en.html
+
+sql1992.txt standard is 18 character column names.  shoot for that, not just
+32 (postgresql default)
+
+Also note that (AFAIK) Freeside won't display any package that has more
+than one service on the "Add Customer" page.  The reason for this is
+because there's no way to dynamically alter the displayed html form
+based on which package is selected. One possible solution would be to
+make an additional page that's used in the signup process that would
+display the form for each package, like a MS-style "Wizard".  The first
+page lets you select the package, then the second page has the custom
+form with fields for each service in that package and a save button. Of
+course, that would require a little perl work.
+.
+Later,
+Scott Cruzen <sic@boernenet.com>
+
+
+Your suggested script with back up /usr/local/etc/freeside, but will miss
+any database not named `freeside'.  Both of our scripts are specific to
+MySQL.  If you're interested in contributing to Freeside, maybe you could
+work on a script which: reads the mapsecrets configuration file and then
+each secrets file to find out what specific database engine(s) (MySQL,
+PostgreSQL, etc.) and database(s) need to be backed up, then does so,
+serializing backups of the same engine, i.e. stop mysql, do all the mysql
+backups, start mysql, stop postgresql, do all the postgresql backups,
+start postgresql, etc.
+> #!/bin/sh                                                                     
+> apachectl stop                                                                
+> mysqldump -t freeside > fs-backup.sql                                         
+> apachectl start                                                               
+> tar -Pzcvf fs-backup-`date +%y%m%d%H%M%S`.tgz fs-backup.sql /usr/local/etc/freeside/                                                       
+> rm fs-backup.sql                                                              
+
+I chose to use counters in the filesystem because there is no standard way
+to get the value of an auto-incrementing keyfield which is common across  
+all databases (as seen through DBI/DBD).
+.
+It certainly wouldn't be a bad idea to use the database-specific methods,
+when available.
+
+htdocs/edit/svc_acct.cgi:
+(Does the `*HIDDEN*' show up when you are adding a new account, and 
+specify the password, then receive an error and are returned to the form?)
+
+more DOC:
+Thought some of you might be interested in this:
+  
+<ftp://ftp.minivend.com/pub> has CyberCash compatibility modules for 
+Paymentnet <http://www.paymentnet.com> and Authorizenet 
+<http://www.authorizenet.com> which should allow you process transactions
+using those services as well as CyberCash.
+
+The files are named CCLib.pm.paymentnet and CCLib.pm_authorizenet,
+respectively, and are installed by renaming to CCLib.pm and moving to your
+site_perl directory.  Otherwise, follow the directions for Cybercash v2 in
+htdocs/docs/config.html
+
+DOC:
+fs_passwd/ is a client-server replacement for the `passwd', `chfn' and    
+`chsh' commands that updates the Freeside database.  (so for that to be   
+useful, you'd have to be exporting that data periodically)
+  
+fs_radlog/ is a client-server RADIUS log parser that stuffs the data into
+SQL.  It isn't finished, and probably won't be unless someone who I can't
+convince to use one of the RADIUS daemons that logs to SQL directly pays  
+me money or something.
+  
+fs_signup/ is a client-server signup server.  i'm just finishing it up    
+now; probably isn't on your machine yet.
+
+
+http://www.sisd.com/freeside/list-archive/msg00812.html
+
+package definitions should be implicit allow wrt agent types, not implicit deny
+(with the old behavior possible via a config file)
+
+> So is there anyway it could be setup to allow you to select a "primary
+> service" from each package?  This service would be the one you were prompted
+> for.  Could the signup server then be expanded to allow users to go into
+> their package and "turn-on" the remaining non-primary services(using the
+> primary account.)
+
+take the GPL'ed whois proxy stuff at www.geektools.com and turn it into
+intelligence for Net::Whois.
+
+A web version of the fs_passwd stuff would be nifty.   
+
+If you have Cistron authenticating directly from MySQL, you can replicate
+in real-time instead of exporting periodically.  See 
+<http://www.mysql.com/Manual_chapter/manual_Common_problems.html#Replication>.
+
+these go in docs:
+<http://www.sisd.com/freeside/list-archive/msg00546.html>, and
+<http://www.sisd.com/freeside/list-archive/msg00554.html>
+
+and http://www.sisd.com/freeside/list-archive/msg00423.html
+
+> > 5: Is there anyway to get freeside to send a sysadmin a warning when a
+> > credit card has expired?
+No, but there should be.
+
+Put this in the doc (quoting Mark Wells <mark@pc-intouch.com>):
+>Of course, thanks to the sheer coolness of SQL and MyODBC, you can do
+>whatever reports you want in basically whatever application you want.
+>There's no need for Freeside itself to do any reports at all.
+
+middle names and titles
+
+On Wed, Jul 07, 1999 at 01:11:40PM -0400, Frank Nazario wrote:
+> Playing and entering information to Freeside i encountered the following
+> missing reports:
+> 
+> View Customers by Agent
+> 
+> View Pending Invoices
+> 
+
+grep 'uncomment this to encrypt password immediately' site_perl/svc_acct.pm
+Not to say that it shouldn't be a configurable option.
+
+in site_perl/cust_main_invoice.pm (elsewhere?), error out if mydomain config file is gone
+(at least until the idea of a default domain goes away)
+
+FS::Record::qsearch does an eval every loop iteration (which is itself not
+guaranteed to work across all DBD's and should be fixed).  This has got to be
+slow.  Fix it.  (I think recent Perls might have a way to accept a variable
+there, no eval needed?)
+
+Could you have added /bin/sync, /sbin/shutdown, and /bin/halt to the
+`shells' configuration file before importing, and removed them afterwords?
+(even better if svc_acct.import did that automatically - it could just    
+munge and restore @FS::svc_acct::shells... hmm.)
+
+> BTW, Ivan, I am trying to verify in an additional database table that a
+> particular user doesn't exist. This database is used to store email aliases a$
+> additional POP boxes for our customers (kinda like AOL allows). I have toyed  
+> with the idea of just writing the aliases to an email only svc_acct that
+> doesn't write to the password file, but that isn't really how I want to do it.
+
+Actually, I think that's a pretty good way to do it.  Cerkit contributed
+support a little while back for svc_acct.pm and svc_acct.export for
+multiple export targets.  It needs to be cleaned up and documented, which
+I'll try to get to soon.  For this to work correctly, the svc_acct_sm
+table should go away, along with the concept of a "default" domain.  
+
+default setting for new packages should allow all agents to purchase them...
+with a config file for the old behaviour
+
+fix or replace Term::Query (Quiz::Question doesn't do what i need)
+
+Check config file reading stuff from CPAN
+Authorizenet module from CPAN!
+
+<http://www.math.fu-berlin.de/~leitner/mutt/faq.html> has a good y2k complience
+statement!
+
+    I'm hoping Freeside can support arbitrailly complex pricing plans
+    because of a simple concept: all prices are perl expressions.  So if
+    you use `19.95' for example, perl evalates that to be `19.95'.  But if
+    you need to do a complex pricing scheme, you just need to write an
+    appropriate perl expression, which will most likely pull data from the
+    database to return pricing.  Some things will already log to SQL; for
+    example most RADIUS servers can or have a patch available.  Getting
+    Freeside to bill based on any sort of data then becomes a matter of
+    importing the data into the database.
+    There are some issues involved with pro-rating, partial month charges,
+    that sort of thing.  Expressions will need a standard way to have the
+    applicable time/data ranges passed to them.  Also the expressions are
+    currently running under the Safe perl module, and the opmask might not
+    be right in all situations.  I'll try to spend some time working on
+    this if you are using it.
+
+> 2. can customers view their bills on-line.                                    
+Not yet; it needs to be proxied from Freeside to a customer web server in
+a secure way using something not completely unlike the fs_passwd,
+fs_passwdd, fs_passwd_server trio.
+
+
+> Lastly, if someone over pays on an invoice, the credit part does not flow
+> over to other invoices..
+
+The total balance flows over correctly, but individual payments don't.
+The code you're looking for is in FS::cust_pay::insert
+
+The question of what to do with overpayments that don't have another 
+invoice to flow into (yet.. or possibly not) is still an open one.    The
+legacy system Freeside replaced long ago had a separate place for this
+(payments waiting for an invoice) for each customer, and it gave our
+bookeeper fits.
+
+
+option to relax username uniqueness in favor of username+domain or mail/shell
+vs. radius to ease import for isp's with namespace problems or who buy others.
+
+do i have to store anything for radius realms besides regular radius attributes
+(which are handled fine now)?
+
+warn or complain or something when invoice_from is empty (and we use it)
+
+Right now Freeside uses the `freq' field of a package definition as a 
+number of months.  The specific section of code you're looking for is in  
+FS::cust_main::bill:
+        
+        #change this bit to use Date::Manip?
+        #$sdate=$cust_pkg->bill || time;
+        #$sdate=$cust_pkg->bill || $time;
+        $sdate = $cust_pkg->bill || $cust_pkg->setup || $time;
+        my ($sec,$min,$hour,$mday,$mon,$year) =
+          (localtime($sdate) )[0,1,2,3,4,5];
+        $mon += $part_pkg->getfield('freq');
+        until ( $mon < 12 ) { $mon -= 12; $year++; }
+        $cust_pkg->setfield('bill',
+          timelocal($sec,$min,$hour,$mday,$mon,$year));
+        $cust_pkg_mod_flag = 1;
+  
+..and when I went poking for this, looks like it tells us just what needs   
+to be done!  Hehehe...
+
+Date::Manip can handle cool things like "+ 1 month" (actually the current
+case of /^(\d+)$/ would have to be added as a special case of "+ $1 
+month") and "+ 30 days" (what you need) and even "+ 5 business days" !
+
+
+On Wed, Apr 28, 1999 at 08:38:16PM +0000, Kristian Hoffmann wrote:
+> I can't quite seem to figure out how this exporting works.  From what I
+> understand, when you run svc_acct.export, it rewrites the /etc/passwd,
+> /etc/shadow, etc. files.  Is this only for initial setups with the
+> export hooks being in the pm's?
+You can use both, or just one method.  The configuration files control    
+this.  One of the things in the TODO is to take out the last few things   
+that aren't customizable wrt this and put them in config files.
+
+http://www.daemonnews.org/199905/user-mgmt.html
+
+Term::Query doesn't install out of the box from CPAN.  Fix it (and get it 
+submitted upstream!), or remove requirement from bin/svc_acct.import and
+bin/svc_acct_sm.import and take it out of the install instructions.
+
+use this cool link to explain the Freeside API
+ftp://cpan.nas.nasa.gov/pub/perl/CPAN/doc/FMTEYEWTK/easy_objects.html
+
 Multiple tax rates by geographic region (county, state, and county) are   
 supported; just choose View/Edit tax rates from the main menu.
 
@@ -31,20 +354,7 @@ that error because it didn't exist yet.  Sounds like a buglet to me.  I'll
 try to fix that soon; in the meantime you can add the invoicing email 
 address afterwords.
 
-Postgres `money' time sucks rocks anyway.  I'll probably just require 6.5
-and use the numeric types, which *finally* work right.
-On Sat, Apr 24, 1999 at 12:52:00PM -0700, Mr. Poet wrote:
-> Software error:
-> Error creating cust_bill record: ERROR: parser:
-> attribute 'charged' is of type 'money' but expression
-> is of type 'float8' You will need to rewrite or cast 
-> the expression ! Check updated but unbilled packages 
-> for customer1
-.
-Postgres `money' time sucks rocks anyway.  I'll probably just require 6.5
-and use the numeric types, which *finally* work right (well, according to 
-the web site, anyway).
-.
+(workaround for postgres before 6.5) (unlikely to ever be implemented)
 In the mean-time, this could probably be fixed with the reverse of        
 the kludge in FS::Record::new.  This removes `$' and `,' from money fields
 coming out of the database.  Something which fixed up the data so Postgres