Apis Networks

Moving Forward: Platform Deprecation, Branches, and Beyond

apnscp has been the de facto CP since 2009. Over these last 5 years, software has changed, options have become better, and opportunities have come abound. apnscp is written with our older servers in mind. Software available in 2007 isn’t as capable as software from 2011 when the Helios platform was commissioned. With CentOS 7 looming into production quality by Summer, it’s only necessary to cut legacy development and focus on a new apnscp that takes advantage of the latest software, from PHP 5.6 to a more mature memcached to Gearman to speed up backend processing all the way to the [url="http://updates.apisnetworks.com/2010/08/introducing-apollo-our-next-generation-platform/"]layered filesystem architecture[/url]. Keeping backwards compatibility with memcached released in 2009 – let alone hunting down packages that are compatible with CentOS/RHEL 4 – is a major PITA.

There will be a vigorous bughunt over the next week. If you run across a bug in the CP, certainly open up a ticket. By this time next week apnscp will be frozen on older servers, and I’ll be working with clients to migrate and consolidate servers to make room in the cabinet for a CentOS 7 server in the near future.

- Matt
Lead CP Developer & Owner

Comments

 

apnscp Update: UI Tweaks, Custom Webmail Locations, User Rename

A new apnscp update has been released to the servers consisting of a few new features, API changes, and some bug fixes.

Notable features include a revised Webmail application, accessible under the Mail category, that allows you to assign subdomains for each of 3 webmail applications. For example, if you use Horde or Roundcube, you can easily change the webmail application to reside under http://mail.<yourdomain> or – should you be so avant-garde – http://m.<yourdomain>. The second major feature, which in part explains the delay between updates, and perhaps more major than the aforementioned, is a seamless change in usernames for secondary users. Changing usernames also cascades recursively to update e-mail addresses in forwarded e-mails and even extends so far as to adjust subdomain maps (phew!).

New Webmail Update

New Webmail Update

Editable User Interface

Editable User Interface

Changelog

  • NEW: rename user support (Manage Users)
  • NEW: assign webmail to custom subdomains (Webmail)
  • NEW: list_subdomains()- support filter by path (Web)
  • NEW: touch(), analogous to POSIX command (File)
  • NEW: Tomcat module
  • FIX: proper formatting of false/empty (”") query arguments to page_params() (HTML_Kit)
  • FIX: refactor rename_subdomain() (Web)
  • FIX: address missing in billing info overview (Change Billing Info)
  • FIX: better detection if CNAME record set attempted for zone apex (DNS Manager)
  • FIX: fire change event on subject field if ticket subject automatically populated
  • FIX: *_export(): use absolute path, not pivot root path when changing permissions on exported SQL file (SQL)
  • FIX: COMPAT: deletion of MySQL database outside namespace fails from implicit coercion of namespace; affects accounts older than 2009 (SQL)
  • FIX: gethostbyname_t()- valid, empty DNS response erroneously handled as error (DNS)
  • FIX: READ/WRITE simple grants are not properly saved (MySQL Manager)
  • FIX: APC workaround- APC 3.1.x with PHP 5.3 on older servers would not properly store session data before processing HTTP redirect. Disabling APC resolves the issue, but as does calling session_write_close() before the redirect. Issue evidenced in MySQL Manager > List Users > Show Remote Hosts (MySQL Manager)
  • FIX: ignore unparseable, programmatically-defined charsets during charset detection (File Manager)
  • FIX: under Mozilla fire click event on file input with stylized file controls (Trouble Ticket, File Manager)
  • FIX: remove TITLE from HTML e-mail; this is sent in plain-text responses (CRM)
  • CHG: WORKAROUND: bypass DNS verification checks when migrating account across servers
  • CHG: define all constants only once per server lifetime (Constants)
  • CHG: support exceptions as backtrace (Error Reporter)
  • CHG: clean-up data import routine from backend ~3% speed-up. When sending data to backend, don’t send error buffer (DataStream)
  • CHG: refactor metadata parser from common_save_service_information() to separate write_ini function (Util_Conf)
  • CHG: remove 1 minute HTTP server reload, make instantaneous (Web)
  • CHG: UI beautification
  • CHG: hide demo account login history (Auth)
  • CHG: add support for remote CSS (Page Template)
  • CHG: replace browser detection via static browscap.ini with phpbrowscap library
  • CHG: support unauthenticated mode for applications. An application either does not interact with afi or handle authentication independently
  • CHG: convert /login to application, adheres to save templating layout as other applications (Login)
  • CHG: modify strategy to detect whether a domain has been registered and properly delegated for DNS. Assumption is that properly-configured domains will have NS records set for the origin. Filters out unnecessary MX records that were sometimes pulled by querying the origin for any resource record (the plucking NS from that result) (DNS)
  • CHG: honor MINIMUM_CYCLES on stat display (Bandwidth Statistics)
  • CHG: PHP 5.5 support
  • REM: cache support at the function broker (apnscpFunctionInterceptor)
  • REM: high priority option for new accounts (CRM)
  • REM: Ruby on Rails AJAX installer. Obviated: now integrated into hosting platform
  • REM: one-clicks – RIP!

NEW: rename user support (Manage Users)
NEW: assign webmail to custom subdomains (Webmail)
NEW: list_subdomains()- support filter by path (Web)
NEW: touch(), analogous to POSIX command (File)
NEW: Tomcat module
FIX: proper formatting of false/empty (”") query arguments to page_params() (HTML_Kit)
FIX: refactor rename_subdomain() (Web)
FIX: address missing in billing info overview (Change Billing Info)
FIX: better detection if CNAME record set attempted for zone apex (DNS Manager)
FIX: fire change event on subject field if ticket subject automatically populated
FIX: *_export(): use absolute path, not pivot root path when changing permissions on exported SQL file (SQL)
FIX: COMPAT: deletion of MySQL database outside namespace fails from implicit coercion of namespace; affects accounts older than 2009 (SQL)
FIX: gethostbyname_t()- valid, empty DNS response erroneously handled as error (DNS)
FIX: READ/WRITE simple grants are not properly saved (MySQL Manager)
FIX: APC workaround- APC 3.1.x with PHP 5.3 on older servers would not properly store session data before processing HTTP redirect. Disabling APC resolves the issue, but as does calling session_write_close() before the redirect. Issue evidenced in MySQL Manager > List Users > Show Remote Hosts (MySQL Manager)
FIX: ignore unparseable, programmatically-defined charsets during charset detection (File Manager)
FIX: under Mozilla fire click event on file input with stylized file controls (Trouble Ticket, File Manager)
FIX: remove TITLE from HTML e-mail; this is sent in plain-text responses (CRM)
CHG: WORKAROUND: bypass DNS verification checks when migrating account across servers
CHG: define all constants only once per server lifetime (Constants)
CHG: support exceptions as backtrace (Error Reporter)
CHG: clean-up data import routine from backend ~3% speed-up. When sending data to backend, don’t send error buffer (DataStream)
CHG: refactor metadata parser from common_save_service_information() to separate write_ini function (Util_Conf)
CHG: remove 1 minute HTTP server reload, make instantaneous (Web)
CHG: UI beautification
CHG: hide demo account login history (Auth)
CHG: add support for remote CSS (Page Template)
CHG: replace browser detection via static browscap.ini with phpbrowscap library
CHG: support unauthenticated mode for applications. An application either does not interact with afi or handles authentication independent
CHG: convert /login to application, adheres to save templating layout as other applications (Login)
CHG: modify strategy to detect whether a domain has been registered and properly delegated for DNS. Assumption is that properly-configured domains will have NS records set for the origin. Filters out unnecessary MX records that were sometimes pulled by querying the origin for any resource record (the plucking NS from that result) (DNS)
CHG: honor MINIMUM_CYCLES on stat display (Bandwidth Statistics)
CHG: PHP 5.5 support
REM: cache support at the function broker (apnscpFunctionInterceptor)
REM: high priority option for new accounts (CRM)
REM: Ruby on Rails AJAX installer. Obviated: now integrated into hosting platform

REM: one-clicks – RIP!

Comments

 

New CP Update: Internal tweaks, automation, and more

A new apnscp release has been pushed to the servers focusing primarily on tidying up under the hood. Sorry, no awesome, new features yet. We’re working on cleaning up backend, and automating some of the most common tasks, because having more time to write code and less time to repeat processes is awesome. There’s also a super secret, yet very deadly wipe() command in the site module. If you would like to reinitialize your account to its original state, call this via the SOAP API.

Changelog

NEW: gethostbyname_t(), gethostbyaddr_t()- perform respective DNS lookups with configurablable timeout (1s default) (DNS)
NEW: wipe() – DO NOT USE THIS – wipes account, reinitializing account to clean state (Site)
NEW: get_authns_from_host()- get authoritative nameservers (nameservers that appear in WHOIS) for a domain (DNS)
NEW: silence()- for when you really, really, really want to shut up PHP (Error Reporter)
NEW: Util_Account_Editor: wrapper for editing account meta, handles old Ensim error/warnings in apnscp error reporting facility (Editor)
NEW: ssl module to create, sign certificates. Still API calls at this point, still further regression testing before integrating into CP (SSL)
FIX: stop polling ticket for updates if last update fails (Tickets)
FIX: prevent users for adding domains that have DNS records set that do not use ns1/2.apisnetworks.com or that do not have the requisite IP address pointed to the site. This is a security precaution to prevent users from maliciously hijacking DNS and mail routing for hostnames (Addon Domains)
FIX: flush()- ignore warning if getpwnam() flush fails to delete unset cache (User)
FIX: get_records_by_rr() fails to return records when “ANY” RR specified (DNS)
FIX: when relocating a MySQL database, make sure the caller that triggers a move is the DB owner (SQL)
FIX: dialog fails to close if selectField option passed (File Tree)
FIX: incorrect ticket meta used as ticket subject (CRM)
FIX: stdin channel output returned as array instead of string as other channels (Process)
FIX: garbage collector can collect unused, initialized variables early in code execution, particularly seen with the SOAP facet that preloads the ~500 KB WSDL before evaluating an envelop. Manually GC when it’s safe (SOAP, apnscpd)
CHG: natural sort nameservers (DNS Manager)
CHG: check if ticket server is down, handle accordingly (Tickets)
CHG: dispatch notification completion message after account migrated successfully (Migration)
CHG: reload HTTP server on account IP change, server name change, or addon domain change (Web)
CHG: update account IP address on ipinfo metadata change (DNS)
CHG: transfer DNS automatically on domain addition, obsoletes transferdomain.sh (DNS)
CHG: prevent account editing in disabled state, silence “apnscp reconfigured with warnings” message, add support for create, delete modes (Account Editor)
CHG: Add extra check to make sure information is persent in ticket before ticket is submitted (CRM)
CHG: Disable tickets for suspended accounts (CRM)
CHG: return null if ticket metadata is not set, e.g. no description given in ticket (CRM)
CHG: don’t flush output buffer after reporting error, interferes with headers (Error Reporter)
CHG: note that addon domains may take up to 24 hours to propagate (Addon Domains)
CHG: respond with 500 status instead of 200 on AJAX error (AJAX)
CHG: delay postback notifier pulse until page has sufficiently rendered (500 ms) (Template)
CHG: before performing username switch, flush getpwnam() cache to ensure the requested user was not recently created (Auth)
CHG: 25% speedup to canonicalize_site(), canonicalize_path() used in File module (File)
CHG: use jQuery Deferred callbacks with apnscp.cmd() (apnscp.js)
REM: optional testimonial note (Dashboard)
REM: function_cache, service_cache cleanup in session database – these are no longer in use
NEW: gethostbyname_t(), gethostbyaddr_t()- perform respective DNS lookups with configurablable timeout (1s default) (DNS)

NEW: wipe() – DO NOT USE THIS – wipes account, reinitializing account to clean state (Site)
NEW: get_authns_from_host()- get authoritative nameservers (nameservers that appear in WHOIS) for a domain (DNS)
NEW: silence()- for when you really, really, really want to shut up PHP (Error Reporter)
NEW: Util_Account_Editor: wrapper for editing account meta, handles old Ensim error/warnings in apnscp error reporting facility (Editor)
NEW: ssl module to create, sign certificates. Still API calls at this point, still further regression testing before integrating into CP (SSL)
FIX: stop polling ticket for updates if last update fails (Tickets)
FIX: prevent users for adding domains that have DNS records set that do not use ns1/2.apisnetworks.com or that do not have the requisite IP address pointed to the site. This is a security precaution to prevent users from maliciously hijacking DNS and mail routing for hostnames (Addon Domains)
FIX: flush()- ignore warning if getpwnam() flush fails to delete unset cache (User)
FIX: get_records_by_rr() fails to return records when “ANY” RR specified (DNS)
FIX: when relocating a MySQL database, make sure the caller that triggers a move is the DB owner (SQL)
FIX: dialog fails to close if selectField option passed (File Tree)
FIX: incorrect ticket meta used as ticket subject (CRM)
FIX: stdin channel output returned as array instead of string as other channels (Process)
FIX: garbage collector can collect unused, initialized variables early in code execution, particularly seen with the SOAP facet that preloads the ~500 KB WSDL before evaluating an envelop. Manually GC when it’s safe (SOAP, apnscpd)
CHG: natural sort nameservers (DNS Manager)
CHG: check if ticket server is down, handle accordingly (Tickets)
CHG: dispatch notification completion message after account migrated successfully (Migration)
CHG: reload HTTP server on account IP change, server name change, or addon domain change (Web)
CHG: update account IP address on ipinfo metadata change (DNS)
CHG: transfer DNS automatically on domain addition, obsoletes transferdomain.sh (DNS)
CHG: prevent account editing in disabled state, silence “apnscp reconfigured with warnings” message, add support for create, delete modes (Account Editor)
CHG: Add extra check to make sure information is persent in ticket before ticket is submitted (CRM)
CHG: Disable tickets for suspended accounts (CRM)
CHG: return null if ticket metadata is not set, e.g. no description given in ticket (CRM)
CHG: don’t flush output buffer after reporting error, interferes with headers (Error Reporter)
CHG: note that addon domains may take up to 24 hours to propagate (Addon Domains)
CHG: respond with 500 status instead of 200 on AJAX error (AJAX)
CHG: delay postback notifier pulse until page has sufficiently rendered (500 ms) (Template)
CHG: before performing username switch, flush getpwnam() cache to ensure the requested user was not recently created (Auth)
CHG: 25% speedup to canonicalize_site(), canonicalize_path() used in File module (File)
CHG: use jQuery Deferred callbacks with apnscp.cmd() (apnscp.js)
REM: optional testimonial note (Dashboard)
REM: function_cache, service_cache cleanup in session database – these are no longer in use

Comments off