author | Edouard Tisserant |
Thu, 05 Jul 2018 13:45:24 +0200 | |
branch | nevow_service_rework |
changeset 2214 | b9cdbcc992d5 |
parent 2212 | cf1718962567 |
child 2215 | f808ec7dc10e |
permissions | -rw-r--r-- |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
2 |
# -*- coding: utf-8 -*- |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
3 |
|
1667
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
4 |
# This file is part of Beremiz runtime. |
1511
91538d0c242c
add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1446
diff
changeset
|
5 |
# |
91538d0c242c
add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1446
diff
changeset
|
6 |
# Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD |
91538d0c242c
add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1446
diff
changeset
|
7 |
# |
1667
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
8 |
# See COPYING.Runtime file for copyrights details. |
1511
91538d0c242c
add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1446
diff
changeset
|
9 |
# |
1667
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
10 |
# This library is free software; you can redistribute it and/or |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
11 |
# modify it under the terms of the GNU Lesser General Public |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
12 |
# License as published by the Free Software Foundation; either |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
13 |
# version 2.1 of the License, or (at your option) any later version. |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
14 |
|
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
15 |
# This library is distributed in the hope that it will be useful, |
1511
91538d0c242c
add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1446
diff
changeset
|
16 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1667
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
17 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
18 |
# Lesser General Public License for more details. |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
19 |
|
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
20 |
# You should have received a copy of the GNU Lesser General Public |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
21 |
# License along with this library; if not, write to the Free Software |
cefc9219bb48
runtime is licensed under LGPLv2.1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1511
diff
changeset
|
22 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
1511
91538d0c242c
add copyright notices to python files where there were missing, that
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1446
diff
changeset
|
23 |
|
1826
91796f408540
fix usage of python2-only print statement
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1782
diff
changeset
|
24 |
|
1881
091005ec69c4
fix pylint py3k conversion warning: "(no-absolute-import) import missing `from __future__ import absolute_import`"
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1878
diff
changeset
|
25 |
from __future__ import absolute_import |
1826
91796f408540
fix usage of python2-only print statement
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1782
diff
changeset
|
26 |
from __future__ import print_function |
1899
ff4410112b67
runtime/WAMP : was 'Added time print on session left.' from dporopat. Purpose is to log (dis/re)connection, to help debugging connection problem
Edouard Tisserant
parents:
1898
diff
changeset
|
27 |
import time |
1893
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
28 |
import json |
2203
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
29 |
import os |
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
30 |
import re |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
31 |
from autobahn.twisted import wamp |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
32 |
from autobahn.twisted.websocket import WampWebSocketClientFactory, connectWS |
1893
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
33 |
from autobahn.wamp import types, auth |
1440
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
34 |
from autobahn.wamp.serializer import MsgPackSerializer |
1834
cd42b426028b
fix ungrouped imports from package X
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1832
diff
changeset
|
35 |
from twisted.internet.defer import inlineCallbacks |
1441
826730e60407
Added auto-reconnect for runtime. Fixed Beremiz closing problem caused by remaining twisted reactor thread in IDE.
Edouard Tisserant
parents:
1440
diff
changeset
|
36 |
from twisted.internet.protocol import ReconnectingClientFactory |
1832
0f1081928d65
fix wrong-import-order. first standard modules are imported, then others
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1826
diff
changeset
|
37 |
|
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
38 |
|
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
39 |
mandatoryConfigItems = ["ID", "active", "realm", "url"] |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
40 |
|
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
41 |
_transportFactory = None |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
42 |
_WampSession = None |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
43 |
_PySrv = None |
2202
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
44 |
_WampConf = None |
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
45 |
_WampSecret = None |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
46 |
|
1878
fb73a6b6622d
fix pylint warning '(bad-continuation) Wrong hanging indentation before block'
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1850
diff
changeset
|
47 |
ExposedCalls = [ |
2206
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
48 |
("StartPLC", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
49 |
("StopPLC", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
50 |
("ForceReload", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
51 |
("GetPLCstatus", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
52 |
("NewPLC", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
53 |
("MatchMD5", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
54 |
("SetTraceVariablesList", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
55 |
("GetTraceVariables", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
56 |
("RemoteExec", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
57 |
("GetLogMessage", {}), |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
58 |
("ResetLogCount", {}) |
1878
fb73a6b6622d
fix pylint warning '(bad-continuation) Wrong hanging indentation before block'
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1850
diff
changeset
|
59 |
] |
1440
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
60 |
|
1898
d2dbdeffc426
runtime/Wamp : adapt to unicode being enforced in latest crossbar API. Updated some documentation, to explain why there is unused definitions like SubscribedEvents or DoOnJoin.
Edouard Tisserant
parents:
1894
diff
changeset
|
61 |
# Those two lists are meant to be filled by customized runtime |
1901
e8cf68d69447
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant
parents:
1900
diff
changeset
|
62 |
# or User python code. |
1898
d2dbdeffc426
runtime/Wamp : adapt to unicode being enforced in latest crossbar API. Updated some documentation, to explain why there is unused definitions like SubscribedEvents or DoOnJoin.
Edouard Tisserant
parents:
1894
diff
changeset
|
63 |
|
1901
e8cf68d69447
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant
parents:
1900
diff
changeset
|
64 |
""" crossbar Events to register to """ |
1446
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
65 |
SubscribedEvents = [] |
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
66 |
|
1901
e8cf68d69447
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant
parents:
1900
diff
changeset
|
67 |
""" things to do on join (callables) """ |
1446
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
68 |
DoOnJoin = [] |
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
69 |
|
1736
7e61baa047f0
clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1667
diff
changeset
|
70 |
|
1445
e25479e3fe11
More versatile registering of wamp callees
Edouard Tisserant
parents:
1443
diff
changeset
|
71 |
def GetCallee(name): |
1446
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
72 |
""" Get Callee or Subscriber corresponding to '.' spearated object path """ |
1445
e25479e3fe11
More versatile registering of wamp callees
Edouard Tisserant
parents:
1443
diff
changeset
|
73 |
names = name.split('.') |
e25479e3fe11
More versatile registering of wamp callees
Edouard Tisserant
parents:
1443
diff
changeset
|
74 |
obj = _PySrv.plcobj |
1756
08e4394ff4fb
clean-up: fix PEP8 E701 multiple statements on one line (colon)
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1753
diff
changeset
|
75 |
while names: |
08e4394ff4fb
clean-up: fix PEP8 E701 multiple statements on one line (colon)
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1753
diff
changeset
|
76 |
obj = getattr(obj, names.pop(0)) |
1445
e25479e3fe11
More versatile registering of wamp callees
Edouard Tisserant
parents:
1443
diff
changeset
|
77 |
return obj |
1440
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
78 |
|
1736
7e61baa047f0
clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1667
diff
changeset
|
79 |
|
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
80 |
class WampSession(wamp.ApplicationSession): |
1893
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
81 |
def onConnect(self): |
1901
e8cf68d69447
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant
parents:
1900
diff
changeset
|
82 |
if "secret" in self.config.extra: |
2194
35d6b9321ffd
#2486 Updated wamp test project to work with the latest Crossbar version.
dporopat <denis.poropat@smarteh.si>
parents:
2193
diff
changeset
|
83 |
user = self.config.extra["ID"] |
1893
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
84 |
self.join(u"Automation", [u"wampcra"], user) |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
85 |
else: |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
86 |
self.join(u"Automation") |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
87 |
|
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
88 |
def onChallenge(self, challenge): |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
89 |
if challenge.method == u"wampcra": |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
90 |
secret = self.config.extra["secret"].encode('utf8') |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
91 |
signature = auth.compute_wcs(secret, challenge.extra['challenge'].encode('utf8')) |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
92 |
return signature.decode("ascii") |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
93 |
else: |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
94 |
raise Exception("don't know how to handle authmethod {}".format(challenge.method)) |
1440
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
95 |
|
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
96 |
@inlineCallbacks |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
97 |
def onJoin(self, details): |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
98 |
global _WampSession |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
99 |
_WampSession = self |
1901
e8cf68d69447
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant
parents:
1900
diff
changeset
|
100 |
ID = self.config.extra["ID"] |
2206
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
101 |
|
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
102 |
for name, kwargs in ExposedCalls: |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
103 |
try: |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
104 |
registerOptions = types.RegisterOptions(**kwargs) |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
105 |
except TypeError as e: |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
106 |
registerOptions = None |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
107 |
print(_("TypeError register option: {}".format(e))) |
1e397afc36a9
#2486 ExposedCalls with register options as a dictionary.
dporopat <denis.poropat@smarteh.si>
parents:
2205
diff
changeset
|
108 |
|
2197
bec80ff35282
#2486 Unnecessary variable removed.
dporopat <denis.poropat@smarteh.si>
parents:
2196
diff
changeset
|
109 |
yield self.register(GetCallee(name), u'.'.join((ID, name)), registerOptions) |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
110 |
|
1446
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
111 |
for name in SubscribedEvents: |
1898
d2dbdeffc426
runtime/Wamp : adapt to unicode being enforced in latest crossbar API. Updated some documentation, to explain why there is unused definitions like SubscribedEvents or DoOnJoin.
Edouard Tisserant
parents:
1894
diff
changeset
|
112 |
yield self.subscribe(GetCallee(name), unicode(name)) |
1446
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
113 |
|
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
114 |
for func in DoOnJoin: |
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
115 |
yield func(self) |
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
116 |
|
2194
35d6b9321ffd
#2486 Updated wamp test project to work with the latest Crossbar version.
dporopat <denis.poropat@smarteh.si>
parents:
2193
diff
changeset
|
117 |
print(_('WAMP session joined (%s) by:' % time.ctime()), ID) |
35d6b9321ffd
#2486 Updated wamp test project to work with the latest Crossbar version.
dporopat <denis.poropat@smarteh.si>
parents:
2193
diff
changeset
|
118 |
|
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
119 |
def onLeave(self, details): |
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
120 |
global _WampSession, _transportFactory |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
121 |
super(WampSession, self).onLeave(details) |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
122 |
_WampSession = None |
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
123 |
_transportFactory = None |
1890
916099cb8d22
non significant print syntax change. ready for py3.
Edouard Tisserant
parents:
1881
diff
changeset
|
124 |
print(_('WAMP session left')) |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
125 |
|
1736
7e61baa047f0
clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1667
diff
changeset
|
126 |
|
1441
826730e60407
Added auto-reconnect for runtime. Fixed Beremiz closing problem caused by remaining twisted reactor thread in IDE.
Edouard Tisserant
parents:
1440
diff
changeset
|
127 |
class ReconnectingWampWebSocketClientFactory(WampWebSocketClientFactory, ReconnectingClientFactory): |
2195
2cef75d036c2
#2486 Added option to use websocket protocol options.
dporopat <denis.poropat@smarteh.si>
parents:
2194
diff
changeset
|
128 |
def __init__(self, config, *args, **kwargs): |
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
129 |
global _transportFactory |
2195
2cef75d036c2
#2486 Added option to use websocket protocol options.
dporopat <denis.poropat@smarteh.si>
parents:
2194
diff
changeset
|
130 |
WampWebSocketClientFactory.__init__(self, *args, **kwargs) |
2cef75d036c2
#2486 Added option to use websocket protocol options.
dporopat <denis.poropat@smarteh.si>
parents:
2194
diff
changeset
|
131 |
|
2207
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
132 |
try: |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
133 |
protocolOptions = config.extra.get('protocolOptions', None) |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
134 |
if protocolOptions: |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
135 |
self.setProtocolOptions(**protocolOptions) |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
136 |
_transportFactory = self |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
137 |
except Exception, e: |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
138 |
print(_("Custom protocol options failed :"), e) |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
139 |
_transportFactory = None |
2195
2cef75d036c2
#2486 Added option to use websocket protocol options.
dporopat <denis.poropat@smarteh.si>
parents:
2194
diff
changeset
|
140 |
|
2193
259df9ecf9ca
#2486 Reset delay function added. It resets the delay and the retry counter on reconnect.
dporopat <denis.poropat@smarteh.si>
parents:
1955
diff
changeset
|
141 |
def buildProtocol(self, addr): |
259df9ecf9ca
#2486 Reset delay function added. It resets the delay and the retry counter on reconnect.
dporopat <denis.poropat@smarteh.si>
parents:
1955
diff
changeset
|
142 |
self.resetDelay() |
259df9ecf9ca
#2486 Reset delay function added. It resets the delay and the retry counter on reconnect.
dporopat <denis.poropat@smarteh.si>
parents:
1955
diff
changeset
|
143 |
return ReconnectingClientFactory.buildProtocol(self, addr) |
259df9ecf9ca
#2486 Reset delay function added. It resets the delay and the retry counter on reconnect.
dporopat <denis.poropat@smarteh.si>
parents:
1955
diff
changeset
|
144 |
|
1441
826730e60407
Added auto-reconnect for runtime. Fixed Beremiz closing problem caused by remaining twisted reactor thread in IDE.
Edouard Tisserant
parents:
1440
diff
changeset
|
145 |
def clientConnectionFailed(self, connector, reason): |
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
146 |
if self.continueTrying: |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
147 |
print(_("WAMP Client connection failed (%s) .. retrying .." % time.ctime())) |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
148 |
super(ReconnectingWampWebSocketClientFactory, self).clientConnectionFailed(connector, reason) |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
149 |
else: |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
150 |
del connector |
1751
c28db6f7616b
clean-up: fix PEP8 E301 expected 1 blank line, found 0
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1748
diff
changeset
|
151 |
|
1441
826730e60407
Added auto-reconnect for runtime. Fixed Beremiz closing problem caused by remaining twisted reactor thread in IDE.
Edouard Tisserant
parents:
1440
diff
changeset
|
152 |
def clientConnectionLost(self, connector, reason): |
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
153 |
if self.continueTrying: |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
154 |
print(_("WAMP Client connection lost (%s) .. retrying .." % time.ctime())) |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
155 |
super(ReconnectingWampWebSocketClientFactory, self).clientConnectionFailed(connector, reason) |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
156 |
else: |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
157 |
del connector |
1441
826730e60407
Added auto-reconnect for runtime. Fixed Beremiz closing problem caused by remaining twisted reactor thread in IDE.
Edouard Tisserant
parents:
1440
diff
changeset
|
158 |
|
1736
7e61baa047f0
clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1667
diff
changeset
|
159 |
|
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
160 |
def GetConfiguration(): |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
161 |
WSClientConf = json.load(open(_WampConf)) |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
162 |
for itemName in mandatoryConfigItems: |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
163 |
if WSClientConf.get(itemName, None) is None : |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
164 |
raise Exception(_("WAMP configuration error : missing '{}' parameter.").format(itemName)) |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
165 |
|
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
166 |
return WSClientConf |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
167 |
|
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
168 |
|
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
169 |
def SetConfiguration(WSClientConf): |
1893
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
170 |
try: |
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
171 |
with open(os.path.realpath(_WampConf), 'w') as f: |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
172 |
json.dump(WSClientConf, f, sort_keys=True, indent=4) |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
173 |
if 'active' in WSClientConf and WSClientConf['active']: |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
174 |
if _transportFactory and _WampSession: |
2204
25dafeb98b55
#2486 Reconnect funtion in SaveWampClientConf function.
dporopat <denis.poropat@smarteh.si>
parents:
2203
diff
changeset
|
175 |
StopReconnectWampClient() |
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
176 |
StartReconnectWampClient() |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
177 |
else: |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
178 |
StopReconnectWampClient() |
2202
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
179 |
|
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
180 |
return WSClientConf |
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
181 |
except ValueError, ve: |
2203
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
182 |
print(_("WAMP save error: "), ve) |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
183 |
return None |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
184 |
except Exception, e: |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
185 |
print(_("WAMP save error: "), e) |
2202
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
186 |
return None |
1901
e8cf68d69447
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant
parents:
1900
diff
changeset
|
187 |
|
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
188 |
|
1893
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
189 |
def LoadWampSecret(secretfname): |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
190 |
try: |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
191 |
WSClientWampSecret = open(secretfname, 'rb').read() |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
192 |
return WSClientWampSecret |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
193 |
except ValueError, ve: |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
194 |
print(_("Wamp secret load error:"), ve) |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
195 |
return None |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
196 |
except Exception: |
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
197 |
return None |
1446
4963e3816641
Split runtime's twisted modules import and setup to ease runtime extensions hotpatching
Edouard Tisserant
parents:
1445
diff
changeset
|
198 |
|
1736
7e61baa047f0
clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1667
diff
changeset
|
199 |
|
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
200 |
def IsCorrectUri(uri): |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
201 |
if re.match(r'w{1}s{1,2}:{1}/{2}.+:{1}[0-9]+/{1}.+', uri): |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
202 |
return True |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
203 |
else: |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
204 |
return False |
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
205 |
|
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
206 |
|
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
207 |
def RegisterWampClient(wampconf=None, wampsecret=None): |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
208 |
global _WampConf, _WampSecret |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
209 |
if wampsecret: |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
210 |
_WampSecret = wampsecret |
2202
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
211 |
if wampconf: |
2204
25dafeb98b55
#2486 Reconnect funtion in SaveWampClientConf function.
dporopat <denis.poropat@smarteh.si>
parents:
2203
diff
changeset
|
212 |
_WampConf = wampconf |
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
213 |
|
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
214 |
WSClientConf = GetConfiguration() |
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
215 |
|
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
216 |
if not IsCorrectUri(WSClientConf["url"]): |
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
217 |
raise Exception(_("WAMP url {} is not correct!").format(WSClientConf["url"])) |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
218 |
|
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
219 |
if not WSClientConf["active"]: |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
220 |
print(_("WAMP deactivated in configuration")) |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
221 |
return |
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
222 |
|
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
223 |
WampSecret = LoadWampSecret(_WampSecret) |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
224 |
|
1900
9d1547578f55
runtime/WAMP: Fixed secret loading into configuration. Fixed secret commandline switch handling.
Edouard Tisserant
parents:
1899
diff
changeset
|
225 |
if WampSecret is not None: |
9d1547578f55
runtime/WAMP: Fixed secret loading into configuration. Fixed secret commandline switch handling.
Edouard Tisserant
parents:
1899
diff
changeset
|
226 |
WSClientConf["secret"] = WampSecret |
9d1547578f55
runtime/WAMP: Fixed secret loading into configuration. Fixed secret commandline switch handling.
Edouard Tisserant
parents:
1899
diff
changeset
|
227 |
|
1440
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
228 |
# create a WAMP application session factory |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
229 |
component_config = types.ComponentConfig( |
1744
69dfdb26f600
clean-up: fix PEP8 E251 unexpected spaces around keyword / parameter equals
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1740
diff
changeset
|
230 |
realm=WSClientConf["realm"], |
1901
e8cf68d69447
Enforced check_source.sh pep8 and pylint rules.
Edouard Tisserant
parents:
1900
diff
changeset
|
231 |
extra=WSClientConf) |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
232 |
session_factory = wamp.ApplicationSessionFactory( |
1744
69dfdb26f600
clean-up: fix PEP8 E251 unexpected spaces around keyword / parameter equals
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1740
diff
changeset
|
233 |
config=component_config) |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
234 |
session_factory.session = WampSession |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
235 |
|
1440
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
236 |
# create a WAMP-over-WebSocket transport client factory |
2207
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
237 |
ReconnectingWampWebSocketClientFactory( |
2195
2cef75d036c2
#2486 Added option to use websocket protocol options.
dporopat <denis.poropat@smarteh.si>
parents:
2194
diff
changeset
|
238 |
component_config, |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
239 |
session_factory, |
1744
69dfdb26f600
clean-up: fix PEP8 E251 unexpected spaces around keyword / parameter equals
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1740
diff
changeset
|
240 |
url=WSClientConf["url"], |
1893
971de876b1af
WAMP runtime : changes from dporopat and agregorcic, adding CRA (-s) and changed way to load WAMP conf (-c)
Edouard Tisserant
parents:
1892
diff
changeset
|
241 |
serializers=[MsgPackSerializer()]) |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
242 |
|
1440
e8daabf2c438
Runtime : Added PLCobject methods registring. IDE : Added WAMP connector. Still need some fixes
Edouard Tisserant
parents:
1439
diff
changeset
|
243 |
# start the client from a Twisted endpoint |
2207
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
244 |
if _transportFactory: |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
245 |
conn = connectWS(_transportFactory) |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
246 |
print(_("WAMP client connecting to :"), WSClientConf["url"]) |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
247 |
return True |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
248 |
else: |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
249 |
print(_("WAMP client can not connect to :"), WSClientConf["url"]) |
c27b820cb96b
#2486 Exception if custom protocol options are wrong.
dporopat <denis.poropat@smarteh.si>
parents:
2206
diff
changeset
|
250 |
return False |
2204
25dafeb98b55
#2486 Reconnect funtion in SaveWampClientConf function.
dporopat <denis.poropat@smarteh.si>
parents:
2203
diff
changeset
|
251 |
|
2201
4e511f5aad19
#2486 Added global TransportFactory, needed in WebInterface reconnecting function.
dporopat <denis.poropat@smarteh.si>
parents:
2199
diff
changeset
|
252 |
|
2203
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
253 |
def StopReconnectWampClient(): |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
254 |
_transportFactory.stopTrying() |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
255 |
return _WampSession.leave() |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
256 |
|
2204
25dafeb98b55
#2486 Reconnect funtion in SaveWampClientConf function.
dporopat <denis.poropat@smarteh.si>
parents:
2203
diff
changeset
|
257 |
|
2203
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
258 |
def StartReconnectWampClient(): |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
259 |
if _WampSession: |
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
260 |
# do reconnect |
2202
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
261 |
_WampSession.disconnect() |
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
262 |
return True |
2204
25dafeb98b55
#2486 Reconnect funtion in SaveWampClientConf function.
dporopat <denis.poropat@smarteh.si>
parents:
2203
diff
changeset
|
263 |
else: |
2203
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
264 |
# do connect |
2202
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
265 |
RegisterWampClient() |
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
266 |
return True |
2203
c8a32ad27c0a
#2486 Modified reconnect function. Added 'active' parameter to wampconf.json file.
dporopat <denis.poropat@smarteh.si>
parents:
2202
diff
changeset
|
267 |
|
1736
7e61baa047f0
clean-up: fix PEP8 E302 expected 2 blank lines, found 1
Andrey Skvortsov <andrej.skvortzov@gmail.com>
parents:
1667
diff
changeset
|
268 |
|
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
269 |
def GetSession(): |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
270 |
return _WampSession |
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
271 |
|
2204
25dafeb98b55
#2486 Reconnect funtion in SaveWampClientConf function.
dporopat <denis.poropat@smarteh.si>
parents:
2203
diff
changeset
|
272 |
|
2202
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
273 |
def StatusWampClient(): |
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
274 |
return _WampSession and _WampSession.is_attached() |
237c1a2de1c8
#2486 Adding reconnect funtion to WampClient. Global TransportFactory not needed anymore.
dporopat <denis.poropat@smarteh.si>
parents:
2201
diff
changeset
|
275 |
|
2204
25dafeb98b55
#2486 Reconnect funtion in SaveWampClientConf function.
dporopat <denis.poropat@smarteh.si>
parents:
2203
diff
changeset
|
276 |
|
2212
cf1718962567
WampClient : Simplified, removed dead code, use exception for handling failures and misconfiguration, check existence of mandatory parameters.
Edouard Tisserant
parents:
2207
diff
changeset
|
277 |
def SetServer(pysrv): |
1439
a68cd4253259
Added stub code for runtime WAMP client. Added runtime command line switch to select WAMP url and Nevow web site port. Web port is now fixed, next port number is not tested if bind fails.
Edouard Tisserant
parents:
diff
changeset
|
278 |
_PySrv = pysrv |