summaryrefslogtreecommitdiff
path: root/ext/ftp/php_ftp.c
diff options
context:
space:
mode:
authorStefan Esser <sesser@php.net>2002-10-03 11:33:05 +0000
committerStefan Esser <sesser@php.net>2002-10-03 11:33:05 +0000
commitb220b7113fb12adf41a752fb5b046d9627f5b1bd (patch)
tree78ace2e346674b7af958db2febfb425545f3a569 /ext/ftp/php_ftp.c
parentd58c3dda9658ed1f6fc81d16eb59b36dab602a63 (diff)
downloadphp-git-b220b7113fb12adf41a752fb5b046d9627f5b1bd.tar.gz
Added ftp_ssl_connect() for FTP over SSL.
Diffstat (limited to 'ext/ftp/php_ftp.c')
-rw-r--r--ext/ftp/php_ftp.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/ext/ftp/php_ftp.c b/ext/ftp/php_ftp.c
index 55fcdb0b59..7acff3e71a 100644
--- a/ext/ftp/php_ftp.c
+++ b/ext/ftp/php_ftp.c
@@ -48,6 +48,9 @@ static int le_ftpbuf;
function_entry php_ftp_functions[] = {
PHP_FE(ftp_connect, NULL)
+#if HAVE_OPENSSL_EXT
+ PHP_FE(ftp_ssl_connect, NULL)
+#endif
PHP_FE(ftp_login, NULL)
PHP_FE(ftp_pwd, NULL)
PHP_FE(ftp_cdup, NULL)
@@ -162,10 +165,49 @@ PHP_FUNCTION(ftp_connect)
/* autoseek for resuming */
ftp->autoseek = FTP_DEFAULT_AUTOSEEK;
+#if HAVE_OPENSSL_EXT
+ /* disable ssl */
+ ftp->use_ssl = 0;
+#endif
+
+ ZEND_REGISTER_RESOURCE(return_value, ftp, le_ftpbuf);
+}
+/* }}} */
+
+#if HAVE_OPENSSL_EXT
+/* {{{ proto resource ftp_ssl_connect(string host [, int port [, int timeout)]])
+ Opens a FTP-SSL stream */
+PHP_FUNCTION(ftp_ssl_connect)
+{
+ ftpbuf_t *ftp;
+ char *host;
+ int host_len, port = 0;
+ long timeout_sec = FTP_DEFAULT_TIMEOUT;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ll", &host, &host_len, &port, &timeout_sec) == FAILURE) {
+ return;
+ }
+
+ if (timeout_sec <= 0) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Timeout has to be greater than 0");
+ RETURN_FALSE;
+ }
+
+ /* connect */
+ ftp = ftp_open(host, (short)port, timeout_sec TSRMLS_CC);
+ if (ftp == NULL) {
+ RETURN_FALSE;
+ }
+
+ /* autoseek for resuming */
+ ftp->autoseek = FTP_DEFAULT_AUTOSEEK;
+ /* enable ssl */
+ ftp->use_ssl = 1;
ZEND_REGISTER_RESOURCE(return_value, ftp, le_ftpbuf);
}
/* }}} */
+#endif
/* {{{ proto bool ftp_login(resource stream, string username, string password)
Logs into the FTP server */