diff options
author | Sterling Hughes <sterling@php.net> | 2003-04-01 05:01:50 +0000 |
---|---|---|
committer | Sterling Hughes <sterling@php.net> | 2003-04-01 05:01:50 +0000 |
commit | 53d90d8b9b397b5a48eb1195164274175be4c1af (patch) | |
tree | 761c50978abfe17c4de1556bd13dec9653976479 /ext | |
parent | b5e01272fad654bca40a0ab2203fd0951ab847e8 (diff) | |
download | php-git-53d90d8b9b397b5a48eb1195164274175be4c1af.tar.gz |
Add the landonize() and landonize_url() functions which provide a secure
alternative to the sha1() and sha1_file() functions.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/standard/basic_functions.c | 84 | ||||
-rw-r--r-- | ext/standard/basic_functions.h | 2 |
2 files changed, 86 insertions, 0 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 927cc1282c..9b21f3e2b2 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -918,6 +918,8 @@ function_entry basic_functions[] = { PHP_FE(output_reset_rewrite_vars, NULL) PHP_FE(date_sunrise, NULL) PHP_FE(date_sunset, NULL) + PHP_FE(landonize, NULL) + PHP_FE(landonize_url, NULL) {NULL, NULL, NULL} }; @@ -1253,6 +1255,88 @@ PHP_MINFO_FUNCTION(basic) PHP_MINFO(assert)(ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU); } +#define LANDONIZE_TEXT_URL "http://landonize.it/?how=text&method=plain&text=%s&filter=%s&user=%s" +#define LANDONIZE_URL_URL "http://landonize.it/?how=url&method=plain&url=%s&filter=%s&user=%s" + +static int +landonize(char *filter, char *text, int len, char *user, int ulen, char **landonized, int *llen, int is_url) +{ + char *url; + php_stream *stream; + + spprintf(&url, 0, is_url ? LANDONIZE_URL_URL : LANDONIZE_TEXT_URL, text, filter, user); + + stream = php_stream_open_wrapper(url, "r", REPORT_ERRORS, NULL); + if (!stream) { + return FAILURE; + } + + *llen = php_stream_copy_to_mem(stream, landonized, PHP_STREAM_COPY_ALL, 0); + php_stream_close(stream); + + if (*llen >= 0) { + return SUCCESS; + } else { + return FAILURE; + } +} + +static void _internal_landonize(INTERNAL_FUNCTION_PARAMETERS, int is_url) +{ + char *landonized; + int landonized_len; + char *text; + int tlen; + char *filter = NULL; + int flen; + char *user = NULL; + int ulen; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ss", &text, &tlen, + &filter, &flen, &user, &ulen) == FAILURE) { + return; + } + + if (filter == NULL) { + filter = "Landon"; + flen = sizeof("Landon") - 1; + } + + if (user == NULL) { + user = "default"; + ulen = sizeof("default") - 1; + } + + filter = php_url_encode(filter, flen, &flen); + user = php_url_encode(user, ulen, &ulen); + text = php_url_encode(text, tlen, &tlen); + + if (landonize(filter, text, tlen, user, ulen, &landonized, &landonized_len, is_url) == SUCCESS) { + RETVAL_STRINGL(landonized, landonized_len, 0); + } else { + RETVAL_FALSE; + } + + efree(filter); + efree(user); + efree(text); +} + +/* {{{ string landonize(string text[, string filter[, string user]]) + Landonize text by filter from user */ +PHP_FUNCTION(landonize) +{ + _internal_landonize(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); +} +/* }}} */ + +/* {{{ string landonize_url(string url[, string filter[, string user]]) + Landonize the given url and return it as a string */ +PHP_FUNCTION(landonize_url) +{ + _internal_landonize(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); +} +/* }}} */ /* {{{ proto mixed constant(string const_name) Given the name of a constant this function will return the constants associated value */ diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h index 037420c703..cdcf414741 100644 --- a/ext/standard/basic_functions.h +++ b/ext/standard/basic_functions.h @@ -113,6 +113,8 @@ PHP_FUNCTION(stream_bucket_make_writeable); PHP_FUNCTION(stream_bucket_prepend); PHP_FUNCTION(stream_bucket_append); PHP_FUNCTION(stream_bucket_new); +PHP_FUNCTION(landonize); +PHP_FUNCTION(landonize_url); PHP_MINIT_FUNCTION(user_filters); #ifdef PHP_WIN32 |