chan-sccp / sccp_manager Goto Github PK
View Code? Open in Web Editor NEWSCCP Manager
SCCP Manager
Reported by @FrozenHaxor
It seems that the generated CNF files do not reflect the vendor config correctly, I changed the phone display timeout settings and saved them, then generated new CNF files and it populated the variables with default values anyway
Plus there is a naming duplication
Is it possible to expose the ringtype
setting to the sccp_manager
FreePBX module in a newer release of sccp_manager
? Or, is there a chan-sccp
'_custom' .conf
' file that ringtype
could always be set to inside
?
I can set it manually within the sccp.conf
file, but any server config change/save with the sccp_manager
module of FreePBX overwrites/removes the ringtype
parameter.
Pushed a new commit to the 'develop' branch, which handles alertinfo2ringtype conversion nicely and correctly this time.
Also added a way to change the default ringtype
[general]
...
ringtype=inside ; default value is "outside"
...
Thanks you for providing an initial solution to the issue (that always helps a lot) and also
thank you for making me aware of this lack in standards support :-)
Originally posted by @dkgroot in chan-sccp/chan-sccp#368 (comment)
The 7937 phone does not go into sleep mode and the screen is lit for 24 hours. How to fix it? Is there a solution? Need help
I just noticed, if I set the outbound CID for an SCCP phone, internal calls from that phone also get that CID.
Here is the debug log from a call, with the external number replaced with XXXXX
root@asterix ~ # asterisk -rvvvvv
Asterisk 13.38.3, Copyright (C) 1999 - 2014, Digium, Inc. and others.
Created by Mark Spencer <[email protected]>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Please note that this version of Asterisk no longer receives bug fixes.
Consult the following URL for Asterisk version support status information:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions
=========================================================================
Connected to Asterisk 13.38.3 currently running on asterix (pid = 19584)
== Using SCCP RTP TOS bits 184
== Using SCCP RTP CoS mark 6
-- Executing [148@from-internal:1] GotoIf("SCCP/147-000000B7", "0?ext-local,148,1:followme-check,148,1") in new stack
-- Goto (followme-check,148,1)
-- Executing [148@followme-check:1] Gosub("SCCP/147-000000B7", "followme-sub,148,1()") in new stack
-- Executing [148@followme-sub:1] GotoIf("SCCP/147-000000B7", "0?skipclid") in new stack
-- Executing [148@followme-sub:2] Macro("SCCP/147-000000B7", "user-callerid,") in new stack
-- Executing [s@macro-user-callerid:1] Set("SCCP/147-000000B7", "TOUCH_MONITOR=1634814401.510") in new stack
-- Executing [s@macro-user-callerid:2] Set("SCCP/147-000000B7", "CHANCONTEXT=") in new stack
-- Executing [s@macro-user-callerid:3] Set("SCCP/147-000000B7", "CHANCONTEXT=") in new stack
-- Executing [s@macro-user-callerid:4] Set("SCCP/147-000000B7", "CHANEXTENCONTEXT=147-000000B7") in new stack
-- Executing [s@macro-user-callerid:5] Set("SCCP/147-000000B7", "CHANEXTEN=147-000000B7") in new stack
-- Executing [s@macro-user-callerid:6] Set("SCCP/147-000000B7", "CALLERID(number)="Han Boetes" <0XXXXX147") in new stack
-- Executing [s@macro-user-callerid:7] Set("SCCP/147-000000B7", "AMPUSER=Han Boetes <0XXXXX147") in new stack
-- Executing [s@macro-user-callerid:8] Set("SCCP/147-000000B7", "HOTDESCKCHAN=147-000000B7") in new stack
-- Executing [s@macro-user-callerid:9] Set("SCCP/147-000000B7", "HOTDESKEXTEN=147") in new stack
-- Executing [s@macro-user-callerid:10] Set("SCCP/147-000000B7", "HOTDESKCALL=0") in new stack
-- Executing [s@macro-user-callerid:11] ExecIf("SCCP/147-000000B7", "0?Set(HOTDESKCALL=1)") in new stack
-- Executing [s@macro-user-callerid:12] ExecIf("SCCP/147-000000B7", "0?Set(CALLERID(name)=)") in new stack
-- Executing [s@macro-user-callerid:13] GotoIf("SCCP/147-000000B7", "0?report") in new stack
-- Executing [s@macro-user-callerid:14] ExecIf("SCCP/147-000000B7", "1?Set(REALCALLERIDNUM="Han Boetes" <0XXXXX147)") in new stack
-- Executing [s@macro-user-callerid:15] Set("SCCP/147-000000B7", "AMPUSER=") in new stack
-- Executing [s@macro-user-callerid:16] GotoIf("SCCP/147-000000B7", "0?limit") in new stack
-- Executing [s@macro-user-callerid:17] Set("SCCP/147-000000B7", "AMPUSERCIDNAME=") in new stack
-- Executing [s@macro-user-callerid:18] ExecIf("SCCP/147-000000B7", "0?Set(__CIDMASQUERADING=TRUE)") in new stack
-- Executing [s@macro-user-callerid:19] GotoIf("SCCP/147-000000B7", "1?report") in new stack
-- Goto (macro-user-callerid,s,28)
-- Executing [s@macro-user-callerid:28] NoOp("SCCP/147-000000B7", "Macro Depth is 1") in new stack
-- Executing [s@macro-user-callerid:29] GotoIf("SCCP/147-000000B7", "1?report2:macroerror") in new stack
-- Goto (macro-user-callerid,s,30)
-- Executing [s@macro-user-callerid:30] GotoIf("SCCP/147-000000B7", "0?continue") in new stack
-- Executing [s@macro-user-callerid:31] ExecIf("SCCP/147-000000B7", "1?Set(__CALLEE_ACCOUNCODE=)") in new stack
-- Executing [s@macro-user-callerid:32] Set("SCCP/147-000000B7", "__TTL=64") in new stack
-- Executing [s@macro-user-callerid:33] GotoIf("SCCP/147-000000B7", "1?continue") in new stack
-- Goto (macro-user-callerid,s,49)
-- Executing [s@macro-user-callerid:49] Set("SCCP/147-000000B7", "CALLERID(number)="Han Boetes" <0XXXXX147") in new stack
-- Executing [s@macro-user-callerid:50] Set("SCCP/147-000000B7", "CALLERID(name)=Han Boetes") in new stack
-- Executing [s@macro-user-callerid:51] GotoIf("SCCP/147-000000B7", "0?cnum") in new stack
-- Executing [s@macro-user-callerid:52] Set("SCCP/147-000000B7", "CDR(cnam)=Han Boetes") in new stack
-- Executing [s@macro-user-callerid:53] Set("SCCP/147-000000B7", "CDR(cnum)="Han Boetes" <0XXXXX147") in new stack
-- Executing [s@macro-user-callerid:54] Set("SCCP/147-000000B7", "CHANNEL(language)=en") in new stack
-- Executing [148@followme-sub:3] Set("SCCP/147-000000B7", "DIAL_OPTIONS=HhTtrI") in new stack
-- Executing [148@followme-sub:4] Set("SCCP/147-000000B7", "CONNECTEDLINE(num,i)=148") in new stack
-- Executing [148@followme-sub:5] Gosub("SCCP/147-000000B7", "sub-presencestate-display,s,1(148)") in new stack
-- Executing [s@sub-presencestate-display:1] Goto("SCCP/147-000000B7", "state-not_set,1") in new stack
-- Goto (sub-presencestate-display,state-not_set,1)
-- Executing [state-not_set@sub-presencestate-display:1] Set("SCCP/147-000000B7", "PRESENCESTATE_DISPLAY=") in new stack
-- Executing [state-not_set@sub-presencestate-display:2] Return("SCCP/147-000000B7", "") in new stack
-- Executing [148@followme-sub:6] Set("SCCP/147-000000B7", "CONNECTEDLINE(name)=René Hirtenfelder") in new stack
-- Executing [148@followme-sub:7] Set("SCCP/147-000000B7", "FM_DIALSTATUS=NOT_INUSE") in new stack
-- Executing [148@followme-sub:8] Set("SCCP/147-000000B7", "__EXTTOCALL=148") in new stack
-- Executing [148@followme-sub:9] Set("SCCP/147-000000B7", "__PICKUPMARK=148") in new stack
-- Executing [148@followme-sub:10] Macro("SCCP/147-000000B7", "blkvm-setifempty,") in new stack
-- Executing [s@macro-blkvm-setifempty:1] GotoIf("SCCP/147-000000B7", "1?init") in new stack
-- Goto (macro-blkvm-setifempty,s,4)
-- Executing [s@macro-blkvm-setifempty:4] Set("SCCP/147-000000B7", "__BLKVM_CHANNEL=SCCP/147-000000B7") in new stack
-- Executing [s@macro-blkvm-setifempty:5] Set("SCCP/147-000000B7", "SHARED(BLKVM,SCCP/147-000000B7)=TRUE") in new stack
-- Executing [s@macro-blkvm-setifempty:6] Set("SCCP/147-000000B7", "GOSUB_RETVAL=TRUE") in new stack
-- Executing [s@macro-blkvm-setifempty:7] MacroExit("SCCP/147-000000B7", "") in new stack
-- Executing [148@followme-sub:11] GotoIf("SCCP/147-000000B7", "1?skipov") in new stack
-- Goto (followme-sub,148,14)
-- Executing [148@followme-sub:14] Set("SCCP/147-000000B7", "RRNODEST=") in new stack
-- Executing [148@followme-sub:15] Set("SCCP/147-000000B7", "__NODEST=148") in new stack
-- Executing [148@followme-sub:16] GosubIf("SCCP/147-000000B7", "0?sub-fmsetcid,s,1()") in new stack
-- Executing [148@followme-sub:17] GotoIf("SCCP/147-000000B7", "1?skipprepend") in new stack
-- Goto (followme-sub,148,19)
-- Executing [148@followme-sub:19] Set("SCCP/147-000000B7", "RecordMethod=Group") in new stack
-- Executing [148@followme-sub:20] Gosub("SCCP/147-000000B7", "sub-record-check,s,1(exten,148,)") in new stack
-- Executing [s@sub-record-check:1] GotoIf("SCCP/147-000000B7", "0?initialized") in new stack
-- Executing [s@sub-record-check:2] Set("SCCP/147-000000B7", "__REC_STATUS=INITIALIZED") in new stack
-- Executing [s@sub-record-check:3] Set("SCCP/147-000000B7", "NOW=1634814402") in new stack
-- Executing [s@sub-record-check:4] Set("SCCP/147-000000B7", "__DAY=21") in new stack
-- Executing [s@sub-record-check:5] Set("SCCP/147-000000B7", "__MONTH=10") in new stack
-- Executing [s@sub-record-check:6] Set("SCCP/147-000000B7", "__YEAR=2021") in new stack
-- Executing [s@sub-record-check:7] Set("SCCP/147-000000B7", "__TIMESTR=20211021-130642") in new stack
-- Executing [s@sub-record-check:8] Set("SCCP/147-000000B7", "__FROMEXTEN=Han Boetes <0XXXXX147") in new stack
-- Executing [s@sub-record-check:9] Set("SCCP/147-000000B7", "__MON_FMT=wav") in new stack
-- Executing [s@sub-record-check:10] NoOp("SCCP/147-000000B7", "Recordings initialized") in new stack
-- Executing [s@sub-record-check:11] ExecIf("SCCP/147-000000B7", "1?Set(ARG3=dontcare)") in new stack
-- Executing [s@sub-record-check:12] Set("SCCP/147-000000B7", "REC_POLICY_MODE_SAVE=") in new stack
-- Executing [s@sub-record-check:13] ExecIf("SCCP/147-000000B7", "0?Set(REC_STATUS=NO)") in new stack
-- Executing [s@sub-record-check:14] GotoIf("SCCP/147-000000B7", "5?checkaction") in new stack
-- Goto (sub-record-check,s,17)
-- Executing [s@sub-record-check:17] GotoIf("SCCP/147-000000B7", "1?sub-record-check,exten,1") in new stack
-- Goto (sub-record-check,exten,1)
-- Executing [exten@sub-record-check:1] NoOp("SCCP/147-000000B7", "Exten Recording Check between Han Boetes <0XXXXX147 and 148") in new stack
-- Executing [exten@sub-record-check:2] Set("SCCP/147-000000B7", "CALLTYPE=internal") in new stack
-- Executing [exten@sub-record-check:3] ExecIf("SCCP/147-000000B7", "0?Set(CALLTYPE=)") in new stack
-- Executing [exten@sub-record-check:4] Set("SCCP/147-000000B7", "CALLEE=dontcare") in new stack
-- Executing [exten@sub-record-check:5] ExecIf("SCCP/147-000000B7", "0?Set(CALLEE=dontcare)") in new stack
-- Executing [exten@sub-record-check:6] GotoIf("SCCP/147-000000B7", "0?callee") in new stack
-- Executing [exten@sub-record-check:7] GotoIf("SCCP/147-000000B7", "1?caller") in new stack
-- Goto (sub-record-check,exten,13)
-- Executing [exten@sub-record-check:13] Set("SCCP/147-000000B7", "RECMODE=") in new stack
-- Executing [exten@sub-record-check:14] Set("SCCP/147-000000B7", "CALLERRECMODE=") in new stack
-- Executing [exten@sub-record-check:15] Set("SCCP/147-000000B7", "CALEERECMODE=dontcare") in new stack
-- Executing [exten@sub-record-check:16] GotoIf("SCCP/147-000000B7", "0?processnormal") in new stack
-- Executing [exten@sub-record-check:17] ExecIf("SCCP/147-000000B7", "0?Set(RECMODE=dontcare)") in new stack
-- Executing [exten@sub-record-check:18] ExecIf("SCCP/147-000000B7", "0?Set(RECMODE=dontcare)") in new stack
-- Executing [exten@sub-record-check:19] ExecIf("SCCP/147-000000B7", "0?Set(RECMODE=dontcare)") in new stack
-- Executing [exten@sub-record-check:20] ExecIf("SCCP/147-000000B7", "0?Set(RECMODE=dontcare)") in new stack
-- Executing [exten@sub-record-check:21] ExecIf("SCCP/147-000000B7", "1?Set(RECMODE=dontcare)") in new stack
-- Executing [exten@sub-record-check:22] ExecIf("SCCP/147-000000B7", "1?Set(RECMODE=dontcare)") in new stack
-- Executing [exten@sub-record-check:23] Gosub("SCCP/147-000000B7", "recordcheck,1(dontcare,internal,148)") in new stack
-- Executing [recordcheck@sub-record-check:1] NoOp("SCCP/147-000000B7", "Starting recording check against dontcare") in new stack
-- Executing [recordcheck@sub-record-check:2] Goto("SCCP/147-000000B7", "dontcare") in new stack
-- Goto (sub-record-check,recordcheck,3)
-- Executing [recordcheck@sub-record-check:3] Return("SCCP/147-000000B7", "") in new stack
-- Executing [exten@sub-record-check:24] Return("SCCP/147-000000B7", "") in new stack
-- Executing [148@followme-sub:21] GotoIf("SCCP/147-000000B7", "1?skipdring") in new stack
-- Goto (followme-sub,148,24)
-- Executing [148@followme-sub:24] Set("SCCP/147-000000B7", "STRATEGY=ringallv2-prim") in new stack
-- Executing [148@followme-sub:25] Set("SCCP/147-000000B7", "__RVOL=") in new stack
-- Executing [148@followme-sub:26] GotoIf("SCCP/147-000000B7", "1?skipsimple") in new stack
-- Goto (followme-sub,148,29)
-- Executing [148@followme-sub:29] Set("SCCP/147-000000B7", "RingGroupMethod=ringallv2-prim") in new stack
-- Executing [148@followme-sub:30] Set("SCCP/147-000000B7", "_FMGRP=148") in new stack
-- Executing [148@followme-sub:31] GotoIf("SCCP/147-000000B7", "1?DIALGRP") in new stack
-- Goto (followme-sub,148,35)
-- Executing [148@followme-sub:35] ExecIf("SCCP/147-000000B7", "1?Set(DOPTS=HhTtrI):Set(DOPTS=m(Ring)HhTtI)") in new stack
-- Executing [148@followme-sub:36] Set("SCCP/147-000000B7", "__ALT_CONFIRM_MSG=") in new stack
-- Executing [148@followme-sub:37] GotoIf("SCCP/147-000000B7", "0?doconfirm") in new stack
-- Executing [148@followme-sub:38] GotoIf("SCCP/147-000000B7", "1?ringallv21") in new stack
-- Goto (followme-sub,148,41)
-- Executing [148@followme-sub:41] Macro("SCCP/147-000000B7", "dial,20,HhTtrI,148-142") in new stack
-- Executing [s@macro-dial:1] NoOp("SCCP/147-000000B7", "Blind Transfer: , Attended Transfer: , User: , Alert Info: ") in new stack
-- Executing [s@macro-dial:2] Set("SCCP/147-000000B7", "__CRM_SOURCE="Han Boetes" <0XXXXX147") in new stack
-- Executing [s@macro-dial:3] ExecIf("SCCP/147-000000B7", "0?Set(ALERT_INFO=)") in new stack
-- Executing [s@macro-dial:4] ExecIf("SCCP/147-000000B7", "0?Set(ALERT_INFO=)") in new stack
-- Executing [s@macro-dial:5] ExecIf("SCCP/147-000000B7", "0?Set(ALERT_INFO=)") in new stack
-- Executing [s@macro-dial:6] ExecIf("SCCP/147-000000B7", "0?Set(CHANNEL(musicclass)=)") in new stack
-- Executing [s@macro-dial:7] AGI("SCCP/147-000000B7", "dialparties.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
dialparties.agi: Starting New Dialparties.agi
dialparties.agi: Caller ID name is 'Han Boetes' number is 'Han
dialparties.agi: CW Ignore is:
dialparties.agi: CF Ignore is:
dialparties.agi: CW IN_USE/BUSY is: 1
dialparties.agi: Ringgroup confirm is :
> dialparties.agi: USE_CONFIRMATION: 'FALSE'
> dialparties.agi: RINGGROUP_INDEX: ''
dialparties.agi: Methodology of ring is 'ringallv2-prim'
-- dialparties.agi: Added extension 148 to extension map
-- dialparties.agi: Added extension 142 to extension map
> dialparties.agi: got fmgrp_prering: 2, fmgrp_grptime: 20
> dialparties.agi: fmgrp_totalprering: 22
> dialparties.agi: found extension in pre-ring and array
> dialparties.agi: ringallv2 ring times: REALPRERING: 22, PRERING: 2
-- dialparties.agi: Extension 148 cf is disabled
-- dialparties.agi: Extension 142 cf is disabled
-- dialparties.agi: Extension 148 do not disturb is disabled
-- dialparties.agi: Extension 142 do not disturb is disabled
> dialparties.agi: extnum 148 has: cw: 0; hascfb: 0 [] hascfu: 0 []
dialparties.agi: EXTENSION_STATE: 0 (NOT_INUSE)
dialparties.agi: Extension 148 has ExtensionState: 0
dialparties.agi: EXTENSION_STATE: 0 (NOT_INUSE)
dialparties.agi: Extension 148 has ExtensionState: 0
-- dialparties.agi: Checking CW and CFB status for extension 148
-- dialparties.agi: DbDel CALLTRACE/148 - Caller ID is not defined
> dialparties.agi: extnum 142 has: cw: 0; hascfb: 0 [] hascfu: 0 []
dialparties.agi: EXTENSION_STATE: 4 (UNAVAILABLE)
dialparties.agi: Extension 142 has ExtensionState: 4
-- dialparties.agi: Checking CW and CFB status for extension 142
dialparties.agi: Extension 142 is not available to be called
-- dialparties.agi: Filtered ARG3: 148
-- dialparties.agi: RING ALL V2 : 142
> dialparties.agi: NODEST: 148 adding M(auto-blkvm) to dialopts: HhTtrIM(auto-blkvm)
> dialparties.agi: NODEST: 148 blkvm enabled macro already in dialopts: HhTtrIM(auto-blkvm)
dialparties.agi: RVOL_MODE ''
dialparties.agi: RVOL is:
dialparties.agi: RVOLPARENT is:
-- <SCCP/147-000000B7>AGI Script dialparties.agi completed, returning 0
-- Executing [s@macro-dial:8] GotoIf("SCCP/147-000000B7", "1?normdial") in new stack
-- Goto (macro-dial,s,11)
-- Executing [s@macro-dial:11] NoOp("SCCP/147-000000B7", "Returned from dialparties with groups to dial") in new stack
-- Executing [s@macro-dial:12] NoOp("SCCP/147-000000B7", "ringall array 142 ") in new stack
-- Executing [s@macro-dial:13] Set("SCCP/147-000000B7", "__FMGL_DIAL=142") in new stack
-- Executing [s@macro-dial:14] Set("SCCP/147-000000B7", "LOOPCNT=1") in new stack
-- Executing [s@macro-dial:15] Set("SCCP/147-000000B7", "ITER=1") in new stack
-- Executing [s@macro-dial:16] Set("SCCP/147-000000B7", "__EXTTOCALL=148") in new stack
-- Executing [s@macro-dial:17] NoOp("SCCP/147-000000B7", "Working with 148") in new stack
-- Executing [s@macro-dial:18] ExecIf("SCCP/147-000000B7", "0?Set(HASH(__SIPHEADERS,Alert-Info)=Normal;volume=)") in new stack
-- Executing [s@macro-dial:19] ExecIf("SCCP/147-000000B7", "0?Set(HASH(__SIPHEADERS,Alert-Info)=Normal;volume=)") in new stack
-- Executing [s@macro-dial:20] Set("SCCP/147-000000B7", "ITER=2") in new stack
-- Executing [s@macro-dial:21] GotoIf("SCCP/147-000000B7", "0?ndloopbegin") in new stack
-- Executing [s@macro-dial:22] Macro("SCCP/147-000000B7", "dial-ringall-predial-hook,") in new stack
-- Executing [s@macro-dial-ringall-predial-hook:1] MacroExit("SCCP/147-000000B7", "") in new stack
-- Executing [s@macro-dial:23] ExecIf("SCCP/147-000000B7", "0?Set(CWRING=r(callwaiting)):Set(CWRING=)") in new stack
-- Executing [s@macro-dial:24] ExecIf("SCCP/147-000000B7", "0?Set(ds=Local/FMPR-148@from-internal&Local/FMGL-142@from-internal,22,HhTtrIM(auto-blkvm)g)") in new stack
-- Executing [s@macro-dial:25] Dial("SCCP/147-000000B7", "Local/FMPR-148@from-internal&Local/FMGL-142@from-internal,22,HhTtrIM(auto-blkvm)b(func-apply-sipheaders^s^1),") in new stack
-- Local/FMPR-148@from-internal-0000007f;1 Internal Gosub(func-apply-sipheaders,s,1) start
-- Executing [s@func-apply-sipheaders:1] ExecIf("Local/FMPR-148@from-internal-0000007f;1", "0?Set(CHANNEL(hangup_handler_push)=crm-hangup,s,1)") in new stack
-- Executing [s@func-apply-sipheaders:2] NoOp("Local/FMPR-148@from-internal-0000007f;1", "Applying SIP Headers to channel Local/FMPR-148@from-internal-0000007f;1") in new stack
-- Executing [s@func-apply-sipheaders:3] Set("Local/FMPR-148@from-internal-0000007f;1", "TECH=Local") in new stack
-- Executing [s@func-apply-sipheaders:4] Set("Local/FMPR-148@from-internal-0000007f;1", "SIPHEADERKEYS=") in new stack
-- Executing [s@func-apply-sipheaders:5] While("Local/FMPR-148@from-internal-0000007f;1", "0") in new stack
-- Jumping to priority 13
-- Executing [s@func-apply-sipheaders:14] Return("Local/FMPR-148@from-internal-0000007f;1", "") in new stack
== Spawn extension (from-internal, 148, 1) exited non-zero on 'Local/FMPR-148@from-internal-0000007f;1'
-- Local/FMPR-148@from-internal-0000007f;1 Internal Gosub(func-apply-sipheaders,s,1) complete GOSUB_RETVAL=
-- Local/FMGL-142@from-internal-00000080;1 Internal Gosub(func-apply-sipheaders,s,1) start
-- Executing [s@func-apply-sipheaders:1] ExecIf("Local/FMGL-142@from-internal-00000080;1", "0?Set(CHANNEL(hangup_handler_push)=crm-hangup,s,1)") in new stack
-- Executing [s@func-apply-sipheaders:2] NoOp("Local/FMGL-142@from-internal-00000080;1", "Applying SIP Headers to channel Local/FMGL-142@from-internal-00000080;1") in new stack
-- Executing [s@func-apply-sipheaders:3] Set("Local/FMGL-142@from-internal-00000080;1", "TECH=Local") in new stack
-- Executing [s@func-apply-sipheaders:4] Set("Local/FMGL-142@from-internal-00000080;1", "SIPHEADERKEYS=") in new stack
-- Executing [s@func-apply-sipheaders:5] While("Local/FMGL-142@from-internal-00000080;1", "0") in new stack
-- Jumping to priority 13
-- Executing [s@func-apply-sipheaders:14] Return("Local/FMGL-142@from-internal-00000080;1", "") in new stack
== Spawn extension (from-internal, 148, 1) exited non-zero on 'Local/FMGL-142@from-internal-00000080;1'
-- Local/FMGL-142@from-internal-00000080;1 Internal Gosub(func-apply-sipheaders,s,1) complete GOSUB_RETVAL=
-- Called Local/FMPR-148@from-internal
-- Called Local/FMGL-142@from-internal
-- Executing [FMGL-142@from-internal:1] Set("Local/FMGL-142@from-internal-00000080;2", "CDR_PROP(disable)=true") in new stack
-- Executing [FMGL-142@from-internal:2] Set("Local/FMGL-142@from-internal-00000080;2", "DIALNUMS=142") in new stack
-- Executing [FMGL-142@from-internal:3] Set("Local/FMGL-142@from-internal-00000080;2", "ENDLOOP=1634814404") in new stack
-- Executing [FMGL-142@from-internal:4] GotoIf("Local/FMGL-142@from-internal-00000080;2", "0?dodnd") in new stack
-- Executing [FMGL-142@from-internal:5] Wait("Local/FMGL-142@from-internal-00000080;2", "1") in new stack
-- Executing [FMPR-148@from-internal:1] Set("Local/FMPR-148@from-internal-0000007f;2", "CDR_PROP(disable)=true") in new stack
-- Executing [FMPR-148@from-internal:2] Set("Local/FMPR-148@from-internal-0000007f;2", "RingGroupMethod=") in new stack
-- Executing [FMPR-148@from-internal:3] Set("Local/FMPR-148@from-internal-0000007f;2", "USE_CONFIRMATION=") in new stack
-- Executing [FMPR-148@from-internal:4] Set("Local/FMPR-148@from-internal-0000007f;2", "RINGGROUP_INDEX=") in new stack
-- Executing [FMPR-148@from-internal:5] Macro("Local/FMPR-148@from-internal-0000007f;2", "simple-dial,148,22") in new stack
-- Executing [s@macro-simple-dial:1] Set("Local/FMPR-148@from-internal-0000007f;2", "__EXTTOCALL=148") in new stack
-- Executing [s@macro-simple-dial:2] Set("Local/FMPR-148@from-internal-0000007f;2", "RT=22") in new stack
-- Executing [s@macro-simple-dial:3] Set("Local/FMPR-148@from-internal-0000007f;2", "CFUEXT=") in new stack
-- Executing [s@macro-simple-dial:4] Set("Local/FMPR-148@from-internal-0000007f;2", "CFBEXT=") in new stack
-- Executing [s@macro-simple-dial:5] Set("Local/FMPR-148@from-internal-0000007f;2", "CWI_TMP=") in new stack
-- Executing [s@macro-simple-dial:6] Macro("Local/FMPR-148@from-internal-0000007f;2", "dial-one,22,HhTtr,148") in new stack
-- Executing [s@macro-dial-one:1] Set("Local/FMPR-148@from-internal-0000007f;2", "DEXTEN=148") in new stack
-- Executing [s@macro-dial-one:2] Set("Local/FMPR-148@from-internal-0000007f;2", "__CRM_SOURCE="Han Boetes" <0XXXXX147") in new stack
-- Executing [s@macro-dial-one:3] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(__EXTTOCALL=148)") in new stack
-- Executing [s@macro-dial-one:4] Set("Local/FMPR-148@from-internal-0000007f;2", "DIALSTATUS_CW=") in new stack
-- Executing [s@macro-dial-one:5] GosubIf("Local/FMPR-148@from-internal-0000007f;2", "0?screen,1()") in new stack
-- Executing [s@macro-dial-one:6] GosubIf("Local/FMPR-148@from-internal-0000007f;2", "0?cf,1()") in new stack
-- Executing [s@macro-dial-one:7] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?skip1") in new stack
-- Goto (macro-dial-one,s,10)
-- Executing [s@macro-dial-one:10] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?nodial") in new stack
-- Executing [s@macro-dial-one:11] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?continue") in new stack
-- Executing [s@macro-dial-one:12] Set("Local/FMPR-148@from-internal-0000007f;2", "EXTHASCW=") in new stack
-- Executing [s@macro-dial-one:13] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?next1:cwinusebusy") in new stack
-- Goto (macro-dial-one,s,14)
-- Executing [s@macro-dial-one:14] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?docfu:skip3") in new stack
-- Goto (macro-dial-one,s,18)
-- Executing [s@macro-dial-one:18] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?next2:continue") in new stack
-- Goto (macro-dial-one,s,19)
-- Executing [s@macro-dial-one:19] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?continue") in new stack
-- Goto (macro-dial-one,s,27)
-- Executing [s@macro-dial-one:27] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?nodial") in new stack
-- Executing [s@macro-dial-one:28] GosubIf("Local/FMPR-148@from-internal-0000007f;2", "1?dstring,1():dlocal,1()") in new stack
-- Executing [dstring@macro-dial-one:1] Set("Local/FMPR-148@from-internal-0000007f;2", "DSTRING=") in new stack
-- Executing [dstring@macro-dial-one:2] Set("Local/FMPR-148@from-internal-0000007f;2", "DEVICES=148&99148") in new stack
-- Executing [dstring@macro-dial-one:3] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Return()") in new stack
-- Executing [dstring@macro-dial-one:4] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(DEVICES=48&99148)") in new stack
-- Executing [dstring@macro-dial-one:5] Set("Local/FMPR-148@from-internal-0000007f;2", "LOOPCNT=2") in new stack
-- Executing [dstring@macro-dial-one:6] Set("Local/FMPR-148@from-internal-0000007f;2", "ITER=1") in new stack
-- Executing [dstring@macro-dial-one:7] Set("Local/FMPR-148@from-internal-0000007f;2", "THISDIAL=SCCP/148") in new stack
-- Executing [dstring@macro-dial-one:8] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?docheck") in new stack
-- Goto (macro-dial-one,dstring,14)
-- Executing [dstring@macro-dial-one:14] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?skipset") in new stack
-- Executing [dstring@macro-dial-one:15] Set("Local/FMPR-148@from-internal-0000007f;2", "DSTRING=SCCP/148&") in new stack
-- Executing [dstring@macro-dial-one:16] Set("Local/FMPR-148@from-internal-0000007f;2", "ITER=2") in new stack
-- Executing [dstring@macro-dial-one:17] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?begin") in new stack
-- Goto (macro-dial-one,dstring,7)
-- Executing [dstring@macro-dial-one:7] Set("Local/FMPR-148@from-internal-0000007f;2", "THISDIAL=SIP/99148") in new stack
-- Executing [dstring@macro-dial-one:8] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?docheck") in new stack
-- Goto (macro-dial-one,dstring,14)
-- Executing [dstring@macro-dial-one:14] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?skipset") in new stack
-- Executing [dstring@macro-dial-one:15] Set("Local/FMPR-148@from-internal-0000007f;2", "DSTRING=SCCP/148&SIP/99148&") in new stack
-- Executing [dstring@macro-dial-one:16] Set("Local/FMPR-148@from-internal-0000007f;2", "ITER=3") in new stack
-- Executing [dstring@macro-dial-one:17] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?begin") in new stack
-- Executing [dstring@macro-dial-one:18] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Return()") in new stack
-- Executing [dstring@macro-dial-one:19] Set("Local/FMPR-148@from-internal-0000007f;2", "DSTRING=SCCP/148&SIP/99148") in new stack
-- Executing [dstring@macro-dial-one:20] Return("Local/FMPR-148@from-internal-0000007f;2", "") in new stack
-- Executing [s@macro-dial-one:29] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?nodial") in new stack
-- Executing [s@macro-dial-one:30] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?skiptrace") in new stack
-- Executing [s@macro-dial-one:31] GosubIf("Local/FMPR-148@from-internal-0000007f;2", "0?ctset,1():ctclear,1()") in new stack
-- Executing [ctclear@macro-dial-one:1] NoOp("Local/FMPR-148@from-internal-0000007f;2", "Deleting: CALLTRACE/148 ") in new stack
-- Executing [ctclear@macro-dial-one:2] Return("Local/FMPR-148@from-internal-0000007f;2", "") in new stack
-- Executing [s@macro-dial-one:32] Set("Local/FMPR-148@from-internal-0000007f;2", "D_OPTIONS=HhTtrM(auto-blkvm)") in new stack
-- Executing [s@macro-dial-one:33] GosubIf("Local/FMPR-148@from-internal-0000007f;2", "0?func-set-sipheader,s,1(Alert-Info,)") in new stack
-- Executing [s@macro-dial-one:34] NoOp("Local/FMPR-148@from-internal-0000007f;2", "Blind Transfer: , Attended Transfer: , User: , Alert Info: ") in new stack
-- Executing [s@macro-dial-one:35] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(ALERT_INFO=)") in new stack
-- Executing [s@macro-dial-one:36] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(ALERT_INFO=)") in new stack
-- Executing [s@macro-dial-one:37] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(ALERT_INFO=)") in new stack
-- Executing [s@macro-dial-one:38] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(ALERT_INFO=Normal;volume=)") in new stack
-- Executing [s@macro-dial-one:39] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(ALERT_INFO=Normal;volume=)") in new stack
-- Executing [s@macro-dial-one:40] GosubIf("Local/FMPR-148@from-internal-0000007f;2", "0?func-set-sipheader,s,1(Alert-Info,)") in new stack
-- Executing [s@macro-dial-one:41] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(CHANNEL(musicclass)=)") in new stack
-- Executing [s@macro-dial-one:42] GosubIf("Local/FMPR-148@from-internal-0000007f;2", "0?qwait,1()") in new stack
-- Executing [s@macro-dial-one:43] Set("Local/FMPR-148@from-internal-0000007f;2", "__CWIGNORE=") in new stack
-- Executing [s@macro-dial-one:44] Set("Local/FMPR-148@from-internal-0000007f;2", "__KEEPCID=TRUE") in new stack
-- Executing [s@macro-dial-one:45] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "0?usegoto,1") in new stack
-- Executing [s@macro-dial-one:46] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?godial") in new stack
-- Goto (macro-dial-one,s,51)
-- Executing [s@macro-dial-one:51] Macro("Local/FMPR-148@from-internal-0000007f;2", "dialout-one-predial-hook,") in new stack
-- Executing [s@macro-dialout-one-predial-hook:1] MacroExit("Local/FMPR-148@from-internal-0000007f;2", "") in new stack
-- Executing [s@macro-dial-one:52] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(D_OPTIONS=HhtrM(auto-blkvm)I)") in new stack
-- Executing [s@macro-dial-one:53] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(CWRING=r(callwaiting)):Set(CWRING=)") in new stack
-- Executing [s@macro-dial-one:54] NoOp("Local/FMPR-148@from-internal-0000007f;2", "") in new stack
-- Executing [s@macro-dial-one:55] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(D_OPTIONS=HhTtrM(auto-blkvm)g)") in new stack
-- Executing [s@macro-dial-one:56] Dial("Local/FMPR-148@from-internal-0000007f;2", "SCCP/148&SIP/99148,22,HhTtrM(auto-blkvm)b(func-apply-sipheaders^s^1)") in new stack
[2021-10-21 13:06:42] WARNING[24786][C-0000002d]: app_dial.c:2589 dial_exec_full: Unable to create channel of type 'SIP' (cause 20 - Subscriber absent)
-- SCCP/148-000000B8 Internal Gosub(func-apply-sipheaders,s,1) start
-- Executing [s@func-apply-sipheaders:1] ExecIf("SCCP/148-000000B8", "0?Set(CHANNEL(hangup_handler_push)=crm-hangup,s,1)") in new stack
-- Executing [s@func-apply-sipheaders:2] NoOp("SCCP/148-000000B8", "Applying SIP Headers to channel SCCP/148-000000B8") in new stack
-- Executing [s@func-apply-sipheaders:3] Set("SCCP/148-000000B8", "TECH=SCCP") in new stack
-- Executing [s@func-apply-sipheaders:4] Set("SCCP/148-000000B8", "SIPHEADERKEYS=") in new stack
-- Executing [s@func-apply-sipheaders:5] While("SCCP/148-000000B8", "0") in new stack
-- Jumping to priority 13
-- Executing [s@func-apply-sipheaders:14] Return("SCCP/148-000000B8", "") in new stack
== Spawn extension (from-internal, FMPR-148, 1) exited non-zero on 'SCCP/148-000000B8'
-- SCCP/148-000000B8 Internal Gosub(func-apply-sipheaders,s,1) complete GOSUB_RETVAL=
-- Called SCCP/148
-- SCCP/148-000000B8 is ringing
-- Local/FMPR-148@from-internal-0000007f;1 is ringing
-- Connected line update to SCCP/147-000000B7 prevented.
-- Local/FMPR-148@from-internal-0000007f;1 is ringing
-- Executing [FMGL-142@from-internal:6] GotoIf("Local/FMGL-142@from-internal-00000080;2", "1?start") in new stack
-- Goto (from-internal,FMGL-142,4)
-- Executing [FMGL-142@from-internal:4] GotoIf("Local/FMGL-142@from-internal-00000080;2", "0?dodnd") in new stack
-- Executing [FMGL-142@from-internal:5] Wait("Local/FMGL-142@from-internal-00000080;2", "1") in new stack
== Spawn extension (macro-dial, s, 25) exited non-zero on 'SCCP/147-000000B7' in macro 'dial'
== Spawn extension (followme-sub, 148, 41) exited non-zero on 'SCCP/147-000000B7'
== Spawn extension (from-internal, FMGL-142, 5) exited non-zero on 'Local/FMGL-142@from-internal-00000080;2'
-- Executing [h@from-internal:1] Macro("Local/FMGL-142@from-internal-00000080;2", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("Local/FMGL-142@from-internal-00000080;2", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:3] ExecIf("Local/FMGL-142@from-internal-00000080;2", "0?Set(CDR(recordingfile)=)") in new stack
== Spawn extension (macro-dial-one, s, 56) exited non-zero on 'Local/FMPR-148@from-internal-0000007f;2' in macro 'dial-one'
== Spawn extension (macro-simple-dial, s, 6) exited non-zero on 'Local/FMPR-148@from-internal-0000007f;2' in macro 'simple-dial'
== Spawn extension (from-internal, FMPR-148, 5) exited non-zero on 'Local/FMPR-148@from-internal-0000007f;2'
-- Executing [h@from-internal:1] Macro("Local/FMPR-148@from-internal-0000007f;2", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?theend") in new stack
-- Goto (macro-hangupcall,s,3)
-- Executing [s@macro-hangupcall:4] NoOp("Local/FMGL-142@from-internal-00000080;2", " montior file= ") in new stack
-- Executing [s@macro-hangupcall:5] GotoIf("Local/FMGL-142@from-internal-00000080;2", "1?skipagi") in new stack
-- Goto (macro-hangupcall,s,7)
-- Executing [s@macro-hangupcall:7] Hangup("Local/FMGL-142@from-internal-00000080;2", "") in new stack
== Spawn extension (macro-hangupcall, s, 7) exited non-zero on 'Local/FMGL-142@from-internal-00000080;2' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'Local/FMGL-142@from-internal-00000080;2'
-- Executing [s@macro-hangupcall:3] ExecIf("Local/FMPR-148@from-internal-0000007f;2", "0?Set(CDR(recordingfile)=)") in new stack
-- Executing [s@macro-hangupcall:4] NoOp("Local/FMPR-148@from-internal-0000007f;2", "SCCP/148-000000B8 montior file= ") in new stack
-- Executing [s@macro-hangupcall:5] GotoIf("Local/FMPR-148@from-internal-0000007f;2", "1?skipagi") in new stack
-- Goto (macro-hangupcall,s,7)
-- Executing [s@macro-hangupcall:7] Hangup("Local/FMPR-148@from-internal-0000007f;2", "") in new stack
== Spawn extension (macro-hangupcall, s, 7) exited non-zero on 'Local/FMPR-148@from-internal-0000007f;2' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'Local/FMPR-148@from-internal-0000007f;2'
asterix*CLI> exit
Ubuntu 20.04. asterisk 16 freepbx 15. chan-sccp compiled, installed and installed by given instruction. But can't install sccp_manager, getting a message:
Installing sccp_manager
Updating tables sccpdevice, sccpline, sccpbuttonconfig, sccpdevmodel, sccpuser, sccpsettings...Done
Checking for required Sccp_manager database tables..
Checking Asterisk Version :
Sccp model Compatible code :
Chan Sccp not Found. Install it before continuing !
What's wrong? How explain/point to sccp_manager installation that chan_sccp module succefully installed?
Hi,
In a multinode environment (2 nodes at least; primary/secondary, or as Cisco calls it, publisher and subcscriber(s)), phones have the ability to register to the primary node and open a TCP/SCCP connection toward the secondary (and tertiary) nodes (3 nodes max. in a call manager group according to Cisco).
When the primary node fails (TCP or SCCP keepalives are lost), phone reverts to next one in the CM group.
More about it here:
https://github.com/chan-sccp/chan-sccp/wiki/Keepalive-and-Failover-Architecture and
https://github.com/chan-sccp/chan-sccp/wiki/registration,-keepalive-and-srst
Additional callmanagers should be added to the phone config xml (two node example). processNodeName, name, description should be changed accordingly:
<devicePool>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
</ports>
<processNodeName>192.168.1.228</processNodeName>
<name>Asterisk</name>
<description>Asterisk</description>
</callManager>
</member>
<member priority="1">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
</ports>
<processNodeName>192.168.1.229</processNodeName>
<name>Asterisk2</name>
<description>Asterisk2</description>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
Screenshot from the Cisco IP Communicator softphone (Settings -> Device configuration) and two node asterisk setup:
sccp manager
have support for provision module from this git: https://github.com/dkgroot/provision_sccp
.
But file sccp_manager/contrib/rewrite.rules
that goes with sccp manager
contains regex expression errors.
I fixed errors that I found while testing tftp provision with 7911/12/14/40/60 cisco phone models:
rewrite.rules
#
# TFTPd Rewrite for SCCP_Manager Custom remaping
# /firmware
# /settings
# /wallpapers
# /ringtones
# /locales
#
# 6901 firmware (java-based)
ri ^(APP6901SCCP)(.+\.sgn)$ firmware/6901/\1\2
ri ^(KNL6901SCCP)(.+\.sgn)$ firmware/6901/\1\2
ri ^(SCCP6901)(.+\.loads)$ firmware/6901/\1\2
# 6911 firmware (java-based)
ri ^(APP6911SCCP)(.+\.sgn)$ firmware/6911/\1\2
ri ^(BFS6911SCCP)(.+\.sgn)$ firmware/6911/\1\2
ri ^(KNL6911SCCP)(.+\.sgn)$ firmware/6911/\1\2
ri ^(SCCP6911)(.+\.loads)$ firmware/6911/\1\2
# 6921 firmware (java-based)
ri ^(BOOT69xx)(.+\.sgn)$ firmware/6921/\1\2
ri ^(DSP69xx)(.+\.sgn)$ firmware/6921/\1\2
ri ^(SCCP69xx)(.+\.loads)$ firmware/6921/\1\2
ri ^(SCCP69xx)(.+\.sgn)$ firmware/6921/\1\2
# 6945 firmware (java-based)
ri ^(SCCP6945)(.+\.sgn)$ firmware/6945/\1\2
ri ^(SCCP6945)(.+\.loads)$ firmware/6945/\1\2
# 69xx firmware (java-based)
ri ^(BOOT69xx)(.+\.sgn)$ firmware/69xx/\1\2
ri ^(DSP69xx)(.+\.sgn)$ firmware/69xx/\1\2
ri ^(SCCP69xx)(.+\.loads)$ firmware/69xx/\1\2
ri ^(SCCP69xx)(.+\.sgn)$ firmware/69xx/\1\2
# 7902 firmware (ancient)
ri ^(CP7902080002SCCP060817A.sbin)$ firmware/7902/\1
# 7905 firmware (ancient)
ri ^(CP7905080003SCCP070409A.sbin)$ firmware/7905/\1
ri ^(CP7905080003SCCP070409A.zup)$ firmware/7905/\1
# 7906_7911 firmware (java-based)
ri ^(apps11)(.+\.sbn)$ firmware/7906/\1\2
ri ^(cnu11)(.+\.sbn)$ firmware/7906/\1\2
ri ^(cvm11sccp)(.+\.sbn)$ firmware/7906/\1\2
ri ^(dsp11)(.+\.sbn)$ firmware/7906/\1\2
ri ^(jar11sccp)(.+\.sbn)$ firmware/7906/\1\2
ri ^(SCCP11)(.+\.loads)$ firmware/7906/\1\2
ri ^(term06)(.+\.loads)$ firmware/7906/\1\2
ri ^(term11)(.+\.loads)$ firmware/7906/\1\2
# 7910 firmware (ancient)
ri ^(P00405000700.bin)$ firmware/7910/\1
ri ^(P00405000700.sbn)$ firmware/7910/\1
# 7912 firmware (ancient)
ri ^(CP7912080004SCCP080108A.sbin)$ firmware/7912/\1
# 7915 firmware (ancient)
ri ^(B015-1-0-)(.+\.SBN)$ firmware/7915/\1\2
# 7916 firmware (ancient)
ri ^(B016-1-0-)(.+\.SBN)$ firmware/7916/\1\2
# 7920 firmware (ancient)
ri ^(cmterm_7920)(.+\.bin)$ firmware/7920/\1\2
# 7921_7925 firmware (ancient)
ri ^(APPS-1.4.3.4.SBN)$ firmware/7921/\1
ri ^(CP7921G-1.4.3.4.LOADS)$ firmware/7921/\1
ri ^(GUI-1.4.3.4.SBN)$ firmware/7921/\1
ri ^(SYS-1.4.3.4.SBN)$ firmware/7921/\1
ri ^(TNUX-1.4.3.4.SBN)$ firmware/7921/\1
ri ^(TNUXR-1.4.3.4.SBN)$ firmware/7921/\1
ri ^(WLAN-1.4.3.4.SBN)$ firmware/7921/\1
# 7926 firmware (ancient)
ri ^(APPSS-1.4.1SR1.SBN)$ firmware/7926/\1
ri ^(CP7926G-1.4.1SR1.LOADS)$ firmware/7926/\1
ri ^(EA15FW-BF3-220.SBN)$ firmware/7926/\1
ri ^(GUIS-1.4.1SR1.SBN)$ firmware/7926/\1
ri ^(JSYSS-1.4.1SR1.SBN)$ firmware/7926/\1
ri ^(JUIS-1.4.1SR1.SBN)$ firmware/7926/\1
ri ^(SYSS-1.4.1SR1.SBN)$ firmware/7926/\1
ri ^(TNUXRS-1.4.1SR1.SBN)$ firmware/7926/\1
ri ^(TNUXS-1.4.1SR1.SBN)$ firmware/7926/\1
ri ^(WLANS-1.4.1SR1.SBN)$ firmware/7926/\1
# 7931 firmware (java-based)
ri ^(apps31)(.+\.sbn)$ firmware/7931/\1\2
ri ^(cnu31)(.+\.sbn)$ firmware/7931/\1\2
ri ^(cvm31sccp)(.+\.sbn)$ firmware/7931/\1\2
ri ^(dsp31)(.+\.sbn)$ firmware/7931/\1\2
ri ^(jar31sccp)(.+\.sbn)$ firmware/7931/\1\2
ri ^(SCCP31)(.+\.loads)$ firmware/7931/\1\2
ri ^(term31)(.+\.loads)$ firmware/7931/\1\2
# 7935 firmware (ancient)
ri ^(P00503021900.bin)$ firmware/7935/\1
# 7936 firmware (ancient)
ri ^(cmterm_7936.3-3-21-0.bin)$ firmware/7936/\1
# 7937 firmware (ancient)
ri ^(apps37sccp.1-4-5-7.bin)$ firmware/7937/\1
# 7940_7960 firmware (ancient)
ri ^(P0030801SR)(.+\.bin)$ firmware/7940/\1\2
ri ^(P0030801SR)(.+\.loads)$ firmware/7940/\1\2
ri ^(P0030801SR)(.+\.sb2)$ firmware/7940/\1\2
ri ^(P0030801SR)(.+\.sbn)$ firmware/7940/\1\2
# 7941_7961 firmware (java-based)
ri ^(apps41)(.+\.sbn)$ firmware/7941/\1\2
ri ^(cnu41)(.+\.sbn)$ firmware/7941/\1\2
ri ^(cvm41sccp)(.+\.sbn)$ firmware/7941/\1\2
ri ^(dsp41)(.+\.sbn)$ firmware/7941/\1\2
ri ^(jar41sccp)(.+\.sbn)$ firmware/7941/\1\2
ri ^(SCCP41)(.+\.loads)$ firmware/7941/\1\2
ri ^(term41)(.+\.loads)$ firmware/7941/\1\2
ri ^(term61)(.+\.loads)$ firmware/7941/\1\2
# 7942_7962 firmware (java-based)
ri ^(apps42)(.+\.sbn)$ firmware/7942/\1\2
ri ^(cnu42)(.+\.sbn)$ firmware/7942/\1\2
ri ^(cvm42sccp)(.+\.sbn)$ firmware/7942/\1\2
ri ^(dsp42)(.+\.sbn)$ firmware/7942/\1\2
ri ^(jar42sccp)(.+\.sbn)$ firmware/7942/\1\2
ri ^(SCCP42)(.+\.loads)$ firmware/7942/\1\2
ri ^(term42)(.+\.loads)$ firmware/7942/\1\2
ri ^(term62)(.+\.loads)$ firmware/7942/\1\2
# 7945_7965 firmware (java-based)
ri ^(apps45)(.+\.sbn)$ firmware/7945/\1\2
ri ^(cnu45)(.+\.sbn)$ firmware/7945/\1\2
ri ^(cvm45sccp)(.+\.sbn)$ firmware/7945/\1\2
ri ^(dsp45)(.+\.sbn)$ firmware/7945/\1\2
ri ^(jar45sccp)(.+\.sbn)$ firmware/7945/\1\2
ri ^(SCCP45)(.+\.loads)$ firmware/7945/\1\2
ri ^(term45)(.+\.loads)$ firmware/7945/\1\2
ri ^(term65)(.+\.loads)$ firmware/7945/\1\2
# 7970_7971 firmware (java-based)
ri ^(apps70)(.+\.sbn)$ firmware/7970/\1\2
ri ^(cnu70)(.+\.sbn)$ firmware/7970/\1\2
ri ^(cvm70sccp)(.+\.sbn)$ firmware/7970/\1\2
ri ^(dsp70)(.+\.sbn)$ firmware/7970/\1\2
ri ^(jar70sccp)(.+\.sbn)$ firmware/7970/\1\2
ri ^(SCCP70)(.+\.loads)$ firmware/7970/\1\2
ri ^(term70)(.+\.loads)$ firmware/7970/\1\2
ri ^(term71)(.+\.loads)$ firmware/7970/\1\2
# 7975 firmware (java-based)
ri ^(apps75)(.+\.sbn)$ firmware/7975/\1\2
ri ^(cnu75)(.+\.sbn)$ firmware/7975/\1\2
ri ^(cvm75sccp)(.+\.sbn)$ firmware/7975/\1\2
ri ^(dsp75)(.+\.sbn)$ firmware/7975/\1\2
ri ^(jar75sccp)(.+\.sbn)$ firmware/7975/\1\2
ri ^(SCCP75)(.+\.loads)$ firmware/7975/\1\2
ri ^(term75)(.+\.loads)$ firmware/7975/\1\2
# 7985 firmware (ancient)
ri ^(cmterm_7985.4-1-7-0.bin)$ firmware/7985/\1
# 894x firmware (java-based)
ri ^(BOOT894x)(.+\.sgn)$ firmware/894x/\1\2
ri ^(SCCP894x)(.+\.sgn)$ firmware/894x/\1\2
ri ^(SCCP894x)(.+\.loads)$ firmware/894x/\1\2
# ata186/ata188 firmware (ancient)
ri ^(ATA030204SCCP090202A.zup)$ firmware/ata186/\1
# Sub-Directory Handling
# settings
#ri ^(.+\.tlv)?$ settings/\1
#ri ^\/(.+\.tlv)?$ settings/\1
#ri ^((.+\.cnf.xml)(\.enc)?(\.sgn)?)$ settings/\1
#ri ^\/((.+\-cnf.xml)(\.enc)?(\.sgn)?)$ settings/\1
#ri ^\/((SPA504G-cfg.xml)(\.enc)?(\.sgn)?)$ settings/\1
# Keep firmware in a separate directory (optional)
#ri ^(.+\.loads)$ firmware/\1
#ri ^(.+\.sbn)$ firmware/\1
# Keep locales in a separate directory (optional)
ri ^(.+)\/(.+-sccp.jar)$ languages/\1/\2
ri ^(.+)\/(.+-sip.jar)$ languages/\1/\2
ri ^(.+)\/(.+-dictionary.xml)$ languages/\1/\2
ri ^(.+)\/(.+-dictionary-ext.xml)$ languages/\1/\2
ri ^(.+)\/(.+-tones.xml)$ languages/\1/\2
ri ^(.+)\/(.+-font.xml)$ languages/\1/\2
ri ^(.+)\/(.+-kate.xml)$ languages/\1/\2
ri ^(.+)\/(gk.+)(\.cfg)$ languages/\1/\2\3
#ri ^(.+)\/(.+-tones.xml)$ locales/countries/\1/\2
# Keep ring-tones in a separate directory (optional)
ri ^([R|r]ing[L|l]ist)(\.xml|-wb\.xml)(\.sgn)?$ ringtones/ringlist.xml
ri ^(Distinctive[R|r]ing[L|l]ist)(\.xml|-wb\.xml)(\.sgn)?$ ringtones/ringlist.xml
ri ^(.+)(\.raw|\.rwb|\.pcm)(\.sgn)?$ ringtones/\1\2\3
# Rename Desktops to wallpapers (optional)
#ri ^Desktops/(.+)/(List\.xml)(\.sgn)?$ wallpapers/\1/\2\3
#ri ^Desktops/(.+)/(.+\.png)(\.sgn)?$ wallpapers/\1/\2\3
ri ^authorized_keys$ settings/authorized_keys
#
# Generic Rules
#
ri ^[a-z]: # Remove "drive letters"
rg \\ / # Convert backslashes to slashes
rg \# @ # Convert hash marks to @ signs
rg /../ /..no../ # Convert /../ to /..no../
# e ^ok/ # These are always ok
# r ^[^/] /tftpboot/\0 # Convert non-absolute files
# a \.pvt$ # Reject requests for private files
Reported by @nortien
When creating a new SIP device, the default line assigned is an sccp line and not a sip line. Device create then fails as no line found which results in an exception.
Workaround: edit device buttons and this proposes only SIP lines
Can we add Http Provisioning to version 14.3 I believe that the previous versions did have this option, but with 14.3 not having an index.php in the /tftpboot directory I get an error when I go to <pbxipaddress>:6970.
Hi,
while upgrading from 14.2.0.1 to 14.2.0.3 via Module Admin I got following error:
Downloading and Installing sccp_manager
Downloading sccp_manager 0 of 143 (0%)
Error(s) downloading sccp_manager:
File Integrity failed for /var/www/html/admin/modules/_cache/v14.2.0.3.tar.gz - aborting (md5sum did not match)
Sccp Manager v14.5.0.4
At some point all newly created extensions does not have cid_num filled with extension number, therefore all internal calls from that extensions shows only info from cid_name column
(In fact it's a rather useful for cases, where i need to hide extension number in incoming calls, but i think FreePBX can handle such cases with other tools :) )
Here is a screenshot without filled cid_num
But, if i fill in Outbound CID - cid_num is correctly populating with my Outbound CID
And, if i remove Outbound CID for extension, cid_num is reverting to NULL
I just installed the freepbx 15 distro with asterisk 18. I did yum update and also updated all modules then installed chan-sccp succefully. When I was trying to install sccp-mangaer i faced 2 issues:
When you enable "hotline" in 'SCCP Server Settings':'SCCP Device' chan-sccp will allow unknown devices to register to chan-sccp and will automatically assign them a so called 'Hotline' / PLAR (Private Line Automatic Ringdown) extension . This is a somewhat insecure setting for production environments but very nice when you are setting up a new environment with a large number of phones.
I noticed how these Hotline devices are able to connect and already show up in the 'Phone Manager':'SCCP Phone' list, with their Device Identifier, Type, Description: *NEW*
and Status (So all the information we need is already there). But when you go to the config page for this device, the information is lost along the way.
Enhancement: When you select the edit/config action button at the end, that it would transfer this knowledge and already fill in the type of the phone and it's Device ID, so the whole procedure could be reduced to setting up the line button for it. It could even move you to the second tab immediately asking for the line to assign right away.
On the 'SCCP Server Settings':'SCCP Device' page we ought to make the user aware this is insecure and should be switched of before going into production. A PLAR phone is still able to ring any other extension by entering the number on the phone before going off-hook. So either setup a secure context for these types of phones or switch off hotline.
When I try to intercom or page a phone, it rings twice and disconnects instead of auto answer. Not sure if all models do that but all I have is 7960 and 7940.
am I missing a setting that would correct this behavior? I searched the issues but didn't find anything about it
Thanks!
I think the issue might be the version numbers in https://github.com/chan-sccp/sccp_manager/blob/develop/sccpManagerUpdater.json on lines 5 and 18:
sccp_manager/sccpManagerUpdater.json
Line 5 in 2b90440
sccp_manager/sccpManagerUpdater.json
Line 18 in 2b90440
FPBX 15 has redefined the way it manages backup procedure. In short, every module is in charge of its own data. Could we (I mean you) make sccp_manager compatible with fpbx backup?
In FreePBX 15 our backup module was redesigned for simplicity, flexibility and maintainability. Storage options are now handled in the Filestore module which offers more options to keep your data safe. You can now backup per module. This allows you to create custom backups of just the data you need. You can also divide your modules in to different backups for data that may change more often. With each module handling the data it owns we can now do cross-version backup and restore (15+).
More here: https://wiki.freepbx.org/pages/viewpage.action?pageId=114852215
And developer stuff here: https://wiki.freepbx.org/display/FOP/Implementing+Backup
fwconsole ma downloadinstall https://github.com/chan-sccp/sccp_manager/archive/refs/tags/14.3.0.13.zip
This throws the following exception because masterFilesStructure.xml is missing:
Whoops\Exception\ErrorException thrown with message "simplexml_load_file(): I/O warning : failed to load external entity "/tftpboot/masterFilesStructure.xml""
Stacktrace:
#5 Whoops\Exception\ErrorException in /var/www/html/admin/modules/sccp_manager/views/advserver.model.php:155
#4 simplexml_load_file in /var/www/html/admin/modules/sccp_manager/views/advserver.model.php:155
#3 include in /var/www/html/admin/modules/sccp_manager/Sccp_manager.class.php:372
#2 FreePBX\modules\Sccp_manager:processPageData in /var/www/html/admin/modules/sccp_manager/Sccp_manager.class.php:295
#1 FreePBX\modules\Sccp_manager:advServerShowPage in /var/www/html/admin/modules/sccp_manager/page.sccp_adv.php:19
#0 include in /var/www/html/admin/config.php:647
Before going to Sccp Connectivity > System Parameters, go to Sccp Connectivity > Server Config first.
This generates the required files.
Download https://github.com/dkgroot/provision_sccp/blob/master/tools/tftpbootFiles.xml and put it in /tftpboot/masterFilesStructure.xml during install (if possible)
I'm bad at PHP and not very familiar with the project, so I haven't submitted a pull request, but could it be as simple as replacing this:
sccp_manager/views/advserver.model.php
Line 155 in 2b90440
With something like this:
sccp_manager/Sccp_manager.class.php
Lines 624 to 630 in 2b90440
there is no reassignment for phone 7925 in the sccpManagerRewrite.rules file. please add
it is logical to assume that when you add a new device, it takes some device settings from the server configuration. Such as for example:
Message Lamp On Call
Call history stored book
Call Forward
Transfer
Call Forward busy
Call Forward NO ANSWER
DND Button on Device
Or the same thing with lines, the server configuration specifies some parameters, and when creating a line, it does not take values from the server configuration:
Directed Pickup Answer in the server configuration, it is "No", and when creating a line (extension), it is "Yes"
Directed Pickup the same thing
either remove these parameters from the server configuration or fix it so that the settings are loaded
And if you fix it, it would be super to increase the values of the server configuration, which were then loaded when creating a line or device
If successive saves are made in general settings, values revert to defaults. Successive saves should not change values
SEPXXX.cnf.xml file generated by sccp manager
contains only one entry for an addon module.
I tried adding cisco 7960 with two 7914 expansion modules and cisco 7965 with two 7916 modules with same results. Generated .cnf.xml file looks like this:
<addOnModules><addOnModule idx="1"><loadInformation>S00105000400</loadInformation></addOnModule></addOnModules></device>
Everything works without issues if I add second addon module entry manually through text editor:
<addOnModules>
<addOnModule idx="1"><loadInformation>S00105000400</loadInformation></addOnModule>
<addOnModule idx="2"><loadInformation>S00105000400</loadInformation></addOnModule>
</addOnModules>
</device>
I'm not 100% sure whether this is a FreePBX issue or a sccp_manager issue, as I only have SCCP phones and can't test fully by myself, but its fairly easy to reproduce in order to resolve.
To reproduce: Add a sound language to FreePBX under the Admin/Sound Languages module, then under Admin/Sound Languages/Settings change the 'default' language to something other than English. The "channel" language for the phones will remain in English, despite the default language being changed, regardless of restarting Asterisk/FreePBX or changing settings in asterisk.conf.
Workaround: Either remove and re-add the phone to the Phone Manager, or change the phone sound language in Phone Manager from "Default" to the target language.
Hello,
I am attempting to install the Chan SCCP manager into an Asterisk/FreePBX system. The system is online, and the chan_sccp module is loaded. I have done the following:
- [X] Built and Installed chan_sccp
- [X] Setup the SCCP contents of /etc/asterisk
- [X] Loaded firmware and xml files to /tftpboot
- [X] Followed the instructions for setting up the realtime database
- [X] Verified the tables exist
- [X] verified the data in /etc/asterisk/extconfig.conf
- [X] verified the data in /etc/asterisk/res_config_mysql.conf
- [X] Manually added and removed data from the device and line tables
Phones are provisioning via SCCP, but I cannot manage the lines via the FreePBX GUI. After all of these attempts I am still greeted with the error below. If someone could point me in the right direction to get this running I would be very appreciative.
Asterisk: 16.21.1
DB: MariaDB 10.3.31
PHP: 7.0.1
SCCP: Latest from Repo Releases
SCCP Manager: 14.2
PDOException (42000)
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF EXISTS _description, DROP COLUMN IF EXISTS _loginname, DROP COLUMN IF EXISTS ' at line 1
If a numeric field has been changed, when clicking on revert to system default, the default value is not entered, and an empty value is saved.
Clicking on revert should place and save the system default
sccp_manager version: 14.3.0.30
7945 firmware: SCCP45.9-4-2SR3-1S
Hi,
XML files generated via sccp_manager appear to use 'on' and 'off' for options where a boolean is expected. I'm unsure if it is my specific version of firmware on the phones themselves that is unable to interpret this.
I have tried both Cisco 7945 and Cisco 7940 IP phones. The 7945 boots but some settings on the phone (that are set by the XML file) are wrong, and logs a error interpreting the XML file. The 7940 doesn't boot at all, just keeps requesting the XML file from tftp server.
Opening the files and replacing all instances of 'on' and 'off' with 1 and 0 respectively fixes this entirely.
Every example configuration file I can find for these phones online uses 1 and 0 (including the template files in this repo for the phones I'm using, see conf/SEP0000000000.cnf.xml_796x_template)
After a certain period of time, notably after doing module updates, the SCCP extensions tab seems to disappear from the main FreePBX extensions page. Seems as though after module updates, the hook is being removed from the Extensions page.
As a result, you can no longer add SCCP extensions. If you do so, you get an error when you attempt an add due to a "null value". Existing extensions still function normally.
The only way I've found to fix this is to uninstall the module and reinstall the module. Unfortunately this also wipes out the SCCP device database and puts a new blank one in place, disconnecting all SCCP extensions.
I am using the latest version 14.3.0.30
when adding a device and try to save I get the above error, which started all of the sudden! I was able to add devices before successfully using the same version. I restarted the freepbx and still no luck.
the error:
undefined index: ntp_config enabled
File:/var/www/html/admin/modules/sccp_manager/sccpManClasses/xmlinterface.class.php:235
Issue raised by @nortien
When creating a sip device, an exception occurs if the default line is not a sip line.
Need to check if have a sip line and fail gracefully if no sip line assigned - the exception is with SEP creation, and so can complete save, but warn that SEP file not created
When changing from system default, value is not saved
Hello All:
I am trying to setup HTTP provisioning instead of TFTP due to decreasing the Cisco phone's boot-up time. I am not sure whether to post this issue here at sccp_manager
or under provision_sccp
, but the two are closely connected to each other.
To start off, I have installed chan_sccp
, sccp_manager
, and provision_sccp
in that order on a FreePBX 16 system with Asterisk 16. The Default Device Language has been set to English_United_States
and the Network Country is United_States
.
The phones can get most of the files (firmware, config, ringtones, wallpapers, etc.) via HTTP requests, but are unable to pull down the country-specific files, specifically the /United_States/g3-tones.xml
file. Between the index.php
file and the index.cnf
file located in the /tftpboot
folder, the Apache webserver is providing a link to the phone to g3-tones.xml
at /tftpboot/locales/languages/United_States/g3-tones.xml
but this should be at /tftpboot/locales/countries/United_States/g3-tones.xml
Here's where it becomes more difficult: sccp_manager
is looking for the language and country files to be located inside the 'locales'
folder of /tftpboot
to generate the device configuration files with, while provision_sccp
is using a 'language'
file (and no 'country'
file) directly on the root of the /tftpboot
folder (not nested within the 'locales'
folder).
No matter what I change in the index.cnf
file, I cannot modify or reroute the countries request (g3-tones.xml
) from the phone to the 'countries'
folder located in the 'locales'
folder. And yet, with debug set to on, the 'countries'
and 'languages'
values are at the correct location of /tftpboot/locales/countries
and /tftpboot/locales/languages
respectively.
I also noticed when setting the default_language
in index.cnf
, the value is /tftpboot/locales/English_United_States
but should be /tftpboot/locales/languages/English_United_States
. Adding a languages/
to the beginning when setting this value seems to correct this.
On the other hand, the TFTP re-writes/map file works as expected and I can always provision the files via TFTP; though much slower since the phones try to connect via HTTP first, then TFTP second.
So far, the current workaround I came up with is to temporarily disable the tftpboot.conf
Apache webserver, forcing the phones to update the initial firmware and config file over TFTP initially, and then re-enable the tftpboot.conf
Apache webserver. It appears that the phones only request the locale information once a firmware has been changed or updated, and I am sure the phones will operate just fine without the locale information downloaded; but it would be nice to have the best of both worlds.
I do realize that there is an open request to port the index.php
file into an Apache mod_rewrite
webserver config file, but is there anyone able to take a look at this issue to get it work with the current index.php/index.cnf
method for now to work with both sccp_manager
and provision_sccp together
?
Below are some config files and debug output if it helps anyone with the issue:
tftpboot.conf
Listen 6970
<VirtualHost *:6970>
DocumentRoot "/tftpboot"
ErrorLog /var/log/httpd/tftp.error.log
CustomLog /var/log/httpd/tftp.access.log combined
<Directory /tftpboot>
Options FollowSymlinks
AllowOverride none
Require all granted
RewriteEngine on
RewriteBase "/"
RewriteCond "/tftpboot/%{REQUEST_FILENAME}" !-f
RewriteCond "/tftpboot/%{REQUEST_FILENAME}" !-d
RewriteRule "(.*)" "index.php?id=$1" [PT,QSA]
</Directory>
<Directory />
Options FollowSymLinks
AllowOverride all
Require all granted
</Directory>
<Location />
Require all granted
</Location>
Alias / "/tftpboot/"
</VirtualHost>
index.cnf
[main]
tftproot = /tftpboot
firmware = firmware
settings = settings
locales = locales
languages = languages
templates = templates
dialplan = dialplan
softkey = softkey
ringtones = ringtones
wallpapers = wallpapers
countries = countries
debug = 1
log = /tftpboot/provision.log
default_language = languages/English_United_States
index.php
<?php
//
// Written by Alex / github.com/PhantomVI
//
$base_path = realpath($_SERVER['DOCUMENT_ROOT']);
$base_config = Array(
'debug' => 1,
'tftproot' => $base_path,
'default_language' => 'English_United_States',
'firmware' => 'firmware', 'settings' => 'settings', 'wallpapers' => 'wallpapers', 'ringtones' => 'ringtones',
'locales' => 'locales', 'countries' => 'countries', 'languages' => 'languages'
);
$base_tree = Array('settings' => 'tftproot', 'wallpapers' => 'tftproot', 'ringtones'=>'tftproot',
'locales' => 'tftproot', 'firmware' => 'tftproot', 'languages' => 'locales',
'countries' => 'locales', 'default_language' => 'locales');
# Merge config
$ini_array = parse_ini_file('index.cnf');
if (!empty($ini_array)) {
$config = array_merge($base_config, $ini_array);
}
foreach ($base_tree as $key => $value) {
if (!empty($config[$key])) {
if (substr($config[$key],0,1) != "/") {
$config[$key] = $config[$value].'/'.$config[$key];
}
}
}
#$config['tftproot'] = (!empty($config['tftproot'])) ? $config['tftproot'] : '/tftpboot';
# Fixup debug
$print_debug = (!empty($config['debug'])) ? $config['debug'] : 'off';
$print_debug = ($print_debug == 1) ? 'on' : $print_debug;
# Parse request
$request = $_REQUEST;
$req_file = !empty($request['id']) ? $request['id'] : '';
# directory content extensions map
$fw_suffix = array('.bin', '.loads', '.sbn', '.sb2', '.sbin', '.zz', '.zup', '.loads');
//$settings_suffix = array('cnf.xml');
$ringtones_list = array('distinctive.xml', 'ringlist.xml','distinctiveringlist.xml');
$ringtones_suffix = array('.raw', '.pcm', '.rwb');
$locale_list = array('-dictionary.', 'dictionary-ext.', '-dictionary.utf-8.', '-kate.xml', '-font.xml', '-font.dat','-tones.xml',
'be-sccp.jar', 'tc-sccp.jar', 'td-sccp.jar', 'ipc-sccp.jar', 'mk-sccp.jar', '_locale.loads', 'i-button-help.xml',
'tc-sip.jar', 'td-sipp.jar');
# Show debug output
if ($print_debug == 'on') {
print_r("<br> Config:<pre>");
print_r($config);
print("</pre>");
print_r("<br> Request:<br><pre>");
print_r($request);
print("</pre>");
}
# Start parsing the request
$req_file_full_path = '' ;
if (!empty($req_file)) {
$signed = FALSE;
$req_data_ar = explode('/', $req_file);
$req_data_len = count($req_data_ar) - 1;
$orig_req_file_name = end($req_data_ar);
$req_file_name = $orig_req_file_name;
if (strpos('.sgn;', strtolower($orig_req_file_name).';') !== FALSE) { // handle signed files
$signed = TRUE;
$req_file_name = basename($orig_req_file_name, '.sgn'); // strip signed part
}
if (file_exists($config['tftproot'].'/'.$req_file_name)) // prevent "/../...//" browsing - (eliminate back door)
{
$req_file_full_path = $config['tftproot'].'/'.$req_file_name;
}
else
{
$tmp_file = explode('.', $req_file_name);
if (strpos_array($req_file_name, $fw_suffix,'any') !== FALSE) { // Firmware file was requested
$firmware_list = find_all_files($config['firmware']);
$pos2 = strpos_array($firmware_list, $req_file_name, 'any'); // case unsensitive
if ($pos2 !== FALSE) { // Request Firmware
$req_file_full_path = $firmware_list[$pos2];
}
if ($print_debug == 'on'){ print_r('<br>Requested Firmware: '. $req_file_full_path. '<br>');}
}
else
{
$tmp_file = '';
//if (strpos_array($req_file_name, $settings_suffix, 'any') !== FALSE) { // Request Settings
if (strpos(strtolower($req_file_name), '.cnf.xml') !== FALSE) { // Request Settings
$tmp_file = $config['settings'].'/'.$req_file_name;
}
else if (strpos(strtolower($req_file), 'desktops/') !== FALSE) { // Request Wallpapers
$tmp_file = $config['wallpapers'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_file_name;
}
else if (strpos_array($ringtones_list, $req_file_name, 'any') !== FALSE) { // Request RingTones
$tmp_file = $config['ringtones'].'/'.$req_file_name;
if (!file_exists($tmp_file)) {
$tmp_file = $config['ringtones'].'/ringlist.xml';
}
}
else if(strpos_array($req_file_name, $ringtones_suffix,'any') !== FALSE) { // Firmware file was requested
$tmp_file = $config['ringtones'].'/'.$req_file_name;
}
else if (strpos_array($req_file, $locale_list, 'any') !== FALSE) { // Request Languages
if (!empty($req_data_ar[$req_data_len-1])) {
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_file_name;
} else {
$tmp_file = $config['default_language'].'/'. $req_file_name;
}
}
/*
else if (strpos(strtolower($req_file), '-tones.xml') !== FALSE) { // Request Countries
$tmp_file = $config['countries'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
else if (strpos(strtolower($req_file), '-dictionary.') !== FALSE) { // Request Countries
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
else if (strpos_array($req_file, $locale_list, 'any') !== FALSE) { // Request Languages
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
else if (strpos(strtolower($req_file), '-dictionary.jar') !== FALSE) { // Request Countries
$tmp_file = $config['languages'].'/'. $req_data_ar[$req_data_len-1].'/'. $req_data_ar[$req_data_len];
}
*/
if ($print_debug == 'on'){ print_r('<br>File : '. $orig_req_file_name. ' not found.<br>');}
if (empty($tmp_file)) {
if (!empty($config['log'])) { to_log(array('GET ('.$req_file.'):'.$orig_req_file_name, 'no match found'),'E',$config['log']); }
header("HTTP/1.0 404 Not Found");
die('ERROR: no match found.');
}
$req_file_full_path = $tmp_file;
}
}
if (!empty($config['log'])) { to_log(array('GET ('.$req_file.') :'.$orig_req_file_name, 'Remap :'.$req_file_full_path),'i',$config['log']); }
if (!empty($req_file_full_path)) {
if ($signed) {
$req_file_full_path .= '.sgn';
}
if (!file_exists($req_file_full_path)) {
header("HTTP/1.0 404 Not Found");
die('Could not find:'. $req_file_full_path);
}
if ($print_debug == 'on'){ print_r('<br>Returning: '. $req_file_full_path. '<br>');}
file_force_download($req_file_full_path);
}
}
/*
* Helper functiosn
*/
function file_force_download($file) {
if (file_exists($file)) {
if (ob_get_level()) {
ob_end_clean();
}
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
if ($fd = fopen($file, 'rb')) {
while (!feof($fd)) {
print fread($fd, 1024);
}
fclose($fd);
}
exit;
}
}
/*
* Founds any string from array in array
*/
function strpos_array($haystack, $needles, $mode='any') {
if (is_array($needles)) {
foreach ($needles as $str) {
$pos = strpos_array($haystack, $str, $mode);
if ($pos !== FALSE) {
return $pos;
}
}
} else {
if (is_array($haystack)) {
foreach ($haystack as $key => $subtr) {
$pos = strpos_array($subtr, $needles, $mode);
if ($pos !== FALSE) {
return $key;
}
}
return FALSE;
} else {
if ($mode == 'any') {
return strpos(strtolower($haystack), strtolower($needles));
} else {
if ($mode == 'full') {
if ($haystack == $needles) {
return 0;
} else {
return FALSE;
}
} else {
return strpos($haystack, $needles);
}
}
}
}
return FALSE;
}
function to_log($text, $level='i', $file) {
switch (strtolower($level)) {
case 'e':
case 'error':
$level='ERROR';
break;
case 'i':
case 'info':
$level='INFO';
break;
case 'd':
case 'debug':
$level='DEBUG';
break;
default:
$level='INFO';
}
if (is_array($text)) {
$to_log = '';
foreach ($text as $value) {
$to_log .= $value."\t";
}
} else {
$to_log .= $text;
}
$_txt = date('d.m.Y h:i:s')."\t[".$level."]\t ".$to_log."\n";
if (empty($file)) {
error_log($_txt, 0);
} else {
error_log($_txt, 3, $file);
}
}
function find_all_files($dir, $file_mask=null, $mode='full'){
$result = NULL;
if (empty($dir) || (!file_exists($dir))) {
return $result;
}
$root = scandir($dir);
foreach($root as $value) {
if($value === '.' || $value === '..') {continue;}
if(is_file("$dir/$value")) {
$filter = FALSE;
if (!empty($file_mask)) {
if (is_array($file_mask)) {
foreach ($file_mask as $k){
if (strpos(strtolower($value), strtolower($k)) !== FALSE) {$filter = true;}
}
} else {
if (strpos(strtolower($value), strtolower($file_mask)) !== FALSE) {$filter = true;}
}
} else {$filter = true;}
if ($filter) {
if ($mode=='fileonly'){
$result[]="$value";
} else {
$result[]="$dir/$value";
}
} else {$result[]=null;}
continue;
}
$sub_fiend = find_all_files("$dir/$value", $file_mask, $mode);
if (!empty($sub_fiend)) {
foreach($sub_fiend as $sub_value) {
if (!empty($sub_value)) {
$result[]=$sub_value;
}
}
}
}
return $result;
}
/var/log/httpd/tftp.access.log
10.98.1.5 - - [28/Mar/2022:11:30:19 -0400] "GET /term61.default.loads HTTP/1.1" 200 648 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:20 -0400] "GET /jar41sccp.9-4-2ES26.sbn HTTP/1.1" 200 1630052 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:26 -0400] "GET /cnu41.9-4-2ES26.sbn HTTP/1.1" 200 556833 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:29 -0400] "GET /apps41.9-4-2ES26.sbn HTTP/1.1" 200 3157527 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:40 -0400] "GET /dsp41.9-4-2ES26.sbn HTTP/1.1" 200 562693 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:30:42 -0400] "GET /cvm41sccp.9-4-2ES26.sbn HTTP/1.1" 200 2219477 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /CTLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /ITLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:25 -0400] "GET /ITLFile.tlv HTTP/1.1" 404 666 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:26 -0400] "GET /SEP001E4A93748B.cnf.xml HTTP/1.1" 200 3373 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:54 -0400] "GET /SCCP41.9-4-2SR3-1S.loads HTTP/1.1" 200 652 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:32:57 -0400] "GET /jar41sccp.9-4-2ES26.sbn HTTP/1.1" 200 1630052 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:04 -0400] "GET /cnu41.9-4-2ES26.sbn HTTP/1.1" 200 556833 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:08 -0400] "GET /apps41.9-4-2ES26.sbn HTTP/1.1" 200 3157527 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:20 -0400] "GET /dsp41.9-4-2ES26.sbn HTTP/1.1" 200 562693 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:33:25 -0400] "GET /cvm41sccp.9-4-2ES26.sbn HTTP/1.1" 200 2219477 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /CTLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /ITLSEP001E4A93748B.tlv HTTP/1.1" 404 688 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /ITLFile.tlv HTTP/1.1" 404 666 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:43 -0400] "GET /SEP001E4A93748B.cnf.xml HTTP/1.1" 200 3373 "-" "-"
10.98.1.5 - - [28/Mar/2022:11:34:51 -0400] "GET /English_United_States/mk-sccp.jar HTTP/1.1" 200 58726 "-" "-"
-->10.98.1.5 - - [28/Mar/2022:11:34:53 -0400] "GET /United_States/g3-tones.xml HTTP/1.1" 404 729 "-" "-"<--
/tftpboot/provision.log
28.03.2022 03:25:03 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:25:03 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:25:03 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:25:03 [INFO] GET (ToveLow-Habits.raw) :ToveLow-Habits.raw Remap :/tftpboot/ringtones/ToveLow-Habits.raw
28.03.2022 03:25:04 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:27:14 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:27:15 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:27:15 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:27:15 [INFO] GET (ToveLow-Habits.raw) :ToveLow-Habits.raw Remap :/tftpboot/ringtones/ToveLow-Habits.raw
28.03.2022 03:27:16 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:28:26 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:26 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:26 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:28:26 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:28:27 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:28:28 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:28:29 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:28:32 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:30:19 [INFO] GET (term61.default.loads) :term61.default.loads Remap :/tftpboot/firmware/7941/term61.default.loads
28.03.2022 03:30:20 [INFO] GET (jar41sccp.9-4-2ES26.sbn) :jar41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/jar41sccp.9-4-2ES26.sbn
28.03.2022 03:30:26 [INFO] GET (cnu41.9-4-2ES26.sbn) :cnu41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cnu41.9-4-2ES26.sbn
28.03.2022 03:30:29 [INFO] GET (apps41.9-4-2ES26.sbn) :apps41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/apps41.9-4-2ES26.sbn
28.03.2022 03:30:40 [INFO] GET (dsp41.9-4-2ES26.sbn) :dsp41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/dsp41.9-4-2ES26.sbn
28.03.2022 03:30:42 [INFO] GET (cvm41sccp.9-4-2ES26.sbn) :cvm41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cvm41sccp.9-4-2ES26.sbn
28.03.2022 03:32:25 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:32:25 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:32:25 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:32:26 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:32:54 [INFO] GET (SCCP41.9-4-2SR3-1S.loads) :SCCP41.9-4-2SR3-1S.loads Remap :/tftpboot/firmware/7941/SCCP41.9-4-2SR3-1S.loads
28.03.2022 03:32:57 [INFO] GET (jar41sccp.9-4-2ES26.sbn) :jar41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/jar41sccp.9-4-2ES26.sbn
28.03.2022 03:33:04 [INFO] GET (cnu41.9-4-2ES26.sbn) :cnu41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cnu41.9-4-2ES26.sbn
28.03.2022 03:33:08 [INFO] GET (apps41.9-4-2ES26.sbn) :apps41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/apps41.9-4-2ES26.sbn
28.03.2022 03:33:20 [INFO] GET (dsp41.9-4-2ES26.sbn) :dsp41.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/dsp41.9-4-2ES26.sbn
28.03.2022 03:33:25 [INFO] GET (cvm41sccp.9-4-2ES26.sbn) :cvm41sccp.9-4-2ES26.sbn Remap :/tftpboot/firmware/7941/cvm41sccp.9-4-2ES26.sbn
28.03.2022 03:34:43 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:34:43 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:34:43 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:34:43 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:34:51 [INFO] GET (English_United_States/mk-sccp.jar) :mk-sccp.jar Remap :/tftpboot/locales/languages/English_United_States/mk-sccp.jar
28.03.2022 03:34:53 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
28.03.2022 03:36:14 [INFO] GET (English_United_States/mk-sccp.jar) :mk-sccp.jar Remap :/tftpboot/locales/languages/English_United_States/mk-sccp.jar
28.03.2022 03:36:31 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
28.03.2022 03:36:31 [ERROR] GET (favicon.ico):favicon.ico no match found
28.03.2022 03:36:35 [ERROR] GET (CTLSEP001E4A93748B.tlv):CTLSEP001E4A93748B.tlv no match found
28.03.2022 03:36:35 [ERROR] GET (ITLSEP001E4A93748B.tlv):ITLSEP001E4A93748B.tlv no match found
28.03.2022 03:36:35 [ERROR] GET (ITLFile.tlv):ITLFile.tlv no match found
28.03.2022 03:36:35 [INFO] GET (SEP001E4A93748B.cnf.xml) :SEP001E4A93748B.cnf.xml Remap :/tftpboot/settings/SEP001E4A93748B.cnf.xml
28.03.2022 03:36:40 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
28.03.2022 04:37:23 [INFO] GET (United_States/g3-tones.xml) :g3-tones.xml Remap :/tftpboot/locales/languages/United_States/g3-tones.xml
/var/log/messages
Mar 28 11:38:42 freepbx in.tftpd[2080]: RRQ from 10.98.1.5 filename term61.default.loads remapped to firmware/7941/term61.default.loads
Mar 28 11:38:42 freepbx in.tftpd[2080]: Client 10.98.1.5 finished term61.default.loads
Mar 28 11:38:44 freepbx in.tftpd[2081]: RRQ from 10.98.1.5 filename jar41sccp.9-4-2ES26.sbn remapped to firmware/7941/jar41sccp.9-4-2ES26.sbn
Mar 28 11:38:47 freepbx in.tftpd[2081]: Client 10.98.1.5 finished jar41sccp.9-4-2ES26.sbn
Mar 28 11:38:52 freepbx in.tftpd[2082]: RRQ from 10.98.1.5 filename cnu41.9-4-2ES26.sbn remapped to firmware/7941/cnu41.9-4-2ES26.sbn
Mar 28 11:38:53 freepbx in.tftpd[2082]: Client 10.98.1.5 finished cnu41.9-4-2ES26.sbn
Mar 28 11:38:56 freepbx in.tftpd[2083]: RRQ from 10.98.1.5 filename apps41.9-4-2ES26.sbn remapped to firmware/7941/apps41.9-4-2ES26.sbn
Mar 28 11:39:02 freepbx in.tftpd[2083]: Client 10.98.1.5 finished apps41.9-4-2ES26.sbn
Mar 28 11:39:10 freepbx in.tftpd[2119]: RRQ from 10.98.1.5 filename dsp41.9-4-2ES26.sbn remapped to firmware/7941/dsp41.9-4-2ES26.sbn
Mar 28 11:39:11 freepbx in.tftpd[2119]: Client 10.98.1.5 finished dsp41.9-4-2ES26.sbn
Mar 28 11:39:14 freepbx in.tftpd[2120]: RRQ from 10.98.1.5 filename cvm41sccp.9-4-2ES26.sbn remapped to firmware/7941/cvm41sccp.9-4-2ES26.sbn
Mar 28 11:39:18 freepbx in.tftpd[2120]: Client 10.98.1.5 finished cvm41sccp.9-4-2ES26.sbn
Mar 28 11:41:05 freepbx in.tftpd[2244]: RRQ from 10.98.1.5 filename CTLSEP001E4A93748B.tlv remapped to settings/CTLSEP001E4A93748B.tlv
Mar 28 11:41:05 freepbx in.tftpd[2244]: Client 10.98.1.5 File not found settings/CTLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2245]: RRQ from 10.98.1.5 filename ITLSEP001E4A93748B.tlv remapped to settings/ITLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2245]: Client 10.98.1.5 File not found settings/ITLSEP001E4A93748B.tlv
Mar 28 11:41:06 freepbx in.tftpd[2246]: RRQ from 10.98.1.5 filename ITLFile.tlv remapped to settings/ITLFile.tlv
Mar 28 11:41:06 freepbx in.tftpd[2246]: Client 10.98.1.5 File not found settings/ITLFile.tlv
Mar 28 11:41:06 freepbx in.tftpd[2247]: RRQ from 10.98.1.5 filename SEP001E4A93748B.cnf.xml remapped to settings/SEP001E4A93748B.cnf.xml
Mar 28 11:41:06 freepbx in.tftpd[2247]: Client 10.98.1.5 finished SEP001E4A93748B.cnf.xml
Mar 28 11:41:34 freepbx in.tftpd[2254]: RRQ from 10.98.1.5 filename SCCP41.9-4-2SR3-1S.loads remapped to firmware/7941/SCCP41.9-4-2SR3-1S.loads
Mar 28 11:41:34 freepbx in.tftpd[2254]: Client 10.98.1.5 finished SCCP41.9-4-2SR3-1S.loads
Mar 28 11:41:37 freepbx in.tftpd[2255]: RRQ from 10.98.1.5 filename jar41sccp.9-4-2ES26.sbn remapped to firmware/7941/jar41sccp.9-4-2ES26.sbn
Mar 28 11:41:40 freepbx in.tftpd[2255]: Client 10.98.1.5 finished jar41sccp.9-4-2ES26.sbn
Mar 28 11:41:47 freepbx in.tftpd[2257]: RRQ from 10.98.1.5 filename cnu41.9-4-2ES26.sbn remapped to firmware/7941/cnu41.9-4-2ES26.sbn
Mar 28 11:41:48 freepbx in.tftpd[2257]: Client 10.98.1.5 finished cnu41.9-4-2ES26.sbn
Mar 28 11:41:52 freepbx in.tftpd[2258]: RRQ from 10.98.1.5 filename apps41.9-4-2ES26.sbn remapped to firmware/7941/apps41.9-4-2ES26.sbn
Mar 28 11:41:58 freepbx in.tftpd[2258]: Client 10.98.1.5 finished apps41.9-4-2ES26.sbn
Mar 28 11:42:09 freepbx in.tftpd[2294]: RRQ from 10.98.1.5 filename dsp41.9-4-2ES26.sbn remapped to firmware/7941/dsp41.9-4-2ES26.sbn
Mar 28 11:42:10 freepbx in.tftpd[2294]: Client 10.98.1.5 finished dsp41.9-4-2ES26.sbn
Mar 28 11:42:14 freepbx in.tftpd[2295]: RRQ from 10.98.1.5 filename cvm41sccp.9-4-2ES26.sbn remapped to firmware/7941/cvm41sccp.9-4-2ES26.sbn
Mar 28 11:42:18 freepbx in.tftpd[2295]: Client 10.98.1.5 finished cvm41sccp.9-4-2ES26.sbn
Mar 28 11:43:32 freepbx in.tftpd[2331]: RRQ from 10.98.1.5 filename CTLSEP001E4A93748B.tlv remapped to settings/CTLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2331]: Client 10.98.1.5 File not found settings/CTLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2332]: RRQ from 10.98.1.5 filename ITLSEP001E4A93748B.tlv remapped to settings/ITLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2332]: Client 10.98.1.5 File not found settings/ITLSEP001E4A93748B.tlv
Mar 28 11:43:32 freepbx in.tftpd[2333]: RRQ from 10.98.1.5 filename ITLFile.tlv remapped to settings/ITLFile.tlv
Mar 28 11:43:32 freepbx in.tftpd[2333]: Client 10.98.1.5 File not found settings/ITLFile.tlv
Mar 28 11:43:33 freepbx in.tftpd[2334]: RRQ from 10.98.1.5 filename SEP001E4A93748B.cnf.xml remapped to settings/SEP001E4A93748B.cnf.xml
Mar 28 11:43:33 freepbx in.tftpd[2334]: Client 10.98.1.5 finished SEP001E4A93748B.cnf.xml
Mar 28 11:43:42 freepbx in.tftpd[2341]: RRQ from 10.98.1.5 filename English_United_States/mk-sccp.jar remapped to locales/languages/English_United_States/mk-sccp.jar
Mar 28 11:43:43 freepbx in.tftpd[2341]: Client 10.98.1.5 finished English_United_States/mk-sccp.jar
Mar 28 11:43:45 freepbx in.tftpd[2342]: RRQ from 10.98.1.5 filename United_States/g3-tones.xml remapped to locales/countries/United_States/g3-tones.xml
Mar 28 11:43:45 freepbx in.tftpd[2342]: Client 10.98.1.5 finished United_States/g3-tones.xml
Thank you everyone :)
When creating a new device it only asks for the MAC address of the device and then proceeds to call it SEPxxxxxxx in the list and displays it in this strange 4,4,4 representation when you click the device edit button. There are some things that trouble me a little with this.
Proposed Solution:
Device SEP ID
(So mostly cosmetic)My PFsense router/firewall is configured with Voice VLAN and Data VLAN. I don't see where in sccp-manager I can tell it to use the data VLAN on the pc port of the phone. Is this possible in sccp-manager/freepbx for cisco phones? if not is this considered in any future releases? I have the latest version 14.3.0.27
Thanks!
When creating an extension from the SCCP Manager Phone Manager page, it redirects to the 'main' freepbx extension manager page rather than going back to the phone manager page.
There is missing SCCP
tab on the Extension edit page, as well as on the page for creating a new extension SCCP.
This tab allows you to configure additional line options, as well as used codecs for a specific device.
how it looks on version from this git:
how it should be (version from PhantomVl git):
sccp manager version: 14.2.0.10
FreePBX version: 15.0.17.34
Asterisk version: 16.17.0
Hello everyone (and Diederik!)
I have recently updated SCCP from 33da09010fa8b9f139fa302df5ac7776a297b0d7 to c1533a6b5ab5aa77fd55f432884a56d1c9601588 (quite a gap - ~2 years), because I was getting some dropped calls. That issue seems to be resolved, however just found out a new, serious one.
I have been using a custom extension to get auto answer mechanism on some phones, which effectively called this:
SCCP/4010/aa=2wb/ringer=silent
Now if try that, whole PBX hangs, and I have to killall asterisk
to get it working again. Phones hang as well. Could you please tell me what logs to provide to help fix this?
I have upgraded to the latest version 14.5.0.1 of sccp_manager.
I get errors and the installation fails:
root@odroidn2:~# fwconsole ma upgrade sccp_manager
No repos specified, using: [standard,stable] from last GUI settings
Starting module download from https://github.com/chan-sccp/sccp_manager/archive/refs/tags/v14.5.0.1.tar.gz ...
Processing
Downloading...
143/143 [============================] 100%
Finished downloading
Extracting...Done
Module https://github.com/chan-sccp/sccp_manager/archive/refs/tags/v14.5.0.1.tar.gz successfully downloaded
Updating tables sccpdevice, sccpline, sccpbuttonconfig, sccpdevmodel, sccpuser, sccpsettings...Done
PHP Fatal error: During class fetch: Uncaught Whoops\Exception\ErrorException: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/admin/modules/sccp_manager/sccpManTraits/ajaxHelper.php:731
Stack trace:
#0 /var/www/html/admin/functions.inc.php(118): Whoops\Run->handleError()
#1 /var/www/html/admin/functions.inc.php(118): include()
#2 [internal function]: fpbx_framework_autoloader()
#3 /var/www/html/admin/modules/sccp_manager/Sccp_manager.class.php(85): spl_autoload_call()
#4 /var/www/html/admin/libraries/BMO/Self_Helper.class.php(167): include('/var/www/html/a...')
#5 /var/www/html/admin/libraries/BMO/Self_Helper.class.php(62): FreePBX\Self_Helper->loadObject()
#6 /var/www/html/admin/libraries/modulefunctions.class.php(2565): FreePBX\Self_Helper->injectClass()
#7 /var/www/html/admin/libraries/modulefunctions.class.php(2039): module_functions->_runscripts()
#8 /var/www/html/admin/libraries/Console/Moduleadmin.class.php(444): module_functions->install()
#9 /var/www/html/admi in /var/www/html/admin/modules/sccp_manager/Sccp_manager.class.php on line 85
Whoops\Exception\ErrorException: During class fetch: Uncaught Whoops\Exception\ErrorException: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /var/www/html/admin/modules/sccp_manager/sccpManTraits/ajaxHelper.php:731
Stack trace:
#0 /var/www/html/admin/functions.inc.php(118): Whoops\Run->handleError()
#1 /var/www/html/admin/functions.inc.php(118): include()
#2 [internal function]: fpbx_framework_autoloader()
#3 /var/www/html/admin/modules/sccp_manager/Sccp_manager.class.php(85): spl_autoload_call()
#4 /var/www/html/admin/libraries/BMO/Self_Helper.class.php(167): include('/var/www/html/a...')
#5 /var/www/html/admin/libraries/BMO/Self_Helper.class.php(62): FreePBX\Self_Helper->loadObject()
#6 /var/www/html/admin/libraries/modulefunctions.class.php(2565): FreePBX\Self_Helper->injectClass()
#7 /var/www/html/admin/libraries/modulefunctions.class.php(2039): module_functions->_runscripts()
#8 /var/www/html/admin/libraries/Console/Moduleadmin.class.php(444): module_functions->install()
#9 /var/www/html/admi in file /var/www/html/admin/modules/sccp_manager/Sccp_manager.class.php on line 85
Stack trace:
sccp_manager version: 14.3.0.30
FreePBX 16
You cannot remove a button function in DeviceButtons - set it to empty or change the function type. After saving the settings, the buttons still have their previous functions assigned to them.
Adding and saving functions to empty buttons works fine.
Reported by @rofferman
ERROR[6720]: sccp_config.c:588 sccp_config_object_setValue: SCCP: obsolete config param at dnd='reject' in line 58
(OBSOLETE) Turn on the dnd softkey for all devices. Valid values are 'off', 'on' (replaced by in favor of 'dndFeature').
FreePBX does not have the ability to edit group data. why? it's a necessary tool. please add it.
This setting does not affect anything. Can you explain why it's here? Or what does she do?
If the values are entered into the database, then for lines 108,133,134,135,136,147, Pickup and GroupPickup work fine
sccp show line 133
everything is fine, shows correctly
Call Group : 24
Pickup Group : 24
Directed Pickup : on
Directed Pickup Context :
Pickup Mode Answer : on
Named Call Group : 24
Named Pickup Group : 24
sccp show line 160
NamedCallGroup and NamedPickupGroup show the value "NONE", although in the database (null) and accordingly all lines where in the database indicated (null) have the same group "NONE", which leads to the possibility to pickup all with this value. The solution to avoid this is to set the value of Directed Pickup to "off"
Why does "sccp show line" not output an empty value as in CallGroup or PickupGroup?
Call Group :
Pickup Group :
Directed Pickup : off
Directed Pickup Context :
Pickup Mode Answer : off
Named Call Group : NONE
Named Pickup Group : NONE
I have just bought an 8841 phone for use in sccp manager (that hasn't arrived yet), as I saw it was compatible in my phones list. The only worry I have is that it only shows 1 button when there are 10 for this model phone. I was wondering if this is expected and if the phones even work with chan SCCP and SCCP manager. I have the enterprise firmware and everything like that, as well as SIP being enabled in SCCP manager. The only other worry I have is not having the XML files.
Also, I tried to add a SIP phone as testing but I couldn't select the type, which is worrying me but I saw something about the MAC address defining this.
Sorry if this is all just worry on my part!!
Error when opening the phone manager page:
QLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '='
File:/var/www/html/admin/modules/sccp_manager/sccpManClasses/dbinterface.class.php:150
(@dkgroot knows about this)
A feature Bulk Handler module provides for extensions/DISs/routes would be nice to have.
The idea is to populate a csv file with required values (MAC, type, line, etc) and feed it to parser. Also, it should be able to export values in database back to csv.
Hello,
When I try to transfer a call by pressing the transfer soft button "Key is Not Active" is displayed on the screen.
I tried re-compiling from source with --enabled-advaned-functions, but to avail, still getting the same result on both a 7962 and 7975.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.