Commit 04ca8553 by Solo Group

update forwarder

1 parent db249bb3
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (iso8583-web)" project-jdk-type="Python SDK" />
<component name="PyCharmProfessionalAdvertiser">
<option name="shown" value="true" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/iso8583-web.iml" filepath="$PROJECT_DIR$/.idea/iso8583-web.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="cb7b1df1-40b2-433d-bd09-a46fc0bc5972" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/development.ini" beforeDir="false" afterPath="$PROJECT_DIR$/development.ini" afterDir="false" />
<change beforePath="$PROJECT_DIR$/iso8583.ini" beforeDir="false" afterPath="$PROJECT_DIR$/iso8583.ini" afterDir="false" />
<change beforePath="$PROJECT_DIR$/iso8583_web/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/iso8583_web/__init__.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/iso8583_web/routes.csv" beforeDir="false" afterPath="$PROJECT_DIR$/iso8583_web/routes.csv" afterDir="false" />
<change beforePath="$PROJECT_DIR$/iso8583_web/scripts/forwarder.py" beforeDir="false" afterPath="$PROJECT_DIR$/iso8583_web/scripts/forwarder.py" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FUSProjectUsageTrigger">
<session id="40257817">
<usages-collector id="statistics.lifecycle.project">
<counts>
<entry key="project.closed" value="1" />
<entry key="project.open.time.0" value="1" />
<entry key="project.open.time.12" value="1" />
<entry key="project.open.time.2" value="1" />
<entry key="project.open.time.4" value="1" />
<entry key="project.opened" value="4" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.extensions.open">
<counts>
<entry key="csv" value="1" />
<entry key="ini" value="3" />
<entry key="py" value="10" />
<entry key="rst" value="1" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.types.open">
<counts>
<entry key="PLAIN_TEXT" value="4" />
<entry key="Python" value="10" />
<entry key="ReST" value="1" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.extensions.edit">
<counts>
<entry key="csv" value="3" />
<entry key="py" value="118" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.types.edit">
<counts>
<entry key="PLAIN_TEXT" value="3" />
<entry key="Python" value="118" />
</counts>
</usages-collector>
</session>
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/iso8583_web/scripts/forwarder.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="196">
<caret line="351" selection-start-line="351" selection-end-line="351" />
<folding>
<element signature="e#0#9#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test-bjb.ini">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="43" column="16" lean-forward="true" selection-start-line="43" selection-start-column="16" selection-end-line="43" selection-end-column="16" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/README.rst">
<provider selected="true" editor-type-id="restructured-text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test-pemda.ini">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-3">
<caret line="23" column="17" lean-forward="true" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="17" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/production.ini">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-377">
<caret line="16" column="26" lean-forward="true" selection-start-line="16" selection-start-column="26" selection-end-line="16" selection-end-column="26" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/env/Lib/site-packages/opensipkd/tcp/connection.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2737">
<caret line="166" column="18" selection-start-line="166" selection-start-column="13" selection-end-line="166" selection-end-column="18" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>global_config</find>
<find>json</find>
<find>web =</find>
<find>web['port']</find>
<find>web</find>
<find>BankNot</find>
<find>Ban</find>
<find>conn_mgr.add</find>
<find>conn_by_name</find>
<find>validate_rpc</find>
<find>conn_mgr</find>
<find>print</find>
</findStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/iso8583_web/routes.csv" />
<option value="$PROJECT_DIR$/iso8583_web/__init__.py" />
<option value="$PROJECT_DIR$/iso8583_web/scripts/forwarder.py" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="width" value="537" />
<option name="height" value="582" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="iso8583-web" type="b2602c69:ProjectViewProjectNode" />
<item name="iso8583-web" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="iso8583-web" type="b2602c69:ProjectViewProjectNode" />
<item name="iso8583-web" type="462c0819:PsiDirectoryNode" />
<item name="iso8583_web" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="iso8583-web" type="b2602c69:ProjectViewProjectNode" />
<item name="iso8583-web" type="462c0819:PsiDirectoryNode" />
<item name="iso8583_web" type="462c0819:PsiDirectoryNode" />
<item name="scripts" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="cb7b1df1-40b2-433d-bd09-a46fc0bc5972" name="Default Changelist" comment="" />
<created>1552542419313</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1552542419313</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="-7" y="-7" width="1295" height="709" extended-state="6" />
<editor active="true" />
<layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24960254" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Terminal" order="8" />
<window_info anchor="bottom" id="Event Log" order="9" side_tool="true" />
<window_info anchor="bottom" id="Python Console" order="10" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/env/Lib/site-packages/opensipkd/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/env/Lib/site-packages/opensipkd/tcp/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/env/Lib/site-packages/opensipkd/base/rpc/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/iso8583_web/read_conf.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1343">
<caret line="79" column="26" selection-start-line="79" selection-start-column="23" selection-end-line="79" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/env/Lib/site-packages/opensipkd/base/rpc/auth.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/env/Lib/site-packages/opensipkd/jsonrpc/auth.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="391">
<caret line="31" selection-start-line="31" selection-end-line="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/setup.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="32" column="18" selection-start-line="32" selection-start-column="18" selection-end-line="32" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/iso8583_web/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="79" selection-start-line="79" selection-end-line="79" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/iso8583_web/routes.csv">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="306">
<caret line="18" column="3" selection-start-line="18" selection-start-column="3" selection-end-line="18" selection-end-column="3" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/env/Lib/site-packages/opensipkd/tcp/connection.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2737">
<caret line="166" column="18" selection-start-line="166" selection-start-column="13" selection-end-line="166" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/production.ini">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-377">
<caret line="16" column="26" lean-forward="true" selection-start-line="16" selection-start-column="26" selection-end-line="16" selection-end-column="26" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.rst">
<provider selected="true" editor-type-id="restructured-text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/test-bjb.ini">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="43" column="16" lean-forward="true" selection-start-line="43" selection-start-column="16" selection-end-line="43" selection-end-column="16" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test-pemda.ini">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-3">
<caret line="23" column="17" lean-forward="true" selection-start-line="23" selection-start-column="17" selection-end-line="23" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/iso8583_web/scripts/forwarder.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="196">
<caret line="351" selection-start-line="351" selection-end-line="351" />
<folding>
<element signature="e#0#9#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
......@@ -14,7 +14,7 @@ pyramid.default_locale_name = id
pyramid.includes =
pyramid_debugtoolbar
sqlalchemy.url = postgresql://user:pass@localhost/dbname
sqlalchemy.url = postgresql://aagusti:a@localhost/iso8583
timezone = Asia/Jakarta
localization = id_ID.UTF-8
......
......@@ -38,7 +38,7 @@ format = %(asctime)s %(levelname)s %(message)s
[host_bjb]
ip = 127.0.0.1
port = 10002
listen = false
listen = true
streamer = bjb_with_suffix
[host_mitracomm]
......
......@@ -60,6 +60,8 @@ def main(global_config, **settings):
config.include('pyramid_tm')
config.include('pyramid_beaker')
config.include('pyramid_chameleon')
# added by agus gustiana
config.include('pyramid_rpc.jsonrpc')
authn_policy = AuthTktAuthenticationPolicy(
'sosecret', callback=group_finder, hashalg='sha512')
......
......@@ -50,6 +50,7 @@ def get_int(conf, section, option, default):
MSG_DUPLICATE = 'IP {ip} port {port} ganda. Perbaiki konfigurasi.'
def validate_ip_port(ip_port):
if ip_port in ip_conf:
cfg = ip_conf[ip_port]
......@@ -76,10 +77,23 @@ def get_streamer_class(name):
def read_conf(conf_file):
conf = ConfigParser()
conf.read(conf_file)
# Load Config Modules
modules = dict()
for section in conf.sections():
# if section.find('module_') < 0:
# continue
if section != "module":
continue
for key, value in conf.items(section):
modules[key] = value
# Load Config Host
for section in conf.sections():
if section == 'web':
web['port'] = conf.getint(section, 'port')
continue
if section.find('host_') < 0:
continue
try:
......@@ -88,11 +102,11 @@ def read_conf(conf_file):
active = True
if not active:
continue
cfg = dict()
ip = conf.get(section, 'ip')
port = conf.getint(section, 'port')
ip_port = join_ip_port(ip, port)
validate_ip_port(ip_port)
cfg = dict()
cfg['ip'] = ip
cfg['port'] = port
cfg['name'] = name = section.split('_')[1]
......@@ -100,6 +114,7 @@ def read_conf(conf_file):
cfg['streamer_cls'] = get_streamer_class(cfg['streamer'])
cfg['module'] = get_str(conf, section, 'module', 'opensipkd.iso8583.network')
cfg['module_obj'] = get_module_object(cfg['module'])
cfg['module_conf'] = modules
cfg['ip'] = conf.get(section, 'ip')
cfg['port'] = conf.getint(section, 'port')
cfg['listen'] = get_boolean(conf, section, 'listen', True)
......@@ -110,4 +125,5 @@ def read_conf(conf_file):
listen_ports.append(port)
if ip not in allowed_ips:
allowed_ips.append(ip)
# print(cfg)
ip_conf[ip_port] = name_conf[name] = dict(cfg)
......@@ -16,3 +16,4 @@ group-add,/group/add
group-edit,/group/{id}
group-delete,/group/{id}/delete
log
rpc
\ No newline at end of file
......@@ -298,8 +298,11 @@ class Parser(Log):
def run(self):
from_iso = self.connection.job.raw_to_iso(self.raw)
print("RUN from_iso", from_iso)
self.log_decode(from_iso)
iso = self.connection.job.process(from_iso)
print("RUN iso", iso)
if iso:
self.log_encode(iso)
raw = iso.getRawIso()
......@@ -348,10 +351,15 @@ def log_web_error(s):
def conn_by_name(name):
# Tambahan Exceptions
if name not in name_conf:
raise ValueError("host %s not found" %name)
conf = name_conf[name]
found_conn = None
for ip_port, conn in conn_mgr:
ip, port = ip_port.split(':')
print("DEBUG>>", ip, port, conf['ip'])
if conf['ip'] != ip:
continue
port = int(port)
......@@ -408,6 +416,7 @@ def web_job(conn, iso):
if ip_port not in web_response:
continue
result = web_response[ip_port]
print("Win Job", result)
if stan in result:
iso = result[stan]
del result[stan]
......@@ -442,9 +451,11 @@ def echo(request, p):
@jsonrpc_method(endpoint='rpc')
def inquiry(request, p):
log_web_receive(request, 'inquiry', p)
conn = validate_rpc(p)
iso = conn.job.inquiry(p)
return web_job(conn, iso)
result = web_job(conn, iso)
return result
@jsonrpc_method(endpoint='rpc')
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!