diff --git a/INSTALL.md b/INSTALL.md index 96183b8..f4ddb4f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,393 +1,399 @@ OpenXCAP ======== Copyright (c) 2007-present AG Projects http://ag-projects.com Home page: http://openxcap.org Installation ------------ Components ---------- * OpenXCAP, the XCAP server itself * python3-xcaplib, an optional component that can be used for developing an XCAP client or for testing the server using the xcapclient command line utility Dependencies ------------ * Python 3 - http://www.python.org * Twisted - http://twistedmatrix.com * python-lxml - https://lxml.de * python3-application - https://github.com/AGProjects/python3-application * python3-gnutls - https://github.com/AGProjects/python3-gnutls * Fast API - https://fastapi.tiangolo.com/ * Uvicorn - https://www.uvicorn.org * SQLModel - https://sqlmodel.tiangolo.com The requirements and versions are listed in requirements.txt For OpenSIPS support python3-sipsimple is required Debian and Ubuntu ----------------- Binary packages are available for Debian and Ubuntu on i386 and amd64 architectures. Install AG Projects debian repository signing key: wget http://download.ag-projects.com/agp-debian-gpg.key sudo apt-key add agp-debian-gpg.key Add the following lines to /etc/apt/sources.list: # Debian Stable deb http://ag-projects.com/debian stable main deb-src http://ag-projects.com/debian stable main # Debian Unstable deb http://ag-projects.com/debian unstable main deb-src http://ag-projects.com/debian unstable main # Ubuntu (run this as root) echo "deb http://ag-projects.com/ubuntu `lsb_release -c -s` main" >> /etc/apt/sources.list echo "deb-src http://ag-projects.com/ubuntu `lsb_release -c -s` main" >> /etc/apt/sources.list Update the list of available packages: sudo apt-get update Install OpenXCAP server: sudo apt-get install openxcap Tar Archives ------------ OpenXCAP and related software can be downloaded as tar archives from github. Extract the software using tar xzvf openxcap-version.tar.gz. Install OpenXCAP: cd openxcap sudo python setup.py install Download python3-xcaplib and extract it using tar xzvf python-xcaplib-version.tar.gz. Install python3-xcaplib: cd python3-xcaplib sudo python setup.py install Version Control Repository -------------------------- The source code is managed using darcs version control tool from http://darcs.net. The darcs repository can be fetched with: darcs get http://devel.ag-projects.com/repositories/openxcap Other packages like python3-xcaplib, python3-sipsimple can be obtained in the same way. To obtain the incremental changes after the initial get: cd openxcap darcs pull -a The code is mirrored on Github. Configuration ------------- Database -------- Both OpenXCAP backends (Database and OpenSIPS) depend on a database engine to store service subscribers and XCAP resources. The database creation scripts are found in the scripts/ directory. Create Tables If you use OpenSIPS backend, you do not need to create any tables and configure OpenXCAP to use the same database as OpenSIPS. -If you want to setup OpenXCAP to use its own database, create the database: +If you want to setup OpenXCAP to use its own database, create the database. If you use sqlite and a venv, the database will be automatically created. mysqladmin create openxcap Add MySQL user Use the following script as template, edit it first and run it against on your database: * scripts/mysql-create-user.sql If you run it in a venv and you have the requirements installed, alembic can create the database, in debian you can go to /usr/share/doc/openxcap and run the command: alembic upgrade heads You can also the tables using the sample script: * scripts/mysql-create-tables.sql This script creates three tables: * subscriber, which is used to authenticate XCAP requests * xcap, where the XCAP documents are actually stored * watchers The subscriber table is a subset of the subscriber table from OpenSIPS, xcap table is the same as the one from OpenSIPS. For Debian Package the above sql sample scripts are installed in openxcap shared directory, in /usr/share/docs/openxcap. OpenXCAP -------- For debian package edit /etc/openxcap/config.ini. For other Linux OS copy config.ini.sample from the tar archive to the same directory. Edit config.ini with your settings. In a venv a config.ini can be read from the same location as the openxcap script. The specific settings for an installation must be set from the configuration file, which is split in several configuration sections. The [Server] section contains global settings: the IP address and port where OpenXCAP listens for client requests. The XCAP root is the context that contains all the documents across all -applications and users that are managed by the server. Only the client -requests that address the root defined here are accepted. If the root URI -has the "https" scheme, the server will listen for requests in TLS mode. The -X509 certificate and private key that will identify the server are loaded -using the values in the [TLS] section. +applications and users that are managed by the server. Only the client requests +that address the root defined here are accepted. If the root URI has the +"https" scheme and a certificate and key file are configured, the server will +listen for requests in TLS mode. The X509 certificate and private key that will +identify the server are loaded using the values in the [TLS] section. -OpenXCAP support multiple, interchangeable backend modules. Each backend +OpenXCAP supports multiple, interchangeable backend modules. Each backend knows where and how to authorize and authenticate XCAP users and where to store the XCAP documents. Currently, supported values are "Database" and "OpenSIPS", the specific settings will be taken the corresponding sections, [Database] or [OpenSIPS]. An XCAP request must be authenticated before it's handled, and the various settings are found in the [Authentication] section. A trusted peer IP list can be defined, requests matching this list will be accepted without authentication. Client requests must be authenticated in the context of a realm that is the same as the SIP domain. This realm is derived in real time for each request using the following logic: * if the user section of the XCAP URI (the section following the "users" path segment) is in the form of username@domain, the realm is taken from the domain part * some XCAP clients (e.g. CounterPath's Eyebeam), only put the username in the XCAP URI, so there is the need for a convention to determine the realm: it must be included in the XCAP root URI on the client side. For example, if the XCAP root of the server is http://example.com/xcap-root, the client should be provisioned with http://example.com/xcap-root@domain/ * if the above logic does not provide the realm, the realm will be taken from the default_realm setting of [Authentication] There are separate configuration settings for each backend. The current supported back-ends are Database and OpenSIPS. The Database section contains the database connection URI to the database where the service subscribers are kept (authentication_db_uri) and the database connection URI to the database where XCAP documents are stored. Currently, only MySQL database engine has been implemented. The OpenSIPS section contains all the settings for OpenSIPS. When using TLS you must generate an X.509 certificate and a key. Consult Internet resources for how to do this. The procedure is the same as for any other TLS server like Apache web server. Running the server ------------------ For non Debian systems copy the service file from the debian directory to /etc/systemd/system/ edit it to match your system. The reload systemd: `systemctl daemon-reload` Start OpenXCAP server: `systemctl start openxcap` You can also start OpenXCAP in no fork mode, which is useful to debug the configuration. This will not put the server in the background and will log its messages in the console where it was started: -adigeo@ag-imac3:~/work/openxcap$sudo ./openxcap --no-fork -Starting OpenXCAP 1.2.0 -Listening on: 0.0.0.0:80 -XCAP root: http://xcap.example.com/xcap-root -xcap.server.HTTPFactory starting on 80 +``` +~ ./openxcap --no-fork 5.2s  Mon Mar 24 15:55:18 2025 +INFO Started server process [99259] +INFO Waiting for application startup. +INFO Context impl SQLiteImpl. +INFO Will assume non-transactional DDL. +INFO Database initialized and migrations applied. +INFO OpenXCAP app is running... +INFO Application startup complete. +INFO Uvicorn running on http://0.0.0.0:80 (Press CTRL+C to quit) +``` OpenXCAP logs its messages to /var/log/openxcap/ and to the system log. Logging OpenXCAP logs its start, stop and error messages to /var/log/syslog or the journal. Client access requests are logged in /var/log/openxcap/access.log. You can configure the logging of the headers and bodies of client requests and responses in the Logging section of the configuration file. Adding Accounts The accounts used for authentication of XCAP requests are stored in OpenSIPS subscriber table. You can add subscribers by using your favorite OpenSIPS subscriber management tool. Check the following script that can be used to add manually account to opensips subscriber table: * scripts/add_openxcap_users.py Test Suite ---------- A test suite for testing the functionality the server is located in test in the source. If you have installed the Debian Package it is not bundled. Configure the credentials of a test account and the xcap root in a configuration file as follows: ~/.xcapclient.ini [Account_test] sip_address=alice@example.com password=123 xcap_root = http://xcap.example.com/xcap-root Replace the xcap_root with the same xcap_root configured in the server and make sure the hostname points to the IP address where the server listens to. Add the same test account to the OpenSIPS subscriber table: INSERT INTO `subscriber` (username,domain,password,ha1) VALUES ('alice','example.com','1234', 'fd7cab2287702c763e7b318b7fb2451a'); Run the test suite: - +``` ~$./test.py test_operations1 (test_resourcelists.DocumentTest.test_operations1) ... ok test_operations2 (test_resourcelists.DocumentTest.test_operations2) ... ok test_operations3 (test_resourcelists.DocumentTest.test_operations3) ... ok test_operations4 (test_resourcelists.DocumentTest.test_operations4) ... ok test_conditional_PUT (test_etags2.ETagTest.test_conditional_PUT) ... ok test_conditional_PUT_2 (test_etags2.ETagTest.test_conditional_PUT_2) ... ok test_get (test_watchers.Test.test_get) ... ok test_pidf_manipulation (test_presrules.PresenceRulesTest.test_pidf_manipulation) ... ok test_conditional_GET (test_etags.ETagTest.test_conditional_GET) ... ok test_conditional_PUT (test_etags.ETagTest.test_conditional_PUT) ... ok test_conditional_PUT_2 (test_etags.ETagTest.test_conditional_PUT_2) ... ok test_conditional_GET (test_etags.ETagTest2.test_conditional_GET) ... ok test_conditional_PUT (test_etags.ETagTest2.test_conditional_PUT) ... ok test_etag_parsing (test_etags.ETagTest2.test_etag_parsing) ... ok test_pidf_manipulation (test_pidf.PIDFTest.test_pidf_manipulation) ... ok test_xpath10_valid (test_xpath.XPathTest.test_xpath10_valid) ... ok test_xpath11_valid (test_xpath.XPathTest.test_xpath11_valid) ... ok test_xpath12_valid (test_xpath.XPathTest.test_xpath12_valid) ... ok test_xpath1_valid (test_xpath.XPathTest.test_xpath1_valid) ... ok test_xpath2_invalid (test_xpath.XPathTest.test_xpath2_invalid) ... ok test_xpath3_invalid (test_xpath.XPathTest.test_xpath3_invalid) ... ok test_xpath4_invalid (test_xpath.XPathTest.test_xpath4_invalid) ... ok test_xpath5_invalid (test_xpath.XPathTest.test_xpath5_invalid) ... ok test_xpath6_invalid (test_xpath.XPathTest.test_xpath6_invalid) ... ok test_xpath7_invalid (test_xpath.XPathTest.test_xpath7_invalid) ... ok test_xpath8_invalid (test_xpath.XPathTest.test_xpath8_invalid) ... ok test_xpath9_valid (test_xpath.XPathTest.test_xpath9_valid) ... ok test_global_auth (test_auth.AuthTest_org_openmobilealliance_pres_rules.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_org_openmobilealliance_pres_rules.test_users_auth) ... ok test_global_auth (test_auth.AuthTest_pidf_manipulation.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_pidf_manipulation.test_users_auth) ... ok test_global_auth (test_auth.AuthTest_pres_rules.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_pres_rules.test_users_auth) ... ok test_global_auth (test_auth.AuthTest_resource_lists.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_resource_lists.test_users_auth) ... ok test_global_auth (test_auth.AuthTest_rls_services.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_rls_services.test_users_auth) ... ok test_global_auth (test_auth.AuthTest_test_app.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_test_app.test_users_auth) ... ok test_global_auth (test_auth.AuthTest_watchers.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_watchers.test_users_auth) ... ok test_global_auth (test_auth.AuthTest_xcap_caps.test_global_auth) ... ok test_users_auth (test_auth.AuthTest_xcap_caps.test_users_auth) ... ok test400_1 (test_errors.ErrorsTest.test400_1) ... ok test400_2 (test_errors.ErrorsTest.test400_2) ... ok test404 (test_errors.ErrorsTest.test404) ... ok test405 (test_errors.ErrorsTest.test405) ... ok test409 (test_errors.ErrorsTest.test409) ... ok test_gibberish (test_errors.ErrorsTest.test_gibberish) ... ok test_delete (test_element.ElementTest.test_delete) ... ok test_get (test_element.ElementTest.test_get) ... WARNING: test with URI in att_value is disabled ok test_put_error (test_element.ElementTest.test_put_error) ... ok test_creation (test_element_put.PutElementTest.test_creation) Testing different ways of inserting an element as described in examples from Section 8.2.3 ... ok test_creation_starattr (test_element_put.PutElementTest.test_creation_starattr) Testing PUT requests of form '*[@att="some"]' which require looking into body of PUT ... ok test_replacement (test_element_put.PutElementTest.test_replacement) ... ok test_schema (test_xcap_caps.XCAPCaps.test_schema) ... ok test_delete (test_attribute.AttributeTest.test_delete) ... ok test_get (test_attribute.AttributeTest.test_get) ... WARNING: test with URI in att_value is disabled ok test_put (test_attribute.AttributeTest.test_put) ... ok test_ns_bindings (test_nsbindings.NSBindingsTest.test_ns_bindings) ... ok test_has_global (test_global.TestGlobal.test_has_global) ... ok test_no_global (test_global.TestGlobal.test_no_global) ... ok test_errors (test_fragment.FragmentTest.test_errors) ... ok test_success (test_fragment.FragmentTest.test_success) ... ok test_operations1 (test_rlsservices.DocumentTest.test_operations1) ... ok test_operations2 (test_rlsservices.DocumentTest.test_operations2) ... ok test_operations3 (test_rlsservices.DocumentTest.test_operations3) ... ok test_operations4 (test_rlsservices.DocumentTest.test_operations4) ... ok ---------------------------------------------------------------------- Ran 68 tests in 1.491s OK - +``` Notes: - Running the test suite for a given user will result in the destruction of all xcap documents belonging to that user - Replacing 'test.py' with 'test_something.py' will run only the tests defined in test_something.py xcapclient ---------- A command line client is available in the python-xcaplib package available in same download repository of OpenXCAP server. The client can be used to manipulate full or partial XML documents on XCAP servers (not limited to OpenXCAP) and has a bash shell command line completion facility that makes it very easy to browse through the structure of XML documents based on XPATH. See README of python3-xcaplib package for examples on how to create/retrieve a document. diff --git a/debian/changelog b/debian/changelog index f5d97c2..04eff83 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,537 +1,538 @@ -openxcap (3.0) UNRELEASED; urgency=medium +openxcap (3.0) unstable; urgency=medium * Ported code to Python 3 * Modernized code * Moved configuration * Drop Twisted Web2 and use FastAPI * Drop bundled xml.SAX * Drop unused code * Refactored backends to use SQLModel * Use async database connections * Updated documentation * Changed xml applications to work with FastAPI * Use async where needed * Reworked debian packaging * Added typing in python code + * Support running behind a reverse web proxy * Updated copyright years * Updated License * Fixed tests -- Tijmen de Mes Tue, 18 Mar 2025 10:28:30 +0100 openxcap (2.7.1) unstable; urgency=medium * Fixed installing SIP Thor signal handlers * Switch SIP Thor publisher transport to TCP * Improved logging -- Adrian Georgescu Sun, 12 Apr 2020 02:35:27 +0200 openxcap (2.7.0) unstable; urgency=medium * Refactored logging - Adapted to logging changes in python-application 2.8.0 - Simplified and compacted the web access logging code - Separated the web access logger from the main logger - Got rid of logging filters which improved performance - Reorganized logging related configuration options * Refactored openxcap script and runtime logic - Adapt to process changes in python-application 2.8.0 - Use argparse to handle command line arguments - Replaced --pid with --config-dir and --runtime-dir - Added --systemd option for running as a systemd service - Added --debug option to enable verbose logging - Added --debug-memory option to eanble memory debugging - Added code to wait for network to become available on startup * Some PEP-8 compliance fixes * Removed no longer used code * Improved settings description and fixed default value * Added boring file * Fixed web logging code * Improved formatting for logged requests and responses * Simplified credential factories and removed tweaks * Embedded the twisted.web2 framework * Removed no longer needed dependency * Updated python-application version dependency * Split debian package dependencies one per line * Refactored debian packaging - Increased debian compatibility level to 11 - Use pybuild as the debian build system - Updated build and package dependencies - Switched from init script to systemd service - Install README to the debian package docs - Removed no longer used pycompat and pyversions debian files - Removed no longer used openxcap.dirs and openxcap.install debian files - Install the configuration sample and extra data files from setup.py * Removed opensips configuration sample * Removed duplicate changelog file * Do not include python bytecode files in the test directory * Synchronized LICENSE with debian/copyright and updated copyright years * Added debian logrotate file * Removed package prefix from service file name * Switched from WatchedFileHandler to FileHandler for access logs * Made MANIFEST.in more explicit and avoid unnecessary prune commands * Added changelog for version 2.7.0 * Removed commented out variable in debian rules * Explicitly use python2 in shebang lines * Removed old test for xcaplib version * Ordered imports alphabetically * Increased debian standards version to 4.5.0 * Updated copyright years -- Dan Pascu Fri, 14 Feb 2020 14:10:17 +0200 openxcap (2.6.1) unstable; urgency=medium * Increased debian compatibility level to 9 * Updated debian standards version * Added dependency on lsb-base * Updated debian maintainer * Fixed debian package description * Do not add INSTALL file into the debian package -- Dan Pascu Wed, 01 Feb 2017 09:41:10 +0200 openxcap (2.6.0) unstable; urgency=medium * Don't request a client certificate for HTTPS connections * Raised python-gnutls version dependency -- Saul Ibarra Wed, 12 Oct 2016 12:55:42 +0200 openxcap (2.5.0) unstable; urgency=medium * Fixed deleting documents in bulk in SIPThor backend * Adapted to API changes in python-gnutls 3.0 and SIPThor * Improved Debian init file -- Saul Ibarra Thu, 10 Mar 2016 12:18:46 +0100 openxcap (2.4.0) unstable; urgency=medium * Removed runtime dependency check * Updated copyright years -- Saul Ibarra Wed, 06 Jan 2016 15:14:03 +0100 openxcap (2.3.0) unstable; urgency=medium * Refactor xcapdiff publishing for OpenSIPS backend * Fix dependency name * Drop dependency on twisted-web * Raise python-application version dependency * Add dependency on python-sipsimple -- Saul Ibarra Mon, 14 Dec 2015 16:47:26 +0100 openxcap (2.2.0) unstable; urgency=medium * Add a 30 second timeout to avoid keeping TCP lingering connections * Removed deprecated port setting * Raise open file descriptor limit on start * Lower HTTP input timeout to 30 seconds * Dropped Python < 2.7 support -- Saul Ibarra Wed, 03 Dec 2014 12:35:57 +0100 openxcap (2.1.0) unstable; urgency=low * Adapted to changes in SIP SIMPLE SDK package structure * Added custom application to purge all server data (org.openxcap.purge) * Separate pres-rules and OMA pres-rules applications * Fixed creating route header for xcap-diff * Fixed setting port number in DB URL * Fixed unicode issues with SIPThor backend * Refactor icon application to conform to standards * Allow OpenXCAP to be started as non-root when running in foreground * Send xcap-diff PUBLISH with expires set to 0 -- Saul Ibarra Thu, 10 Jan 2013 01:17:03 +0100 openxcap (2.0.1) unstable; urgency=low * Added xcap-diff notification also for resource-lists and rls-services * Added disabled_applications setting * Use the local xml.xsd instead of importing the schema remotely * Added missing XML declaration to xcap-directory schema * Adapted to changes in python-application * Bumped debian standards to version 3.9.2 * Reworked Debian packaging -- Saul Ibarra Tue, 07 Jun 2011 08:32:10 +0200 openxcap (2.0.0) unstable; urgency=low * Added OMA XDM support for Buddy Lists Management * Unquote external references in resource-lists and pres-rules * Fixed resource lists and RLS services schemas * Added test case for conditional PUT with If-Match * Use allow_external_references setting also for entry-ref elements * Fixed PUT with If-Match header * Fixed UTF-8 encoding/decoding in SIPThor backend * Don't allow relative URIs to link to another users' resource list entry * Check external references for pres-rules and resource-lists * Use a single appusage for pres-rules * Don't allow external-ref paths which don't point to an 'entry' * Check entry-ref entries in resource-lists * Added test case for testing If-None-Match * in PUT requests * Don't allow PUT for xcap-caps * Added XPath tests to the test suite * Raise DocumentSelectorError if selector doesn't start with slash * Use appusages 'id' attribute as the AUID * Fixed support for XCAP default document namespace * Generate NodeParsingError when specified namespace is not found * Merged xcap-directory application definition with other applications * Fixed directory application AUID * Updated sample OpenSIPS mysql dburi -- Adrian Georgescu Tue, 28 Sep 2010 11:29:23 +0200 openxcap (1.2.1) unstable; urgency=low * Don't generate exception if unknown namespace is specified * Fix crash with huge logs produced by icon application * Modified log_access not to assume response.stream exists * Support full and partial URLs * Fix packaging for Debian and Ubuntu distributions -- Saul Ibarra Wed, 23 Jun 2010 11:18:49 +0200 openxcap (1.2.0) unstable; urgency=low [ Adrian Georgescu ] * Removed python-xml dependency * Use Account_test for running the test suite * Changed MySQL scripts doc field to mediumblob * Removed unused auids, keep only the standard ones * Use OMA standard names for icon directory applications * Dropped SQLite support which wasn't finished. * Make MySQLdb reconnect active only for version 1.2.2 * Updated readme * Detail allowed MIME types in error response * Icon application GET returns the image itself, not an XML * Fixed size constraint and don't delete previous icons on PUT * Made some error messages more clear * Deprecated port parameter, now port should be specified in root URI * Added icon application support * Added 'public GET applications'. Public GET applications are not asked for auth for GET requests, just for PUT * Fixed xcap-directory listing in SIPThor backend * Support for listing more than one document of the same type in xcap-directory * Added xcap-directory application (OMA TS XDM Core) * If no trusted_peers is specified default to none instead of any * Fixed allow subnets in trusted_peers * Reworked xcap-caps using etree * Use common-policy schema for validating dialog-rules documents * Fixed refresh of OpenSIPS watchers when using dialog-rules * Made presence rules use presence-rules.xsd schema * Added support for dialog-rules [ Saul Ibarra ] * Fixed logging with latest python-application * Remove python-xml dependency by taking sax package from PyXML project * Changed default authentication type to digest * Renamed watchers application to org.openxcap.watchers * Fixed test suite for resource lists and rls services * Bumped debian standards to version 3.8.4 * Restructured all appusages * Updated maintainer and uploaders * Refactored logging system and added more information * Updated documentation and install files * Log fatal error and exit when must-have settings are missing * Clarified configuration sample comments * Renamed dialog-rules to org.openxcap.dialog-rules -- Saul Ibarra Mon, 26 Apr 2010 08:46:56 +0200 openxcap (1.1.3) unstable; urgency=low * Fixed digest authentication bug related to the opaque attribute * Added more python packages to the runtime dependency checking -- Adrian Georgescu Thu, 12 Nov 2009 15:01:35 +0100 openxcap (1.1.2) unstable; urgency=low * Fixed debian/rules and added dependencies an newer cdbs and debhelper * Bumped Standerds-Version to 3.8.3 -- Lucian Stanescu Thu, 03 Sep 2009 11:04:01 +0300 openxcap (1.1.1) unstable; urgency=low * Merged the ThorNode section of the configuration file into ThorNetwork * Fixed config.ini.sample to fit in 80 chars width * Better TLS defaults in the sample configuration file * Better logging of exceptions in the script * Adapted code to the latest API changes in python-application 1.1.5 * Fixed handling of XMLRPC errors in publish_xcapdiff of OpenSIPS interface * Fixed lintian warning about missing misc:Depends * Fixed default value for ServerConfig.applications setting * Removed unused config file * Updated include and prune lists in MANIFEST.in * Fixed backend config setting default type * Removed unused imports * Simplified and updated debian build dependencies * Updated requirements in INSTALL * Updated debian dependencies * Simplified dependency checking by using the application.dependency module * Changed how the system config directory is set to use latest API * Updated Python dependency to 2.5 in INSTALL * Moved todo items to wiki tickets * Update copyright text * Bumped standards version and version for python-application * Fixed reading OpenSIPS xmplrpc_url config option * Added version check for python-application on startup * Removed _datatypes attribute from ConfigSection subsclasses * Reverted classmethods of ConfigSection class to functions * Removed ConfigFile.read_settings() overriden method * Made "algorithm"/"stale" unquoting patch Python 2.4 compatible * Make "algorithm" and "stale" header parameters not quoted * Restart software on debian upgrade -- Adrian Georgescu Tue, 04 Aug 2009 13:25:19 +0200 openxcap (1.1.0) unstable; urgency=low * Renamed OpenSER to OpenSIPS (requires changes to openxcap configuration) * Require python-lxml of version at least 2.0.7-1 * Require python-gnutls of version at least 1.1.8 * Require python-application of version at least 1.1.0 * Test suite: requires xcaplib of version at least 1.0.9 * Reply with 404 if no realm is provided and no default realm is defined * Added Content-Type: text/plain to ResourceNotFound error * xcap.errors: rename ErrorResponse in XMLErrorResponse * Fixed openxcap.org/ticket/85: Singleton was called with different arguments * Log all the information available for 500 errors by default * Updated documentation and installation documentation * Prefer epollreactor or kqreactor to pollreactor if available * Test suite: add --start-server option (requires eventlet) * Remove hardcoded setting for xmlrpc_url; Don't start the server if it was not specified for opensips backend -- Adrian Georgescu Wed, 08 Apr 2009 00:02:54 +0200 openxcap (1.0.7) unstable; urgency=low * Use pysupport instead of pycentral for debian packaging * Log errors to syslog unless log_error_to_file=yes in [Logging] section * Fixed parsing node selectors of type /*[1] and added tests for this case * Fixed "unbound prefix" bug and added a test case. A new function is added that checks well-formedness of the elements. * Only import gnutls when TLS is used * Fixed "watchers" application to generate and insert ETag header in the response * Added test for "watchers" application (test_watchers.py) * Removed ./debian/openxcap.postinst * Updated sipthor interface for SIPThor 1.0.1 * Replace openser-mi-proxy with opensips-mi-proxy in documentation * Improved INSTALL and synced it with the wiki * Updated README and TODO * Corrected name of pres-rules auid * Test system: updated to use python-xcaplib 1.0.8 * Test system: added -r, --repeat option * Test system: added support for "--client eventlet" * Test system: added support for "--start-server config_file" * Test system: fixed to use original options for each test * Test system: added support for starting and using in-process server (requires eventlet) * Test system: added undocumented '--client xcapclient' option. It makes test system to use xcapclient tool instead of xcaplib package. This is only useful for testing xcapclient. * More detailed report for test_auth.py * Fixed typo in the http error response * Made xcap.uri module accept parameter of uri to parse when run as script (for simple troubleshooting) -- Adrian Georgescu Fri, 30 Jan 2009 10:59:44 +0100 openxcap (1.0.6) unstable; urgency=low * fixed: namespace bindings in the request weren't parsed correctly * fixed: pid file was removed on package upgrade -- Denis Bilenko Thu, 16 Oct 2008 17:01:24 +0200 openxcap (1.0.5) unstable; urgency=low * fixed: openxcap with 'openser' backend couldn't be started if enable_publish_xcapdiff=yes * fixed a couple of potential Internal Server Errors * added python-mysqldb to dependencies * added node to error as required by RFC * nicer error messages in several cases -- Denis Bilenko Wed, 15 Oct 2008 10:41:26 +0200 openxcap (1.0.4) unstable; urgency=low * Disabled authentication for requests in /global/ context, because it didn't work well. It is safe, because the only use for /global/ now is retrieving xcap-caps. -- Denis Bilenko Tue, 07 Oct 2008 19:34:47 +0200 openxcap (1.0.3) unstable; urgency=low * Fixed: requesting XCAP root resulted in 500 (now 404) * Fixed: multiple matches resulted in 500 (now 404) * Improved error responses -- Denis Bilenko Mon, 06 Oct 2008 06:33:45 +0200 openxcap (1.0.2) unstable; urgency=high * Fixed and improved logging. it now logs much more then before and can be customized * Fixed bug: xcap-caps application was not available under /global/ tree * Added experimental support for sqlite database * Fixed multiple xcap roots/aliases. having more then one root= entry in the config is legal now * Fixed bug that made OpenXCAP dependent on specific MySQLdb versions (those with 'reconnect' parameter) * Fixed pyxml issue: previously, if pyxml was not installed, OpenXCAP would fail with obscure exception on element operation. Now it refuses to start. * Fixed URI parsing * Better error reporting in many cases * Many more bugs fixes -- Denis Bilenko Fri, 03 Oct 2008 05:42:45 +0200 openxcap (1.0.1) unstable; urgency=low * Added proper URI parsing, so att_value may contain slashes now * Fixed schemas not to fetch files from the internet on initialization -- Denis Bilenko Fri, 12 Sep 2008 10:15:54 +0200 openxcap (1.0.0) unstable; urgency=high * Added RLS services (RFC 4662 and RFC 4826) * Added support for xcap-diff based on draft-ietf-simple-xcap-diff-09 * Added partial get/put/delete of elements in the XCAP documents * Added test suite for rls-services, resource-lists and partial updates * Many bug fixes from field experiences * Development status from beta to production * Switched to Python 2.5 * Improved documentation and testing suite * Changed license to GPL * Fixed MySQL operational error (2006) -- Adrian Georgescu Mon, 08 Sep 2008 15:32:07 +0200 openxcap (0.9.9.5) unstable; urgency=low * Fixed a wrongly named positional argument -- Ruud Klaver Thu, 12 Jun 2008 10:58:11 +0200 openxcap (0.9.9.4) unstable; urgency=low * Fixed one keyword argument too many -- Ruud Klaver Tue, 03 Jun 2008 10:38:27 +0200 openxcap (0.9.9.3) unstable; urgency=low * Changed some lxml function argument from positional to keyword -- Ruud Klaver Tue, 03 Jun 2008 10:32:06 +0200 openxcap (0.9.9.2) unstable; urgency=low * Changed debian package to not automatically start the server on install * Fix for dburi being updated in SIPThor backend * Fixed the SIPThor module to not make a new connection on every transaction -- Ruud Klaver Wed, 14 May 2008 11:18:00 +0200 openxcap (0.9.9.1) unstable; urgency=low * Removed memcache access from the SIPThor backend to reflect change in architecture * Have SIPThor backend gracefully disconnect by having it install its own signal handlers. Backends now include a installSignalHandlers boolean variable. -- Ruud Klaver Mon, 31 Mar 2008 13:23:19 +0200 openxcap (0.9.9) unstable; urgency=low * Fixed node selector decoding * Save presence rules documents under the same file name ("index.xml") * Moved trusted_peers to [Authentication] config section * Default xcap_table to "xcap" in config.ini.sample * Improved URI logging * DELETE of a full document doesn't produce an Etag in the 200 response * Added SIP Thor backend -- Mircea Amarascu Mon, 21 Jan 2008 23:26:29 +0200 openxcap (0.9.8) unstable; urgency=low * Support subdirectories by using doc_uri column in xcap table. * Updated MySQL xcap table structure -- Adrian Georgescu Fri, 09 Nov 2007 18:48:51 +0100 openxcap (0.9.7) unstable; urgency=low * Prevented Twisted from printing SQL login info in the log * Added some info to INSTALL about tested versions -- Ruud Klaver Fri, 19 Oct 2007 14:33:08 +0200 openxcap (0.9.6) unstable; urgency=low * Fixed trusted peer authentication bug against the latest Twisted svn trunk. -- Mircea Amarascu Fri, 19 Oct 2007 08:29:13 +0300 openxcap (0.9.5) unstable; urgency=low * Changed watcher application to reflect new database column names of OpenSER revision 2923 * Changed default SQL table name from "xcap" to "xcap_xml" -- Adrian Georgescu Wed, 17 Oct 2007 16:40:05 +0200 openxcap (0.9.4) unstable; urgency=low * Added "watchers" application to query OpenSER presence watchers. * Include debian directory in the source archive. -- Mircea Amarascu Wed, 10 Oct 2007 17:19:12 +0300 openxcap (0.9.3) unstable; urgency=low * Adjusted OpenXCAP to use python-application >= 1.0.9 * Set TLS mode based on http/https scheme of the root URI. * document_validation defaults to Yes in config.ini.sample -- Mircea Amarascu Wed, 19 Sep 2007 15:20:16 +0300 openxcap (0.9.2) unstable; urgency=low * Changed the name and structure of xcap_xml table. * Added the 'type' param to refreshWatchers OpenSER command. * Added configuration option to disable XML schema validation. * Updated XML scheme to allow EyeBeam resource lists to pass validation. * Update debian dependencies. -- Mircea Amarascu Wed, 19 Sep 2007 10:03:19 +0300 openxcap (0.9.1) unstable; urgency=low * Fixed the debian control file. * Fixed some lintian warnings. * Added MANIFEST.in file. * Removed no longer needed remove-version-control rule. * Fixed install rule name. * Do not copy config.ini.sample as it is into /etc/openxcap/ * Added tls directory and .placeholder to prevent it from being purged. * Use relative paths for tls certificates in config.ini -- Dan Pascu Mon, 03 Sep 2007 12:42:47 +0300 openxcap (0.9.0) unstable; urgency=low * Initial release. -- Mircea Amarascu Wed, 29 Aug 2007 14:03:17 +0300