[asterisk-commits] mjordan: trunk r432947 - in /trunk: CHANGES apps/app_sms.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Mar 13 20:53:15 CDT 2015


Author: mjordan
Date: Fri Mar 13 20:53:13 2015
New Revision: 432947

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432947
Log:
apps/app_sms: Add an option to prevent SMS content from being logged

In some countries, privacy laws specify that SMS content cannot be saved by a
provider. This patch adds a new option to the SMS application, 'n', which
prevents the SMS content from being written to the SMS log.

ASTERISK-22591 #close
Reported by: Jan Juergens
patches:
  DisableSmsContentLoggingByParam.patch uploaded by Jan Juergens (License 6538)

Modified:
    trunk/CHANGES
    trunk/apps/app_sms.c

Modified: trunk/CHANGES
URL: http://svnview.digium.com/svn/asterisk/trunk/CHANGES?view=diff&rev=432947&r1=432946&r2=432947
==============================================================================
--- trunk/CHANGES (original)
+++ trunk/CHANGES Fri Mar 13 20:53:13 2015
@@ -25,6 +25,12 @@
    - record_options: the options to pass to the MixMonitor application
    - record_command: a command to execute when recording is finished
    Note that these options may also be with the CONFBRIDGE function.
+
+SMS
+------------------
+ * Added the 'n' option, which prevents the SMS from being written to the log
+   file. This is needed for those countries with privacy laws that require
+   providers to not log SMS content.
 
 
 Channel Drivers

Modified: trunk/apps/app_sms.c
URL: http://svnview.digium.com/svn/asterisk/trunk/apps/app_sms.c?view=diff&rev=432947&r1=432946&r2=432947
==============================================================================
--- trunk/apps/app_sms.c (original)
+++ trunk/apps/app_sms.c Fri Mar 13 20:53:13 2015
@@ -88,6 +88,9 @@
 					<option name="o">
 						<para>The body should be coded as octets not 7-bit symbols.</para>
 					</option>
+					<option name="n">
+						<para>Do not log any SMS content to log file (privacy).</para>
+					</option>
 				</optionlist>
 			</parameter>
 			<parameter name="addr" />
@@ -220,6 +223,7 @@
 	unsigned char sent_rel:1;     /*!< have sent REL message... */
 	unsigned char smsc:1;        /*!< we are SMSC */
 	unsigned char rx:1;          /*!< this is a received message */
+	unsigned char nolog:1;       /*!< do not log plain text SMS content (privacy) */
 	char queue[30];              /*!< queue name */
 	char oa[20];                 /*!< originating address */
 	char da[20];                 /*!< destination address */
@@ -790,20 +794,25 @@
 			status, h->rx ? 'I' : 'O', h->smsc ? 'S' : 'M', mrs, h->queue,
 			S_OR(h->oa, "-"), S_OR(h->da, "-") );
 		p = line + strlen(line);
-		for (n = 0; n < h->udl; n++) {
-			if (h->ud[n] == '\\') {
-				*p++ = '\\';
-				*p++ = '\\';
-			} else if (h->ud[n] == '\n') {
-				*p++ = '\\';
-				*p++ = 'n';
-			} else if (h->ud[n] == '\r') {
-				*p++ = '\\';
-				*p++ = 'r';
-			} else if (h->ud[n] < 32 || h->ud[n] == 127) {
-				*p++ = 191;
-			} else {
-				*p++ = h->ud[n];
+
+		if (h->nolog) {
+			p += snprintf(p, 1000 - strlen(line), "udl=%d", h->udl);
+		} else {
+			for (n = 0; n < h->udl; n++) {
+				if (h->ud[n] == '\\') {
+					*p++ = '\\';
+					*p++ = '\\';
+				} else if (h->ud[n] == '\n') {
+					*p++ = '\\';
+					*p++ = 'n';
+				} else if (h->ud[n] == '\r') {
+					*p++ = '\\';
+					*p++ = 'r';
+				} else if (h->ud[n] < 32 || h->ud[n] == 127) {
+					*p++ = 191;
+				} else {
+					*p++ = h->ud[n];
+				}
 			}
 		}
 		*p++ = '\n';
@@ -1853,6 +1862,7 @@
 	OPTION_PAUSE	= (1 << 3),             /* pause before sending data, in ms */
 	OPTION_SRR	= (1 << 4),                 /* set srr */
 	OPTION_DCS	= (1 << 5),                 /* set dcs */
+	OPTIONS_NO_LOG	= (1 << 6),             /* Don't log SMS content */
 };
 
 enum sms_opt_args {
@@ -1866,6 +1876,7 @@
 	AST_APP_OPTION('t', OPTION_TWO),
 	AST_APP_OPTION('r', OPTION_SRR),
 	AST_APP_OPTION('o', OPTION_DCS),
+	AST_APP_OPTION('n', OPTIONS_NO_LOG),
 	AST_APP_OPTION_ARG('p', OPTION_PAUSE, OPTION_ARG_PAUSE),
 	} );
 
@@ -1926,6 +1937,7 @@
 
 	h.smsc = ast_test_flag(&flags, OPTION_BE_SMSC);
 	h.protocol = ast_test_flag(&flags, OPTION_TWO) ? 2 : 1;
+	h.nolog = ast_test_flag(&flags, OPTIONS_NO_LOG) ? 1 : 0;
 	if (!ast_strlen_zero(sms_opts[OPTION_ARG_PAUSE])) {
 		h.opause_0 = atoi(sms_opts[OPTION_ARG_PAUSE]);
 	}




More information about the asterisk-commits mailing list