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 withnotifyAll()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 implementsCloseablefor 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:AOServClientConfigurationthrowsConfigurationExceptionAOServConnector.getConnector(…)throwsConfigurationException- Removed other unnecessary uses of
IOExceptionincorrectly left inSchemaconstructors.
- Fixed ambiguous definitions of
PROTOCOL, now:TCPConnector.TCP_PROTOCOLSSLConnector.SSL_PROTOCOL
TicketLoggingHandlersignificantly reworked to be compatible withlogging.properties.AOServConnector.getConnector(…)no longer takes aLoggerargument. 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_certificatetopki.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 returnnullon 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 ofFirewalldZoneNameinstead of a single booleanopen_firewall. Older clients that providetrueforopen_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 frompop3tonone.- 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 tofalse.httpd_sites.enable_ssinow defaults tofalse.httpd_sites.enable_htaccessnow defaults tofalse.httpd_sites.enable_indexesnow defaults tofalse.httpd_sites.enable_follow_symlinksnow defaults tofalse.httpd_sites.enable_anonymous_ftpnow defaults tofalse.- 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 asCVS/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:
birdclamscanclamupdatevirusgroup
- New system users:
birdclamscanclamupdate
- Added pkey output from some AOSH commands that were otherwise quiet upon successful addition of the resource:
add_business_profileadd_linux_group_accountadd_net_bind
- mod_access_compat defaults:
-
Renamed
httpd_servers.numbertonameand changed type frominttostring. - New constants for default ports:
MySQLServer.DEFAULT_PORTPostgresServer.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_versionset_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), wherenameis eithernull(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_MAXandGID_MAXare now configurable on a per-server basis. Also, uid and gid allocation proceeds from the last one allocated, wrapping back toUID_MINonceUID_MAXis achieved. Previously, the first available uid, starting atUID_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_MINandGID_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 returnfalsefor 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.DtoFactorycom.aoindustries.aoserv.client.validator.InvalidResultcom.aoindustries.aoserv.client.validator.ValidationExceptioncom.aoindustries.aoserv.client.validator.ValidationResultcom.aoindustries.aoserv.client.validator.ValidResult
- Moved the following classes to the new AO Net Types project:
com.aoindustries.aoserv.client.dto.DomainLabelcom.aoindustries.aoserv.client.dto.DomainLabelscom.aoindustries.aoserv.client.dto.DomainNamecom.aoindustries.aoserv.client.dto.Emailcom.aoindustries.aoserv.client.dto.HostAddresscom.aoindustries.aoserv.client.dto.InetAddresscom.aoindustries.aoserv.client.dto.MacAddresscom.aoindustries.aoserv.client.dto.NetPortcom.aoindustries.aoserv.client.validator.DomainLabelcom.aoindustries.aoserv.client.validator.DomainLabelscom.aoindustries.aoserv.client.validator.DomainNamecom.aoindustries.aoserv.client.validator.Emailcom.aoindustries.aoserv.client.validator.HostAddresscom.aoindustries.aoserv.client.validator.InetAddresscom.aoindustries.aoserv.client.validator.MacAddresscom.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-jilteraoserv-xen-migrationmailnullmemcachednginxsaslauthsmmsp
- New system users:
aoserv-jilteraoserv-xen-migrationmailnullmemcachednginxsaslauthsmmsp
- 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 includeao_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.