@@ -5,7 +5,7 @@ class CreateStackJob < DockerApiJob
55 # user_id
66 # problem_id
77 # network
8- # containers
8+ # services
99 # lifespan
1010 def perform ( challenge )
1111 check_existing ( challenge )
@@ -14,16 +14,16 @@ def perform(challenge)
1414
1515 private
1616 def check_existing ( challenge )
17- containers = docker_get_containers ( challenge )
17+ services = docker_get_services ( challenge )
1818 networks = docker_get_networks ( challenge )
1919
2020 # If this user already has a stack initiated, reset it
21- if networks . length > 0 or containers . length > 0
21+ if networks . length > 0 or services . length > 0
2222 user_id = challenge [ 'user_id' ]
2323 User . find ( user_id ) . update_attribute ( :container_id , '' )
2424 User . find ( user_id ) . update_attribute ( :stack_expiry , DateTime . now )
2525 User . find ( user_id ) . update_attribute ( :problem_id , -1 )
26- delete_stack ( containers , networks )
26+ delete_stack ( services , networks )
2727 end
2828 end
2929
@@ -34,7 +34,8 @@ def create_stack(challenge)
3434 network [ 'Labels' ] = {
3535 "user_id" => "#{ challenge [ 'user_id' ] } " ,
3636 "problem_id" => "#{ challenge [ 'problem_id' ] } " ,
37- "lifetime" => "#{ challenge [ 'lifespan' ] } "
37+ "lifetime" => "#{ challenge [ 'lifespan' ] } " ,
38+ "hackthearch" => "This network was generated by HackTheArch"
3839 }
3940 res = docker_post_request ( '/networks/create' , network . to_json )
4041 network_id = JSON ( res . body ) [ "Id" ]
@@ -43,43 +44,44 @@ def create_stack(challenge)
4344 raise Exception . new ( "Couldn't create challenge network." )
4445 end
4546
46- # Then build containers
47- containers = JSON ( challenge [ 'containers ' ] )
48- containers . each do |container |
47+ # Then build services
48+ services = JSON ( challenge [ 'services ' ] )
49+ services . each do |service |
4950
50- if container [ 'Labels' ] . nil?
51- container [ 'Labels' ] = { }
51+ if service [ 'Labels' ] . nil?
52+ service [ 'Labels' ] = { }
5253 end
5354
54- container [ 'Labels' ] [ "user_id" ] = "#{ challenge [ 'user_id' ] } "
55- container [ 'Labels' ] [ "problem_id" ] = "#{ challenge [ 'problem_id' ] } "
56- container [ 'Labels' ] [ "lifetime" ] = "#{ challenge [ 'lifespan' ] } "
55+ service [ 'Labels' ] [ "user_id" ] = "#{ challenge [ 'user_id' ] } "
56+ service [ 'Labels' ] [ "problem_id" ] = "#{ challenge [ 'problem_id' ] } "
57+ service [ 'Labels' ] [ "lifetime" ] = "#{ challenge [ 'lifespan' ] } "
58+ service [ 'Labels' ] [ "hackthearch" ] = "This service was generated by HackTheArch"
5759
58- # Make sure the container is reachable by its designed name
59- container [ 'Networks' ] = [ {
60+ # Make sure the service is reachable by its designed name
61+ service [ 'Networks' ] = [ {
6062 "Target" : network_id ,
6163 "Aliases" : [
62- container [ 'Name' ] ,
63- container [ 'Name' ] . gsub ( "-" , "." ) ,
64+ service [ 'Name' ] ,
65+ service [ 'Name' ] . gsub ( "-" , "." ) ,
6466 ]
6567 } ]
6668
6769 # find entrypoint
6870 is_entry = false
69- if container [ 'Name' ] . downcase == "entrypoint"
71+ if service [ 'Name' ] . downcase == "entrypoint"
7072 is_entry = true
7173 end
7274
73- # Add user_id to container name for identification
74- container_name = container [ 'Name' ]
75- container [ 'Name' ] = "hta-#{ container_name } -#{ challenge [ 'user_id' ] } "
75+ # Add user_id to service name for identification
76+ service_name = service [ 'Name' ]
77+ service [ 'Name' ] = "hta-#{ service_name } -#{ challenge [ 'user_id' ] } "
7678
77- res = docker_post_request ( '/services/create' , container . to_json )
79+ res = docker_post_request ( '/services/create' , service . to_json )
7880 if res . code != '201'
79- raise Exception . new ( "Couldn't create challenge containers ." )
81+ raise Exception . new ( "Couldn't create challenge services ." )
8082 end
8183
82- # If container is entry point, assign to user
84+ # If service is entry point, assign to user
8385 if is_entry
8486 id = JSON ( res . body ) [ "ID" ]
8587 User . find ( challenge [ 'user_id' ] ) . update_attribute ( :container_id , id )
0 commit comments