aoserv-client-1.92.1-SNAPSHOT
Snapshot Notes
- 
New constant FirewallZone.NM_SHAREDas seen in Rocky Linux 9.
- Updated to Checkstyle 10.21.1.
- Minimum Java version changed from 1.8 to 11.
- Removed Linux group and user "centos" to since no longer supporting any CentOS deployments in Amazon EC2 (and other cloud environments) via the cloud-init package.
- The httpd package in Rocky 9 includes its own httpd@.service.
- Added support for HTTP/2 and Brotli compression in Rocky 9.
aoserv-client-1.92.0
Release Notes
- 
Enabled control over Tomcat maxParameterCount:- Added PrivateTomcatSite.getMaxParameterCount()
- Added web.tomcat.PrivateTomcatSite.maxParameterCount.setcommand.
- Added SharedTomcat.getMaxParameterCount()
- Added web.tomcat.SharedTomcat.maxParameterCount.setcommand.
 
- Added 
- 
Enabled control over Tomcat undeployOldVersionssetting in support of parallel deployments:- Added PrivateTomcatSite.getUndeployOldVersions()
- Added web.tomcat.PrivateTomcatSite.undeployOldVersions.setcommand.
- Added SharedTomcat.getUndeployOldVersions()
- Added web.tomcat.SharedTomcat.undeployOldVersions.setcommand.
 
- Added 
aoserv-client-1.91.8
Release Notes
- Added underscore to set of allowed characters in DNS CNAME entries.
- Added support for Rocky Linux 9.
aoserv-client-1.91.7
Release Notes
- Added support for PostgreSQL 15.
- Added support for Apache Tomcat 10.1.
aoserv-client-1.91.6
Release Notes
- Updated dependencies.
aoserv-client-1.91.5
Release Notes
- Explicitly closing JDBC resources.
aoserv-client-1.91.0
aoserv-client-1.90.0
Release Notes
- Added transaction types "discount" and "support" for new AOApps Premium Support.
- 
Monthly charges now order by idbeforetypeandcreated. This is so fine-grained line items appear in matching order for new AOApps branding
- 
Monthly charges now use package_definitions.displayas their description, instead of the previous default based onpackage_definitions.monthly_rate_transaction_type. This provides more meaningful billing line items, instead of just "Virtual Dedicated Server" repeated.
- No longer count IP addresses that are loopback, wildcard, or unique-local.
- Performed Checkstyle clean-up:
- Renamed AOServClientConfigurationtoAoservClientConfiguration.
- Renamed AOServConnectiontoAoservConnection.
- Renamed AOServConnectortoAoservConnector.
- Renamed AOServObjecttoAoservObject.
- Renamed AoservProtocol.CommandIDtoAoservProtocol.CommandId.
- Renamed AOServReadabletoAoservReadable.
- Renamed AOServStreamabletoAoservStreamable.
- Renamed AOServTabletoAoservTable.
- Renamed AOServWritabletoAoservWritable.
- Renamed AOSHtoAosh.
- Renamed SQLComparatortoSqlComparator.
- Renamed SQLExpressiontoSqlExpression.
- Renamed SSLCasttoSqlCast.
- Renamed SQLColumnJointoSqlColumnJoin.
- Renamed SQLColumnValuetoSqlColumnValue.
- Renamed SSLConnectortoSslConnector.
- Renamed SimpleAOClienttoSimpleAoservClient.
- Renamed Table.TableIDtoTable.TableId.
- Renamed Table_NametoTableName.
- Renamed TCPConnectortoTcpConnector.
 
- Renamed 
aoserv-client-1.89.0
Release Notes
- Added support for PostgreSQL 14.
- Now properly restoring Thread interrupted state on InterruptedException.
- Added missing NoSuchElementExceptionfrom implementations ofIterator.
- Added support for git-shell.
- Added support for Jenkins.
- Added resource definitions in support of new AOApps branding.
- Removed package category and related signup forms for backup and colocation.
- Added support for SonarQube.
aoserv-client-1.88.0
Release Notes
- Updated dependencies.
- notify()replaced with- notifyAll()since more than one thread can be waiting.
aoserv-client-1.86.0
Release Notes
- Added support for DNS Certification Authority Authorization (CAA) Resource Records.
aoserv-client-1.85.0
Release Notes
- Now supports Java 9+ modules with included module-info.class.
aoserv-client-1.84.18
Release Notes
- Removed unsupported operating systems Gentoo, Mandrake, Mandriva, and RedHat.
aoserv-client-1.84.16
Release Notes
- Added support for Apache Tomcat 10.0.
aoserv-client-1.84.13
Release Notes
- 
Split development-only classes into a new sub-project in devel/. This sub-project is used only for development and is never deployed to artifact repositories.
- Updated dependencies.
- Fixed NPE in master_processes.command.
- 
Eliminated unnecessary uses of java.io.ObjectInputValidationwhere immediate validation fromreadObject(…)orreadExternal(…)is sufficient.
- New "schema"."AoservProtocol":1.84.13
- New "schema"."Type":HashedKey
- Removed linux.Server.daemon_key, now stored inaoserv-daemon.properties
- 
Removed com.aoindustries.aoserv.client.pki.HashedPassword, using the newercom.aoindustries.security.HashedPasswordinstead.
- Removed SimpleAOClient.hash(String), which used the obsolete SHA-1 algorithm.
aoserv-client-1.84.12
Release Notes
- Resolved editor warnings.
- AOServConnectionnow implements- Closeablefor use in try-with-resources. This is a behind-the-scenes detail and does not change the public API.
- Updated dependencies.
- Added support for PostgreSQL 13.
aoserv-client-1.84.10
Release Notes
- New Linux group and user "centos" to support deployments in Amazon EC2 (and other cloud environments) via the cloud-init package.
aoserv-client-1.84.8
Release Notes
- Monitoring of MySQL replication slaves is now disabled when monitoring of the slave's host is disabled.
aoserv-client-1.84.6
Release Notes
- 
Fixed translations properly encode 'as''inside resource bundles.
- Updated dependencies.
aoserv-client-1.84.1
Release Notes
- 
Fixed IndexOutOfBoundsExceptiononAOServTable.removeProgressListener(…)andAOServTable.removeTableListener(…).
- 
Added MySQL collation utf8mb4_general_ci.
aoserv-client-1.84.0
Release Notes
- Minimum Java version changed from 1.7 to 1.8.
- 
Reduced use of property substitutions in pom.xml. This is to help 3rd-party parsers that fail to perform full Maven-compatible substitutions.
- Fixed bug wrong column returned for "canceled".
- Added support for PostgreSQL 12.
- Connection pool statistics and password checker results HTML generation now support both SGML and XML serializations.
- Now supporting Tomcat's tomcatAuthenticationconfiguration:- Added column web.tomcat.PrivateTomcatSite.tomcatAuthentication
- Added AOSH command web.tomcat.PrivateTomcatSite.tomcatAuthentication.set
- Added column web.tomcat.SharedTomcat.tomcatAuthentication
- Added AOSH command web.tomcat.SharedTomcat.tomcatAuthentication.set
 
- Added column 
- AOServConnector.getConnector(…)may now be obtained without any checked exceptions:- AOServClientConfigurationthrows- ConfigurationException
- AOServConnector.getConnector(…)throws- ConfigurationException
- Removed other unnecessary uses of IOExceptionincorrectly left inSchemaconstructors.
 
- Fixed ambiguous definitions of PROTOCOL, now:- TCPConnector.TCP_PROTOCOL
- SSLConnector.SSL_PROTOCOL
 
- TicketLoggingHandlersignificantly reworked to be compatible with- logging.properties.
- AOServConnector.getConnector(…)no longer takes a- Loggerargument. It will use a logger based on the selected implementation class.
- Updated dependencies.
- Changed default CVS repository permissions from 0770to02770.
aoserv-client-1.83.1
Release Notes
- Added new system roles for PostgreSQL 11.
- Reserved PostgreSQL username and database "postgresmon".
- New isSpecial()methods instead of several places using the same list.
- New canPostgresIdent()methods to control which Linux accounts can authentication to PostgreSQL via "peer" and "ident".
- May not enable/disable special users and databases.
- May not set the passwords of special users.
- May not check if passwords set on special users.
- May not grant/revoke access to/from special users and databases.
- 
New isScramSha256()methods to determine if a version of PostgreSQL supports scram-sha-256 authentication.
- 
Now allowing MySQL and PostgreSQL reserved words in user names and database names.
All uses are `…`or"…"quoted to avoid any ambiguity.
- PostgreSQL database names may now contain capital letters, hyphen (-), period (.), and space ( ), too.
- MySQL database names may now contain hyphen (-), period (.), and space ( ), too.
- Added multi-currency support to the billing system:
- New table billing.Currency
- Changed billing.MonthlyCharge.ratetomoneytype
- New table billing.NoticeLog.balance
- Removed column billing.NoticeLog.balance
- Renamed column billing.PackageDefinition.setup_feetosetupFeeand changed tomoneytype
- Renamed column billing.PackageDefinition.monthly_ratetomonthlyRateand changed tomoneytype
- Renamed column billing.PackageDefinitionLimit.additional_ratetoadditionalRateand changed tomoneytype
- Changed billing.Transaction.ratetomoneytype
- Removed column payment.Payment.currency_code
- Changed payment.Payment.amounttomoneytype
- Renamed column payment.Payment.tax_amounttotaxAmountand changed tomoneytype
- Renamed column payment.Payment.shipping_amounttoshippingAmountand changed tomoneytype
- Renamed column payment.Payment.duty_amounttodutyAmountand changed tomoneytype
 
- New table 
- No longer billing for disabled Java VMs.
- Renamed remaining uses of BusinesstoAccount.
- Renamed remaining uses of BusinessAdministratortoAdministrator.
- Renamed remaining uses of BusinessServertoAccountHost.
- Renamed remaining uses of BusinessProfiletoProfile.
- Renamed remaining uses of ServertoHost.
- 
Added methods to get timestamps in longorLongin addition tojava.sql.Timestamp. These methods may offer higher performance when aTimestampis not needed.
- 
Changed from Calendar.getInstance()tonew GregorianCalendar()to work correctly independent of locale settings.
- Updated for compatibility with aocode-public-3.1.0.
- Specific management of time zones:
- DATEtype always managed in GMT time zone.
- TIMEtype parsed and displayed in JVM local time zone.
- Billing and accounting time ranges are selected and processed in GMT time zone.
 
- Removed unused sort fields from TransactionSearchCriteria
- Table, column, and type names now support - "-escaping, with- ""being used to represent a quoted quote. This is done because table and column names now contain- .dot characters.- In the current implementation, AOSH tokenizes on - ", much like BASH. Thus, these double quotes should be either escaped or contained within single quotes- '. A future update may make AOSH parse with quote- "support compatible with the this new mechanism, with- 'single quotes used for other quoting.
- 
Renamed AOSH command add_transactiontobilling.Transaction.add, and it now accepts a time with a value ofnow,today, YYYY-MM-DD (date in GMT) or YYYY-MM-DD HH:MM[:SS[.mmm]] (date-time in local time zone).
- 
Changed wire protocol of Timestampto send the full nanosecond precision. Communication with older clients will still be millisecond precision.
- 
Returning UnmodifiableTimestampinstead ofTimestamp, and removed*_millis()variants of time accessors.
- Added types Identifier(128-bit) andSmallIdentifier(64-bit).
- Renamed master.Process.process_idtoidand changed toSmallIdentifiertype.
- Renamed master.Process.connector_idtoconnectorIdand changed toIdentifiertype.
- 
New method AOServTable.getRowsCopy()that may be used when the returned list must be modifiable. This gives the table implementation a way to create a defensive copy most efficient to its underlying storage mechanism.
- Moved sort(…)fromTypeTabletoAOServConnector.
- 
Renamed SQLExpression.getValue(…)toevaluate(…)to better represent that this may be computationally non-trivial.
- Renamed AOSH command - check_ssl_certificateto- pki.Certificate.check, and it now accepts a boolean flag to enable/disable cached results.- Cached values are best for background processing like monitoring. Direct values are best for interactive use, at the expense of additional processing. 
- Master returns new entropy needed as entropy is added.
- 
Split getRandom()into bothgetSecureRandom()andgetFastRandom(), then selected the appropriate method for each place random is used.
- Refined ambiguity and imprecise separation between "source account" and "billing account" for
monthly charges and monthly rates:
- Account.getMonthlyRate()may now return- nullon filtered billing
- Added Account.getBillingMonthlyCharges()
- Removed Account.getTotalMonthlyCharges()- useAccount.getMonthlyRate()instead
- Added Account.getBillingMonthlyRate(), which may returnnullon filtered billing
 
- Added new method TransactionTable.getActiveAccountBalance(…)that provides currently active accounts and currencies.
- May no longer cancel an account that has any active sub-account.
- 
New monthly billing Transactionfor disabled accounts are now added asWAITING_CONFIRMATION. These transactions will be moved toCONFIRMEDif the account is enabled, or toNOT_CONFIRMEDif the account is canceled.
- 
Entries are now still added to MonthlyChargeTablewhen an account is disabled, but withactive=false. This provides information about what the account would cost if uncanceled during the 30-day uncancel window.
- Added phone to url cast as "tel:" URL.
- Now supporting Redis:
- New system group and user for redis.
- New protocol redis, defaulting to port 6379.
- New protocol redis-cluster, defaulting to port 16379.
- New protocol redis-sentinel, defaulting to port 26379.
 
- New system group and user for 
- Fixed bug in add_postgres_databaseparameter count check.
- Type group_idis now left aligned instead of right aligned, as it is a textual name, not a numeric ID.
aoserv-client-1.82.1
Release Notes
- Payment persistence improvements:
- Bank card expiration month and year is now stored in the clear when available:
- Added payment.CreditCard.expirationMonthcolumn
- Added payment.CreditCard.expirationYearcolumn
- Removed payment.CreditCard.encrypted_expirationcolumn
- Removed payment.CreditCard.encryption_expiration_fromcolumn
- Removed payment.CreditCard.encryption_expiration_recipientcolumn
 
- Added 
- Now updating stored masked card number and expiration date when an updated card is used for a payment:
- Added payment.Payment.creditCard.expirationMonthcolumn
- Added payment.Payment.creditCard.expirationYearcolumn
- Added payment.Payment.authorizationResult.providerReplacementMaskedCardNumbercolumn
- Added payment.Payment.authorizationResult.replacementMaskedCardNumbercolumn
- Added payment.Payment.authorizationResult.providerReplacementExpirationcolumn
- Added payment.Payment.authorizationResult.replacementExpirationMonthcolumn
- Added payment.Payment.authorizationResult.replacementExpirationYearcolumn
 
- Added 
- Transaction paymentInfomay now be updated onapproved,declined, andheld.Transactions are initially created in a pending state with the expected paymentInfo. This allows for updating thepaymentInfoto the actual value used, as obtained fromAuthorizationResult.replacementMaskedCardNumber.
- Added missing CreditCard.customerIdfrom persistence implementation:- Added payment.CreditCard.customerIdcolumn
- Added payment.Payment.creditCard.customerIdcolumn
 
- Added 
 
- Bank card expiration month and year is now stored in the clear when available:
- Reduced use of deprecated APIs.
- Fixed NullPointerExceptionincom.aoindustries.aoserv.client.linux.ServerTable.
- Fixed NullPointerExceptionincom.aoindustries.aoserv.client.net.Bind.
- Using managed dependencies:
- This project uses managed dependencies.
- This project's managed dependencies may also be imported by other projects.
 
aoserv-client-1.81.22
Release Notes
- Now managing Firewalld zone settings on a per-port basis:
- New self-validating type FirewalldZoneName.
- New schema type: firewalld_zone_name.
- New table firewalld_zonesthat defines the zones managed on a per-server basis.
- New table net_bind_firewalld_zonesthat maps each port to the specific set of zones it is added to.
- addNetBindnow takes a set of- FirewalldZoneNameinstead of a single boolean- open_firewall. Older clients that provide- truefor- open_firewallwill be added to the "public" zone.
- 
Updated the add_net_bindAOSH command to take a variable number of Firewall zone names instead of the single booleanopen_firewall.
- 
Removed net_binds.open_firewallandNetBind.isFirewallOpen(). This will betrueon older clients when the port is in the "public" zone.
- 
Removed NetBind.setOpenFirewall. Older clients are supported by adding or removing the "public" zone.
- Removed the set_net_bind_open_firewallAOSH command.
- New method NetBind.setFirewalldZonesfor fine-grained control over zones on a per-port basis.
- Added the set_net_bind_firewalld_zonesAOSH command.
- New table httpd_site_bind_redirectsthat configures redirects on a per-httpd_site_bind basis.
 
- New self-validating type 
- Parsing command-line com.aoapps.net.Protocolin case-insensitive manner.
- Net ports are now allocated unique-per-server, not globally unique. It has been a full decade since we've used chroot-based virtual servers.
- New protocol memcached, defaulting to port 11211.
- EmailSpamAssassinIntegrationMode.DEFAULT_SPAMASSASSIN_INTEGRATION_MODEchanged from- pop3to- none.
- New "mysql.session" reserved account for MySQL 5.7: MySQLUser.MYSQL_SESSION.
- 
Added can_referenceparameter toadd_mysql_db_userAOSH command. Existingmysql_db_usersgrantedreferences_privmatching existingdrop_priv. Old client versions grantedreferences_privmatchingdrop_priv.
- 
May now optionally exclude context configuration from conf/server.xml. This then allows deployment of the context by simply overwriting the WAR file. This also allows deployment through the Tomcat Manager webapp, when enabled (disabled by default for static production configuration).- Added httpd_tomcat_contexts.server_xml_configuredcolumn, defaulting totruefor existing contexts.
- Added server_xml_configuredparameter to theadd_httpd_tomcat_contextAOSH command.
- Added server_xml_configuredparameter to theset_httpd_tomcat_context_attributesAOSH command.
 
- Added 
- 
To support Let's Encrypt certificates,
added httpd_site_binds.ssl_cert_chain_filecolumn. Certbot installs certificates in a structure incompatible with our previous automatic chain detection. With this new column, the chain file may be specified directly.
- 
Added httpd_site_bind_redirects.no_escapecolumn to support the noescape RewriteRule Flag, defaulting tofalse.
- 
Added ao_servers.sftp_umaskcolumn to support the-u umaskoption forsftp-serverin/etc/ssh/sshd_config.
- 
Per-site features now all default to falseto begin in the safest configuration:- httpd_sites.enable_cginow defaults to- false.
- httpd_sites.enable_ssinow defaults to- false.
- httpd_sites.enable_htaccessnow defaults to- false.
- httpd_sites.enable_indexesnow defaults to- false.
- httpd_sites.enable_follow_symlinksnow defaults to- false.
- httpd_sites.enable_anonymous_ftpnow defaults to- false.
- Removed parameters from add_httpd_jboss_sitecommand to use defaults.
- Removed parameters from add_httpd_tomcat_shared_sitecommand to use defaults.
- Removed parameters from add_httpd_tomcat_std_sitecommand to use defaults.
 
- 
Added options to selectively disable protections that have been always on up to this point.
These all default to trueto begin in the safest configuration. When an application takes full control over the URL space, these default protections might get in the way. They should only be disabled with full understanding and careful consideration.- Added - httpd_sites.block_trace_trackcolumn, which enables the blocking of TRACE and TRACK HTTP methods.- Leave this enabled unless you intend to handle these methods and understand the consequences. - May be configured with the - set_httpd_site_block_trace_trackAOSH command.
- Added - httpd_sites.block_scmcolumn, which enables the blocking of URL patterns associated with source control management systems. It is possible for SCM files, such as- CVS/Rootand- .git/configto have authentication credentials.- Currently has protections for CVS, Subversion, and Git. - Leave this enabled when pulling web root content directly from revision control systems. - May be configured with the - set_httpd_site_block_scmAOSH command.
- Added - httpd_sites.block_core_dumpscolumn, which enables blocking of core dumps. Core dumps could potentially expose sensitive information and have predictable filename patterns.- Leave this enabled when scripts may leave core dumps; if in doubt, leave this on. - May be configured with the - set_httpd_site_block_core_dumpsAOSH command.
- Added - httpd_sites.block_editor_backupscolumn, which enables blocking filename patterns associated with editor automatic backups. Without this protection, it is possible for source code to be leaked by accessing the URL associated with the automatic backups.- Currently has protections for Emacs and Vim. - May be configured with the - set_httpd_site_block_editor_backupsAOSH command.
- Added - httpd_tomcat_sites.block_webinfcolumn, which blocks access to- /META-INFand- /WEB-INFat the Apache level. When Apache serves content directly, instead of passing all requests to Tomcat, this helps ensure proper protection of these paths.- Leave this enable unless trying to squeeze every last drop of performance out of a system and are 100% confident - /META-INFand- /WEB-INFare mapped to Tomcat. Just leave this on; it's only two Location directives for each HttpdTomcatContext.- May be configured with the - set_httpd_tomcat_site_block_webinfAOSH command.
- Fixed bug in add_email_list_addressAOSH command implementation.
 
- 
New table httpd_tomcat_site_jk_mountsthat configures the request mappings between Apache and Tomcat via the JkMount and JkUnMount directives:- 
Added the httpd_tomcat_site_jk_mountstable, with default values matching the configurations derived from the oldhttpd_tomcat_sites.use_apacheflag.
- Added the add_httpd_tomcat_site_jk_mountAOSH command.
- Added the remove_httpd_tomcat_site_jk_mountAOSH command.
- 
Removed the httpd_tomcat_sites.use_apachecolumn, withtrueprovided to older clients whenhttpd_tomcat_site_jk_mountsdoes not containJkMount /*for the site.
- 
Removed the set_httpd_tomcat_site_use_apacheAOSH command, with older clients toggling the existence ofJkMount /*.
 
- 
Added the 
- May now manually configure which Apache Modules are loaded on a per-Apache-instance basis. Any value left at - null, the default, with be in automatic mode. Automatic mode minimizes the number of loaded modules given the current system configuration. Automatic mode does not parse the contents of- .htaccessfiles, so non-default modules may be enabled manually as-needed.- The following columns within the - httpd_serverstable control each module, with default automatic behavior described for each:- mod_access_compat defaults:
- Enabled when aoserv-httpd-config-compatpackage is installed.
 
- Enabled when 
- mod_actions defaults:
- Enabled when CGI-based PHP exists on a site and mod_php is not used on this instance.
 
- mod_alias defaults:
- mod_auth_basic defaults:
- 
Enabled when has any httpd_site_authenticated_locations.auth_user_file(for AuthType Basic).
 
- 
Enabled when has any 
- mod_authn_core defaults:
- 
Enabled when has any httpd_site_authenticated_locations.auth_user_file(for AuthType Basic).
- 
Enabled when has any httpd_site_authenticated_locations.auth_name(for AuthName).
 
- 
Enabled when has any 
- mod_authn_file defaults:
- 
Enabled when has any httpd_site_authenticated_locations.auth_user_file(for AuthUserFile).
 
- 
Enabled when has any 
- mod_authz_core defaults:
- 
Enabled by default (for Require all granted
and Require all denied
used in /etc/httpd/aoserv.conf.d/*.confand per-site and per-bind configs).
 When mod_authz_coreis manually disabled, the server will still run, but many protections will be disabled. This might result in open proxies, unexpected access to URLs or files, and other serious issues. Only disable when all consequences are fully analyzed and understood.
- 
Enabled by default (for Require all granted
and Require all denied
used in 
- mod_authz_groupfile defaults:
- 
Enabled when has any httpd_site_authenticated_locations.auth_group_file(for AuthGroupFile).
 
- 
Enabled when has any 
- mod_authz_host defaults:
- Disabled, no auto condition currently to turn it on.
 Might be needed for .htaccessor manual override for Require ip, Require host, or Require local.
- mod_authz_user defaults:
- 
Enabled when has any httpd_site_authenticated_locations.require(for Require user or Require valid-user).
 
- 
Enabled when has any 
- mod_autoindex defaults:
- Enabled when has any httpd_sites.enable_indexes.
 
- Enabled when has any 
- mod_deflate defaults:
- Enabled by default (unless explicitly disabled).
 
- mod_dir defaults:
- Enabled by default (unless explicitly disabled).
 
- mod_filter defaults:
- 
Enabled when mod_deflateis enabled (for AddOutputFilterByType in/etc/httpd/aoserv.conf.d/mod_deflate.conf).
 
- 
Enabled when 
- mod_headers defaults:
- Disabled, no auto condition currently to turn it on.
 Might be needed for .htaccessor manual override for Header or RequestHeader.
- mod_include defaults:
- Enabled when has any httpd_sites.enable_ssi.
 
- Enabled when has any 
- mod_jk defaults:
- Enabled when any site has a JkMountorJkUnMount.
 
- Enabled when any site has a 
- mod_log_config defaults:
- Enabled by default (unless explicitly disabled).
 
- mod_mime defaults:
- Enabled by default (unless explicitly disabled).
- 
Enabled when has mod_php(for AddType .php and AddType .phps).
- 
Enabled when mod_negotiationis enabled (for AddHandler .var).
 
- mod_mime_magic defaults:
- Enabled by default (unless explicitly disabled).
 
- mod_negotiation defaults:
- Disabled by default (unless explicitly enabled).
 
- mod_proxy defaults:
- Enabled when mod_proxy_httpis enabled.
 
- Enabled when 
- mod_proxy_http defaults:
- Disabled by default (unless explicitly enabled).
 
- mod_reqtimeout defaults:
- Enabled by default (unless explicitly disabled).
 
- mod_rewrite defaults:
- Enabled when has any httpd_sites.block_trace_track.
- Enabled when has any httpd_site_binds.redirect_to_primary_hostname.
- Enabled when has any httpd_site_bind_redirects.
 
- Enabled when has any 
- mod_setenvif defaults:
- 
Enabled when mod_sslis enabled (for BrowserMatch SSL downgrade of ancient browsers).
 It is safe to disable this module if not concerned about ancient browser support and the module is otherwise not needed. 
- 
Enabled when 
- mod_socache_shmcb defaults:
- 
Enabled when mod_sslis enabled (for SSLSessionCache shmcb:/run/httpd).
 
- 
Enabled when 
- mod_ssl defaults:
- Enabled when has any httpd_site_binds.ssl_cert_file.
 
- Enabled when has any 
- mod_status defaults:
- Disabled by default (unless explicitly enabled).
 
- New system groups:
- bird
- clamscan
- clamupdate
- virusgroup
 
- New system users:
- bird
- clamscan
- clamupdate
 
- Added pkey output from some AOSH commands that were otherwise quiet upon successful addition of the resource:
- add_business_profile
- add_linux_group_account
- add_net_bind
 
 
- mod_access_compat defaults:
- 
Renamed httpd_servers.numbertonameand changed type frominttostring.
- New constants for default ports:
- MySQLServer.DEFAULT_PORT
- PostgresServer.DEFAULT_PORT
 
- Generated JDBC URLs no longer include the port number when it is the default value.
- Now supporting mod_wsgi:- Added httpd_servers.mod_wsgicolumn
 
- Added 
- Now supporting httpd_site_bindsthat do not necessarily include the per-site configuration file:- Added httpd_site_binds.include_site_configcolumn
 
- Added 
- Now managing SSL certificates through APIs instead of manually:
- Added ssl_certificatestable
- Added ssl_certificate_namestable
- Added httpd_site_binds.certificatecolumn
- Removed httpd_site_binds.ssl_cert_filecolumn
- Removed httpd_site_binds.ssl_cert_key_filecolumn
- Removed httpd_site_binds.ssl_cert_chain_filecolumn
- Added check_ssl_certificateAOSH command
 
- Added 
- Now supporting per-IP/port SSL certificates on Cyrus IMAPD:
- Added cyrus_imapd_bindstable
- Added cyrus_imapd_serverstable
 
- Added 
- Now supporting multiple instances of Sendmail on a server in order to have per-IP/port SSL certificates:
- Added sendmail_bindstable
- Added sendmail_serverstable
 
- Added 
- Removed some old, unused features:
- Removed set_imap_folder_subscribedAOSH command
- Removed httpd_servers.is_mod_jkcolumn
- Removed httpd_servers.max_bindscolumn
- Removed httpd_shared_tomcats.is_securecolumn
- Removed httpd_shared_tomcats.is_overflowcolumn
- Removed httpd_sites.content_srccolumn
- Removed is_secureandis_overflowparameters fromadd_httpd_shared_tomcatAOSH command
- Removed content_sourceparameter fromadd_httpd_jboss_siteAOSH command
- Removed tomcat_versionandcontent_sourceparameters fromadd_httpd_tomcat_shared_siteAOSH command
- Removed content_sourceparameter fromadd_httpd_tomcat_std_siteAOSH command
 
- Removed 
- Generating JDBC URLs for MySQL and PostgreSQL more precisely based on the net_bindssettings.
- Now monitoring Apache concurrency:
- Added httpd_servers.monitoring_concurrency_lowcolumn
- Added httpd_servers.monitoring_concurrency_mediumcolumn
- Added httpd_servers.monitoring_concurrency_highcolumn
- Added httpd_servers.monitoring_concurrency_criticalcolumn
- Added get_httpd_server_concurrencyAOSH command
 
- Added 
- Using System.console()to no longer echo password during login.
- 
Now detects multiple DNSRecordsof typeTXTwith destination"v=spf1"as conflicts, to help in compliance of SPF: RFC 4408.
- Added support for newer versions of PostgreSQL:
- Added support for PostgreSQL 9.5.
- Added support for PostgreSQL 9.6.
- Added support for PostgreSQL 10.
- Added support for PostgreSQL 11.
 
- Maximum MySQL username is now 32 characters as of MySQL 5.7.8.
- Added support for MySQL 8.0.
- Added support for newer versions of Apache Tomcat:
- Added support for Apache Tomcat 8.5.
- Added support for Apache Tomcat 9.0.
 
- May now update Tomcat versions in-place.
- In-place upgrades are supported from Tomcat versions 4.1 and above.
- In-place upgrades and downgrades are supported to Tomcat versions 8.5 and above.
- Added the following AOSH commands:
- set_httpd_shared_tomcat_version
- set_httpd_tomcat_std_site_version
 
 
- Now supporting per-location Apache handlers:
- Added httpd_site_authenticated_locations.handlercolumn
- Added add_httpd_site_authenticated_locationAOSH command
- Added set_httpd_site_authenticated_location_attributesAOSH command
 
- Added 
- Now supporting multiple site-bind configurations per unique - (site, ip, port). Previously, there was at most one Apache configuration file per unique- (site, ip, port)combination. We now support multiple Apache configuration files per unique- (site, ip, port, name), where- nameis either- null(for the default), or a user/API-provided meaningful name to identify the bind.- We host applications that respond to different, unrelated hostnames/domains, then internally perform virtual hosting or content negotiation to serve different, unrelated clients. With HTTP, this all works well under a single per- - (site, ip, port)Apache configuration file.- However, as part of our initiative to achieve 100% encryption via Let's Encrypt, and given that these hostnames/domains are for unrelated clients, we need to support different SSL certificates for different clients. Previously, we would accomplish this with each SSL certificate on a different IP address. Now with the ubiquity of SNI, we want to run different SSL certificates on the same IP address, and thus our unique constraint on - (site, ip, port)was too restrictive.- API compatibility for older clients is maintained by only manipulating the - null(default) bind.- Added httpd_site_binds.namecolumn
 
- Added 
- New table httpd_site_bind_headersthat configures headers on a per-httpd_site_bind basis.
- 
New table ssl_certificate_other_usesthat configures configured manual uses of SSL certificates. This will avoid warnings in monitoring and avoid removal in management.
- 
May now disable monitoring on a per-IP basis, which is useful to avoid alerts during routine maintenance
or while allocating and releasing resources:
- Added ip_addresses.monitoring_enabledcolumn
- Added set_ip_address_monitoring_enabledAOSH command
 
- Added 
- 
Moved monitoring configuration into a separate schema.  This results in the following changes:
- Added IpAddressMonitoringtable
 
- Added 
- UID_MAXand- GID_MAXare now configurable on a per-server basis. Also, uid and gid allocation proceeds from the last one allocated, wrapping back to- UID_MINonce- UID_MAXis achieved. Previously, the first available uid, starting at- UID_MINwas used, which could cause a new user to have access to orphaned files from an old, deleted user.
- Schema changes, with some moves toward:
- Schema support
- Singular table names, PascalCase
- camelCase column names
- Generated numeric keys idinstead ofpkey
 
- Restructured into package names matching recently introduced master server schemas.
- Renamed classes to match new table names.
- ProgressListener and
TableLoadListener
now notified of row counts using a 64-bit integer to handle results with more than
StreamableOutput.MAX_COMPRESSED_INT_VALUErows.
- Improved registrable domain management:
- Renamed table billing.whois_historytobilling.WhoisHistory
- Added table billing.WhoisHistoryAccount
- Changes to billing.WhoisHistory:- Changed zonetodomaintype (without the trailing period).
- Renamed zonetoregistrableDomain
- Added column exitStatus
- Renamed whois_outputtooutput
- Added column error
- Removed column accounting
 
- Changed 
 
- Renamed table 
- May now select the format for outgoing emails. May be one of: - HTML- HTML allowing embedded images (the default).
- HTML_ONLY- HTML without any embedded images.
- TEXT- Plaintext only.
 - Made the following schema changes to support this: - Added enum account.Profile.EmailFormat
- Added column account.Profile.billingEmailFormat
- Added column account.Profile.technicalEmailFormat
- Updated add_business_profileAOSH command
 
- Allowing direct control over the RewriteRule Flags:
- Renamed table httpd_site_bind_redirecttoRewriteRule
- Renamed column RewriteRule.pkeytoid
- Renamed column RewriteRule.httpd_site_bindtovirtualHost
- Renamed column RewriteRule.sort_ordertosortOrder
- Added column RewriteRule.flags
- Removed column RewriteRule.no_escape
 
- Renamed table 
- Moved table getters into per-package schemas.
- Changed table getters to be consistent with database table names. Unusual for Java, these property names are Pascal-case (CapitalCamelCase), for consistency with their representation in the database. We are choosing to make Java conform to other systems, for consistency across the platform.
- Moved self-validating type implementations into per-package schemas:
- Renamed to match and support master server schema changes in the process.
- Renamed account.Usernametoaccount.User
- Added linux_usernametoschema.Type
- Changed linux.User.usernametolinux_usernametype
- Changed web.Site.linux_accounttolinux_usernametype
- Changed linux.UserServer.usernametolinux_usernametype
- Changed linux.GroupUser.nametolinux_usernametype
- Changed ftp.GuestUser.usernametolinux_usernametype
- Changed distribution.management.DistroFile.linux_accounttolinux_usernametype
 
- Changed default ordering of billing.Transactionfromtime::date, transidtotime::date, source_accounting, time, transid.
aoserv-client-1.80.2
Release Notes
- UID_MINand- GID_MIN, as found in- /etc/login.defs, is now set on a per-server basis. Older servers keep this at 500 whereas newer servers use the current default of 1000.- Added AOServer.getUidMin()
- Added AOServer.getGidMin()
- Added LinuxAccount.UID_MAX
- Added LinuxGroup.GID_MAX
- Removed LinuxID.isSystem()
- Removed LinuxServerAccount.MINIMUM_USER_UID
 
- Added 
- Top-level domains change frequently these days. Top reduce code maintenance, using new AO TLDs project to have a self-updating list of top-level domains.
- Changed distribution verification from MD5 to SHA-256. - Removed DistroFile.hasFileMD5()
- Removed DistroFile.getFileMD5Hi()
- Removed DistroFile.getFileMD5Lo()
- Added DistroFile.hasFileSha256()
- Added DistroFile.getFileSha256_0()
- Added DistroFile.getFileSha256_1()
- Added DistroFile.getFileSha256_2()
- Added DistroFile.getFileSha256_3()
 - No MD5 data will be sent to older clients. - DistroFile.hasFileMD5()will return- falsefor all files.
- Removed 
- Bug fixes:
- Ticket: Fixed handling of filtered reseller field.
 
- Web site resources moved to more predictable locations for CentOS 7:
- Apache virtual hosts moved from /wwwto/var/www.
- Apache virtual hosts logs moved from /logsto/var/log/httpd-sites.
- Multi-site Tomcat installations moved from /wwwgroupto/var/opt/apache-tomcat.
- Servers that are upgraded retain compatibility links at the old paths.
 
- Apache virtual hosts moved from 
- Moved the following classes to the new AO Lang project:
- com.aoindustries.aoserv.client.DtoFactory
- com.aoindustries.aoserv.client.validator.InvalidResult
- com.aoindustries.aoserv.client.validator.ValidationException
- com.aoindustries.aoserv.client.validator.ValidationResult
- com.aoindustries.aoserv.client.validator.ValidResult
 
- Moved the following classes to the new AO Net Types project:
- com.aoindustries.aoserv.client.dto.DomainLabel
- com.aoindustries.aoserv.client.dto.DomainLabels
- com.aoindustries.aoserv.client.dto.DomainName
- com.aoindustries.aoserv.client.dto.Email
- com.aoindustries.aoserv.client.dto.HostAddress
- com.aoindustries.aoserv.client.dto.InetAddress
- com.aoindustries.aoserv.client.dto.MacAddress
- com.aoindustries.aoserv.client.dto.NetPort
- com.aoindustries.aoserv.client.validator.DomainLabel
- com.aoindustries.aoserv.client.validator.DomainLabels
- com.aoindustries.aoserv.client.validator.DomainName
- com.aoindustries.aoserv.client.validator.Email
- com.aoindustries.aoserv.client.validator.HostAddress
- com.aoindustries.aoserv.client.validator.InetAddress
- com.aoindustries.aoserv.client.validator.MacAddress
- com.aoindustries.aoserv.client.validator.NetPort
 
- Removed a few tables that are now represented by self-validating types:
- Removed linux_idstable
- Removed net_portstable
- Removed net_protocolstable
 
- Removed 
- Removed a couple protocols that referred to old rawnet protocol:- Removed protocols.rtmprow
- Removed protocols.ziprow
 
- Removed 
- Changed column types to use new self-validating types:
- Changed ao_server_daemon_hosts.hosttohostnametype
- Changed distro_files.group_nametogroup_idtype
- Changed email_pipes.pathtostringtype
- Renamed email_pipes.pathtocommand
- Changed failover_file_replications.quota_gidtolinux_idtype
- Changed httpd_sites.group_nametogroup_idtype
- Changed httpd_tomcat_contexts.doc_basetopathtype
- Changed linux_group_accounts.group_nametogroup_idtype
- Changed linux_groups.nametogroup_idtype
- Changed linux_server_groups.nametogroup_idtype
- Changed linux_server_accounts.uidtolinux_idtype
- Changed linux_server_groups.gidtolinux_idtype
- Changed master_hosts.hosttohostnametype
- Changed mysql_databases.nametomysql_database_nametype
- Removed mysql_reserved_wordstable
- Changed mysql_servers.nametomysql_server_nametype
- Changed mysql_server_users.usernametomysql_usernametype
- Changed mysql_users.usernametomysql_usernametype
- Changed net_binds.porttonet_porttype
- Removed net_binds.net_protocolcolumn
- Changed net_devices.mac_addresstomac_addresstype
- Changed net_tcp_redirects.destination_porttonet_porttype
- Changed postgres_databases.nametopostgres_database_nametype
- Removed postgres_reserved_wordstable
- Changed postgres_servers.nametopostgres_server_nametype
- Changed postgres_server_users.usernametopostgres_usernametype
- Changed postgres_users.usernametopostgres_usernametype
- Removed protocols.net_protocolcolumn
- Changed protocols.porttonet_porttype
- Changed ticket_actions.old_assigned_totousernametype
- Changed ticket_actions.new_assigned_totousernametype
 
- Changed 
- Removed packagetype:- Changed dns_zones.packagetoaccountingtype
- Changed email_domains.packagetoaccountingtype
- Changed email_pipes.packagetoaccountingtype
- Changed email_smtp_relays.packagetoaccountingtype
- Changed httpd_sites.packagetoaccountingtype
- Changed ip_addresses.packagetoaccountingtype
- Changed linux_groups.packagetoaccountingtype
- Changed monthly_charges.packagetoaccountingtype
- Changed mysql_databases.packagetoaccountingtype
- Changed mysql_servers.packagetoaccountingtype
- Changed net_binds.packagetoaccountingtype
- Changed packages.nametoaccountingtype
- Changed usernames.packagetoaccountingtype
 
- Changed 
- Changed client-side objects to use more of the new self-validating types:
- Changed pathtype implementation toUnixPathclass
- Changed usernametype implementation toUserIdclass
 
- Changed 
- Removed AOSH commands covered by self-validating types:
- Removed check_business_administrator_usernamecommand.
- Removed check_email_forwardingcommand.
- Removed check_ip_addresscommand.
- Removed check_linux_account_usernamecommand.
- Removed check_package_namecommand.
 
- Removed 
- New field CvsRepository.DEFAULT_CVS_DIRECTORYproviding the default directory containing CVS repositories.
- Completed generics for CannotRemoveReason.
- MySQL and PostgreSQL database dump improvements:
- New gzipflag to enable Gzip compression.
- 
New methods to dump databases directly into an OutputStreamto avoid the additional encoding layer of the defaultWriter.
- New constants providing dump character encoding.
- Database dumps now provide the size of the dumps in bytes.
 
- New 
- 
New interface AOServStreamablethat extendsStreamable, but represents its version asAOServProtocol.Version.
- Extended network protocol to send randomized command sequences to help ensure stream integrity.
- Now supporting MySQL 5.7.
- linux_accounts.nameis now nullable.
- Added linux_group_accounts.operating_system_versioncolumn to limit groups on a per-operating-system-version basis.
- 
Linux shell accounts now support, and default to, non-hashed home directories in /home/usernameformat. Hashed home directories of the form/home/u/usernameare still supported when specifically selected.
- 
New AOServer.addSystemGroup()andAOServer.addSystemUser()calls for AOServ Daemon to automatically register new system groups and users with the AOServ Master.
- Added linux_server_accounts.sudocolumn to configuresudoon a per-user and per-server basis.
- Enabled more fine-grained control over per-site Apache settings:
- Added HttpdSite.getEnableSsi()
- Added HttpdSite.getEnableHtaccess()
- Added HttpdSite.getEnableIndexes()
- Added HttpdSite.getEnableFollowSymlinks()
- Added HttpdSite.getEnableAnonymousFtp()
- Added parameters to add_httpd_jboss_sitecommand for new settings.
- Added parameters to add_httpd_tomcat_shared_sitecommand for new settings.
- Added parameters to add_httpd_tomcat_std_sitecommand for new settings.
- Added set_httpd_site_php_versioncommand.
- Added set_httpd_site_enable_cgicommand.
- Added set_httpd_site_enable_ssicommand.
- Added set_httpd_site_enable_htaccesscommand.
- Added set_httpd_site_enable_indexescommand.
- Added set_httpd_site_enable_follow_symlinkscommand.
- Added set_httpd_site_enable_anonymous_ftpcommand.
- Added set_httpd_tomcat_site_use_apachecommand.
 
- Added 
- Enabled more fine-grained control over Tomcat settings:
- Added HttpdSharedTomcat.getMaxPostSize()
- Added HttpdSharedTomcat.getUnpackWARs()
- Added HttpdSharedTomcat.getAutoDeploy()
- Added HttpdTomcatStdSite.getMaxPostSize()
- Added HttpdTomcatStdSite.getUnpackWARs()
- Added HttpdTomcatStdSite.getAutoDeploy()
- Added set_httpd_shared_tomcat_max_post_sizecommand.
- Added set_httpd_shared_tomcat_unpack_warscommand.
- Added set_httpd_shared_tomcat_auto_deploycommand.
- Added set_httpd_tomcat_std_site_max_post_sizecommand.
- Added set_httpd_tomcat_std_site_unpack_warscommand.
- Added set_httpd_tomcat_std_site_auto_deploycommand.
 
- Added 
- Disabled site now packaged in RPM and distributed via Yum.
- New system groups:
- aoserv-jilter
- aoserv-xen-migration
- mailnull
- memcached
- nginx
- saslauth
- smmsp
 
- New system users:
- aoserv-jilter
- aoserv-xen-migration
- mailnull
- memcached
- nginx
- saslauth
- smmsp
 
- Added Protocol.RFBfor VNC servers.
- Shared Tomcats now auto-shutdown when have no enabled sites.
- Email lists on CentOS 7 are directly in /etc/mail/listsand no longer use hashed-directory format:- check_email_list_pathcommand altered to include- ao_serverparameter.
 
- 
Added Protocol.SPAMD, which is used to enable SpamAssassin via thenet_bindstable.
- Updated dependencies.
- Protocol 1.80.2 finalized.
aoserv-client-1.79.6
Release Notes
- New AO OSS Parent POM to simplify pom.xmlfiles.
- Project documentation moved to per-project book in SemanticCMS format.
- Added changelog as top-level project link.
- Default DNS zone TTL changed from 43200 (12 hours) to 3600 (1 hour).
- Existing zones that were the default 43200 have been changed to 3600.
aoserv-client-1.79.5
Release Notes
- Improved Javadoc formatting.
- Improved README formatting.
aoserv-client-1.79.4
Release Notes
- Improved Javadoc formatting.
- Additional MySQL collation.
- Each lock object now a small empty class to help identify lock contention.
The lock contention profiler in NetBeans is just showing "java.lang.Object" all over, and can't seem to get from the lock object id to the actual object in the heap dump using OQL (id not found). 
- Updated MySQL JDBC documentation URLs.
aoserv-client-1.79.3
Release Notes
- Added ".top" top-level domain.
aoserv-client-1.79.2
Release Notes
- Improved Maven configuration for Java EE 6 dependencies.
aoserv-client-1.79.1
Release Notes
- MySQL JDBC only used for tests.
aoserv-client-1.79
Release Notes
- Project moved to GitHub and Maven.