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 |
Use the base64 as functions.
Definition in file func_base64.c.
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] |
Definition at line 153 of file func_base64.c.
References ast_custom_function_register.
00154 { 00155 return ast_custom_function_register(&base64_encode_function) | 00156 ast_custom_function_register(&base64_decode_function); 00157 }
static int unload_module | ( | void | ) | [static] |
Definition at line 147 of file func_base64.c.
References ast_custom_function_unregister().
00148 { 00149 return ast_custom_function_unregister(&base64_encode_function) | 00150 ast_custom_function_unregister(&base64_decode_function); 00151 }
struct ast_custom_function base64_decode_function [static] |
{ .name = "BASE64_DECODE", .read = base64_buf_helper, .read2 = base64_str_helper, }
Definition at line 141 of file func_base64.c.
struct ast_custom_function base64_encode_function [static] |
{ .name = "BASE64_ENCODE", .read = base64_buf_helper, .read2 = base64_str_helper, }
Definition at line 135 of file func_base64.c.