Wed Jan 27 20:02:39 2016

Asterisk developer's documentation


func_base64.c File Reference

Use the base64 as functions. More...

#include "asterisk.h"
#include "asterisk/module.h"
#include "asterisk/pbx.h"
#include "asterisk/utils.h"
#include "asterisk/strings.h"

Go to the source code of this file.

Functions

 AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"base64 encode/decode dialplan functions")
static int base64_buf_helper (struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
static int base64_helper (struct ast_channel *chan, const char *cmd, char *data, char *buf, struct ast_str **str, ssize_t len)
static int base64_str_helper (struct ast_channel *chan, const char *cmd, char *data, struct ast_str **buf, ssize_t len)
static int load_module (void)
static int unload_module (void)

Variables

static struct ast_custom_function base64_decode_function
static struct ast_custom_function base64_encode_function

Detailed Description

Use the base64 as functions.

Definition in file func_base64.c.


Function Documentation

AST_MODULE_INFO_STANDARD ( ASTERISK_GPL_KEY  ,
"base64 encode/decode dialplan functions"   
)
static int base64_buf_helper ( struct ast_channel chan,
const char *  cmd,
char *  data,
char *  buf,
size_t  len 
) [static]

Definition at line 123 of file func_base64.c.

References base64_helper().

00125 {
00126    return base64_helper(chan, cmd, data, buf, NULL, len);
00127 }

static int base64_helper ( struct ast_channel chan,
const char *  cmd,
char *  data,
char *  buf,
struct ast_str **  str,
ssize_t  len 
) [static]

Definition at line 77 of file func_base64.c.

References ast_base64decode(), ast_base64encode(), ast_log(), ast_str_buffer(), ast_str_make_space(), ast_str_size(), ast_str_strlen(), ast_str_update(), ast_strlen_zero(), and LOG_WARNING.

Referenced by base64_buf_helper(), and base64_str_helper().

00079 {
00080    if (ast_strlen_zero(data)) {
00081       ast_log(LOG_WARNING, "Syntax: %s(<data>) - missing argument!\n", cmd);
00082       return -1;
00083    }
00084 
00085    if (cmd[7] == 'E') {
00086       if (buf) {
00087          ast_base64encode(buf, (unsigned char *) data, strlen(data), len);
00088       } else {
00089          if (len >= 0) {
00090             ast_str_make_space(str, len ? len : ast_str_strlen(*str) + strlen(data) * 4 / 3 + 2);
00091          }
00092          ast_base64encode(ast_str_buffer(*str) + ast_str_strlen(*str), (unsigned char *) data, strlen(data), ast_str_size(*str) - ast_str_strlen(*str));
00093          ast_str_update(*str);
00094       }
00095    } else {
00096       int decoded_len;
00097       if (buf) {
00098          decoded_len = ast_base64decode((unsigned char *) buf, data, len);
00099          /* add a terminating null at the end of buf, or at the
00100           * end of our decoded string, which ever is less */
00101          buf[decoded_len <= (len - 1) ? decoded_len : len - 1] = '\0';
00102       } else {
00103          if (len >= 0) {
00104             ast_str_make_space(str, len ? len : ast_str_strlen(*str) + strlen(data) * 3 / 4 + 2);
00105          }
00106          decoded_len = ast_base64decode((unsigned char *) ast_str_buffer(*str) + ast_str_strlen(*str), data, ast_str_size(*str) - ast_str_strlen(*str));
00107          if (len)
00108             /* add a terminating null at the end of our
00109              * buffer, or at the end of our decoded string,
00110              * which ever is less */
00111             ast_str_buffer(*str)[decoded_len <= (len - 1) ? decoded_len : len - 1] = '\0';
00112          else
00113             /* space for the null is allocated above */
00114             ast_str_buffer(*str)[decoded_len] = '\0';
00115 
00116          ast_str_update(*str);
00117       }
00118    }
00119 
00120    return 0;
00121 }

static int base64_str_helper ( struct ast_channel chan,
const char *  cmd,
char *  data,
struct ast_str **  buf,
ssize_t  len 
) [static]

Definition at line 129 of file func_base64.c.

References base64_helper().

00131 {
00132    return base64_helper(chan, cmd, data, NULL, buf, len);
00133 }

static int load_module ( void   )  [static]
static int unload_module ( void   )  [static]

Variable Documentation

Initial value:
 {
   .name = "BASE64_DECODE",
   .read = base64_buf_helper,
   .read2 = base64_str_helper,
}

Definition at line 141 of file func_base64.c.

Initial value:
 {
   .name = "BASE64_ENCODE",
   .read = base64_buf_helper,
   .read2 = base64_str_helper,
}

Definition at line 135 of file func_base64.c.


Generated on 27 Jan 2016 for Asterisk - The Open Source Telephony Project by  doxygen 1.6.1