I'm trying to clarify contexts and their uses. I do have a good general understanding of them. My question is about "undeclared" and "non-existant" contexts. If I have a block somewhere (in sip.conf, for example), and it has no "context=thiscontext" field, does it just automatically use the "default" context? Or is this settable? (I see there is an entry for context in the [general] block. I'm guessing this can be used to set a global context for that file. But if this is omitted, what context does the file get? Is "default" a hardcoded fallback?) Someone suggested that I could define a "non-existant" context, being one that isn't actually declared, and set that in my "context=" line, and calls so directed wouldn't go anywhere. Would it be possible to do this with an empty definition (are they equivalent?) Lastly, I'm trying to get a good handle on "include" contexts. If I have: [contexta] ; commands omitted [contextb] ; commands omitted and I add: [contextc] include => contexta include => contextb ; commands omitted Then "contexta" and "contextb" are available to "contextc"'s dialers, right? Do I have to make sure there are no overlapping extensions in all three contexts? Thanks, J.
i guess in sip.conf, and iax.conf you can put a parameter defaultcontext=somecontext in the [general] context, so all the users and /or peers that does not have a defined context will get there. about the includes, yes, all the extensions in context 'a' and 'b' are available to 'c'. You can put overlapping extensions, but the first match will be used. So, if you first include => a, and later include => b, 'a' will take precedence. Note that overlapping extensions inside the same context, lets say [overlapping] exten => _XX,blah exten => _.,blah it doesnt matter that the XX extension appears firts, the matchin will be the more generic one., so if you want XX first, you have to separate the extensions and include them by include => xxcontext include => theother so the xx extension will be matched first best regards best regards On 6/14/05, Jerry <jerry@voiptower.com> wrote:> > I'm trying to clarify contexts and their uses. I do have a good > general understanding of them. My question is about "undeclared" > and "non-existant" contexts. > > If I have a block somewhere (in sip.conf, for example), and it > has no "context=thiscontext" field, does it just automatically > use the "default" context? Or is this settable? (I see there is > an entry for context in the [general] block. I'm guessing this > can be used to set a global context for that file. But if this > is omitted, what context does the file get? Is "default" a > hardcoded fallback?) > > Someone suggested that I could define a "non-existant" context, > being one that isn't actually declared, and set that in my > "context=" line, and calls so directed wouldn't go anywhere. > Would it be possible to do this with an empty definition (are > they equivalent?) > > Lastly, I'm trying to get a good handle on "include" contexts. > If I have: > [contexta] > ; commands omitted > [contextb] > ; commands omitted > > and I add: > [contextc] > include => contexta > include => contextb > ; commands omitted > > Then "contexta" and "contextb" are available to "contextc"'s > dialers, right? > Do I have to make sure there are no overlapping extensions in > all three contexts? > > Thanks, > J. > _______________________________________________ > Asterisk-Users mailing list > Asterisk-Users@lists.digium.com > http://lists.digium.com/mailman/listinfo/asterisk-users > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users >-- "Su nombre es GNU/Linux, no solamente Linux, mas info en http://www.gnu.org"
> I'm trying to clarify contexts and their uses. I do have a good > general understanding of them. My question is about "undeclared" > and "non-existant" contexts. > > If I have a block somewhere (in sip.conf, for example), and it > has no "context=thiscontext" field, does it just automatically > use the "default" context? Or is this settable? (I see there is > an entry for context in the [general] block. I'm guessing this > can be used to set a global context for that file. But if this > is omitted, what context does the file get? Is "default" a > hardcoded fallback?)Let's see if this helps... Many of asterisk config definitions use a "context=" to refer to other sections of config files. In most cases (but not all) asterisk will _assume_ the use of a default context if you don't specify one. The assumed context is usually "context=default". In extensions.conf (as an example), if you don't have any [xxxxxx] context defined, then all definitions starting from the top of the file are assumed to be in the [default] context. Same with the sip.conf file. That's one reason why those that are interested in security _don't_ use anything that assumes a default context. So in sip.conf (as an example), after the [general] section but before any other defintions, you should have something like context=bogon-calls to catch any random sip connect attempts. Then in extensions.conf, have a section like [bogon-calls] that does something with those sip connect attempts that don't specifically match other definitions in sip.conf. The extensions.conf entry might be something like this: [bogon-calls] exten => _X.,1,Dial(SIP/3000,15,r) exten => _X.,2,Congestion where you forcibly send unauthorized sip call attempts to a well defined destination (sip/3000). Sooner or later asterisk systems that are exposed to the internet will be hit with random sip and iax connect attempts. Deal with them now and define all contexts instead of relying on 'default'. To over simplify this, anytime you see a 'context=' think in terms of that functioning just like a 'goto' programming statement.> Someone suggested that I could define a "non-existant" context, > being one that isn't actually declared, and set that in my > "context=" line, and calls so directed wouldn't go anywhere. > Would it be possible to do this with an empty definition (are > they equivalent?)Yes. A 'context=nowhere' with [nowhere] defined and nothing in it will be exactly the same thing as missing the [nowhere]. They function the same.> Lastly, I'm trying to get a good handle on "include" contexts. > If I have: > [contexta] > ; commands omitted > [contextb] > ; commands omitted > > and I add: > [contextc] > include => contexta > include => contextb > ; commands omitted > > Then "contexta" and "contextb" are available to "contextc"'s > dialers, right?Yes, and that exact approach is also very useful to "force" the order in which definitions are executed. So, if you used the above example in extensions.conf, when the statement context=contexc is seen, it _will_ execute what's in contexta _before_ it attempts contextb. The approach might apply if you had something like exten=>_1800XXX. in contexta and exten=1800 in contextb. (Maybe bad example, but you get the picture, I'm sure.)> Do I have to make sure there are no overlapping extensions in > all three contexts?No, see my bad example above. The bad example assumes you have a valid extensions 1800, but you allow your users to also dial 1-800-555-1212. Which do you want to check for _first_ in your dialplan?