def _broadcast(self, port):
       # continually sends out ping messages with omega ip addr and name. UDP
     msg=str(self.addr)+" "+str(self.jsonInfo["omega_tablereq"])
     lu.log("Broadcasting omega address on : " + str(lu.getPort("OmegaBroadcast")) )
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
     while self.alive:
         #lu.log("Broadcasting omega address on : " + str(lu.getPort("OmegaBroadcast"]) )
         sock.sendto(msg.encode("UTF-8"), (lu.getBroadcast(), lu.getPort("OmegaBroadcast")))
         time.sleep(1)
Example #2
0
 def _broadcast(self, port):
     # continually sends out ping messages with omega ip addr and name. UDP
     msg = str(self.addr) + " " + str(self.jsonInfo["omega_tablereq"])
     lu.log("Broadcasting omega address on : " +
            str(lu.getPort("OmegaBroadcast")))
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
     while self.alive:
         #lu.log("Broadcasting omega address on : " + str(lu.getPort("OmegaBroadcast"]) )
         sock.sendto(msg.encode("UTF-8"),
                     (lu.getBroadcast(), lu.getPort("OmegaBroadcast")))
         time.sleep(1)
 def _listen(self):
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     sock.bind((self.addr, lu.getPort("OmegaListen"))) # UDP
     lu.log("Binded and listening on " + str((self.addr, lu.getPort("OmegaListen"))))
     while self.alive:
         data, addr = sock.recvfrom(1024)
         time.sleep(.1)
         if not self.readBuffer.full():
             self.readBuffer.put(data.decode("UTF-8"))
         else:
             self.readBuffer.get()
             lu.log("Queue overflow. Dropping datagram.")
Example #4
0
 def _listen(self):
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     sock.bind((self.addr, lu.getPort("OmegaListen")))  # UDP
     lu.log("Binded and listening on " +
            str((self.addr, lu.getPort("OmegaListen"))))
     while self.alive:
         data, addr = sock.recvfrom(1024)
         time.sleep(.1)
         if not self.readBuffer.full():
             self.readBuffer.put(data.decode("UTF-8"))
         else:
             self.readBuffer.get()
             lu.log("Queue overflow. Dropping datagram.")
Example #5
0
def main():
    # make network Table
    global table
    table = networkTable()
    # get messages over UDP to update networkTable
    tableRequestObj = tableRequest()
    broadcastListener = OmegaNodeDiscovery(
        "omega", ("omega_tableReq", tableRequestObj.port))
    # get UDP pings from network to create Network table entries
    lu.log("Getting UDP network pings on : " +
           str(broadcastListener.broadcastAddr) + ", from port : " +
           str(lu.getPort("OmegaListen")))
    lu.log("Initialized")
    output = 5
    outputCount = 0
    while broadcastListener.alive:
        table.updateEntry(json.dumps(broadcastListener.jsonInfo))
        msg = broadcastListener.getMsg()
        if msg:
            table.updateEntry(msg)
        else:
            outputCount = outputCount + 1
            if (outputCount > output):
                outputCount = 0
                print(table.getTable())
            time.sleep(1)
Example #6
0
 def __init__(self, filePath, fileHash, folder):
     self.fileHash = fileHash
     self.folder = folder
     self.filePath = filePath
     self.dataBase = lu.getAddrOf("delta") + ":" + str(
         lu.getPort("delta")) + "/"
     self.executeSetup = threading.Thread(target=self._executeSetup).start()
Example #7
0
 def __init__(self):
     self.addr = lu.getAddr()
     self.OmegaAddr = lu.getOmegaAddr()
     self.ID = lu.getHTTP(self.OmegaAddr, lu.getPort("omega_tableReq"),
                          lu.paths["omega_MinionTable"])
     self.TCP_ScriptListener = lu.TCP_BackgroundProcess(
         self.addr, MinionTCP_Handler).listen()
Example #8
0
 def do_GET(self): # check if contained to directory
     lu.log("Get Request - " + self.path)
     filePath=re.sub("^/",os.getcwd()+"/",self.path)
     filePath=re.sub("%20"," ",filePath)
     filePath=re.sub("/+","/",filePath)
     pathSplit=[x for x in self.path.split("/") if x] # TODO : Restructure get using pathSplit
     # Get listing of nodes from omega. Returns JSON
     if (self.path == lu.paths["alpha_nodeListing"]): # node
         requestURL='http://'+str(lu.getOmegaAddr())+':'+str(lu.getPort("omega_tableReq"))+lu.paths["omega_Table"]
         lu.log("Requesting " + requestURL)
         msg=None
         try:
             with urllib.request.urlopen(requestURL) as response:
                 self.setHeaders(200)
                 try:
                     msg = response.read().decode("UTF-8")
                     self.wfile.write(msg.encode("UTF-8"))
                 except:
                     lu.error("Could not parse routing table")
                     return 1
         except:
             lu.log("Could not get network table from Omega.")
     # is file or directory reference
     elif os.path.isfile(filePath):
         self.setHeaders(200)
         self.writeFileToHandler(filePath)
     elif os.path.isdir(filePath):
         index=os.path.join(filePath,"index.html")
         if os.path.isfile(index):
             self.setHeaders(200)
             self.writeFileToHandler(index)
         else:
             if(len(os.listdir(filePath))):
                 for i in os.listdir(filePath):
                     i = "<a href=\'" + self.path + "/" + i + "\'>"+i+"</a></br>"
                     self.wfile.write(i.encode("UTF-8"))
             else:
                 self.wfile.write("directory empty".encode("UTF-8"))
     # get database entries for user
     elif pathSplit[0] == lu.paths["alpha_stdout"] or pathSplit[0] == lu.paths["alpha_stderr"]:
         msg = lu.deltaGetData(pathSplit)
         if(not msg):
             self.setHeaders(500)
             return
         self.setHeaders(200)
         self.wfile.write(msg.encode("UTF-8"))
     # no file could be found
     elif not os.path.exists(filePath):
         self.setHeaders(404)
         string="File : '" + filePath + "' not found."
         lu.log(string)
         self.wfile.write(string.encode("UTF-8"))
     else:
         self.setHeaders(500)
Example #9
0
    def do_POST(self):
        lu.log("Post Request - " + self.path)
        pathroot=self.path.split("/")
        while "" in pathroot:
            pathroot.remove("")
        if(pathroot[0] == lu.paths["alpha_scripts"]): # TEST THIS : This may be broken : file upload
            lu.log("Uploading Script - " + self.path)
            fp=self.rfile
            filePath=re.sub("^/",os.getcwd()+"/",self.path)
            filePath=re.sub("%20"," ",filePath)
            length = int(self.headers.get_all('content-length')[0])
            self.setHeaders(200)
            if(length > 0):
                f = open(filePath, 'wb')
                f.write(fp.read(length))
                f.close()
        elif(self.path == lu.paths["alpha_postScript"]): # post to master
            masterAddr = lu.getAddrOf("Lambda-M")
            if not masterAddr:
                lu.log("Could not get Master Addr.")
                self.setHeaders(500)
            length = int(self.headers.get_all('content-length')[0])
            if(length > 0):
                # send json to master http post
                data = json.loads(self.rfile.read(length).decode("UTF-8"))
                data["FileLoc"]=lu.paths["alpha_scripts"] + "/" + data["script"]
                data["Hash"] = lu.getHash(data["FileLoc"])
                lu.log("Hashed Program : " + data["Hash"])
                lu.postHTTP(json.dumps(data),masterAddr,lu.getPort("Master_JSONpost"),lu.paths["master_postScript"])

                # send binary data to socket
                lu.sendFile(data["FileLoc"],(masterAddr,int(lu.getPort("Master_programRec"))))
                # self.send(data["Hash"])
                self.setHeaders(200)
                self.wfile.write(data["Hash"].encode("UTF-8"))
            else:
                lu.log("Nothing to send to master")
                self.setHeaders(500)
        else:
            lu.log("Could not post " + self.path)
 def __init__(self, name, *ports):
     self.name=name
     self.addr=lu.getAddr()
     self.jsonInfo={}
     for i in ports:
         self.jsonInfo[i[0].lower()]=i[1]
     self.jsonInfo["name"]=self.name
     self.jsonInfo["addr"]=self.addr
     # only one listener per computer. This will be used by the omega server to broadcast its address. UDP
     #      otherwise : " OSError: [Errno 98] Address already in use "
     self.readBuffer=queue.Queue(maxsize=self.queueSize)
     # listens to the broadcast messages and adds them to queue. UDP
     listenThread = threading.Thread(target=self._listen, args = ())
     listenThread.start()
     # # broadcast the omega server's address on subnet
     broadcastThread = threading.Thread(target=self._broadcast, args = (lu.getPort("OmegaBroadcast"),))
     broadcastThread.start()
Example #11
0
 def __init__(self, name, *ports):
     self.name = name
     self.addr = lu.getAddr()
     self.jsonInfo = {}
     for i in ports:
         self.jsonInfo[i[0].lower()] = i[1]
     self.jsonInfo["name"] = self.name
     self.jsonInfo["addr"] = self.addr
     # only one listener per computer. This will be used by the omega server to broadcast its address. UDP
     #      otherwise : " OSError: [Errno 98] Address already in use "
     self.readBuffer = queue.Queue(maxsize=self.queueSize)
     # listens to the broadcast messages and adds them to queue. UDP
     listenThread = threading.Thread(target=self._listen, args=())
     listenThread.start()
     # # broadcast the omega server's address on subnet
     broadcastThread = threading.Thread(
         target=self._broadcast, args=(lu.getPort("OmegaBroadcast"), ))
     broadcastThread.start()
 def __init__(self):
     self.addr=lu.getAddr()
     self.OmegaAddr=lu.getOmegaAddr()
     self.ID = lu.getHTTP(self.OmegaAddr, lu.getPort("omega_tableReq"), lu.paths["omega_MinionTable"])
     self.TCP_ScriptListener = lu.TCP_BackgroundProcess(self.addr, MinionTCP_Handler).listen()
 def __init__(self, filePath,fileHash, folder):
     self.fileHash=fileHash
     self.folder=folder
     self.filePath=filePath
     self.dataBase=lu.getAddrOf("delta") + ":" + str(lu.getPort("delta")) + "/"
     self.executeSetup = threading.Thread(target=self._executeSetup).start()
import subprocess as subP

# ==========================
#   Import lambdaUtils
# ==========================
filePath = os.path.abspath(os.path.join(os.path.dirname(__file__)))
rootPath = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path.append(rootPath)
import lambdaUtils as lu

os.chdir(filePath)

# ==========================
#   Init Setup
# ==========================
port = lu.getPort("delta")
addr = lu.getAddr()
urlToGet = "https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.3.4/elasticsearch-2.3.4.zip"
databaseDir = filePath + "/elasticsearch-2.3.4"
outputZip = filePath + "/master.zip"

# ==========================
#   Elastic Sub Proc
# ==========================
def deltaStart():
    command = "bash bin/elasticsearch --network.host " + addr
    with subP.Popen(
        shlex.split(command), cwd=databaseDir, stdout=subP.PIPE, stderr=subP.PIPE, universal_newlines=True
    ) as proc:
        for line in proc.stdout:
            print(line, end="")
def main():
    # make network Table
    global table
    table = networkTable()
    # get messages over UDP to update networkTable
    tableRequestObj = tableRequest()
    broadcastListener = OmegaNodeDiscovery("omega", ("omega_tableReq", tableRequestObj.port))
    # get UDP pings from network to create Network table entries
    lu.log("Getting UDP network pings on : " + str(broadcastListener.broadcastAddr) + ", from port : " + str(lu.getPort("OmegaListen")))
    lu.log("Initialized")
    output=5
    outputCount=0
    while broadcastListener.alive:
        table.updateEntry(json.dumps(broadcastListener.jsonInfo))
        msg = broadcastListener.getMsg()
        if msg:
            table.updateEntry(msg)
        else:
            outputCount = outputCount + 1
            if (outputCount > output):
                outputCount = 0
                print(table.getTable())
            time.sleep(1)
Example #16
0
                <meta charset="UTF-8">
                <script type="text/javascript">
                     window.location = " '''
        html2=''' ";
                 </script>
            </head>
            </html>
        '''
        html = html1 + dest + html2
        self.wfile.write(html.encode("UTF-8"))
    # deletes a script
    def do_DELETE(self):
        lu.log("Delete Request - " + self.path)
        self._setHeaders()
        self.wfile.write(b"<html><body><h1>delete!</h1></body></html>")

# ==========================
#   Iniitialize
# ==========================
try:
    socketserver.TCPServer.allow_reuse_address = True
    httpd = socketserver.TCPServer((lu.getAddr(),
    lu.getPort("alpha")), HTTP_webpageHandler)
    broadcastListener = lu.nodeDiscovery("alpha")
    lu.log(" Serving @ " + str(lu.getAddr()) + ":" + str(lu.getPort("alpha")))
    httpd.serve_forever()
except OSError:
    lu.error("Port in use - " + str(lu.getPort("alpha")))
except KeyboardInterrupt:
    sys.exit(0)
Example #17
0
import subprocess as subP

# ==========================
#   Import lambdaUtils
# ==========================
filePath = os.path.abspath(os.path.join(os.path.dirname(__file__)))
rootPath = os.path.abspath(
    os.path.join(os.path.dirname(__file__), os.path.pardir))
sys.path.append(rootPath)
import lambdaUtils as lu
os.chdir(filePath)

# ==========================
#   Init Setup
# ==========================
port = lu.getPort("delta")
addr = lu.getAddr()
urlToGet = "https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.3.4/elasticsearch-2.3.4.zip"
databaseDir = filePath + "/elasticsearch-2.3.4"
outputZip = filePath + "/master.zip"


# ==========================
#   Elastic Sub Proc
# ==========================
def deltaStart():
    command = "bash bin/elasticsearch --network.host " + addr
    with subP.Popen(shlex.split(command),
                    cwd=databaseDir,
                    stdout=subP.PIPE,
                    stderr=subP.PIPE,