diff --git a/CommandServer.py b/CommandServer.py new file mode 100644 index 0000000..a533438 --- /dev/null +++ b/CommandServer.py @@ -0,0 +1,125 @@ +from JobList import * +import pickle + +class Server(object): + """ + Server<---->Client + Command List: + CREATEJOB + REMOVEJOB + VIEWJOBS + CHECKJOBTEAM + JOINJOB + STARTJOB + + PREDEFINED VARIABLES + JOBTYPE-> + + + + + + + + """ + connectionMessage = ["CREATEJOB ", + "REMOVEJOB ", + "VIEWJOBS", "CHECKJOBTEAM ", "JOINJOB ", + "STARTJOB ", "JOBTYPE SELECTION:", + "", "", "", + "", "", "", ""] + + def __init__(self): + self.ServerSocket = socket.socket() + self.host = '127.0.0.1' + self.port = 1233 + self.ThreadCount = 0 + self.jobListOBJ = JobList() + self.command = "" + self.parameterList = [] + + # Bind socket to port + try: + self.ServerSocket.bind((self.host, self.port)) + except socket.error as e: + print(str(e)) + + print('Waiting for a Connection..') + self.ServerSocket.listen(5) + + def main(self): + while True: + Client, address = self.ServerSocket.accept() + print('Connected to: ' + address[0] + ':' + str(address[1])) + start_new_thread(self.threadedClient, (Client,)) + self.ThreadCount += 1 + print('Thread Number: ' + str(self.ThreadCount)) + + def threadedClient(self, connection): + self.connectionMessage() + + while true: + #Limiting to 2048 Bytes + clientMessage = connection.recv(2048) + + #Receiving Message From Client + self.command = clientMessage.pickle.loads(clientMessage) + + self.ParseCommand(self.command) + + self.commandRouting(self.parameterList) + + + + def connectionMessage(self): + self.connection.send(pickle.dumps(connectionMessage)) + + def ParseCommand(self, Command): + self.parameterList = Command.split(" ") + + def createJob(self, parameterList): + self.connection.send(pickle.dumps("Job has been created and added to the Job List")) + self.jobListOBJ.createJob(parameterList[1], parameterList[2], parameterList[3], parameterList[4], parameterList[5]) + + def removeJob(self, parameterList): + for Job in self.jobListOBJ.listofjobs: + if Job.jobParameters == parameterList: + self.connection.send(pickle.dumps(Job.FullJob+" has been removed from the Job List")) + self.jobListOBJ.listofjobs.remove(Job) + + def viewJobs(self): + self.connection.send(pickle.dumps(jobListOBJ.listofjobs)) + + def checkJobTeam(self, parameterList): + for Job in self.jobListOBJ.listofjobs: + if Job.jobParameters == parameterList: + self.connection.send(pickle.dumps(Job.JobSeekerList)) + + + def joinJob(self, parameterList, seekerName): + for Job in self.jobListOBJ.listofjobs: + if Job.jobParameters == parameterList: + self.connection.send(pickle.dumps(seekerName+" has joined: "+Job.FullName)) + Job.JobSeekerList.add(seekerName) + + + def startJob(self, parameterList): + for Job in self.jobListOBJ.listofjobs: + if Job.jobParameters == parameterList: + Job.setNumOfSeekers("Job Started") + + def commandRouting(parameterList): + if parameterList[0] == "CREATEJOB": + self.createJob() + elif parameterList[0] == "REMOVEJOB": + self.removeJob() + elif parameterList[0] == "VIEWJOBS": + self.viewJob() + elif parameterList[0] == "CHECKJOBTEAM": + self.checkJobTeam() + elif parameterList[0] == "JOINJOB": + self.joinJob() + elif parameterList[0] == "STARTJOB": + self.startJob() + else: + self.connection.send(pickle.dumps("Invalid Command")) diff --git a/Job.py b/Job.py index 74e8de6..cee5f56 100644 --- a/Job.py +++ b/Job.py @@ -1,11 +1,13 @@ class Job(object): - def __init__(self, jobCreator, jobName, numOfSeekers): + def __init__(self, jobCreator, jobName, numOfSeekers, targetIP, targetPort): self.JobCreator = jobCreator self.JobName = jobName self.NumOfSeekers = numOfSeekers + self.targetIP = "1.1.1.1" + self.targetPort = 0 self.FullJob = jobCreator+" "+" "+jobName+" "+" "+numOfSeekers self.JobSeekerList = [] @@ -13,6 +15,8 @@ def __iter__(self): yield self.JobCreator yield self.JobName yield self.NumOfSeekers + yield self.targetIP + yield self.targetPort def addSeekerList(self, SeekerName): self.JobSeekerList.append(SeekerName) @@ -55,4 +59,4 @@ def setFullJob(self, FullJob): self.FullJob = FullJob def setJobSeekerList(self, JobSeekerList): - self.JobSeekerList = JobSeekerList \ No newline at end of file + self.JobSeekerList = JobSeekerList diff --git a/JobList.py b/JobList.py index 3e4303b..f6d5aa6 100644 --- a/JobList.py +++ b/JobList.py @@ -16,9 +16,7 @@ class JobList(object): jobsToRequest: This is a static list which is used to hold the names of the types of jobs offered ''' listofjobs = [] - jobsToRequest = ['IP Online Detection', 'Subnet IP Online Detection', 'Specific Port Status Detection', - 'All Port Status Detection', 'ICMP Flood Attack', 'TCP Flood Attack', 'UDP Flood Attack'] - + ''' One-To-One Jobs '''