2011-01-27 Ingo Weinzierl * website/index.htm4: Added a link to the pdf documentation located on the OSAAS project site at wald.intevation.de. 2010-11-30 Ingo Weinzierl * website/pix/logo.png, website/pix/logo.svg: New. A logo for OSAAS (the raw format as svg and the png for the website. * website/template_header.m4: Added the logo in the header of the web page. * website/index.htm4: Removed "InteProxy" strings. 2010-11-05 Ingo Weinzierl * doc/source/utilization.rst: Added some example sql queries that list the requests of the last 7days | 1month of the specific user. 2010-11-04 Ingo Weinzierl * website/pix/osaas_diagram-en_small.png, website/pix/osaas_diagram-en.png, website/pix/favicon.ico, website/template_header.m4, website/index.htm4, website/template.m4, website/osaas.css, website/Makefile: An initial homepage with makefile to upload the necessary files to wald. 2010-11-03 Ingo Weinzierl * doc/source/about.rst: Removed a duplicated expression in the first chapter. 2010-11-03 Ingo Weinzierl * doc/source/about.rst, doc/source/running.rst, doc/source/contrib.rst, doc/source/installation.rst, doc/source/index.rst: Reviewed the documentation. 2010-11-02 Ingo Weinzierl * doc/make.bat, doc/Makefile: Makefiles for creating the documentation of OSAAS in different output formats. * doc/source/about.rst, doc/source/utilization.rst, doc/source/_static, doc/source/running.rst, doc/source/contrib.rst, doc/source/installation.rst, doc/source/conf.py, doc/source/img, doc/source/img/osaas_diagram.png, doc/source/_templates, doc/source/index.rst: The initial documentation of OSAAS. 2010-10-27 Bjoern Schilberg * contrib/billing/doc/osaas-contrib_short_manual.de.rst: Added a german short manual for how to use the billing stuff. * contrib/billing/doc/HowTo.txt: Added a howto for explaining how to build a pdf or html version of the short manual. 2010-10-25 Bjoern Schilberg * packaging/rpm/osaas-suse10.3-gp.spec: Added a contrib subpackage which includes the contrib/billing stuff. This contrib package gathers data about requests made to WFS servers to support billing and statistic. * packaging/rpm/HowTo-Build-RPM.txt: Added a howto for how to build a osaas server rpm package. 2010-10-25 Bjoern Schilberg * contrib/billing/GPL.txt, contrib/billing/billing.py: Changed license from LGPL to GPL. 2010-10-04 Ingo Weinzierl * contrib/billing/billing.py, contrib/billing/billing.cfg: A python script and an example configuration. The script looks for GetFeature requests stored in a database table and updates the number of features returned by the specific request of the entries. * contrib/billing/wfs_requests.sql: An sql script that creates a table that stores wfs requests. OSAAS is logging to such a table. * contrib/billing/billing.sql: An additional script for the wfs_requests.sql script - it adds a new column 'billtime' that saves the time when the billing.py script has been executed. 2010-03-22 Stephan Holl * packaging/rpm/osaas-suse10.3-gp.spec: Updated to reflect the changes made from r65 to r75 which fixes Issue94. 2010-03-19 Bernhard Herzog * server/demo-config.xml: Replace the responsetime field with the two fields starttime and endtime in the DBRules element. 2010-03-19 Bernhard Herzog * client/java/owsproxy/owsproxy.diff: Update to support today's changes to OSAAS: Pass the start and end time stamps, now including milliseconds, to OSAAS. The patch still requires the same deegree version as before. 2010-03-19 Bernhard Herzog * client/java/src/de/intevation/osaas/OSAASClient.java (OSAASClient.buildRequest): Add startTime parameter and use starttime and endtime in the request instead of responsetime. (OSAASClient.sendRequest): Add startTime parameter. 2010-03-19 Bernhard Herzog * client/java/src/de/intevation/osaas/OSAASClient.java: Add milliseconds to the formatted timestamp so that the new OSAAS timestamp format is used. 2010-03-19 Bernhard Herzog * client/java/src/de/intevation/osaas/OSAASClient.java: Split the actual timestamp formatting from getTimestamp into the new method formatTime, so that it can be used for other timestamps, too. 2010-03-19 Bernhard Herzog Adapt server tests to new timestamps: * server/test/test_formparser.py (FormParsingTests.test_convert_form_urlencoded) (FormParsingTests.test_missing_required_parameters_in_formdata) (FormParsingTests.test_missing_required_parameters_in_requeststring) (FormParsingTests.test_missing_optional_parameters) (FormParsingTests.test_duplicate_parameters) (FormParsingTests.test_duplicate_parameters_in_requeststring): Adapt to new form fields starttime and endtime and add milliseconds to timestamps. * server/test/test_osasserver.py (OSAASDBServerTests.test_post_with_content) (OSAASDBServerTests.test_post_with_content_and_filtering) (OSAASDBServerTests.test_post_without_service_field) (OSAASDBServerTests.test_post_with_content_with_missing_fields): Adapt to new form fields starttime and endtime and add milliseconds to timestamps. 2010-03-19 Bernhard Herzog * server/osaas/formparser.py: Replace the single timestamp responsetime with two timestamps: starttime and endtime. This allows OSAAS to log the duration of requests. 2010-03-19 Bernhard Herzog * server/osaas/formparser.py (DateField.deserialize): Extend the format for timestamps with milliseconds which are formatted as a decimal point and three digits after the seconds. This format cannot be handled by strptime anymore, so we use a regular expression now. 2010-03-19 Bernhard Herzog * server/test/serversupport.py (ServerTest.run_simple_http_test): Add comment about printing the error lod for debug purposes. 2010-03-19 Bernhard Herzog * client/java/owsproxy/README.txt: Add revision to degree checkout command 2010-02-15 Stephan Holl * packaging/rpm/osaas-suse10.3-gp.spec: Updated to a new minor revision which reflects the Changes of geospatial/issue30. The resulting package is osaas-server-1.0.0-4+gp.i586.rpm 2010-01-14 Bernhard Herzog Make error handling in the db backend more robust. This should fix the main problem of geospatial/issue30 * server/osaas/dbbackend.py (DBBackend.log_exception): New method to log exceptions analogous to the other log_* methods. (DBBackend.ensure_connection): Add parameter force_new_connection that can be used to force opening a new database connection instead of reusing the existing one (DBBackend.handle_record) (DBBackend.insert_record_with_reconnect) (DBBackend.insert_record): Split handle_record into handle_record, insert_record_with_reconnect and insert_record. handle_record itself is the main entry point for the database insertion thread and does the high level error handling, i.e. logging the record contents if insertion fails for whatever reason. insert_record does the actual insertion and insert_record_with_reconnect calls insert_record but retries if the database connection has been closed unexpectedly (e.g. by a database server problem). It also forces new connections after each exception raised during the insertion to make sure the connection object is in a usable state for the next record. * server/test/test_dbbackend.py (MockDbApi.OperationalError): Add this class because it's used now by the dbbackend module. 2010-01-14 Bernhard Herzog * server/osaas/dbbackend.py (DBBackend.get_insert_statement): New method to generate and cache the insert statement for records. (DBBackend.handle_record): Use the new method to get the insert statement to avoid generating it again for each record and to make the code cleaner in preparation for better database error handling. 2009-09-18 Stephan Holl * server/demo-config.xml: corrected path to default osaas-users-file. Added 'port' and 'dbname' to postgresql-config-parameter. 2009-04-06 Stephan Holl * packaging/debian/preinst: added test which avoids creating osaas-user twice when updating the package. 2009-03-15 Stephan Holl * packaging/debian/changelog: updated revision-number * packaging/debian/init.d: made stop-target more robust, fixed a bug in the start-target * server/demo-config.xml: set the logging-path to /var/log/osaas/ instead of /var/log; this fixes permission problems. 2009-03-12 Stephan Holl * packaging/debian/preinst: Fixed a bug in the preinst-script which prevents creating the system-user osaas with corresponding group; Added LSB-parameter to make Debian Lenny happy. Most information can be found at http://wiki.debian.org/LSBInitScripts * packaging/debian/init.d, packaging/debian/osaas-server.default: Fixed a bug in the startup-script regarding the default configuration, added an option to not start OSAAS unless OSAAS_RUN is set to true * packaging/debian/changelog: updated revision 2008-12-22 Stephan Holl * packaging/debian, packaging/debian/control, packaging/debian/compat, packaging/debian/postinst, packaging/debian/preinst, packaging/debian/init.d, packaging/debian/changelog, packaging/debian/copyright, packaging/debian/conffiles, packaging/debian/rules, packaging/debian/osaas-server.default, packaging/debian/templates: New. Initial version of debian-packaging files to generate OSAAS-server-packages 2008-12-22 Stephan Holl * contrib/osaas, contrib/README.txt: Added a more specific hint about the configuration file for the startup-script. Added a variable for the osaas-user who runs the server in a RPM-based installation. This closes bug #844 2008-12-22 Stephan Holl * contrib/osaas: Fixed bug #839: status is now recognized. 2008-12-03 Stephan Holl * packaging/rpm/osaas-suse10.3-gp.spec: adopted the config-files with a %config(noreplace) entry * packaging/rpm/osaas-server-path-correction.patch: updated the patch to cope with the latest updates about the log-level 2008-12-02 Bernhard Herzog * server/osaas/http/run.py (OptionStack): Add doc-string. 2008-12-02 Bernhard Herzog * server/osaas/http/run.py (ServerProgram.create_option_parser): New option --log-level to set the log level of access-log and error-log. Defaults to INFO (ServerProgram.setup_logging): Set log level from options. * server/osaas/run.py (OSAASServerProgram.create_option_parser): New config file option LogLevel in the OSAASConfig section. * server/demo-config.xml: Add LogLevel element and corresponding documentation 2008-11-28 Bernhard Herzog * client/java/owsproxy/owsproxy.diff: Adapt to deegree trunk rev. 15164. Also, make OSAAS optional. If no OSAAS_URL is configured, deegree with osaas client patch only logs that it doesn't use OSAAS but never tries to actually log anything to OSAAS. 2008-11-24 Stephan Holl * packaging/rpm/osaas-10.3-gp.spec, packaging/rpm/osaas-server-path-correction.patch: New. RPM-SPEC-file for OpenSuSE 10.3 building an osaas-server package. It brings a patch to adopt the pathes in the config-file to fullfill the needs of a GISpatcher-package because OSAAS-server runs as a dedicated user (not as root). 2008-11-24 Stephan Holl * contrib/osaas: added PID-parameter to reflect the PID-file of osaas * server/demo-config.xml: fixed typo in PID-file-path 2008-11-21 Bernhard Herzog First step towards implementing patch #801 * server/osaas/http/run.py (ServerProgram.create_option_parser): New option --pid-file (ServerProgram.write_pid_file): New method to write the pid into a file (ServerProgram.remove_pid_file): New method to remvoe the pid file (ServerProgram.main): call write_pid_file and remove_pid_file * server/osaas/run.py (OSAASServerProgram.create_option_parser): New config file option PidFile in the OSAASConfig section * server/demo-config.xml: Add PidFile option and comments 2008-11-20 Bernhard Herzog Cope with WMS clients that omit the SERVICE field of GetMap requests * server/osaas/formparser.py (request_fields): Make the SERVICE field optional * server/osaas/recordfilter.py (default_filter): Do not check the SERVICE field. Some WMS clients do not send it and REQUEST == "GetMap" is unique enough, as GetMap is only used in WMS. * server/test/test_osasserver.py (OSAASDBServerTests.test_post_without_service_field): New test for the requests without SERVICE field. 2008-11-20 Bernhard Herzog * server/osaas/formparser.py (Record.set_fields): Set missing optional fields to None in the record. * server/test/test_formparser.py (FormParsingTests.test_missing_optional_parameters): New test for missing optional fields. 2008-11-20 Bernhard Herzog * server/test/test_osasserver.py (OSAASDBServerTests.test_post_with_content_and_filtering): Fix test failure introduced with the preceding changes. 2008-11-20 Bernhard Herzog Implement filtering of requests correctly. In particular, do not check whether all required fields are present before filtering the requests. For instance, in the old implementation GetCapabilities requests were rejected with a 400 HTTP response because of missing WIDTH fields instead of being accepted and then discarded. * server/osaas/formparser.py (Record.set_fields) (Record.validate_fields): Move the check for required fields into the new method validate_fields. Now the validation requires an extra method call and is not implicitly done by parse_formdata anymore. * server/osaas/server.py (OSAASRequestHandler.handle_owsaccounting_formdata): Call default_filter before validating the parsed record. * server/test/test_osasserver.py: Use a real GetCapabilities request so that this test really tests whether those are ignored. Before, the GetCapabilities request had all of the required fields of a GetMap request too, to make sure it actually got through to the default_filter instead of being rejected because of missing required fields. * server/test/test_formparser.py (FormParsingTests.test_missing_required_parameters_in_formdata) (FormParsingTests.test_missing_required_parameters_in_requeststring): Adapt to formparser changes. These tests now require an explicit validate_fields call. 2008-11-20 Bernhard Herzog * server/test/test_formparser.py (FormParsingTests.check_exception): Check whether an exception was raised at all. Without this, function calls which did not raise exceptions were considered as a passed test. 2008-11-20 Bernhard Herzog Implement Feature Request #822: Add support for PostGreSQL databases in addition to the Oracle database support. * server/README.txt: Add note about psycopg2 * server/demo-config.xml: Add DBConnection settings Type and Parameters and corresponding explanations * server/osaas/dbbackend.py (oracle_sequence_nextval) (postgresql_sequence_nextval): Two new functions to help with the oracle/postgresql abstraction of getting the next value from a sequence (load_db_api): New function to load a DB API on demand (DBBackend.__init__): Pass the db_api to the DBBackend as a parameter instead of getting it from a global variable. Also, connection_parameters may include a string with the all connection parameters as used by e.g. psycopg2. (DBBackend.connect): Use the intance's db_api, not a global dbapi module (DBBackend.named_parameter): New method to help building SQL statements depending on the parameter style of the db api used by the instance * server/osaas/run.py (OSAASProgramMixin.add_db_options): Add db connection parameter Parameters (OSAASServerProgram.instantiate_server): Adapt to dbbackend changes: load db api and pass opts.db_parameters to the backend * server/osaas/dbinit.py (DBInitProgram.main): Adapt to dbbackend changes: load db api and pass opts.db_parameters to the backend * server/test/test_dbbackend.py (MockDbApi, TestBackend): Instead of TestBackend, a special test version of the DBBackend class, use a mock DB-API module that's passed to a vanilla DBBackend. (TestDBBackend.new_backend): New method to make instantiating the DBBackend a little easier in the test cases (TestDBBackend.test_create_tables) (TestDBBackend.test_create_tables_error) (TestDBBackend.test_handle_record) (TestDBBackend.test_handle_record_error): Adapt test cases to the dbbackend and test infrastructure changes. 2008-11-19 Stephan Holl * contrib/osaas, contrib/README.txt: New. Added SuSE-specific init-Script to start the OSAAS-server 2007-12-10 Bernhard Herzog * client/java/owsproxy/README.txt: Add instructions to make the osaas Java client code available to deegree when building deegree. Based on a patch form Hans Plum 2007-12-10 Bernhard Herzog * server/test/test_formparser.py (FormParsingTests.test_convert_form_urlencoded): percent-escape the colons in the test data. Java does that. 2007-08-31 Jan-Oliver Wagner * README.txt: Fixed URL for developer list. * HowTo-Release.txt: Apply svn export instead of svn checkout. 2007-08-31 Jan-Oliver Wagner * HowTo-Release.txt: Fixed the tagging sample. 2007-08-31 Jan-Oliver Wagner * README.txt: New. Some notes about OSAAS in general. * HowTo-Release.txt: New. Some notes on how to create a release. 2007-08-29 Bernhard Herzog * server/README.txt: Add section about stopping the server 2007-08-29 Bernhard Herzog * server/demo-config.xml: Change column type of responsetime to "timestamp with time zone" 2007-08-29 Bernhard Herzog * client/java/src/de/intevation/osaas/OSAASClient.java: Make sure the timestamps are in UTC 2007-08-29 Bernhard Herzog * server/adduser.py, server/initosaasdb.py, server/osaas/__init__.py, server/osaas/config.py, server/osaas/dbbackend.py, server/osaas/dbinit.py, server/osaas/formparser.py, server/osaas/http/httpserver.py, server/osaas/http/run.py, server/osaas/http/threadedserver.py, server/osaas/http/threadpool.py, server/osaas/pycompat.py, server/osaas/recordfilter.py, server/osaas/run.py, server/osaas/server.py, server/osaas/userdb.py, server/startosaas.py, server/test/runtests.py, server/test/serversupport.py, server/test/support.py, server/test/test_config.py, server/test/test_dbbackend.py, server/test/test_formparser.py, server/test/test_httpserver.py, server/test/test_osasserver.py, server/test/test_run.py, server/test/test_threadedserver.py, server/test/test_threadpool.py, server/test/test_userdb.py: Fix copyright notice. Refer to GPL.txt instead of COPYING. 2007-08-29 Bernhard Herzog * server/README.txt: New. Minimal documentation * server/demo-config.xml: Example configuration * server/GPL.txt: New copy of the GPL 2007-08-29 Bernhard Herzog * client/java/README.txt: Add note about the OWSProxy patch 2007-08-29 Bernhard Herzog * client/java/owsproxy/owsproxy.diff, client/java/owsproxy/README.txt: New. The deegree OWSProxy patch 2007-08-29 Bernhard Herzog * client/java/README.txt: Add license information * client/java/LGPL.txt: New. Copy of the LGPL * client/java/src/de/intevation/osaas/OSAASClient.java, client/java/src/de/intevation/osaas/Base64Encoder.java: Refer to LGPL.txt instead of LGPL 2007-08-28 Bernhard Herzog * client/java/src/de/intevation/osaas/OSAASClient.java, client/java/src/de/intevation/osaas/Base64Encoder.java, client/java/build.xml, client/java/README.txt: New. Java client implementation 2007-08-28 Bernhard Herzog * server/test/test_dbbackend.py (TestDBBackend.test_create_tables): Adapt test case * server/osaas/dbbackend.py (DBBackend.create_tables): Make the ID column a primary key 2007-08-28 Bernhard Herzog * server/osaas/run.py (OSAASServerProgram.instantiate_server): Use the logger httpserver.error.dbbackend instead of dbbackend 2007-08-28 Bernhard Herzog * server/osaas/run.py (OSAASServerProgram.instantiate_server): Create a logger for the database backend * server/osaas/formparser.py (parse_formdata): Add the raw formdata as a field to the record so that it can be used by the database backend when logging errors * server/osaas/dbbackend.py (DBBackend.__init__): Added parameter logger (DBBackend.log_debug, DBBackend.log_error): Added. (DBBackend.ensure_connection, DBBackend.handle_record): Produce log message * server/test/test_dbbackend.py (MockConnection.rollback): Added. (MockLogger): New class to test logging in the db backend (TestDBBackend.setUp): Create a logger (TestDBBackend.method_called, TestDBBackend.check_method_called): Provide a way for tests to simulate errors in database tests (TestDBBackend.test_create_tables) (TestDBBackend.test_handle_record): Pass the mock logger to the database backend and test the logs (TestDBBackend.test_handle_record_error) (TestDBBackend.test_create_tables_error): New. Test error handling 2007-08-28 Bernhard Herzog * server/osaas/dbinit.py, server/osaas/server.py, server/test/test_httpserver.py: Remove unused imports 2007-08-28 Bernhard Herzog * server/osaas/dbinit.py: New. Helper program to initialize the database according to the settings from the config file. * server/initosaasdb.py: New. Frontend for osaas.dbinit. 2007-08-28 Bernhard Herzog * server/osaas/run.py (OSAASServerProgram.instantiate_server): Instantiate the DBBackend and pass it to the server 2007-08-28 Bernhard Herzog * server/osaas/server.py (OSAASServer.__init__): Rename the dbhandler parameter to dbbackend. If a dbbackend object is passed in, use the backend's handle_record method in the dbthreadpool * server/test/test_osasserver.py (OSAASDBServerTests.handle_record): (OSAASDBServerTests.dbhandler): Renamed to handle_record (OSAASDBServerTests.create_server): pass self as the dbbackend to the server. 2007-08-28 Bernhard Herzog * server/osaas/config.py (read_database_rules): New function to read the database rules (read_config_file): Read the database rules and store then into opts.db-rules * server/test/test_config.py (TestConfigParsing_DBRules.config): Tests for reading the database rules from the config file 2007-08-28 Bernhard Herzog * server/osaas/dbbackend.py (DBField, Insertion, DBBackend): New classes implementing the backend. (dbhandler): Removed this dummy implementation * server/osaas/server.py (OSAASServer.__init__): Do not reference the removed dbhandler function anymore. * server/test/test_dbbackend.py: New. tests for the db backend 2007-08-28 Bernhard Herzog * server/osaas/run.py (OSAASProgramMixin.add_db_options): New method to add database options (OSAASServerProgram.create_option_parser): Call add_db_options * server/test/test_config.py (TestConfigParsing_DBConnection): New class with test for the db connection options 2007-08-28 Bernhard Herzog * server/osaas/run.py (OSAASServerProgram, OSAASProgramMixin): Split the configuration handling -- the read_config_file method and the optparse_option_class -- from OSAASServerProgram into the new mix-in class OSAASProgramMixin. 2007-08-28 Bernhard Herzog * server/osaas/formparser.py (Field.deserialize): New method to support non-string data types (DateField): New class for fields with date/time values (Record.set_fields): Deserialize the values of the fields (form_fields): Turn requesttime into a DateField. * server/test/test_formparser.py (FormParsingTests.test_convert_form_urlencoded), server/test/test_osasserver.py (OSAASDBServerTests.test_post_with_content) (OSAASDBServerTests.test_post_with_content_and_filtering): Adapt to datetime/requesttime changes 2007-08-28 Bernhard Herzog * server/osaas/config.py (find_xml_path, find_xml_path_node) (find_xml_path_text): Split find_xml_path into find_xml_path_node and find_xml_path_text. (read_config_file): Adapt to find_xml_path changes. 2007-08-27 Bernhard Herzog * server/osaas/http/run.py (OptionStack.__init__): New parameter for a list a list of option definitions. (ProgramWithOptions.parse_options): pass the option parser's option_list to the OptionStack instance * server/osaas/config.py (read_config_file): Work directly on the option stack instead of passing a list of option and a setter function * server/osaas/run.py (OSAASServerProgram.create_option_parser): Do not bind the parser to self. (OSAASServerProgram.read_config_file): Adapt to config.read_config_file changes. * server/test/test_run.py (TestOptionStack.test): Adapt to OptionStack changes 2007-08-27 Bernhard Herzog * server/startosaas.py: Add missing #! line 2007-08-27 Bernhard Herzog * server/osaas/http/run.py (ProgramWithOptions.read_config_file): Fix typo in doc-string 2007-08-27 Bernhard Herzog Rework where the default options are defined * server/osaas/http/run.py (ProgramWithOptions.create_option_parser) (ServerProgram.create_option_parser): Move most of the option definitions from ProgramWithOptions to the new create_option_parser method of ServerProgram where they make more sense. Only the config-file option remains in ProgramWithOptions (ServerProgram.default_port): New class variable to specify the default port. The default port no longer needs to be passed to various methods. (ProgramWithOptions.parse_options): Adapt to create_option_parser changes. (ServerProgram.main): Adapt to parse_options changes. * server/test/test_config.py (TestConfigParsing.test) (TestConfigParsing_MissingEntries.test) (TestConfigParsing_AmbiguousEntries.test): Adapt to parse_options changes. * server/test/test_run.py (TestProgramWithOptions.test_default_options) (TestProgramWithOptions.test_options) (TestProgramWithOptions.test_adding_options) (TestProgramWithOptions.test_adding_options) (TestProgramWithOptions.test_read_config_file_method) (TestProgramWithOptions.test_optparse_option_class): Adapt to changes in server/osaas/http/run.py 2007-08-27 Bernhard Herzog * ChangeLog: started ChangeLog