#s.recv_msg()
# test config
- config_data = [{CLIENT:"tribler", FILE:"Tribler/Tools/cmdline.py",
+ """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)
+ start_data = {CLIENT: TRANSMISSION, PORT:10150,
+ TORRENT: "/home/adriana/p2p/p2p-meta/scrubs.torrent",
+ DL_DIR: "/home/adriana/p2p/p2p-dld/transmission",
+ LOG_DIR: "/home/adriana/p2p/p2p-log/transmission",
+ OUT_FILE: "scrubs.out",
+ LOG_FILE: "transmission-scrubs.log",
+
+ }
+ response = s.send_command(START_MSG, start_data)
print response
--- /dev/null
+#!/usr/bin/env python
+
+import sys, os, socket
+import pickle
+from daemon import Daemon
+from Util import *
+from BitTorrentClientRun import *
+
+PORT = 10001
+HOST = "127.0.0.1"
+
+BUFFER_SIZE = 4096
+
+states = {} # keeps track of what kind of message was previously receveid on a socket.
+
+WAITING_MSG_TYPE = 0
+WAITING_START_DATA = 3
+WAITING_STOP_DATA = 4
+WAITING_STATUS_DATA = 5
+
+
+
+def recv_pickled_data(clientsock):
+# while chunk:
+# chunk = clientsock.recv(BUFFER_SIZE)
+# data += chunk
+ data = clientsock.recv(BUFFER_SIZE)
+
+ dd = pickle.loads(data)
+ return dd
+
+#TODO
+
+def start_bt_client(bt_client_data):
+
+ if bt_client_data[CLIENT] == TRANSMISSION:
+ btcr = BitTorrentClientRun("/usr/bin/transmissioncli",
+ "$base_path --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file",
+ "TR_DEBUG=2 $base_path/cli/transmissioncli --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
+ btcr.config_run(bt_client_data[DL_DIR], bt_client_data[LOG_DIR],
+ bt_client_data[OUT_FILE], bt_client_data[LOG_DIR],
+ bt_client_data[LOG_FILE], bt_client_data[PORT],
+ bt_client_data[TORRENT])
+
+ btcr.start()
+ btcr.run_client(btcr.simple_run_command)
+
+ """Simple test
+
+ btcr = BitTorrentClientRun("/usr/bin/transmissioncli",
+ "$base_path --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file",
+ "TR_DEBUG=2 $base_path/cli/transmissioncli --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
+
+ btcr.config_run("/home/adriana/p2p/p2p-dld/transmission",
+ "/home/adriana/p2p/p2p-log/transmission",
+ "scrubs.out", "/home/adriana/p2p/",
+ "transmission-scrubs.log", 10150,
+ "/home/adriana/p2p/p2p-meta/scrubs.torrent")
+
+ btcr.start()
+ btcr.run_client(btcr.simple_run_command)
+ """
+def doServer():
+ #os.spawnvp(os.P_NOWAIT,"/usr/bin/transmission",[])
+
+ serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ serversocket.bind((HOST, PORT));
+ serversocket.listen(10) #max 10 requests
+
+ while(1):
+ print "inainte de accept"
+ (clientsock, address) = serversocket.accept();
+ print "aici"
+ if clientsock not in states:
+ states[clientsock] = WAITING_MSG_TYPE;
+
+ if states[clientsock] == WAITING_MSG_TYPE:
+ print states[clientsock]
+ msg = clientsock.recv(BUFFER_SIZE)
+
+ msg_types = {
+ START_MSG: WAITING_START_DATA,
+ STOP_MSG: WAITING_STOP_DATA,
+ STATUS_MSG: WAITING_STATUS_DATA
+ }
+ if msg not in msg_types:
+ clientsock.send(ERROR_MSG +"wrong message type " + msg)
+ else:
+ states[clientsock] = msg_types[msg]
+ clientsock.send(ACK_MSG)
+ #else:
+ print states[clientsock]
+
+ if states[clientsock] == WAITING_START_DATA:
+ bt_client_data = recv_pickled_data(clientsock)
+ start_bt_client(bt_client_data)
+
+ elif states[clientsock] == WAITING_STOP_DATA:
+ config = recv_pickled_data(clientsock)
+
+ elif states[clientsock] == WAITING_STATUS_DATA:
+ config = recv_pickled_data(clientsock)
+
+ states[clientsock] = WAITING_MSG_TYPE
+
+
+ # clientsock.recv(BUFFER_SIZE)
+ # recv_pickled_data(clientsock)
+ clientsock.send(ACK_MSG)
+ print "am trimis ack"
+ clientsock.close()
+
+if __name__ == "__main__":
+ doServer()
+