mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 09:36:46 +00:00
[mod_python3, ESL py3mod] Add Python3 support.
This commit is contained in:
132
libs/esl/python3/ESL.py
Normal file
132
libs/esl/python3/ESL.py
Normal file
@@ -0,0 +1,132 @@
|
||||
# This file was automatically generated by SWIG (http://www.swig.org).
|
||||
# Version 3.0.2
|
||||
#
|
||||
# Do not make changes to this file unless you know what you are doing--modify
|
||||
# the SWIG interface file instead.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
from sys import version_info
|
||||
if version_info >= (2,6,0):
|
||||
def swig_import_helper():
|
||||
from os.path import dirname
|
||||
import imp
|
||||
fp = None
|
||||
try:
|
||||
fp, pathname, description = imp.find_module('_ESL', [dirname(__file__)])
|
||||
except ImportError:
|
||||
import _ESL
|
||||
return _ESL
|
||||
if fp is not None:
|
||||
try:
|
||||
_mod = imp.load_module('_ESL', fp, pathname, description)
|
||||
finally:
|
||||
fp.close()
|
||||
return _mod
|
||||
_ESL = swig_import_helper()
|
||||
del swig_import_helper
|
||||
else:
|
||||
import _ESL
|
||||
del version_info
|
||||
def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
|
||||
if (name == "thisown"): return self.this.own(value)
|
||||
if (name == "this"):
|
||||
if type(value).__name__ == 'SwigPyObject':
|
||||
self.__dict__[name] = value
|
||||
return
|
||||
method = class_type.__swig_setmethods__.get(name,None)
|
||||
if method: return method(self,value)
|
||||
if (not static):
|
||||
self.__dict__[name] = value
|
||||
else:
|
||||
raise AttributeError("You cannot add attributes to %s" % self)
|
||||
|
||||
def _swig_setattr(self,class_type,name,value):
|
||||
return _swig_setattr_nondynamic(self,class_type,name,value,0)
|
||||
|
||||
def _swig_getattr(self,class_type,name):
|
||||
if (name == "thisown"): return self.this.own()
|
||||
method = class_type.__swig_getmethods__.get(name,None)
|
||||
if method: return method(self)
|
||||
raise AttributeError(name)
|
||||
|
||||
def _swig_repr(self):
|
||||
try: strthis = "proxy of " + self.this.__repr__()
|
||||
except: strthis = ""
|
||||
return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
|
||||
|
||||
class ESLevent:
|
||||
__swig_setmethods__ = {}
|
||||
__setattr__ = lambda self, name, value: _swig_setattr(self, ESLevent, name, value)
|
||||
__swig_getmethods__ = {}
|
||||
__getattr__ = lambda self, name: _swig_getattr(self, ESLevent, name)
|
||||
__repr__ = _swig_repr
|
||||
__swig_setmethods__["event"] = _ESL.ESLevent_event_set
|
||||
__swig_getmethods__["event"] = _ESL.ESLevent_event_get
|
||||
__swig_setmethods__["serialized_string"] = _ESL.ESLevent_serialized_string_set
|
||||
__swig_getmethods__["serialized_string"] = _ESL.ESLevent_serialized_string_get
|
||||
__swig_setmethods__["mine"] = _ESL.ESLevent_mine_set
|
||||
__swig_getmethods__["mine"] = _ESL.ESLevent_mine_get
|
||||
def __init__(self, *args):
|
||||
this = _ESL.new_ESLevent(*args)
|
||||
try: self.this.append(this)
|
||||
except: self.this = this
|
||||
__swig_destroy__ = _ESL.delete_ESLevent
|
||||
__del__ = lambda self : None;
|
||||
def serialize(self, format=None): return _ESL.ESLevent_serialize(self, format)
|
||||
def setPriority(self, *args): return _ESL.ESLevent_setPriority(self, *args)
|
||||
def getHeader(self, *args): return _ESL.ESLevent_getHeader(self, *args)
|
||||
def getBody(self): return _ESL.ESLevent_getBody(self)
|
||||
def getType(self): return _ESL.ESLevent_getType(self)
|
||||
def addBody(self, *args): return _ESL.ESLevent_addBody(self, *args)
|
||||
def addHeader(self, *args): return _ESL.ESLevent_addHeader(self, *args)
|
||||
def pushHeader(self, *args): return _ESL.ESLevent_pushHeader(self, *args)
|
||||
def unshiftHeader(self, *args): return _ESL.ESLevent_unshiftHeader(self, *args)
|
||||
def delHeader(self, *args): return _ESL.ESLevent_delHeader(self, *args)
|
||||
def firstHeader(self): return _ESL.ESLevent_firstHeader(self)
|
||||
def nextHeader(self): return _ESL.ESLevent_nextHeader(self)
|
||||
ESLevent_swigregister = _ESL.ESLevent_swigregister
|
||||
ESLevent_swigregister(ESLevent)
|
||||
|
||||
class ESLconnection:
|
||||
__swig_setmethods__ = {}
|
||||
__setattr__ = lambda self, name, value: _swig_setattr(self, ESLconnection, name, value)
|
||||
__swig_getmethods__ = {}
|
||||
__getattr__ = lambda self, name: _swig_getattr(self, ESLconnection, name)
|
||||
__repr__ = _swig_repr
|
||||
def __init__(self, *args):
|
||||
this = _ESL.new_ESLconnection(*args)
|
||||
try: self.this.append(this)
|
||||
except: self.this = this
|
||||
__swig_destroy__ = _ESL.delete_ESLconnection
|
||||
__del__ = lambda self : None;
|
||||
def socketDescriptor(self): return _ESL.ESLconnection_socketDescriptor(self)
|
||||
def connected(self): return _ESL.ESLconnection_connected(self)
|
||||
def getInfo(self): return _ESL.ESLconnection_getInfo(self)
|
||||
def send(self, *args): return _ESL.ESLconnection_send(self, *args)
|
||||
def sendRecv(self, *args): return _ESL.ESLconnection_sendRecv(self, *args)
|
||||
def api(self, *args): return _ESL.ESLconnection_api(self, *args)
|
||||
def bgapi(self, *args): return _ESL.ESLconnection_bgapi(self, *args)
|
||||
def sendEvent(self, *args): return _ESL.ESLconnection_sendEvent(self, *args)
|
||||
def sendMSG(self, *args): return _ESL.ESLconnection_sendMSG(self, *args)
|
||||
def recvEvent(self): return _ESL.ESLconnection_recvEvent(self)
|
||||
def recvEventTimed(self, *args): return _ESL.ESLconnection_recvEventTimed(self, *args)
|
||||
def filter(self, *args): return _ESL.ESLconnection_filter(self, *args)
|
||||
def events(self, *args): return _ESL.ESLconnection_events(self, *args)
|
||||
def execute(self, *args): return _ESL.ESLconnection_execute(self, *args)
|
||||
def executeAsync(self, *args): return _ESL.ESLconnection_executeAsync(self, *args)
|
||||
def setAsyncExecute(self, *args): return _ESL.ESLconnection_setAsyncExecute(self, *args)
|
||||
def setEventLock(self, *args): return _ESL.ESLconnection_setEventLock(self, *args)
|
||||
def disconnect(self): return _ESL.ESLconnection_disconnect(self)
|
||||
ESLconnection_swigregister = _ESL.ESLconnection_swigregister
|
||||
ESLconnection_swigregister(ESLconnection)
|
||||
|
||||
|
||||
def eslSetLogLevel(*args):
|
||||
return _ESL.eslSetLogLevel(*args)
|
||||
eslSetLogLevel = _ESL.eslSetLogLevel
|
||||
# This file is compatible with both classic and new-style classes.
|
||||
|
||||
|
28
libs/esl/python3/Makefile
Normal file
28
libs/esl/python3/Makefile
Normal file
@@ -0,0 +1,28 @@
|
||||
LOCAL_CFLAGS=`$(PYTHON3) ./python-config --includes`
|
||||
LOCAL_LDFLAGS=`$(PYTHON3) ./python-config --ldflags`
|
||||
SITE_DIR=$(DESTDIR)/`$(PYTHON3) -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(1))"`
|
||||
|
||||
all: _ESL.so
|
||||
|
||||
esl_wrap.cpp:
|
||||
swig3.0 -module ESL -classic -python -c++ -DMULTIPLICITY -threads -I../src/include -o esl_wrap.cpp ../ESL.i
|
||||
|
||||
esl_wrap.o: esl_wrap.cpp
|
||||
$(CXX) $(CXX_CFLAGS) $(CXXFLAGS) $(LOCAL_CFLAGS) -c esl_wrap.cpp -o esl_wrap.o
|
||||
|
||||
_ESL.so: esl_wrap.o
|
||||
$(CXX) $(SOLINK) esl_wrap.o $(MYLIB) $(LOCAL_LDFLAGS) -o _ESL.so -L. $(LIBS)
|
||||
|
||||
install: _ESL.so
|
||||
mkdir -p $(SITE_DIR)
|
||||
install -m 755 _ESL.so $(SITE_DIR)
|
||||
install -m 755 ESL.py $(SITE_DIR)
|
||||
|
||||
clean:
|
||||
rm -f *.o *.so *~
|
||||
|
||||
swigclean:
|
||||
rm -f esl_wrap.* ESL.so
|
||||
|
||||
reswig: swigclean esl_wrap.cpp
|
||||
|
6128
libs/esl/python3/esl_wrap.cpp
Normal file
6128
libs/esl/python3/esl_wrap.cpp
Normal file
File diff suppressed because it is too large
Load Diff
20
libs/esl/python3/events.py
Normal file
20
libs/esl/python3/events.py
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import string
|
||||
import sys
|
||||
|
||||
from ESL import *
|
||||
|
||||
con = ESLconnection("localhost","8021","ClueCon")
|
||||
#are we connected?
|
||||
|
||||
if con.connected:
|
||||
|
||||
con.events("plain", "all");
|
||||
|
||||
while 1:
|
||||
#my $e = $con->recvEventTimed(100);
|
||||
e = con.recvEvent()
|
||||
|
||||
if e:
|
||||
print e.serialize()
|
55
libs/esl/python3/python-config
Normal file
55
libs/esl/python3/python-config
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from __future__ import print_function
|
||||
import sys
|
||||
import os
|
||||
import getopt
|
||||
from distutils import sysconfig
|
||||
|
||||
valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
|
||||
'ldflags', 'help']
|
||||
|
||||
def exit_with_usage(code=1):
|
||||
print("Usage: %s [%s]" % (sys.argv[0], '|'.join('--'+opt for opt in valid_opts)), file=sys.stderr)
|
||||
sys.exit(code)
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(sys.argv[1:], '', valid_opts)
|
||||
except getopt.error:
|
||||
exit_with_usage()
|
||||
|
||||
if not opts:
|
||||
exit_with_usage()
|
||||
|
||||
opt = opts[0][0]
|
||||
|
||||
pyver = sysconfig.get_config_var('LDVERSION')
|
||||
if pyver == None:
|
||||
pyver = sysconfig.get_config_var('VERSION')
|
||||
getvar = sysconfig.get_config_var
|
||||
|
||||
if opt == '--help':
|
||||
exit_with_usage(0)
|
||||
|
||||
elif opt == '--prefix':
|
||||
print(sysconfig.PREFIX)
|
||||
|
||||
elif opt == '--exec-prefix':
|
||||
print(sysconfig.EXEC_PREFIX)
|
||||
|
||||
elif opt in ('--includes', '--cflags'):
|
||||
flags = ['-I' + sysconfig.get_python_inc(),
|
||||
'-I' + sysconfig.get_python_inc(plat_specific=True)]
|
||||
if opt == '--cflags':
|
||||
flags.extend(getvar('CFLAGS').split())
|
||||
print(' '.join(flags))
|
||||
|
||||
elif opt in ('--libs', '--ldflags'):
|
||||
libs = getvar('LIBS').split() + getvar('SYSLIBS').split()
|
||||
libs.append('-lpython'+pyver)
|
||||
# add the prefix/lib/pythonX.Y/config dir, but only if there is no
|
||||
# shared library in prefix/lib/.
|
||||
if opt == '--ldflags' and not getvar('Py_ENABLE_SHARED'):
|
||||
libs.insert(0, '-L' + getvar('LIBPL'))
|
||||
print(' '.join(libs))
|
||||
|
29
libs/esl/python3/server.py
Normal file
29
libs/esl/python3/server.py
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import SocketServer
|
||||
from ESL import *
|
||||
|
||||
class ESLRequestHandler(SocketServer.BaseRequestHandler ):
|
||||
def setup(self):
|
||||
print self.client_address, 'connected!'
|
||||
|
||||
fd = self.request.fileno()
|
||||
print fd
|
||||
|
||||
con = ESLconnection(fd)
|
||||
print "Connected: "
|
||||
print con.connected()
|
||||
if con.connected():
|
||||
|
||||
info = con.getInfo()
|
||||
|
||||
uuid = info.getHeader("unique-id")
|
||||
print uuid
|
||||
con.execute("answer", "", uuid)
|
||||
con.execute("playback", "/ram/swimp.raw", uuid);
|
||||
|
||||
#server host is a tuple ('host', port)
|
||||
server = SocketServer.ThreadingTCPServer(('', 8040), ESLRequestHandler)
|
||||
server.serve_forever()
|
||||
|
||||
|
43
libs/esl/python3/single_command.py
Normal file
43
libs/esl/python3/single_command.py
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import string
|
||||
import sys
|
||||
from optparse import OptionParser
|
||||
from ESL import *
|
||||
|
||||
def main(argv):
|
||||
|
||||
try:
|
||||
|
||||
parser = OptionParser()
|
||||
parser.add_option("-a", "--auth", dest="auth", default="ClueCon",
|
||||
help="ESL password")
|
||||
parser.add_option("-s", "--server", dest="server", default="127.0.0.1",
|
||||
help="FreeSWITCH server IP address")
|
||||
parser.add_option("-p", "--port", dest="port", default="8021",
|
||||
help="FreeSWITCH server event socket port")
|
||||
parser.add_option("-c", "--command", dest="command",
|
||||
help="command to run, surround mutli word commands in \"\'s")
|
||||
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
|
||||
con = ESLconnection(options.server, options.port, options.auth)
|
||||
#are we connected?
|
||||
|
||||
if con.connected():
|
||||
#run command
|
||||
e = con.api(options.command)
|
||||
print e.getBody()
|
||||
|
||||
else:
|
||||
|
||||
print "Not Connected"
|
||||
sys.exit(2)
|
||||
|
||||
except:
|
||||
|
||||
print parser.get_usage()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv[1:])
|
Reference in New Issue
Block a user