mirror of
https://gitlab.com/siarp/siarp.de.git
synced 2026-08-07 19:18:17 +00:00
508 lines
94 KiB
HTML
508 lines
94 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
|
|
"http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" version="XHTML+RDFa 1.0" dir="ltr">
|
|
|
|
|
|
<!-- Mirrored from siarp.de/node/232 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:12 GMT -->
|
|
<head profile="http://www.w3.org/1999/xhtml/vocab">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
|
|
|
|
|
|
<title>Speedport W 723V (A) - automatischer Abruf der Anruferliste und Abgleich mit Google Contacts | siarp.de</title>
|
|
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xE-rWrJf-fncB6ztZfd2huxqgxu4WO-qwma6Xer30m4.css" media="all" />
|
|
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_NdVgz6YKifxQUEsW5xls_zI7Pn2F7E5U5Wb29zcu3vo.css" media="all" />
|
|
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_OAqUol8y_hmU_lCucLyaRX-a1G627sWWbvG_VG1GKnE.css" media="all" />
|
|
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_xPIRNNJGw8EiKyuE5b-xAtWWTQ8U1_huTr4xL09Dq2A.css" media="all" />
|
|
<link type="text/css" rel="stylesheet" href="../../sites/siarp.de/files/css/css_k3snrbsthqot7V7ccRZHS9OkCZkwBv4adtNieIVlbEU.css" media="print" />
|
|
|
|
<!--[if lt IE 7]>
|
|
<link type="text/css" rel="stylesheet" href="http://siarp.de/themes/garland/fix-ie.css?q26w7t" media="all" />
|
|
<![endif]-->
|
|
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_qikmINIYTWe4jcTUn8cKiMr8bmSDiZB9LQqvceZ6wlM.js"></script>
|
|
<script type="text/javascript" src="../../sites/siarp.de/files/js/js_VaTlC5jNdxR2e4HzWsuiV1jhDftON6pzITcrr9IQmXA.js"></script>
|
|
<script type="text/javascript">
|
|
<!--//--><![CDATA[//><!--
|
|
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"garland","theme_token":"OYLk4rv5VGwjspcp5Bz0LblG4xW6rv8nS1SjDyZPY2s","js":{"misc\/jquery.js":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"misc\/tableheader.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/system\/system.menus.css":1,"modules\/system\/system.messages.css":1,"modules\/system\/system.theme.css":1,"modules\/comment\/comment.css":1,"modules\/field\/theme\/field.css":1,"modules\/node\/node.css":1,"modules\/user\/user.css":1,"sites\/all\/modules\/views\/css\/views.css":1,"sites\/all\/modules\/ctools\/css\/ctools.css":1,"public:\/\/geshi\/geshifilter-languages.css":1,"sites\/siarp.de\/modules\/geshifilter\/geshifilter.css":1,"themes\/garland\/style.css":1,"themes\/garland\/print.css":1,"themes\/garland\/fix-ie.css":1}}});
|
|
//--><!]]>
|
|
</script>
|
|
</head>
|
|
<body class="html not-front not-logged-in one-sidebar sidebar-second page-node page-node- page-node-232 node-type-story fluid-width" >
|
|
<div id="skip-link">
|
|
<a href="#main-content" class="element-invisible element-focusable">Skip to main content</a>
|
|
</div>
|
|
|
|
<div id="wrapper">
|
|
<div id="container" class="clearfix">
|
|
|
|
<div id="header">
|
|
<div id="logo-floater">
|
|
<div id="branding"><strong><a href="../../">
|
|
<span>siarp.de</span> </a></strong></div>
|
|
</div>
|
|
|
|
</div> <!-- /#header -->
|
|
|
|
|
|
<div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
|
|
<h2 class="element-invisible">You are here</h2><div class="breadcrumb"><a href="../../">Home</a></div> <a id="main-content"></a>
|
|
<div id="tabs-wrapper" class="clearfix"> <h1 class="with-tabs">Speedport W 723V (A) - automatischer Abruf der Anruferliste und Abgleich mit Google Contacts</h1>
|
|
</div> <div class="clearfix">
|
|
<div class="region region-content">
|
|
<div id="block-system-main" class="block block-system clearfix">
|
|
|
|
|
|
<div class="content">
|
|
<div id="node-232" class="node node-story node-promoted">
|
|
|
|
|
|
|
|
<span class="submitted">30. July 2012 - 22:35 — <span class="username">Tilman</span></span>
|
|
|
|
<div class="content clearfix">
|
|
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>Seit kurzem haben wir VDSL von der Telekom (yeah!) und deshalb einen neuen Router. Das Gerät ist ein <a href="http://de.wikipedia.org/wiki/Speedport">Speedport</a> W 723V A mit relativ vielen Funktionen. Unter anderem können DECT-Telefone direkt angebunden werden und brauchen dann keinen eigene Basisstation. Diese Funktion wollte ich gerne nutzen, weil beim Anschluss des Telefons über die analoge TAE-Buchse nur eine Leitung genutzt werden kann und außerdem die Sprachqualität über die analoge Schnittstelle eher mäßig war. Das Problem: Entgangene Anrufe werden nicht mehr an die Telefone übermittelt, sondern müssen über das Web-Interface nachgeschaut werden - inakzeptabel. Zumindest beim Typ A vom 723 V ist wohl schon der neue Standard CATiq-2.0 implementiert, mit dem die Anruferliste an die Telefone übertragen werden kann. Nur kennen unsere Gigaset C300 Telefone den Standard leider noch nicht. Statt neue Telefone zu kaufen machen wir das Ganze einfach selbst und viel besser: Das folgende Java-Programm ruft die Liste vom Router ab und sendet bei neuen Anrufen eine E-Mail an beliebig viele Empfänger. So bekommen wir sogar unterwegs mit, wenn wir zu Hause einen Anruf verpasst haben.</p>
|
|
|
|
<p>Download: <a href="../../sites/siarp.de/files/speedportcallerid.jar">speedportcallerid.jar</a></p>
|
|
|
|
<p><em>Wie immer alles auf eigene Gefahr! Das Programm speichert allerdings nichts und ändert auch keine Einstellungen im Router, so dass sich das Risiko in Grenzen hält :) Ob das Ganze auch mit dem Speedport W 723V B funktioniert, weiß ich nicht.</em></p>
|
|
|
|
<p>Der Aufruf funktioniert so:</p>
|
|
|
|
<div class="geshifilter"><div class="text geshifilter-text">Usage: java -jar speedportcallerid.jar <router password> <update interval> <e-mail adress> <e-mail password> recipient1 recipient2 ... recipientN [--contacts] [--debug] [-?|--help]<br />
|
|
<br />
|
|
<router password><br />
|
|
the login password for the Speedport W 723V (A) router<br />
|
|
<br />
|
|
<update interval><br />
|
|
the interval beetween runs in minutes<br />
|
|
<br />
|
|
<e-mail adress><br />
|
|
Google mail address to send from<br />
|
|
<br />
|
|
<e-mail password><br />
|
|
the login password for the Google account<br />
|
|
<br />
|
|
recipient1 recipient2 ... recipientN<br />
|
|
e-mail addresses to send notifications to<br />
|
|
<br />
|
|
[--contacts]<br />
|
|
retrieve contacts from Google account and resolve caller names<br />
|
|
<br />
|
|
[--debug]<br />
|
|
print debug messages<br />
|
|
<br />
|
|
[-?|--help]<br />
|
|
print help and exit</div></div>
|
|
|
|
<p>Konkret lasse ich einen cronjob laufen, der alle 15 Minuten dieses Skript aufruft:</p>
|
|
|
|
<div class="geshifilter"><div class="bash geshifilter-bash"><span class="co0">#!/bin/sh</span><br />
|
|
<span class="kw3">cd</span> <span class="sy0">/</span>media<span class="sy0">/</span>usb<span class="sy0">/</span>hidrive<span class="sy0">/</span>speedport<br />
|
|
<span class="kw2">sudo</span> <span class="re5">-u</span> nobody java -Duser.timezone=Europe<span class="sy0">/</span>Berlin <span class="re5">-jar</span> speedportcallerid.jar <span class="re5">--contacts</span> <span class="sy0"><</span>ROUTER-PASSWORT<span class="sy0">></span> <span class="nu0">15</span> <span class="sy0"><</span>GMAIL-ADRESSE<span class="sy0">></span> <span class="sy0"><</span>GMAIL-PASSWORT<span class="sy0">></span> <span class="sy0"><</span>EMPFÄNGER1<span class="sy0">></span> <span class="sy0"><</span>EMPFÄNGER2<span class="sy0">></span></div></div>
|
|
|
|
<p>Der cronjob dazu sieht so aus:</p>
|
|
|
|
<div class="geshifilter"><div class="text geshifilter-text">*/15 * * * * /usr/local/bin/check-speedport.sh</div></div>
|
|
|
|
<p>Im Moment sind die Mail-Einstellungen auf den Gmail-Server festgelegt (StartTLS + Port 587) für andere Server muss der Code evtl. angepasst werden - vielleicht baue ich später dafür auch nochmal zusätzliche Parameter ein, wenn jemand Interesse hat.</p>
|
|
|
|
<h2>Nachtrag: Namensauflösung mit Gmail-Kontakten</h2>
|
|
|
|
<p>Das Programm tat was es soll, aber die Akzeptanz im Haushalt ließ zu wünschen übrig: "Woher soll ich denn wissen, wer das war, wenn da nur die Nummer steht!?" Na gut, ist wohl nicht so praktisch.<br />
|
|
Man kann zwar im Router eine Telefonliste pflegen, aber leider wird die nicht für die Anzeige der Rufnummern auf der Weboberfläche verwendet. Außerdem müsste man dann sämtliche Kontakte nochmal im Speedport pflegen, was sicherlich auch nicht Sinn der Sache ist. Zum Glück hab ich ja ein Android-Handy und deshalb sämtliche Telefonnummern im Google-Account gespeichert. Man muss also nur nochmal nach den passenden Namen suchen, nachdem man die Rufnummern aus dem Speedport gefischt hat. Erledigt. Das Aufruf-Skript muss nur um den Parameter <span class="geshifilter"><code class="bash geshifilter-bash"><span class="re5">--contacts</span></code></span> ergänzt werden (s.o.)</p>
|
|
|
|
<h2>Code</h2>
|
|
|
|
<div class="geshifilter"><div class="java geshifilter-java"><span class="kw1">package</span> <span class="co2">de.tilman.callerid</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">import</span> <span class="co2">java.io.BufferedReader</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.io.InputStreamReader</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.io.OutputStreamWriter</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.net.HttpURLConnection</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.net.URL</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.net.URLConnection</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.net.URLEncoder</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.util.Calendar</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.util.LinkedList</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.util.List</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">java.util.Properties</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">import</span> <span class="co2">javax.mail.Message</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">javax.mail.Session</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">javax.mail.Transport</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">javax.mail.internet.InternetAddress</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">javax.mail.internet.MimeMessage</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">import</span> <span class="co2">org.apache.commons.codec.binary.Base64</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">org.apache.log4j.BasicConfigurator</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">org.apache.log4j.ConsoleAppender</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">org.apache.log4j.Level</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">org.apache.log4j.Logger</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">org.apache.log4j.PatternLayout</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">import</span> <span class="co2">com.google.gdata.client.Query</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.google.gdata.client.contacts.ContactsService</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.google.gdata.data.contacts.ContactEntry</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.google.gdata.data.contacts.ContactFeed</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.google.gdata.data.extensions.PhoneNumber</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.JSAP</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.JSAPException</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.JSAPResult</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.Switch</span><span class="sy0">;</span><br />
|
|
<span class="kw1">import</span> <span class="co2">com.martiansoftware.jsap.UnflaggedOption</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="co3">/**<br />
|
|
* This class retrieves the list of missed calls from a Speedport W 723V (A)<br />
|
|
* router and sends notifications to a list of e-mail addresses.<br />
|
|
* <br />
|
|
* @author Tilman Liero tliero@gmx.net<br />
|
|
*/</span><br />
|
|
<span class="kw1">public</span> <span class="kw1">class</span> CallerIdClient <span class="br0">{</span><br />
|
|
<br />
|
|
<span class="kw1">private</span> <span class="kw1">final</span> <span class="kw1">static</span> Logger log <span class="sy0">=</span> Logger.<span class="me1">getLogger</span><span class="br0">(</span>CallerIdClient.<span class="kw1">class</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> TEXT_UNKNOWN <span class="sy0">=</span> <span class="st0">"unbekannt"</span><span class="sy0">;</span><br />
|
|
<span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> TEXT_MAILPREFIX <span class="sy0">=</span> <span class="st0">"Anruf von "</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> password<span class="sy0">;</span><br />
|
|
<span class="kw4">int</span> updateInterval<span class="sy0">;</span><br />
|
|
JSAPResult config<span class="sy0">;</span><br />
|
|
LinkedList<span class="sy0"><</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span><span class="sy0">></span> calls <span class="sy0">=</span> <span class="kw1">new</span> LinkedList<span class="sy0"><</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span><span class="sy0">></span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> cookie <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">public</span> CallerIdClient<span class="br0">(</span>JSAPResult config<span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">this</span>.<span class="me1">config</span> <span class="sy0">=</span> config<span class="sy0">;</span><br />
|
|
<span class="kw1">this</span>.<span class="me1">password</span> <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">(</span>Base64.<span class="me1">encodeBase64</span><span class="br0">(</span>config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"router password"</span><span class="br0">)</span>.<span class="me1">getBytes</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw1">this</span>.<span class="me1">updateInterval</span> <span class="sy0">=</span> config.<span class="me1">getInt</span><span class="br0">(</span><span class="st0">"update interval"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">try</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"logging in to Speedport router"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
postUrl<span class="br0">(</span><span class="st0">"https://speedport.ip/index/login.cgi"</span>, <span class="st0">"Username="</span> <span class="sy0">+</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+urlencoder"><span class="kw3">URLEncoder</span></a>.<span class="me1">encode</span><span class="br0">(</span><span class="st0">"admin"</span>, <span class="st0">"UTF-8"</span><span class="br0">)</span> <span class="sy0">+</span> <span class="st0">"&"</span> <span class="sy0">+</span> <span class="st0">"Password="</span><br />
|
|
<span class="sy0">+</span> password<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"retrieving call list"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
getUrl<span class="br0">(</span><span class="st0">"https://speedport.ip/auth/hcti_status_telanrl.php?cookie=SessionID_R3,"</span> <span class="sy0">+</span> cookie<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"logging out"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
postUrl<span class="br0">(</span><span class="st0">"https://speedport.ip/auth/logout.cgi?RequestFile=/pub/top_beenden.php&cookie=SessionID_R3,"</span> <span class="sy0">+</span> cookie, <span class="st0">""</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>calls.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">></span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<br />
|
|
List<span class="sy0"><</span>ContactEntry<span class="sy0">></span> contacts <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>config.<span class="me1">getBoolean</span><span class="br0">(</span><span class="st0">"check contacts"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"retrieving Google contacts"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
ContactsService service <span class="sy0">=</span> <span class="kw1">new</span> ContactsService<span class="br0">(</span><span class="st0">"<var>SpeedportCallerIdClient</var>"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
service.<span class="me1">setUserCredentials</span><span class="br0">(</span>config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail adress"</span><span class="br0">)</span>, config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail password"</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a> feedUrl <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a><span class="br0">(</span><span class="st0">"https://www.google.com/m8/feeds/contacts/default/full"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
Query myQuery <span class="sy0">=</span> <span class="kw1">new</span> Query<span class="br0">(</span>feedUrl<span class="br0">)</span><span class="sy0">;</span><br />
|
|
myQuery.<span class="me1">setMaxResults</span><span class="br0">(</span><span class="nu0">1000</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
ContactFeed resultFeed <span class="sy0">=</span> service.<span class="me1">query</span><span class="br0">(</span>myQuery, ContactFeed.<span class="kw1">class</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
contacts <span class="sy0">=</span> resultFeed.<span class="me1">getEntries</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"sending notifications"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw1">for</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> call <span class="sy0">:</span> calls<span class="br0">)</span> <span class="br0">{</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> time <span class="sy0">=</span> call<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> caller <span class="sy0">=</span> call<span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>caller.<span class="me1">equals</span><span class="br0">(</span><span class="st0">" "</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
caller <span class="sy0">=</span> TEXT_UNKNOWN<span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="kw1">else</span> <span class="br0">{</span><br />
|
|
numberSearch<span class="sy0">:</span><br />
|
|
<span class="kw1">for</span> <span class="br0">(</span>ContactEntry contact <span class="sy0">:</span> contacts<span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">for</span> <span class="br0">(</span>PhoneNumber phone <span class="sy0">:</span> contact.<span class="me1">getPhoneNumbers</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>phone.<span class="me1">getPhoneNumber</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">endsWith</span><span class="br0">(</span>caller.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>contact.<span class="me1">getName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">hasFullName</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
caller <span class="sy0">=</span> contact.<span class="me1">getName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getFullName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getValue</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">+</span> <span class="st0">" ("</span> <span class="sy0">+</span> caller <span class="sy0">+</span> <span class="st0">")"</span><span class="sy0">;</span><br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"found number in contact data for "</span> <span class="sy0">+</span> contact.<span class="me1">getName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getFullName</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getValue</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="kw1">break</span> numberSearch<span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
sendNotification<span class="br0">(</span>time, caller<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span> <span class="kw1">catch</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> e<span class="br0">)</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">error</span><span class="br0">(</span>e.<span class="me1">getMessage</span><span class="br0">(</span><span class="br0">)</span>, e<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"done"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<span class="kw1">private</span> <span class="kw4">void</span> getUrl<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> urlString<span class="br0">)</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> <span class="br0">{</span><br />
|
|
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">"getUrl("</span> <span class="sy0">+</span> urlString <span class="sy0">+</span> <span class="st0">")"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a> url <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a><span class="br0">(</span>urlString<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+urlconnection"><span class="kw3">URLConnection</span></a> connection <span class="sy0">=</span> url.<span class="me1">openConnection</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
showHeaders<span class="br0">(</span>connection<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a> in <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a><span class="br0">(</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+inputstreamreader"><span class="kw3">InputStreamReader</span></a><span class="br0">(</span>connection.<span class="me1">getInputStream</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> line<span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span>line <span class="sy0">=</span> in.<span class="me1">readLine</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>line.<span class="me1">startsWith</span><span class="br0">(</span><span class="st0">"var in_call_list"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="co1">// analyze caller list</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> s <span class="sy0">=</span> line.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">39</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" "</span> <span class="sy0">+</span> line<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> result <span class="sy0">=</span> s.<span class="me1">split</span><span class="br0">(</span><span class="st0">"new Array<span class="es0">\\</span>("</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> x <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> x <span class="sy0"><</span> result.<span class="me1">length</span><span class="sy0">;</span> x<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="co1">// check for unanswered calls</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">lastIndexOf</span><span class="br0">(</span><span class="st0">'"'</span><span class="br0">)</span> <span class="sy0">-</span> <span class="nu0">8</span>, result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">lastIndexOf</span><span class="br0">(</span><span class="st0">'"'</span><span class="br0">)</span><span class="br0">)</span>.<span class="me1">equals</span><span class="br0">(</span><span class="st0">"00:00:00"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">"Unanswered call: "</span> <span class="sy0">+</span> result<span class="br0">[</span>x<span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="co1">// determine call time</span><br />
|
|
<span class="kw4">int</span> year <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">7</span>, <span class="nu0">11</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw4">int</span> month <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">4</span>, <span class="nu0">6</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw4">int</span> date <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">3</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw4">int</span> hour <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">12</span>, <span class="nu0">14</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw4">int</span> min <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">15</span>, <span class="nu0">17</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw4">int</span> sec <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+integer"><span class="kw3">Integer</span></a>.<span class="me1">parseInt</span><span class="br0">(</span>result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">18</span>, <span class="nu0">20</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a> callTime <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a>.<span class="me1">getInstance</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
callTime.<span class="me1">set</span><span class="br0">(</span>year, month <span class="sy0">-</span> <span class="nu0">1</span>, date, hour, min, sec<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a> lastCheck <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+calendar"><span class="kw3">Calendar</span></a>.<span class="me1">getInstance</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
lastCheck.<span class="me1">setTimeInMillis</span><span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">currentTimeMillis</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">-</span> updateInterval <span class="sy0">*</span> <span class="nu0">1000</span> <span class="sy0">*</span> <span class="nu0">60</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>callTime.<span class="me1">after</span><span class="br0">(</span>lastCheck<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> time <span class="sy0">=</span> result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">1</span>, <span class="nu0">20</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> number <span class="sy0">=</span> result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">23</span>, result<span class="br0">[</span>x<span class="br0">]</span>.<span class="me1">indexOf</span><span class="br0">(</span><span class="st0">'"'</span>, <span class="nu0">23</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
calls.<span class="me1">add</span><span class="br0">(</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> <span class="br0">{</span> time, number <span class="br0">}</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<span class="br0">}</span><br />
|
|
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" "</span> <span class="sy0">+</span> line<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
in.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<span class="kw1">private</span> <span class="kw4">void</span> postUrl<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> urlString, <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> payload<span class="br0">)</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> <span class="br0">{</span><br />
|
|
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">"postUrl("</span> <span class="sy0">+</span> urlString <span class="sy0">+</span> <span class="st0">", "</span> <span class="sy0">+</span> payload <span class="sy0">+</span> <span class="st0">")"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a> url <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+url"><span class="kw3">URL</span></a><span class="br0">(</span>urlString<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+httpurlconnection"><span class="kw3">HttpURLConnection</span></a> connection <span class="sy0">=</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+httpurlconnection"><span class="kw3">HttpURLConnection</span></a><span class="br0">)</span> url.<span class="me1">openConnection</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
connection.<span class="me1">setRequestMethod</span><span class="br0">(</span><span class="st0">"POST"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
connection.<span class="me1">setInstanceFollowRedirects</span><span class="br0">(</span><span class="kw2">false</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
connection.<span class="me1">setDoInput</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
connection.<span class="me1">setDoOutput</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
connection.<span class="me1">setUseCaches</span><span class="br0">(</span><span class="kw2">false</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
connection.<span class="me1">setRequestProperty</span><span class="br0">(</span><span class="st0">"Content-Length"</span>, <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a>.<span class="me1">valueOf</span><span class="br0">(</span>payload.<span class="me1">length</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>cookie <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
connection.<span class="me1">setRequestProperty</span><span class="br0">(</span><span class="st0">"Cookie"</span>, <span class="st0">"SessionID_R3="</span> <span class="sy0">+</span> cookie<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+outputstreamwriter"><span class="kw3">OutputStreamWriter</span></a> writer <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+outputstreamwriter"><span class="kw3">OutputStreamWriter</span></a><span class="br0">(</span>connection.<span class="me1">getOutputStream</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>payload.<span class="me1">length</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">></span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
writer.<span class="me1">write</span><span class="br0">(</span>payload<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
writer.<span class="me1">flush</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a> reader <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+bufferedreader"><span class="kw3">BufferedReader</span></a><span class="br0">(</span><span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+inputstreamreader"><span class="kw3">InputStreamReader</span></a><span class="br0">(</span>connection.<span class="me1">getInputStream</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">for</span> <span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> line<span class="sy0">;</span> <span class="br0">(</span>line <span class="sy0">=</span> reader.<span class="me1">readLine</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="sy0">!=</span> <span class="kw2">null</span><span class="sy0">;</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>line.<span class="me1">startsWith</span><span class="br0">(</span><span class="st0">"SessionID_R3"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
cookie <span class="sy0">=</span> line.<span class="me1">substring</span><span class="br0">(</span><span class="nu0">13</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>line.<span class="me1">equals</span><span class="br0">(</span><span class="st0">"4"</span><span class="br0">)</span><span class="br0">)</span><br />
|
|
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">" could not log in, Speedport adminstration account is currently in use"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="kw1">else</span><br />
|
|
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">" received unexpected response: "</span> <span class="sy0">+</span> line<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
writer.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
reader.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
showHeaders<span class="br0">(</span>connection<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<span class="kw1">private</span> <span class="kw4">void</span> showHeaders<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+urlconnection"><span class="kw3">URLConnection</span></a> connection<span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> headerName <span class="sy0">=</span> connection.<span class="me1">getHeaderFieldKey</span><span class="br0">(</span>i<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> headerValue <span class="sy0">=</span> connection.<span class="me1">getHeaderField</span><span class="br0">(</span>i<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>headerName <span class="sy0">==</span> <span class="kw2">null</span> <span class="sy0">&&</span> headerValue <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="co1">// No more headers</span><br />
|
|
<span class="kw1">break</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>headerName <span class="sy0">==</span> <span class="kw2">null</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="co1">// The header value contains the server's HTTP version</span><br />
|
|
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" Server HTTP version, Response code: "</span> <span class="sy0">+</span> headerValue<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">debug</span><span class="br0">(</span><span class="st0">" Header: "</span> <span class="sy0">+</span> headerName <span class="sy0">+</span> <span class="st0">", Value: "</span> <span class="sy0">+</span> headerValue<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<span class="kw1">private</span> <span class="kw4">void</span> sendNotification<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> time, <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> caller<span class="br0">)</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+exception"><span class="kw3">Exception</span></a> <span class="br0">{</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> host <span class="sy0">=</span> <span class="st0">"smtp.gmail.com"</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> from <span class="sy0">=</span> config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail adress"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a> pass <span class="sy0">=</span> config.<span class="me1">getString</span><span class="br0">(</span><span class="st0">"e-mail password"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+properties"><span class="kw3">Properties</span></a> props <span class="sy0">=</span> <a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">getProperties</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.starttls.enable"</span>, <span class="st0">"true"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.host"</span>, host<span class="br0">)</span><span class="sy0">;</span><br />
|
|
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.user"</span>, from<span class="br0">)</span><span class="sy0">;</span><br />
|
|
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.password"</span>, pass<span class="br0">)</span><span class="sy0">;</span><br />
|
|
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.port"</span>, <span class="st0">"587"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
props.<span class="me1">put</span><span class="br0">(</span><span class="st0">"mail.smtp.auth"</span>, <span class="st0">"true"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> to <span class="sy0">=</span> config.<span class="me1">getStringArray</span><span class="br0">(</span><span class="st0">"recipient"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
Session session <span class="sy0">=</span> Session.<span class="me1">getDefaultInstance</span><span class="br0">(</span>props, <span class="kw2">null</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
MimeMessage message <span class="sy0">=</span> <span class="kw1">new</span> MimeMessage<span class="br0">(</span>session<span class="br0">)</span><span class="sy0">;</span><br />
|
|
message.<span class="me1">setFrom</span><span class="br0">(</span><span class="kw1">new</span> InternetAddress<span class="br0">(</span>from<span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
InternetAddress<span class="br0">[</span><span class="br0">]</span> toAddress <span class="sy0">=</span> <span class="kw1">new</span> InternetAddress<span class="br0">[</span>to.<span class="me1">length</span><span class="br0">]</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> to.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
toAddress<span class="br0">[</span>i<span class="br0">]</span> <span class="sy0">=</span> <span class="kw1">new</span> InternetAddress<span class="br0">(</span>to<span class="br0">[</span>i<span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0"><</span> toAddress.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
message.<span class="me1">addRecipient</span><span class="br0">(</span>Message.<span class="me1">RecipientType</span>.<span class="me1">TO</span>, toAddress<span class="br0">[</span>i<span class="br0">]</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
message.<span class="me1">setSubject</span><span class="br0">(</span>TEXT_MAILPREFIX <span class="sy0">+</span> caller<span class="br0">)</span><span class="sy0">;</span><br />
|
|
message.<span class="me1">setText</span><span class="br0">(</span>TEXT_MAILPREFIX <span class="sy0">+</span> caller <span class="sy0">+</span> <span class="st0">"<span class="es0">\n</span>"</span> <span class="sy0">+</span> time<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"sending message for call from "</span> <span class="sy0">+</span> caller <span class="sy0">+</span> <span class="st0">" at "</span> <span class="sy0">+</span> time<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
Transport transport <span class="sy0">=</span> session.<span class="me1">getTransport</span><span class="br0">(</span><span class="st0">"smtp"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
transport.<span class="me1">connect</span><span class="br0">(</span>host, from, pass<span class="br0">)</span><span class="sy0">;</span><br />
|
|
transport.<span class="me1">sendMessage</span><span class="br0">(</span>message, message.<span class="me1">getAllRecipients</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
transport.<span class="me1">close</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
@SuppressWarnings<span class="br0">(</span><span class="st0">"rawtypes"</span><span class="br0">)</span><br />
|
|
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">(</span><a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string"><span class="kw3">String</span></a><span class="br0">[</span><span class="br0">]</span> args<span class="br0">)</span> <span class="br0">{</span><br />
|
|
BasicConfigurator.<span class="me1">configure</span><span class="br0">(</span><span class="kw1">new</span> ConsoleAppender<span class="br0">(</span><span class="kw1">new</span> PatternLayout<span class="br0">(</span><span class="st0">"%d{ISO8601} - %m%n"</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"Starting CallerIdClient version 1.1.2"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
JSAP jsap <span class="sy0">=</span> <span class="kw1">new</span> JSAP<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">try</span> <span class="br0">{</span><br />
|
|
UnflaggedOption routerPassword <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"router password"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span><br />
|
|
.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
routerPassword.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"the login password for the Speedport W 723V (A) router"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>routerPassword<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
UnflaggedOption updateInterval <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"update interval"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">INTEGER_PARSER</span><span class="br0">)</span><br />
|
|
.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
updateInterval.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"the interval beetween runs in minutes"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>updateInterval<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
UnflaggedOption fromAddress <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"e-mail adress"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span>.<span class="me1">setRequired</span><span class="br0">(</span><br />
|
|
<span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
fromAddress.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"Google mail address to send from"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>fromAddress<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
UnflaggedOption emailPassword <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"e-mail password"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span><br />
|
|
.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
emailPassword.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"the login password for the Google account"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>emailPassword<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
UnflaggedOption recipients <span class="sy0">=</span> <span class="kw1">new</span> UnflaggedOption<span class="br0">(</span><span class="st0">"recipient"</span><span class="br0">)</span>.<span class="me1">setStringParser</span><span class="br0">(</span>JSAP.<span class="me1">STRING_PARSER</span><span class="br0">)</span>.<span class="me1">setRequired</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><br />
|
|
.<span class="me1">setGreedy</span><span class="br0">(</span><span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
recipients.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"e-mail addresses to send notifications to"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>recipients<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">Switch</span> contactsSwitch <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw1">Switch</span><span class="br0">(</span><span class="st0">"check contacts"</span><span class="br0">)</span>.<span class="me1">setLongFlag</span><span class="br0">(</span><span class="st0">"contacts"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
contactsSwitch.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"retrieve contacts from Google account and resolve caller names"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>contactsSwitch<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">Switch</span> debugSwitch <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw1">Switch</span><span class="br0">(</span><span class="st0">"debug"</span><span class="br0">)</span>.<span class="me1">setLongFlag</span><span class="br0">(</span><span class="st0">"debug"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
debugSwitch.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"print debug messages"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>debugSwitch<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">Switch</span> helpSwitch <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw1">Switch</span><span class="br0">(</span><span class="st0">"help"</span><span class="br0">)</span>.<span class="me1">setLongFlag</span><span class="br0">(</span><span class="st0">"help"</span><span class="br0">)</span>.<span class="me1">setShortFlag</span><span class="br0">(</span><span class="st0">'?'</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
helpSwitch.<span class="me1">setHelp</span><span class="br0">(</span><span class="st0">"print help and exit"</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
jsap.<span class="me1">registerParameter</span><span class="br0">(</span>helpSwitch<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="br0">}</span> <span class="kw1">catch</span> <span class="br0">(</span>JSAPException e<span class="br0">)</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">fatal</span><span class="br0">(</span>e.<span class="me1">getMessage</span><span class="br0">(</span><span class="br0">)</span>, e<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">exit</span><span class="br0">(</span><span class="sy0">-</span><span class="nu0">1001</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
JSAPResult config <span class="sy0">=</span> jsap.<span class="me1">parse</span><span class="br0">(</span>args<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">if</span> <span class="br0">(</span><span class="sy0">!</span>config.<span class="me1">success</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">||</span> config.<span class="me1">getBoolean</span><span class="br0">(</span><span class="st0">"help"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
<span class="kw1">for</span> <span class="br0">(</span>java.<span class="me1">util</span>.<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+iterator"><span class="kw3">Iterator</span></a> errs <span class="sy0">=</span> config.<span class="me1">getErrorMessageIterator</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> errs.<span class="me1">hasNext</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">"Error: "</span> <span class="sy0">+</span> errs.<span class="me1">next</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
log.<span class="me1">error</span><span class="br0">(</span><span class="st0">"Usage: java -jar speedportcallerid.jar "</span> <span class="sy0">+</span> jsap.<span class="me1">getUsage</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">+</span> <span class="st0">"<span class="es0">\n</span><span class="es0">\n</span>"</span> <span class="sy0">+</span> jsap.<span class="me1">getHelp</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<a href="http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+system"><span class="kw3">System</span></a>.<span class="me1">exit</span><span class="br0">(</span><span class="sy0">-</span><span class="nu0">1002</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<br />
|
|
<span class="kw1">if</span> <span class="br0">(</span>config.<span class="me1">getBoolean</span><span class="br0">(</span><span class="st0">"debug"</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">setLevel</span><span class="br0">(</span>Level.<span class="me1">DEBUG</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span><br />
|
|
log.<span class="me1">setLevel</span><span class="br0">(</span>Level.<span class="me1">INFO</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
log.<span class="me1">info</span><span class="br0">(</span><span class="st0">"Log level set to "</span> <span class="sy0">+</span> log.<span class="me1">getLevel</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span><br />
|
|
<br />
|
|
<span class="kw1">new</span> CallerIdClient<span class="br0">(</span>config<span class="br0">)</span><span class="sy0">;</span><br />
|
|
<span class="br0">}</span><br />
|
|
<span class="br0">}</span></div></div>
|
|
</div></div></div><div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
|
|
<thead><tr><th>Attachment</th><th>Size</th> </tr></thead>
|
|
<tbody>
|
|
<tr class="odd"><td><span class="file"><img class="file-icon" alt="File" title="application/java-archive" src="../../modules/file/icons/application-octet-stream.png" /> <a href="../../sites/siarp.de/files/speedportcallerid.jar" type="application/java-archive; length=3143313" title="speedportcallerid.jar">speedportcallerid.jar</a></span></td><td>3 MB</td> </tr>
|
|
</tbody>
|
|
</table>
|
|
</div></div></div> </div>
|
|
|
|
<div class="clearfix">
|
|
<div class="links"><ul class="links inline"><li class="comment_forbidden first last"></li>
|
|
</ul></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="region region-footer">
|
|
<div id="block-block-3" class="block block-block clearfix">
|
|
|
|
|
|
<div class="content">
|
|
<p>Alle Rechte liegen bei siarp.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
|
|
|
|
<div id="sidebar-second" class="sidebar">
|
|
<div class="region region-sidebar-second">
|
|
<div id="block-menu-menu-autoren" class="block block-menu clearfix">
|
|
|
|
<h2 class="title">Written by</h2>
|
|
|
|
<div class="content">
|
|
<ul class="menu"><li class="first leaf"><a href="../../blog/2/">Martin</a></li>
|
|
<li class="last leaf"><a href="../../blog/3/">Tilman</a></li>
|
|
</ul> </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div> <!-- /#container -->
|
|
</div> <!-- /#wrapper -->
|
|
</body>
|
|
|
|
<!-- Mirrored from siarp.de/node/232 by HTTrack Website Copier/3.x [XR&CO'2014], Sun, 08 Dec 2019 12:00:15 GMT -->
|
|
</html>
|