24 apr 2013

Patton 4120: Configurazione con FreePBX

Dato che abbiamo impiegato diverso tempo a configurarlo per bene, posto la nostra configurazione funzionante.

Nel nostro caso il Patton risponde su uno solo dei due numeri a nostra disposizione (evidenziato in giallo)

Se volete che risponda su tutte le linee in ingresso sostituite il numero con T2

#----------------------------------------------------------------#
# #
# SN4120/1BIS2V #
# R6.3 2013-03-07 H323 SIP #
# 1970-01-02T18:44:50 #
#----------------------------------------------------------------#

cli version 3.20
clock local default-offset +00:00
webserver port 80 language en
sntp-client
sntp-client server primary pool.ntp.org port 123 version 4

system

ic voice 0
low-bitrate-codec g729

system
clock-source 1 bri 0 0

profile ppp default

profile call-progress-tone defaultDialtone
play 1 1000 425 -6

profile call-progress-tone defaultAlertingtone
play 1 1000 425 -13
pause 2 4000

profile call-progress-tone defaultBusytone
play 1 300 425 -7
pause 2 200

profile call-progress-tone defaultReleasetone
play 1 300 425 -7
pause 2 400

profile call-progress-tone defaultCongestiontone
play 1 300 425 -7
pause 2 400

profile tone-set default

profile voip default
codec 1 g711alaw64k rx-length 20 tx-length 20
codec 2 g711ulaw64k rx-length 20 tx-length 20
codec 3 g729 rx-length 20 tx-length 20
fax transmission 1 relay t38-udp

profile pstn default

profile sip default
no autonomous-transitioning

profile aaa default
method 1 local
method 2 none

context ip router

interface IF_IP_LAN
ipaddress 10.0.0.150 255.255.255.0
tcp adjust-mss rx mtu
tcp adjust-mss tx mtu

context cs switch
national-prefix 0
international-prefix 00

routing-table called-e164 RT_ISDN_TO_SIP_0
route 0331XXXXXX dest-interface IF_SIP_0 MAPPING_INCOMING_CALLS

routing-table called-e164 RT_SIP_TO_ISDN_0
route default dest-interface IF_ISDN_0 CLIP_DISABLED

mapping-table calling-pi to calling-e164 MAP_REMOVE_BLANK_CALLERID
map restricted to ""

mapping-table calling-e164 to calling-e164 MAP_LEADING_ZERO
map (.%)-(.%)-(.%)-(.%)-(.%) to \1\2\3\4\5
map (.%)-(.%)-(.%)-(.%) to \1\2\3\4
map (.%)-(.%)-(.%) to \1\2\3
map (.%)-(.%) to \1\2

mapping-table calling-e164 to calling-name MAP_CID_TO_CNAME
map (.%) to \1

mapping-table calling-e164 to calling-e164 CALLINGE164
map 0(.%) to \1

mapping-table calling-type-of-number to calling-type-of-number CALLINGNUMBERTYPE
map default to national

mapping-table calling-numbering-plan to calling-numbering-plan CALLINGNUMBERPLAN
map default to isdn-telephony

mapping-table calling-uri to calling-pi CALLINGPIRESTRICTED
map sip:anonymous@.% to restricted

complex-function MAPPING_INCOMING_CALLS
execute 1 MAP_REMOVE_BLANK_CALLERID
execute 2 MAP_LEADING_ZERO

complex-function CLIP_ENABLED
execute 1 CALLINGNUMBERPLAN
execute 2 CALLINGE164
execute 3 CALLINGNUMBERTYPE
execute 4 CALLINGPIRESTRICTED

complex-function CLIP_DISABLED
execute 1 CALLINGPIRESTRICTED

interface isdn IF_ISDN_0
route call dest-table RT_ISDN_TO_SIP_0
call-hold disable
caller-name
user-side-ringback-tone

interface sip IF_SIP_0
bind context sip-gateway GW_SIP_0
route call dest-table RT_SIP_TO_ISDN_0
remote 10.0.0.43 5060
early-connect
early-disconnect
address-translation outgoing-call request-uri user-part fix 10000 host-part to-header target-param none
trust remote

context cs switch
no shutdown

authentication-service AS_ALL_LINES
realm 1 3CXPhoneSystem
username 10000 password Z7wh1f7Ii0qJzcJxEhGKUw== encrypted

location-service LS_10000
domain 1 10.0.0.43

identity-group default

authentication outbound
authenticate 1 authentication-service AS_ALL_LINES username 10000

identity 10000

authentication outbound
authenticate 1 authentication-service AS_ALL_LINES

registration outbound
registrar 10.0.0.43 5060
lifetime 300
register auto

context sip-gateway GW_SIP_0

interface LAN
bind interface IF_IP_LAN context router port 5060

context sip-gateway GW_SIP_0
bind location-service LS_10000
no shutdown

port ethernet 0 0
medium 10 half
encapsulation ip
bind interface IF_IP_LAN router
no shutdown

port bri 0 0
clock auto
encapsulation q921

q921
protocol pp
uni-side auto
encapsulation q931

q931
protocol dss1
uni-side user
bchan-number-order ascending
encapsulation cc-isdn
bind interface IF_ISDN_0 switch

port bri 0 0
no shutdown


Ecco il TRUNK lato FreePBX


allow=g729

qualify=yes


type=friend


port=5060


username=10000


fromuser=10000


secret=2hbzl36


host=dynamic


defaultip=10.0.0.150


context=from-pstn

21 mar 2013

Il caso di Userenv, Event ID:1054 e il ping con valore negativo

Di recente mi sono imbattuto in un caso piuttosto strano nonostante lo scenario fosse relativamente semplice.  Un piccolo cliente dislocato su due sedi e servito da una VPN tra firewall, due siti AD (DC W2003) ed un server Exchange per sito.  Per esigenze particolari si è reso necessario virtualizzare un DC anche se vi ricordo che non è una procedura supportata e che in linea di massima non è una buona idea, sicuramente la via meno problematica e supportata è quella di estendere AD nella VM e successivamente fare l’abbassamento di livello del DC fisico.

Starete tutti pensando “ti sta bene, non si virtualizzano i DC” e invece il problema in oggetto non dipende dalla conversione P2V in sé…

DCDIAG non presenta anomalie, NETDIAG è assolutamente OK le repliche tra i siti funzionano correttamente mentre sul DC “virtualizzato” con cadenza regolare si presenta l’errore seguente:

Event Type: Error
Event Source: Userenv
Event Category: None
Event ID: 1054
Date:  18/03/2013
Time:  17.19.02
User:  NT AUTHORITY\SYSTEM
Computer: SERVER2
Description:
Windows cannot obtain the domain controller name for your computer network. (An unexpected network error occurred. ). Group Policy processing aborted.

Dopo ulteriori ricerche decido di applicare la KB 326152 naturalmente senza successo. Verifico NetBIOS, DNS tutto Ok. Accedo anche a \\mydomain.com\sysvol\mydomain.local.

Di nuovo sembrano non esserci problemi particolari nonostante l’errore 1054. Questa volta provo ad attivare il debug dell’ambiente utente nella speranza di trovare qualche indizio nel log. ( KB 221833 ). Purtroppo %Systemroot%\Debug\UserMode\Userenv.log mi indica soltanto che le policy vengono applicate. Niente di fatto,

Anche il comando “setlogon server” restituisce correttamente il nome del DC, dato che ho il prompt dei comandi sotto mano provo un ping sul nome  di dominio e noto una risposta di –1994ms. MENO? Si avete letto bene, un tempo negativo.

Pinging domain.local [192.168.1.10] with 32 bytes of data:

Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128
Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128
Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128
Reply from 192.168.1.10: bytes=32 time=-1994ms TTL=128

Ping statistics for 192.168.1.10:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = -1994ms, Maximum = -1994ms, Average = 1073739830ms

Mi rimetto nelle mani di Google per ulteriori ricerche ma trovo solo alcuni articoli che trattano un problema simile, passo oltre dato che sembra riguardare solo le CPU AMD Opteron.

Ripenso ai passaggi fatti e mi ricordo di aver aggiunto un processore alla mia VM giusto prima del power on, la macchina fisica aveva un solo processore.  Cerco di approfondire le problematiche VM e multiprocessore ed apprendo che la funzione Win32 QueryPerformanceCounter per impostazione predefinita utilizza un’unità di tempo chiamata TSC che essenzialmente conta i cicli di CPU. A quanto pare la lettura del valore TSC può essere diversa per ogni CPU “virtuale”, questo spiegherebbe la negatività temporale (virtuale naturalmente).

Il colpevole sembrerebbe proprio la time source di default.

Il caso si è risolto indicando a “QueryPerformanceCounter” che da dovrà basarsi su PM timer che è una fonte tempo globale, anziché su TSC.
Come? semplicemente aggiungendo il flag /usepmtimer al file boot.ini

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Standard" /noexecute=optout /fastdetect /usepmtimer

8 mar 2013

Microsoft Office Configuration Analyzer Tool

The Microsoft Office Configuration Analyzer Tool (OffCAT) is a program that provides a detailed report of your installed Office programs. This report includes many parameters about your Office program configuration and highlights known problems found when OffCAT scans your computer. For any problems that are listed in the report, you are provided with a link to a public-facing article (usually a Microsoft Knowledge Base article) on the issue so you can read about possible fixes for the problem. If you are a Help Desk professional, you can also save the report to file so that the report can be viewed in the Office Configuration Analyzer Tool on another client where the tool is installed. The Office Configuration Analyzer Tool 1.0 also includes a command-line version that can be used to collect an OffCAT scan without user intervention.

Download

17 feb 2013

Hyper-V IT Camp: 14 Marzo 2013 @ Microsoft Innovation Campus

banner

Hyper-V IT Camp è l'evento gratuito organizzato da Microsoft Italia, in collaborazione con la community WindowServer.it.
Un'intera giornata dove verranno presentate ed analizzate le tematiche più importanti relative al mondo della virtualizzazione server, basate su Windows Server 2012 e su Hyper-V Server 2012. Sul palco si alterneranno speaker di altissima qualità tecnica ed alcuni di loro sono riconosciuti come Microsoft Most Valuable Professional.
L'evento si terrà il giorno 14 Marzo 2013, presso l'Innovation Campus di Microsoft Italia a Milano, ed è aperto a tutti coloro che intendono addentrarsi nel mondo della virtualizzazione.

Iscriviti Subito!

5 dic 2012

Utilizzare i cmdlet di PowerShell per rinominare una scheda di rete in Windows 8 o in Windows Server 2012.

È possibile utilizzare i cmdlet di Windows PowerShell per rinominare una scheda di rete in Windows 8 o in Windows Server 2012. Per effettuare questa operazione, attenersi alla seguente procedura:

  1. Per visualizzare i nomi delle schede di rete, eseguire il seguente cmdlet di Windows PowerShell:

             Get-NetAdapter

  1. Per rinominare una scheda di rete, eseguire il seguente cmdlet di Windows PowerShell:

    Rename-NetAdapter-nome <Name></Name> NewName- <New name=""></New>

    Ad esempio, eseguire il seguente cmdlet di Windows PowerShell per rinominare la scheda "Rete Ethernet" a "ManagementAdapter:"

    Rename-NetAdapter –Name Ethernet –NewName ManagementAdapter

Ecco una lista di cmdlet utili alla gestione del TCP/IP.

Net TCP/IP

Get-NetIPAddress

Gets information about IP address configuration.

Get-NetIPInterface

Gets information about the IP interface properties.

Get-NetIPv4Protocol

Gets information about the IPv4 Protocol configuration.

Get-NetIPv6Protocol

Gets information about the IPv6 protocol configuration.

Get-NetNeighbor

Gets information about the neighbor cache for IPv4 and IPv6.

Get-NetOffloadGlobalSetting

Gets information about the global TCP/IP offload settings.

Get-NetPrefixPolicy

Gets information about the prefix policy.

Get-NetRoute

Gets the IP routing table.

Get-NetTCPConnection

Gets information about current TCP connection statistics.

Get-NetTCPSetting

Gets information about TCP settings and configuration.

Get-NetTransportFilter

Gets information about transport filters.

Get-NetUDPEndpoint

Gets information about current UDP connection statistics.

Get-NetUDPSetting

Gets information about UDP settings and configuration.

New-NetIPAddress

Creates an IP address and the configuration properties of that IP address.

New-NetNeighbor

Creates a neighbor cache entry for IPv4 or IPv6.

New-NetRoute

Creates an entry in the IP routing table.

New-NetTransportFilter

Creates a transport filters.

Remove-NetIPAddress

Deletes an IP address and the configuration properties of that IP address.

Remove-NetNeighbor

Deletes a neighbor cache entry for IPv4 or IPv6.

Remove-NetRoute

Deletes an entry or entries (IP routes) from the IP routing table.

Remove-NetTransportFilter

Deletes a transport filter.

Set-NetIPAddress

Modifies IP address configuration properties of an existing IP address.

Set-NetIPInterface

Modifies IP interface properties.

Set-NetIPv4Protocol

Modifies information about the IPv4 Protocol configuration.

Set-NetIPv6Protocol

Modifies information about the IPv6 Protocol configuration.

Set-NetNeighbor

Modifies a neighbor cache entry.

Set-NetOffloadGlobalSetting

Modifies information about the global TCP/IP offload settings.

Set-NetRoute

Modifies an entry or entries in the IP routing table.

Set-NetTCPSetting

Modifies TCP settings and configuration.

Set-NetUDPSetting

Modifies UDP settings and configuration.

15 set 2012

Firma di Outlook e OWA basata sulle informazioni utente in Active Directory (v 1.2)

Introduzione
Chi utilizza Exchange Server e conosce le regole di trasporto, sarà anche a conoscenza del fatto che in teoria esse possono essere utilizzate per implementare delle firme dinamiche nella propria organizzazione. Nonostante sia possibile tecnicamente, questa implementazione nasconde degli evidenti aspetti negativi. Se avete condotto anche solo un paio di test vi sarete resi conto che la firma dell’utente viene sempre collocata in fondo a "tutto" il testo, questo provoca un concatenarsi di firme al termine del messaggio email, in particolare nel caso di molti reply. L'unico sistema davvero efficace è settare la firma localmente, direttamente in Outlook e per ogni utente.
Quanto sopra è sostenibile se parliamo di pochi utenti, ma se nell'azienda per cui lavorate ne conta decine o addirittura centinaia dovrete acquistare prodotti di terze parti.
Fortunatamente esiste una valida alternativa, che come vedremo in questo articolo ci consentirà di generare e impostare in maniera automatica e dinamica le firme locali di Outlook e simultaneamente i file HTML necessari all’importazione delle firme in OWA (Outlook Web App)  tramite EMS (Exchange Management Shell). Un altro vantaggio non da poco è che la procedura è totalmente realizzabile utilizzando l’infrastruttura esistente e quindi totalmente free.
Lo script PowerShell che implementeremo andrà a creare una firma locale di Outlook  per ogni singolo utente avvalendosi dei dati utente presenti in Active Directory.
Il funzionamento è semplice. Ogni volta che si modificherà il file di Word contente un modello predefinito le firme verranno rigenerate dallo script a sua volta distribuito via GPO .
Tutti i file e gli script sono scaricabili dall’indirizzo fornito in fondo all’articolo.
Prerequisiti
Al fine di poter raggiungere il nostro obiettivo avremo bisogno che alcuni prerequisiti vengano soddisfatti:
PowerShell (Già presente in W7, installabile su WXP e distribuibile tramite WSUS)
Office 2003 o successivi (Sono necessari gli Assembly di interoperabilità primari installati di default, in caso contrario sono scaricabili da Microsoft download center
· Almeno un server che abbia il ruolo di Domain Controller
· Exchange Server 2007/10 (Facoltativo, lo script può essere facilmente adattato ad operare in sua assenza)
Installazione
Prima di cominciare verifichiamo che gli utenti AD contengano tutte le informazioni necessarie nei campi preposti. Potete osservare alcuni campi compilati nella figura 1
clip_image001
Figura 1
A questo punto creeremo un file "Modello" su cui basare la nostra firma aziendale e nel quale useremo le variabili dichiarate nello script . Di seguito troverete un esempio in cui le variabili sono evidenziate in blu.
DisplayName
Title
Nome Azienda
Via XXXXXXXX, XX
00000, XXXXXXX (XX)
Tel. TelePhoneNumber, Fax. facsimileTelephoneNumber
Web: XXXXXXXXXXXXX
Email: PostaEL
BlogIQ
Una volta decisi Logo, Font ecc, salvate il file in formato Word facendo attenzione al nome della vostra organizzazione o meglio al nome che è stato dichiarato nello script PowerShell ed in particolare nella variabile "$CompanyName".
$CompanyName = ‘NomeOrganizzazione’
$DomainName = ‘nomedominioAD.local’
Tenendo presente quanto sopra creiamo le cartelle necessarie sotto "NETLOGON" aggiungendo una nuova cartella denominata "sig_files" e poi una sottocartella corrispondente al nome attribuito in precedenza. Una volta terminato avremo un percorso simile a questo:
\\nomedominioAD.local\NETLOGON\sig_files\NomeOrganizzazione\
Non ci resta che copiare il file di Word creato in precedenza in questa posizione, come indicato in Figura2.
clip_image003
Figura 2
Le variabili AD utilizzate in questo script sono riassunte di seguito, a destra si trovano i riferimenti agli attributi dell’oggetto AD.
$ADDisplayName = $ADUser.DisplayName
$ADEmailAddress = $ADUser.mail
$ADTitle = $ADUser.title
$ADTelePhoneNumber = $ADUser.telephoneNumber
$ADdescription = $ADuser.description
$ADFax = $ADuser.facsimileTelephoneNumber
$ADMobile = $ADuser.mobile
$ADDepartment = $ADuser.department
Nel caso in cui ci sia la necessità di aggiungere altre variabili è possibile farlo da ADUC in modalità “Advanced Features” nelle proprietà dell’oggetto AD (utente) sotto “Attribute Editor”. Oltre a cambiate il valore è possibile leggerne il nome dell’attributo che molto spesso è poco intuibile. (Fig. 3)
clip_image004
Figura 3
E’ arrivato il momento di copiare il codice seguente e di salvare il file con estensione .ps1 (Es. Firma.ps1)








Il codice di cui sopra è basato su questo script di Jan Egil Ring ma dovete fare attenzione ad un paio di cose. Lo script originale contiene alcune linee di codice che sono state rimosse e che causavano il salvataggio nel formato errato del file firma che deve essere invece in formato testo. Nella versione 1.1 non sareste stati in grado di rispondere ai messaggi solo testo. Sono state aggiunte alcune variabili e soprattutto la parte che salva la firma in html “filtrato” per OWA. Fate attenzione al “filtrato”, se usate il tag “wdFormatHTML” come nello script originale (1.1) al posto di “wdFormatFilteredHTML” Winword genererà un file molto grande contenente una serie infinita di TAG relativi ad Office che nel nostro caso non sono necessari, Il file diventerebbe troppo grande (32k) per essere correttamente gestito in EMS (Exchange Management Shell) dato che ci viene imposto da Exchange Server un limite hard coded di 8k .

Nelle linee 51 – 52 definiamo il nome della nostra organizzazione e del dominio AD

51:  $CompanyName = ‘YourComapny’  
52:  $DomainName = ‘yourdomain.local



Da 68 a 81 troviamo le variabili AD che abbiamo definito e che abbiamo usato nel file di Word.

Mentre la linea 64 definisce il nome del vostro Exchange Server

$ExchPath = '\\YOUR_EXCHANGE_SERVER\Signatures\'



Dalla 194 alla 196 lo script genera il file per htm in locale per OWA e poi lo copia nella cartella condivisa “Signatures” (Condivisa in precedenza sul server Exchange).

Ora il nostro script PowerShell è pronto per essere distribuito tramite GPO.

Il prossimo passo sarà quello di creare una nuova GPO di nome “Signature”.  (Fig. 4)

image

Figura 4

Per quanto riguarda i parametri da settare dobbiamo soffermarci qualche secondo sul fatto che dovremo “insegnare” a PowerShell ad eseguire il nostro script dato che non avrà nessuna firma digitale.

Sotto Policies –>Administrative Templates –>Windows Component –>  Windows PowerShell –>Turn on script esecution setteremo il parametro su “Enabled” e nelle opzioni “Allow all Scripts” (Fig. 5)

image

Figura 5.

A questo punto dovremo distribuire lo script vero e proprio, magari usando questa stessa GPO. (Fig. 6)

User Configuration –> Policies –> Windows Settings –> Scripts

image

Figura 6

Se nella vostra azienda avete ancora Windows XP allora sarà necessaria una seconda policy filtrata (fig. 7) con WMI (WXP) che chiameremo ad esempio “LegacySignature” dove andremo a definire un file batch che a sua volta eseguirà lo script PowerShell.  Di seguito la linea di codice da inserire nel file batch.




image

Figura 7

Installazione – parte Exchange Server

Partiamo dalla cosa più semplice. Accediamo al nostro Exchange Server, creiamo una nuova cartella di nome "Signatures" e condividiamola assegnando i permessi di scrittura per "Authenticated Users". La cartella dovrà essere accessibile tramite il percorso UNC \\NOMESERVER\Signatures.

Man mano che gli utenti faranno logon dalle macchine la nostra directory si popolerà dei vari file html che useremo per le firme OWA. (Fig. 8)

 image

Figura 8

Se nella vostra firma è stato inserito un logo dovremo affrontare un altro paio di problemini. I file htm generati  da Word contengono un collegamento all’immagine che punta ad una cartella locale con il risultato che OWA visualizzerà l’immagine con una bella X rossa. Inoltre l’immagine verrà collocata da Word in una cartella con nome %username%_file/nomeimmagine.xxx. Come si può immaginare la sostituzione del testo in questo caso non è così banale.

Risolveremo questo problema usando di nuovo PowerShell e avvalendoci delle espressioni regolari.

Il codice html dei vari file firma che troveremo nella cartella Signatures conterrà fra il resto del codice la linea  :

<td><img width=119 height=102 src="administrator_file/image001.gif"></td>


Quello che faremo sarà sostituire la parte src=”” con un link ad un sito web pubblico dove avremo precedentemente caricato la nostra foto del logo (image001.gif)


   <td><img width=119 height=102 src="http://www.publicwebsite.com/image001.gif"></td>



Ecco lo script Powershell (EMS) che permette di correggere tutti i file in un solo colpo e di importare le firme di ogni utente in OWA.




Noterete le variabili $Old (che contiene la Reg Ex) e $New . 

A questo punto l’unica cosa che resta da fare è automatizzare l’importazione con un operazione schedulata giornalmente. 

Nella parte Program/Script inseriremo:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 



mentre nella parte Add Arguments :
-command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; c:\Signatures\script\OWASignature.ps1"    (Fig.9)
image
Figura 9
Da ora in poi ogni volta che andrete a modificare il file Word (della firma) automaticamente verranno aggiornate tutte le firme locali di Outlook e quelle di OWA.  

Tutti i file utilizzati in questo articolo sono scaricabili da questo link: http://sdrv.ms/Pi3mIW

17 ago 2012

Windows 8 Pro: How to add language pack

You need to add language pack into W8 Pro?

Start the "\Windows\system32\lpksetup.exe" from the command line or press the “Windows” Key + R and type lpksetup.exe

27 lug 2012