Browse Source

V 0.1

master
root 3 years ago
parent
commit
adbc58b4f2
1 changed files with 16 additions and 28 deletions
  1. +16
    -28
      server.py

+ 16
- 28
server.py View File

@@ -6,12 +6,13 @@ from Crypto.Cipher import AES
import base64
import random
import threading
from subprocess import call

key="fhgjkleopmlk,hgj"
enc = AES.new(key[:32])
chaine = 'abcdefghijklmnopqrstuvwxyz'
fichier_zone = "/etc/bind/zones/db.debugo.fr.extra"
change = 0
code = 'toto'

def encrypt(clear):
temp = (str(clear) + (AES.block_size - len(str(clear)) % AES.block_size) * "\0")
@@ -32,32 +33,18 @@ class ClientThread(threading.Thread):

def run(self):
# print("Connection de %s sur le port %s" % (self.ip, self.port, ))
# Random sur la chaine
l = list(chaine)
random.shuffle(l)
random_chaine = ''.join(l)
# Envoi de la chaine randomisee au client
# print ("J'envoie la chaine randomise au client : %s" % (random_chaine))
self.clientsocket.send(encrypt(random_chaine))
# Choix d'un chiffre au hasard et d'une lettre en fonction
random_indice = random.randint(1,25)
random_carac = random_chaine[random_indice]
self.clientsocket.send(encrypt(random_carac))
# print ("Je veux l'indice du caractere : %s" % (random_carac))
# print ("Le client doit donc me renvoyer : %s" % (random_indice))
# Reception
r = decrypt(self.clientsocket.recv(2048))
print ("Le client a envoye : %s" % (r))
if int(r) == int(random_indice): # Si le client a bien repondu
# print ("Le client a envoye : %s" % (r))
if r == code: # Si le client a bien repondu
change = 0
fichier=open(fichier_zone, 'r') # on ouvre le fichier
new_line=[] # on prepare une liste vide qui va contenir les changements
fichier=open(fichier_zone, 'r') # on ouvre le fichier
new_line=[] # on prepare une liste vide qui va contenir le fichier
s = "\t" # Separateur pour la suite...
for line in fichier: # on lit chaque ligne
item = line.split() # chaque element de la ligne est mis dans une liste
if "Serial" in item: # si un des items est le mot serial
item[0] = int(item[0]) + 1 # on incremente
item[0] = "\t"+str(item[0]) # on rajoute la tabulation devant
s = "\t"
#s = "\t"
line = s.join(item)+"\n" # on reforme la ligne
if "home" in item: # si un des items est le mot home
print item[3]
@@ -65,18 +52,19 @@ class ClientThread(threading.Thread):
if item[3] != self.ip : # Si IP differente
change = 1
item[3] = self.ip+"\n"
s = "\t"
#s = "\t"
line = s.join(item)
new_line.append(line)
new_line.append(line) # On ajoute la ligne
if change == 1 :
print "on change"
# RESTE A FAIRE
# deplacer l'ancien fichier en old
# deplacer le nouveau fichier
# relancer bind
newfichier = open('/srv/new.txt', 'w')
newfichier = open('/etc/bind/zones/new.txt', 'w')
for nw in new_line :
newfichier.write(nw)
newfichier.close
call(["cp", "/etc/bind/zones/db.debugo.fr.extra", "/etc/bind/zones/db.debugo.fr.extra.back"])
call(["rm", "/etc/bind/zones/db.debugo.fr.extra"])
call(["mv", "/etc/bind/zones/new.txt", "/etc/bind/zones/db.debugo.fr.extra"])
call (["rndc reload"])
fichier.close
else :
error = 1

Loading…
Cancel
Save