#!/bin/sh
# /home/jhs/bin/.sh/telno_router
# Purpose: FRITZ BROKEN Usage: telno_router < ~/mail/cron/router/call/muc/number/1
# See Also ~/private/etc/pbx/estic-aliases.top
# See Also:
#  ~/.procmailrc_private_router_logs
#  ~/public_html/src/bsd/jhs/bin/public/phone/index.lmth
#  vi -c/Purpose:		\
#   ~/bin/.csh/telno_dsl	\
#   ~/bin/.csh/telno_dslx	\
#   ~/bin/.sh/telno		\
#   ~/bin/.sh/telno_2		\
#   ~/bin/.sh/telno_expt	\
#   ~/bin/.sh/telno_router	\
#   ~/bin/.sh/telno_x

# Use with tail -f  /home/jhs/.phone_calls
# To test: cd ~/mail/cron/router/call
#	cat 1 | /home/jhs/bin/.sh/telno_router
#	foreach i ( [0-9][0-9] )
#		cat $i | telno_router
#		end

mail=/home/`whoami`/tmp/.telno_router.$$
# display=/home/`whoami`/.phone_calls
display=/var/log/phone.log

aliases=/etc/pbx/aliases
# aliases created by ...... ? JJLATER

touch $display

# Copy the mail from ~/.procmailrc_system_logs
# as we want to parse it twice.
cat > $mail

# Occasionaly there will be eg:
#	Subject: =?UTF-8?B?QW5ydWYgdm9uIDAwMzA3ODc4MzExOCAoMDQ1NDI5OTgxMCk=?=
# & then this wont work
#	from=`cat $mail					\
#		| grep "Subject: Anruf von"		\
#		| sed -e "s/Subject: Anruf von //"`

# Auf Ihrer FRITZ=21Box ist ein Anruf von Name unbekannt (0897163602) eingeg=
# angen=2E
# Auf Ihrer FRITZ=21Box ist ein Anruf von 0891247111392 (0383443320) eingega=
# ngen=2E
# Auf Ihrer FRITZ=21Box ist ein Anruf von +Julian UK Samsung (00441234567890=
# ) eingegangen=2E
# Auf Ihrer FRITZ=21Box ist ein Anruf von +Melaaaa Privacy=40Work ABC 5678 K=
#  (08912345678) eingegangen=2E

fromfull=`cat $mail						\
	| grep "Auf Ihrer FRITZ=21Box ist ein Anruf von "	\
	| uniq							\
	| sed -e "s/Auf Ihrer FRITZ=21Box ist ein Anruf von //"	\
	| sed -e "s/Name unbekannt/Unknown/"			\
	| sed -e "s/=21/!/"					\
	| sed -e "s/=40/@/"					\
	| awk -F ')' '{printf "%s)\n",$1}'`
# echo "fromfull: ${fromfull}"

# For consideration of which of left or right number to use,
# See Also ~/.procmailrc_system_logs
# Taking the right is convenient when considering examples above
fromnumeric=`echo "${fromfull}"			\
	| awk -F '(' '{printf "%s\n",$2}'	\
	| awk -F ')' '{printf "%s\n",$1}'`
# echo "fromnumeric: ${fromnumeric}"

to=`cat $mail					\
	| grep "die Rufnummer:"			\
	| grep -v "die Rufnummer:$"		\
	| sed -e "s/f=C3=BCr die Rufnummer://"	\
	| sed -e "s/ //g"`
# echo "to: ${to}"

# Datum: 16=2E01=2E2018		=2E maps to dot so 16 01 2018
# Uhrzeit: 14:08
# Datum:
# Uhrzeit:
# I will aim for ISO date: 2018-01-16T14:08
#	http://en.wikipedia.org/wiki/ISO_8601
#	2018-01-16T16:05:57+00:00

date=`cat $mail					\
	| grep "Datum:"				\
	| grep -v "Datum:$"			\
	| sed -e "s/Datum: //"			\
	| sed -e "s/=2E/:/g"			\
	| awk -F: '{printf "%s-%s-%s",$3,$2,$1}'`

time=`cat $mail					\
	| grep "Uhrzeit:"			\
	| grep -v "Uhrzeit:$"			\
	| sed -e "s/Uhrzeit: //"`

rm $mail
namef=`xs grep $fromnumeric $aliases | awk -F'"' '{printf "%s",$2}'`
namet=`xs grep $to $aliases | grep -v ';' | grep -v '^0'	\
	| awk -F'"' '{printf "%s\n",$2}'`

# I could add code so I only emit a space after ${namef} &
# ${namet} If they are not null string, but I cant be bothered as
# most numbers will have matching names.
echo "${date}T${time} FROM: F ${fromfull} P ${namef} TO: ${to} ${namet}" >> $display
#	F ${fromfull} 	Direct from mail from Fritz Router
#	P ${namef} 	grep on PC $aliases
