{"id":2108,"date":"2019-01-01T12:30:39","date_gmt":"2019-01-01T12:30:39","guid":{"rendered":"http:\/\/www.softaculous.com\/blog\/?post_type=docs&#038;p=2108"},"modified":"2022-03-31T07:29:53","modified_gmt":"2022-03-31T07:29:53","slug":"softaculous-remote","status":"publish","type":"docs","link":"https:\/\/www.softaculous.com\/blog\/docs\/developers\/integrating-into-custom-panels\/softaculous-remote\/","title":{"rendered":"Softaculous Remote"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Overview<\/h3>\n\n\n\n<p>The following guide will show you how to install Softaculous Remote. Softaculous Remote is suitable for a system where installation needs to be done on a remote server with the help of FTP \/ FTPS \/ SFTP. Softaculous will be installed on a single VM or dedicated server and will install applications over FTP \/ FTPS \/ SFTP. Softaculous Remote is suitable for a setup where the FTP \/ FTPS \/ SFTP details of the endusers are available.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>A server with Root access.<\/li><li>If you have a firewall, then please allow access to download all packages from&nbsp;<strong>*.softaculous.com<\/strong><\/li><li>GCC is required to be installed on the server. If it is not already installed you can install it using the following command&nbsp;:<\/li><\/ul>\n\n\n\n<p class=\"bash hljs\">yum install gcc<\/p>\n\n\n\n<p class=\"alert alert-info\"><strong>Note<\/strong>&nbsp;: Please allow access to the following domains to your firewall as these are the mirrors used to download the script packages.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">162.55.80.8 #api.softaculous.com<br>192.198.80.6 #s0.softaculous.com<br>51.38.208.85 #s1.softaculous.com<br>37.27.68.87 #s2.softaculous.com<br>178.63.132.196 #s3.softaculous.com<br>95.216.2.79 #s4.softaculous.com<br>15.235.60.218 #s5.softaculous.com<br>51.38.94.231 #s6.softaculous.com<br>15.204.134.13 #s7.softaculous.com<br>148.113.15.242 #s8.softaculous.com<\/pre>\n\n\n\n<p><strong>IMPORTANT&nbsp;:<\/strong>&nbsp;Please do not use any other web server on this server because Softaculous will be using its own web server on port 80, 443, 2006 and 2007. Also do not install any other database as MySQL too will be installed by Softaculous and will be using port 3178.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Supported OS<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>CentOS<\/li><li>Ubuntu<\/li><li>Debian<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Installing Softaculous<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>SSH to your server and enter following commands:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted bash hljs\">wget -N http:\/\/files.softaculous.com\/install.sh\nchmod 755 install.sh\n.\/install.sh --remote\n<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Note the API KEY and API PASSWORD<\/strong>&nbsp;given by the installer in the end. It will be used for Login and verification purpose.<\/li><li>That&#8217;s it the installation of Softaculous Remote is completed!<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Installing a Script<\/h3>\n\n\n\n<p>You can install a script directly by passing the details mentioned below. This will add a domain and also install the script.<\/p>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authenitcation<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>software, js, perl<\/td><td>The value should be &#8220;software&#8221; to install PHP script, &#8220;js&#8221; to install a JavaScript and &#8220;perl&#8221; to install a PERL script for softaculous to perform the&nbsp;<strong>act<\/strong>ion of installing a software.<\/td><\/tr><tr><td>soft<\/td><td>26 (26 is the Script ID of WordPress)<\/td><td>The value should be &#8220;SID&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of installing a software. You can find the list of sid&#8217;s&nbsp;<a href=\"http:\/\/api.softaculous.com\/scripts.php?in=serialize\">here<\/a><\/td><\/tr><tr><th>POST<\/th><\/tr><tr><td>domainadd<\/td><td>array()<\/td><td>This will be the array with the details of the domain where you want to install the script.<\/td><\/tr><tr><td>softsubmit<\/td><td>1<\/td><td>This will trigger the install<\/td><\/tr><tr><td>softdomain<\/td><td>domain.com<\/td><td>This is the domain on which you wish to install the script<\/td><\/tr><tr><td>softdirectory<\/td><td>wp<\/td><td>This is the sub-directory to install the script in. Leave it blank to install in root of the domain<\/td><\/tr><tr><td>softdb<\/td><td>wp123<\/td><td>This is the database name for the script. If the script does not require database you can leave this blank<\/td><\/tr><tr><td>dbusername<\/td><td>wp123<\/td><td>This is the database user<\/td><\/tr><tr><td>dbuserpass<\/td><td>w1XRF28mq8<\/td><td>This is the database password. You can generate a random password<\/td><\/tr><tr><td>hostname<\/td><td>localhost<\/td><td>This is the hostname of your MySQL server. You can enter your MySQL server IP if you have MySQL on a remote server<\/td><\/tr><tr><td>admin_username<\/td><td>admin<\/td><td>This is the admin account username for the installation<\/td><\/tr><tr><td>admin_pass<\/td><td>pass<\/td><td>This is the admin account password for the installation<\/td><\/tr><tr><td>admin_email<\/td><td>admin@domain.com<\/td><td>This is the admin account email address for the installation<\/td><\/tr><tr><td>language<\/td><td>en<\/td><td>Language for the installation. You can get the language codes from the respective&nbsp;<strong>install.xml<\/strong><\/td><\/tr><tr><td>site_name<\/td><td>My Blog<\/td><td>Site Name for the installation<\/td><\/tr><tr><td>site_desc<\/td><td>My WordPress Blog<\/td><td>Site Description for the installation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=software'.\n                        '&amp;soft=26';\n\n$post = array('softsubmit' =&gt; '1',\n              'domainadd' =&gt; array(\n                   'domain' =&gt; 'example.com', \/\/ domain name\n                   'port' =&gt; '21', \/\/ FTP port\n                   'protocol' =&gt; 'ftp', \/\/ Protocol\n                   'ftp_user' =&gt; 'testuser', \/\/ FTP User\n                   'ftp_pass' =&gt; 'testpass', \/\/ FTP Password\n                   'ftp_path' =&gt; '\/public_html', \/\/ Relative path to document root of the domain\n                   'path' =&gt; '\/home\/testuser\/public_html', \/\/ Full path to the document root of the domain\n                   'backupdir' =&gt; '\/backups', \/\/ Backups directory path\n                   'datadir' =&gt; '\/datadir' \/\/ Data directory path\n              ),\n              'softdomain' =&gt; 'example.com', \/\/ Must be a valid Domain\n              'softdirectory' =&gt; 'wp', \/\/ Keep empty to install in Web Root\n              'softdb' =&gt; 'wpdb',\n              'dbusername' =&gt; 'dbusername',\n              'dbuserpass' =&gt; 'dbuserpass',\n              'hostname' =&gt; 'localhost',\n              'admin_username' =&gt; 'admin',\n              'admin_pass' =&gt; 'adminpassword',\n              'admin_email' =&gt; 'admin@example.com',\n              'language' =&gt; 'en',\n              'site_name' =&gt; 'WordPress Site',\n              'site_desc' =&gt; 'My Blog'\n);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">User Management<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Types of Users<\/h3>\n\n\n\n<p>There are three types of Users in Softaculous Remote&nbsp;:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Admin User<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>There is only one Admin User i.e&nbsp;<strong>root<\/strong>&nbsp;and is by default added during the installation.<\/li><li>Owner and Username of Admin User is&nbsp;<strong>root<\/strong><\/li><li>It is responsible for handling the scripts, users, domains and other settings.<\/li><li>Admin can create Reseller as well as Regular Users.<\/li><li>Like Regular users even Admins can use the Enduser Panel and install scripts.<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Reseller User<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Only Admin can create Resellers.<\/li><li>Resellers can be added from Admin Panel<\/li><li>Number of users allotted to Reseller should be more by one because reseller himself is counted as a user. E.g If Admin has allotted 10 number of users then Reseller can add total 9 Regular Users under his account.<\/li><li>Resellers can create Regular Users.<\/li><li>Like Regular users even Resellers can use the Enduser Panel and install, remove and manage scripts.<\/li><li>If the Reseller is &#8216;<strong>xyz&#8217;<\/strong>&nbsp;then the&nbsp;<strong>owner<\/strong>&nbsp;and the&nbsp;<strong>username<\/strong>&nbsp;of his accounts will be &#8216;<strong>xyz&#8217;<\/strong>.<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Regular User<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Regular Users can be created by Admin or Resellers.<\/li><li>Owner of the Regular User will the User who is creating the user, it can be Admin(root) or Reseller.<\/li><li>They can install, remove, update, manage scripts from Enduser Panel.<\/li><li>The owner and the username of the Regular users create by a Reseller will be&nbsp;:<ul><li>Owner =&gt; Reseller&#8217;s Username(<strong>xyz<\/strong>&nbsp;in above example)<\/li><li>Username =&gt; User name of the regular user just created<\/li><\/ul><\/li><li>The owner and the username of the Regular users create by Admin will be&nbsp;:<ul><li>Owner =&gt;&nbsp;<strong>root<\/strong><\/li><li>Username =&gt; User name of the regular user just created<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Authentication Methods<\/h3>\n\n\n\n<p>There are three possible ways to login into Softaculous Remote&nbsp;:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Default Login<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Access your server through browser &lt;your-server-ip&gt; or &lt;your-domain&gt;.com<\/li><li>Enter the API KEY and API PASS provided by the Installer or your host to login into Softaculous Remote.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"248\" src=\"http:\/\/www.softaculous.com\/blog\/wp-content\/uploads\/2019\/01\/600px-Default_login.jpg\" alt=\"\" class=\"wp-image-2110\" srcset=\"https:\/\/www.softaculous.com\/blog\/wp-content\/uploads\/2019\/01\/600px-Default_login.jpg 600w, https:\/\/www.softaculous.com\/blog\/wp-content\/uploads\/2019\/01\/600px-Default_login-300x124.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Login Code<\/h4>\n\n\n\n<p>This is optional part and Softaculous will use the default session handling.&nbsp;<br><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Softaculous allows you to dynamically handle the session and define the User details and Domains to be listed under the user. This can be done using&nbsp;<strong>session.php<\/strong>&nbsp;where you can communicate with your control panel and validate the current user&#8217;s session.<br><\/li><li>If session.php is created Softaculous will skip the authentication part and will assume that the session is authenticated by you.<br><\/li><li>You can define the user details i.e. username, owner, email and the domains owned by the current logged in user in&nbsp;<strong>$PRE_LOGIN<\/strong>&nbsp;array.&nbsp;<br><\/li><li>When Softaculous is loaded it will add the user and domains defined in&nbsp;<strong>$PRE_LOGIN<\/strong>&nbsp;if it does not exist in Softaculous database.<br><\/li><li>You can refer to the&nbsp;<strong>session.sample.php<\/strong>&nbsp;located at&nbsp;<strong>\/usr\/local\/softaculous\/enduser\/session.sample.php<\/strong><br><br><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Variable<\/th><th>Example<\/th><th>Description<\/th><\/tr><tr><td>$PRE_LOGIN[&#8216;username&#8217;]<\/td><td>test<\/td><td>Username who will be accessing Softaculous Remote. Admin user is root which is created during installation time. If the username passed here does not exist in Softaculous Remote database it will be added.<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;owner&#8217;] (Optional)<\/td><td>root<\/td><td>Owner who will own this account. This is not the username but this is the user who will own the account. If not specified &#8216;root&#8217; will be assumed. Default owner is root which is created during installation time.<\/td><\/tr><tr><td>$PRE_LOGIN[&#8217;email&#8217;]<\/td><td>user@email.com<\/td><td>Email of the username. This is used to send emails like whether Install, Remove, Update of Scripts were successful or not.<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;plan&#8217;] (Optional)<\/td><td>platinum<\/td><td>This is used to specify which control panel plan does this user falls under. Refer [<a href=\"http:\/\/www.softaculous.com\/docs\/Softaculous_Remote#Control_Panel_Plans_.28Optional.29\">[1]<\/a>] for defining control panel plans<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;domain&#8217;]<\/td><td>domain.com<\/td><td>Domain Name where the users will be installing the scripts<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;server_host&#8217;] (Optional)<\/td><td>ftp.domain.com<\/td><td>Server host if domain and server host are different.<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;port&#8217;]<\/td><td>21<\/td><td>Port which should be used to connect FTP server<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;protocol&#8217;]<\/td><td>ftp<\/td><td>Protocol that should be used to connect to the server. Possible values (ftp, ftps, sftp)<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;ftp_user&#8217;]<\/td><td>user<\/td><td>Valid FTP User to connect to the domain<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;ftp_pass&#8217;]<\/td><td>password<\/td><td>Valid FTP Password of the user<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;ftp_path&#8217;]<\/td><td>\/public_html<\/td><td>Valid Web accessible directory available and accessible to the FTP User. Directory should be present. It should be relative from Home Directory of the user with a slash in the beginning as FTP requires it this way.<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;path&#8217;]<\/td><td>\/home\/USERNAME\/public_html<\/td><td>Full path of the web accessible directory.<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;backupdir&#8217;]<\/td><td>\/backups<\/td><td>Relative Path of the Backup Directory. Backups created by Softaculous will be located here.<\/td><\/tr><tr><td>$PRE_LOGIN[&#8216;domains&#8217;][0][&#8216;datadir&#8217;]<\/td><td>\/home\/USERNAME\/datadir<\/td><td>Absolute path of the Data Directory. Some scripts like Elgg, Moodle, etc need a non web accessible folder.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ Write your code to authenticate the session with your control panel\nif(!$authenticated){\n\tdie('Could not validate session');\n}\n\n$PRE_LOGIN['owner'] = 'root'; \/\/ Owner\n$PRE_LOGIN['username'] = 'test'; \/\/ Username\n$PRE_LOGIN['email'] = 'user@email.com'; \/\/ Email\n$PRE_LOGIN['plan'] = 'platinum'; \/\/ Control Panel Plan\n\n\/\/ Domain 1 details\n$PRE_LOGIN['domains'][0]['domain'] = 'domain1.com';\n$PRE_LOGIN['domains'][0]['port'] = 21;\n$PRE_LOGIN['domains'][0]['protocol'] = 'ftp';\n$PRE_LOGIN['domains'][0]['ftp_user'] = 'user';\n$PRE_LOGIN['domains'][0]['ftp_pass'] = 'password';\n$PRE_LOGIN['domains'][0]['ftp_path'] = '\/public_html';\n$PRE_LOGIN['domains'][0]['path'] = '\/home\/USERNAME\/public_html';\n$PRE_LOGIN['domains'][0]['backupdir'] = '\/backups';\n$PRE_LOGIN['domains'][0]['datadir'] = '\/home\/USERNAME\/datadir';\n\n\/\/ Domain 2 details\n$PRE_LOGIN['domains'][1]['domain'] = 'domain2.com';\n$PRE_LOGIN['domains'][1]['server_host'] = 'ftp.domain2.com';\n$PRE_LOGIN['domains'][1]['port'] = 21;\n$PRE_LOGIN['domains'][1]['protocol'] = 'ftp';\n$PRE_LOGIN['domains'][1]['ftp_user'] = 'user';\n$PRE_LOGIN['domains'][1]['ftp_pass'] = 'password';\n$PRE_LOGIN['domains'][1]['ftp_path'] = '\/public_html\/domain2';\n$PRE_LOGIN['domains'][1]['path'] = '\/home\/USERNAME\/public_html\/domain2';\n$PRE_LOGIN['domains'][1]['backupdir'] = '\/backups';\n$PRE_LOGIN['domains'][1]['datadir'] = '\/home\/USERNAME\/datadir';\n\n\n\/\/ You can also define the following optional constants\ndefine('SOFT_LOGOUT_URL', 'http:\/\/YOUR_LOGOUT.URL'); \/\/ Define your custom logout URL here\ndefine('SOFT_LOGOUT_REDIRECT', 'http:\/\/YOUR_REDIRECT.URL'); \/\/ Define the URL where you want the user to be redirected after logging out using default logout URL\ndefine('SOFT_SIGNIN_REDIRECT', 'http:\/\/YOUR_SIGNIN.URL'); \/\/ Define the URL where you want the user to be redirected for login<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Sync Domains<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>When the domains are passed using&nbsp;<strong>$PRE_LOGIN[&#8216;domains&#8217;]<\/strong>&nbsp;array described in the previous section the domain is synced with the Softaculous Remote database and if the domain does not exist in Softaculous Remote database the domain is added automatically.<\/li><li>However if you remove a domain from the&nbsp;<strong>$PRE_LOGIN[&#8216;domains&#8217;]<\/strong>&nbsp;array it will not be deleted from Softaculous Remote database. In order to delete the domains when they are not passed in&nbsp;<strong>$PRE_LOGIN[&#8216;domains&#8217;]<\/strong>&nbsp;you will need to enable the&nbsp;<strong>Enable Sync Domain(s)<\/strong>&nbsp;from Softaculous Admin Panel -&gt; Settings page. Once this setting is enabled the domains passed in&nbsp;<strong>$PRE_LOGIN[&#8216;domains&#8217;]<\/strong>&nbsp;will be in sync with the database and only the domains passed in&nbsp;<strong>$PRE_LOGIN[&#8216;domains&#8217;]<\/strong>&nbsp;will be present in the database.<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Session Tokens<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Refer to&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Remote_API#Session_Tokens\">Session Tokens<\/a>&nbsp;for creating session tokens which can be used to redirect the user to Softaculous Remote with the session created. The user will not have to do anything to login in this method as the session is created by the Admin here for automation purposes.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Extended Integration (Optional)<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>You can extend the integration with Softaculous Remote to automate tasks like database creation, database deletion, adding cronjob, etc<\/li><li>Softaculous Remote requires a database when a user wants to install a script which requires a database. By Default Softaculous Requires the database to be created. If you want to automate this for the user so that the database is created automatically by Softaculous when required you will need to write some functions in&nbsp;<strong>remote.php<\/strong><\/li><li>You can refer to the remote.sample.php located at \/usr\/local\/softaculous\/enduser\/remote.sample.php<\/li><\/ul>\n\n\n\n<p>remote.php consists of a PHP class named&nbsp;<strong>remote<\/strong>&nbsp;which has the functions (explained below) which are called by Softaculous when required.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Auto generate database name<\/h3>\n\n\n\n<p>Use this option if you do not want to ask the user for the database name. You can write your algorithm to generate database name. In order to use this option you will need to write the dbname() and dbuser() functions which are explained in the guide below.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">var $auto_managedb = 1;<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Constructor<\/h3>\n\n\n\n<p>If you want to execute anything when remote class is loaded you can put it here. For example you can connect to mysql as shown in below example if you want.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function remote(){\n\n\t\/\/ Connecting to the database with root privileges. This will be used to create database for any new installations.\n\t\/\/ Note: This is not compulsory and just an example\n\t$this-&gt;db = mysql_connect($this-&gt;dbhost(), 'root', 'mysql');\n\t\n\tif(!$this-&gt;db){\n\t\tdie('Could not establish a connection to a database.');\n\t}\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Database Query function<\/h3>\n\n\n\n<p>Create this function to execute a database query. You can use this function later to execute like CREATE DATABASE, DELETE DATABASE, etc in the functions defined later.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function myquery($query, $report = 1){\n\t$result = mysql_query($query, $this-&gt;db);\n\tif($report &amp;&amp; !$result){\n\t\techo 'Could not make query : &lt;br \/&gt;'.$query.'\n\t\t&lt;br \/&gt;&lt;br \/&gt; MySQL ERROR :'.mysql_error($this-&gt;db);\n\t\tdie();\n\t}\n\treturn $result;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Database Host<\/h3>\n\n\n\n<p>It should return the hostname of the database. This function is used to connect to a database where Softaculous can install scripts.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function dbhost($type = 'mysql'){\t\n\treturn 'localhost';\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Database Usage Limit<\/h3>\n\n\n\n<p>The max number of databases that this user can create. This function is used to check that user does not create more databases than allotted. If the user is allowed unlimited database return a string.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function maxdb($type = 'mysql'){\n\t\/\/ return 'unlimited';\n\treturn 1000000;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Current Database Usage<\/h3>\n\n\n\n<p>This function is called to CHECK whether the existing number of databases is not GREATER that or EQUAL to (&gt;=) than the allowed number of Databases. If the user is allowed unlimited database return a string.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function dbsused($type = 'mysql'){\n\treturn 0;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Database Name<\/h3>\n\n\n\n<p>If the panel requires to modify the DB NAME that is to be created when installing a script, it has to be done here. If your panel adds the username as prefix to the input from users as DBNAME and create Databases like USERNAME_DBNAME. In such a case this function must return USERNAME_DBNAME<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function dbname($dbname){\t\t\n\treturn $dbname;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Database Username<\/h3>\n\n\n\n<p>If the panel requires to modify the DB USERNAME that is to be created when installing a script, it has to be done here. If your panel adds the username as prefix to the input from users as DBUSERNAME and create Database user like USERNAME_DBUSERNAME. In such a case this function must return USERNAME_DBUSERNAME<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function dbuser($dbuser){\n\treturn $dbuser;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Database User Password<\/h3>\n\n\n\n<p>This should return the password that should be used for the database user just created. You can generated a random password.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function dbpass($dbpass){\n\tif(!empty($dbpass)) return $dbpass;\n\telse return generateRandStr(7);\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Check Database Exists<\/h3>\n\n\n\n<p>Check whether the specified Database Exists. Return true if it exists or false if it doesnt.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function dbexists($dbname){\n\treturn false;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Check Database User Exists<\/h3>\n\n\n\n<p>Check whether the specified Database User Exists. Return true if it exists or false if it doesnt.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function dbuserexists($dbuser){\n\treturn false;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create Database<\/h3>\n\n\n\n<p>This function should create the DATABASE and also the Database USER.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">* The user must also be added to the database so that the user can conduct all necessary operations on the Database.\n* Return true if it is created successfully or false if there were any error\n* If there are any errors while creation of database please fill in $GLOBALS['error'][] = 'The error';\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function createdb($dbname, $dbuser, $dbpass, $type = 'mysql'){\n\t$is_empty = $this-&gt;dbexists($dbname);\n\tif(!empty($is_empty)) return true;\n\n\t$result = $this-&gt;myquery(\"CREATE DATABASE \".$dbname, 0);\n\t\n\t\/\/ Softaculous is installed on 192.168.17.131 and will be accessing the database from here\n\t$result = $this-&gt;myquery(\"GRANT ALL PRIVILEGES ON $dbname.* TO '$dbuser'@'192.168.17.131' IDENTIFIED BY '$dbpass'\", 0);\n\t\n\t$result = $this-&gt;myquery(\"GRANT ALL PRIVILEGES ON $dbname.* TO '$dbuser'@'\".$this-&gt;dbhost().\"'\n\tIDENTIFIED BY '$dbpass'\", 0);\n\t\n\t\/* if(!$result){\n\t\t$GLOBALS['error'] = 'Could not create the database';\n\t} *\/\n\t\n\treturn true;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Delete Database<\/h3>\n\n\n\n<p>This function should delete the DATABASE and also the Database USER.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">* Return true if it deletes the database and user successfully or false if it doesn't\n* If there are any errors while deleting of database please fill in $GLOBALS['error'][] = 'The error';\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function deldb($dbname, $dbuser, $type = 'mysql'){\t\t\n\t\t\t\n\tglobal $globals, $__settings;\n\t$result = $this-&gt;myquery(\"DROP DATABASE \".$dbname, 0);\n\t$result = $this-&gt;myquery(\"DROP USER '\".$dbuser.\"'@'192.168.17.131'\", 0);\n\t$result = $this-&gt;myquery(\"DROP USER '\".$dbuser.\"'@'\".$this-&gt;dbhost().\"'\", 0);\n\t\n\treturn true;\t\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Space Remain<\/h3>\n\n\n\n<p>This function should return the Disk Space Available in BYTES. If a string is returned it will be assumed that the user has unlimited space.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function spaceremain(){\t\n\treturn 'UNLIMITED';\t\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Add Cron Job<\/h3>\n\n\n\n<p>Some scripts require a CRON job to be added under the user&#8217;s account. This function should add a CRON job for a script. Return TRUE if cron job was added successfully else FALSE.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">* @param string $min.\n* @param string $hour.\n* @param string $day.\n* @param string $month.\n* @param string $weekday.\n* @param string $command.\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function addcron($min, $hour, $day, $month, $weekday, $command, $mail = ''){\t\t\n\t\n\t\/\/ This function should create a cron job on the machine where the script will be installed.\n\t\/\/ Certain scripts like Drupal require a cron job for certain activity.\n\t\n\t\/\/ NOTE : This has to be created on the machine where the script will be installed and not where the Softaculous is located.\n\t\n\treturn true;\n\t\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Delete Cron Job<\/h3>\n\n\n\n<p>Delete a CRON job of an installed script. Return TRUE if cron job was deleted successfully else FALSE<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">* @param string $command.\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function delcron($command){\t\n\treturn true;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Blacklist Domains (Optional)<\/h3>\n\n\n\n<p>This function is optional. Choose list of domains you want to exclude for the user from existing list of domains owned by that user. Return array list of domains you want to blacklist with domain name as the key<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">* @param array $domains Existing Domains list under the user's account.\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function blacklist_domains($domains){\n\t$blacklist_domains = array();\n\treturn $blacklist_domains;\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Control Panel Plans (Optional)<\/h3>\n\n\n\n<p>This function is optional. You can use this function to pass a list of plans by fetching it from your control panel. Once you pass the control panel plans here you will be able to create an ACL for users from Softaculous Admin panel -&gt; Plans and assign scripts to the user as per the plan he is under. Return array list of control panel plans<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function listcpplans(){\n\t$cpplans = array();\t\n\treturn $cpplans;\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">How to use Softaculous Remote<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>To access Enduser Panel visit http:\/\/&lt;your-ip&gt; or http:\/\/&lt;your-domain&gt; and (Port 443 for HTTPS)<\/li><li>To access Admin Panel visit http:\/\/&lt;your-ip&gt;:2006 and (Port 2007 for HTTPS)<\/li><li>To access phpMyAdmin visit http:\/\/&lt;your-ip&gt;\/phpmyadmin\/index.php or http:\/\/&lt;your-domain&gt;\/phpmyadmin\/index.php (index.php in the end is compulsory)<\/li><li>MySQL root password is stored at \/usr\/local\/softaculous\/conf\/myconf<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">WEB API<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">List Scripts<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>blank or any<\/td><td>Any act will do as this is available everywhere.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;act=home'.\n\t\t\t'&amp;api=serialize';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n\n\/\/ Unserialize data\n$res = unserialize($resp);\n\n\/\/ The Installed scripts list is in the array key 'iscripts'\nprint_r($res['iscripts']);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Install a Script<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>software, js, perl<\/td><td>The value should be &#8220;software&#8221; to install PHP script, &#8220;js&#8221; to install a JavaScript and &#8220;perl&#8221; to install a PERL script for softaculous to perform the&nbsp;<strong>act<\/strong>ion of installing a software.<\/td><\/tr><tr><td>soft<\/td><td>26 (26 is the Script ID of WordPress)<\/td><td>The value should be &#8220;SID&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of installing a software. You can find the list of sid&#8217;s&nbsp;<a href=\"http:\/\/api.softaculous.com\/scripts.php?in=serialize\">here<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>softsubmit<\/td><td>1<\/td><td>This will trigger the install<\/td><\/tr><tr><td>softdomain<\/td><td>domain.com<\/td><td>This is the domain on which you wish to install the script<\/td><\/tr><tr><td>softdirectory<\/td><td>wp<\/td><td>This is the sub-directory to install the script in. Leave it blank to install in root of the domain<\/td><\/tr><tr><td>softdb<\/td><td>wp123<\/td><td>This is the database name for the script. If the script does not require database you can leave this blank<\/td><\/tr><tr><td>dbusername<\/td><td>wp123<\/td><td>This is the database user(Only for Softaculous Remote)<\/td><\/tr><tr><td>dbuserpass<\/td><td>w1XRF28mq8<\/td><td>This is the database password. You can generate a random password(Only for Softaculous Remote)<\/td><\/tr><tr><td>hostname<\/td><td>localhost<\/td><td>This is the hostname of your MySQL server. You can enter your MySQL server IP if you have MySQL on a remote server(Only for Softaculous Remote)<\/td><\/tr><tr><td>admin_username<\/td><td>admin<\/td><td>This is the admin account username for the installation<\/td><\/tr><tr><td>admin_pass<\/td><td>pass<\/td><td>This is the admin account password for the installation<\/td><\/tr><tr><td>admin_email<\/td><td>admin@domain.com<\/td><td>This is the admin account email address for the installation<\/td><\/tr><tr><td>language<\/td><td>en<\/td><td>Language for the installation. You can get the language codes from the respective&nbsp;<strong>install.xml<\/strong><\/td><\/tr><tr><td>site_name<\/td><td>My Blog<\/td><td>Site Name for the installation<\/td><\/tr><tr><td>site_desc<\/td><td>My WordPress Blog<\/td><td>Site Description for the installation<\/td><\/tr><tr><td>dbprefix<\/td><td>dbpref_<\/td><td>(Optional) Table Prefix to be used for the tables created by application<\/td><\/tr><tr><td>noemail<\/td><td>1<\/td><td>(Optional) &#8211; Use this only if you do not want to send an email to the user<\/td><\/tr><tr><td>overwrite_existing<\/td><td>1<\/td><td>(Optional) &#8211; Use this only if you do not want Softaculous to check for existing files in installation path. If any file(s) exists they will be overwritten.<\/td><\/tr><tr><td>softproto<\/td><td>1 &#8211; http:\/\/&nbsp;<br>2 &#8211;&nbsp;<a href=\"http:\/\/www\/\">http:\/\/www<\/a>.&nbsp;<br>3 &#8211; https:\/\/&nbsp;<br>4 &#8211;&nbsp;<a href=\"https:\/\/www\/\">https:\/\/www<\/a>.<\/td><td>(Optional) &#8211; Protocol to be used for the installation<\/td><\/tr><tr><td>eu_auto_upgrade<\/td><td>1<\/td><td>(Optional) &#8211; Pass 1 to enable auto upgrade. Auto upgrade will be enabled only if the script supports auto upgrade.<\/td><\/tr><tr><td>auto_upgrade_plugins<\/td><td>1<\/td><td>(Optional) &#8211; Pass 1 to enable auto upgrade plugins. If script supports auto upgrade for plugin then it will be enabled.<\/td><\/tr><tr><td>auto_upgrade_themes<\/td><td>1<\/td><td>(Optional) &#8211; Pass 1 to enable auto upgrade themes. If script supports auto upgrade for theme then it will be enabled.<\/td><\/tr><tr><td>auto_backup<\/td><td>daily &#8211; Once a day&nbsp;<br>weekly &#8211; Once a week&nbsp;<br>monthly &#8211; Once a month<\/td><td>(Optional) &#8211; Enable auto backups<\/td><\/tr><tr><td>auto_backup_rotation<\/td><td>0 &#8211; Unlimited backup rotation<br>1 &#8211; backup rotation after 1 backup<br>4 &#8211; backup rotation after 1 backup<\/td><td>(Optional) &#8211; Possible values (0-10). Use this to set the value for auto backup rotation.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=software'.\n                        '&amp;soft=26';\n\n$post = array('softsubmit' =&gt; '1',\n              'softdomain' =&gt; 'example.com', \/\/ Must be a valid Domain\n              'softdirectory' =&gt; 'wp', \/\/ Keep empty to install in Web Root\n              'softdb' =&gt; 'wpdb',\n              'dbusername' =&gt; 'dbusername',\n              'dbuserpass' =&gt; 'dbuserpass',\n              'hostname' =&gt; 'localhost',\n              'admin_username' =&gt; 'admin',\n              'admin_pass' =&gt; 'adminpassword',\n              'admin_email' =&gt; 'admin@example.com',\n              'language' =&gt; 'en',\n              'site_name' =&gt; 'WordPress Site',\n              'site_desc' =&gt; 'My Blog',\n              'dbprefix' =&gt; 'dbpref_'\n);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Task list Status<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the\u00a0<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>\u00a0or\u00a0<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>\u00a0methods.<\/td><\/tr><tr><td>act<\/td><td>eu_tasklist<\/td><td>The value should be &#8220;eu_tasklist&#8221; to perform the&nbsp;<strong>act<\/strong>ion to get the status of the task.<\/td><\/tr><tr><td>ssk<\/td><td>abcdefghijklmnopqrstuvwxyz0123456789<\/td><td>The ssk is the status file.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">CURL<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">curl \"https:\/\/your.softaculous.com\/index.php?act=eu_tasklist&amp;ssk=abcdefghijklmnopqrstuvwxyz0123456789&amp;api=json\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">PHP<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'https:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=eu_tasklist'.\n\t\t\t'&amp;ssk=abcdefghijklmnopqrstuvwxyz0123456789';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<p>You will get the response as follows:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>      [title] =&gt; Softaculous - Task List<br>      [status] =&gt; Array         <br>                   (             <br>                       [process] =&gt;              <br>                       [current_status] =&gt; Propagating the database<br>                       [sid] =&gt; 26<br>                       [name] =&gt; WordPress             <br>                       [version] =&gt; 4.7.5             <br>                       [softurl] =&gt; https:\/\/domain.com\/<br>                       [completed] =&gt; Installation Completed<br>                       [progress] =&gt; 100         <br>                    )     <br>      [no_tasks] =&gt;      <br>      [tasks_file] =&gt;      <br>      [timenow] =&gt; 1496828740     <br>      [time_taken] =&gt; 0.001 <br>) <\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Edit an Installation<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>editdetail<\/td><td>The value should be &#8220;editdetail&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of editing an installation.<\/td><\/tr><tr><td>insid<\/td><td>26_12345<\/td><td>The installation ID that you want to edit. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Installed_Script\">List Installed Script<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>editins<\/td><td>1<\/td><td>This will trigger the edit function<\/td><\/tr><tr><td>edit_dir<\/td><td>\/home\/USERNAME\/public_html<\/td><td>(Optional) Path to installation. If not posted the path in existing records will be used.<\/td><\/tr><tr><td>edit_url<\/td><td><a href=\"http:\/\/example.com\/\">http:\/\/example.com<\/a><\/td><td>(Optional) URL to installation. If not posted the URL in existing records will be used.<\/td><\/tr><tr><td>edit_datadir<\/td><td>\/home\/USERNAME\/datadir<\/td><td>(Optional) Path to data directory of the installation. If not posted the data directory in existing records will be used.<\/td><\/tr><tr><td>edit_dbname<\/td><td>username_dbname<\/td><td>(Optional) Database name for the installation. If not posted the Database name in existing records will be used.<\/td><\/tr><tr><td>edit_dbuser<\/td><td>username_dbuser<\/td><td>(Optional) Database user for the installation. If not posted the Database user in existing records will be used.<\/td><\/tr><tr><td>edit_dbpass<\/td><td>dbpass<\/td><td>(Optional) Password of the database user for the installation. If not posted the password in existing records will be used.<\/td><\/tr><tr><td>edit_dbhost<\/td><td>localhost<\/td><td>(Optional) Database host for the installation. If not posted the Database host in existing records will be used.<\/td><\/tr><tr><td>eu_auto_upgrade<\/td><td>1<\/td><td>(Optional) 1 to Enable auto upgrade option and 0 to disable. If not posted the existing setting will not be changed.<\/td><\/tr><tr><td>auto_upgrade_plugins<\/td><td>1<\/td><td>(Optional) 1 to Enable auto upgrade plugins option and 0 to disable. If not posted the existing setting will not be changed. (Currently this option is supported only in WordPress)<\/td><\/tr><tr><td>auto_upgrade_themes<\/td><td>1<\/td><td>(Optional) 1 to Enable auto upgrade themes option and 0 to disable. If not posted the existing setting will not be changed. (Currently this option is supported only in WordPress)<\/td><\/tr><tr><td>noemail<\/td><td>1<\/td><td>(Optional) &#8211; Use this only if you do not want to send an email to the user<\/td><\/tr><tr><td>admin_username<\/td><td>adminusername<\/td><td>(Optional) &#8211; Use this only if the script provides admin account creation at the time of installation<\/td><\/tr><tr><td>admin_pass<\/td><td>adminpassword<\/td><td>(Optional) &#8211; Use this only if the script provides admin account creation at the time of installation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=editdetail'.\n                        '&amp;insid=26_12345';\n\n$post = array('editins' =&gt; '1',\n              'edit_dir' =&gt; '\/path\/to\/installation\/', \/\/ Must be the path to installation\n              'edit_url' =&gt; 'http:\/\/example.com', \/\/ Must be the URL to installation\n              'edit_dbname' =&gt; 'wpdb',\n              'edit_dbuser' =&gt; 'dbusername',\n              'edit_dbpass' =&gt; 'dbuserpass',\n              'edit_dbhost' =&gt; 'dbhost',\n              'admin_username' =&gt; 'adminusername', \/\/Provide this only if script provides as well as password needs to be reset\n              'admin_pass' =&gt; 'adminpassword' \/\/Provide this only if script provides\n);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}\n\n\/\/ Print the entire output just incase !\nprint_r($res);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Upgrade an Installed Script<\/h3>\n\n\n\n<figure class=\"wp-block-table aligncenter table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>upgrade<\/td><td>The value should be &#8220;upgrade&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of upgrading an installation.<\/td><\/tr><tr><td>insid<\/td><td>26_12345<\/td><td>The installation ID that you want to upgrade. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Installed_Script\">List Installed Script<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>softsubmit<\/td><td>1<\/td><td>This will trigger the upgrade<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=upgrade'.\n                        '&amp;insid=26_12345';\n\n$post = array('softsubmit' =&gt; '1');\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\t\/\/ There might be some task that the user has to perform\n\tif(!empty($res['setupcontinue'])){\n\n\t\techo 'Please visit the following URL to complete upgrade : '.$res['setupcontinue'];\t\n\n\t\/\/ It upgraded\n\t}else{\n\n\t\techo 'Upgraded successfully. URL to Installation : '.$res['__settings']['softurl'];\t\n\n\t}\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}\n\n\/\/ Print the entire output just incase !\nprint_r($res);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Update Installation Version in Softaculous Records<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>editdetail<\/td><td>The value should be &#8220;editdetail&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of editing an installation.<\/td><\/tr><tr><td>insid<\/td><td>26_12345<\/td><td>The installation ID that you want to edit. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Installed_Script\">List Installed Script<\/a><\/td><\/tr><tr><td>updateversion<\/td><td>1<\/td><td>The value should be&nbsp;<strong>1<\/strong>&nbsp;so it will invoke the method to determine and update the Softaculous records with the correct version of the installation<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=editdetail'.\n                        '&amp;insid=26_12345'.\n                        '&amp;updateversion=1';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}\n\n\/\/ Print the entire output just incase !\nprint_r($res);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Clone an Installed Script<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>sclone<\/td><td>The value should be &#8220;sclone&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of cloning an installation.<\/td><\/tr><tr><td>insid<\/td><td>26_12345<\/td><td>The installation ID that you want to clone. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Installed_Script\">List Installed Script<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>softsubmit<\/td><td>1<\/td><td>This will trigger the upgrade<\/td><\/tr><tr><td>softdomain<\/td><td>domain.com<\/td><td>This is the domain on which you wish to clone the installation<\/td><\/tr><tr><td>softdirectory<\/td><td>wp<\/td><td>This is the sub-directory to clone the installation in. Leave it blank to clone in root of the domain<\/td><\/tr><tr><td>softdb<\/td><td>wp123<\/td><td>This is the database name for the cloned installation. If the script does not require database you can leave this blank.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=sclone'.\n                        '&amp;insid=26_12345';\n\n$post = array('softsubmit' =&gt; '1',\n              'softdomain' =&gt; 'example.com', \/\/ Must be a valid Domain\n              'softdirectory' =&gt; 'wp', \/\/ Keep empty to install in Web Root\n              'softdb' =&gt; 'wpdb'\n);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\techo 'Cloned successfully. URL to Installation cloned installation : '.$res['__settings']['softurl'];\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}\n\n\/\/ Print the entire output just incase !\nprint_r($res);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Remove an Installed Script<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>remove<\/td><td>The value should be &#8220;remove&#8221; to perform the&nbsp;<strong>act<\/strong>ion of removing an installed script.<\/td><\/tr><tr><td>insid<\/td><td>8 (Installation ID)<\/td><td>Installation ID of the installed script. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Installed_Script\">List Installed Script<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>removeins<\/td><td>1<\/td><td>This will trigger the remove install process<\/td><\/tr><tr><td>remove_dir<\/td><td>1<\/td><td>This is to remove the directory where the script is installed. If you do not want to remove the directory do not pass this key in post.<\/td><\/tr><tr><td>remove_datadir<\/td><td>1<\/td><td>This is to remove the data directory where the script is installed. If you do not want to remove the data directory do not pass this key in post.<\/td><\/tr><tr><td>remove_db<\/td><td>1<\/td><td>This is to remove the database of the installation. If you do not want to remove the database do not pass this key in post.<\/td><\/tr><tr><td>remove_dbuser<\/td><td>1<\/td><td>This is to remove the database user of the installation. If you do not want to remove the database user do not pass this key in post.<\/td><\/tr><tr><td>noemail<\/td><td>1<\/td><td>(Optional) &#8211; Use this only if you do not want to send an email to the user<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=remove'.\n                        '&amp;insid=8';\n\n$post = array('removeins' =&gt; '1',\n              'remove_dir' =&gt; '1', \/\/ Pass this if you want the directory to be removed\n              'remove_datadir' =&gt; '1', \/\/ Pass this if you want the data directory to be removed\n              'remove_db' =&gt; '1', \/\/ Pass this if you want the database to be removed\n              'remove_dbuser' =&gt; '1' \/\/ Pass this if you want the database user to be removed\n\t\t);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Import an Installation<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>import<\/td><td>The value should be &#8220;import&#8221; to perform the&nbsp;<strong>act<\/strong>ion of importing an installation.<\/td><\/tr><tr><td>soft<\/td><td>26 (26 is the Script ID of WordPress)<\/td><td>The value should be &#8220;SID&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of installing a software. You can find the list of sid&#8217;s&nbsp;<a href=\"http:\/\/api.softaculous.com\/scripts.php?in=serialize\">here<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>softdomain<\/td><td>example.com<\/td><td>This will be the domain where your script is installed. Domain should be without&nbsp;<strong>http:\/\/<\/strong>&nbsp;or&nbsp;<strong>https:\/\/<\/strong><\/td><\/tr><tr><td>softdirectory<\/td><td>wp<\/td><td>(OPTIONAL) This will be the directory under the domain where your script is installed. Leave this blank if the script is installed in the root of domain.<\/td><\/tr><tr><td>softsubmit<\/td><td>1<\/td><td>This will trigger the import function.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=import'.\n\t\t\t'&amp;soft=26';\n\n$post = array('softsubmit' =&gt; 1,\n\t\t'softdomain' =&gt; 'example.com',\n\t\t'softdirectory' =&gt; 'wp');\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Import an Installation from Remote server<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>import<\/td><td>The value should be &#8220;import&#8221; to perform the&nbsp;<strong>act<\/strong>ion of importing an installation.<\/td><\/tr><tr><td>soft<\/td><td>26 (26 is the Script ID of WordPress)<\/td><td>The value should be &#8220;SID&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of installing a software. You can find the list of sid&#8217;s&nbsp;<a href=\"http:\/\/api.softaculous.com\/scripts.php?in=serialize\">here<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>domain<\/td><td>source.example.com<\/td><td>This will be the domain where your script is installed.<\/td><\/tr><tr><td>server_host<\/td><td>ftp.example.com<\/td><td>(OPTIONAL) This is the server host which will be used as the host to connect via FTP.<\/td><\/tr><tr><td>protocol<\/td><td>ftp<\/td><td>The Protocol to use for connecting to the domain. Currently only FTP protocol is supported.<\/td><\/tr><tr><td>port<\/td><td>21<\/td><td>Port number to connect to the FTP server. FTP default is 21.<\/td><\/tr><tr><td>ftp_user<\/td><td>ftp_user<\/td><td>User to connect to the FTP server.<\/td><\/tr><tr><td>ftp_pass<\/td><td>ftp_pass<\/td><td>Password for User to connect to the FTP server.<\/td><\/tr><tr><td>ftp_path<\/td><td>\/public_html<\/td><td>Path to the directory relative to home directory of user for installations.<\/td><\/tr><tr><td>Installed_path<\/td><td>wp<\/td><td>(OPTIONAL) This will be the directory under the domain where your script is installed. Leave this blank if the script is installed in the root of domain.<\/td><\/tr><tr><td>softproto<\/td><td>1 \u2013 http:\/\/&nbsp;<br>2 \u2013&nbsp;<a href=\"http:\/\/www\/\">http:\/\/www<\/a>.&nbsp;<br>3 \u2013 https:\/\/&nbsp;<br>4 \u2013&nbsp;<a href=\"https:\/\/www\/\">https:\/\/www<\/a>.<\/td><td>(Optional) \u2013 Protocol to be used for the destination installation.<br><br><\/td><\/tr><tr><td>softdomain<\/td><td>destination.example.com<\/td><td>This is the destination domain on which you wish to import the script.<\/td><\/tr><tr><td>dest_directory<\/td><td>wp_dest<\/td><td>(OPTIONAL) This will be the directory under the domain where you want the installation to be imported. Leave this blank if you want to import the installation to the root of your domain.<\/td><\/tr><tr><td>softdb<\/td><td>dbname<\/td><td>(OPTIONAL) This is the database name for the script. If the script does not require database you can leave this blank<\/td><\/tr><tr><td>remote_submit<\/td><td>1<\/td><td>This will trigger the remote import function.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">CURL<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">curl -d \"remote_submit=1\" -d \"domain=source.example.com\" -d \"server_host=ftp.example.com\" -d \"protocol=ftp\" -d \"21\" -d \"ftp_user=ftp_user\" -d \"ftp_pass=ftp_pass\" -d \"ftp_path=\/public_html\" -d \"Installed_path=wp\" -d \"softdomain=destination.example.com\" -d \"dest_directory=wp_dest\" -d \"softdb=db_name\" -d \"api_key=TESTAPIKEY\" -d \"api_pass=PASSPASSPASSPASSPASSPASSPASSPASS\" \"https:\/\/your.softaculous.com\/index.php?act=import&amp;soft=26&amp;api=json\"<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">PHP<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'https:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'&amp;api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=import'.\n\t\t\t'&amp;soft=26';\n\n$post = array('remote_submit' =&gt; '1',\n              'domain' =&gt; 'source.example.com', \/\/ Source installation domain\n              'server_host' =&gt; 'ftp.example.com', \/\/ Optional\n              'protocol' =&gt; 'ftp',\n              'port' =&gt; '21',\n              'ftp_user' =&gt; 'ftp_user',\n              'ftp_pass' =&gt; 'ftp_pass',\n              'ftp_path' =&gt; '\/public_html',\n              'Installed_path' =&gt; 'wp', \/\/ Optional\n              'softdomain' =&gt; 'destination.example.com', \/\/ Destination domain\n              'dest_directory' =&gt; 'wp_dest', \/\/ Optional Directory\n              'softdb' =&gt; 'dbname' \/\/ Database name (Option for scripts that do not have database name)\n);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<p>You will receive a &#8220;ssk&#8221; value in return which you can track using the <a href=\"https:\/\/www.softaculous.com\/docs\/developers\/softaculous-remote\/#task-list-status\">Task List Status API<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Get Script Info<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>software<\/td><td>The value should be &#8220;installations&#8221; to perform the&nbsp;<strong>act<\/strong>ion of listing installations.<\/td><\/tr><tr><td>soft<\/td><td>26 (26 is the Script ID of WordPress)<\/td><td>The value should be &#8220;SID&#8221; for softaculous to perform the&nbsp;<strong>act<\/strong>ion of installing a software. You can find the list of sid&#8217;s&nbsp;<a href=\"http:\/\/api.softaculous.com\/scripts.php?in=serialize\">here<\/a><\/td><\/tr><tr><td>giveinfo<\/td><td>1<\/td><td>Pass this value as 1 to get the information of the script (passed in the&nbsp;<strong>soft<\/strong>&nbsp;parameter)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=software'.\n\t\t\t'&amp;soft=26'.\n\t\t\t'&amp;giveinfo=1';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n\n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n\nprint_r($res);\nprint_r($res['info']['overview']); \/\/ will have overview of the script (in HTML format)\nprint_r($res['info']['features']); \/\/ will have features list of the script (in HTML format)\nprint_r($res['info']['demo']); \/\/ will have the link to demo of the script\nprint_r($res['info']['ratings']); \/\/ will have the link to ratings page of the script\nprint_r($res['info']['support']); \/\/ will have the link to script vendor support page\nprint_r($res['info']['release_date']); \/\/ will have the release date of the current version of the script\nprint_r($res['settings']); \/\/ will have an array of the list of fields that the script will require, e.g. site_name, site_desc, language, etc\nprint_r($res['dbtype']); \/\/ if the value is not empty it means the script requires a database, if the value is empty it means that the script does not require a database\nprint_r($res['cron']); \/\/ if the value is not empty it means the script requires a CRON JOB, if the value is empty it means that the script does not require a CRON JOB\nprint_r($res['datadir']); \/\/ if the value is not empty it means the script requires a data directory, if the value is empty it means that the script does not require a data directory<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">List Installed Script<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>installations<\/td><td>The value should be &#8220;installations&#8221; to perform the&nbsp;<strong>act<\/strong>ion of listing installations.<\/td><\/tr><tr><td>showupdates<\/td><td>true<\/td><td>(OPTIONAL) The value should be &#8220;true&#8221; if you want to list only installations that have an update available for softaculous to perform the&nbsp;<strong>act<\/strong>ion of listing installations.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=installations';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">List Outdated Installations\/ Installations that need update<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>installations<\/td><td>The value should be &#8220;installations&#8221; to perform the&nbsp;<strong>act<\/strong>ion of listing installations.<\/td><\/tr><tr><td>showupdates<\/td><td>true<\/td><td>The value should be &#8220;true&#8221; if you want to list only installations that have an update available for Softaculous to perform the&nbsp;<strong>act<\/strong>ion of listing installations.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=installations'.\n\t\t\t'&amp;showupdates=true';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">List Backups<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>backups<\/td><td>The value should be &#8220;backups&#8221; to perform the&nbsp;<strong>act<\/strong>ion of listing backups.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=backups';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Backup an Installed Script<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>backup<\/td><td>The value should be &#8220;backup&#8221; to perform the&nbsp;<strong>act<\/strong>ion of taking the backup of the installation.<\/td><\/tr><tr><td>insid<\/td><td>26_5454 (Installation ID)<\/td><td>Installation ID of the installed script. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Installed_Script\">List Installed Script<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>backupins<\/td><td>1<\/td><td>This will trigger the backup function.<\/td><\/tr><tr><td>backup_dir<\/td><td>1<\/td><td>This is to backup the directory<\/td><\/tr><tr><td>backup_datadir<\/td><td>1<\/td><td>This is to backup the data directory<\/td><\/tr><tr><td>backup_db<\/td><td>1<\/td><td>This is to backup the database<\/td><\/tr><tr><td>backup_location<\/td><td>2&nbsp;<br>(Location ID)<\/td><td>(Optional) &#8211; Location id of the backup location where you want to store your current backup. Default value will be the one saved in the installation&#8217;s settings. You can find the location id from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Backup_Locations\">List Backup Locations<\/a><\/td><\/tr><tr><td>noemail<\/td><td>1<\/td><td>(Optional) &#8211; Use this only if you do not want to send an email to the user<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=backup'.\n\t\t\t'&amp;insid=26_4545';\n\n$post = array('backupins' =&gt; '1',\n              'backup_dir' =&gt; '1', \/\/ Pass this if you want to backup the directory\n              'backup_datadir' =&gt; '1', \/\/ Pass this if you want to backup the data directory\n              'backup_db' =&gt; '1', \/\/ Pass this if you want to backup the database\n\t\t);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Restore an Installed Script<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>restore<\/td><td>The value should be &#8220;restore&#8221; to perform the&nbsp;<strong>act<\/strong>ion of restoring the backup of the installation.<\/td><\/tr><tr><td>restore<\/td><td>backup_time_insid.tar.gz (Backup File Name)<\/td><td>Name of the Backup File. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Backups\">List Backups<\/a><\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>restore_ins<\/td><td>1<\/td><td>This will trigger the restore function.<\/td><\/tr><tr><td>restore_dir<\/td><td>1<\/td><td>This is to restore the directory<\/td><\/tr><tr><td>restore_datadir<\/td><td>1<\/td><td>This is to restorethe data directory<\/td><\/tr><tr><td>restore_db<\/td><td>1<\/td><td>This is to restore the database<\/td><\/tr><tr><td>noemail<\/td><td>1<\/td><td>(Optional) &#8211; Use this only if you do not want to send an email to the user<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=restore'.\n\t\t\t'&amp;restore=backup_time_insid.tar.gz';\n\n$post = array('restore_ins' =&gt; '1',\n              'restore_dir' =&gt; '1', \/\/ Pass this if you want to restore the directory\n              'restore_datadir' =&gt; '1', \/\/ Pass this if you want to restore the data directory\n              'restore_db' =&gt; '1', \/\/ Pass this if you want to restore the database\n\t\t);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Download Backups<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>backups<\/td><td>The value should be &#8220;backups&#8221; to perform the&nbsp;<strong>act<\/strong>ion of downloading the backup of an installation.<\/td><\/tr><tr><td>download<\/td><td>backup_time_insid.zip (Backup File Name)<\/td><td>Name of the Backup File. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Backups\">List Backups<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\"><br>\/\/ The URL $url = 'http:\/\/your.softaculous.com\/index.php?'. 'api_key=TESTAPIKEY'. '&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'. '&amp;api=serialize'. '&amp;act=backups'. '&amp;download=backup_time_insid.zip';<br>\/\/ Set the curl parameters. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>\/\/ Turn off the server and peer verification (TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); if(!empty($post)){ curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post)); }   \/\/ Get response from the server. $resp = curl_exec($ch);<br><br><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Delete Backups<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>backups<\/td><td>The value should be &#8220;backups&#8221; to perform the&nbsp;<strong>act<\/strong>ion of downloading the backup of an installation.<\/td><\/tr><tr><td>remove<\/td><td>backup_time_insid.zip (Backup File Name)<\/td><td>Name of the Backup File. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Backups\">List Backups<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=backups'.\n\t\t\t'&amp;remove=backup_time_insid.zip';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Edit Enduser Settings<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>settings<\/td><td>The value should be &#8220;settings&#8221; to perform the&nbsp;<strong>act<\/strong>ion of updating the settings of a user.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>editsettings<\/td><td>1<\/td><td>This will trigger the edit settings function<\/td><\/tr><tr><td>language<\/td><td>english<\/td><td>The language you want to set for the user.<\/td><\/tr><tr><td>timezone<\/td><td>0<\/td><td>This is the timezone that you want to set for the user. User&nbsp;<strong>0<\/strong>&nbsp;to set the timezone to&nbsp;<strong>Server Default<\/strong>.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=settings;\n\n$post = array('editsettings' =&gt; 1,\n\t\t'language' =&gt; 'english',\n\t\t'timezone' =&gt; '0');\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Edit Enduser Email Settings<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>email<\/td><td>The value should be &#8220;email&#8221; to perform the&nbsp;<strong>act<\/strong>ion of updating the email settings of a user.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>editemailsettings<\/td><td>1<\/td><td>This will trigger the edit email settings function<\/td><\/tr><tr><td>email<\/td><td>admin@example.com<\/td><td>(Optional) Pass a valid email to receive the updates, leave blank to leave the email unchanged.<\/td><\/tr><tr><td>ins_email<\/td><td>1<\/td><td>(Optional) Pass this as 1 to enable receiving email for new installations,&nbsp;<strong>off<\/strong>&nbsp;to disable the same.<\/td><\/tr><tr><td>rem_email<\/td><td>1<\/td><td>(Optional) Pass this as 1 to enable receiving email after removing an installation,&nbsp;<strong>off<\/strong>&nbsp;to disable the same.<\/td><\/tr><tr><td>editdetail_email<\/td><td>1<\/td><td>(Optional) Pass this as 1 to enable receiving email after editing an installation,&nbsp;<strong>off<\/strong>&nbsp;to disable the same.<\/td><\/tr><tr><td>backup_email<\/td><td>1<\/td><td>(Optional) Pass this as 1 to enable receiving email after backup of an installation,&nbsp;<strong>off<\/strong>&nbsp;to disable the same.<\/td><\/tr><tr><td>restore_email<\/td><td>1<\/td><td>(Optional) Pass this as 1 to enable receiving email after restore of an installation,&nbsp;<strong>off<\/strong>&nbsp;to disable the same.<\/td><\/tr><tr><td>clone_email<\/td><td>1<\/td><td>(Optional) Pass this as 1 to enable receiving email after cloning an installation,&nbsp;<strong>off<\/strong>&nbsp;to disable the same.<\/td><\/tr><tr><td>disable_all_notify_update<\/td><td>1<\/td><td>(Optional) Pass this as 1 to disable receiving update available notification email,&nbsp;<strong>off<\/strong>&nbsp;to enable the same.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=email;\n\n$post = array('editemailsettings' =&gt; 1,\n\t\t'email' =&gt; 'admin@example.com',\n\t\t'ins_email' =&gt; '1');\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Auto Sign On<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>sign_on<\/td><td>The value should be &#8220;sign_on&#8221; to perform the&nbsp;<strong>act<\/strong>ion to get the sign on URL.<\/td><\/tr><tr><td>insid<\/td><td>26_12345<\/td><td>The installation ID that you want to edit. It can be fetched from&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Installed_Script\">List Installed Script<\/a><\/td><\/tr><tr><td>autoid<\/td><td>abcdefghijklmnopqrstuvwxyz0123456789<\/td><td>This must be any 32 character random string.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ The URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=sign_on'.\n                        '&amp;insid=26_12345'.\n                        '&amp;autoid=abcdefghijklmnopqrstuvwxyz0123456789';\n\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\n\/\/ Get response from the server.\n$resp = curl_exec($ch);<\/pre>\n\n\n\n<p>On using this API, you will get the&nbsp;<strong>sign_on_url<\/strong>, upon accessing which the user will be logged in to the admin panel of the script. You can use the same URL to redirect the user as shown here:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$op = unserialize($resp);\nheader('Location: '.$op['sign_on_url']);<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Domains Functions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">List Domains<\/h4>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>domains<\/td><td>This will list the domains under the account that you are logged in as.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Example<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=domains';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add Domain<\/h4>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>adddomain<\/td><td>This will trigger the add domain function under the account that you are logged in as.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>add_domain<\/td><td>1<\/td><td>This will trigger the add domain function<\/td><\/tr><tr><td>domain<\/td><td>domain.com<\/td><td>Name of the domain to be added<\/td><\/tr><tr><td>server_host<\/td><td>ftp.domain.com<\/td><td>(Optional) This is the server host which will be used as the host to connect via FTP\/FTPS\/SFTP.<\/td><\/tr><tr><td>ftp_user<\/td><td>ftp_user<\/td><td>User to connect to the FTP\/FTPS\/SFTP server<\/td><\/tr><tr><td>ftp_pass<\/td><td>ftp_pass<\/td><td>Password for User to connect to the FTP\/FTPS\/SFTP server<\/td><\/tr><tr><td>ftp_path<\/td><td>\/public_html<\/td><td>Path to the directory relative to home directory of user for installations<\/td><\/tr><tr><td>backup_path<\/td><td>\/backups<\/td><td>Path to the directory relative to home directory of user for storing backups<\/td><\/tr><tr><td>data_dir<\/td><td>\/datadir<\/td><td>Path to the data directory which will be used to create data directories required by some scripts like Moodle. This should not be accessible by webserver.<\/td><\/tr><tr><td>protocol (Optional)<\/td><td>ftp, ftps, sftp (Default: ftp)<\/td><td>The Protocol to use for this domain<\/td><\/tr><tr><td>port<\/td><td>21<\/td><td>Port number to connect to the FTP\/SFTP\/FTPS server. FTP default is 21.<\/td><\/tr><tr><td>public_key (Optional)<\/td><td>Public Key<\/td><td>Path to Public Key. Specify only when&nbsp;<strong>sftp<\/strong>&nbsp;protocol is used<\/td><\/tr><tr><td>private_key (Optional)<\/td><td>Private Key<\/td><td>Path to Private Key. Specify only&nbsp;<strong>sftp<\/strong>&nbsp;protocol is used<\/td><\/tr><tr><td>passphrase (Optional)<\/td><td>Passphrase<\/td><td>Passphrase for Private Key. Specify only&nbsp;<strong>sftp<\/strong>&nbsp;protocol is used<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Example<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=adddomain';\n\n\n$post = array('add_domain' =&gt; 1,\n\t\t'domain' =&gt; 'example.com',\n\t\t'server_host' =&gt; 'ftp.example.com', \/\/ Optional\n\t\t'ftp_user' =&gt; 'ftp_user',\n\t\t'ftp_pass' =&gt; 'ftp_pass',\n\t\t'ftp_path' =&gt; '\/public_html',\n\t\t'backup_path' =&gt; '\/backups',\n\t\t'data_dir' =&gt; '\/datadir',\n\t\t'protocol' =&gt; 'ftp',\n\t\t'port' =&gt; '21');\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Edit a Domain<\/h4>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>editdomain<\/td><td>This will trigger the edit domain function under the account that you are logged in as.<\/td><\/tr><tr><td>did<\/td><td>1<\/td><td>This will will be the domain id of the domain which you want to edit. You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Domains\">List Domains<\/a>function.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>edit_domain<\/td><td>1<\/td><td>This will trigger the edit domain function<\/td><\/tr><tr><td>domain<\/td><td>domain.com<\/td><td>This is the updated domain<\/td><\/tr><tr><td>server_host<\/td><td>ftp.domain.com<\/td><td>(Optional) This is the updated server host which will be used as the host to connect via FTP\/FTPS\/SFTP.<\/td><\/tr><tr><td>ftp_user<\/td><td>ftp_user<\/td><td>This is the updated FTP User<\/td><\/tr><tr><td>ftp_pass<\/td><td>ftp_pass<\/td><td>This is the updated FTP Pass<\/td><\/tr><tr><td>ftp_path<\/td><td>\/public_html<\/td><td>This is the updated FTP Path<\/td><\/tr><tr><td>backup_path<\/td><td>\/backups<\/td><td>This is the updated backup path<\/td><\/tr><tr><td>data_dir<\/td><td>\/datadir<\/td><td>This is the updated data directory<\/td><\/tr><tr><td>protocol (Optional)<\/td><td>ftp, ftps, sftp (Default: ftp)<\/td><td>The Protocol to use for this domain<\/td><\/tr><tr><td>port<\/td><td>21<\/td><td>This is the updated port<\/td><\/tr><tr><td>public_key (Optional)<\/td><td>Public Key<\/td><td>Path to Public Key. Specify only when&nbsp;<strong>sftp<\/strong>&nbsp;protocol is used<\/td><\/tr><tr><td>private_key (Optional)<\/td><td>Private Key<\/td><td>Path to Private Key. Specify only&nbsp;<strong>sftp<\/strong>&nbsp;protocol is used<\/td><\/tr><tr><td>passphrase (Optional)<\/td><td>Passphrase<\/td><td>Passphrase for Private Key. Specify only&nbsp;<strong>sftp<\/strong>&nbsp;protocol is used<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Example<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=editdomain'.\n\t\t\t'&amp;did=1';\n\n\n$post = array('edit_domain' =&gt; 1,\n\t\t'domain' =&gt; 'example.com',\n\t\t'server_host' =&gt; 'ftp.example.com', \/\/ Optional\n\t\t'ftp_user' =&gt; 'ftp_user',\n\t\t'ftp_pass' =&gt; 'ftp_pass',\n\t\t'ftp_path' =&gt; '\/public_html',\n\t\t'backup_path' =&gt; '\/backups',\n\t\t'data_dir' =&gt; '\/datadir',\n\t\t'protocol' =&gt; 'ftp',\n\t\t'port' =&gt; '21');\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Delete a Domain<\/h4>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>domains<\/td><td>This will trigger the domains function under the account that you are logged in as.<\/td><\/tr><tr><td>delid<\/td><td>1<\/td><td>This will will be the domain id of the domain which you want to delete. You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Domains\">List Domains<\/a>&nbsp;function.<\/td><\/tr><tr><td>cleanins<\/td><td>1<\/td><td>(Optional) Passing this as 1 will delete all the installations under this domain. If you do not want to delete the installations for the domain being deleted leave this parameter empty.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">Example<\/h5>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=domains'.\n\t\t\t'&amp;delid=1'.\n\t\t\t'&amp;cleanins=1';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Admin Panel API<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">List Users<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>listuser<\/td><td>This will trigger the list users function.<\/td><\/tr><tr><td>reslen<\/td><td>all<\/td><td>Number of results to be returned. Default is 100. You can pass&nbsp;<strong>all<\/strong>&nbsp;to get the list of all existing users.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=listuser';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Add User<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>adduser<\/td><td>This will trigger the add user function.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>saveuser<\/td><td>1<\/td><td>This will trigger the add user function<\/td><\/tr><tr><td>username<\/td><td>testuser<\/td><td>This is the username of the user you want to add.&nbsp;<strong>Note&nbsp;:<\/strong>&nbsp;Only lowercase characters are allowed in username<\/td><\/tr><tr><td>user_email<\/td><td>admin@example.com<\/td><td>This is the email of the user you want to add<\/td><\/tr><tr><td>num_users<\/td><td>0<\/td><td>(OPTIONAL) Leave this 0 if this is user is an enduser. If Reseller add the number of users they should be allowed to create<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=adduser';\n\n\n$post = array('saveuser' =&gt; 1,\n\t\t'username' =&gt; 'testuser',\n\t\t'user_email' =&gt; 'admin@example.com',\n\t\t'num_users' =&gt; '0');\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Edit User<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>listuser<\/td><td>This will trigger the edit user function.<\/td><\/tr><tr><td>nof<\/td><td>10<\/td><td>This will be the updated number of users to be allotted (Can be used for Reseller users only)<\/td><\/tr><tr><td>email<\/td><td>email@xyz.com<\/td><td>This will be the Email ID to be set for the user<\/td><\/tr><tr><td>updateuser<\/td><td>newuser<\/td><td>This is the new username that you want to set (Can be changed for non-reseller users only)<\/td><\/tr><tr><td>moduser<\/td><td>testuser<\/td><td>This is the username of the user you want to edit<\/td><\/tr><tr><td>modowner<\/td><td>testuser<\/td><td>This is the owner of the reseller. In case of Resellers they are owned by themselves<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;email=email@xyz.com'.\n\t\t\t'&amp;act=listuser'.\n\t\t\t'&amp;nof=10'.\n\t\t\t'&amp;updateuser=newuser'.\n\t\t\t'&amp;moduser=testuser'.\n\t\t\t'&amp;modowner=testuser';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Delete User<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>listuser<\/td><td>This will trigger the delete user function.<\/td><\/tr><tr><td>deluser<\/td><td>testuser<\/td><td>This will be the username of the user to be deleted<\/td><\/tr><tr><td>delowner<\/td><td>root<\/td><td>This is the owner username of the user you want to delete. Default owner is root if the user is not created by a reseller.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=listuser'.\n\t\t\t'&amp;deluser=testuser'.\n\t\t\t'&amp;delowner=root';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">List Installations (Admin Panel)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>installations<\/td><td>This will trigger the list installations function.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>listinstallations<\/td><td>1<\/td><td>This will trigger the listinstallations function<\/td><\/tr><tr><td>users<\/td><td>root;user1;<\/td><td>(Optional) Pass&nbsp;<strong>;<\/strong>&nbsp;separated list of users to filter installations by users<\/td><\/tr><tr><td>scripts<\/td><td>WordPress;Joomla;<\/td><td>(Optional) Pass&nbsp;<strong>;<\/strong>&nbsp;separated list of scripts to filter installations by scripts<\/td><\/tr><tr><td>domains<\/td><td>example.com;example2.com;<\/td><td>(Optional) Pass&nbsp;<strong>;<\/strong>&nbsp;separated list of domains to filter installations by domains<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=installations';\n\n$post = array('listinstallations' =&gt; 1,\n              \/\/'users' =&gt; 'root;user1;', \/\/ Pass this if you want the installation list of specific users\n              \/\/'scripts' =&gt; 'WordPress;Joomla;', \/\/ Pass this if you want the installation list of specific scripts\n              \/\/'domains' =&gt; 'example.com;example2.com;', \/\/ Pass this if you want the installation list of specific domains\n              );\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res)){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">List Outdated Installations (Admin Panel)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>installations<\/td><td>This will trigger the list installations function.<\/td><\/tr><tr><td>show<\/td><td>outdated<\/td><td>This will trigger the outdated installations list function<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>listinstallations<\/td><td>1<\/td><td>This will trigger the listinstallations function<\/td><\/tr><tr><td>users<\/td><td>root;user1;<\/td><td>(Optional) Pass&nbsp;<strong>;<\/strong>&nbsp;separated list of users to filter installations by users<\/td><\/tr><tr><td>scripts<\/td><td>WordPress;Joomla;<\/td><td>(Optional) Pass&nbsp;<strong>;<\/strong>&nbsp;separated list of scripts to filter installations by scripts<\/td><\/tr><tr><td>domains<\/td><td>example.com;example2.com;<\/td><td>(Optional) Pass&nbsp;<strong>;<\/strong>&nbsp;separated list of domains to filter installations by domains<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=installations'.\n\t\t\t'&amp;show=outdated';\n\n$post = array('listinstallations' =&gt; 1,\n              \/\/'users' =&gt; 'root;user1;', \/\/ Pass this if you want the installation list of specific users\n              \/\/'scripts' =&gt; 'WordPress;Joomla;', \/\/ Pass this if you want the installation list of specific scripts\n              \/\/'domains' =&gt; 'example.com;example2.com;', \/\/ Pass this if you want the installation list of specific domains\n              );\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res)){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">List Real Version (Admin Panel)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>installations<\/td><td>This will trigger the list installations function.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>listinstallations<\/td><td>1<\/td><td>This will trigger the listinstallations function<\/td><\/tr><tr><td>only_realversion<\/td><td>1<\/td><td>This will trigger the only_realversion function to list only installations in which the version in Softaculous records do not match with actual installation version<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=installations';\n\n$post = array('listinstallations' =&gt; 1, 'only_realversion' =&gt; 1);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res)){\n\n\tprint_r($res);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Update Real Version (Admin Panel)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>installations<\/td><td>This will trigger the list installations function.<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>listinstallations<\/td><td>1<\/td><td>This will trigger the listinstallations function<\/td><\/tr><tr><td>only_realversion<\/td><td>1<\/td><td>This will trigger the only_realversion function to list only installations in which the version in Softaculous records do not match with actual installation version<\/td><\/tr><tr><td>list<\/td><td>array(&#8216;username-26_68351&#8217;, &#8216;username-26_68352&#8217;)<\/td><td>This will contain the array list for the installations which needs to be updated in Softaculous record(you will need to pass installation id which you will get from Real Version response in&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Real_Version_.28Admin_Panel.29\">List Real Version<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=installations';\n\n$post = array('listinstallations' =&gt; 1, 'only_realversion' =&gt; 1, 'list' =&gt; array('username-26_68351', 'username-26_68352'));\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res)){\n\n\tprint_r($res);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Installation Statistics (Admin Panel)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>ins_statistics<\/td><td>This will trigger the installation statistics function<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=ins_statistics';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Add Plan (ACL)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>addplans<\/td><td>This will trigger the add plan function<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>saveplan<\/td><td>1<\/td><td>This will trigger the add plan function<\/td><\/tr><tr><td>planname<\/td><td>plan1<\/td><td>Plan name for the new plan being created<\/td><\/tr><tr><td>resellers_abc<\/td><td>1<\/td><td>(Optional) Use this only if you want to add a reseller to the plan.&nbsp;<strong>resellers_<\/strong>&nbsp;is the prefix for adding a reseller and&nbsp;<strong>abc<\/strong>&nbsp;is the name of the reseller (that should already exist). Similarly pass a separate key for each reseller you want to add to the plan.<\/td><\/tr><tr><td>users_xyz<\/td><td>1<\/td><td>(Optional) Use this only if you want to add a user to the plan.&nbsp;<strong>users_<\/strong>&nbsp;is the prefix for adding a user and&nbsp;<strong>xyz<\/strong>&nbsp;is the name of the user (that should already exist). Similarly pass a separate key for each user you want to add to the plan.<\/td><\/tr><tr><td>scripts_26<\/td><td>1<\/td><td>Use this to pass the scripts to be added to the plan.&nbsp;<strong>scripts_<\/strong>&nbsp;is the prefix for adding a script and&nbsp;<strong>26<\/strong>&nbsp;is the id of the script to be added. Similarly pass a separate key for each script you want to add to the plan.&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Scripts\">Get Script ids<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=addplans';\n\n$post = array('saveplan' =&gt; '1',\n\t'planname' =&gt; 'plan1',\n\t'resellers_abc' =&gt; '1',\n\t'users_xyz' =&gt; '1',\n\t'scripts_26' =&gt; '1', \/\/ Add WordPress\n\t'scripts_413' =&gt; '1' \/\/ Add Joomla\n); \n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Edit Plan (ACL)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>editplans<\/td><td>This will trigger the edit plan function<\/td><\/tr><tr><td>plan<\/td><td>plan1<\/td><td>This will be the plan name of the plan you want to edit<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>saveplan<\/td><td>1<\/td><td>This will trigger the add plan function<\/td><\/tr><tr><td>planname<\/td><td>plan1<\/td><td>Plan name for the new plan being created<\/td><\/tr><tr><td>resellers_abc<\/td><td>1<\/td><td>(Optional) Use this only if you want to assign a reseller to the plan.&nbsp;<strong>resellers_<\/strong>&nbsp;is the prefix for adding a reseller and&nbsp;<strong>abc<\/strong>&nbsp;is the name of the reseller (that should already exist). Similarly pass a separate key for each reseller you want to assign to the plan.<\/td><\/tr><tr><td>users_xyz<\/td><td>1<\/td><td>(Optional) Use this only if you want to assign a user to the plan.&nbsp;<strong>users_<\/strong>&nbsp;is the prefix for assigning a user and&nbsp;<strong>xyz<\/strong>&nbsp;is the name of the user (that should already exist). Similarly pass a separate key for each user you want to assign to the plan.<\/td><\/tr><tr><td>scripts_413<\/td><td>1<\/td><td>Use this to pass the scripts to be assigned to the plan.&nbsp;<strong>scripts_<\/strong>&nbsp;is the prefix for assigning a script and&nbsp;<strong>26<\/strong>&nbsp;is the id of the script to be assigned. Similarly pass a separate key for each script you want to assign to the plan.&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Scripts\">Get Script ids<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=editplans'.\n\t\t\t'&amp;plan=plan1';\n\n$post = array('saveplan' =&gt; '1',\n\t'planname' =&gt; 'plan1',\n\t'resellers_abc' =&gt; '1',\n\t'users_xyz' =&gt; '1',\n\t'scripts_543' =&gt; '1', \/\/ Add Drupal\n\t'scripts_72' =&gt; '1' \/\/ Add PrestaShop\n); \n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Delete Plan (ACL)<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>plans<\/td><td>This is the default plans page act<\/td><\/tr><tr><td>delete<\/td><td>plan1<\/td><td>This will be the plan name of the plan you want to delete<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=plans'.\n\t\t\t'&amp;delete=plan1';\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Enable \/ Disable Script<\/h3>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Key<\/th><th>Value<\/th><th>Description<\/th><\/tr><tr><td>Authentication<\/td><td>&#8211;<\/td><td>You can use the&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating_2\">Enduser Authenticating<\/a>&nbsp;or&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Authenticating\">Admin Authentication<\/a>&nbsp;methods.<\/td><\/tr><tr><td>act<\/td><td>softwares<\/td><td>This will trigger the enable\/disable script function<\/td><\/tr><tr><th><strong>POST<\/strong><\/th><\/tr><tr><td>updatesoft<\/td><td>Update Settings<\/td><td>This will trigger the submit function for enabling\/disabling the scripts<\/td><\/tr><tr><td>soft_26<\/td><td>1<\/td><td>Use it to Enable Script from Admin Panel.&nbsp;<strong>soft_<\/strong>&nbsp;is the prefix for enabling a script and&nbsp;<strong>26<\/strong>&nbsp;is the id of the script to be enabled. Similarly pass a separate key for each script you want to enable.&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Scripts\">Get Script ids<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"alert alert-info\"><strong>Note:<\/strong>&nbsp;If you have 10 scripts Enabled. You want to Enable 1 more script you will need to pass all 11 scripts id in the POST data for it to Enable the script. The scripts which are not posted will be disabled.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Example<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">\/\/ URL\n$url = 'http:\/\/your.softaculous.com:2006\/index.php?'.\n\t\t\t'api_key=TESTAPIKEY'.\n\t\t\t'&amp;api_pass=PASSPASSPASSPASSPASSPASSPASSPASS'.\n\t\t\t'&amp;api=serialize'.\n\t\t\t'&amp;act=softwares';\n\n$post = array('updatesoft' =&gt; 'Update Settings',\n\t'soft_26' =&gt; 1, \/\/ WordPress\n\t'soft_18' =&gt; 1, \/\/ Joomla 2.5\n\t'soft_543' =&gt; 1, \/\/ Drupal 8\n\t'soft_11' =&gt; 1, \/\/ Open Blog\n\t'soft_3' =&gt; 1, \/\/ Serendipity\n\t'soft_34' =&gt; 1, \/\/ Dotclear\n\t'soft_14' =&gt; 1, \/\/ b2evolution\n\t'soft_470' =&gt; 1 \/\/ Ghost\n);\n\n\/\/ Set the curl parameters.\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL, $url);\ncurl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $time);\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);\n\n\/\/ Turn off the server and peer verification (TrustManager Concept).\ncurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);\ncurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);\n\nif(!empty($post)){\n\tcurl_setopt($ch, CURLOPT_POST, 1);\n\tcurl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));\n}\n \n\/\/ Get response from the server.\n$resp = curl_exec($ch);\n \n\/\/ The response will hold a string as per the API response method. In this case its PHP Serialize\n$res = unserialize($resp);\n \n\/\/ Done ?\nif(!empty($res['done'])){\n\n\tprint_r($res);\n\n\/\/ Error\n}else{\n\n\techo 'Some error occured';\n\tprint_r($res['error']);\n\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">SDK<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>The Softaculous Remote SDK allows to perform all the basic functions performed by Softaculous Remote.<\/li><li>The API simplifies task such as Installing Scripts, Removing Scripts, Creating Domains, Deleting Domains, Adding Users, Removing Users, Editing User Details and such similar functions.<\/li><li>You can find the files in&nbsp;<strong>\/usr\/local\/softaculous\/sdk\/<\/strong>&nbsp;namely&nbsp;<strong>sdk.php<\/strong>&nbsp;and&nbsp;<strong>remote_sdk.php<\/strong><\/li><li>Remote_API extends Softaculous_API (Softaculous SDK)<\/li><li>To Install, Remove, Upgrade installations refer&nbsp;<strong><a href=\"https:\/\/softaculous.com\/docs\/API\">Softaculous API<\/a><\/strong>.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">List of Functions in Short<\/h3>\n\n\n\n<p>Here is the list of functions available for the developers:<\/p>\n\n\n\n<figure class=\"wp-block-table table table-bordered\"><table><tbody><tr><th>Function<\/th><th>Description<\/th><th>For User<\/th><th>Parameters<\/th><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Session_Tokens\">createSession<\/a>($username, $owner, $ip_address)<\/td><td>Create Session Tokens<\/td><td>All<\/td><td>string $username The Username of the user<br>string $owner The owner of the user account<br>string $ip_address IP address where created session will be allowed.<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Switch_User\">switchUser<\/a>($username, $owner)<\/td><td>Switch User<\/td><td>Admin\/Reseller<\/td><td>string $username The Username of the user<br>string $owner The owner of the user account<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Domains\">list_domains<\/a>()<\/td><td>List Domains<\/td><td>All<\/td><td>&#8211;<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Add_a_Domain\">add_domain<\/a>($domain, $ftp_user, $ftp_pass, $ftp_path, $backup_path, $data_dir, $protocol, $port, $public_key, $private_key, $passphrase)<\/td><td>Add a Domain<\/td><td>All<\/td><td>string $domain The Domain name<br>string $ftp_user The User with FTP access<br>string $ftp_pass Password for the above user<br>string $ftp_path Path to the directory relative to home directory of user for installations<br>string $backup_path Path to the directory relative to home directory of user for storing backups<br>string $data_dir Full path to the data directory which will be used to create data directories required by some scripts like Moodle. This should not be accessible by webserver.<br>string $protocol it can be only ftp, ftps or sftp. Default is ftp.<br>int $port Port through which Softaculous will connect to the server.<br>string $public_key Path to Public key.<br>string $private_key Path to Private Key.<br>string $passphrase Passphrase for Private Key.<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Edit_a_Domain\">edit_domain<\/a>($domain, $ftp_user, $ftp_pass, $ftp_path, $backup_path, $data_dir, $protocol, $port, $public_key, $private_key, $passphrase)<\/td><td>Edit a Domain<\/td><td>All<\/td><td>string $domain The Domain name<br>string $ftp_user The User with FTP access<br>string $ftp_pass Password for the above user<br>string $ftp_path Path to the directory relative to home directory of user for installations<br>string $backup_path Path to the directory relative to home directory of user for storing backups<br>string $data_dir Full path to the data directory which will be used to create data directories required by some scripts like Moodle. This should not be accessible by webserver.<br>string $protocol it can be only ftp, ftps or sftp. Default is ftp.<br>int $port Port through which Softaculous will connect to the server.<br>string $public_key Path to Public key.<br>string $private_key Path to Private Key.<br>string $passphrase Passphrase for Private Key.<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Delete_a_Domain\">delete_domain<\/a>($domain)<\/td><td>Delete a Domain<\/td><td>All<\/td><td>string $domain The Domain name<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#List_Users\">list_users<\/a>()<\/td><td>List of Users<\/td><td>Admin\/Reseller<\/td><td>&#8211;<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Add_a_User\">adduser<\/a>($username, $email, $num_users)<\/td><td>Add a User<\/td><td>Admin\/Reseller<\/td><td>string $username User Name to add<br>string $email Email of the user<br>string $num_users (Optional) Number of Users a Reseller can add. Empty in case of Regular users.<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Delete_a_User\">deleteuser<\/a>($user, $owner)<\/td><td>Delete a User<\/td><td>Admin\/Reseller<\/td><td>string $user User Name to delete<br>string $owner (Optional) Owner of the User.<\/td><\/tr><tr><td>function&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/Softaculous_Remote#Edit_a_User\">edituser<\/a>($username, $num_user)<\/td><td>Edit User<\/td><td>Admin\/Reseller<\/td><td>string $username User Name to Edit<br>int $num_user Number of Users to edit, empty in case of Regular users.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Enduser<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Initializing<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);<\/pre>\n\n\n\n<p>This will load the Class in $rsdk with the paramaters:&nbsp;<strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$url<\/strong>&nbsp;is the login URL to access the Softaculous Remote Enduser Panel.<\/li><li><strong>$api_key<\/strong>&nbsp;is the Remote API KEY provided by Softaculous Installer or your Host to login to the Remote Enduser Panel.<\/li><li><strong>$api_pass<\/strong>&nbsp;&#8211; is the Remote API PASSWORD provided by Softaculous Installer or your Host with API KEY to login to the Remote Enduser Panel.<\/li><\/ul>\n\n\n\n<p>These parameters are required for authentication, as without authentication you will not be able to access Softaculous Remote.&nbsp;<br><\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.132', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd');<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Session Tokens<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">function createSession($username, $owner = '', $ip_address = '')<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Create a SESSION of a USER to enable the user to USE the Softaculous GUI Interface.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$username<\/strong>&nbsp;The username for the user you want to create a session.<\/li><li><strong>$owner<\/strong>&nbsp;The owner who owns the account of user. By default it is root.<\/li><li><strong>$ip_address<\/strong>&nbsp;IP address where created session will be allowed.<\/li><\/ul>\n\n\n\n<p><strong>Return Values<\/strong>&nbsp;:<\/p>\n\n\n\n<p><strong>$resp<\/strong>&nbsp;Will contain a KEY &#8216;rsid&#8217; with the session ID which can be used to redirect the user to&nbsp;<code>$url.'?rsid='.$resp['rsid'];<\/code><\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.132', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd');\n\n$res = $rsdk-&gt;createSession('root', 'root', '192.168.17.131');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tif(!empty($res['error'])){\n\t\t$rsdk-&gt;r_print($res['error']);\n\t}\n\n\/\/ No error\n}else{\n\t$rsdk-&gt;r_print($res);\n}<\/pre>\n\n\n\n<p>Output will be:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[rsid] =&gt; itcqztcgbu8ngnqadiwsg3m98o0zrlcf     <br>[redirect_url] =&gt; http:\/\/192.168.17.131rsid=itcqztcgbu8ngnqadiwsg3m98o0zrlcf <br>) <\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">List Domains<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">function list_domains()<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function has no parameters, it will get you the list of domains.<br><\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.132', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd');\n$result = $rsdk-&gt;list_domains();\nprint_r($result);<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Will give you the output&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br> [title] =&gt; List Domains     <br> [domain_list] =&gt; Array         <br>  (             <br>   [domain.com] =&gt; Array               <br>      (                  <br>            [did] =&gt; 4                     <br>            [owner] =&gt; root                    <br>            [username] =&gt; root                     <br>            [domain] =&gt; domain.com                     <br>            [ftp_user] =&gt; user                     <br>            [ftp_pass] =&gt; password                     <br>            [ftp_path] =&gt; \/public_html                     <br>            [path] =&gt; \/home\/user\/public_html<br>            [backup_dir] =&gt; \/backups                 <br>      )         <br>  )     <br>  [timenow] =&gt; 1361009593     <br>  [time_taken] =&gt; 0.016 <br>. <br>. <br>. <br><br><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>In the above output,&nbsp;<strong>domains_list<\/strong>&nbsp;provides the list of domains. You can iterate through&nbsp;<strong>domains_list<\/strong>&nbsp;to perform actions.<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Add a Domain<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function add_domain($domain, $ftp_user, $ftp_pass = '', $ftp_path, $backup_path, $data_dir, $protocol = 'ftp', $port = '21', \n$public_key = '', $private_key = '', $passphrase = '')<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function will allow you to ADD a domain.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$domain<\/strong>&nbsp;is the domain to be added<\/li><li><strong>$ftp_user<\/strong>&nbsp;is the User with the access to FTP\/FTPS\/SFTP.<\/li><li><strong>$ftp_pass<\/strong>&nbsp;is the Password for the above user to access FTP\/FTPS\/SFTP.(Can be optional if protocol used is &#8216;sftp&#8217; and authentication is by keys)<\/li><li><strong>$ftp_path<\/strong>&nbsp;is the folder\/path where your installations will be made.<\/li><\/ul>\n\n\n\n<p class=\"php hljs\"><strong>Note&nbsp;<\/strong>: The path is absolute to FTP Users HOME directory.&nbsp;<br>E.g $ftp_path set to &#8216;\/public_html&#8217; will be referred to as &#8216;\/home\/USER\/public_html&#8217; when protocol is &#8216;ftp&#8217; and &#8216;ftps&#8217;;<br>AND Full Path &#8216;\/home\/USER\/public_html&#8217; when protocol is set to &#8216;sftp&#8217; .<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$backup_path<\/strong>&nbsp;is the folder\/path where all the backups will be stored(If made any).<\/li><\/ul>\n\n\n\n<p class=\"alert alert-info\"><strong>Note&nbsp;<\/strong>: The path is absolute to FTP Users HOME directory.&nbsp;<br>E.g $backup_path to &#8216;\/backups&#8217; will be referred to as &#8216;\/home\/USER\/backups&#8217; when protocol is &#8216;ftp&#8217; and &#8216;ftps&#8217;;<br>AND Full Path &#8216;\/home\/USER\/backups&#8217; when protocol is set to &#8216;sftp&#8217;.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$data_dir<\/strong>&nbsp;is the full path to the data directory which will be used to create data directories required by some scripts like Moodle. This should not be accessible by webserver.&nbsp;<br><\/li><\/ul>\n\n\n\n<p>E.g $data_dir can be &#8216;\/home\/USERNAME\/datadir&#8217;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$protocol<\/strong>&nbsp;is a string, it can be only &#8216;sftp&#8217;, &#8216;ftps&#8217; or &#8216;sftp&#8217;. Default value is &#8216;ftp&#8217;<\/li><li><strong>$port<\/strong>&nbsp;is the port number through which Softaculous will be connecting to the server. Default is 21<\/li><li><strong>$public_key<\/strong>&nbsp;is the Absolute path to public key.(Specify only when protocol is &#8216;sftp&#8217; and when you want to authenticate the user using keys)<\/li><li><strong>$private_key<\/strong>&nbsp;is the Absolute path to private key. (Only for &#8216;sftp&#8217; and must be specified with public key)<\/li><li><strong>$passphrase<\/strong>&nbsp;is the pass phrase of the private key.(Optional and Only for &#8216;sftp&#8217;)<\/li><\/ul>\n\n\n\n<p><br><strong>Return Values<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Result will be in array.<\/li><li>The result is stored in&nbsp;<strong>$result<\/strong>&nbsp;and if the domain was added successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>1<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>empty<\/strong>.<\/li><\/ul><\/li><li>If the domain was not added successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>0<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be an array with&nbsp;<strong>error message<\/strong>.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example for FTP<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Add Domain\n$res = $rsdk-&gt;add_domain('domain.com', 'user', 'password', '\/public_html', '\/backups', '\/home\/USERNAME\/datadir');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Example for FTPS<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Add Domain\n$res = $rsdk-&gt;add_domain('domain.com', 'user', 'password', '\/public_html', '\/backups', '\/home\/USERNAME\/datadir', 'ftps', 21);\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Example for SFTP using Password<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Add Domain\n$res = $rsdk-&gt;add_domain('domain.com', 'user', 'password', '\/home\/USER\/public_html', '\/home\/USER\/backups', '\/home\/USERNAME\/datadir', 22);\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Example for SFTP using Keys<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Add Domain\n$res = $rsdk-&gt;add_domain('domain.com', 'user', NULL, '\/home\/USER\/public_html', '\/home\/USER\/backups', '\/home\/USERNAME\/datadir', 22,\n '\/path\/to\/file.pub', '\/path\/to\/file', 'passphrase');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>The output of code above in case of success will be&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[title] =&gt; Add a Domain     <br>[done] =&gt; 1     <br>[timenow] =&gt; 1361009724     <br>[time_taken] =&gt; 6.730 <br>)<br><br>In case of failure the variable&nbsp;<strong>$res['error']<\/strong>&nbsp;will contain&nbsp;:<br><br>Array (    <br> [already_exists] =&gt; The submitted domain already exists in your account. <br>) <\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Edit a Domain<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function edit_domain($domain, $ftp_user, $ftp_pass = '', $ftp_path, $backup_path, $data_dir, $protocol = 'ftp', $port = '21', \n$public_key = '', $private_key = '', $passphrase = '')<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function will allow you to EDIT a domain.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$domain<\/strong>&nbsp;is the domain to be added<\/li><li><strong>$ftp_user<\/strong>&nbsp;is the User with the access to FTP\/FTPS\/SFTP.<\/li><li><strong>$ftp_pass<\/strong>&nbsp;is the Password for the above user to access FTP\/FTPS\/SFTP.(Can be optional if protocol used is &#8216;sftp&#8217; and authentication is by keys)<\/li><li><strong>$ftp_path<\/strong>&nbsp;is the folder\/path where your installations will be made.<\/li><\/ul>\n\n\n\n<p class=\"alert alert-info\"><strong>Note&nbsp;<\/strong>: The path is absolute to FTP Users HOME directory.&nbsp;<br>E.g $ftp_path set to &#8216;\/public_html&#8217; will be referred to as &#8216;\/home\/USER\/public_html&#8217; when protocol is &#8216;ftp&#8217; and &#8216;ftps&#8217;;<br>AND Full Path &#8216;\/home\/USER\/public_html&#8217; when protocol is set to &#8216;sftp&#8217; .<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$backup_path<\/strong>&nbsp;is the folder\/path where all the backups will be stored(If made any).<\/li><\/ul>\n\n\n\n<p class=\"alert alert-info\"><strong>Note&nbsp;<\/strong>: The path is absolute to FTP Users HOME directory.&nbsp;<br>E.g $backup_path to &#8216;\/backups&#8217; will be referred to as &#8216;\/home\/USER\/backups&#8217; when protocol is &#8216;ftp&#8217; and &#8216;ftps&#8217;;<br>AND Full Path &#8216;\/home\/USER\/backups&#8217; when protocol is set to &#8216;sftp&#8217;.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$data_dir<\/strong>&nbsp;is the full path to the data directory which will be used to create data directories required by some scripts like Moodle. This should not be accessible by webserver.&nbsp;<br><\/li><\/ul>\n\n\n\n<p>E.g $data_dir can be &#8216;\/home\/USERNAME\/datadir&#8217;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$protocol<\/strong>&nbsp;is a string, it can be only &#8216;sftp&#8217;, &#8216;ftps&#8217; or &#8216;sftp&#8217;. Default value is &#8216;ftp&#8217;<\/li><li><strong>$port<\/strong>&nbsp;is the port number through which Softaculous will be connecting to the server. Default is 21<\/li><li><strong>$public_key<\/strong>&nbsp;is the Absolute path to public key.(Specify only when protocol is &#8216;sftp&#8217; and when you want to authenticate the user using keys)<\/li><li><strong>$private_key<\/strong>&nbsp;is the Absolute path to private key. (Only for &#8216;sftp&#8217; and must be specified with public key)<\/li><li><strong>$passphrase<\/strong>&nbsp;is the pass phrase of the private key.(Optional and Only for &#8216;sftp&#8217;)<\/li><\/ul>\n\n\n\n<p><strong>Return Values<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Result will be in array.<\/li><li>The result is stored in&nbsp;<strong>$result<\/strong>&nbsp;and if the domain was added successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>1<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>empty<\/strong>.<\/li><\/ul><\/li><li>If the domain was not added successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>0<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be an array with&nbsp;<strong>error message<\/strong>.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example for FTP<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Edit Domain\n$res = $rsdk-&gt;edit_domain('domain.com', 'user', 'password', '\/public_html', '\/backups', '\/home\/USERNAME\/datadir');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Example for FTPS<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Edit Domain\n$res = $rsdk-&gt;edit_domain('domain.com', 'user', 'password', '\/public_html', '\/backups', '\/home\/USERNAME\/datadir', 'ftps', 21);\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Example for SFTP using Password<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Edit Domain\n$res = $rsdk-&gt;edit_domain('domain.com', 'user', 'password', '\/home\/USER\/public_html', '\/home\/USER\/backups', '\/home\/USERNAME\/datadir', 22);\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Example for SFTP using Keys<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n\/\/ Edit Domain\n$res = $rsdk-&gt;edit_domain('domain.com', 'user', NULL, '\/home\/USER\/public_html', '\/home\/USER\/backups', '\/home\/USERNAME\/datadir', 22,\n '\/path\/to\/file.pub', '\/path\/to\/file', 'passphrase');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n        \/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>The output of code above in case of success will be&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[title] =&gt; Edit a Domain     <br>[done] =&gt; 1     <br>[thisdomain] =&gt; =&gt; Array         <br>  (             <br>      [did] =&gt; 18                     .                     .     <br>      [timenow] =&gt; 1361009724     <br>      [time_taken] =&gt; 6.730 <br>  ) <br><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Delete a Domain<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function delete_domain($domain)<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function will allow you to Delete a domain.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$domain<\/strong>&nbsp;is the domain to be DELETED<\/li><\/ul>\n\n\n\n<p><strong>Return Values<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Result will be in array.<\/li><li>The output is stored is stored in&nbsp;<strong>$result<\/strong>&nbsp;and if the domain was deleted successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>1<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>empty<\/strong>.<\/li><\/ul><\/li><li>If the domain was not deleted successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>0<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be an array with&nbsp;<strong>error message<\/strong>.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.132', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd');\n\n$res = $rsdk-&gt;delete_domain('domain.com');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n\t\/\/ $res['done'] will be TRUE\n\tprint_r($res);\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>The output of code above in case of success will be&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[title] =&gt; List Domains     <br>[done] =&gt; 1     <br>[domain_list] =&gt; Array         <br>   (             <br>     [domain1.com] =&gt; Array                 <br>           (                     <br>               [did] =&gt; 5                     <br>               [owner] =&gt; root                     <br>               [username] =&gt; root                     <br>               [domain] =&gt; domain1.com                     <br>               [ftp_user] =&gt; user1                     <br>               [ftp_pass] =&gt; password1                     <br>               [ftp_path] =&gt; \/public_html                     <br>               [path] =&gt; \/home\/user1\/public_html<br>               [backup_dir] =&gt; \/backups                 <br>          )         <br>   )     <br>[timenow] =&gt; 1361009970     <br>[time_taken] =&gt; 0.038 <br>) <\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Admin Functions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Initializing Admin panel<\/h4>\n\n\n\n<p class=\"alert alert-info\"><strong>Note&nbsp;<\/strong>: The below functions are for the Softaculous Admin panel and hence you will have to initialize the admin panel. The port for Softaculous Admin panel is&nbsp;<strong>2006<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);<\/pre>\n\n\n\n<p>This will load the Class in $rsdk with the paramaters:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$url<\/strong>&nbsp;is the login URL to access the Softaculous Remote Admin Panel.<\/li><li><strong>$api_key<\/strong>&nbsp;is the Remote API KEY provided by Softaculous Installer or your Host to login to the Remote Admin Panel.<\/li><li><strong>$api_pass<\/strong>&nbsp;&#8211; is the Remote API PASSWORD provided by Softaculous Installer or your Host with API KEY to login to the Remote Admin Panel.<\/li><\/ul>\n\n\n\n<p>These parameters are required for authentication, as without authentication you will not be able to access Softaculous Remote.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.132:2006', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd');<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Switch User<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function switchUser($username = '', $owner = '')<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function is only for API. This function helps you to switch between the users.<\/li><li>Suppose you are a Admin and if you want to install a script for a user. You can login from your own details and use this function in between to switch to your user.<\/li><li>Only Admins and Resellers can use this function.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<p><strong>$username<\/strong>&nbsp;The username for the user Admin\/Reseller want to switch to.&nbsp;<br><strong>$owner<\/strong>&nbsp;The owner who owns the account of user. By default it is root.<\/p>\n\n\n\n<p><strong>Return Values<\/strong>&nbsp;: NULL<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<p>In the following example&nbsp;<strong>root<\/strong>&nbsp;is logged in first with its API_KEY and API_PASS, then he switches to user&nbsp;<strong>abc<\/strong>. After switching, wordpress is installed as the user&nbsp;<strong>abc<\/strong>. Install function is explained in&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#Install_API\">Softaculous SDK<\/a>.<br>Similarly Admin\/Reseller can perform tasks on behalf of their users.<\/p>\n\n\n\n<p class=\"alert alert-info\"><strong>Note&nbsp;:&nbsp;<\/strong>Once you have switched to the user level then you cannot switch back to Admin\/Reseller. You will have to login again.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.132', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd'); \/\/ Admin Details\n\n$res = $rsdk-&gt;switchUser('abc');\n\n$data['softdomain'] = 'domain.com'; \/\/ OPTIONAL - By Default the primary domain will be used\n$data['softdirectory'] = 'wp222'; \/\/ OPTIONAL - By default it will be installed in the \/public_html folder\n$data['admin_pass'] = 'pass';\n$data['admin_email'] = 'admin@domain.com';\n$data['softdb'] = 'wp222';\n$data['dbusername'] = 'wp222';\n$data['dbuserpass'] = 'wp222';\n$data['site_name'] = 'Wordpess wp222';\n$data['admin_username'] = 'admin';\n$data['language'] = 'en';\n$data['site_desc'] = 'WordPress API Test';\n\n$res = $rsdk-&gt;install(26, $data); \/\/ 26 is the SCRIPT ID for WordPress\n$res = unserialize($res);\nif(!empty($res['done'])){\n\techo 'Installed';\n}else{\n\techo 'Installation Failed&lt;br\/&gt;';\n\tif(!empty($res['error'])){\n\t\tprint_r($res['error']);\n\t}\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">List Users<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">function list_users()<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function has no parameters, it will get you the list of users.<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.132:2006', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd');\n$result = $rsdk-&gt;listusers();\nprint_r($result);<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Will give you the output&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[title] =&gt; Softaculous - List User     <br>[error] =&gt; [listusers] =&gt; Array         <br>              (             <br>                [owner_user] =&gt; Array                 <br>                 (                     <br>                   [uid] =&gt; 3                     <br>                   [owner] =&gt; owner                     <br>                   [username] =&gt; user                     <br>                   [email] =&gt;                      <br>                   [num_users] =&gt; 0<br>                   [disable_all_notify_update] =&gt; 0                 <br>                 )             <br>                [owner1_user1] =&gt; Array                 <br>                 (                     <br>                   [uid] =&gt; 4                     <br>                   [owner] =&gt; owner1                     <br>                   [username] =&gt; user1                     <br>                   [email] =&gt;                      <br>                   [num_users] =&gt; 0<br>                   [disable_all_notify_update] =&gt; 0                 <br>                 )             <br>                 [owner1_owner2] =&gt; Array                 <br>                 (                     <br>                   [uid] =&gt; 4                     <br>                   [owner] =&gt; owner2                     <br>                   [username] =&gt; owner2<br>                   [email] =&gt;                      <br>                   [num_users] =&gt; 2<br>                   [disable_all_notify_update] =&gt; 0                 <br>                 )    <br>                [root_root] =&gt; Array                 <br>                 (                     <br>                   [uid] =&gt; 4                     <br>                   [owner] =&gt; root<br>                   [username] =&gt; root<br>                   [email] =&gt;                      <br>                   [num_users] =&gt; 0<br>                   [disable_all_notify_update] =&gt; 0                 <br>                 )     <br>                [root_user2] =&gt; Array                 <br>                 (                     <br>                   [uid] =&gt; 4                     <br>                   [owner] =&gt; root<br>                   [username] =&gt; user2<br>                   [email] =&gt;                      <br>                   [num_users] =&gt; 0<br>                   [disable_all_notify_update] =&gt; 0                 <br>                 )            <br> .<br> .<br> . <\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>In the above output,&nbsp;<strong>listusers<\/strong>&nbsp;provides the list of domains. You can iterate through&nbsp;<strong>listusers<\/strong>&nbsp;to perform actions.<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Add a User<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">function adduser($username, $email, $num_users)<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function will allow you to ADD a User. To add a Reseller, $num_users should be more than 1.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$username<\/strong>&nbsp;is the user name to be added<\/li><li><strong>$email<\/strong>&nbsp;is the email of the user.<\/li><li><strong>$num_users<\/strong>&nbsp;(Optional) is the number of users a reseller can add it should be more than one. Empty in case of Regular User.<\/li><\/ul>\n\n\n\n<p><strong>Return Values<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Result will be in array.<\/li><li>The output is stored in&nbsp;<strong>$result<\/strong>&nbsp;if the user was added successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>1<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>empty<\/strong>.<\/li><\/ul><\/li><li>If the user was not added successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>0<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be an array with&nbsp;<strong>error message<\/strong>.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n$res = $rsdk-&gt;adduser('username', 'your_email@domain.com', 15);\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n        print_r($res['error']);\n\n\/\/ No error\n}else{\n\tprint_r($res);\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>The output of code above in case of success will be&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[title] =&gt; Softaculous - Add User     <br>[done] =&gt; 1     <br>[error] =&gt;      <br>[timenow] =&gt; 1361016929     <br>[time_taken] =&gt; 0.116 <br>) <\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>The error message will be available in&nbsp;<strong>$res[&#8216;error&#8217;]<\/strong>&nbsp;in case of failure&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>    [0] =&gt; The username is already in use <br>) <\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Edit a User<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">function edituser($username, $num_users)<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function will allow you to edit Number of Users allowed to a Reseller.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$username<\/strong>&nbsp;is the user name to be edited<\/li><li><strong>$num_users<\/strong>&nbsp;(Optional) is the number of users reseller is to be allowed. It should be more than one. Empty in case of Regular user.<\/li><\/ul>\n\n\n\n<p><br><strong>Return Values<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Result will be in array.<\/li><li>The result is stored in&nbsp;<strong>$result<\/strong>&nbsp;if the user was edited successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>1<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>empty<\/strong>.<\/li><\/ul><\/li><li>If the user was not edited successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>0<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be an array with&nbsp;<strong>error message<\/strong>.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n$res = $rsdk-&gt;edituser('username');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\t$rsdk-&gt;r_print($res['error']);\n\n\/\/ No error\n}else{\n\t$rsdk-&gt;r_print($res);\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>The output of code above in case of success will be&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[title] =&gt; Softaculous - List User     <br>[done] =&gt; 1     <br>[error] =&gt; <br> .<br> .<br> . <\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Delete a User<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">function deleteuser($username, $owner)<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>This function will allow you to delete a User.<\/li><\/ul>\n\n\n\n<p><strong>Parameters<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>$username<\/strong>&nbsp;is the user name to be deleted<\/li><li><strong>$owner<\/strong>&nbsp;is the owner of user.(Optional)<\/li><\/ul>\n\n\n\n<p><br><strong>Return Values<\/strong>&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Result will be an array.<\/li><li>The result is stored in&nbsp;<strong>$result<\/strong>&nbsp;and if the user was deleted successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>1<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>empty<\/strong>.<\/li><\/ul><\/li><li>If the user was not deleted successfully,<ul><li><strong>$result[&#8216;done&#8217;]<\/strong>&nbsp;should be&nbsp;<strong>0<\/strong>.<\/li><li><strong>$result[&#8216;error&#8217;]<\/strong>&nbsp;should be an array with&nbsp;<strong>error message<\/strong>.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API($url, $api_key, $api_pass);\n\n$res = $rsdk-&gt;deleteuser('username');\n\n\/\/ Error\nif(!empty($res['error'])){\n\t\n\tprint_r($res['error']);\n\n\/\/ No error\n}else{\n\tprint_r($res);\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>The output of code above in case of success will be&nbsp;:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">Array (     <br>[title] =&gt; Softaculous - List User     <br>[done] =&gt; 1     <br>[error] =&gt;  <br>. <br>. <br>. <\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">General Functions<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">List Installed Script<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>This is to list all the scripts which are allowed to enduser to install. (Do not confuse with&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#List_Installations\">List Installations<\/a>)<\/li><li>You can refer Softaculous&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#List_Installed_Script\">List installed Script<\/a>&nbsp;doc for the detailed explaination.<\/li><li>Below is the example of how to use Install Function of Softaculous in Remote.<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API('http:\/\/192.168.17.131', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd'); \/\/ user details\n\n$rsdk-&gt;list_installed_scripts();\nprint_r($rsdk-&gt;iscripts);<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Install a Script<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Installing a Script from Softaculous Remote.<\/li><li>You can refer Softaculous&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#Install_API\">Install API<\/a>&nbsp;doc for the detailed explaination.<\/li><li>Below is the example of how to use Install Function of Softaculous in Remote.<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">include_once('remote_sdk.php');\n\n$rsdk = new Remote_API('http:\/\/192.168.17.131', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd'); \/\/ user details\n\n$data['softdomain'] = 'domain.com'; \/\/ OPTIONAL - By Default the primary domain will be used\n$data['softdirectory'] = 'wp222'; \/\/ OPTIONAL - By default it will be installed in the \/public_html folder\n$data['admin_pass'] = 'pass';\n$data['admin_email'] = 'admin@domain.com';\n$data['softdb'] = 'wp222';\n$data['dbusername'] = 'wp222';\n$data['dbuserpass'] = 'wp222';\n$data['site_name'] = 'Wordpess wp222';\n$data['admin_username'] = 'admin';\n$data['language'] = 'en';\n$data['site_desc'] = 'WordPress API Test';\n\n$res = $rsdk-&gt;install(26, $data); \/\/ 26 is the SCRIPT ID for WordPress (Refer List Installed Script Function to get the list)\n$res = unserialize($res);\nif(!empty($res['done'])){\n\techo 'Installed';\n}else{\n\techo 'Installation Failed&lt;br\/&gt;';\n\tif(!empty($res['error'])){\n\t\tprint_r($res['error']);\n\t}\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Remove a Script<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Removing a Script from Softaculous Remote.<\/li><li>You can refer Softaculous&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#Remove_API\">Remove API<\/a>&nbsp;doc for the detailed explaination.<\/li><li>Below is the example of how to use Remove API Function of Softaculous in Remote.<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API('http:\/\/192.168.17.131', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd'); \/\/ user details\n\n$res = $rsdk-&gt;remove('26_37054', $data); (26_37054 is the installation id which can be fetched from List Installations function)\n\n$res = unserialize($res);\nif(!empty($res['done'])){\n\techo 'Removed';\n}else{\n\techo 'Removing Unsuccessful&lt;br\/&gt;';\n\tprint_r($res['error']);\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Upgrade a Script<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Upgrading a Script from Softaculous Remote.<\/li><li>You can refer Softaculous&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#Upgrade_API\">Upgrade API<\/a>&nbsp;doc for the detailed explaination.<\/li><li>Below is the example of how to use Upgrade API Function of Softaculous in Remote.<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API('http:\/\/192.168.17.131', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd'); \/\/ user details\n\n$data['softbranch'] = '382'; \/\/ Script ID of the script you want to upgrade. (Refer List Installed Script Function to get the list)\n\n$res = $rsdk-&gt;upgrade('92_69417', $data);\n$_res = unserialize($res);\n\t\nif(!empty($_res['done'])){\n\techo 'Upgraded';\n}else{\n        echo 'Upgrade Failed&lt;br\/&gt;';\n        print_r($res['error']);\n}\n\nif(!empty($_res['setupcontinue'])){\n        echo $_res['setupcontinue'].' Please visit the following link to complete the upgrade process.';\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Backup a Script<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Taking a Backup of the Script from Softaculous Remote.<\/li><li>You can refer Softaculous&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#Backup_API\">Backup API<\/a>&nbsp;doc for the detailed explaination.<\/li><li>Below is the example of how to use Backup API Function of Softaculous in Remote.<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API('http:\/\/192.168.17.131', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd'); \/\/ user details\n\n$data['backup_dir'] = 1;\n\n$data['backup_db'] = 1;\n\n$data['backup_datadir'] = 0;\n\n$data['backup_wwwdir'] = 0;\n\n$res = $rsdk-&gt;backup('26_37054', $data);\n\n$res = unserialize($res);\nif(!empty($res['done'])){\n\techo 'Backing up the installation.';\n}else{\n\techo 'Backup Failed&lt;br\/&gt;';\n\tprint_r($res['error']);\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Restore a Script<\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Restoring a Script from the Backup created using Softaculous Remote.<\/li><li>You can refer Softaculous&nbsp;<a href=\"https:\/\/softaculous.com\/docs\/API#Restore_API\">Restore API<\/a>&nbsp;doc for the detailed explaination.<\/li><li>Below is the example of how to use Restore API Function of Softaculous in Remote.<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Example<\/h6>\n\n\n\n<pre class=\"wp-block-preformatted php hljs\">$rsdk = new Remote_API('http:\/\/192.168.17.131', 'pirrehjhzrkgwztr', 'odxzhipr4nhntkrcx1zjvf4cxysgaffd'); \/\/ user details\n\n$data['restore_dir'] = 1;\n$data['restore_db'] = 1;\n$data['restore_datadir'] = 0;\n$data['restore_wwwdir'] = 0;\n\n\/\/ wp.26_60832.2012-07-26_10-13-33.zip is the Backup Name. Refer Backup List Function\n$res = $rsdk-&gt;restore('wp.26_60832.2012-07-26_10-13-33.zip', $data); \n\n$res = unserialize($res);\nif(!empty($res['done'])){\n\techo 'Restored';\n}else{\n\techo 'Restoration Failed&lt;br\/&gt;';\n\tprint_r($res['error']);\n}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Support<\/h2>\n\n\n\n<p>You can always ask us if you have any queries. The support department can be accessed from here&nbsp;:&nbsp;<a href=\"https:\/\/www.softaculous.net\/support\/\">https:\/\/www.softaculous.net\/support\/<\/a><\/p>\n","protected":false},"featured_media":0,"parent":1689,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","docs_category":[],"class_list":["post-2108","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/2108","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/comments?post=2108"}],"version-history":[{"count":22,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/2108\/revisions"}],"predecessor-version":[{"id":5214,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/2108\/revisions\/5214"}],"up":[{"embeddable":true,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs\/1689"}],"wp:attachment":[{"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/media?parent=2108"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/www.softaculous.com\/blog\/wp-json\/wp\/v2\/docs_category?post=2108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}