Repository navigation
Expand file tree
/
Copy pathhost.py
More file actions
126 lines (104 loc) · 3.96 KB
/
Copy pathhost.py
File metadata and controls
126 lines (104 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# -*- coding: utf-8 -*-
# Copyright (C) 2013-Today Carlos Eduardo Vercelino - CLVsol
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
import ssl
import xmlrpc
logging.basicConfig(level=logging.DEBUG)
_logger = logging.getLogger(__name__)
def host_login(host, dbname, user, user_pw):
_logger.info(u'%s %s %s %s', '-->',
'host_login',
host,
dbname)
uid = False
sock = False
xmlrpc_sock_common_url = host + '/xmlrpc/2/common'
xmlrpc_sock_str = host + '/xmlrpc/2/object'
server_version = False
login_msg = ''
user_name = ''
company_name = ''
ssl._create_default_https_context = ssl._create_unverified_context
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
sock_common = xmlrpc.client.ServerProxy(xmlrpc_sock_common_url, context=ctx)
try:
server_version = sock_common.version()
except Exception:
pass
if server_version is not False:
pass
else:
login_msg = '[11] Server is not responding.'
_logger.info(u'%s %s %s %s', '-->',
login_msg,
user_name,
company_name)
return uid, sock, login_msg
try:
sock_common = xmlrpc.client.ServerProxy(xmlrpc_sock_common_url)
uid = sock_common.login(dbname, user, user_pw)
_logger.info(u'%s %s', '--> uid', uid)
sock = xmlrpc.client.ServerProxy(xmlrpc_sock_str)
_logger.info(u'%s %s', '--> sock', sock)
except Exception as e:
_logger.info(u'%s %s', '--> except', type(e).__name__)
login_msg = '[22] Database does not exist.'
_logger.info(u'%s %s %s %s', '-->',
login_msg,
user_name,
company_name)
return uid, sock, login_msg
if uid is not False:
pass
else:
login_msg = '[21] Invalid Login/Pasword.'
_logger.info(u'%s %s %s %s', '-->',
login_msg,
user_name,
company_name)
return uid, sock, login_msg
try:
sock_common = xmlrpc.client.ServerProxy(xmlrpc_sock_common_url)
uid = sock_common.login(dbname, user, user_pw)
sock = xmlrpc.client.ServerProxy(xmlrpc_sock_str)
except Exception:
pass
user_fields = ['name', 'parent_id', ]
try:
user_data = sock.execute(dbname, uid, user_pw, 'res.users', 'read',
uid, user_fields)[0]
except KeyError:
user_data = sock.execute(dbname, uid, user_pw, 'res.users', 'read',
uid, user_fields)
user_name = user_data['name']
parent_id = user_data['parent_id']
if parent_id is not False:
args = [('id', '=', parent_id[0])]
company_id = sock.execute(dbname, uid, user_pw, 'res.company', 'search', args)
company_fields = ['name', ]
company_data = sock.execute(dbname, uid, user_pw, 'res.company', 'read',
company_id[0], company_fields)[0]
company_name = company_data['name']
if uid is not False:
login_msg = '[01] Login Ok.'
_logger.info(u'%s %s %s %s', '-->',
login_msg,
user_name,
company_name)
if uid is not False:
user_fields = ['name', 'parent_id', ]
try:
user_data = sock.execute(dbname, uid, user_pw, 'res.users', 'read',
uid, user_fields)[0]
except KeyError:
user_data = sock.execute(dbname, uid, user_pw, 'res.users', 'read',
uid, user_fields)
user_name = user_data['name']
parent_id = False
if user_data['parent_id'] is not False:
parent_id = user_data['parent_id'][0]
_logger.info(u'%s %s', '-->', user_data)
return uid, sock, login_msg