Esempio n. 1
0
    def tryReconnect(self):
        """checks if reconnect needed"""

        if not self.core.config["reconnect"][
                "activated"] or not self.core.api.isTimeReconnect():
            return False

        # only reconnect when all threads are ready
        if not (0 < self.wantReconnect() == len(self.working)):
            return False

        if not exists(self.core.config['reconnect']['method']):
            if exists(join(pypath, self.core.config['reconnect']['method'])):
                self.core.config['reconnect']['method'] = join(
                    pypath, self.core.config['reconnect']['method'])
            else:
                self.core.config["reconnect"]["activated"] = False
                self.log.warning(_("Reconnect script not found!"))
                return

        self.reconnecting.set()

        self.log.info(_("Starting reconnect"))

        # wait until all thread got the event
        while [x.active.plugin.waiting for x in self.working].count(True) != 0:
            sleep(0.25)

        old_ip = get_ip()

        self.core.evm.dispatchEvent("reconnect:before", old_ip)
        self.log.debug("Old IP: %s" % old_ip)

        try:
            call(self.core.config['reconnect']['method'], shell=True)
        except:
            self.log.warning(_("Failed executing reconnect script!"))
            self.core.config["reconnect"]["activated"] = False
            self.reconnecting.clear()
            self.core.print_exc()
            return

        sleep(1)
        ip = get_ip()
        self.core.evm.dispatchEvent("reconnect:after", ip)

        if not old_ip or old_ip == ip:
            self.log.warning(_("Reconnect not successful"))
        else:
            self.log.info(_("Reconnected, new IP: %s") % ip)

        self.reconnecting.clear()
Esempio n. 2
0
    def tryReconnect(self):
        """checks if reconnect needed"""

        if not self.core.config["reconnect"]["activated"] or not self.core.api.isTimeReconnect():
            return False

        # only reconnect when all threads are ready
        if not (0 < self.wantReconnect() == len(self.working)):
            return False

        if not exists(self.core.config['reconnect']['method']):
            if exists(join(pypath, self.core.config['reconnect']['method'])):
                self.core.config['reconnect']['method'] = join(pypath, self.core.config['reconnect']['method'])
            else:
                self.core.config["reconnect"]["activated"] = False
                self.log.warning(_("Reconnect script not found!"))
                return

        self.reconnecting.set()

        self.log.info(_("Starting reconnect"))

        # wait until all thread got the event
        while [x.active.plugin.waiting for x in self.working].count(True) != 0:
            sleep(0.25)

        old_ip = get_ip()

        self.core.evm.dispatchEvent("reconnect:before", old_ip)
        self.log.debug("Old IP: %s" % old_ip)

        try:
            call(self.core.config['reconnect']['method'], shell=True)
        except:
            self.log.warning(_("Failed executing reconnect script!"))
            self.core.config["reconnect"]["activated"] = False
            self.reconnecting.clear()
            self.core.print_exc()
            return

        sleep(1)
        ip = get_ip()
        self.core.evm.dispatchEvent("reconnect:after", ip)

        if not old_ip or old_ip == ip:
            self.log.warning(_("Reconnect not successful"))
        else:
            self.log.info(_("Reconnected, new IP: %s") % ip)

        self.reconnecting.clear()
Esempio n. 3
0
def __main__():

	global TOTAL_PIS_CONNECTED

	#Create main socket to listen to connections on 
	mainSock = socket.socket()	
	mainSock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)


	localIP = network.get_ip()
	print("localIP is ", localIP)
	mainSock.bind((localIP, PORT))
	mainSock.listen(10)

	socketList = [socket.socket() for i in range(OTHERPIS)]

	#Start attempting to connect to all pis
	threading.Thread(target=bcastConnect, args=(socketList,)).start()
	
	#Start thread that handles receives
	threading.Thread(target=processNetworkData, args=(recvQueue, sendQueue, socketMap)).start()

	#threading.Thread(target=sendThread, args=(sendQueue,socketMap)).start()
	threading.Thread(target=sendThread, args=(socketMap,)).start()

	while True:

		newConnection = mainSock.accept()[0]
		print("New Connection received!", newConnection.getpeername())
		#threading.Thread(target=recvThread,args=(newConnection, recvQueue, socketMap)).start()
		threading.Thread(target=recvThread,args=(newConnection, socketMap)).start()

	mainSock.close()
Esempio n. 4
0
def network():
	default()
	os.system("tput setaf 5")
	print("\tNETWORK SERVICES")
	print("\t----------------")
	os.system("tput setaf 7")
	print("")
	print("PRESS 1: Create new web server\t\t\tPRESS 2: Configure existing web server\nPRESS 3: To see IP\t\t\t\tPRESS 4: To go back to home screen")
	print("\nEnter Choice: ",end='')
	ch=int(input())
	if ch==1:
		net.create_web_server()
		home_screen()
	elif ch==2:
		net.file_add()
		net.personalised_link()
		home_screen()
	elif ch==3:
		print(net.get_ip())
		while True:
			print("Press y to continue: ",end='')
			ch2=input()
			if ch2=='y' or ch2=='Y':
				network()
	elif ch==4:
		home_screen()
	else:
		while True:
			print("Invalid Choice!!Try Again")
			print("\nPress y to continue: ",end="")
			x=input()
			if x=='y'or x=='Y':
				network()
Esempio n. 5
0
File: ssh.py Progetto: alobbs/qvm
def run (vm_name, run_cmd, args=None):
	user, host = get_username(vm_name)

	ip = network.get_ip(vm_name)
	if not ip:
		print "ERROR: Could not get the IP of %s"%(vm_name)
		raise SystemExit

	command = build_ssh_command (ip, user, terminal=True)
	command += " %s"%(run_cmd)
	return cmd.run(command)
Esempio n. 6
0
 def __init__(self):
     self.alive = True
     self.elevators = {}
     self.ip = network.get_ip()
     self.backup_ip = ''
     self.external_buttons = [False for floor in range(constants.N_FLOORS)]
     self.lock = Lock()
     self.broadcaster = Thread(target=self.broadcast)
     self.broadcaster.setDaemon(True)
     self.broadcaster.start()
     self.server = network.ThreadedTCPServer((self.ip, 10001),
                                             network.ClientHandler)
     self.server.clients = {}
     self.server.master = self
     self.server_thread = Thread(target=self.run_server)
     self.server_thread.setDaemon(True)
     self.server_thread.start()
Esempio n. 7
0
 def __init__(self):
     self.alive = True
     self.elevators = {}
     self.ip = network.get_ip()
     self.backup_ip = ''
     self.external_buttons = [False for floor in range(constants.N_FLOORS)]
     self.lock = Lock()
     self.broadcaster = Thread(target=self.broadcast)
     self.broadcaster.setDaemon(True)
     self.broadcaster.start()
     self.server = network.ThreadedTCPServer((self.ip, 10001),
                                             network.ClientHandler)
     self.server.clients = {}
     self.server.master = self
     self.server_thread = Thread(target=self.run_server)
     self.server_thread.setDaemon(True)
     self.server_thread.start()
Esempio n. 8
0
    def __init__(self, envs=os.environ):
        self.mysql_db = env('MYSQL_DATABASE', None, envs)
        self.mysql_user = env('MYSQL_USER', None, envs)
        self.mysql_password = env('MYSQL_PASSWORD', None, envs)
        self.mysql_root_password = env('MYSQL_ROOT_PASSWORD', '', envs)
        self.mysql_random_root_password = env('MYSQL_RANDOM_ROOT_PASSWORD',
                                              True, envs, to_flag)
        self.mysql_onetime_password = env('MYSQL_ONETIME_PASSWORD', False,
                                          envs, to_flag)
        self.repl_user = env('MYSQL_REPL_USER', None, envs)
        self.repl_password = env('MYSQL_REPL_PASSWORD', None, envs)
        self.datadir = env('MYSQL_DATADIR', '/var/lib/mysql', envs)
        self.pool_size = env('INNODB_BUFFER_POOL_SIZE', 0, envs, fn=int)

        # state
        self.ip = get_ip()
        self._conn = None
        self._query_buffer = OrderedDict()
Esempio n. 9
0
File: ssh.py Progetto: alobbs/qvm
def execute_file_over_ssh (vm_name, fullpath, prog_args=None):
    user, host = get_username(vm_name)

    ip = network.get_ip(vm_name)
    if not ip:
        print "ERROR: Could not get the IP of %s"%(vm_name)
        raise SystemExit

    # Copy
    command = "scp %s %s %s:/tmp" % (SSH_CLI_PARAMS, fullpath, build_hostname(ip, user))
    cmd.run(command)

    # Execute
    command = build_ssh_command(ip, user, terminal=True)
    command += " /tmp/%s" %(os.path.basename(fullpath))
    if prog_args:
        command += ' %s'%(prog_args)
    cmd.run(command)

    # Clean up
    command = build_ssh_command(ip, user)
    command += " rm -fv /tmp/%s" %(os.path.basename(fullpath))
    cmd.run(command)
Esempio n. 10
0
    def run(self):
        """Start communication with master, movement- and button handler.

        Elev objects are used as a mirror of the real clients on the master
        side, so to initiate connection with the server, move the elevator,
        etc this must be called.
        """
        self.alive = True
        self.client = network.Client(self.master_addr, 10001, self)
        self.ip = network.get_ip()
        self.backup_ip = ''
        self.backup = None
        self.client.send_msg('request_backup_ip', None, self.ip)
        self.worker = network.Msg_receiver(self.client, self.client.connection)
        self.worker.setDaemon(True)
        self.worker.start()
        self.elev = cdll.LoadLibrary("../driver/driver.so")
        self.elev.elev_init(self.mode)
        self.movement = Thread(target=self.movement_handler)
        self.buttons = Thread(target=self.button_handler)
        self.movement.setDaemon(True)
        self.buttons.setDaemon(True)
        self.movement.start()
        self.buttons.start()
Esempio n. 11
0
    def run(self):
        """Start communication with master, movement- and button handler.

        Elev objects are used as a mirror of the real clients on the master
        side, so to initiate connection with the server, move the elevator,
        etc this must be called.
        """
        self.alive = True
        self.client = network.Client(self.master_addr, 10001, self)
        self.ip = network.get_ip()
        self.backup_ip = ''
        self.backup = None
        self.client.send_msg('request_backup_ip', None, self.ip)
        self.worker = network.Msg_receiver(self.client, self.client.connection)
        self.worker.setDaemon(True)
        self.worker.start()
        self.elev = cdll.LoadLibrary("../driver/driver.so")
        self.elev.elev_init(self.mode)
        self.movement = Thread(target=self.movement_handler)
        self.buttons = Thread(target=self.button_handler)
        self.movement.setDaemon(True)
        self.buttons.setDaemon(True)
        self.movement.start()
        self.buttons.start()
Esempio n. 12
0
#Queues to share messages over send and receive
recvQueue = Queue()
sendQueue = Queue()

#Maps to map IP to corresponding send/recv socket
recvMap = {}
sendMap = {}

#Set of other addresses
ipAddrs = set()

#Lock for concurrency
lock = threading.Lock()

#My IP
localIP = network.get_ip()
PORT = 10000

#To be used in processNetworkData
me = localIP

#Self socket - send messages to self
selfSocket = socket.socket()
'''
# ballot = <Num, pid, depth of block>
# "An acceptor doesnot accept, prepare, or accept messages from a contending leader
# if the depth of the block being proposed is lower than the acceptor’s depth of
# its copy of the blockchain"
'''
#Paxos info
pid = boot.getPiNum()
Esempio n. 13
0
# Start the VM if it isn't running
if not util.vm_is_running(vm_name):
	cmd.run("qvm start %s"%(vm_name))

# Command
if len(sys.argv) > 2:
    remote_cmd = ' '.join(sys.argv[2:])
else:
    remote_cmd = None

# Get username for the session
user, vm_name = ssh.get_username(vm_name)

# Get IP
ip = network.get_ip(vm_name)
if not ip:
    print "ERROR: Could not get the IP of %s"%(vm_name)
    raise SystemExit

# SSH command line
command = ssh.build_ssh_command(ip, user)
if remote_cmd:
    command += ' %s'%(remote_cmd)

# Make sure the SSH service is ready
network.wait_vm_net_service (vm_name, 22)

# Execute
if not sys.stdin.isatty():
    cmd.run_command(command, stdin=sys.stdin.read())
Esempio n. 14
0
        servo.runScriptSub(0)
        print("crouch")
        return {'postion': 'crouch'}


api.add_resource(Crouch, '/crouch')


class Taunt(Resource):
    def get(self):
        servo.runScriptSub(1)
        print("taunt")
        return {'postion': 'taunt'}


api.add_resource(Taunt, '/taunt')


class Neutral(Resource):
    def get(self):
        servo.runScriptSub(1)
        print("neutral")
        return {'postion': 'neutral'}


api.add_resource(Neutral, '/neutral')

if __name__ == '__main__':
    rpiIP = str(get_ip())  # sets ip address of raspberry pi
    app.run(debug=True, host=str(rpiIP))
Esempio n. 15
0
import os
import re
import util
import network

# Run virsh list
cmd = "virsh list --all"
with os.popen(cmd) as f:
    cont = [l.strip() for l in f.read().split('\n') if l]

# Skip header
cont = cont[2:]

# VMs
VMs = []
for line in cont:
    line = line.replace ('shut off', 'shut_off')
    VMs.append([f for f in line.split(' ') if f])

# Get IPs
for vm in VMs:
    vm_name = vm[1]
    vm.append(network.get_ip(vm_name))

# Print
print util.format_table (["VM", "Status", "IP"],
                         [[vm[1], vm[2], vm[3]] for vm in VMs])