<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technology Blog &#187; modem</title>
	<atom:link href="http://ro.m-sec.net/tag/modem/feed/" rel="self" type="application/rss+xml" />
	<link>http://ro.m-sec.net</link>
	<description>Omul este cel mai extraordinar computer</description>
	<lastBuildDate>Sat, 18 Jul 2015 10:45:40 +0000</lastBuildDate>
	<language>ro-RO</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Oare am imbatranit?</title>
		<link>http://ro.m-sec.net/2011/12/oare-am-imbatranit/</link>
		<comments>http://ro.m-sec.net/2011/12/oare-am-imbatranit/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 20:31:36 +0000</pubDate>
		<dc:creator><![CDATA[Bogdan Alecu]]></dc:creator>
				<category><![CDATA[GSM]]></category>
		<category><![CDATA[Personale]]></category>
		<category><![CDATA[csd]]></category>
		<category><![CDATA[dial-up]]></category>
		<category><![CDATA[fax]]></category>
		<category><![CDATA[gsm]]></category>
		<category><![CDATA[modem]]></category>

		<guid isPermaLink="false">http://ro.m-sec.net/?p=132</guid>
		<description><![CDATA[Cine mai ţine minte conexiunea prin Dial-Up? Câţi ştiu măcar ce e aia? Era o vreme când nu deschideai PC-ul şi aveai instant Internet. Dacă nu cunoaşteţi sunetul de mai jos înseamnă că nu ştiţi decât eventual din auzite despre asta. Îmi amintesc când am avut pentru prima data acces la Internet acasă: contract proaspăt<a href="http://ro.m-sec.net/2011/12/oare-am-imbatranit/"> <br /><br /> (Read More...)</a>]]></description>
				<content:encoded><![CDATA[<p>Cine mai ţine minte conexiunea prin Dial-Up? Câţi ştiu măcar ce e aia? Era o vreme când nu deschideai PC-ul şi aveai instant Internet. Dacă nu cunoaşteţi sunetul de mai jos înseamnă că nu ştiţi decât eventual din auzite despre asta.<br />
<iframe src="https://www.youtube.com/embed/FG1AQcGGSec?rel=0" frameborder="0" width="560" height="315"></iframe></p>
<p>Îmi amintesc când am avut pentru prima data acces la Internet acasă: contract proaspăt semnat pentru acces prin dial-up, în care traficul se măsura în minute (da, aveam voie doar x ore pe săptămână conform contractului, ce era peste se plătea suplimentar). Ştiu că m-am chinuit vreo 2 zile să-l fac să meargă şi când am reuşit săream prin casă. Ei bine, acum aveam net, eram conectat cu toată lumea şi totuşi&#8230;cu nimeni. Habar nu aveam că există un motor de căutare (imaginaţi-vă cum ar fi să căutaţi despre ceva anume dar fără să existe ceva care să vă facă căutarea) dar luam din revista <a title="Revista Chip" href="http://www.chip.ro" target="_blank">Chip </a>diferite adrese pe care le publicau spre finalul revistei. Ore întregi pierdute, mai ales după descoperirea IRC-ului, nopţi întregi nedormite pentru a descărca o melodie, facturi imense la telefon, mii de încercări de conectare după ce apăruse Xnet-ul&#8230;</p>
<p>Tot la un moment dat citisem prin Chip despre viteze de 256 kbs (nu mai ştiu exact ce şi cum, dar am reţinut valoarea asta) ce erau oferite în Bucureşti de nu ştiu ce companie. În ziua aia sunasem deja la ei şi mă interesam cum pot face să am viteza asta. Când au auzit că nu sunt din Bucureşti, mi-au tăiat-o scurt că nu se poate.</p>
<p>Vremuri bune pot spune, cu multe amintiri dar şi multe lucruri învăţate &#8211; cine ştia să configureze corect o conexiune la Internet era şef <img src="http://ro.m-sec.net/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Ei bine, de câteva zile vreau să mă conectez tot prin dial-up (da, încă mai există) însă cum nu am o linie telefonică, vreau să folosesc reţeaua mobilă prin intermediul modemului din telefon. Din păcate <strong>TOŢI</strong> operatorii au dezactivat acest tip de conectare denumit data call (apel de date). Tot din păcate operatorii de la serviciul clienţi habar nu au ce e ăla de am impresia că au vreo 14 ani.</p>
<p>Prima încercare a fost la Cosmote:</p>
<blockquote><p>&#8211; Bună ziua, vreau să-mi activaţi serviciul de apel de date</p>
<p>&#8211; Păi dumneavoastră aveţi deja serviciul web&#8217;n&#8217;oac activ. Vreţi să folosiţi telefonul pe post de modem?</p>
<p>&#8211; Da! (<em>în sfărşit credeam că a înţeles ce vreau</em>)</p>
<p>&#8211; Acest lucru nu e posibil cu serviciul oac (<em>era să-i spun &#8222;fugi de aici&#8221; dar m-am abţinut</em>)</p>
<p>&#8211; Nu m-aţi înţeles, eu vreau să mă conectez prin dial-up la o reţea folosind modemul din telefon, deci am nevoie de apel de date</p>
<p>&#8211; Îmi pare rău, aşa ceva nu există în oferta noastră</p>
<p>&#8211; Deci nu aveţi apel de date?</p>
<p>&#8211; Nu, nu vă putem activa ceva ce nu există</p></blockquote>
<p>O altă încercare la Vodafone:</p>
<blockquote><p>&#8211; Bună ziua, vreau să-mi activaţi serviciul de apel de date</p>
<p>&#8211; Vreţi o opţiune de Internet? (<em>ce întreb eu şi ce crede că vreau</em>)</p>
<p>&#8211; Nu, vreau să mă conectez prin dial-up de pe PC la o altă reţea, eventual serviciu de Internet, prin reţeaua Vodafone</p>
<p>&#8211; Am înţeles. Păi trebuie să configuraţi modemul şi configurările depind de tipul de telefon &#8230; (<em>aici am întrerupt-o că tot nu înţelesese</em>)</p>
<p>&#8211; Nu doamnă, vreau să mă conectez ca înainte, când foloseam linia telefonică şi un modem şi mă conectam la Xnet, vechiul serviciu. Sau să trimit un fax de exemplu că e acelaşi lucru</p>
<p>&#8211; De ce aţi vrea să faceţi asta? (<em>aici m-a lăsat puţin în tăcere, nu credeam că mă va întreba asta</em>). Iar pentru fax este servicul de email to fax oferit de noi</p>
<p>&#8211; Nu contează de ce vreau să fac asta, pur şi simplu vreau să mă conectez prin dial-up</p>
<p>&#8211; Îmi pare rău dar acest serviciu este disponibil doar pentru abonament, se numeşte Mobile Internet şi aveţi incluşi X MB. (<em>bineînţeles că e o aberaţie ce mi-a spus şi nu are treaba traficul oferit de ei</em>)</p>
<p>&#8211; Bine, deci nu se poate activa?</p>
<p>&#8211; Nu</p>
<p>&#8211; Mulţumesc, o zi bună!</p></blockquote>
<p>A3a încercare şi ultima e la Orange. Nu sunt misogin, dar mă rugam să îmi răspundă un bărbat. De fiecare dată când am avut o problemă pe partea de date, de fiecare dată când am dat peste o domnişoară &#8211; doamnă nu m-a putut ajuta.</p>
<p>&#8211; Bună ziua, vreau să-mi activaţi serviciul de apel de date (de data asta mi-a răspuns un tip)</p>
<p>&#8211; Vă referiţi la trafic de Internet?</p>
<p>&#8211; Nu, mă refer la conectare prin dial-up folosind modem-ul din telefon. Vreau să mă conectez la o altă reţea prin <a title="CSD" href="https://en.wikipedia.org/wiki/Circuit_Switched_Data" target="_blank">CSD</a>. E aproape la fel cu trimiterea unui fax</p>
<p>&#8211; Pentru fax trebuie să activăm noi o opţiune suplimentară ce vă adaugă un număr special de fax pe cartelă şi puteţi trimite &#8211; primi faxuri. Ce telefon aveţi?</p>
<p>&#8211; Nokia, model mai vechi. Oricum vă spun sigur că are modem şi ştiu să fac configurările necesare</p>
<p>&#8211; Am înţeles. În acest caz nu ar trebui să fie nicio problemă, vă puteţi conecta. (<em>acum dă bomba</em>) Dacă aveţi trafic inclus vi se va scădea din trafic, altfel vi se ia din credit. (<em>poftim??? ce treabă are traficul Internet prin reţeaua Orange cu dial-up??? ca să fiu sigur îl mai întreb</em>)</p>
<p>&#8211; Eu nu mă refer la GPRS, ci CSD, fac o conexiune de date. În loc să folosesc linia Romtelecom, folosesc ca şi suport reţeaua mobilă. Dumneavoastră spuneţi că indiferent la ce reţea &#8211; număr mă conectez, dacă am trafic de date inclus mi se va lua din trafic?</p>
<p>&#8211; Da, aşa este. (<em>am ramas paf</em>!)</p>
<p>&#8211; Bine atunci, vă mulţumesc. (<em>era să-i zic şi &#8222;săru&#8217; mâna&#8221; la final</em>)</p>
<p>Oare chiar nimeni nu mai ştie că înainte a existat şi dial-up? Cel mai aproape de adevăr s-a apropiat consultantul Orange, însă tot degeaba. Adevărul e acela că pentru a transmite un fax sau a efectua o conexiune dial-up prin reţeaua mobilă, teoretic trebuie dezactivată compresia făcută de reţea, de codec-ul folosit de reţea. Teoretic, însă practic este posibil &#8211; va merge puţin mai greu, vor exista pierderi de pachete, întreruperea conexiunii, dar merge. Pentru a testa acest lucru am folosit o cartelă de la un operator din afară şi m-am înregistrat pe rând în fiecare reţea. De fiecare dată m-am putut conecta şi folosi apelul de date. Aşadar limitarea nu este de la reţea ci de la SIM. De ce fac operatorii noştri o asemenea setare nu am putut înţelege.</p>
<p><em>Oare chiar am îmbătrânit?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://ro.m-sec.net/2011/12/oare-am-imbatranit/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Alerte SMS din Sharepoint 2010</title>
		<link>http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/</link>
		<comments>http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 01:09:36 +0000</pubDate>
		<dc:creator><![CDATA[Bogdan Alecu]]></dc:creator>
				<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[alerte]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gsm]]></category>
		<category><![CDATA[handler]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[sharepoint 2010]]></category>
		<category><![CDATA[sms]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://ro.m-sec.net/?p=14</guid>
		<description><![CDATA[Inspirat fiind de ceea ce scria Valy în această postare  m-am gândit că n-ar fi rău să încerc implementarea de alerte prin SMS oferită de Sharepoint 2010. Totuşi, deşi Microsoft a decis să folosească un format proprietar pentru alertarea prin SMS, denumit OMS (Office Mobile Service Protocol), am început să caut vreo modalitate de a<a href="http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/"> <br /><br /> (Read More...)</a>]]></description>
				<content:encoded><![CDATA[<p>Inspirat fiind de ceea ce scria Valy în <a title="Sharepoint migrare" href="http://valygreavu.com/2011/10/12/sharepoint-migrare-la-2010" target="_blank">această postare</a>  m-am gândit că n-ar fi rău să încerc implementarea de alerte prin SMS oferită de Sharepoint 2010. Totuşi, deşi Microsoft a decis să folosească un format proprietar pentru alertarea prin SMS, denumit OMS (<a title="OMS KB" href="http://msdn.microsoft.com/en-us/library/dd774103(v=office.12).aspx" target="_blank">Office Mobile Service Protocol</a>), am început să caut vreo modalitate de a intercepta alerta <strong>înainte</strong> de a fi trimisă.</p>
<p>Nu mi-a luat prea mult să găsesc modalitatea în care pot face acest lucru, deşi ceea ce am găsit <span style="text-decoration: line-through;">nu m-a ajutat prea mult</span> se referea la alertele prin email, aşa că am început să-mi instalez maşina virtuală. Din păcate nu am avut mare success întrucât, odată instalat totul, dura aproximativ 7 minute să dau un click <img src="http://ro.m-sec.net/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> L-am rugat pe Valy dacă mă poate ajuta cu ceva resurse şi, după cum citiţi, a fost de acord – Valy, dau o bere.</p>
<p>Aşadar, înarmat cu tutorialul găsit pe <a title="Tutorial MS" href="http://support.microsoft.com/kb/948321" target="_blank">KB Microsoft</a> am început treaba. La început ideea a stat în felul următor: implementez captarea alertelor prin e-mail, după care folosesc codul rezultat la alertele prin SMS. Din păcate această abordare a fost total greşită, dându-mi seama târziu că acest lucru nu este posibil. <a title="Implementare Handler" href="http://msdn.microsoft.com/en-us/library/bb897791.aspx" target="_blank">Aici</a>  spune clar că nu este posibilă interceptarea alertelor de tip SMS din handler, dar dacă vrem totuşi să folosim alt protocol decât OMS, va trebui să implementăm propriul <a title="Serviciu web alerte" href="http://msdn.microsoft.com/en-us/library/ee537514.aspx" target="_blank">serviciu web</a> ce se interpune între OMS şi alt protocol. Lucrurile sunt destul de triste şi, aşa cum am mai spus, nu înţeleg abordarea Microsft cu aceste cazuri speciale. Am ales aşadar o altă soluţie: mă voi folosi de alertele prin email, iar userii care doresc să primească şi SMS (lucru ce poate fi aflat printr-un Survey de exemplu) vor primi mesaje text dar şi email în acelaşi timp pentru zonele dorite.</p>
<p>Iată modul de implementare:</p>
<ol>
<li>Utilizatorul optează pentru recepţionarea de mesaje prin SMS</li>
<li>Utilizatorul îşi modifică setările personale (My Settings) definindu-şi un număr de telefon mobil, după care alege alertele prin email pe care le doreşte</li>
<li>Handler-ul creează alerta pentru email şi o altă alertă cu un conţinut mai sumar, fără cod HTML, ce va fi trimis la o adresă suplimentară. Totodată aici se preia numărul de telefon mobil anterior definit şi se pune în subiectul mesajului adiţional pentru putea trimite mai uşor SMS-ul</li>
<li>Adresa de email este monitorizată constant, automat, şi în momentul primirii mesajului există un alt soft ce expediază SMS la numărul pus în subiect, având conţinutul din corpul (body) mesajului. Înainte de trimiterea mesajului se verifică dacă utilizatorul a optat pentru SMS, prin asocierea numărului de telefon cu opţiunea din survey.</li>
<li>Utilizatorul primeşte alerta pe telefonul mobil</li>
</ol>
<p>&nbsp;</p>
<p>Abordarea expusă este buna? Este rea? Ca întotdeauna răspunsul este “depinde”. Câteva aspecte de luat în calcul:</p>
<p>a)      Se renunţă într-adevăr la opţiunea de alertare prin SMS a Sharepoint, ceea ce presupune ceva parte de programare</p>
<p>b)      Totuşi sunt puţini provideri de SMS care suportă protocolul OMS</p>
<p>c)      În medie costul unui SMS este de 5-6 eurocenti către Europa, iar dacă din nefericire am vreo 2000 useri fiecare primind câte 10 alerte pe zi, ajung la un cost de 1000 EUR în fiecare zi</p>
<p>d)      Folosind un provider online pot seta expeditorul, astfel încât de exemplu pot primi mesaj de la PortalFEAA, ceea ce pe modem nu pot face</p>
<p>e)      Folosind handler personalizat am control mai bun a ceea ce se trimite</p>
<p>f)        Nu e nevoie să folosesc un provider online, ci pot folosi la fel de bine 1-2-3 modem-uri GSM ataşate la server. Astfel pot lua un pachet cu SMS-uri nelimitate în reţea şi să mă folosesc de ele, reducând din costuri</p>
<p>g)      Timpul mediu necesar expedierii unui SMS prin modem este undeva pe la 10 secunde, astfel încât la un flux mare de alerte este foarte posibil ca anumiţi utilizatori să primească abia a2a zi mesajul</p>
<p>h)      Având control total, pot expedia mesaje de tip <a title="WAP push" href="http://en.wikipedia.org/wiki/Wireless_Application_Protocol" target="_blank">WAP Push</a> astfel încât daca s-a modificat un document spre exemplu, atunci prin acest mesaj utilizatorul poate deschide automat locaţia documentului. Acest lucru este util mai ales la telefoanele care nu stiu sa interpreteze o adresa web ca fiind hyperlink (vezi demo la final)</p>
<p>&nbsp;</p>
<p>Să trecem acum la implementare&#8230;</p>
<p>Mai întâi am instalat Visual Studio 2010 alături de componentele de Sharepoint (SDK) – treaba se desfăşoară la modul Next, Next, Finish – după care…</p>
<p>&nbsp;</p>
<p>1. Documentaţia spune că trebuie creeat un handler propriu care moşteneşte interfaţa IAlertNotificationHandler, apoi fiind oferit codul. Mda, chestii puţin mai complicate aşa că încerc să-mi amintesc de lucrurile facute în facultate. Pas cu pas, pentru a avea codul funcţional lucrurile stau cam aşa…</p>
<p> a) deschideţi Visual Studio 2010, alegând ca şi interfaţă de dezvoltare Visual C#. Alegeţi File – New – Project, din fereastra nouă selectăm Class Library</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/1-viclass.png"><img class="alignnone size-medium wp-image-16" title="1-viclass" src="http://ro.m-sec.net/wp-content/uploads/2011/11/1-viclass-300x99.png" alt="Visual Studio Class" width="300" height="99" /></a></p>
<p>b) Faceţi Copy-Paste la codul de mai jos. Dacă încercaţi să luaţi codul <strong><span style="text-decoration: underline;">oficial</span></strong>, veţi beneficia de o frumoasa eroare: variabila eventType nu e declarata nicăieri (thanks MS). <strong>Nu uitaţi să modificaţi a2a adresă de email la care se trimite mesajul special construit pentru SMS-uri</strong>.</p>
<p>&nbsp;</p>
<blockquote><p>using System;</p>
<p>using System.Collections.Generic;</p>
<p>using System.Linq;</p>
<p>using System.Text;</p>
<p>using Microsoft.SharePoint;</p>
<p>using Microsoft.SharePoint.Utilities;</p>
<p>using System.Web;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>namespace ClassLibrary1</p>
<p>{</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>    public class Class1 : IAlertNotifyHandler</p>
<p>    {</p>
<p>        #region IAlertNotifyHandler Members</p>
<p>&nbsp;</p>
<p>        public bool OnNotification(SPAlertHandlerParams ahp)</p>
<p>        {</p>
<p>            SPSite site = null;</p>
<p>            SPWeb web = null;</p>
<p>&nbsp;</p>
<p>            try</p>
<p>            {</p>
<p>                site = new SPSite(ahp.siteUrl + ahp.webUrl);</p>
<p>                web = site.OpenWeb();</p>
<p>                SPList list = web.Lists[ahp.a.ListID];</p>
<p>                SPListItem item = list.GetItemById(ahp.eventData[0].itemId);</p>
<p>&nbsp;</p>
<p>                string FullPath = HttpUtility.UrlPathEncode(ahp.siteUrl + &#8222;/&#8221; + ahp.webUrl + &#8222;/&#8221; + list.Title + &#8222;/&#8221; + item.Name);</p>
<p>                string ListPath = HttpUtility.UrlPathEncode(ahp.siteUrl + &#8222;/&#8221; + ahp.webUrl + &#8222;/&#8221; + list.Title);</p>
<p>                string webPath = HttpUtility.UrlPathEncode(ahp.siteUrl + &#8222;/&#8221; + ahp.webUrl);</p>
<p>                string eventType = &#8222;&#8221;;</p>
<p>                string build = &#8222;&#8221;;</p>
<p>                string buildsms = &#8222;&#8221;;</p>
<p>                if (ahp.eventData[0].eventType == 1)</p>
<p>                    eventType = &#8222;Adaugat&#8221;;</p>
<p>                else if (ahp.eventData[0].eventType == 2)</p>
<p>                    eventType = &#8222;Modificat&#8221;;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>                build = &#8222;&lt;style type=\&#8221;text/css\&#8221;&gt;.style1 { font-size: small; border: 1px solid #000000;&#8221; +</p>
<p>                &#8222;background-color: #DEE7FE;}.style2 { border: 1px solid #000000;}&lt;/style&gt;&lt;/head&gt;&#8221; +</p>
<p>                &#8222;&lt;p&gt;&lt;strong&gt;&#8221; + item.Name.ToString() + &#8222;&lt;/strong&gt; a fost &#8221; + eventType + &#8222;&lt;/p&gt;&#8221; +</p>
<p>                &#8222;&lt;table style=\&#8221;width: 100%\&#8221; class=\&#8221;style2\&#8221;&gt;&lt;tr&gt;&lt;td style=\&#8221;width: 25%\&#8221; class=\&#8221;style1\&#8221;&gt;&#8221; +</p>
<p>                &#8222;&lt;a href=&#8221; + webPath + &#8222;/_layouts/mysubs.aspx&gt;Modifica setarile&lt;/a&gt;&lt;/td&gt;&#8221; +</p>
<p>                &#8222;&lt;td style=\&#8221;width: 25%\&#8221; class=\&#8221;style1\&#8221;&gt; &lt;a href=&#8221; + FullPath + &#8222;&gt;Vezi &#8221; + item.Name + &#8222;&lt;/a&gt;&lt;/td&gt;&#8221; +</p>
<p>                &#8222;&lt;td style=\&#8221;width: 25%\&#8221; class=\&#8221;style1\&#8221;&gt;&lt;a href=&#8221; + ListPath + &#8222;&gt;Vezi &#8221; + list.Title + &#8222;&lt;/a&gt;&lt;/td&gt;&#8221; +</p>
<p>                &#8221; &lt;/tr&gt;&lt;/table&gt;&#8221;;</p>
<p>&nbsp;</p>
<p>                // iau userul si informatiile</p>
<p>                SPUser user = web.AllUsers.GetByID(ahp.a.UserId);</p>
<p>                SPListItem userInfo = user.ParentWeb.SiteUserInfoList.GetItemById(user.ID);</p>
<p>&nbsp;</p>
<p>                //subiectul pentru email</p>
<p>                string subject = list.Title.ToString();</p>
<p>                SPUtility.SendEmail(web, true, false, ahp.headers[&#8222;to&#8221;].ToString(), subject, build);</p>
<p>&nbsp;</p>
<p>                //subiectul pentru SMS &#8211; iau nr de tel mobil si construiesc un continut mai scurt</p>
<p>                string smssubject = userInfo[&#8222;MobilePhone&#8221;].ToString();</p>
<p>                buildsms = item.Name.ToString() + &#8221; a fost &#8221; + eventType + &#8221; &#8211; Vezi continutul: &#8221; + FullPath;</p>
<p>                SPUtility.SendEmail(web, true, false, &#8222;alert.sms@feaa.uaic.ro&#8221;, smssubject, buildsms);</p>
<p>                return false;</p>
<p>            }</p>
<p>            catch (System.Exception ex)</p>
<p>            {</p>
<p>                return false;</p>
<p>            }</p>
<p>            finally</p>
<p>            {</p>
<p>                if (web != null)</p>
<p>                    web.Dispose();</p>
<p>                if (site != null)</p>
<p>                    site.Dispose();</p>
<p>            }</p>
<p>&nbsp;</p>
<p>        }</p>
<p>&nbsp;</p>
<p>        #endregion</p>
<p>    }</p>
<p>    //===================code end=====================</p>
<p>&nbsp;</p>
<p>}</p></blockquote>
<p>&nbsp;</p>
<p>c)  Adăugarea de referinţe în proiect: se dă + pe References, selectăm directorul References, click dreapta, Add reference. Referinţa pentru Sharepoint se găseşte în locaţia “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\” de unde selectăm Microsoft.SharePoint.dll. Alte referinţe, în cazul în care aveţi erori, le alegeţi din tab-ul .NET</p>
<p> <a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/2-ref1.png"><img class="alignnone size-full wp-image-17" title="2-ref1" src="http://ro.m-sec.net/wp-content/uploads/2011/11/2-ref1.png" alt="Visual Studio Reference1" width="273" height="157" /></a>  <a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/3-ref2.png"><img class="alignnone size-medium wp-image-18" title="3-ref2" src="http://ro.m-sec.net/wp-content/uploads/2011/11/3-ref2-300x246.png" alt="Visual Studio Reference2" width="300" height="246" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>d)      Dacă nu aveţi erori, codul este perfect. Un alt lucru care nu este spus prin documentaţie este acela că cel mai probabil IIS-ul se bazează pe o versiune mai veche de .NET Framework, astfel încât va trebui să specificăm acest fapt în proiectul C#. Pentru asta click dreapta pe numele de namespace din Solution Explorer, Properties. În noul tab se merge la Application, Target Framework unde selectăm .NET Framework 3.5</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/4-prjprop.png"><img class="alignnone size-medium wp-image-20" title="Visual Studio Project Properties" src="http://ro.m-sec.net/wp-content/uploads/2011/11/4-prjprop-256x300.png" alt="" width="256" height="300" /></a></p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/5-applfrwrk.png"><img class="alignnone size-medium wp-image-21" title="Visual Studio Project .NET Framework" src="http://ro.m-sec.net/wp-content/uploads/2011/11/5-applfrwrk-300x196.png" alt="" width="300" height="196" /></a></p>
<p>2.Codul are ca şi rezultat un fişier .dll, fişier ce trebuie să fie „strongly signed” după care se adaugă în Global Assembly Cache (GAC). Cu alte cuvinte, fişierul trebuie semnat pentru a ne asigura că este unic, după care trebuie adăugat în cache-ul .NET pentru ca Sharepoint-ul să ştie de unde să-l ia.<br />
Pentru a semna dll-ul, în proiectul C# deschidem din nou proprietăţile cum am făcut mai sus, iar de această dată alegem Signing. Se bifează “Sign the assembly”,  iar din drop-down click pe New. În noua fereastră alegem un nume, dar nu bifăm “Protect my key file with a password”.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img5-1.png"><img class="alignnone size-medium wp-image-22" title="Visual Studio Signing" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img5-1-300x241.png" alt="" width="300" height="241" /></a>   <a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img6.png"><img class="alignnone size-medium wp-image-23" title="Visual Studio Sign Key" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img6-300x185.png" alt="" width="300" height="185" /></a></p>
<p>Acum suntem siguri că fişierul rezultat e semnat. Pentru a obţine dll-ul, din Build alegem Build Solution, rezultatul aflându-se în folder-ul Bin\Debug din locaţia unde aveţi proiectul pe disc.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img7.png"><img class="alignnone size-full wp-image-24" title="Visual Studio Build Solution" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img7.png" alt="" width="261" height="203" /></a></p>
<p>Adăgarea în GAC are mai multe metode şi nu se face din Visual Studio Command Prompt sau din locaţia .NET 4.0 ca <a title="GAC Info" href="http://msdn.microsoft.com/en-us/library/dkkx7f79(v=VS.100).aspx" target="_blank">aici</a>  ci folosind utilitarul „gacutil” din „C:\program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin. Comanda este „gacutil –i &lt;cale catre fisier dll&gt;”.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img8.png"><img class="alignnone size-medium wp-image-25" title="GACutil" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img8-300x148.png" alt="" width="300" height="148" /></a></p>
<p>Pentru a fi siguri că într-adevăr a ajuns în GAC, din Start &#8211; Run accesăm C:\Windows\assembly unde ar trebui să existe numele fişierului.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img9.png"><img class="alignnone size-medium wp-image-26" title="GAC Assembly" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img9-300x225.png" alt="" width="300" height="225" /></a></p>
<p>Dacă totul a decurs bine până aici, acum vine partea mai uşoară. Sharepoint 2010 ţine template-urile pentru alerte în folderul “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Xml”. Aici sunt 2 fişiere XML: alerttemplates.xml pentru alerte prin email, alerttemplates_sms.xml pentru SMS.</p>
<p>3. Faceţi o copie a alerttemplates.xml şi denumiţi-o altfel (eu am folosit CaAlertTemplates.xml). Deschideţi fişierul şi căutaţi tipul de alertă ce vreţi să folosească dll-ul propriu. Tipul de alertă este specificat în tag-ul AlertTemplate. De exemplu pentru Document Library ar fi  &lt;AlertTemplate Type=&#8221;List&#8221; Name=&#8221;SPListTemplateType.DocumentLibrary&#8221;&gt;. În zona de Properties vor trebui adăugate următoarele rânduri:</p>
<blockquote><p> &lt;NotificationHandlerAssembly&gt;ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d59ecf2a3bd66904&lt;/NotificationHandlerAssembly&gt;<br />
&lt;NotificationHandlerClassName&gt;ClassLibrary1.Class1&lt;/NotificationHandlerClassName&gt;<br />
&lt;NotificationHandlerProperties&gt;&lt;/NotificationHandlerProperties&gt;</p></blockquote>
<p>&nbsp;</p>
<p><strong><span style="text-decoration: underline;">Foarte important</span></strong>:</p>
<p>a)      <em>ClassLibrary1</em> este numele atribuit pentru namespace din proiectul C#<br />
b)      <em>Class1</em> este numele clasei din proiect şi va trebui trecut sub forma namespce.clasa<br />
c)      <em>PublicKeyToken</em> e codul unic dat de semnătura dll. Cel mai uşor îl puteţi afla prin vizualizarea proprietăţilor noului fişier din C:\Windows\assembl (img9)</p>
<p>Codul final pentru Properties ar trebui să arate aproximativ astfel:</p>
<blockquote><p>&lt;ImmediateNotificationExcludedFields&gt;ID;Author;Editor;Modified_x0020_By;Created_x0020_By;_UIVersionString;ContentType;TaskGroup;IsCurrent;Attachments;NumComments;&lt;/ImmediateNotificationExcludedFields&gt;            &lt;DigestNotificationExcludedFields&gt;ID;Author;Editor;Modified_x0020_By;Created_x0020_By;_UIVersionString;ContentType;TaskGroup;IsCurrent;Attachments;NumComments;&lt;/DigestNotificationExcludedFields&gt;<br />
&lt;NotificationHandlerAssembly&gt;ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d59ecf2a3bd66904&lt;/NotificationHandlerAssembly&gt;<br />
&lt;NotificationHandlerClassName&gt;ClassLibrary1.Class1&lt;/NotificationHandlerClassName&gt;<br />
&lt;NotificationHandlerProperties&gt;&lt;/NotificationHandlerProperties&gt;</p></blockquote>
<p>&nbsp;</p>
<p>Salvaţi XML-ul şi asiguraţi-vă că se află în folderul “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Xml”.</p>
<p>4. Pentru a folosi template-ul personalizat, din “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Bin” se lansează comanda:</p>
<blockquote><p>stsadm -o updatealerttemplates -filename &#8222;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\XML\nume_fisier_template.xml&#8221; -url adresa_site</p></blockquote>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img10.png"><img class="alignnone size-medium wp-image-27" title="Stsadm command" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img10-300x148.png" alt="" width="300" height="148" /></a></p>
<p>Întrucat la o instalare implicită timpul de trimitere al alertelor imediate este de 5 minute, vom modifica valoare la 1 minut:</p>
<blockquote><p>stsadm -o setproperty -pn job-immediate-alerts -pv &#8222;every 1 minutes&#8221;</p></blockquote>
<p>5. Au mai rămas doar câţiva paşi: rulăm <strong>iisreset</strong>, restart la serviciul Sharepoint Timer Service.</p>
<p>Dacă schimbaţi ceva în cod, atunci trebuie pus iar în GAC, iisreset si restart la Sharepoint Timer.</p>
<p>După cum observaţi din cod, am construit un email personalizat pentru alerta de tip SMS, în care am pus ca subiect numărul de telefon din profilul personal al utilizatorului, iar în conţinut faptul că fişierul x a fost modificat-adăugat şi adresa unde se află. Ceea ce a mai rămas de făcut este să avem o aplicaţie ce monitorizează permanent căsuţa respectivă de email, preia conţinutul şi-l trimite la un SMS gateway. O soluţie gratuită pentru SMS gateway (pe Linux ce-i drept) este <a title="Kannel" href="http://www.kannel.org/" target="_blank">Kannel</a>  şi cu ceva cătări pe net găsiţi implementat cod care face trimiterea de mesaje email-to-SMS. Eu am folosit pentru Windows produsul <a title="Ozeki NG software" href="http://www.ozekisms.com" target="_blank">Ozeki NG</a>  ce ştie deja de email to SMS. La oricare dintre aceste produse se poate ataşa atât un modem fizic cât şi configura o conexiune via SMPP/HTTP. Informaţii despre modul de configurare găsiţi <a title="Ozeki SMS to Email" href="http://www.ozekisms.com/index.php?owpn=226" target="_blank">aici</a>, iar lucrurile funcţionează cam aşa</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/ozeking-email.png"><img class="alignnone size-medium wp-image-29" title="Ozeking Email2SMS" src="http://ro.m-sec.net/wp-content/uploads/2011/11/ozeking-email-300x113.png" alt="" width="300" height="113" /></a></p>
<p>Acum aveţi un sistem funcţional de alertare prin SMS al Sharepoint, folosind alertarea prin email. Sper să folosească cuiva cele expuse aici sau, dacă există îmbunătăţiri, să le expună aici.</p>
<p>&nbsp;</p>
<p>Vedere generala a modului de dezvoltare</p>
<p><iframe src="http://player.vimeo.com/video/31347226?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="265"></iframe></p>
<p>Demo funcţionare alerte (email)</p>
<p><iframe src="http://player.vimeo.com/video/31346564?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="160"></iframe></p>
<p>Demo funcţionare alerte (SMS)</p>
<p><iframe src="http://player.vimeo.com/video/31347404?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="225"></iframe></p>
<p>Primire mesaj WAP Push pe telefon</p>
<p><iframe src="http://player.vimeo.com/video/31347541?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="707"></iframe></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
