fix backend
This commit is contained in:
parent
720eb16d72
commit
d89fc3b31f
2 changed files with 140 additions and 134 deletions
|
@ -7,125 +7,13 @@ import json
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
node_wallet = "/usr/local/frostfs-aio/morph/node-wallet.json"
|
|
||||||
|
|
||||||
|
|
||||||
class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):
|
|
||||||
def do_GET(self):
|
|
||||||
|
|
||||||
with open("./route.json", "r") as f:
|
|
||||||
route_dict = json.load(f)
|
|
||||||
|
|
||||||
with open("suka_logs.log", "w") as f:
|
|
||||||
f.write("starting...")
|
|
||||||
|
|
||||||
user_hash, post_hash, comment_hash = compile_and_deploy_contract(
|
|
||||||
"../User",
|
|
||||||
"../Post",
|
|
||||||
"../Comment",
|
|
||||||
"one"
|
|
||||||
)
|
|
||||||
|
|
||||||
with open("suka_logs.log", "a") as f:
|
|
||||||
f.write(f"user_hash: {user_hash}\npost_hash: {post_hash}\ncomment_hash: {comment_hash}")
|
|
||||||
|
|
||||||
parsed_path = urlparse(self.path)
|
|
||||||
query = parse_qs(parsed_path.query)
|
|
||||||
|
|
||||||
if "command_type" in query and "command_id" in query:
|
|
||||||
self.send_response(200)
|
|
||||||
self.send_header("Content-type", "text/html")
|
|
||||||
self.send_header("Access-Control-Allow-Origin", "*")
|
|
||||||
self.end_headers()
|
|
||||||
|
|
||||||
|
|
||||||
params = query.get("args", None)
|
|
||||||
parsed_params = " " + ' '.join(params) if params else ""
|
|
||||||
|
|
||||||
command_type = query["command_type"][0]
|
|
||||||
contract_name = query["contract"][0]
|
|
||||||
method = query["method"][0]
|
|
||||||
|
|
||||||
with open("suka_logs.log", "a") as f:
|
|
||||||
f.write("reading params...\n")
|
|
||||||
|
|
||||||
if command_type == "get":
|
|
||||||
hash_for_req = None
|
|
||||||
if contract_name == "post":
|
|
||||||
hash_for_req = post_hash
|
|
||||||
elif contract_name == "user":
|
|
||||||
hash_for_req = user_hash
|
|
||||||
elif contract_name == "comment":
|
|
||||||
hash_for_req = comment_hash
|
|
||||||
|
|
||||||
with open("suka_logs.log", "a") as f:
|
|
||||||
f.write(f"params: {[command_type, contract_name, method, parsed_params]}\n")
|
|
||||||
|
|
||||||
command = f"neo-go contract testinvokefunction -r http://localhost:30333 {hash_for_req} {method}{parsed_params}"
|
|
||||||
|
|
||||||
print(command)
|
|
||||||
|
|
||||||
proc = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
|
||||||
|
|
||||||
out_list = []
|
|
||||||
while True:
|
|
||||||
if proc.stdout is None:
|
|
||||||
break
|
|
||||||
|
|
||||||
line = proc.stdout.readline()
|
|
||||||
|
|
||||||
if not line:
|
|
||||||
break
|
|
||||||
out_list.append(line.rstrip())
|
|
||||||
|
|
||||||
answer = " ".join(map(lambda x: x.decode("utf-8"), out_list))
|
|
||||||
answer = re.sub(r"[\n\t\s]*", "", answer)
|
|
||||||
|
|
||||||
answer_dict = json.loads(answer)["stack"][0]["value"]
|
|
||||||
|
|
||||||
answer_list = []
|
|
||||||
print(answer_dict)
|
|
||||||
for obj_i in answer_dict:
|
|
||||||
obj = obj_i["value"]
|
|
||||||
obj_fiedls = []
|
|
||||||
for field in obj:
|
|
||||||
if field["type"] in ["ByteString", "Buffer"]:
|
|
||||||
encoded_string = field["value"]
|
|
||||||
result_string = base64.b64decode(encoded_string)
|
|
||||||
result_string = result_string.decode('utf-8')
|
|
||||||
obj_fiedls.append(result_string)
|
|
||||||
elif field["type"] == "Integer":
|
|
||||||
encoded_string = field["value"]
|
|
||||||
obj_fiedls.append(encoded_string)
|
|
||||||
|
|
||||||
answer_list.append(obj_fiedls)
|
|
||||||
|
|
||||||
self.wfile.write(bytes(f"{answer_list}", "utf-8"))
|
|
||||||
|
|
||||||
|
|
||||||
# elif command_type == "post":
|
|
||||||
# command = commands_route["7"]["command"] + f"-r http://localhost:30333 {contract_name} {method} {' '.join(params[5:])}"
|
|
||||||
|
|
||||||
|
|
||||||
# if command_type == "post":
|
|
||||||
# command = commands_route[command_code]
|
|
||||||
# else:
|
|
||||||
|
|
||||||
# user_deploy_command = f"sshpass -p {password} neo-go contract deploy -i {user_path}/user.nef -w {node_wallet} -r http://localhost:30333 -m {user_path}/user.json --force"
|
|
||||||
# proc = subprocess.Popen(user_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
|
||||||
|
|
||||||
else:
|
|
||||||
self.send_response(400)
|
|
||||||
self.send_header("Content-type", "text/html")
|
|
||||||
self.end_headers()
|
|
||||||
self.wfile.write(bytes("Bad request", "utf-8"))
|
|
||||||
|
|
||||||
|
|
||||||
def compile_and_deploy_contract(
|
def compile_and_deploy_contract(
|
||||||
user_path: str,
|
user_path: str,
|
||||||
post_path: str,
|
post_path: str,
|
||||||
comment_path: str,
|
comment_path: str,
|
||||||
password: str,
|
password: str,
|
||||||
|
node_wallet: str,
|
||||||
|
run_start_funcs: bool=False
|
||||||
) -> dict[str, str]:
|
) -> dict[str, str]:
|
||||||
|
|
||||||
user_compile_command = f"sshpass -p {password} neo-go contract compile -i {user_path}/user.go -c {user_path}/user.yml -m {user_path}/user.json"
|
user_compile_command = f"sshpass -p {password} neo-go contract compile -i {user_path}/user.go -c {user_path}/user.yml -m {user_path}/user.json"
|
||||||
|
@ -172,34 +60,152 @@ def compile_and_deploy_contract(
|
||||||
|
|
||||||
print(user_hash, post_hash, comment_hash)
|
print(user_hash, post_hash, comment_hash)
|
||||||
|
|
||||||
########################################
|
if run_start_funcs:
|
||||||
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {user_hash} newUser hui228336 hui228336 hui228336 1 Nhfg3TbpwogLvDGVvAvqyThbsHgoSUKwtn --force"
|
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {user_hash} newUser user_test1 user_test1 user_test1 1 Nhfg3TbpwogLvDGVvAvqyThbsHgoSUKwtn --force"
|
||||||
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {user_hash} newUser hui1488 hui1488 hui1488 1 Nhfg3TbpwogLvDGVvAvqyThbsHgoSUKwtn --force"
|
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {user_hash} newUser user_test2 user_test2 user_test2 1 Nhfg3TbpwogLvDGVvAvqyThbsHgoSUKwtn --force"
|
||||||
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {post_hash} newPost hui228336 hui hui --force"
|
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {post_hash} newPost user_test1 test test --force"
|
||||||
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {post_hash} newPost hui228336 hui22 hui22 --force"
|
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {post_hash} newPost user_test2 test test --force"
|
||||||
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {comment_hash} createNewComment hui228336 post_1 some_text --force"
|
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {comment_hash} createNewComment user_test1 post_1 some_text --force"
|
||||||
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
# comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {comment_hash} createNewComment hui1488 post_1 some_text"
|
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {comment_hash} createNewComment user_test1 post_1 some_text --force"
|
||||||
# proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
# comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {comment_hash} createNewComment hui1488 post_1 some_text"
|
comment_deploy_command = f"sshpass -p {password} neo-go contract invokefunction -w {node_wallet} -r http://localhost:30333 {comment_hash} createNewComment user_test2 post_1 some_text --force"
|
||||||
# proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(comment_deploy_command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
########################################
|
|
||||||
|
|
||||||
return user_hash, post_hash, comment_hash
|
return user_hash, post_hash, comment_hash
|
||||||
|
|
||||||
|
|
||||||
|
user_hash, post_hash, comment_hash = compile_and_deploy_contract(
|
||||||
|
"../User",
|
||||||
|
"../Post",
|
||||||
|
"../Comment",
|
||||||
|
"one",
|
||||||
|
"/home/ftmi-krasotka/Desktop/frostfs_test/frostfs-aio/morph/node-wallet.json",
|
||||||
|
False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler):
|
||||||
|
def do_GET(self):
|
||||||
|
|
||||||
|
with open("./route.json", "r") as f:
|
||||||
|
route_dict = json.load(f)
|
||||||
|
|
||||||
|
with open("logs.log", "w") as f:
|
||||||
|
f.write("starting...")
|
||||||
|
|
||||||
|
with open("logs.log", "a") as f:
|
||||||
|
f.write(f"user_hash: {user_hash}\npost_hash: {post_hash}\ncomment_hash: {comment_hash}")
|
||||||
|
|
||||||
|
parsed_path = urlparse(self.path)
|
||||||
|
query = parse_qs(parsed_path.query)
|
||||||
|
|
||||||
|
if "command_type" in query and "command_id" in query:
|
||||||
|
self.send_response(200)
|
||||||
|
self.send_header("Content-type", "text/html")
|
||||||
|
self.send_header("Access-Control-Allow-Origin", "*")
|
||||||
|
self.end_headers()
|
||||||
|
|
||||||
|
params = query.get("args", None)
|
||||||
|
parsed_params = " " + ' '.join(params) if params else ""
|
||||||
|
|
||||||
|
command_type = query["command_type"][0]
|
||||||
|
contract_name = query["contract"][0]
|
||||||
|
method = query["method"][0]
|
||||||
|
|
||||||
|
with open("logs.log", "a") as f:
|
||||||
|
f.write("reading params...\n")
|
||||||
|
|
||||||
|
if command_type == "get":
|
||||||
|
hash_for_req = None
|
||||||
|
if contract_name == "post":
|
||||||
|
hash_for_req = post_hash
|
||||||
|
elif contract_name == "user":
|
||||||
|
hash_for_req = user_hash
|
||||||
|
elif contract_name == "comment":
|
||||||
|
hash_for_req = comment_hash
|
||||||
|
|
||||||
|
with open("logs.log", "a") as f:
|
||||||
|
f.write(f"params: {[command_type, contract_name, method, parsed_params]}\n")
|
||||||
|
|
||||||
|
command = f"neo-go contract testinvokefunction -r http://localhost:30333 {hash_for_req} {method}{parsed_params}"
|
||||||
|
|
||||||
|
print(command)
|
||||||
|
|
||||||
|
proc = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
|
|
||||||
|
out_list = []
|
||||||
|
while True:
|
||||||
|
if proc.stdout is None:
|
||||||
|
break
|
||||||
|
|
||||||
|
line = proc.stdout.readline()
|
||||||
|
|
||||||
|
if not line:
|
||||||
|
break
|
||||||
|
out_list.append(line.rstrip())
|
||||||
|
|
||||||
|
answer = " ".join(map(lambda x: x.decode("utf-8"), out_list))
|
||||||
|
answer = re.sub(r"[\n\t\s]*", "", answer)
|
||||||
|
|
||||||
|
print(json.loads(answer)["stack"][0])
|
||||||
|
|
||||||
|
if json.loads(answer)["stack"][0]["type"] == "Struct":
|
||||||
|
answer_dict = json.loads(answer)["stack"][0]["value"]
|
||||||
|
obj_fiedls = []
|
||||||
|
for field in answer_dict:
|
||||||
|
if field["type"] in ["ByteString", "Buffer"]:
|
||||||
|
encoded_string = field["value"]
|
||||||
|
result_string = base64.b64decode(encoded_string)
|
||||||
|
try:
|
||||||
|
result_string = result_string.decode('utf-8')
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
obj_fiedls.append(result_string)
|
||||||
|
elif field["type"] == "Integer":
|
||||||
|
encoded_string = field["value"]
|
||||||
|
obj_fiedls.append(encoded_string)
|
||||||
|
|
||||||
|
self.wfile.write(bytes(f"{obj_fiedls}", "utf-8"))
|
||||||
|
else:
|
||||||
|
answer_dict = json.loads(answer)["stack"][0]["value"]
|
||||||
|
answer_list = []
|
||||||
|
for obj_i in answer_dict:
|
||||||
|
obj = obj_i["value"]
|
||||||
|
obj_fiedls = []
|
||||||
|
for field in obj:
|
||||||
|
if field["type"] in ["ByteString", "Buffer"]:
|
||||||
|
encoded_string = field["value"]
|
||||||
|
result_string = base64.b64decode(encoded_string)
|
||||||
|
result_string = result_string.decode('utf-8')
|
||||||
|
obj_fiedls.append(result_string)
|
||||||
|
elif field["type"] == "Integer":
|
||||||
|
encoded_string = field["value"]
|
||||||
|
obj_fiedls.append(encoded_string)
|
||||||
|
|
||||||
|
answer_list.append(obj_fiedls)
|
||||||
|
|
||||||
|
self.wfile.write(bytes(f"{answer_list}", "utf-8"))
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.send_response(400)
|
||||||
|
self.send_header("Content-type", "text/html")
|
||||||
|
self.end_headers()
|
||||||
|
self.wfile.write(bytes("Bad request", "utf-8"))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
PORT = 2282
|
PORT = 2281
|
||||||
Handler = MyHttpRequestHandler
|
Handler = MyHttpRequestHandler
|
||||||
|
|
||||||
with socketserver.TCPServer(("", PORT), Handler) as httpd:
|
with socketserver.TCPServer(("", PORT), Handler) as httpd:
|
||||||
|
|
|
@ -2,13 +2,13 @@ import requests
|
||||||
|
|
||||||
# Отправляем GET запрос на сервер
|
# Отправляем GET запрос на сервер
|
||||||
response = requests.get(
|
response = requests.get(
|
||||||
'http://localhost:2282',
|
'http://localhost:2281',
|
||||||
params={
|
params={
|
||||||
"command_type": "get",
|
"command_type": "get",
|
||||||
"method": "getAllPosts",
|
"method": "getPost",
|
||||||
"command_id": "8",
|
"command_id": "8",
|
||||||
"contract": "post",
|
"contract": "post",
|
||||||
"args": []})
|
"args": ["post_1"]})
|
||||||
|
|
||||||
# Выводим ответ от сервера
|
# Выводим ответ от сервера
|
||||||
print('Ответ от сервера:', response.text)
|
print('Ответ от сервера:', response.text)
|
||||||
|
|
Loading…
Reference in a new issue