Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F7312351
accounts.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
accounts.py
View Options
from
application.system
import
host
from
sipsimple.account
import
Account
,
AccountManager
from
sipsimple.configuration
import
SettingsObject
from
sipsimple.configuration.datatypes
import
SIPAddress
from
sipsimple.core
import
Engine
,
Route
,
SIPURI
from
sylk.configuration
import
SIPConfig
__all__
=
'DefaultAccount'
,
class
DefaultContactURIFactory
(
object
):
def
__init__
(
self
):
self
.
username
=
'sylkserver'
def
__getitem__
(
self
,
key
):
if
isinstance
(
key
,
tuple
):
# The first part of the key might be PublicGRUU and so on, but we don't care about
# those here, so ignore them
_
,
key
=
key
if
not
isinstance
(
key
,
(
str
,
Route
)):
raise
KeyError
(
"key must be a transport name or Route instance"
)
transport
=
key
if
isinstance
(
key
,
str
)
else
key
.
transport
parameters
=
{}
if
transport
==
'udp'
else
{
'transport'
:
transport
}
if
SIPConfig
.
local_ip
not
in
(
None
,
'0.0.0.0'
):
ip
=
SIPConfig
.
local_ip
.
normalized
elif
isinstance
(
key
,
str
):
ip
=
host
.
default_ip
else
:
ip
=
host
.
outgoing_ip_for
(
key
.
address
)
if
ip
is
None
:
raise
KeyError
(
"could not get outgoing IP address"
)
port
=
getattr
(
Engine
(),
'
%s
_port'
%
transport
,
None
)
if
port
is
None
:
raise
KeyError
(
"unsupported transport:
%s
"
%
transport
)
uri
=
SIPURI
(
user
=
self
.
username
,
host
=
ip
,
port
=
port
)
uri
.
parameters
.
update
(
parameters
)
return
uri
class
DefaultAccount
(
Account
):
"""
Subclass of Account which doesn't start any subsystem. SylkServer just
uses it as the default account for all applications as a settings object.
"""
__id__
=
SIPAddress
(
'default@sylkserver'
)
id
=
property
(
lambda
self
:
self
.
__id__
)
enabled
=
True
def
__new__
(
cls
):
#with AccountManager.load.lock:
# if not AccountManager.load.called:
# raise RuntimeError("cannot instantiate %s before calling AccountManager.load" % cls.__name__)
return
SettingsObject
.
__new__
(
cls
)
def
__init__
(
self
):
super
(
DefaultAccount
,
self
)
.
__init__
(
'default@sylkserver'
)
self
.
contact
=
DefaultContactURIFactory
()
@property
def
uri
(
self
):
return
SIPURI
(
user
=
'sylkserver'
,
host
=
SIPConfig
.
local_ip
.
normalized
)
def
_activate
(
self
):
pass
def
_deactivate
(
self
):
pass
File Metadata
Details
Attached
Mime Type
text/x-python
Expires
Sat, Feb 1, 5:43 AM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3488639
Default Alt Text
accounts.py (2 KB)
Attached To
Mode
rSYLK SylkServer
Attached
Detach File
Event Timeline
Log In to Comment