Пример #1
0
 def file_show(self, show):
     client_show = "\033[32;1m---client will show file list---\033[32;1m"
     log_models(self.login_user, client_show)
     if self.login_user:
         file_abs_path = "%s/%s" % (settings.USER_HOME, self.login_user)
         file_list = json.dumps(os.listdir(file_abs_path))
         self.request.send(file_list)
Пример #2
0
 def user_auth(self, data):  # 认证函数
     auth_info = json.loads(data[1])
     if auth_info["username"] in settings.USER_ACCOUNT:  # 判断是否是有效用户
         if auth_info["password"] == settings.USER_ACCOUNT[auth_info["username"]]["password"]:  # 判断密码是否相同
             response_code = "200"
             self.login_user = auth_info["username"]  # 定义全局变量,方便获取
             log_models(self.login_user, "User is Login.....")
         else:
             response_code = "401"
     else:
         response_code = "404"
     response_str = "response|%s|%s" % (response_code, self.response_code_list[response_code])  # 拼接server发送信息
     self.request.send(response_str)
     return response_code
Пример #3
0
 def file_get(self, user_data):
     print ("\033[32;1m---client will get  file----\033[0m")
     if self.login_user:  # 判断用户是否登录
         filename_with_path = json.loads(user_data[1])  # 获取文件名
         file_abs_path = "%s/%s/%s" % (settings.USER_HOME, self.login_user, filename_with_path)  # 获取文件的路径
         log_models(self.login_user, file_abs_path)
         print file_abs_path
         if os.path.isfile(file_abs_path):  # 判断文件是否存在
             file_md5 = self.hashfile(file_abs_path)
             print file_md5
             file_size = os.path.getsize(file_abs_path)  # 获取文件大小
             response_msg = "response|300|%s|%s" % (file_size, file_md5)
             self.request.send(response_msg)  # 发送确认信息
             client_response = self.request.recv(1024).split("|")
             print "\033[34;1m%s\033[0m" % client_response
             if client_response[1] == "301":  # 客户端已经准备接收文件
                 sent_size = 0
                 f = open(file_abs_path, "rb")
                 t_start = time.time()
                 while file_size != sent_size:
                     data = f.read(4096)
                     self.request.send(data)
                     sent_size += len(data)
                     # print ("send:",file_size,sent_size)
                 else:
                     t_cost = time.time() - t_start
                     cost_time = "----successfully sent file to client file transfer time:%s ---" % t_cost
                     log_models(self.login_user, cost_time)
         else:
             response_msg = "response|403|n/a|n/a"
             self.request.send(response_msg)
             log_models(self.login_user, "request invalid file name")
Пример #4
0
    def file_push(self, user_data):  # 上传方法
        client_want = "\033[32;1m---client will push  file----\033[0m"
        log_models(self.login_user, client_want)
        if self.login_user:  # 判断用户是否登录
            file_name = json.loads(user_data[1])  # 获取文件名
            print file_name
            file_abs_path = "%s/%s/%s" % (settings.USER_HOME, self.login_user, file_name)  # 获取文件的路径
            self.request.send("303")
            file_size = self.request.recv(1024)
            print file_size
            total_file_size = int(file_size)  # 取出文件大小
            self.request.send("do it")
            received_size = 0
            local_file_obj = open(file_abs_path, "wb")  # 打开文件
            while total_file_size != received_size:  # 循环接收文件
                data = self.request.recv(4096)
                received_size += len(data)
                local_file_obj.write(data)
                print ("recv size:", total_file_size, received_size)

            else:
                update_msg = "\033[32;1m----file update finished-----\033[0m"
                log_models(self.login_user, update_msg)
                local_file_obj.close()