--- /dev/null
+import sys, socket
+import pickle
+from Util import *
+MSGLEN = 1024
+HOST = "127.0.0.1"
+PORT = 10001
+
+class MySocket:
+ def __init__(self, sock=None):
+ if sock is None:
+ self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ else:
+ self.sock = sock
+
+ def connect(self, host, port):
+ self.sock.connect((host, port))
+ print "connected to %s %s"%(host, port)
+
+ def send_msg(self, msg):
+ totalsent = 0
+ while totalsent < len(msg):
+ sent = self.sock.send(msg[totalsent:])
+ if sent == 0:
+ raise RuntimeError, "socket connection broken"
+ totalsent = totalsent + sent
+
+ def send_command(self, msg_type, config_data):
+ self.send_msg(msg_type)
+ response = self.recv_msg()
+ if response == ACK_MSG:
+ print "aici"
+
+ self.send_dict(config_data)
+ print "am trimis"
+ response = self.recv_msg()
+
+ return response
+
+ def recv_msg(self):
+ msg = ''
+ chunk = self.sock.recv(MSGLEN)
+ if chunk == '':
+ raise RuntimeError, "socket connection broken"
+ msg = msg + chunk
+ print msg
+ return msg
+
+ # send a pickled dictionary
+ def send_dict(self, data):
+ dumped_data = pickle.dumps(data)
+ self.send_msg(dumped_data)
+
+if __name__ == "__main__":
+
+ s = MySocket()
+ s.connect(HOST, PORT)
+ # test 1
+ #s.send_msg("hello")
+ # test 2
+ #dd = {'a':1, 'b':2}
+ #s.send_dict(dd)
+ #s.recv_msg()
+
+ # test config
+ config_data = [{CLIENT:"tribler", FILE:"Tribler/Tools/cmdline.py",
+ RUN_TYPE:"script",
+ INTERPRETER:"python", PREFIX:"PYTHONPATH=.",SUFFIX:"",
+ UP_LIMIT_OPTION:"",DL_LIMIT_OPTION:"", PORT_OPTION:"-p",
+ LOG_DIR_OPTION:"-l",DL_DIR_OPTION:"-d"}]
+
+ response = s.send_command(CONFIG_MSG, config_data)
+ print response
+
+
import os
paramiko.util.log_to_file('/tmp/paramiko.log')
-client = paramiko.SSHClient()
-client.load_system_host_keys()
-client.connect(hostname='141.85.37.237', username='marius', password='marius')
-#client.connect(hostname='p2p-next-07.grid.pub.ro', username='p2p')
-stdin, stdout, stderr = client.exec_command('touch gugu dudu')
-stdin, stdout, stderr = client.exec_command('ls -l')
-print stdout.readlines()
-client.close()
+class SSHCommander:
+ def __init__(self, hostname, username, password):
+ self.sshclient = paramiko.SSHClient()
+ self.sshclient.load_system_host_keys()
+ self.sshclient.connect(hostname=hostname, username=username, password=password)
+
+ def emitCommand(self, comm):
+ stdin, stdout, stderr = self.sshclient.exec_command(comm)
+ print stdout.readlines()
+
+ def closeConnection(self):
+ self.sshclient.close()
+
+
+sshc = SSHCommander("141.85.37.93", "marius", "marius")
+sshc.emitCommand("transmissioncli -D -U \[isoHunt\]\ ubuntu-9.10-desktop-i386.iso.torrent &> out.log")
+#sshc.closeConnection()
+
+#~ #client.connect(hostname='p2p-next-07.grid.pub.ro', username='p2p')
+#~ stdin, stdout, stderr = client.exec_command('touch gugu dudu')
+#~ stdin, stdout, stderr = client.exec_command('ls -l')
+#~ print stdout.readlines()
+#~ client.close()
+
+
#~ host = "p2p-next-09.grid.pub.ro"
#~ port = 22
#~ transport = paramiko.Transport((host, port))
+++ /dev/null
-from lxml import etree
-
-class SwarmInstance:
- def __init__(self, id, node_id, list):
- self.id = id;
- self.node_id = node_id;
- self.btclient = list[0];
- self.upload_limit = list[1];
- self.download_limit = list[2];
- self.port = list[3];
- self.download_dir = list[4];
- self.upload_dir = list[5];
-
- def __str__(self):
- return '[%s: %s: %s: %s: %s: %s: %s: %s]' \
- %(self.id, self.node_id, self.btclient, self.upload_limit, \
- self.download_limit, self.port, self.upload_dir, self.download_dir);
-
-class NodeConfig:
- def __init__(self, list):
- self.id = list[0];
- self.public_address = list[1];
- self.public_port = list[2];
- self.private_address = list[3];
- self.private_port = list[4];
- self.ssh_port= list[5];
- self.clients_base_dir = list[6];
-
- #~ def __str__(self):
- #~ return '[%s: %s: %s: %s: %s: %s: %s]' \
- #~ %(self.id, self.btclient, self.upload_limit, self.download_limit, self.port, self.upload_dir, self.download_dir);
-
-class ClientConfig:
- def __init__(self, id, node_path, filetype, options):
- self.id = id;
- self.filetype = filetype;
- self.options = options;
- #~ self.upload_limit_option= list[2];
- #~ self.download_limit_option = list[3];
- #~ self.port_option = list[4];
- #~ self.logging_dir_option = list[5];
- #~ self.download_dir_option = list[6];
-
- #~ def __str__(self):
- #~ return '[%s: %s: %s: %s: %s: %s: %s]' \
- #~ %(self.id, self.btclient, self.upload_limit, self.download_limit, self.port, self.upload_dir, self.download_dir);
-
-class FileType:
- def __init__(self, list):
- self.type = list[0];
- self.file = list[1];
- self.interpreter = list[2];
- self.prefix = list[3];
- self.sufix = list[4];
-
- def __str__(self):
- return '[%s: %s: %s: %s: %s: %s: %s]' \
- %(self.id, self.btclient, self.upload_limit, self.download_limit, self.port, self.upload_dir, self.download_dir);
-
-try:
- tree = etree.parse("clients.xml")
- root = tree.getroot()
- clients_options = {}
- for elem in root:
- id = elem.get("id")
- options = [elem2.text for elem2 in elem[1:]]
- filetype = [elem[0].get("type")]
- filetype.extend([elem2.text for elem2 in elem[0]])
- clients_options[id] = [filetype, options]
-
- print clients_options
-except IOError as e:
- print e
-
-try:
- tree = etree.parse("nodes.xml")
- root = tree.getroot()
- nodes = {}
- for elem in root:
- id = elem.get("id")
- list = [elem2.text for elem2 in elem[:len(elem)-1]]
- client_paths = {}
- for elem2 in elem[len(elem)-1]:
- client_id = elem2.get("id");
- client_paths [client_id]=elem2[0].text;
- nodes[id] = [client_paths, list]
- print nodes
- print "=================================="
-except IOError as e:
- print e
-
-try:
- tree = etree.parse("swarm.xml")
- root = tree.getroot()
- swarm = {}
- for elem in root:
- id = elem.get("id")
- list = [elem2.text for elem2 in elem[:len(elem)-1]]
- swarm[id] = list
- print swarm
- print "=================================="
-except IOError as e:
- print e
-
+++ /dev/null
-import paramiko
-import os
-paramiko.util.log_to_file('/tmp/paramiko.log')
-
-class SSHCommander:
- def __init__(self, hostname, username, password):
- self.sshclient = paramiko.SSHClient()
- self.sshclient.load_system_host_keys()
- self.sshclient.connect(hostname=hostname, username=username, password=password)
-
- def emitCommand(self, comm):
- stdin, stdout, stderr = self.sshclient.exec_command(comm)
- print stdout.readlines()
-
- def closeConnection(self):
- self.sshclient.close()
-
-
-sshc = SSHCommander("141.85.37.93", "marius", "marius")
-sshc.emitCommand("transmissioncli -D -U \[isoHunt\]\ ubuntu-9.10-desktop-i386.iso.torrent &> out.log")
-#sshc.closeConnection()
-
-#~ #client.connect(hostname='p2p-next-07.grid.pub.ro', username='p2p')
-#~ stdin, stdout, stderr = client.exec_command('touch gugu dudu')
-#~ stdin, stdout, stderr = client.exec_command('ls -l')
-#~ print stdout.readlines()
-#~ client.close()
-
-
-#~ host = "p2p-next-09.grid.pub.ro"
-#~ port = 22
-#~ transport = paramiko.Transport((host, port))
-
-#~ privatekeyfile = os.path.expanduser('~/.ssh/id_rsa')
-#~ mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile)
-#~ username = 'p2p'
-#~ transport.connect(username = username, pkey = mykey)
-
+++ /dev/null
-#!/usr/bin/env python
-
-"""
- Traffic control interface for Linux tc
- 2010, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro
-"""
-
-import sys
-import sqlite3
-import os.path
-
-DEBUG = False
-
-class TrafficControl:
- """
- Basic class interface to Linux tc
- """
-
- def __init__(self, node_type):
- self.node_type = node_type
- self.upload_limit = -1
- self.download_limit = -1
-
- def config(self, host_address, host_port, host_iface,
- vm_address = None, vm_port = -1, vm_iface = None):
- self.host_address = host_address
- self.host_port = host_port
- self.host_iface = host_iface
- self.vm_address = vm_address
- self.vm_port = vm_port
- self.vm_iface = vm_iface
-
- """
- Set upload limit. Argument in KB/s (kilobytes/s)
- """
- def set_upload_limit(self, upload_limit):
- self.upload_limit = upload_limit
-
- """
- Set download limit. Argument in KB/s (kilobytes/s)
- """
- def set_download_limit(self, download_limit):
- self.download_limit = download_limit
-
- def get_upload_limit_commands(self):
- upload_limit_commands = []
- upload_limit_commands.append("tc qdisc add dev %s root handle 1: htb default 90" % (self.host_iface))
- upload_limit_commands.append("tc class add dev %s parent 1: classid 1:1 htb rate %dkbps ceil %dkbps" % (self.host_iface, self.upload_limit, self.upload_limit))
- upload_limit_commands.append("tc class add dev %s parent 1:1 classid 1:10 htb rate %dkbps ceil %dkbps" % (self.host_iface, self.upload_limit, self.upload_limit))
- upload_limit_commands.append("tc qdisc add dev %s parent 1:10 handle 10: sfq perturb 10" % (self.host_iface))
- upload_limit_commands.append("tc filter add dev %s parent 1:0 protocol ip u32 match ip sport %d 0xffff flowid 1:10" % (self.host_iface, self.vm_port))
-
- return upload_limit_commands
-
- def get_download_limit_commands(self):
- download_limit_commands = []
- download_limit_commands.append("tc qdisc add dev %s root handle 1: htb default 90" % (self.vm_iface))
- download_limit_commands.append("tc class add dev %s parent 1: classid 1:1 htb rate %dkbps ceil %dkbps" % (self.vm_iface, self.download_limit, self.download_limit))
- download_limit_commands.append("tc class add dev %s parent 1:1 classid 1:10 htb rate %dkbps ceil %dkbps" % (self.vm_iface, self.download_limit, self.download_limit))
- download_limit_commands.append("tc qdisc add dev %s parent 1:10 handle 10: sfq perturb 10" % (self.vm_iface))
- download_limit_commands.append("tc filter add dev %s parent 1:0 protocol ip u32 match ip dst %s/32 flowid 1:10" % (self.vm_iface, self.vm_address))
-
- return download_limit_commands
-
- def get_flush_commands(self):
- flush_commands = []
- flush_commands.append("tc qdisc del dev %s root" % (self.host_iface))
- flush_commands.append("tc qdisc del dev %s root" % (self.vm_iface))
-
- return flush_commands
-
-
-def print_commands(commands, header):
- print "\n\t== %s ==\n" % (header)
-
- for c in commands:
- print c
-
-def main():
-
- """
- Test case
- """
-
- tc = TrafficControl("openvz")
- tc.config("141.85.224.201", 22, "eth1",
- "172.16.10.1", 22, "venet0")
- tc.set_upload_limit(512)
- tc.set_download_limit(256)
-
- upload_limit_commands = tc.get_upload_limit_commands()
- download_limit_commands = tc.get_download_limit_commands()
- flush_commands = tc.get_flush_commands()
-
- print_commands(upload_limit_commands, "upload limit commands")
- print_commands(download_limit_commands, "download limit commands")
- print_commands(flush_commands, "flush commands")
-
-if __name__ == "__main__":
- sys.exit(main())