]> granicus.if.org Git - php/commitdiff
Add the landonize() and landonize_url() functions which provide a secure
authorSterling Hughes <sterling@php.net>
Tue, 1 Apr 2003 05:01:50 +0000 (05:01 +0000)
committerSterling Hughes <sterling@php.net>
Tue, 1 Apr 2003 05:01:50 +0000 (05:01 +0000)
alternative to the sha1() and sha1_file() functions.

ext/standard/basic_functions.c
ext/standard/basic_functions.h

index 927cc1282c70e1f3c8542e92a461b1807c4789bc..9b21f3e2b24779fd992df01a24a15698da840121 100644 (file)
@@ -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 */
index 037420c703a97f3467598e4f393edd1ce2b376ed..cdcf4147415b1961a87fa0c7fffebb3fdb188f8d 100644 (file)
@@ -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