2001-01-19  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/*.c: removed unused code (satyr, authconn etc.)

	* the commercial version split off to its own branch, this is the
	FREE version

	* CVS tree split into separate core and modules, each module
	getting its own CVS module

2001-01-17  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Receiver.py: use the services hash to fetch references
	to services given by their name

2001-01-16  Szalay Attila  <sasa@balabit.hu>

	* lib/pyvars.c (z_pyvar_method_free): Remove z_policy_lock because
	unneeded. (And caused deadlock sometimes.)
	(z_pyvar_hash_free):  - "" -

	* pylib/Zorp/Receiver.py (Receive.__init__): Change service name
	handling reflect to change in Listen.

2001-01-15  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pypolicy.c: if an exception occurred during the execution of
	a Python function, set sys.last_traceback to None so z_proxy_free
	is called immediately
	
	* lib/proxy.c: z_proxy_destroy() doesn't call free directly,
	instead it unrefs the Python Proxy instance, which in turn calls
	z_proxy_free when destroyed, avoids a race condition in Ftp

	* lib/poll.c (z_poll_unref): check if self is NULL

	* modules/plug/plug.c (plug_init_streams): check if self->poll is NULL
	
	* modules/pssl/pssl.c (pssl_init_streams): check if self->poll is NULL

2001-01-15  Szalay Attila  <sasa@balabit.hu>

	* modules/plug/Plug.py (PlugProxy.stackProxy): bugfix use self.session
	instead self.

	* modules/pssl/Pssl.py (PsslProxy.stackProxy): bugfix use self.session
	instead self.

	* lib/giossl.c (g_io_ssl_read): bugfix Return G_IO_ERROR AGAIN, when
	getting EAGAIN.
	(g_io_ssl_write): -""-

2001-01-12  Szalay Attila  <sasa@balabit.hu>

	* pylib/Zorp/Chainer.py (TransparentChainer.connectServer): bugfix.
	self.forced_port

2001-01-11  Balazs Scheidler  <bazsi@balabit.hu>

	* zorp/policy.py.sample: updated to reflect latest policy

	* lib/readline.c (z_read_line_get_unread_data): fixed a problem
	with line ending
	
2001-01-11  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/ftp.c (ftp_proxy_regvars): bugfix. Use correct variable
	type in function calling (timeout variable).

2001-01-11  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/http/messages/*.html: error messages written

2001-01-10  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/http/http.c (http_fetch_response): added support
	for for 0.9 responses for >1.0 requests
	(http_copy_response): write response in a single write

	* lib/readline.c (z_read_line_get_unread_data): added support for
	ungot lines

	* configure.in: added --enable-ip-options argument

	* lib/sockaddr.c (z_accept): fetch IP options on accepted sockets
	(z_get_ip_options): new function fetches security related IP
	options (CIPSO, RIPSO, all other headers are skipped. Should be
	made configurable in the future) IP options are stored in
	ZSockAddr
	(z_set_ip_options): new function
	new function pointer for sockaddrs to free up an instance

	* lib/pysockaddr.c (z_py_zorp_sockaddr_getattr): options attribute
	(z_py_zorp_sockaddr_setattr): options attribute

2001-01-09  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.7.11

	* modules/http/http.c: fixed a HTTP0.9 bug

2001-01-09  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/Ftp.py (FtpDataConnect.prepare): Resolve a bug. Try to
	use the same port in each connection.
	(FtpProxyMinimal.config): New disabled command "MACB". There are some
	stupid people, doing something without rfc accepting this.

2001-01-08  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/Zone.py: added documentation

	* pylib/Zorp/Listener.py (ZoneListener): added docstring documentation

	* pylib/Zorp/Domain.py: checked documentation

	* doc/sgml: moved to a separate package

2001-01-07  Balazs Scheidler  <bazsi@bzorp>

	* doc/sgml/zorp-reference.sgml: new file Zorp Reference Guide

	* zorp/main.c (main): --verbose changed from optional_argument to
	required_argument

2001-01-05  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/http/http.c: adapted to the new logging scheme,
	(http_split_response): fixed a response parsing bug,
	(http_copy_request): send request in a single write, because
	some bogus servers expect it this way

	* modules/*/Makefile.am: add python modules to EXTRA_DIST and
	pkgdata_DATA

	* pylib/Zorp/: moved proxy specific modules to the correspondnig
	module directory

2001-01-04  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pyconnect.c (z_py_zorp_connect_start): fix yet another race
	condition

	* modules/plug/plug.c (plug_read_input): fixed warning

	* lib/pyconnect.c (z_py_zorp_connect_start): fix race condition

2001-01-04  Szalay Attila  <sasa@balabit.hu>

	* pylib/Zorp/Ftp.py (FtpDataConnect.prepare): In active mode (client
	side) connect from port 20.

	* modules/ftp/ftp.c (ftp_config_set_defaults): Changed calling place.
	(Called in the new thread)

	* Changed all proxy reflect changes in z_policy_call

	* lib/pypolicy.c (z_policy_call): New function parameter called. TRUE
	if function called, FALSE otherwise

2001-01-03  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/Listener: implemented ZoneListener

	* pylib/Zorp/Session.py (MasterSession.setClient): split to
	setClient and isClientPermitted,
	(setServer): -"-

	* pylib/Zorp/Chainer.py (Chainer.establishConnection): call
	isServerPermitted

	* pylib/Zorp/Proxy.py (Proxy.connectServer): 

	* lib/pyproxy.c (z_py_zorp_proxy_new): fixed warning by removing
	the unused buf variable

	* zorp/main.c: added SIGSEGV handler, which logs the caller's address

2001-01-02  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version to 0.7.10

	* pylib/Zorp/Makefile.am: added Domain.py to dist
	
	* pylib/Zorp/Ftp.py: self.localsa attribute removed (substituted with
	a local variable), connect.local is not referenced before start()

	* debian/*: fixed package building

2001-01-02  Szalay Attila  <sasa@balabit.hu>

	* lib/* En moving to z_log.

2000-12-31  Balazs Scheidler  <bazsi@bzorp>

	* lib/cap.c: added logging

	* zorp/main.c: add cap_net_raw to the default capability set (needed by
	ipchains manipulation)

	* lib/zorp/ipchains-kernel.h: rename __u32 to u32 to avoid name clash
	with kernel headers

	* lib/ipchains.c: added capability support

	* pylib/Zorp/IPChains.py: delete added and not removed rules, in the
	destructor

2000-12-30  Balazs Scheidler  <bazsi@bzorp>

        * pylib/Zorp/IPChains.py: new file interfacing with pyipchains in Zorp.
	
	* lib/ipchains.c, lib/zorp/ipchains.h, lib/pyipchains.c: new files, implementing
	  interface to ipchains in kernel

	* lib/ipf.c, lib/zorp/ipf.h, lib/pyipf.c, lib/zorp/pyipf.h: removed

2000-12-29  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: remove $prefix/include and $prefix/lib from search
	path

2000-12-28  Balazs Scheidler  <bazsi@balabit.hu>

        * configure.in: bumped version number to 0.7.9
	
	* lib/log.c: implemented --log-tags it prepends the message tag
	to each message for easier message sorting

	* zorp/main.c: --logspec renamed to --log-spec, new argument
	--log-tags

	* doc/sgml/tutorial.sgml: updated to reflect latest changes
	in policy interface

	* doc/examples/*.py: updated examples according to the new
	policy interface (changed zone declaration), added a short
	description to each

	* modules/anypy/anypy.c: cleaned up, updated to latest API changes

	* pylib/Zorp/Session.py: some messages prefixed with session_id,
	log client and server address info in setClient, setServer
	respectively, add zone to this info

	* pylib/Zorp/Zone.py: backported Zone class from 0.9, removed
	labels, and added inbound/outbound based access control

	* pylib/Zorp/Listener.py: fix error message on Zone exceptions

	* pylib/Zorp/Chainer.py: FIX: refer to session.client_address
	instead of session.client_addr

2000-12-27  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pystream.c (z_py_zorp_stream_read): implemented reading,
	(z_py_zorp_stream_write): error checking

	* configure.in: added test for
	/usr/lib/python1.5/config/libpython1.5.a in case dynamic version
	is not available (needed to compile on redhat)

2000-12-25  Balazs Scheidler  <bazsi@bzorp>

	* debian/*: cleaned up debian packaging, split into zorp,
	zorp-doc, zorp-libs, zorp-modules, zorp-dev and task-zorp

	* lib/proxy.c (z_proxy_destroy): removed duplicated session_id

	* modules/http/http.c: implemented CONNECT, 
	(http_filter_request): react on responses returned by policy callbacks 

	* lib/stream.c (z_stream_read, z_stream_write): do not log error 
	message on EAGAIN

	* pylib/Zorp/Chainer.py (establishConnection): establishConnection
	doesn't create a Stream instance, it simply returns the created fd

	* pylib/Zorp/Proxy.py (connectServer): create Stream instance
	from fd returned by chainer.connectServer, when no chainer is
	defined assume that both server_fd and server_stream is set

	* pylib/Zorp/Pssl.py (stackProxy): use StackedSession instead
	of SubSession

	* pylib/Zorp/Plug.py (stackProxy): -"-

2000-12-24  Balazs Scheidler  <bazsi@bzorp>

	* configure.in: new switch --enable-caps, by default it is
	autodetected (enabled if sys/capability.h and a function named
	cap_proc_set in -lcap exists),
	check for <sys/capability.h>, <sys/prctl.h>, PR_SET_KEEP_CAPS
	
	* lib/cap.c, lib/zorp/cap.h: new files, some helper functions for
	setting capabilities

	* zorp/main.c: new parameters: --uid, --gid and --caps. If --uid
	and --gid is set, capabilities cannot be set (the kernel drops
	caps when changing uids on Linux 2.2), on Linux 2.4 we support
	changing uids _and_ setting our capabilities by calling
	prctl(PR_SET_KEEP_CAPS).

2000-12-23  Balazs Scheidler  <bazsi@bzorp>

	* scripts/zorpctrl: new parameter version to query zorp version

	* zorp/main.c (main): add --version (aka -V) option to display
	zorp version

	* lib/log.c (z_log_set_fake_session_id): use instance name in 
	session id instead of firewall name

2000-12-22  Balazs Scheidler  <bazsi@bzorp>

	* pylib/Zorp/finger.py: new file

	* modules/finger: new directory

	* modules/finger/finger.c: new file, containing finger proxy

	* modules/finger/Makefile.am: new file

	* configure.in: added AC_DISABLE_STATIC to prevent static lib
	compilation, added modules/finger/Makefile to AC_OUTPUT

2000-12-21  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.7.8
	
	* doc/pythonref.sh: new file, script to generate python reference
	docs

	* pylib/Zorp/docheader.html, docfooter.html: new files used
	as headers for reference docs

	* pylib/Zorp/Ftp.py: import objects by name instead of '*'

	* lib/zorp/proxy.h: z_dproxy_log call z_proxy_log instead of z_log

	* configure.in: removed doc/modules from dist

	* modules/pssl/pssl.c: changed packetStats() to be similar to plug's

	* modules/plug/plug.c: change packetStats() event to a simple call,
	and remove the first `direction' parameter. (in sync with the
	docs)

	* doc/examples: new directory

	* doc/examples/session_count.py: new file, example policy for session counting

2000-12-20  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/Ftp.py (FtpDataConnect): move attribute definition
	to __init__, added docstrings
	
	(FtpDataProxy): added docstrings, don't move way, stop attributes
	to self, use them directly from self.session

2000-12-20  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/ftp.c: Use timeout. (Default 30 sec.)
	(ftp_read_line_get): Initialize variable readback

	* lib/*: Move from old z_debug and others to z_log (50% done)

2000-12-20  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: added --enable-trace configure switch

	* lib/stream.c (z_stream_wait): do nothing when timeout is -2
	(z_stream_new): set timeout to -2 by default

	* modules/sink/sink.c (sink_thread): initialize py_from and py_to

	* lib/lineio.c (g_string_append_protected): initialize protect
	(read_token_line): -"-

2000-12-19  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pycfg.c: readded (removed #if 0/#endif), changed so that
	it uses variables in the Zorp.Zorp module instead of the
	settings hash

2000-12-19  Szalay Attila  <sasa@balabit.hu>

	* pylib/zorp/*: Change logging policy.

2000-12-19  Balazs Scheidler  <bazsi@balabit.hu>

	* zorp/main.c (main): check if policy init was successful, and
	abort if not

	* pylib/Zorp/Listener.py (Listener.__init__): fetch the service
	object based on the name passed to __init__, 
	(!!!) CHANGES POLICY INTERFACE

	* pylib/Zorp/Service.py (services): new hash, it'll store defined
	services so that listeners can reference it by name
	(AbstractService.__init__): store self in the services hash 

	* pylib/Zorp/Zorp.py (ServiceException): new variable

	* doc/modules/pssl/Makefile.am: set EXTRA_DIST

	* configure.in: added doc/modules/pssl/Makefile to AC_OUTPUT

2000-12-18  Balazs Scheidler  <bazsi@balabit.hu>

	* doc/man/zorp.8: documented --logspec

	* modules/pssl/pssl.c: indent according to the GNU coding style,
	log messages conform to the new log system, split certfile to
	client_certfile and server_certfile

	* modules/plug/plug.c: removed some unused code (hashtable and
	sockaddr tests), use timeout as provided by ZPoll

	* lib/poll.c (z_poll_iter): use the passed timeout value

	* lib/zorp/poll.h: new function z_poll_iter_timeout(), z_poll_iter
	redefined as a macro

	* modules/http/http.c (http_filter_headers): try '*' as header if
	exact match not found
	(http_filter_request): try '*' as request if exact match not found

2000-12-18  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/ftp.c (ftp_proto_nt_client_to_proxy): Bugfix. Call
	ftp_command_parse before ftp_command_process
	(ftp_proto_nt_server_to_proxy): Cleanup. Handle several line welcome
	messages. (In non-transparent mode)
	(ftp_listen_both_side): Do not stopping poll, before data connection
	is stopped.

2000-12-15  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.7.7

	* doc/tutorial: removed old StarOffice documentation

	* doc/sgml/Makefile.am: added tutorial.html.tar.gz to dist

2000-12-15  Szalay Attila  <sasa@balabit.hu>

	* pylib/Zorp/Ftp.py (FtpDataConnect.acceptedCallback): Deny connection
	from bad IP number.

2000-12-15  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pyconnect.c: new block() method, new blocking connect semantics:
	new instance, start, block

	* pylib/Zorp/Connector.py, pylib/Zorp/Chainer.py: fetch server side
	local address appropriate to the changes below

	* lib/pysockaddr.c (z_py_sockaddr_new): raise an exception if sa
	is NULL (would cause an exception later)

	* lib/io.c: make sure that self->local is not NULL, fixes a problem
	in FTP

2000-12-15  Szalay Attila  <sasa@balabit.hu>

	* modules/plug/plug.c (plug_request_stack_event): return FALSE if
	stacking is required, but not succesfull.

	* modules/ftp/ftp.c: Logging comands and ansers again.

2000-12-14  Szalay Attila  <sasa@balabit.hu>

	* lib/log.c (z_logv): If logspec invalid stop zorp.

	* modules/ftp/: Use new z_proxy_log.

2000-12-13  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/ftpmsg.c (ftp_know_messages): Enlarge it with all
	messages zorp may create.

	* modules/ftp/ftp.h (SET_ANSWER): New defined function. (Put answer
	from a table to appropriate variable.

2000-12-13  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pyconnect.c: changed blockingConnect() semantics, instead of
	the constructor it now blocks in start()

2000-12-12  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/ftpolicy.c (ftp_policy_answer_hash_do): Process
	FTP_ANS_CHANGE state correctly.
	(ftp_policy_answer_hash_do): policy now return with Z_*.

	* pylib/Zorp/Ftp.py (FtpDataProxy): Write documentation.

2000-12-11  Balazs Scheidler  <bazsi@balabit.hu>

	* doc/sgml/tutorial.sgml: started translating tutorial-hu.sgml, oh
	hell I hate that :( I should have done it in English from the
	start

	* modules/http/http.c: emit some messages with the new logging
	semantics

	* lib/log.c: implement new logging mechanism

	* zorp/main.c: use new logging mechanism

	* pylib/Zorp/Listener.py: rename Listen to Listener to avoid
	name clash with Zorp.Listen

2000-12-11  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/ftpolicy.c (ftp_policy_command_hash_do): Handle return
	code from policy function.
	(ftp_policy_answer_hash_do):  -"-

	* modules/ftp/ftp.c (ftp_proto_server_to_client): Handle long (more
	than one line) answer messages.

2000-12-08  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/Chainer.py (TransparentChainer.connectServer): set
	local.port to 0 if address is to be forged

2000-12-08  Szalay Attila  <sasa@balabit.hu>

	* modules/ftp/ftphash.c: Enable some command, what harmless to enable
	(in view of proxy.)

	* modules/ftp/ftpcmd.c (ftp_command_answer_RNFR): New function. 
	(ftp_command_parse_RNTO): New funtion.
	Ftp proxy now handle RNFR, RNTO commands correctly.

	* pylib/Zorp/Ftp.py: Remove unused variables.

	* modules/ftp/ftpolicy.c: Clean. Remove unused variables.

	* modules/ftp/ftpcmd.c: Change answer handling mechainsm. It's now less
	strict, use policy, to deny an answer.

	* pylib/Zorp/Ftp.py (FTP_CMD_DENY): New variables, for saying what to
	do with a command, or answer.

	* modules/ftp/ftpolicy.c (ftp_policy_command_hash_search): New function.
	Search a command in policy_command_hash. (Use it when the administrator
	wants to enable an unknown command)
	(ftp_hash_get_type): New function. Get policy type from
	the hash.
	(ftp_policy_command_hash_do): New function. Do, what administrator
	say to do with command. (Drop, or accept a command, or put it to
	policy level.)
	(ftp_policy_answer_hash_do): -"- But with answers.

	* modules/ftp/ftpcmd.c (ftp_command_parse_PASS): Return defined
	values, not an integer.

	* modules/ftp/ftp.c (ftp_proxy_regvars): Registering variables
	about ftp policy.
	(ftp_thread): Rearrange variable inicializations.

	* modules/ftp/ftpolicy.c: New file. Move here functions acting with
	local ftp policys. (fe.: Deny or accept commands) 

	* modules/ftp/ftphash.c: Change structure of FtpInternalCommand.

	* modules/ftp/ftpcmd.c: Change parameter type becouse of renamed
	struct. (to FtpInternalCommand)
	(ftp_command_answer_USER): Write it, and now use it in login procedure.

	* modules/ftp/ftp.h: New defines, for writeing policy.
	Remove unused defines.
	(_FtpProxy): New variables (policy_command_hash and policy_answer_hash)
	It's contain what will proxy do with commands, and answers.
	(_FtpProxy): answer_param. New variable. To may easily rewrite answer
	parameters.

	* modules/ftp/ftp.c: Remove unused codes.
	Fully rewrite answer handling.

	* lib/poll.c (z_poll_iter): remove codes about checking poll running.

2000-12-07  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version to 0.7.5

	* pylib/Zorp/DAC.py (DAC.__init__): handle acl == None case

	* modules/http/httpmisc.c (http_split_url): return 0 in *port if
	it was not parsed

	* modules/http/http.c (http_main): reattempting cleaned up, moved
	to http_copy_request
	(http_copy_request): use self->default_port instead of 80, 
	don't return error messages when either the request itself or the
	response times out, simply drop the connection

2000-12-06  Balazs Scheidler  <bazsi@balabit.hu>
	
	* modules/http (http_main): reattempt connecting to remote server
	if sending the request fails
	(http_connect_server): new function, http_copy_request was split

	* lib/stream.c (z_stream_wait): accept a ZStream instead of an fd
	as a parameter.

2000-12-05  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/http/http.c (http_filter_headers): new parameter filter,
	which is a callback function getting a chance to do something
	before policy chains are processed
	(http_request_filter_connection_header): new function, used to
	convert Connection, and Proxy-Connection headers
	(http_response_filter_connection_header): -"-, and set connection
	mode to close if the proxy connection is to be closed.
	(http_register_vars): conversion_mode attribute removed,
	parent_proxy is used instead, if parent_proxy is set (in either
	transparent or non-transparent mode, proxy request conversion is
	assumed)

2000-12-04  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/proxy.c (z_proxy_connect_server_event): make sure
	endpoints[EP_SERVER] contains NULL if the connection was not
	successful.

	* modules/http/messages: new directory, will contain http message files

	* configure.in: emit a Makefile in modules/http/messages

	* modules/http/http.c (http_filter_request): requests are denied
	by default, policy must enable allowed methods explicitly,
	implement max_keepalive_requests attribute

	* modules/http/httpmisc.c (http_split_url): fix port number parsing

2000-12-01  Balazs Scheidler  <bazsi@bzorp>

	* doc/sgml/admin.sgml: refer to module documentation as external
	entities

	* doc/sgml/howto.sgml: new file how to write zorp documentation document

	* doc/sgml/modules/plug_admin.sgml: new file, using proxy.dtd

	* doc/sgml/modules/proxy.dtd: DTD for proxy documentation

	* doc/sgml/modules/proxy2docbook: new perl script to convert sgml with
	proxy markup to docbook.

	* doc/sgml/Makefile.am: modified to generate html docs for dist

	* doc/sgml/modules/Makefile.am: new files

	* modules/http/http.c (http_proxy_free): new function, free up instance variables

	* lib/stream.c (z_stream_shutdown): send error message only if errno is not EINTR
	(z_stream_read): -"-
	(z_stream_write): -"-
	(z_stream_read_method): implement timeout,
	(z_stream_write_method): -"-
	(z_stream_send): -"-, changed return type to conform glib conventions

	* lib/pysockaddr.c (z_py_zorp_sockaddr_setattr): parse ip
	attribute as well instead of causing an assertion failed error

	* modules/http/http.c: implement python interface (lots of changes), 
	error handling

	* modules/http/httpmisc.c: new file, moved some functions here

2000-11-30  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/http/http.c: ensure that the lines sent to the client or
	server are terminated by CRLF,
	new hashes request[], request_headers[], response[], response_headers[]
	FILTER_POLICY_CALL implemented on request

	* modules/http/http.h: move request_headers and response_headers
	into a headers[2] array

2000-11-30  Szalay Attila  <sasa@balabit.hu>
 
        * modules/ftp/ftp.c (ftp_data_wakeup): new variable, data_mode, to set
        data connection conversions.
 
        * pylib/Zorp/Ftp.py (FtpDataConnect.processState): put back
        listen.start() here.
        (FtpDataConnect.processState): Write some debug message to log.
 
        * modules/ftp/ftpcmd.c (ftp_parse_search_nums): New function. Search
        IP and port numbers in PASV answer.
        (ftp_data_server_start_active): New function starting connection to
        server in active mode.
        (ftp_data_server_start_passive): Just as above, but in passive mode.
        (ftp_command_parse_PORT): 
        (ftp_command_answer_PORT): 
        Prepare this function to handle conversion between passive and
        active connection.
        (ftp_command_parse_PASV): 
        (ftp_command_answer_PASV): 
        New functions, handle PASV commands.
 
        * modules/ftp/ftp.c (ftp_data_wakeup): Write some error to syslog.
        (ftp_read_line_get): Rewritten. (Remove telnet seq. handling.)
        Revert answer ungetting.
        New variable (oldstate) when coming back from FTP_BOTH_SIDE

	
2000-11-27  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/http/*.{c,h}: Http cleanup started

	* pylib/Zorp/Chainer.py (TransparentChainer): forge_addr fixed,
	(DirectedChainer) forge_addr feature added parameters changed,
	(FailoverChainer) forge_addr feature added

	* pylib/Zorp/*.py: English documentation added, Hungarian removed,
	wording cleaned up

2000-11-25  Balazs Scheidler  <bazsi@bzorp>

	* modules/Makefile.am: removed http, sink and anypy from static linking

	* pylib/Zorp: DAC implemented

	* tests/python/test_dac.py, test_mac.py, test_inetdomain.py: new files

2000-11-19  Szalay Attila  <sasa@balabit.hu>

        * modules/ftp/ftpcmd.c (ftp_command_answer_path): Handle, when server
        answer 5XX.
        (ftp_command_answer_path): Put 226 answer back, when coming too early.
        (ftp_command_parse_noarg): New function. Command parser, when command
        must not have any argumentum
        (ftp_command_parse_HELP): Parse HELP command. (Do we need it?)
        (ftp_command_parse_MODE): Parse MODE command.
        (ftp_command_parse_string): Parse commands with a string parameter.
        (ftp_command_parse_STRU): Parse STRU comand.
 
        * modules/ftp/ftp.h: New parser function return values. (to
        distinquish between commands and answers)

        * modules/ftp/ftp.c (ftp_proto_server_to_client): If an answer come
        too early, put back it to the stream.

2000-11-17  Szalay Attila  <sasa@balabit.hu>

        * pylib/Zorp/Ftp.py (FtpDataConnect.acceptedCallback): Call
        ftpDataWakeup when connection is established.
        (FtpDataConnect): new Class for one way data communication.
 
        * modules/ftp/ftpcmd.c (ftp_command_parse_PORT): Error handling, when
        zorp cannot bind to the given address.
 
        * modules/ftp/ftp.h Defined some data connect state.
        FtpProxy now hase 3 new member:
        data_state:   The state of data channel building.
        poll:         Used when data connection is active, to isten both side
                      of the connection.
        wake_who:     Which side (client, or server) waked up the poll.
 
        * modules/ftp/ftp.c: Move ftp_data_prepare ftp_data_start
        ftp_data_reset to here from ftpcmd.c
        (ftp_data_wakeup): new function. Called from python, when part of
        a connection established. 
        (ftp_data_start): new parameter. What direction may flow data.
        (ftp_proto_server_to_client): First step to divide command, and
        answer responses.
        (ftp_listen_both_side_start): new function. (ftp_listen_both_side
        divided into three pieces. Becouse of callbacked wakeup events.)
 
2000-11-17  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/sink/Makefile.am, modules/anypy/Makefile.am: create
	shared object

2000-11-16  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp.py: added variables zones, zone_ips, zone_labelset

	* lib/io.c: changed ZIOListen to start listening in the
	constructor (though the fd is not watched yet),
	removed debug messages from ZIOListen and ZIOConnect

2000-11-15  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/SockAddr.py, pylib/Zorp/InetDomain.py: cleaned up IP
	address byte ordering. IPs are always stored in network byte order.
	
	* pylib/Zorp/Chainer.py (TransparentChainer.__init__): local and
	forge_addr made optional.
	(DirectedChainer.__init__): changed argument order, made local
	address optional

	* pylib/Zorp/*.py: removed Entity, because it broke stacked sessions

	* lib/poll.c (z_poll_wakeup) new function, 
	(z_poll_iter) check wakeup pipe

2000-11-13  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pyipf.c: new file python interface for packet filters

	* lib/ipf.c, lib/zorp/ipf.h: new files interfacing with the kernel
	packet filter

2000-11-11  Szalay Attila  <sasa@balabit.hu>
	
        * modules/ftp/ftp.c (ftp_listen_both_side): read data directly, if
        buffer have any.

        * lib/readline.c (z_read_line_have_unread_data): new function.
        return TRUE if buffer have unread data.


2000-11-10  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.7.2

	* lib/pysockaddr.c (z_py_zorp_sockaddr_format): this function
	became ZorpSockAddr.__str__ so it can simply be written as string

2000-11-10  Szalay Attila  <sasa@balabit.hu>

	* pylib/Zorp/Ftp.py: some error handling (wrong side, or fd)

        * modules/ftp/ftpcmd.c: change return value from int to guint

        * modules/ftp/ftpcmd.h: declare the new functions (see ftpcmd.c)
        declare (export) ftp_data_start function to ftp.c

        * modules/ftp/ftp.c: include zorp/poll.h.
        (ftp_listen_both_side): new function to handle when data connection
        is alive.
        (ftp_proto_server_to_client): remove unused variable 'first'
 
        * lib/stream.c (z_stream_send): new function to send Out of band Data.
  
        * modules/ftp/ftphash.c (ftp_command_hash_create): enable some command
        (TYPE, ABOR)

        * modules/ftp/ftpcmd.c (ftp_command_parse_ABOR): (re)initial write
        (ftp_command_answer_USER): change from self->state to self->ftp_state
        (ftp_command_parse_PASS): reorganize case switch.
        (ftp_command_answer_path): handle 150 and 226 return state correct.
        (ftp_command_parse_TYPE): new function added to handle TYPE command.
        (ftp_command_answer_ABOR): new function added to handle answers to
        ABOR command.

2000-11-10  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/Zone.py: changed according to the new access control model

	* pylib/Zorp/Domain.py: new file

	* pylib/Zorp/Entity.py: new file

	* pylib/Zorp/Label.py: new file

	* pylib/Zorp/LabelSet.py: changed according to the new access control model

2000-11-07  Balazs Scheidler  <bazsi@balabit.hu>

	* tests/python/test_label.py: tests Label class properties

	* tests/python/runtest.sh: new script to run a python test (with
	the help of zorp)

	* lib/zorp.c: new file main loop and associated functions

	* lib/zpython.c (z_py_quit): new function, allows the python code
	to quit an instance

	* lib/pyproxy.c (z_py_zorp_proxy_new): check the type of the
	passed client stream

2000-11-05  Balazs Scheidler  <bazsi@bzorp>

	* scripts/zorpctl: added some error checking

	* doc/man: added man pages for instances.conf(5), zorpctl(8) and zorp(8)

2000-11-02  Balazs Scheidler  <bazsi@balabit.hu>

	* scripts/zorpctl.in: expect a space after instance name, to avoid
	confusion of instance names, support several instance names on
	start, stop and restart

	* lib/stream.c: z_stream_ssl moved to the ssl proxy module to
	avoid inclusion of SSL headers.

2000-10-31  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.7.1

	* lib/stream.c (z_stream_ssl): new function, enables SSL on the
	given stream

2000-10-30  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/io.c (ZIOListen, ZIOConnect): change self->lock to a
	GStaticRecMutex, crash bug fixed (though it may some leak)

	* lib/io.c (z_io_watch_fd_new): bug fix, the prepare callback may
	not be called, so set pollfd.revents to 0.

2000-10-26  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/freeq.c, lib/zorp/freeq.h: new files, implements delayed
	free guaranteed to run after pending callbacks have been called

2000-10-16  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/*.py: added docstrings by mag

2000-10-14  Balazs Scheidler  <bazsi@balabit.hu>

        * modules/ftp/*.c: the great ftp clean up (tm) started

	* pylib/Zorp/Ftp.py: support for port range on data connections

	* lib/sockaddr.c: new sockaddr type SockAddrInetRange, which - when
	bound - allocates a port in the given range
	
	* lib/zorp/sockaddr.h: declaration for z_sockaddr_inet_range_new()
	
	* lib/pysockaddr.c: python interface for SockAddrInetRange

2000-10-13  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/ssl.c, lib/zorp/ssl.h: new files, common interface to OpenSSL

2000-10-11  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/http/httpfltr.c: fixed bug in chunked encoding

2000-10-10  Balazs Scheidler  <bazsi@balabit.hu>

	* source tree branched, CVS tag: zorp_0_6, this is the development
	version

	* pylib/Zorp/Ftp.py (FtpDataConnect.prepare): handle I/O errors in
	listen, do not attempt to reference None

2000-09-29  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/io.c: somehow the listen socket was not set to nonblocking
	mode (it may have been accidentaly deleted)

	* lib/satyr.c: fixed segfault when an unknown username is entered

2000-09-25  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/ftp/ftp.c: change parsing of PASV replies

	* modules/ftp/ftpparse.c: change parsing of PORT commands

	* modules/ftp/ftphash.c: add 250 as the valid reply for CDUP,
	ProFTPD, add 550 as a valid reply for SIZE (it is used by Solaris
	ftpd), add CLNT/500 for NcFTP

	* modules/http/http.c: fix for Content-Length header processing,
	HTTP_SIDE_CLIENT and HTTP_SIDE_SERVER exchanged when copying
	POSTed data, fixed

2000-09-21  Balazs Scheidler  <bazsi@balabit.hu>

	* debian/control: now depends on zorp-python, zorp-python-extclass
	instead of standard debian packages

2000-09-20  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/authconn.c: protect transactions with a mutex, change
	Z_AUTHCONN_RETRY to use do while(0)

	* configure.in: bumped version number to 0.5.20

	* lib/io.c (z_io_connect_connected): ignore if getsockopt()
	failed, and report a warning with the error message

	* lib/stream.c (z_stream_shutdown): check errors returned by shutdown()

2000-08-29  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.5.14
	
	* pylib/Zorp/Zone.py: DAC policy check fix, there was a bug in
	services that were allowed in one way explicitly, the other way
	implicitly by the default rule ('*')

2000-08-28  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Zorp/Zone.py (Zone.isOutboundServicePermitted): change
	session.service to session.service.name (refer to the name of the
	service instead of the instance)

2000-08-18  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/ftp/ftp.c: string allocation is done after config()
	event, so variables can be allocated afterwards

	* modules/ftp/ftphash.c: fixed max_password_length access rights

	* lib/pyconnect.c: fixed a problem in
	z_py_zorp_connect_destroy_method (self was unrefed even if the C
	reference has already been dropped to ZorpConnect)

2000-08-16  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/io.c (z_io_listen_accept): fixed last_connection argument passed 
	to the accepted callback
	
	* lib/stream.c: z_stream_shutdown is now a function instead of a
	macro, sends a debug message

2000-08-15  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.5.12

	* doc/sgml/*.sgml: added the beginnings of our new documentation
	
	* scripts/instances.conf.sample: sample file for zorpctl

	* scripts/zorpctl: new file, contains a script to manage Zorp
	instances

	* modules/*: changed according to the new headers (py*.h)

	* lib/pyauthconn.c: fixed warnings

	* lib/zorp/zpython.h: split into several smaller headers (py*.h)

	* lib/authconn.c (z_authconn_escape): check for output buffer size
	made stricter (len - 2), changed 1023 to sizeof(buf) - 1
	

2000-08-10  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.5.10

	* modules/http/http.c: added parent proxy support, fixed deadlock

	* FtpProxyAnonymous and FtpProxyAllow proxies added

	* modules/ftp/ftphash.c: added possible responses for transfer
	mode conversion (227 for PORT, and 200 for PASV)

	* pylib/Zorp/Ftp.py: launch proxy on the data connection, FTP
	actually works!!

2000-08-09  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.5.9

	* lib/satyr.c: applied changes by Buci

2000-08-08  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/log.c: fixed two format bugs

2000-08-07  Balazs Scheidler  <bazsi@balabit.hu>

	* modules/ftp/ftp.c, modules/ftp/ftpparse.c: changed
	z_policy_event to z_policy_call for prepareData and startData

	* pylib/Zorp/Ftp.py: implemented prepareData, FtpDataConnect changes

	* configure.in: added tests for python, and python-extclass

2000-08-03  Andras Kis-Szabo <kisza@sch.bme.hu>

        * lib/readline.c: z_read_line_get_copy() length bug fix

        * doc/modules/ftp/ftp.ports.txt added

        * mofules/ftp/*.c: thread locking bug at "prepareDATA" event fixed

        * mofules/ftp/*.c: ftp.ports.txt implemented (data state-machine)
	
2000-08-03  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: bumped version number to 0.5.4

	* modules/http/http.c: fixed memory leak (closes #4), modified
	header filtering
	
	* modules/http/httpfltr.c: added chunk encoding

	* lib/satyr.c: changed according to the new protocol

	* lib/pypolicy.c: z_session_getattr() new function,

	* modules/ftp/*.c: changes applied by kisza

	* modules/ftp/ftp.c: fetch client/server address from the policy layer

2000-08-02  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pypolicy.c: getattr()/setattr() deadlock fix

2000-08-01  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/readline.c: z_read_line_get_copy() fix

	* cleaned up debian packaging

2000-07-31  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/zorp/zpython.h: added ZorpAuthConnection class

	* lib/pyauthconn.c: new file

	* autogen.sh: script added

	* zorp-config: script added

	* satyr/*, zas/*: moved to their own source package

	* modules/ftp: PASV NAT fix, PASV/PORT multiple answerline fix,
	z_debug changed to print session_id, 

	* doc/codeaudit/*.txt: files added

2000-07-27  Balazs Scheidler  <bazsi@balabit.hu>

	* satyr/*: changes by buci applied

	* pylib/Zorp/Chainer.py: FailoverChainer added

	* modules/plug/plug.c: check for the parameter to being NULL

	* modules/http/*.c: changes by vps applied

	* modules/ftp/*.c: changes by kisza applied

	* lib/zpython.c: the beginnings of the authentication interface
	offered to Python

	* lib/readline.c (z_read_line_free): check for NULL

	* lib/pylisten.c: check for an unsuccessful bind (fixes segfault)

	* lib/pylabelset.c: new file, python interface to ZLabelSet

	* lib/proxy.c: add z_stream_shutdown() before closing a stream

	* debian/*: applied some patches

	* configure.in: missing required libraries results in an error message

2000-07-26  Balazs Scheidler  <bazsi@balabit.hu>

	* merged in changes of zas, satyrd and ftp, http modules

2000-07-20  Balazs Scheidler  <bazsi@balabit.hu>

	* pylib/Listener.c: call self.listen.start()

	* lib/pylisten.c: changed according to the changes in io.c

	* lib/io.c (ZIOListen): split the listen phase into initialization, and start

2000-07-18  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/pylabelset.c: new file, ZLabelSet interface to Python

	* lib/rights.c: renamed to labelset.c, changed all references from
	rights to labelset

	* pylib/Zorp/Auth.py: new file, containing outband authentication
	primitives

	* pylib/Zorp/Service.py: add support for authentication

2000-07-12  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/modules.c: new file

	* lib/zorp/modules.h: new file

	* lib/pyvars.c: added Z_VAR_TYPE_SOCKADDR support

	* lib/pyvars.c: added Z_VAR_TYPE_STRING support

	* lib/zorp/stream.h: z_stream_shutdown() macro added

2000-07-11  Balazs Scheidler  <bazsi@balabit.hu>

	* configure.in: datadir & sysconfdir cleanup, test for MSG_PROXY

	* debian/*: debian packaging information, and script to maintain
	changelog

2000-07-10  Balazs Scheidler  <bazsi@balabit.hu>

	* lib/zpython.c: removed reference to threadq.h, call
	z_py_zorp_sockaddr_init() from z_python_init

	* lib/zorp/zpython.h: new sockaddr interface

	* lib/zorp/sockaddr.h: new sockaddr interface

	* lib/zorp/proxy.h: added MACROs for Z_VAR_TYPE_HASH

	* lib/zorp/policy.h: removed reference to threadq.h,
	(z_zorp_sockaddr_new) new macro

	* lib/zorp/Makefile.am: remove reference to threadstream.h and
	threadq.h

	* lib/thread.c (z_thread_func): use new logging functions

	* lib/sockaddr.c: use reference counting for deallocation, changed
	logging functions to the new ones.

	* lib/pyvars.c: added copyright header, (z_py_zorp_method_new):
	added proxy parameter, added support for accessing g_hash_tables
	from python.

	* lib/pysockaddr.c: new file, sockaddr conversions will not involve
	copying, a simple interface is shown to the policy layer working
	straight from C structures.

	* lib/pyreceive.c: consistent naming with the rest of py{listen,
	connect}, new sockaddr interface

	* lib/pypolicy.c: removed reference to threadq.h (already removed)

	* lib/pylisten.c (z_py_zorp_listen_new): renamed to *_new_instance,
	adapted to the new sockaddr interface

	* lib/pyconnect.c (z_py_zorp_connect_new): renamed
	z_py_zorp_connect_new to z_py_zorp_connect_new_instance called
	from python, adapted to the new sockaddr interface

	* lib/poll.c: new sockaddr interface, uses new logging mechanism

	* lib/packsock.c: adapted to the new sockaddr interface, changed
	g_warning -> z_warning, etc.

	* lib/io.c (z_io_connect_new, z_io_listen_new): changed variable l
	to self, adapted to the new sockaddr interface, cleaned up error
	handling

	* lib/io.c (ZIORealListen): new struct, make some details available
	through the public interface ZIOListen
	
	* lib/Makefile.am: added pysockaddr.c

	* started ChangeLog again

2000-05-24  Balazs Scheidler  <bazsi@balabit.hu>

	* added event handling, variables, fixed deadlocks

2000-05-22  Balazs Scheidler  <bazsi@balabit.hu>

	* changelog started
	

