Compare commits
10 commits
75484f8ef4
...
5bc26416e6
Author | SHA1 | Date | |
---|---|---|---|
|
5bc26416e6 | ||
|
6dc5c672e1 | ||
|
aa3eed4330 | ||
|
a9a1a20aae | ||
|
c8f803b9cb | ||
|
dcca4e293f | ||
|
9bb1804008 | ||
|
1fd0502754 | ||
|
19d28c36b5 | ||
|
5fb486d9bd |
|
@ -1,2 +1,3 @@
|
|||
# Documentation Links :
|
||||
* [Voip-Info 79x1](https://www.voip-info.org/asterisk-phone-cisco-79x1-xml-configuration-files-for-sip/)
|
||||
* [Asterisk phone cisco 79×1 xml configuration files for SIP](https://www.voip-info.org/asterisk-phone-cisco-79x1-xml-configuration-files-for-sip/)
|
||||
* [Configuring A Custom Background Image - Cisco 7911G - IP Phone VoIP Administration Manual](https://www.manualslib.com/manual/375757/Cisco-7911g-Ip-Phone-Voip.html?page=177)
|
30
Phones/7911-7906/README.md
Normal file
30
Phones/7911-7906/README.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
# 7911 - 7906 Series :
|
||||
|
||||
## Intro :
|
||||
|
||||
You will need an IPv4 Network with :
|
||||
|
||||
* DHCP server (tested on tagged Voice-Vlan)
|
||||
* TFTP server (option 66 configured in DHCP server)
|
||||
* physical access to the phone
|
||||
|
||||
## Factory reset sequence :
|
||||
|
||||
When the phone start's up, (either POE or local adapter), dial the `#` until the red headset light starts blinking.
|
||||
Dial `1 2 3 4 5 6 7 8 9 * 0 #` in that order. The phone will factory reset
|
||||
|
||||
## Flashing process :
|
||||
|
||||
```<loadInformation>``` is what needs to contain the firmware number.
|
||||
|
||||
After factory reset, the phone will look up in the TFTP server for his own config file (`SEP<mac-address>.cnf.xml`)
|
||||
In the case of flashing to SIP firmware, that file has to contain the fact that it goes to SIP and a firmware version.
|
||||
All system files must be stored at the root of the TFTP server.
|
||||
|
||||
## Startup Sequence :
|
||||
|
||||
At every reboot, the phone will look up for the ``SEP<mac-address>.cnf.xml``.
|
||||
|
||||
## Common problems:
|
||||
|
||||
Phone can start to boot-loop after flashing. Apparently, if it can't connect to the IPPBX, it will reboot.
|
178
Phones/7911-7906/SEPmacaddress.cnf.xml
Normal file
178
Phones/7911-7906/SEPmacaddress.cnf.xml
Normal file
|
@ -0,0 +1,178 @@
|
|||
<device>
|
||||
<deviceProtocol>SIP</deviceProtocol>
|
||||
<devicePool>
|
||||
<dateTimeSetting>
|
||||
<dateTemplate>D/M/YY</dateTemplate>
|
||||
<timeZone>W. Europe Standard/Daylight Time</timeZone>
|
||||
<ntps>
|
||||
<ntp>
|
||||
<name><NTP SERVER></name>
|
||||
<ntpMode>Unicast</ntpMode>
|
||||
</ntp>
|
||||
</ntps>
|
||||
</dateTimeSetting>
|
||||
<callManagerGroup>
|
||||
<members>
|
||||
<member priority="0">
|
||||
<callManager>
|
||||
<ports>
|
||||
<ethernetPhonePort>2000</ethernetPhonePort>
|
||||
<sipPort>5060</sipPort>
|
||||
<securedSipPort>5061</securedSipPort>
|
||||
</ports>
|
||||
<processNodeName><PBX IP></processNodeName>
|
||||
</callManager>
|
||||
</member>
|
||||
</members>
|
||||
</callManagerGroup>
|
||||
</devicePool>
|
||||
<sipProfile>
|
||||
<sipProxies>
|
||||
<backupProxy></backupProxy>
|
||||
<backupProxyPort></backupProxyPort>
|
||||
<emergencyProxy></emergencyProxy>
|
||||
<emergencyProxyPort></emergencyProxyPort>
|
||||
<outboundProxy></outboundProxy>
|
||||
<outboundProxyPort></outboundProxyPort>
|
||||
<registerWithProxy>true</registerWithProxy>
|
||||
</sipProxies>
|
||||
<sipCallFeatures>
|
||||
<cnfJoinEnabled>true</cnfJoinEnabled>
|
||||
<callForwardURI>x-cisco-serviceuri-cfwdall</callForwardURI>
|
||||
<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
|
||||
<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
|
||||
<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
|
||||
<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
|
||||
<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
|
||||
<rfc2543Hold>false</rfc2543Hold>
|
||||
<callHoldRingback>1</callHoldRingback>
|
||||
<localCfwdEnable>true</localCfwdEnable>
|
||||
<semiAttendedTransfer>true</semiAttendedTransfer>
|
||||
<anonymousCallBlock>0</anonymousCallBlock>
|
||||
<callerIdBlocking>0</callerIdBlocking>
|
||||
<retainForwardInformation>false</retainForwardInformation>
|
||||
<dndControl>0</dndControl>
|
||||
<remoteCcEnable>true</remoteCcEnable>
|
||||
</sipCallFeatures>
|
||||
<sipStack>
|
||||
<sipInviteRetx>6</sipInviteRetx>
|
||||
<sipRetx>10</sipRetx>
|
||||
<timerInviteExpires>180</timerInviteExpires>
|
||||
<timerRegisterExpires>3600</timerRegisterExpires>
|
||||
<timerRegisterDelta>5</timerRegisterDelta>
|
||||
<timerKeepAliveExpires>120</timerKeepAliveExpires>
|
||||
<timerSubscribeExpires>120</timerSubscribeExpires>
|
||||
<timerSubscribeDelta>5</timerSubscribeDelta>
|
||||
<timerT1>500</timerT1>
|
||||
<timerT2>4000</timerT2>
|
||||
<maxRedirects>70</maxRedirects>
|
||||
<remotePartyID>true</remotePartyID>
|
||||
<userInfo>Phone</userInfo>
|
||||
</sipStack>
|
||||
<autoAnswerTimer>1</autoAnswerTimer>
|
||||
<autoAnswerAltBehavior>false</autoAnswerAltBehavior>
|
||||
<autoAnswerOverride>true</autoAnswerOverride>
|
||||
<transferOnhookEnabled>false</transferOnhookEnabled>
|
||||
<enableVad>false</enableVad>
|
||||
<preferredCodec>none</preferredCodec>
|
||||
<dtmfAvtPayload>101</dtmfAvtPayload>
|
||||
<dtmfDbLevel>3</dtmfDbLevel>
|
||||
<dtmfOutofBand>avt</dtmfOutofBand>
|
||||
<alwaysUsePrimeLine>false</alwaysUsePrimeLine>
|
||||
<alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
|
||||
<kpml>0</kpml>
|
||||
<natEnabled>false</natEnabled>
|
||||
<natAddress></natAddress>
|
||||
<phoneLabel><phone name></phoneLabel>
|
||||
<offhookToFirstDigitTimer>15000</offhookToFirstDigitTimer>
|
||||
<stutterMsgWaiting>0</stutterMsgWaiting>
|
||||
<callStats>false</callStats>
|
||||
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
|
||||
<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
|
||||
<startMediaPort>16384</startMediaPort>
|
||||
<stopMediaPort>32766</stopMediaPort>
|
||||
<sipLines>
|
||||
<line button="1">
|
||||
<offhookToFirstDigitTimer>15000</offhookToFirstDigitTimer>
|
||||
<featureID>9</featureID>
|
||||
<featureLabel><Line Name></featureLabel>
|
||||
<proxy>USECALLMANAGER</proxy>
|
||||
<port>5060</port>
|
||||
<name><SIP USER NAME></name>
|
||||
<displayName>Main</displayName>
|
||||
<autoAnswer>
|
||||
<autoAnswerEnabled>0</autoAnswerEnabled>
|
||||
</autoAnswer>
|
||||
<callWaiting>1</callWaiting>
|
||||
<authName><SIP USER NAME></authName>
|
||||
<authPassword><SIP USER PASSWORD></authPassword>
|
||||
<sharedLine>false</sharedLine>
|
||||
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
|
||||
<messagesNumber>*97</messagesNumber>
|
||||
<ringSettingIdle>4</ringSettingIdle>
|
||||
<ringSettingActive>5</ringSettingActive>
|
||||
<contact>cisco7911</contact>
|
||||
<forwardCallInfoDisplay>
|
||||
<callerName>true</callerName>
|
||||
<callerNumber>false</callerNumber>
|
||||
<redirectedNumber>false</redirectedNumber>
|
||||
<dialedNumber>true</dialedNumber>
|
||||
</forwardCallInfoDisplay>
|
||||
</line>
|
||||
</sipLines>
|
||||
<voipControlPort>5060</voipControlPort>
|
||||
<dscpForAudio>184</dscpForAudio>
|
||||
<dialTemplate>dialplan.xml</dialTemplate>
|
||||
</sipProfile>
|
||||
<commonProfile>
|
||||
<phonePassword>cisco</phonePassword>
|
||||
<backgroundImageAccess>true</backgroundImageAccess>
|
||||
<setBackground>
|
||||
<background>
|
||||
<image></image>
|
||||
<icon></icon>
|
||||
</background>
|
||||
</setBackground>
|
||||
<callLogBlfEnabled>1</callLogBlfEnabled>
|
||||
</commonProfile>
|
||||
<loadInformation>SIP11.9-4-2SR3-1S</loadInformation>
|
||||
<vendorConfig>
|
||||
<disableSpeaker>false</disableSpeaker>
|
||||
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
|
||||
<pcPort>0</pcPort>
|
||||
<settingsAccess>1</settingsAccess>
|
||||
<garp>0</garp>
|
||||
<voiceVlanAccess>0</voiceVlanAccess>
|
||||
<videoCapability>0</videoCapability>
|
||||
<autoSelectLineEnable>0</autoSelectLineEnable>
|
||||
<webAccess>1</webAccess>
|
||||
<spanToPCPort>1</spanToPCPort>
|
||||
<loggingDisplay>1</loggingDisplay>
|
||||
<loadServer></loadServer>
|
||||
</vendorConfig>
|
||||
<networkLocale></networkLocale>
|
||||
<networkLocaleInfo>
|
||||
<name></name>
|
||||
<version>5.0(2)</version>
|
||||
</networkLocaleInfo>
|
||||
<deviceSecurityMode>1</deviceSecurityMode>
|
||||
<authenticationURL></authenticationURL>
|
||||
<directoryURL></directoryURL>
|
||||
<idleURL></idleURL>
|
||||
<informationURL></informationURL>
|
||||
<messagesURL></messagesURL>
|
||||
<proxyServerURL></proxyServerURL>
|
||||
<servicesURL></servicesURL>
|
||||
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
|
||||
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
|
||||
<dscpForCm2Dvce>96</dscpForCm2Dvce>
|
||||
<transportLayerProtocol>2</transportLayerProtocol>
|
||||
<capfAuthMode>0</capfAuthMode>
|
||||
<capfList>
|
||||
<capf>
|
||||
<phonePort>3804</phonePort>
|
||||
</capf>
|
||||
</capfList>
|
||||
<certHash></certHash>
|
||||
<encrConfig>false</encrConfig>
|
||||
</device>
|
5
Phones/7940-7960/SEPmacaddress.cnf.xml
Normal file
5
Phones/7940-7960/SEPmacaddress.cnf.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<device>
|
||||
<deviceProtocol>SIP</deviceProtocol>
|
||||
<loadInformation model="IP Phone 7940">P0S3-8-12-00</loadInformation>
|
||||
</device>
|
||||
|
72
Phones/7940-7960/SIPmacaddress.cnf
Normal file
72
Phones/7940-7960/SIPmacaddress.cnf
Normal file
|
@ -0,0 +1,72 @@
|
|||
proxy1_address: "<fqdn/hostname of ippbx>"
|
||||
|
||||
line1_name: "<login>"
|
||||
line1_shortname: "<line_name>"
|
||||
line1_displayname: "<line_name>"
|
||||
line1_authname: "<login>"
|
||||
line1_password: "<password>"
|
||||
|
||||
#line2_name: "<login>"
|
||||
#line2_shortname: "<login_name>"
|
||||
#line2_displayname: "<login_name>"
|
||||
#line2_authname: "<login>"
|
||||
#line2_password: "<password>"
|
||||
|
||||
proxy_emergency: ""
|
||||
proxy_emergency_port: "5060"
|
||||
proxy_backup: ""
|
||||
proxy_backup_port: "5060"
|
||||
outbound_proxy: "<fqdn/hostname of ippbx>"
|
||||
outbound_proxy_port: "5060"
|
||||
|
||||
proxy_register: "1"
|
||||
timer_register_expires: "120"
|
||||
preferred_codec: "none"
|
||||
tos_media: "5"
|
||||
enable_vad: "0"
|
||||
dial_template: "dialplan"
|
||||
network_media_type: "auto"
|
||||
autocomplete: "1"
|
||||
telnet_level: "2”
|
||||
|
||||
cnf_join_enable: "1"
|
||||
semi_attended_transfer: "0"
|
||||
call_waiting: "1"
|
||||
anonymous_call_block: "0"
|
||||
callerid_blocking: "0"
|
||||
dnd_control: "0"
|
||||
|
||||
dtmf_inband: "1"
|
||||
dtmf_outofband: "avt"
|
||||
dtmf_db_level: "3"
|
||||
dtmf_avt_payload: "101"
|
||||
timer_t1: "500"
|
||||
timer_t2: "4000"
|
||||
sip_retx: "10"
|
||||
sip_invite_retx: "6"
|
||||
timer_invite_expires: "180"
|
||||
|
||||
|
||||
nat_enable: "0"
|
||||
#voip_control_port: "5060"
|
||||
#start_media_port: "10000"
|
||||
#end_media_port: "10100"
|
||||
nat_received_processing: "0"
|
||||
|
||||
phone_label: "<upper_right_label>"
|
||||
time_zone: CET
|
||||
time_format_24hr: 3
|
||||
date_format: D/M/Y
|
||||
sntp_mode: "directedbroadcast"
|
||||
sntp_server: "<ntp_server>"
|
||||
|
||||
logo_url: "<logurl>"
|
||||
|
||||
telnet_level: "2"
|
||||
phone_prompt: "Cisco79x0”
|
||||
phone_password: "cisco"
|
||||
enable_vad: "0"
|
||||
network_media_type: "auto"
|
||||
user_info: phone
|
||||
image_version: "P0S3-8-12-00"
|
||||
|
|
@ -19,6 +19,189 @@ def mac():
|
|||
|
||||
return raw_mac
|
||||
|
||||
def getntp():
|
||||
"""
|
||||
geting the NTP server. Getting FQDN or IP address
|
||||
:return: the NTP server
|
||||
"""
|
||||
while True:
|
||||
ntpserver = input("NTP server : ")
|
||||
if ntpserver != "":
|
||||
return ntpserver
|
||||
|
||||
def gettimezone():
|
||||
"""
|
||||
Timezone Selection.
|
||||
Default is GMT. (thank you cisco for making that part very long)
|
||||
:return: the string of the local timezone
|
||||
"""
|
||||
timezone = "GMT"
|
||||
offset = input("What is your GMT offset? (example for Belgium : +01:00) : ")
|
||||
if offset == "-12:00":
|
||||
timezone = "IDL"
|
||||
elif offset == "-11:00":
|
||||
timezone = "NT"
|
||||
elif offset == "-10:00":
|
||||
timezone = "AHST"
|
||||
elif offset == "-09:30":
|
||||
timezone = "IMT"
|
||||
elif offset == "-09:00":
|
||||
timezone = "YST"
|
||||
elif offset == "-08:00":
|
||||
timezone = "PST"
|
||||
elif offset == "-07:00":
|
||||
timezone = "MST"
|
||||
elif offset == "-06:00":
|
||||
timezone = "CST"
|
||||
elif offset == "-05:00":
|
||||
timezone = "EST"
|
||||
elif offset == "-04:00":
|
||||
timezone = "AST"
|
||||
elif offset == "-03:30":
|
||||
timezone = "NST"
|
||||
elif offset == "-03:00":
|
||||
timezone = "BST"
|
||||
elif offset == "-02:00":
|
||||
timezone = "AT"
|
||||
elif offset == "-01:00":
|
||||
timezone = "WAT"
|
||||
elif offset == "00:00" or offset == "+00:00" or offset == "-00:00":
|
||||
timezone = "GMT"
|
||||
elif offset == "+01:00":
|
||||
timezone = "CET"
|
||||
elif offset == "+02:00":
|
||||
timezone = "EET"
|
||||
elif offset == "+03:00":
|
||||
timezone = "BT"
|
||||
elif offset == "+03:30":
|
||||
timezone = "IT"
|
||||
elif offset == "+04:00":
|
||||
timezone = "ZP4"
|
||||
elif offset == "+04:30":
|
||||
timezone = "AFG"
|
||||
elif offset == "+05:00":
|
||||
timezone = "ZP5"
|
||||
elif offset == "+05:30":
|
||||
timezone = "IST"
|
||||
elif offset == "+06:00":
|
||||
timezone = "ZP6"
|
||||
elif offset == "+06:30":
|
||||
timezone = "SUM"
|
||||
elif offset == "+07:00":
|
||||
timezone = "WAST"
|
||||
elif offset == "+08:00":
|
||||
timezone = "HST"
|
||||
elif offset == "+09:00":
|
||||
timezone = "JST"
|
||||
elif offset == "+09:30":
|
||||
timezone = "CAST"
|
||||
elif offset == "+10:00":
|
||||
timezone = "EAST"
|
||||
elif offset == "+11:00":
|
||||
timezone = "EADT"
|
||||
elif offset == "+12:00":
|
||||
timezone = "NZST"
|
||||
else:
|
||||
print("invalid option")
|
||||
|
||||
return timezone
|
||||
|
||||
def getsoftwareversion():
|
||||
"""
|
||||
getting the software version for the phones. Needed for intial flashing (still need to document)
|
||||
:return: a string that contains software version.
|
||||
"""
|
||||
while True:
|
||||
software = input("What is the software version : ")
|
||||
if software != "":
|
||||
return software
|
||||
|
||||
def getphonename():
|
||||
"""
|
||||
What name would you like your phone to have (name will be shown in the upper right corner
|
||||
:return: Phone name
|
||||
"""
|
||||
while True:
|
||||
name = input("What is the phone name? (name will be shown in the upper right corner : ")
|
||||
if name != "":
|
||||
return name
|
||||
|
||||
def getproxy():
|
||||
"""
|
||||
This function takes the address of the PBX
|
||||
:return: IP address or hostname in a string (MANDATORY)
|
||||
"""
|
||||
while True:
|
||||
proxy = input("Enter the Hostname or IP address of the IP-PBX (proxy) : ")
|
||||
if proxy != "":
|
||||
return proxy
|
||||
|
||||
def getlineamount():
|
||||
"""
|
||||
Function will allow to run in a loop to get the data for all lines
|
||||
:return:
|
||||
"""
|
||||
return int(input("How many phone lines do you have : "))
|
||||
|
||||
def getusername():
|
||||
"""
|
||||
can run undefined amount of times. Get's username
|
||||
:return:
|
||||
"""
|
||||
return input("What is the line username : ")
|
||||
|
||||
def getpassword():
|
||||
"""
|
||||
can run undefined amount of times. Get's password
|
||||
:return:
|
||||
"""
|
||||
return input("What is the line password : ")
|
||||
|
||||
def getlinename():
|
||||
"""
|
||||
can run undefined amount of times. Get's line name
|
||||
:return:
|
||||
"""
|
||||
return input("line name : ")
|
||||
|
||||
def getlogourl():
|
||||
"""
|
||||
Logo URL for the PNG URL
|
||||
:return:
|
||||
"""
|
||||
return input("Logo URL : ")
|
||||
|
||||
def generatefile(ntp_server,timezone,software_version,phonename,proxy,lineamount,logourl):
|
||||
"""
|
||||
Takes all the data and generates the final file
|
||||
:param ntp_server:
|
||||
:param timezone:
|
||||
:param software_version:
|
||||
:param phonename:
|
||||
:param proxy:
|
||||
:param lineamount:
|
||||
:param logourl:
|
||||
:return:
|
||||
"""
|
||||
return True
|
||||
|
||||
def main():
|
||||
username=[]
|
||||
password=[]
|
||||
linename=[]
|
||||
mac_address = mac()
|
||||
print(mac_address)
|
||||
ntp_server = getntp()
|
||||
timezone = gettimezone()
|
||||
software_version = getsoftwareversion()
|
||||
phonename = getphonename()
|
||||
proxy = getproxy()
|
||||
lineamount = getlineamount()
|
||||
for i in lineamount:
|
||||
username[i] = getusername()
|
||||
password[i] = getpassword()
|
||||
linename[i] = getlinename()
|
||||
|
||||
if input("Do you have a custom logo link? (y/n) : ") == "y":
|
||||
logourl = getlogourl()
|
||||
|
||||
generatefile(ntp_server,timezone,software_version,phonename,proxy,lineamount,logourl)
|
Loading…
Reference in a new issue