def SaveKeys(peer, keys_path, client_index, num_of_keys): result = -1 prog = utils.GetProg('vault_key_helper') proc = subprocess.Popen([ prog, '-ls', '-k', str(client_index), '--keys_path', keys_path, '--peer=' + peer + ':5483' ], shell=False, stdout=PIPE, stderr=None) if utils.TimeOut(utils.LookingFor, ( proc, 'PublicPmidKey stored and verified', 50, num_of_keys, ), timeout_duration=5 * num_of_keys, default=False): print("keys successfully stored to network") result = 0 else: print("failure in storing keys to network") proc.kill vault_killer.KillVaultKeyHelper() return result
def SetUpKeys(num): print("Setting up keys ... ") prog = utils.GetProg('vault_key_helper') CreateChunkStores(num) return subprocess.call([prog, '-c', '-n', str(num)], shell=False, stdout=None, stderr=None)
def DeleteChunk(key_index, chunk_index): prog = utils.GetProg('vault_key_helper') subprocess.call([ prog, '-l3', '-k', str(key_index), '--chunk_index=' + str(chunk_index) ], shell=False, stdout=None, stderr=None)
def SaveKeys(peer): prog = utils.GetProg('vault_key_helper') return subprocess.call([ prog, '--log_routing Info', '--log_nfs Info', '--log_vault Info', '-ls', '--peer=' + peer + ':5483' ], shell=False, stdout=None, stderr=None)
def FetchChunk(key_index, chunk_index): prog = utils.GetProg('vault_key_helper') subprocess.call([ prog, '-l2', '-k', str(key_index), '--peer=' + utils.GetIp() + ':5483', '--chunk_index=' + str(chunk_index) ], shell=False, stdout=None, stderr=None)
def work(number): prog = utils.GetProg('vault') log_file = open('vault_' + str(number) + '.txt', 'w') return subprocess.Popen([ prog, '--log_vault', 'I', '--log_*', 'E', '--disable_ctrl_c=true', '--identity_index=' + str(number), '--chunk_path=.cs' + str(number) ], shell=False, stdout=log_file, stderr=log_file)
def StartVaultsWithGivenBootstrap(): number = GetPositiveNumber("Please input number of vaults to run: ") ip = raw_input("Please input ip address of bootstrap machine: ") prog = utils.GetProg('vault_key_helper') print prog CreateChunkStores(number) subprocess.call([prog, '-c', '-n', str(int(number) + 3)]) if SaveKeys(ip) == 0: RunNetwork(int(number) + 3, ip, None) else: raw_input("Could not store keys, giving up! (press any key)")
def SetUpNextNode(endpoint, index): prog = utils.GetProg('vault') log_file = open('vault_' + str(index) + '.txt', 'w') return subprocess.Popen([ prog, '--log_no_async', 'true', '--log_vault', 'V', '--log_nfs', 'V', '--log_*', 'E', '--peer=' + endpoint.lstrip(), '--disable_ctrl_c=true', '--identity_index=' + str(index), '--chunk_path=.cs' + str(index) ], shell=False, stdout=log_file, stderr=log_file)
def TestStoreWithDelete(num, index): prog = utils.GetProg('vault_key_helper') subprocess.call([ prog, '-lw', '-k', str(index), '--peer=' + utils.GetIp() + ':5483', '--chunk_set_count=' + str(num) ], shell=False, stdout=None, stderr=None) raw_input("Press any key to continue")
def StartVaultsWithGivenBootstrap(): number = GetPositiveNumber("Please input number of vaults to run: ") ip = input("Please input ip address of bootstrap machine: ") prog = utils.GetProg('vault_key_helper') print(prog) CreateChunkStores(number) subprocess.call([prog, '-c', '-n', str(int(number) + 3)]) keys_path = input( "Please input the absolute/relative path to the keys_file: ") index = GetPositiveNumber( "Please input the key_index to be used as client: ") num_keys = GetPositiveNumber( "Please input how many keys in the keys_file: ") if SaveKeys(utils.GetIp(), keys_path, index, num_keys) == 0: RunNetwork(int(number) + 3, ip, None) else: input("Could not store keys, giving up! (press any key)")
def SetupBootstraps(num, user_id): print("Setting up keys ... ") prog = utils.GetProg('vault_key_helper') proc = subprocess.Popen( [prog, '-c', '-b', '-n', str(num + 6)], shell=False, stdout=PIPE, stderr=None) print("Started bootstrap with PID " + str(proc.pid)) i = 0 line_limit = 50 t_start = datetime.datetime.now() time_delta = datetime.datetime.now() - t_start timeout = 300000 while i < line_limit and time_delta < datetime.timedelta(seconds=timeout): line = str(proc.stdout.readline(), encoding='utf8') print(line) if line.find("Endpoints") != -1: data = re.split(r':', line) ep = data[2].split() processes[2] = SetUpNextNode(data[1] + ':' + ep[0], 2) time.sleep(1) processes[3] = work(3) if processes[2] and processes[3]: print("Wait 5 secs for bootstrap") time.sleep(5) break else: proc.kill() return False i = i + 1 time_delta = datetime.datetime.now() - t_start if i == line_limit or time_delta >= datetime.timedelta(seconds=timeout): proc.kill() return False proc.kill() print("Wait 10 secs for bootstrap nodes disappear from routingtable") time.sleep(10) RunNetwork(num) print("Wait 5 secs for network") time.sleep(5) return True
def TestStoreWithDelete(num, index): prog = utils.GetProg('vault_key_helper') proc = subprocess.Popen( [prog, '-lw', '-k', str(index), '--chunk_set_count=' + str(num)], shell=False, stdout=PIPE, stderr=None) if utils.TimeOut(utils.LookingFor, ( proc, 'Delete chunk', 100, num, ), timeout_duration=60 * num, default=False): print("test with delete succeeded") else: print("test with delete failed") proc.kill vault_killer.KillVaultKeyHelper()
def SaveKeys(): num_of_keys = 44 prog = utils.GetProg('vault_key_helper') proc = subprocess.Popen([prog, '-ls', '-k', 10], shell=False, stdout=PIPE, stderr=None) if utils.TimeOut(utils.LookingFor, ( proc, 'PublicPmidKey stored and verified', 50, num_of_keys, ), timeout_duration=5 * num_of_keys, default=False): print("keys successfully stored to network") result = 0 else: print("failure in storing keys to network") proc.kill lifestuff_killer.KillVaultKeyHelper()
def SetupBootstraps(num, user_id): print("Setting up keys ... ") prog = utils.GetProg('vault_key_helper') print prog proc = subprocess.Popen( [prog, '-c', '-b', '-n', str(num + 6)], shell=False, stdout=PIPE, stderr=None) print("Started bootstrap with PID " + str(proc.pid)) i = 0 line_limit = 50 t_start = datetime.datetime.now() time_delta = datetime.datetime.now() - t_start timeout = 300000 while i < line_limit and time_delta < datetime.timedelta(seconds=timeout): line = proc.stdout.readline() print line if line.find('Endpoints') != -1: data = re.split(r':', line) ep = data[2].split() processes[2] = SetUpNextNode(data[1] + ':' + ep[0], 2, user_id) processes[3] = SetUpNextNode(data[1] + ':' + ep[0], 3, user_id) if processes[2] and processes[3]: time.sleep(2) # allow node to bootstrap break else: proc.kill() return False i = i + 1 time_delta = datetime.datetime.now() - t_start if i == line_limit or time_delta >= datetime.timedelta(seconds=timeout): print "Failed to get endpoint (timeout ??)" proc.kill() return False proc.kill() RunNetwork(num, data[1], user_id) print("Wait 2 secs for network") time.sleep(2) return True
def work(number, ip_address, user_id): prog = utils.GetProg('lifestuff_vault') if user_id == None: return subprocess.Popen([ prog, '--peer=' + ip_address.lstrip() + ':5483', '--disable_ctrl_c=true', '--identity_index=' + str(number), '--chunk_path=.cs' + str(number), '--start' ], preexec_fn=preexec_function, shell=False, stdout=None, stderr=None) else: return subprocess.Popen([ prog, '--peer=' + ip_address.lstrip() + ':5483', '--disable_ctrl_c=true', '--identity_index=' + str(number), '--chunk_path=.cs' + str(number), '--usr_id=' + user_id, '--start' ], preexec_fn=preexec_function, shell=False, stdout=None, stderr=None)
def SetUpNextNode(endpoint, index, user_id): prog = utils.GetProg('lifestuff_vault') if user_id == None: return subprocess.Popen([ prog, '--peer=' + endpoint.lstrip(), '--disable_ctrl_c=true', '--identity_index=' + str(index), '--chunk_path=.cs' + str(index), '--start' ], preexec_fn=preexec_function, shell=False, stdout=None, stderr=None) else: return subprocess.Popen([ prog, '--peer=' + endpoint.lstrip(), '--disable_ctrl_c=true', '--identity_index=' + str(index), '--chunk_path=.cs' + str(index), '--usr_id=' + user_id, '--start' ], preexec_fn=preexec_function, shell=False, stdout=None, stderr=None)
def mount_drive(executable_name): print "Mounting drive..." sys.stdout.flush() process = subprocess.Popen([utils.GetProg(executable_name)]).pid time.sleep(3)
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import os import platform import subprocess import socket import sys import tempfile from optparse import OptionParser # MaidSafe imports import utils import vault ls_mgr_exe = utils.GetProg("lifestuff_mgr") ls_vault_exe = utils.GetProg("lifestuff_vault") def CheckPassedInIp(ip_address): try: socket.inet_aton(ip_address) except socket.error: print "Not a legal IP address" return -1 if len(ip_address.split('.')) != 4: print "Not a fully formed IP address" return -1 return 0