diff --git a/mc_control.py b/mc_control.py index 3605e12..7d338f4 100644 --- a/mc_control.py +++ b/mc_control.py @@ -2,27 +2,32 @@ import os.path import json from rcon.source import Client +# Declare variables that are needed everywhere. + servers_file = "./.midnight_servers.json" servers = [] -isfirstrun = False +# Loads servers in from the servers_file, if it does not exist, trigger adding first server via create_servers. def load_servers(): global servers if os.path.isfile(servers_file): with open(servers_file,'r') as openfile: servers = json.load(openfile) else: - create_server(True) + print('\n!! Looks like you do not have any servers yet - Let\'s add one.\n') + create_server() +# Write the contents to the servers variable to the servers_file. def write_servers(): - json_obj = json.dumps(servers,indent=4) + json_obj = json.dumps(servers,indent=4) # Add indentation when dumping to string. with open(servers_file, "w") as outfile: outfile.write(json_obj) -def list_servers(mode=int(1)): +# Lists servers, default action is to list all information minus password. Second option lists only ID and name. +def list_servers(mode=int(1)): # make sure a default is set. if(mode==1): index = int(0) - for x in servers: + for x in servers: # for each dict in the servers array as x. strindex = str(index) print('ID: '+strindex+' ===') print(' Name:'+x['name']) @@ -30,7 +35,6 @@ def list_servers(mode=int(1)): print(' Port:'+x['port']) print(' Password: **********\n') index += 1 - initial_choice() elif(mode==2): index = int(0) for x in servers: @@ -38,27 +42,18 @@ def list_servers(mode=int(1)): print('ID: '+strindex+' ('+x['name']+')') index += 1 -def create_server(isfirstrun=False): - global servers - if(isfirstrun): - print('\n!! Looks like you do not have any servers yet - Let\'s add one.\n') - +# Creates new server dicts in the server array. +def create_server(): + global servers # Global so that we can write to it. print('\n=== Add Server ===') srv_name = input('Name: ') srv_addr = input('Address: ') srv_port = input('Port: ') srv_pass = input('Password: ') print('OK\n') - new_server = [{"name":srv_name,"address":srv_addr,"port":srv_port,"password":srv_pass}] - - if(isfirstrun): - json_obj = json.dumps(new_server,indent=4) - with open(servers_file, "w") as outfile: - outfile.write(json_obj) - else: - servers = servers + new_server - write_servers() - initial_choice() + new_server = [{"name":srv_name,"address":srv_addr,"port":srv_port,"password":srv_pass}] # Build new dict in array. + servers = servers + new_server # Append new array to existing array. + write_servers() # Write to the file. def pop_server(): global servers @@ -85,7 +80,7 @@ def send_commands(): with Client(servers[server]['address'], int(servers[server]['port']), passwd=servers[server]['password']) as client: response = client.run(command) - print(servers[server]['name']+': '+response) + print(servers[server]['name']+': '+response+'\n') else: proceed = False print('No command was entered. Exiting.\n') @@ -98,7 +93,7 @@ def send_commands(): with Client(x['address'], int(x['port']), passwd=x['password']) as client: response = client.run(command) - print(x['name']+': '+response) + print(x['name']+': '+response+'\n') else: proceed = False print('No command was entered. Exiting.\n') @@ -110,10 +105,12 @@ def initial_choice(): match choose_func: case "1": create_server() + initial_choice() case "2": pop_server() case "3": list_servers() + initial_choice() case "4": send_commands() case "5": @@ -123,9 +120,4 @@ def initial_choice(): initial_choice() load_servers() -initial_choice() - -#with Client('10.100.4.60', 30580, passwd='orrQLZvXH6jgD@wt') as client: -# response = client.run('tps') -# -#print(response) \ No newline at end of file +initial_choice() \ No newline at end of file