如何为ISPConfig创建远程API脚本3
介绍
本指南将介绍如何创建API脚本以在ISPConfig 3中创建ftp用户的说明。它将为您提供开发ISPConfig 3中可用功能的脚本的知识。
完成品
所以我们来看看我们将要分析的脚本。
打破线路
在创建API脚本时,您首先启动该功能。 该功能是将ftp用户添加到数据库的代码部分。
$domain_id = $client->sites_ftp_user_add($session_id, $client_id, $params_ftp);
从代码上可以看到,site_ftp_user_add是添加ftp用户的功能。 所有的功能都有这样的名字,所以你永远不会想知道它的作用。 为了找出可用的所有功能,您需要查看/usr/local/ispconfig/interface/lib/classes/remoting.inc.php
。
它将如下所示:
?//* Add a record public function sites_ftp_user_add($session_id, $client_id, $params) { if(!$this->checkPerm($session_id, 'sites_ftp_user_add')) { $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); return false; } return $this->insertQuery('../sites/form/ftp_user.tform.php',$client_id,$params); }
好的,所以我们从线上知道说,
public function sites_ftp_user_add($session_id…
有一个名为sites_ftp_user_add
的函数。
我们来看看函数将驻留在我们的新脚本中的整个行。
$domain_id = $client->sites_ftp_user_add($session_id, $client_id, $params_ftp);
让我们断开这一行,所以你知道你需要改变什么来调整这个任何功能。
$domain_id = $client->sites_ftp_user_add($session_id, $client_id, $params_ftp);
$ domain_id
是一个变量,您不需要更改,因为在执行该函数时不使用该变量。
$domain_id = $client->sites_ftp_user_add($session_id, $client_id, $params_ftp);
$ client->
是一个你不应该改变的变量,所以不要弄乱它。
$domain_id = $client->sites_ftp_user_add($session_id, $client_id, $params_ftp);
如上所述,这是函数,将根据您希望脚本执行的任务而改变。
$domain_id = $client->sites_ftp_user_add($session_id, $client_id, $params_ftp);
此部分可以根据功能而改变。 从/usr/local/ispconfig/interface/lib/classes/remoting.inc.php,
您将看到该行
public function sites_ftp_user_add($session_id, $client_id, $params)
这是你将在那里得到什么需要去的功能。
在函数行之上,您将看到函数数组的创建。 这是给出用于创建ftp用户的信息的地方。
$params = array( 'server_id' => '1', 'parent_domain_id' => $domain_id, 'username' => $myusername, 'password' => $mypassword, 'quota_size' => '-1', 'active' => 'y', 'uid' => 'web'.$domain_id, 'gid' => 'client'.$client_id, 'dir' => '/var/www/clients/client'.$client_id.'/web'.$domain_id, 'quota_files' => '100', 'ul_ratio' => '-1', 'dl_ratio' => '200', 'ul_bandwidth' => '-1', 'dl_bandwidth' => '100',);
这将永远开始
$variable = array (
但是我们不知道我们需要输入什么信息,而不用查看每个功能。
回到/usr/local/ispconfig/interface/lib/classes/remoting.inc.php,
您将查找正在使用的功能:
?//* Add a record public function sites_ftp_user_add($session_id, $client_id, $params) { if(!$this->checkPerm($session_id, 'sites_ftp_user_add')) { $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); return false; } return $this->insertQuery('../sites/form/ftp_user.tform.php',$client_id,$params); }
这是告诉你什么文件需要数组信息。 现在我们使用find命令:
sudo find / -name ftp_user.tform.php
并打开文件。 应该看起来像:
'password' => array ( 'datatype' => 'VARCHAR', 'formtype' => 'PASSWORD', 'encryption' => 'CRYPT', 'default' => '', 'value' => '', 'width' => '30', 'maxlength' => '255' ), 'quota_size' => array ( 'datatype' => 'INTEGER', 'formtype' => 'TEXT', 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'quota_size_error_empty'), 1 => array ( 'type' => 'REGEX', 'regex' => '/^(\-1|[0-9]{1,10})$/', 'errmsg'=> 'quota_size_error_regex'),
正如你所看到的,我将展示两个将被转化为的例子
'password' => 'yourpassword'
和
'quota_size' => 'quota size'
使用我们迄今为止所学到的一切,我们可以创建:
$params = array( 'server_id' => '1', 'parent_domain_id' => $domain_id, 'username' => $myusername, 'password' => $mypassword, 'quota_size' => '-1', 'active' => 'y', 'uid' => 'web'.$domain_id, 'gid' => 'client'.$client_id, 'dir' => '/var/www/clients/client'.$client_id.'/web'.$domain_id, 'quota_files' => '100', 'ul_ratio' => '-1', 'dl_ratio' => '200', 'ul_bandwidth' => '-1', 'dl_bandwidth' => '100',); $domain_id = $client->sites_ftp_user_add($session_id, $client_id, $params);
不要太远了。 我们现在需要做的是让我们的远程用户登录并注销。 确保您已经在ISPConfig控制面板中创建远程用户,方法是转到“ 系统
”选项卡,然后单击左侧的“ 添加远程用户
”。
这是登录Soap的脚本的开始。
$username = 'yourusername'; $password = 'yourpassword'; /* $soap_location = 'http://localhost:8080/ispconfig3/interface/web/remote/index.php'; $soap_uri = 'http://localhost:8080/ispconfig3/interface/web/remote/'; */ $soap_location = 'http://localhost:8080/remote/index.php'; $soap_uri = 'http://localhost:8080/remote/';
你应该把你的Shell用户放在它的“你的用户名”中,密码在“你的密码”中。 你也应该放在你的肥皂,位置和uri,但更可能你不必改变这一点。
$client = new SoapClient(null, array('location' => $soap_location, 'uri' => $soap_uri)); try { //* Login to the remote server if($session_id = $client->login($username,$password)) { echo 'Logged into remote server sucessfully. The SessionID is '.$session_id.'
';
除非您要更改,否则本部分不需要更改
echo 'Logged into remote server sucessfully. The SessionID is '.$session_id.'
';
输出不同的消息。
结束脚本与以下注销。 在上一节中没有必要改变。
//* Logout if($client->logout($session_id)) { echo "FTP Created"; } } catch (SoapFault $e) { die('SOAP Error: '.$e->getMessage()); echo "Please contact the server administator"; } ?>;