|
|
|
@ -23,19 +23,18 @@ import traceback as tb
|
|
|
|
|
import time, logging
|
|
|
|
|
import os, sys
|
|
|
|
|
import threading, urllib2
|
|
|
|
|
from function import create_obj, get_sid, analysis, clear, get_entire_frame
|
|
|
|
|
from function import analysis, clear, get_entire_frame
|
|
|
|
|
from pid_information import client_list_methods
|
|
|
|
|
from cert_func import client_post_auth, client_post_request, client_get_cert,\
|
|
|
|
|
client_post_cert, get_password_from_daemon, clear_password
|
|
|
|
|
from sid_func import session_clean, client_session_info, client_session_list
|
|
|
|
|
from cert_verify import get_CRL, VerifyError
|
|
|
|
|
|
|
|
|
|
import argparse, datetime
|
|
|
|
|
import M2Crypto, OpenSSL
|
|
|
|
|
from calculate.core.datavars import DataVarsCore
|
|
|
|
|
|
|
|
|
|
from client_class import HTTPSClientCertTransport
|
|
|
|
|
from methods_func import call_method, get_method_argparser
|
|
|
|
|
from methods_func import call_method, get_method_argparser, parse
|
|
|
|
|
from calculate.lib.cl_lang import setLocalTranslate
|
|
|
|
|
from calculate.lib.utils.files import makeDirectory
|
|
|
|
|
setLocalTranslate('calculate_console',sys.modules[__name__])
|
|
|
|
@ -63,128 +62,6 @@ def client_signal(client):
|
|
|
|
|
raise Exception(1)
|
|
|
|
|
time.sleep(float(client_active))
|
|
|
|
|
|
|
|
|
|
def test(client, com=None):
|
|
|
|
|
if not com:
|
|
|
|
|
method_name = 'test'
|
|
|
|
|
else:
|
|
|
|
|
method_name = com
|
|
|
|
|
view = client.service[0][method_name + '_view']()
|
|
|
|
|
|
|
|
|
|
cr = create_obj(client, method_name)
|
|
|
|
|
list_param = dir (cr)
|
|
|
|
|
|
|
|
|
|
param_list = []
|
|
|
|
|
for param in list_param:
|
|
|
|
|
if not param.startswith('_'):
|
|
|
|
|
param_list.append(param)
|
|
|
|
|
|
|
|
|
|
for Group in view.groups.GroupField:
|
|
|
|
|
print "GroupField name : ", Group.name
|
|
|
|
|
|
|
|
|
|
for field in Group.fields.Field:
|
|
|
|
|
if field.element == 'input':
|
|
|
|
|
if field.type == 'str':
|
|
|
|
|
cr[field.name] = raw_input(field.label)
|
|
|
|
|
if field.type == 'int':
|
|
|
|
|
while True:
|
|
|
|
|
try:
|
|
|
|
|
var = raw_input(field.label)
|
|
|
|
|
cr[field.name] = int (var)
|
|
|
|
|
break
|
|
|
|
|
except (TypeError, ValueError):
|
|
|
|
|
print 'Это не целое число'
|
|
|
|
|
elif field.element == 'bool':
|
|
|
|
|
while 1:
|
|
|
|
|
bool_var = raw_input(field.label+' (y/n): ')
|
|
|
|
|
if bool_var.lower() in ['y','yes']:
|
|
|
|
|
cr[field.name] = True
|
|
|
|
|
break
|
|
|
|
|
if bool_var.lower() in ['n','no']:
|
|
|
|
|
cr[field.name] = False
|
|
|
|
|
break
|
|
|
|
|
print 'Enter "Yes" or "No"!'
|
|
|
|
|
|
|
|
|
|
elif field.element == 'check':
|
|
|
|
|
choice = field.choice[0]
|
|
|
|
|
while 1:
|
|
|
|
|
print 'Select one: '
|
|
|
|
|
for i in range(1,len(choice)+1):
|
|
|
|
|
print choice[i-1], ' - %d' %i
|
|
|
|
|
try:
|
|
|
|
|
bool_var = int (raw_input(field.label))
|
|
|
|
|
if bool_var > 0:
|
|
|
|
|
cr[field.name] = choice[bool_var - 1]
|
|
|
|
|
print 'your choice %s' %cr[field.name]
|
|
|
|
|
break
|
|
|
|
|
except:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
#field.choice
|
|
|
|
|
#print field.help
|
|
|
|
|
|
|
|
|
|
sid = get_sid(client.SID_FILE)
|
|
|
|
|
s = client.service[0][method_name](sid, cr)
|
|
|
|
|
print s
|
|
|
|
|
|
|
|
|
|
def parse():
|
|
|
|
|
parser = argparse.ArgumentParser(add_help=False)
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'-h', '--help', action='store_true', default=False,
|
|
|
|
|
dest='help', help=_("show this help message and exit"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--method', type=str, dest='method',
|
|
|
|
|
help=_('call method'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'-l', '--lang', type=str, dest='lang',
|
|
|
|
|
help=_('language for translate'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'-p', '--port', type=int, default = '8888', dest='port',
|
|
|
|
|
help=_('port number'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--host', type=str, default = 'localhost', dest='host',
|
|
|
|
|
help=_('host destination'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--gen-cert-by', type=str, dest='by_host', metavar = 'HOST',
|
|
|
|
|
help=_('post request a signed certificate by server'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--get-cert-from', type=str, dest='from_host', metavar = 'HOST',
|
|
|
|
|
help=_('get signed certificate from server'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--cert-path', type=str, dest='path_to_cert', metavar = 'PATH',
|
|
|
|
|
help=_('path to cert and key files'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--list-pid', action='store_true', default=False,
|
|
|
|
|
dest='list_pid', help=_("view a list of running processes"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'-d', '--dump', action='store_true', default=False, dest = 'dump',
|
|
|
|
|
help=_('dump (using with key --list-pid)'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--pid-result', type=int, metavar = 'PID',
|
|
|
|
|
dest='pid_res', help=_("view result of process"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--pid-kill', type=int, metavar = 'PID',
|
|
|
|
|
dest='pid_kill', help=_("kill selected process"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--session-clean', action='store_true', default=False,
|
|
|
|
|
dest='session_clean', help=_('clear cache session'))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--session-info', action='store_true', default=False,
|
|
|
|
|
dest='session_info', help=_("view session information"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--session-num-info', type=int, metavar = 'SID',
|
|
|
|
|
dest='session_num_info', help=_("view information about session "
|
|
|
|
|
"with sid = SID"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--session-list', action='store_true', default=False,
|
|
|
|
|
dest='session_list', help=_("view list active session on server"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--update-crl', action='store_true', default=False,
|
|
|
|
|
dest='update_crl', help=_("update the certificate revocation lists"))
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
'--stop-consoled', action='store_true', default=False,
|
|
|
|
|
dest='stop_consoled', help=_("stop cl-consoled"))
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
|
|
def https_server(client, args, unknown_args, url, clVarsCore, wait_thread):
|
|
|
|
|
client_post_auth(client)
|
|
|
|
|
|
|
|
|
@ -248,7 +125,7 @@ def https_server(client, args, unknown_args, url, clVarsCore, wait_thread):
|
|
|
|
|
try:
|
|
|
|
|
analysis(client, client.sid, method_result)
|
|
|
|
|
except urllib2.URLError, e:
|
|
|
|
|
print e
|
|
|
|
|
_print (e)
|
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
|
try:
|
|
|
|
|
print
|
|
|
|
@ -266,7 +143,7 @@ def https_server(client, args, unknown_args, url, clVarsCore, wait_thread):
|
|
|
|
|
# get_entire_frame(client, pid)
|
|
|
|
|
analysis(client, client.sid, method_result)
|
|
|
|
|
except Exception, e:
|
|
|
|
|
print e.message
|
|
|
|
|
_print (e.message)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
mess = method_result[0][0]
|
|
|
|
@ -309,19 +186,27 @@ class StoppableThread(threading.Thread):
|
|
|
|
|
def main():
|
|
|
|
|
# now = datetime.datetime.now()
|
|
|
|
|
# print '1 ===> %ds %dms' %(now.second, now.microsecond)
|
|
|
|
|
wait_thread = StoppableThread()
|
|
|
|
|
wait_thread.start()
|
|
|
|
|
|
|
|
|
|
parser = parse()
|
|
|
|
|
args, unknown_args = parser.parse_known_args()
|
|
|
|
|
wait_thread = StoppableThread()
|
|
|
|
|
wait_thread.start()
|
|
|
|
|
|
|
|
|
|
if not args.method and args.help:
|
|
|
|
|
wait_thread.stop()
|
|
|
|
|
sys.stdout.write('\r')
|
|
|
|
|
sys.stdout.flush()
|
|
|
|
|
parser.print_help()
|
|
|
|
|
# now = datetime.datetime.now()
|
|
|
|
|
# print '1/2 ===> %ds %dms' %(now.second, now.microsecond)
|
|
|
|
|
return 0
|
|
|
|
|
|
|
|
|
|
if not args.method:
|
|
|
|
|
if unknown_args:
|
|
|
|
|
wait_thread.stop()
|
|
|
|
|
sys.stdout.write('\r')
|
|
|
|
|
sys.stdout.flush()
|
|
|
|
|
args = parser.parse_args()
|
|
|
|
|
|
|
|
|
|
logging.basicConfig(level=logging.FATAL)
|
|
|
|
|
logging.getLogger('sudsds.client').setLevel(logging.FATAL)
|
|
|
|
|
logging.getLogger('sudsds.transport').setLevel(logging.FATAL)
|
|
|
|
@ -350,6 +235,8 @@ def main():
|
|
|
|
|
if not os.path.isdir(dir_path):
|
|
|
|
|
if not makeDirectory(dir_path):
|
|
|
|
|
wait_thread.stop()
|
|
|
|
|
sys.stdout.write('\r')
|
|
|
|
|
sys.stdout.flush()
|
|
|
|
|
print _("cannot create directory %s") %dir_path
|
|
|
|
|
return 1
|
|
|
|
|
|
|
|
|
@ -389,7 +276,7 @@ def main():
|
|
|
|
|
except urllib2.URLError, e:
|
|
|
|
|
wait_thread.stop()
|
|
|
|
|
print _('Failed to connect')+':', e
|
|
|
|
|
raise Exception(1)
|
|
|
|
|
return 1
|
|
|
|
|
# server_host_name = 'dspiridonov.local.calculate.ru'
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
@ -467,6 +354,7 @@ def main():
|
|
|
|
|
client.port = port
|
|
|
|
|
# now = datetime.datetime.now()
|
|
|
|
|
# print '5 ===> %ds %dms' %(now.second, now.microsecond)
|
|
|
|
|
return_val = 1
|
|
|
|
|
try:
|
|
|
|
|
return_val = https_server(client, args, unknown_args, url, \
|
|
|
|
|
clVarsCore, wait_thread)
|
|
|
|
@ -475,7 +363,10 @@ def main():
|
|
|
|
|
except Exception, e:
|
|
|
|
|
wait_thread.stop()
|
|
|
|
|
if type(e.message) != int:
|
|
|
|
|
print e.message
|
|
|
|
|
if e.message:
|
|
|
|
|
print e.message
|
|
|
|
|
else:
|
|
|
|
|
print e
|
|
|
|
|
return 1
|
|
|
|
|
# now = datetime.datetime.now()
|
|
|
|
|
# print 'END ===> %ds %dms' %(now.second, now.microsecond)
|
|
|
|
@ -484,7 +375,7 @@ def main():
|
|
|
|
|
#----------------------------------------------------
|
|
|
|
|
except WebFault, f:
|
|
|
|
|
print _("Exception: %s") %f
|
|
|
|
|
print f.fault
|
|
|
|
|
_print (f.fault)
|
|
|
|
|
except TransportError, te:
|
|
|
|
|
print _("Exception: %s") %te
|
|
|
|
|
except Exception, e:
|
|
|
|
|