Hackbot programming Guidelines for developers
---------------------------------------------

Hackbot code is not too difficult, its easy to expand  and its fun 
to create. I'll try to explain my vision on what Hackbot _should_ 
and _should not_ be able to do, and what its meant for. 
A few simple rules:

- Hackbot is not meant for kiddies, therefor it should not actually 
  'hack' hosts.

- Hackbot should not do stuff to hide itself, also to prevent 
  kiddies from using it extensively. 

- Hackbot is an admin and penetrationtester tool.

- Hackbot's code does not use NON-default modules, all modules used 
  must be in the default install of PERL.

- Hackbot patches sent to me via email will NOT be applied, become
  a developer first and use the CVS.

- If you want to send example code, or code you want to discuss to 
  the list make sure you send it in the form of an attachment, 
  or start each code line with a ">".

- Creating sockets can be done with IO::Socket; or Socket; At the 
  moment Hackbot uses only IO::Socket; Hackbot 3.0 will be only with 
  Socket; and probably Select;

- Structural changes should be dicussed on the mailinglist first.

- Always apply your code to the latest betaversion, you can download
  it from http://cvs.obit.nl . This file is updated by me after each
  cvs commit (and after testing).

- ALWAYS test your code. If you're programming an extra option it 
  can be handy to program it in a small program first, not directly 
  into Hackbot. Only structural changes should be programmed 
  immediately in Hackbot. Always make sure you tested over and over 
  before applying code to Hackbot.

- With each serious CVS commit, tell me so I can make it a new beta,
  and update the CVS webtree.

- Tell me if you added an option, I will edit the documentation, 
  the manual page, I'll make it a new beta and update the CVS 
  webtree.

- Commit code with a clear CVS commit message.

Everyone with CVS access (hackbot developers who sent me a uniq 
source IP and username) can use the CVS to maintain hackbot code.
To get access to the CVS join the mailinglist and we'll look at you.

A short CVS example.

to checkout (get the latest) CVS version

$ export CVSROOT=user@cvs.obit.nl:/opt/cvsroot
$ CVS_RSH=ssh
$ cvs co hackbot
user@cvs.obit.nl's password:
cvs server: Updating hackbot
U hackbot/CHANGES
U hackbot/INSTALL
U hackbot/KNOWN_BUGS
U hackbot/LICENSE
U hackbot/Makefile
U hackbot/README
U hackbot/cgi.db
U hackbot/developer_guidelines.txt
U hackbot/documentation.txt
U hackbot/fingerprint.db
U hackbot/hackbot.1.gz
U hackbot/hackbot.pl
U hackbot/manpage.html
$

after that you can change code and submit the code with 

$ cvs commit -m 'message'

For all other CVS commands, read the manual page.

That should about explain it. In case of doubt send me
an email.

Marco van Berkum
m.v.berkum@obit.nl
