websoft9/cli/model.py
2021-10-12 19:26:24 +08:00

113 lines
No EOL
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os, io, sys, platform, psutil, json, secrets, string
from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Type, Union
import urllib.request
class SmoothUrl:
''' Get the best smooth url for Git or Download'''
def __init__(self):
pass
def res(self, url_list: Tuple):
for item in url_list:
try:
urllib.request.urlopen(item,timeout=3).read()
print("Smooth URL is: " + item)
return item
except:
continue
print("Necessary resource URL can not reachable, system exit!")
sys.exit(0)
class GitOp:
'''Git operation'''
def __init__(self):
pass
def gitClone(self, cmd: str):
'''git clone'''
try:
print("Command is "+cmd)
os.system(cmd)
except:
print("Git clone failed, try again and check your URL can be accessed")
sys.exit(0)
class FileOp:
'''File operation'''
def __init__(self, path: str):
self.path = path
def printFile(self):
'''output file content'''
with open(self.path,newline='') as file:
print(file.read())
def fileToString(self):
'''read file content'''
with open(self.path,'r') as file:
return file.read()
def stringToFile(self, content: Optional[str] = ""):
'''string content to file'''
with open(self.path,'w+') as file:
return file.write(content)
file.close()
def fileToDict(self, remark: Optional[str] = "#", separate: Optional[str] = "="):
''' convert file to Json '''
dict = {}
with open(self.path) as fh:
for line in fh:
if line == "\n":
continue
if line.find(remark) != 0:
item, value = line.strip().split(separate, -1)
dict[item] = value
else:
continue
fh.close()
return dict
class NetOp:
'''Network and port manage'''
def __init__(self):
pass
def checkPort(self, port: int):
'''check the target port's status'''
search_key = "port="+str(port)
if str(psutil.net_connections()).find(search_key) != -1:
print(str(port)+" is used")
return False
else:
return True
class SecurityOp:
'''Password and security operation'''
def __int__(self):
pass
def randomPass(self, length: Optional[int] = 16):
'''set strong password'''
alphabet = string.ascii_letters + string.digits
while True:
password = ''.join(secrets.choice(alphabet) for i in range(length))
if (any(c.islower() for c in password)
and any(c.isupper() for c in password)
and sum(c.isdigit() for c in password) >= 3):
break
return password