Exit Python container based on cmd

This commit is contained in:
Sebastian Serth
2020-10-08 14:42:51 +02:00
parent f7c41db70c
commit 13b6e50573

View File

@ -251,18 +251,19 @@ class SubmissionsController < ApplicationController
test_command = run_command test_command = run_command
end end
unless /root|workspace|#{run_command}|#{test_command}/.match(message) unless /root|workspace|#{run_command}|#{test_command}/.match(message)
parse_message(message, 'stdout', tubesock) parse_message(message, 'stdout', tubesock, container)
end end
end end
end end
def parse_message(message, output_stream, socket, recursive = true) def parse_message(message, output_stream, socket, container = nil, recursive = true)
parsed = '' parsed = ''
begin begin
parsed = JSON.parse(message) parsed = JSON.parse(message)
if parsed.class == Hash and parsed.key?('cmd') if parsed.class == Hash and parsed.key?('cmd')
socket.send_data message socket.send_data message
Rails.logger.info('parse_message sent: ' + message) Rails.logger.info('parse_message sent: ' + message)
@docker_client.exit_container(container) if container && parsed['cmd'] == 'exit'
else else
parsed = {'cmd'=>'write','stream'=>output_stream,'data'=>message} parsed = {'cmd'=>'write','stream'=>output_stream,'data'=>message}
socket.send_data JSON.dump(parsed) socket.send_data JSON.dump(parsed)
@ -272,7 +273,7 @@ class SubmissionsController < ApplicationController
# Check wether the message contains multiple lines, if true try to parse each line # Check wether the message contains multiple lines, if true try to parse each line
if recursive and message.include? "\n" if recursive and message.include? "\n"
for part in message.split("\n") for part in message.split("\n")
self.parse_message(part,output_stream,socket,false) self.parse_message(part,output_stream,socket, container, false)
end end
elsif message.include? '<img' elsif message.include? '<img'
#Rails.logger.info('img foung') #Rails.logger.info('img foung')