aoserv-client-1.92.1-SNAPSHOT
Snapshot Notes
-
New constant
FirewallZone.NM_SHARED
as seen in Rocky Linux 9. - Updated to Checkstyle 10.18.1.
aoserv-client-1.92.0
Release Notes
-
Enabled control over Tomcat
maxParameterCount
:- Added
PrivateTomcatSite.getMaxParameterCount()
- Added
web.tomcat.PrivateTomcatSite.maxParameterCount.set
command. - Added
SharedTomcat.getMaxParameterCount()
- Added
web.tomcat.SharedTomcat.maxParameterCount.set
command.
- Added
-
Enabled control over Tomcat
undeployOldVersions
setting in support of parallel deployments:- Added
PrivateTomcatSite.getUndeployOldVersions()
- Added
web.tomcat.PrivateTomcatSite.undeployOldVersions.set
command. - Added
SharedTomcat.getUndeployOldVersions()
- Added
web.tomcat.SharedTomcat.undeployOldVersions.set
command.
- 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
id
beforetype
andcreated
. This is so fine-grained line items appear in matching order for new AOApps branding -
Monthly charges now use
package_definitions.display
as 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
AOServClientConfiguration
toAoservClientConfiguration
. - Renamed
AOServConnection
toAoservConnection
. - Renamed
AOServConnector
toAoservConnector
. - Renamed
AOServObject
toAoservObject
. - Renamed
AoservProtocol.CommandID
toAoservProtocol.CommandId
. - Renamed
AOServReadable
toAoservReadable
. - Renamed
AOServStreamable
toAoservStreamable
. - Renamed
AOServTable
toAoservTable
. - Renamed
AOServWritable
toAoservWritable
. - Renamed
AOSH
toAosh
. - Renamed
SQLComparator
toSqlComparator
. - Renamed
SQLExpression
toSqlExpression
. - Renamed
SSLCast
toSqlCast
. - Renamed
SQLColumnJoin
toSqlColumnJoin
. - Renamed
SQLColumnValue
toSqlColumnValue
. - Renamed
SSLConnector
toSslConnector
. - Renamed
SimpleAOClient
toSimpleAoservClient
. - Renamed
Table.TableID
toTable.TableId
. - Renamed
Table_Name
toTableName
. - Renamed
TCPConnector
toTcpConnector
.
- Renamed
aoserv-client-1.89.0
Release Notes
- Added support for PostgreSQL 14.
- Now properly restoring Thread interrupted state on
InterruptedException
. - Added missing
NoSuchElementException
from 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.ObjectInputValidation
where 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.HashedPassword
instead. - Removed
SimpleAOClient.hash(String)
, which used the obsolete SHA-1 algorithm.
aoserv-client-1.84.12
Release Notes
- Resolved editor warnings.
AOServConnection
now implementsCloseable
for 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
IndexOutOfBoundsException
onAOServTable.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
tomcatAuthentication
configuration:- 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:AOServClientConfiguration
throwsConfigurationException
AOServConnector.getConnector(…)
throwsConfigurationException
- Removed other unnecessary uses of
IOException
incorrectly left inSchema
constructors.
- Fixed ambiguous definitions of
PROTOCOL
, now:TCPConnector.TCP_PROTOCOL
SSLConnector.SSL_PROTOCOL
TicketLoggingHandler
significantly reworked to be compatible withlogging.properties
.AOServConnector.getConnector(…)
no longer takes aLogger
argument. It will use a logger based on the selected implementation class.- Updated dependencies.
- Changed default CVS repository permissions from
0770
to02770
.
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.rate
tomoney
type - New table
billing.NoticeLog.balance
- Removed column
billing.NoticeLog.balance
- Renamed column
billing.PackageDefinition.setup_fee
tosetupFee
and changed tomoney
type - Renamed column
billing.PackageDefinition.monthly_rate
tomonthlyRate
and changed tomoney
type - Renamed column
billing.PackageDefinitionLimit.additional_rate
toadditionalRate
and changed tomoney
type - Changed
billing.Transaction.rate
tomoney
type - Removed column
payment.Payment.currency_code
- Changed
payment.Payment.amount
tomoney
type - Renamed column
payment.Payment.tax_amount
totaxAmount
and changed tomoney
type - Renamed column
payment.Payment.shipping_amount
toshippingAmount
and changed tomoney
type - Renamed column
payment.Payment.duty_amount
todutyAmount
and changed tomoney
type
- New table
- No longer billing for disabled Java VMs.
- Renamed remaining uses of
Business
toAccount
. - Renamed remaining uses of
BusinessAdministrator
toAdministrator
. - Renamed remaining uses of
BusinessServer
toAccountHost
. - Renamed remaining uses of
BusinessProfile
toProfile
. - Renamed remaining uses of
Server
toHost
. -
Added methods to get timestamps in
long
orLong
in addition tojava.sql.Timestamp
. These methods may offer higher performance when aTimestamp
is 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:
DATE
type always managed in GMT time zone.TIME
type 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_transaction
tobilling.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
Timestamp
to send the full nanosecond precision. Communication with older clients will still be millisecond precision. -
Returning
UnmodifiableTimestamp
instead ofTimestamp
, and removed*_millis()
variants of time accessors. - Added types
Identifier
(128-bit) andSmallIdentifier
(64-bit). - Renamed
master.Process.process_id
toid
and changed toSmallIdentifier
type. - Renamed
master.Process.connector_id
toconnectorId
and changed toIdentifier
type. -
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(…)
fromTypeTable
toAOServConnector
. -
Renamed
SQLExpression.getValue(…)
toevaluate(…)
to better represent that this may be computationally non-trivial. Renamed AOSH command
check_ssl_certificate
topki.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 returnnull
on filtered billing- Added
Account.getBillingMonthlyCharges()
- Removed
Account.getTotalMonthlyCharges()
- useAccount.getMonthlyRate()
instead - Added
Account.getBillingMonthlyRate()
, which may returnnull
on 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
Transaction
for disabled accounts are now added asWAITING_CONFIRMATION
. These transactions will be moved toCONFIRMED
if the account is enabled, or toNOT_CONFIRMED
if the account is canceled. -
Entries are now still added to
MonthlyChargeTable
when 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_database
parameter count check. - Type
group_id
is 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.expirationMonth
column - Added
payment.CreditCard.expirationYear
column - Removed
payment.CreditCard.encrypted_expiration
column - Removed
payment.CreditCard.encryption_expiration_from
column - Removed
payment.CreditCard.encryption_expiration_recipient
column
- Added
- Now updating stored masked card number and expiration date when an updated card is used for a payment:
- Added
payment.Payment.creditCard.expirationMonth
column - Added
payment.Payment.creditCard.expirationYear
column - Added
payment.Payment.authorizationResult.providerReplacementMaskedCardNumber
column - Added
payment.Payment.authorizationResult.replacementMaskedCardNumber
column - Added
payment.Payment.authorizationResult.providerReplacementExpiration
column - Added
payment.Payment.authorizationResult.replacementExpirationMonth
column - Added
payment.Payment.authorizationResult.replacementExpirationYear
column
- Added
- Transaction
paymentInfo
may now be updated onapproved
,declined
, andheld
.Transactions are initially created in a pending state with the expected
paymentInfo
. This allows for updating thepaymentInfo
to the actual value used, as obtained fromAuthorizationResult.replacementMaskedCardNumber
. - Added missing
CreditCard.customerId
from persistence implementation:- Added
payment.CreditCard.customerId
column - Added
payment.Payment.creditCard.customerId
column
- Added
- Bank card expiration month and year is now stored in the clear when available:
- Reduced use of deprecated APIs.
- Fixed
NullPointerException
incom.aoindustries.aoserv.client.linux.ServerTable
. - Fixed
NullPointerException
incom.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_zones
that defines the zones managed on a per-server basis. - New table
net_bind_firewalld_zones
that maps each port to the specific set of zones it is added to. addNetBind
now takes a set ofFirewalldZoneName
instead of a single booleanopen_firewall
. Older clients that providetrue
foropen_firewall
will be added to the "public" zone.-
Updated the
add_net_bind
AOSH command to take a variable number of Firewall zone names instead of the single booleanopen_firewall
. -
Removed
net_binds.open_firewall
andNetBind.isFirewallOpen()
. This will betrue
on 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_firewall
AOSH command. - New method
NetBind.setFirewalldZones
for fine-grained control over zones on a per-port basis. - Added the
set_net_bind_firewalld_zones
AOSH command. - New table
httpd_site_bind_redirects
that configures redirects on a per-httpd_site_bind basis.
- New self-validating type
- Parsing command-line
com.aoapps.net.Protocol
in 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_MODE
changed frompop3
tonone
.- New "mysql.session" reserved account for MySQL 5.7:
MySQLUser.MYSQL_SESSION
. -
Added
can_reference
parameter toadd_mysql_db_user
AOSH command. Existingmysql_db_users
grantedreferences_priv
matching existingdrop_priv
. Old client versions grantedreferences_priv
matchingdrop_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_configured
column, defaulting totrue
for existing contexts. - Added
server_xml_configured
parameter to theadd_httpd_tomcat_context
AOSH command. - Added
server_xml_configured
parameter to theset_httpd_tomcat_context_attributes
AOSH command.
- Added
-
To support Let's Encrypt certificates,
added
httpd_site_binds.ssl_cert_chain_file
column. 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_escape
column to support the noescape RewriteRule Flag, defaulting tofalse
. -
Added
ao_servers.sftp_umask
column to support the-u umask
option forsftp-server
in/etc/ssh/sshd_config
. -
Per-site features now all default to
false
to begin in the safest configuration:httpd_sites.enable_cgi
now defaults tofalse
.httpd_sites.enable_ssi
now defaults tofalse
.httpd_sites.enable_htaccess
now defaults tofalse
.httpd_sites.enable_indexes
now defaults tofalse
.httpd_sites.enable_follow_symlinks
now defaults tofalse
.httpd_sites.enable_anonymous_ftp
now defaults tofalse
.- Removed parameters from
add_httpd_jboss_site
command to use defaults. - Removed parameters from
add_httpd_tomcat_shared_site
command to use defaults. - Removed parameters from
add_httpd_tomcat_std_site
command to use defaults.
-
Added options to selectively disable protections that have been always on up to this point.
These all default to
true
to 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_track
column, 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_track
AOSH command.Added
httpd_sites.block_scm
column, which enables the blocking of URL patterns associated with source control management systems. It is possible for SCM files, such asCVS/Root
and.git/config
to 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_scm
AOSH command.Added
httpd_sites.block_core_dumps
column, 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_dumps
AOSH command.Added
httpd_sites.block_editor_backups
column, 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_backups
AOSH command.Added
httpd_tomcat_sites.block_webinf
column, which blocks access to/META-INF
and/WEB-INF
at 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-INF
and/WEB-INF
are 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_webinf
AOSH command.- Fixed bug in
add_email_list_address
AOSH command implementation.
-
New table
httpd_tomcat_site_jk_mounts
that configures the request mappings between Apache and Tomcat via the JkMount and JkUnMount directives:-
Added the
httpd_tomcat_site_jk_mounts
table, with default values matching the configurations derived from the oldhttpd_tomcat_sites.use_apache
flag. - Added the
add_httpd_tomcat_site_jk_mount
AOSH command. - Added the
remove_httpd_tomcat_site_jk_mount
AOSH command. -
Removed the
httpd_tomcat_sites.use_apache
column, withtrue
provided to older clients whenhttpd_tomcat_site_jk_mounts
does not containJkMount /*
for the site. -
Removed the
set_httpd_tomcat_site_use_apache
AOSH 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.htaccess
files, so non-default modules may be enabled manually as-needed.The following columns within the
httpd_servers
table control each module, with default automatic behavior described for each:- mod_access_compat defaults:
- Enabled when
aoserv-httpd-config-compat
package 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/*.conf
and per-site and per-bind configs).
When
mod_authz_core
is 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
.htaccess
or 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_deflate
is 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
.htaccess
or 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
JkMount
orJkUnMount
.
- 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_negotiation
is 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_http
is 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_ssl
is 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_ssl
is 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.number
toname
and changed type fromint
tostring
. - 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_wsgi
column
- Added
- Now supporting
httpd_site_binds
that do not necessarily include the per-site configuration file:- Added
httpd_site_binds.include_site_config
column
- Added
- Now managing SSL certificates through APIs instead of manually:
- Added
ssl_certificates
table - Added
ssl_certificate_names
table - Added
httpd_site_binds.certificate
column - Removed
httpd_site_binds.ssl_cert_file
column - Removed
httpd_site_binds.ssl_cert_key_file
column - Removed
httpd_site_binds.ssl_cert_chain_file
column - Added
check_ssl_certificate
AOSH command
- Added
- Now supporting per-IP/port SSL certificates on Cyrus IMAPD:
- Added
cyrus_imapd_binds
table - Added
cyrus_imapd_servers
table
- Added
- Now supporting multiple instances of Sendmail on a server in order to have per-IP/port SSL certificates:
- Added
sendmail_binds
table - Added
sendmail_servers
table
- Added
- Removed some old, unused features:
- Removed
set_imap_folder_subscribed
AOSH command - Removed
httpd_servers.is_mod_jk
column - Removed
httpd_servers.max_binds
column - Removed
httpd_shared_tomcats.is_secure
column - Removed
httpd_shared_tomcats.is_overflow
column - Removed
httpd_sites.content_src
column - Removed
is_secure
andis_overflow
parameters fromadd_httpd_shared_tomcat
AOSH command - Removed
content_source
parameter fromadd_httpd_jboss_site
AOSH command - Removed
tomcat_version
andcontent_source
parameters fromadd_httpd_tomcat_shared_site
AOSH command - Removed
content_source
parameter fromadd_httpd_tomcat_std_site
AOSH command
- Removed
- Generating JDBC URLs for MySQL and PostgreSQL more precisely based on the
net_binds
settings. - Now monitoring Apache concurrency:
- Added
httpd_servers.monitoring_concurrency_low
column - Added
httpd_servers.monitoring_concurrency_medium
column - Added
httpd_servers.monitoring_concurrency_high
column - Added
httpd_servers.monitoring_concurrency_critical
column - Added
get_httpd_server_concurrency
AOSH command
- Added
- Using
System.console()
to no longer echo password during login. -
Now detects multiple
DNSRecords
of typeTXT
with 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.handler
column - Added
add_httpd_site_authenticated_location
AOSH command - Added
set_httpd_site_authenticated_location_attributes
AOSH 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)
, wherename
is 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.name
column
- Added
- New table
httpd_site_bind_headers
that configures headers on a per-httpd_site_bind basis. -
New table
ssl_certificate_other_uses
that 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_enabled
column - Added
set_ip_address_monitoring_enabled
AOSH command
- Added
-
Moved monitoring configuration into a separate schema. This results in the following changes:
- Added
IpAddressMonitoring
table
- Added
UID_MAX
andGID_MAX
are now configurable on a per-server basis. Also, uid and gid allocation proceeds from the last one allocated, wrapping back toUID_MIN
onceUID_MAX
is achieved. Previously, the first available uid, starting atUID_MIN
was 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
id
instead 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_VALUE
rows. - Improved registrable domain management:
- Renamed table
billing.whois_history
tobilling.WhoisHistory
- Added table
billing.WhoisHistoryAccount
- Changes to
billing.WhoisHistory
:- Changed
zone
todomain
type (without the trailing period). - Renamed
zone
toregistrableDomain
- Added column
exitStatus
- Renamed
whois_output
tooutput
- 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_profile
AOSH command
- Allowing direct control over the RewriteRule Flags:
- Renamed table
httpd_site_bind_redirect
toRewriteRule
- Renamed column
RewriteRule.pkey
toid
- Renamed column
RewriteRule.httpd_site_bind
tovirtualHost
- Renamed column
RewriteRule.sort_order
tosortOrder
- 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.Username
toaccount.User
- Added
linux_username
toschema.Type
- Changed
linux.User.username
tolinux_username
type - Changed
web.Site.linux_account
tolinux_username
type - Changed
linux.UserServer.username
tolinux_username
type - Changed
linux.GroupUser.name
tolinux_username
type - Changed
ftp.GuestUser.username
tolinux_username
type - Changed
distribution.management.DistroFile.linux_account
tolinux_username
type
- Changed default ordering of
billing.Transaction
fromtime::date, transid
totime::date, source_accounting, time, transid
.
aoserv-client-1.80.2
Release Notes
UID_MIN
andGID_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 returnfalse
for 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
/www
to/var/www
. - Apache virtual hosts logs moved from
/logs
to/var/log/httpd-sites
. - Multi-site Tomcat installations moved from
/wwwgroup
to/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_ids
table - Removed
net_ports
table - Removed
net_protocols
table
- Removed
- Removed a couple protocols that referred to old
raw
net protocol:- Removed
protocols.rtmp
row - Removed
protocols.zip
row
- Removed
- Changed column types to use new self-validating types:
- Changed
ao_server_daemon_hosts.host
tohostname
type - Changed
distro_files.group_name
togroup_id
type - Changed
email_pipes.path
tostring
type - Renamed
email_pipes.path
tocommand
- Changed
failover_file_replications.quota_gid
tolinux_id
type - Changed
httpd_sites.group_name
togroup_id
type - Changed
httpd_tomcat_contexts.doc_base
topath
type - Changed
linux_group_accounts.group_name
togroup_id
type - Changed
linux_groups.name
togroup_id
type - Changed
linux_server_groups.name
togroup_id
type - Changed
linux_server_accounts.uid
tolinux_id
type - Changed
linux_server_groups.gid
tolinux_id
type - Changed
master_hosts.host
tohostname
type - Changed
mysql_databases.name
tomysql_database_name
type - Removed
mysql_reserved_words
table - Changed
mysql_servers.name
tomysql_server_name
type - Changed
mysql_server_users.username
tomysql_username
type - Changed
mysql_users.username
tomysql_username
type - Changed
net_binds.port
tonet_port
type - Removed
net_binds.net_protocol
column - Changed
net_devices.mac_address
tomac_address
type - Changed
net_tcp_redirects.destination_port
tonet_port
type - Changed
postgres_databases.name
topostgres_database_name
type - Removed
postgres_reserved_words
table - Changed
postgres_servers.name
topostgres_server_name
type - Changed
postgres_server_users.username
topostgres_username
type - Changed
postgres_users.username
topostgres_username
type - Removed
protocols.net_protocol
column - Changed
protocols.port
tonet_port
type - Changed
ticket_actions.old_assigned_to
tousername
type - Changed
ticket_actions.new_assigned_to
tousername
type
- Changed
- Removed
package
type:- Changed
dns_zones.package
toaccounting
type - Changed
email_domains.package
toaccounting
type - Changed
email_pipes.package
toaccounting
type - Changed
email_smtp_relays.package
toaccounting
type - Changed
httpd_sites.package
toaccounting
type - Changed
ip_addresses.package
toaccounting
type - Changed
linux_groups.package
toaccounting
type - Changed
monthly_charges.package
toaccounting
type - Changed
mysql_databases.package
toaccounting
type - Changed
mysql_servers.package
toaccounting
type - Changed
net_binds.package
toaccounting
type - Changed
packages.name
toaccounting
type - Changed
usernames.package
toaccounting
type
- Changed
- Changed client-side objects to use more of the new self-validating types:
- Changed
path
type implementation toUnixPath
class - Changed
username
type implementation toUserId
class
- Changed
- Removed AOSH commands covered by self-validating types:
- Removed
check_business_administrator_username
command. - Removed
check_email_forwarding
command. - Removed
check_ip_address
command. - Removed
check_linux_account_username
command. - Removed
check_package_name
command.
- Removed
- New field
CvsRepository.DEFAULT_CVS_DIRECTORY
providing the default directory containing CVS repositories. - Completed generics for
CannotRemoveReason
. - MySQL and PostgreSQL database dump improvements:
- New
gzip
flag to enable Gzip compression. -
New methods to dump databases directly into an
OutputStream
to 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
AOServStreamable
that 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.name
is now nullable.- Added
linux_group_accounts.operating_system_version
column to limit groups on a per-operating-system-version basis. -
Linux shell accounts now support, and default to, non-hashed home directories in
/home/username
format. Hashed home directories of the form/home/u/username
are 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.sudo
column to configuresudo
on 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_site
command for new settings. - Added parameters to
add_httpd_tomcat_shared_site
command for new settings. - Added parameters to
add_httpd_tomcat_std_site
command for new settings. - Added
set_httpd_site_php_version
command. - Added
set_httpd_site_enable_cgi
command. - Added
set_httpd_site_enable_ssi
command. - Added
set_httpd_site_enable_htaccess
command. - Added
set_httpd_site_enable_indexes
command. - Added
set_httpd_site_enable_follow_symlinks
command. - Added
set_httpd_site_enable_anonymous_ftp
command. - Added
set_httpd_tomcat_site_use_apache
command.
- 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_size
command. - Added
set_httpd_shared_tomcat_unpack_wars
command. - Added
set_httpd_shared_tomcat_auto_deploy
command. - Added
set_httpd_tomcat_std_site_max_post_size
command. - Added
set_httpd_tomcat_std_site_unpack_wars
command. - Added
set_httpd_tomcat_std_site_auto_deploy
command.
- 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.RFB
for VNC servers. - Shared Tomcats now auto-shutdown when have no enabled sites.
- Email lists on CentOS 7 are directly in
/etc/mail/lists
and no longer use hashed-directory format:check_email_list_path
command altered to includeao_server
parameter.
-
Added
Protocol.SPAMD
, which is used to enable SpamAssassin via thenet_binds
table. - Updated dependencies.
- Protocol 1.80.2 finalized.
aoserv-client-1.79.6
Release Notes
- New AO OSS Parent POM to simplify
pom.xml
files. - 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.