.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "cPanel::PublicAPI::WHM::API 3" .TH cPanel::PublicAPI::WHM::API 3 "2019-03-06" "perl v5.16.3" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" cPanel::PublicAPI::WHM::API \- Legacy interface for querying the xml\-api. .PP NOTE: This module is provided for legacy purposes, cPanel::PublicAPI should be used instead .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module provides legacy compatibility support between cPanel::PublicAPI and Cpanel::Accounting (distributed with cPanel). This should never be used unless there is a very good reason to use it (such as having a script that uses Cpanel::Accounting). .PP Every method contained within this object can be queried using \fIcPanel::publicAPI::whm_api()\fR instead. .PP For more information on the calls within the methods contained here and what the parameter names mean, please read the documentation at: .SH "functions" .IX Header "functions" .ie n .SS """api_listaccts()""" .el .SS "\f(CWapi_listaccts()\fP" .IX Subsection "api_listaccts()" Used to list the accounts on a server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listaccts( $search, $searchtype ); .Ve .ie n .SS """api_createacct()""" .el .SS "\f(CWapi_createacct()\fP" .IX Subsection "api_createacct()" Create a new cPanel account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_createacct( $username, $domain, $password, $plan ); .Ve .ie n .SS """api_removeacct()""" .el .SS "\f(CWapi_removeacct()\fP" .IX Subsection "api_removeacct()" Terminate an account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_removeacct( $user ); .Ve .ie n .SS """api_showversion()""" .el .SS "\f(CWapi_showversion()\fP" .IX Subsection "api_showversion()" Get the version of cPanel running on the server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_showversion( ); .Ve .ie n .SS """api_version()""" .el .SS "\f(CWapi_version()\fP" .IX Subsection "api_version()" Get the version of cPanel running on the server (as as showversion) .PP Syntax: .PP .Vb 1 \& $pubapi\->api_version( ); .Ve .ie n .SS """api_applist()""" .el .SS "\f(CWapi_applist()\fP" .IX Subsection "api_applist()" List out the available xml-api calls. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_applist( ); .Ve .ie n .SS """api_generatessl()""" .el .SS "\f(CWapi_generatessl()\fP" .IX Subsection "api_generatessl()" Generate an ssl certificate. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_generatessl( $host, $pass, $country, $state, $city, $co, $cod, $email, $xemail ); .Ve .ie n .SS """api_generatessl_noemail()""" .el .SS "\f(CWapi_generatessl_noemail()\fP" .IX Subsection "api_generatessl_noemail()" Generate an \s-1SSL\s0 certificate without an email. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_generatessl_noemail( $noemail=1 ); .Ve .ie n .SS """api_listcrts()""" .el .SS "\f(CWapi_listcrts()\fP" .IX Subsection "api_listcrts()" List out the certificates that exist on the server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listcrts( ); .Ve .ie n .SS """api_setresellerlimits()""" .el .SS "\f(CWapi_setresellerlimits()\fP" .IX Subsection "api_setresellerlimits()" Set the limits for a single reseller account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setresellerlimits( ); .Ve .ie n .SS """api_setresellerpackagelimit()""" .el .SS "\f(CWapi_setresellerpackagelimit()\fP" .IX Subsection "api_setresellerpackagelimit()" Set which packages a reseller account can use. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setresellerpackagelimit( $user, $package, $allowerd, $number, $no_limit ); .Ve .ie n .SS """api_setresellermainip()""" .el .SS "\f(CWapi_setresellermainip()\fP" .IX Subsection "api_setresellermainip()" Set a reseller's main \s-1IP.\s0 .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setresellermainip( $user, $ip ); .Ve .ie n .SS """api_setresellerips()""" .el .SS "\f(CWapi_setresellerips()\fP" .IX Subsection "api_setresellerips()" Set the \s-1IP\s0 that a reseller has available to it. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setresellerips( $user, $delegate, $ips ); .Ve .ie n .SS """api_setresellernameservers()""" .el .SS "\f(CWapi_setresellernameservers()\fP" .IX Subsection "api_setresellernameservers()" Set the nameservers that a reseller uses by default. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setresellernameservers( $user, $nameservers ); .Ve .ie n .SS """api_suspendreseller()""" .el .SS "\f(CWapi_suspendreseller()\fP" .IX Subsection "api_suspendreseller()" Suspend a reseller and all of their accounts. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_suspendreseller( $user, $reason, $disallow ); .Ve .ie n .SS """api_unsuspendreseller()""" .el .SS "\f(CWapi_unsuspendreseller()\fP" .IX Subsection "api_unsuspendreseller()" Unsuspend a reseller and all of their accounts. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_unsuspendreseller( $user ); .Ve .ie n .SS """api_addzonerecord()""" .el .SS "\f(CWapi_addzonerecord()\fP" .IX Subsection "api_addzonerecord()" Add a record to a zone. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_addzonerecord( @args ); .Ve .ie n .SS """api_editzonerecord()""" .el .SS "\f(CWapi_editzonerecord()\fP" .IX Subsection "api_editzonerecord()" Edit a zone record. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_editzonerecord(@args ); .Ve .ie n .SS """api_removezonerecord()""" .el .SS "\f(CWapi_removezonerecord()\fP" .IX Subsection "api_removezonerecord()" Remove a line from a zone. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_removezonerecord( $domain, $Line ); .Ve .ie n .SS """api_getzonerecord()""" .el .SS "\f(CWapi_getzonerecord()\fP" .IX Subsection "api_getzonerecord()" Get a record from a zone. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_getzonerecord( $domain, $Line ); .Ve .ie n .SS """api_servicestatus()""" .el .SS "\f(CWapi_servicestatus()\fP" .IX Subsection "api_servicestatus()" Get the status of various services running on a system. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_servicestatus( $service ); .Ve .ie n .SS """api_configureservice()""" .el .SS "\f(CWapi_configureservice()\fP" .IX Subsection "api_configureservice()" Enable/Disable various services. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_configureservice( $service, $enabled, $monitored ); .Ve .ie n .SS """api_acctcounts()""" .el .SS "\f(CWapi_acctcounts()\fP" .IX Subsection "api_acctcounts()" Get the number of accounts on a system/that belong to a reseller. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_acctcounts( $user ); .Ve .ie n .SS """api_domainuserdata()""" .el .SS "\f(CWapi_domainuserdata()\fP" .IX Subsection "api_domainuserdata()" Get the information about a specific domain's virtualhost. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_domainuserdata( $domain ); .Ve .ie n .SS """api_editquota()""" .el .SS "\f(CWapi_editquota()\fP" .IX Subsection "api_editquota()" Edit a user's quota. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_editquota( $user, $quota ); .Ve .ie n .SS """api_nvget()""" .el .SS "\f(CWapi_nvget()\fP" .IX Subsection "api_nvget()" Get non-volatile data. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_nvget( $key ); .Ve .ie n .SS """api_nvset()""" .el .SS "\f(CWapi_nvset()\fP" .IX Subsection "api_nvset()" Set non-volatile data. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_nvset( $key, $value ); .Ve .ie n .SS """api_myprivs()""" .el .SS "\f(CWapi_myprivs()\fP" .IX Subsection "api_myprivs()" See what privileges are available to your user. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_myprivs( ); .Ve .ie n .SS """api_listzones()""" .el .SS "\f(CWapi_listzones()\fP" .IX Subsection "api_listzones()" List all the zones available to a user. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listzones( ); .Ve .ie n .SS """api_sethostname()""" .el .SS "\f(CWapi_sethostname()\fP" .IX Subsection "api_sethostname()" Set the hostname of a system. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_sethostname( $hostname ); .Ve .ie n .SS """api_setresolvers()""" .el .SS "\f(CWapi_setresolvers()\fP" .IX Subsection "api_setresolvers()" Set the resolvers a system uses. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setresolvers( $nameserver1, $nameserver2, $nameserver3 ); .Ve .ie n .SS """api_addip()""" .el .SS "\f(CWapi_addip()\fP" .IX Subsection "api_addip()" Add a new \s-1IP\s0 to a server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_addip( $ip, $netmask ); .Ve .ie n .SS """api_delip()""" .el .SS "\f(CWapi_delip()\fP" .IX Subsection "api_delip()" Remove an \s-1IP\s0 from a server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_delip( $ip, $ethernetdev, $skipifshutdown ); .Ve .ie n .SS """api_listips()""" .el .SS "\f(CWapi_listips()\fP" .IX Subsection "api_listips()" List the IPs on a server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listips( ); .Ve .ie n .SS """api_dumpzone()""" .el .SS "\f(CWapi_dumpzone()\fP" .IX Subsection "api_dumpzone()" Get the contents of a zone file. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_dumpzone( $domain ); .Ve .ie n .SS """api_listpkgs()""" .el .SS "\f(CWapi_listpkgs()\fP" .IX Subsection "api_listpkgs()" List the packages available to your user. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listpkgs( ); .Ve .ie n .SS """api_limitbw()""" .el .SS "\f(CWapi_limitbw()\fP" .IX Subsection "api_limitbw()" Limit the amount of bandwidth available to an account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_limitbw( $user, $bwlimit ); .Ve .ie n .SS """api_showbw()""" .el .SS "\f(CWapi_showbw()\fP" .IX Subsection "api_showbw()" Show the amount of \s-1BW\s0 used by an account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_showbw( $month, $year, $showres, $search, $searchtype ); .Ve .ie n .SS """api_killdns()""" .el .SS "\f(CWapi_killdns()\fP" .IX Subsection "api_killdns()" Remove a \s-1DNS\s0 zone. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_killdns( $domain ); .Ve .ie n .SS """api_adddns()""" .el .SS "\f(CWapi_adddns()\fP" .IX Subsection "api_adddns()" Add a dns zone. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_adddns( $domain, $ip, $trueowner ); .Ve .ie n .SS """api_changepackage()""" .el .SS "\f(CWapi_changepackage()\fP" .IX Subsection "api_changepackage()" Change an Account's Package. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_changepackage( $user, $pkg ); .Ve .ie n .SS """api_modifyacct()""" .el .SS "\f(CWapi_modifyacct()\fP" .IX Subsection "api_modifyacct()" Modify an Account's limits. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_modifyacct( $user, $domain, $HASCGI, $CPTHEME, $LANG, $MAXPOP, $MAXFTP, $MAXLST, $MAXSUB, $MAXPARK, $MAXADDON, $MAXSQL, $shell ); .Ve .ie n .SS """api_suspendacct()""" .el .SS "\f(CWapi_suspendacct()\fP" .IX Subsection "api_suspendacct()" Suspend an account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_suspendacct( $user, $reason ); .Ve .ie n .SS """api_unsuspendacct()""" .el .SS "\f(CWapi_unsuspendacct()\fP" .IX Subsection "api_unsuspendacct()" Unsuspend an account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_unsuspendacct( $user ); .Ve .ie n .SS """api_listsuspended()""" .el .SS "\f(CWapi_listsuspended()\fP" .IX Subsection "api_listsuspended()" List the suspended accounts on a server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listsuspended( ); .Ve .ie n .SS """api_addpkg()""" .el .SS "\f(CWapi_addpkg()\fP" .IX Subsection "api_addpkg()" Add a new package. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_addpkg( $pkgname, $quota, $ip, $cgi, $frontpage, $cpmod, $maxftp, $maxsql, $maxpop, $maxlst, $maxsub, $maxpark, $maxaddon, $featurelist, $hasshell, $bwlimit ); .Ve .ie n .SS """api_killpkg()""" .el .SS "\f(CWapi_killpkg()\fP" .IX Subsection "api_killpkg()" Remove a package. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_killpkg( $pkg ); .Ve .ie n .SS """api_editpkg()""" .el .SS "\f(CWapi_editpkg()\fP" .IX Subsection "api_editpkg()" Edit a package. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_editpkg( $pkgname, $quota, $ip, $cgi, $frontpage, $cpmod, $maxftp, $maxsql, $maxpop, $maxlst, $maxsub, $maxpark, $maxaddon, $featurelist, $hasshell, $bwlimit ); .Ve .ie n .SS """api_setacls()""" .el .SS "\f(CWapi_setacls()\fP" .IX Subsection "api_setacls()" Change features available to a reseller. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setacls( $reseller, $acllist ); .Ve .ie n .SS """api_terminatereseller()""" .el .SS "\f(CWapi_terminatereseller()\fP" .IX Subsection "api_terminatereseller()" Remove a reseller. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_terminatereseller( $reseller, $verify ); .Ve .ie n .SS """api_resellerstats()""" .el .SS "\f(CWapi_resellerstats()\fP" .IX Subsection "api_resellerstats()" Get statistics on a specific reseller. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_resellerstats( $reseller ); .Ve .ie n .SS """api_setupreseller()""" .el .SS "\f(CWapi_setupreseller()\fP" .IX Subsection "api_setupreseller()" Make a cPanel account a Reseller account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setupreseller( $user, $makeowner ); .Ve .ie n .SS """api_lookupnsip()""" .el .SS "\f(CWapi_lookupnsip()\fP" .IX Subsection "api_lookupnsip()" Get the \s-1IP\s0 for a nameserver. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_lookupnsip( $nameserver ); .Ve .ie n .SS """api_listresellers()""" .el .SS "\f(CWapi_listresellers()\fP" .IX Subsection "api_listresellers()" List all the resellers on a system. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listresellers( ); .Ve .ie n .SS """api_listacls()""" .el .SS "\f(CWapi_listacls()\fP" .IX Subsection "api_listacls()" List all of the \s-1ACL\s0 lists available. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_listacls( ); .Ve .ie n .SS """api_saveacllist()""" .el .SS "\f(CWapi_saveacllist()\fP" .IX Subsection "api_saveacllist()" Save a new \s-1ACL\s0 list. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_saveacllist( $acllist ); .Ve .ie n .SS """api_unsetupreseller()""" .el .SS "\f(CWapi_unsetupreseller()\fP" .IX Subsection "api_unsetupreseller()" Remove reseller permissions from an account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_unsetupreseller( $user ); .Ve .ie n .SS """api_gethostname()""" .el .SS "\f(CWapi_gethostname()\fP" .IX Subsection "api_gethostname()" Get the hostname of the server currently being queried. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_gethostname( ); .Ve .ie n .SS """api_fetchsslinfo()""" .el .SS "\f(CWapi_fetchsslinfo()\fP" .IX Subsection "api_fetchsslinfo()" Get information on a specific \s-1SSL\s0 certificate. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_fetchsslinfo( $domain, $crtdata ); .Ve .ie n .SS """api_installssl()""" .el .SS "\f(CWapi_installssl()\fP" .IX Subsection "api_installssl()" Install a new \s-1SSL\s0 certificate. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_installssl( $domain, $user, $cert, $key, $cab, $ip ); .Ve .ie n .SS """api_passwd()""" .el .SS "\f(CWapi_passwd()\fP" .IX Subsection "api_passwd()" Change an account's password. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_passwd( $user, $pass ); .Ve .ie n .SS """api_getlanglist()""" .el .SS "\f(CWapi_getlanglist()\fP" .IX Subsection "api_getlanglist()" Get a list of languages available on a system. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_getlanglist( ); .Ve .ie n .SS """api_reboot()""" .el .SS "\f(CWapi_reboot()\fP" .IX Subsection "api_reboot()" Reboot the server. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_reboot( $force ); .Ve .ie n .SS """api_accountsummary_user()""" .el .SS "\f(CWapi_accountsummary_user()\fP" .IX Subsection "api_accountsummary_user()" Get a summary of an account. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_accountsummary_user( $user ); .Ve .ie n .SS """api_accountsummary_domain()""" .el .SS "\f(CWapi_accountsummary_domain()\fP" .IX Subsection "api_accountsummary_domain()" Get the summary of an account by specifying the domain. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_accountsummary_domain( $domain ); .Ve .ie n .SS """api_loadavg()""" .el .SS "\f(CWapi_loadavg()\fP" .IX Subsection "api_loadavg()" Get the loadavg on the system. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_loadavg( ); .Ve .ie n .SS """api_restartservice()""" .el .SS "\f(CWapi_restartservice()\fP" .IX Subsection "api_restartservice()" Restart a service. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_restartservice( $service ); .Ve .ie n .SS """api_setsiteip_user()""" .el .SS "\f(CWapi_setsiteip_user()\fP" .IX Subsection "api_setsiteip_user()" Set the \s-1IP\s0 for a specific user. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setsiteip_user( $user, $ip ); .Ve .ie n .SS """api_setsiteip_domain()""" .el .SS "\f(CWapi_setsiteip_domain()\fP" .IX Subsection "api_setsiteip_domain()" Set the \s-1IP\s0 for a specific domain. .PP Syntax: .PP .Vb 1 \& $pubapi\->api_setsiteip_domain( $domain, $ip ); .Ve .SH "Bugs" .IX Header "Bugs" see http://rt.cpan.org to report and view bugs .SH "License" .IX Header "License" Copyright (c) 2015, cPanel, Inc. All rights reserved. http://cpanel.net .PP Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of cPanel, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. .PP \&\s-1THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \*(L"AS IS\*(R" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES \&\s0(\s-1INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES\s0; \&\s-1LOSS OF USE, DATA, OR PROFITS\s0; \s-1OR BUSINESS INTERRUPTION\s0) \s-1HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \&\s0(\s-1INCLUDING NEGLIGENCE OR OTHERWISE\s0) \s-1ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\s0