diff --git a/func/check.py b/func/check.py index 02e27b5f01f952849310e5e82eb987ec0b470d7a..280b2990056eaceeb22efc55235d9aa36ded193d 100644 --- a/func/check.py +++ b/func/check.py @@ -125,4 +125,77 @@ def init_remove_oldrepo(): fdst.write(repo+'\n'+backup_comment+content) fdst.close() fsrc.close() - os.remove(path_file) \ No newline at end of file + os.remove(path_file) + + +#初始化repo文件 +def initRepoFile(baseurl): + os_version_ret = platform.dist() + version = os_version_ret[1].split('.',-1) + reposdir = '/etc/yum.repos.d/' + h = 0 + if re.match('file:',baseurl): + str0, path = baseurl.split('://',1) + path = '/' + path.strip('/') + '/' + else: + h = 1 + if re.fullmatch('8',version[0]): + path_appstream = baseurl+'/AppStream' + path_baseos = baseurl+'/BaseOS' + path_310 = baseurl+'/kernel-3.10' + path_418 = baseurl+'/kernel-4.18' + path_510 = baseurl+'/kernel-5.10' + + repostr_uos = '''[UniontechOS-AppStream]\nname = UniontechOS AppStream\nbaseurl = '''+path_appstream.strip('\n')+'''\nenabled = 1\ngpgcheck = 0\n\n[UniontechOS-BaseOS]\nname = UniontechOS BaseOS\nbaseurl = '''+path_baseos.strip('\n')+'''\nenabled = 1\ngpgcheck = 0\n\n[UniontechOS-kernel-4.18.0]\nname = UniontechOS Kernel-4.18.0\nbaseurl = '''+path_418.strip('\n')+'''\nenabled = 0\ngpgcheck = 0\nskip_if_unavailable = 1\n\n[UniontechOS-kernel-5.10.0]\nname = UniontechOS Kernel-5.10.0\nbaseurl = '''+path_510.strip('\n')+'''\nenabled = 0\ngpgcheck = 0\nskip_if_unavailable = 1\n\n +''' + else: + path_310 = baseurl+'/kernel-3.10' + repostr_uos = '''[UniontechOS-AppStream]\nname = UniontechOS AppStream\nbaseurl = '''+baseurl.strip('\n')+'''\nenabled = 1\ngpgcheck = 0\n\n[UniontechOS-kernel-3.10.0]\nname = UniontechOS Kernel-3.10.0\nbaseurl = '''+path_310.strip('\n')+'''\nenabled = 0\ngpgcheck = 0\nskip_if_unavailable = 1\n + ''' + repofile = os.path.join(reposdir, 'switch-to-uos.repo') + with open(repofile,'w') as f_repo: + f_repo.write(repostr_uos) + f_repo.close() + + +#检测repo文件创建缓存 +def checkRepoMakeCache(): + os.system('yum clean all') + os.system('yum makecache') + os_version_ret = platform.dist() + version = os_version_ret[1].split('.',-1) + ret = os.path.exists('/var/cache/dnf/UniontechOS-AppStream.solv') + if ret: + ret = os.path.exists('/var/cache/dnf/UniontechOS-BaseOS.solv') + if ret or re.fullmatch('7',version[0]): + return 0 + else: + return 1 + else: + if re.fullmatch('7',version[0]): + ret = os.path.exists('/var/cache/yum/x86_64/7/UniontechOS-AppStream/repomd.xml') + if ret: + return 0 + return 1 + + +#检测repo +def check_repo(data_j): + uos_sysmig_conf = json.loads(getSysMigConf()) + AGENT_IP = json.loads(uos_sysmig_conf).get('agentip').strip()[1:-1] + baseurl = json.loads(data_j).get('repo_pwd') + keylist = None + valuelist = None + data = None + init_remove_oldrepo() + initRepoFile(baseurl) + state = checkRepoMakeCache() + + if state == 0: + keylist = ['ip','res','data'] + valuelist = [AGENT_IP,state,'连接成功'] + else: + data = '下载失败,请检查您的软件源' + keylist = ['ip','res','error'] + valuelist = [AGENT_IP,state,data] + return list_to_json(keylist,valuelist) \ No newline at end of file diff --git a/migration-tools-client.py b/migration-tools-client.py index c3f899c19fb272c2bbd9b1ef5f4116e774e3231e..7926bdee58325dace8b51043b572f541dde3c673 100644 --- a/migration-tools-client.py +++ b/migration-tools-client.py @@ -11,6 +11,7 @@ mods = { 'check_storage': check.check_storage, 'check_os': check.check_os, 'check_user': check.check_user, + 'check_repo': check.check_repo, } def check_methods(): @@ -44,6 +45,13 @@ def mt_check_user(): return Response(mod, content_type='application/json') +@app.route('/check_repo', methods=['GEt', 'POST']) +def mt_check_repo(): + mod = check_methods() + if mod: + return Response(mod, content_type='application/json') + + if __name__ == '__main__': app.config["JSON_AS_ASCII"] = False uos_sysmig_conf = json.loads(getSysMigConf()) diff --git a/templates/MT_kernel.html b/templates/MT_kernel.html new file mode 100755 index 0000000000000000000000000000000000000000..ed10a4de49ea53803b5d63c10908ebac87ade926 --- /dev/null +++ b/templates/MT_kernel.html @@ -0,0 +1,90 @@ + + + + + + + 管理首页 | 统信迁移工具 + + + + + + + +
+ +
+ + + + + + +
+

当前系统版本内核为: 5.10.29-amd64

+
+ +
+
+ +
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ + +
+ +
+
+ + + + + + + + + + + + + diff --git a/templates/MT_repo.html b/templates/MT_repo.html index b4d331c1777b7b161f093934bd1fe1bbd893c841..11b5e6cc785e4833d66925da4c5bca83b5c7dc96 100755 --- a/templates/MT_repo.html +++ b/templates/MT_repo.html @@ -42,6 +42,17 @@ +

例如:

+

1.本地仓库

+

file:///mnt/iso/AppStream

+

file:///mnt/iso/BaseOS

+

file:///mnt/iso/Kernel-4.18

+

请输入:file:///mnt/iso

+

1.在线仓库

+

http://0.0.0.0/iso/AppStream

+

http://0.0.0.0/iso/BaseOS

+

http://0.0.0.0/iso/Kernel-4.18

+

请输入:http://0.0.0.0/iso

@@ -49,6 +60,7 @@

+ @@ -69,12 +81,48 @@ $("#loading").hide();   } - function close_tool() { + function save() { + document.getElementById("repo2").style.display = "none" + document.getElementById("check_repo").setAttribute("disabled", true); + document.getElementById("check_repo").style.opacity = "0.2" + var check_repo_data_json={"mod":"check_repo"}; + check_repo_data_json.repo_pwd = document.getElementById("repo_pwd").value; + check_repo_data_json.ip = "tasks" + document.getElementById("repo1").style.display = "" + $.ajax({ + async:true, + type: 'post', + dataType: 'json', + url: 'MT_check_repo', + data: $.toJSON(check_repo_data_json), + success: function(res) { + res=$.evalJSON(res); + if (res.res == 1) { + document.getElementById("repo1").style.display = "none" + document.getElementById("check_repo").removeAttribute("disabled"); + document.getElementById("check_repo").style.opacity = "1" + document.getElementById("repo2").style.display = "" + document.getElementById("repo_info").innerHTML = res.error + } + } + }); //ajax end + } + + function close_tool() { alert("确定关闭迁移软件吗"); - } + } + $("#repo_pwd").bind("input propertychange",function(event){ + if ($("#repo_pwd").val() != "") { + document.getElementById('check_repo').style.opacity = 1 + document.getElementById('check_repo').removeAttribute("disabled"); + } else { + document.getElementById('check_id').style.opacity = 0.2 + document.getElementById('check_id').setAttribute("disabled", true); + } + }); - \ No newline at end of file + diff --git a/views/migration.py b/views/migration.py index f2f4abb00dbf2102ec4766b975612120d09e9d69..20157c9133188e592f361dd69f1801a711306916 100644 --- a/views/migration.py +++ b/views/migration.py @@ -1,4 +1,5 @@ from flask import * +import os from client_requests import * from func.utils import *