00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "asterisk.h"
00026
00027 ASTERISK_FILE_VERSION(__FILE__, "$Revision: 89430 $")
00028
00029 #include "asterisk/module.h"
00030 #include "asterisk/pbx.h"
00031 #include "asterisk/utils.h"
00032
00033 static int base64_encode(struct ast_channel *chan, const char *cmd, char *data,
00034 char *buf, size_t len)
00035 {
00036 if (ast_strlen_zero(data)) {
00037 ast_log(LOG_WARNING, "Syntax: BASE64_ENCODE(<data>) - missing argument!\n");
00038 return -1;
00039 }
00040
00041 ast_base64encode(buf, (unsigned char *) data, strlen(data), len);
00042
00043 return 0;
00044 }
00045
00046 static int base64_decode(struct ast_channel *chan, const char *cmd, char *data,
00047 char *buf, size_t len)
00048 {
00049 if (ast_strlen_zero(data)) {
00050 ast_log(LOG_WARNING, "Syntax: BASE64_DECODE(<base_64 string>) - missing argument!\n");
00051 return -1;
00052 }
00053
00054 ast_base64decode((unsigned char *) buf, data, len);
00055
00056 return 0;
00057 }
00058
00059 static struct ast_custom_function base64_encode_function = {
00060 .name = "BASE64_ENCODE",
00061 .synopsis = "Encode a string in base64",
00062 .desc = "Returns the base64 string\n",
00063 .syntax = "BASE64_ENCODE(<string>)",
00064 .read = base64_encode,
00065 };
00066
00067 static struct ast_custom_function base64_decode_function = {
00068 .name = "BASE64_DECODE",
00069 .synopsis = "Decode a base64 string",
00070 .desc = "Returns the plain text string\n",
00071 .syntax = "BASE64_DECODE(<base64_string>)",
00072 .read = base64_decode,
00073 };
00074
00075 static int unload_module(void)
00076 {
00077 return ast_custom_function_unregister(&base64_encode_function) |
00078 ast_custom_function_unregister(&base64_decode_function);
00079 }
00080
00081 static int load_module(void)
00082 {
00083 return ast_custom_function_register(&base64_encode_function) |
00084 ast_custom_function_register(&base64_decode_function);
00085 }
00086
00087 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "base64 encode/decode dialplan functions");