From 774b01e717876ea3e5259e2eeefb56ca51600964 Mon Sep 17 00:00:00 2001 From: Heng Guo <2085471348@qq.com> Date: Sat, 2 Sep 2023 17:57:13 +0800 Subject: [PATCH 1/4] Add feature os_fedora, and add comments to os --- chsrc.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- chsrc.h | 34 ++++++++++++++++++++++------- 2 files changed, 88 insertions(+), 14 deletions(-) diff --git a/chsrc.c b/chsrc.c index 94ef999..6fed5ee 100644 --- a/chsrc.c +++ b/chsrc.c @@ -556,7 +556,9 @@ pl_julia_setsrc (char* option) - +/** + * ubuntu不同架构下的换源是不一样的,这个针对x86架构 + */ void os_ubuntu_setsrc (char* option) { @@ -579,12 +581,16 @@ os_ubuntu_setsrc (char* option) system(cmd); free(cmd); - char* rm = "rm -rf /etc/apt/source.list.bak"; - system(rm); + // char* rm = "rm -rf /etc/apt/source.list.bak"; + // system(rm); xy_info ("chsrc: 为 ubuntu 命令换源"); xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } +/** + * Debian Buster 以上版本默认支持 HTTPS 源。如果遇到无法拉取 HTTPS 源的情况,请先使用 HTTP 源并安装 + * sudo apt install apt-transport-https ca-certificates + */ void os_debian_setsrc (char* option) { @@ -607,13 +613,62 @@ os_debian_setsrc (char* option) system(cmd); free(cmd); - char* rm = "rm -rf /etc/apt/source.list.bak"; - system(rm); + // char* rm = "rm -rf /etc/apt/source.list.bak"; + // system(rm); xy_info ("chsrc: 为 ubuntu 命令换源"); xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } +/** + * fedora29版本及以下暂不支持 + */ +void +os_fedora_setsrc (char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_fedora_sources[selected].mirror->abbr; + const char* source_url = os_fedora_sources[selected].url; + char* backup = "cp -rf /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/fedora.repo.bak"; + system(backup); + char* backup = "cp -rf /etc/yum.repos.d/fedora-updates.repo /etc/yum.repos.d/fedora-updates.repo.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名:1. /etc/yum.repos.d/fedora.repo.bak"); + xy_info ("chsrc: 备份文件名:2. /etc/yum.repos.d/fedora-updates.repo.bak"); + + char* cmd = xy_strjoin(3, "sed -E \'s@(^[^#]* .*)http[:|\\.|\\/|a-z|A-Z]*\\/debian\\/@\\1", + source_url, + "@\'< /etc/apt/sources.list.bak | cat > /etc/apt/sources.list"); + char* cmd = xy_strjoin(9, "sed -e 's|^metalink=|#metalink=|g' ", + "-e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=", + source_url, + "|g' ", + "-i.bak ", + "/etc/yum.repos.d/fedora.repo ", + "/etc/yum.repos.d/fedora-modular.repo ", + "/etc/yum.repos.d/fedora-updates.repo ", + "/etc/yum.repos.d/fedora-updates-modular.repo"); + system(cmd); + free(cmd); + + xy_info("替换文件:/etc/yum.repos.d/fedora.repo"); + xy_info("新增文件:/etc/yum.repos.d/fedora-modular.repo"); + xy_info("替换文件:/etc/yum.repos.d/fedora-updates.repo"); + xy_info("新增文件:/etc/yum.repos.d/fedora-updates-modular.repo"); + + // char* rm = "rm -rf /etc/yum.repos.d/fedora.repo.bak"; + // system(rm); + // char* rm = "rm -rf /etc/yum.repos.d/fedora-updates.repo.bak"; + // system(rm); + + xy_info ("chsrc: 为 ubuntu 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} #define setsrc_fn(func) (const char const*)func #define getsrc_fn(func) (const char const*)func @@ -640,9 +695,10 @@ static const char const *os_ubuntu [] = {"ubuntu", NULL, setsrc_fn(os_ubuntu_setsrc),NULL,sources_ptr(os_ubuntu_sources)}, *os_debian [] = {"debian", NULL, setsrc_fn(os_debian_setsrc),NULL,sources_ptr(os_debian_sources)}, +*os_fedora [] = {"debian", NULL, setsrc_fn(os_fedora_setsrc),NULL,sources_ptr(os_fedora_sources)}, **os_systems[] = { - os_ubuntu,os_debian + os_ubuntu,os_debian,os_fedora }, diff --git a/chsrc.h b/chsrc.h index e43562d..3c1cdc7 100644 --- a/chsrc.h +++ b/chsrc.h @@ -261,14 +261,32 @@ os_ubuntu_sources[] = { * TODO: 1. 源并不完整,且未经测试是否有效 */ os_debian_sources[] = { - {&Ali, "https://mirrors.aliyun.com/ubuntu/"}, - {&Bfsu, "https://mirrors.bfsu.edu.cn/ubuntu/"}, - {&Ustc, "https://mirrors.ustc.edu.cn/ubuntu/"}, - {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/ubuntu/"}, - {&Tencent, "https://mirrors.tencent.com/ubuntu/"}, - {&Netease, "https://mirrors.163.com/ubuntu/"}, - {&Sohu, "https://mirrors.sohu.com/ubuntu/"}, -}; + {&Ali, "https://mirrors.aliyun.com/debian/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/debian/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/debian/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/debian/"}, + {&Tencent, "https://mirrors.tencent.com/debian/"}, + {&Netease, "https://mirrors.163.com/debian/"}, + {&Sohu, "https://mirrors.sohu.com/debian/"}, +}, + + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_fedora_sources[] = { + {&Ali, "https://mirrors.aliyun.com/fedora/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/fedora/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/fedora/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/fedora/"}, + {&Tencent, "https://mirrors.tencent.com/fedora/"}, + {&Netease, "https://mirrors.163.com/fedora/"}, + {&Sohu, "https://mirrors.sohu.com/fedora/"}, +} +; /* 函数签名 */ bool does_the_program_exist (char* check_cmd, char* progname); -- Gitee From fafb5a1f2141ee8f16d538eb8585a45287e2941d Mon Sep 17 00:00:00 2001 From: Heng Guo <2085471348@qq.com> Date: Sat, 2 Sep 2023 20:35:26 +0800 Subject: [PATCH 2/4] Add feature os_kali ;Add header file in help.h;Add os macros in help.h --- chsrc.c | 37 +++++++++++++++++++++++++++++++++++-- chsrc.h | 16 ++++++++++++++++ helper.h | 23 ++++++++++++++++++++++- 3 files changed, 73 insertions(+), 3 deletions(-) diff --git a/chsrc.c b/chsrc.c index 6fed5ee..88589f4 100644 --- a/chsrc.c +++ b/chsrc.c @@ -645,7 +645,7 @@ os_fedora_setsrc (char* option) source_url, "@\'< /etc/apt/sources.list.bak | cat > /etc/apt/sources.list"); char* cmd = xy_strjoin(9, "sed -e 's|^metalink=|#metalink=|g' ", - "-e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=", + "-e 's|^#baseurl=http://download.example/pub/fedora/linux/|baseurl=", source_url, "|g' ", "-i.bak ", @@ -670,6 +670,38 @@ os_fedora_setsrc (char* option) xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } + + + +void +os_kali_setsrc(char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_kali_sources[selected].mirror->abbr; + const char* source_url = os_kali_sources[selected].url; + + char* backup = "cp -rf /etc/apt/sources.list /etc/apt/sources.list.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名: /etc/apt/sources.list.bak"); + + char* cmd = xy_strjoin(3, "sed -i \'s@(^[^#]* .*)http[:|\\.|\\/|a-z|A-Z]*\\/kali\\/@\\1", + source_url, + "@g\'< /etc/apt/sources.list.bak | cat > /etc/apt/sources.list"); + system(cmd); + free(cmd); + + // char* rm = "rm -rf /etc/apt/source.list.bak"; + // system(rm); + + xy_info ("chsrc: 为 ubuntu 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} + #define setsrc_fn(func) (const char const*)func #define getsrc_fn(func) (const char const*)func #define sources_ptr(ptr) (const char const*)ptr @@ -696,9 +728,10 @@ static const char const *os_ubuntu [] = {"ubuntu", NULL, setsrc_fn(os_ubuntu_setsrc),NULL,sources_ptr(os_ubuntu_sources)}, *os_debian [] = {"debian", NULL, setsrc_fn(os_debian_setsrc),NULL,sources_ptr(os_debian_sources)}, *os_fedora [] = {"debian", NULL, setsrc_fn(os_fedora_setsrc),NULL,sources_ptr(os_fedora_sources)}, +*os_kali [] = {"debian", NULL, setsrc_fn(os_kali_setsrc), NULL,sources_ptr(os_kali_sources)}, **os_systems[] = { - os_ubuntu,os_debian,os_fedora + os_ubuntu,os_debian,os_fedora,os_kali }, diff --git a/chsrc.h b/chsrc.h index 3c1cdc7..63ae770 100644 --- a/chsrc.h +++ b/chsrc.h @@ -285,6 +285,22 @@ os_fedora_sources[] = { {&Tencent, "https://mirrors.tencent.com/fedora/"}, {&Netease, "https://mirrors.163.com/fedora/"}, {&Sohu, "https://mirrors.sohu.com/fedora/"}, +}, + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_kali_sources[] = { + {&Ali, "https://mirrors.aliyun.com/kali/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/kali/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/kali/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/kali/"}, + {&Tencent, "https://mirrors.tencent.com/kali/"}, + {&Netease, "https://mirrors.163.com/kali/"}, + {&Sohu, "https://mirrors.sohu.com/kali/"}, } ; diff --git a/helper.h b/helper.h index 1bf7e31..3f83c87 100644 --- a/helper.h +++ b/helper.h @@ -12,6 +12,7 @@ #ifndef XY_H #define XY_H +#include #include #include #include @@ -29,13 +30,33 @@ #include #define xy_useutf8() SetConsoleOutputCP(65001) -#else +#elif defined(__linux__) || defined(__linux) + static bool xy_on_windows = false; static bool xy_on_linux = true; static bool xy_on_macos = false; static bool xy_on_bsds = false; #define xy_useutf8() + +#elif defined(TARGET_OS_MAC) ||defined(__MACOSX__) + + static bool xy_on_windows = false; + static bool xy_on_linux = false; + static bool xy_on_macos = true; + static bool xy_on_bsds = false; + + #define xy_useutf8() + +#elif defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) + + static bool xy_on_windows = false; + static bool xy_on_linux = false; + static bool xy_on_macos = false; + static bool xy_on_bsds = true; + + #define xy_useutf8() + #endif -- Gitee From 40e95d675503e77f6563587c78a65f666c4d3b4b Mon Sep 17 00:00:00 2001 From: Heng Guo <2085471348@qq.com> Date: Sat, 2 Sep 2023 20:47:27 +0800 Subject: [PATCH 3/4] Add feature os_openbsd and correct some bugs in a list of funcs of os --- chsrc.c | 51 +++++++++++++++++++++++++++++++++++++++------------ chsrc.h | 17 +++++++++++++++++ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/chsrc.c b/chsrc.c index 88589f4..4592c24 100644 --- a/chsrc.c +++ b/chsrc.c @@ -616,7 +616,7 @@ os_debian_setsrc (char* option) // char* rm = "rm -rf /etc/apt/source.list.bak"; // system(rm); - xy_info ("chsrc: 为 ubuntu 命令换源"); + xy_info ("chsrc: 为 debian 命令换源"); xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } /** @@ -641,9 +641,7 @@ os_fedora_setsrc (char* option) xy_info ("chsrc: 备份文件名:1. /etc/yum.repos.d/fedora.repo.bak"); xy_info ("chsrc: 备份文件名:2. /etc/yum.repos.d/fedora-updates.repo.bak"); - char* cmd = xy_strjoin(3, "sed -E \'s@(^[^#]* .*)http[:|\\.|\\/|a-z|A-Z]*\\/debian\\/@\\1", - source_url, - "@\'< /etc/apt/sources.list.bak | cat > /etc/apt/sources.list"); + char* cmd = xy_strjoin(9, "sed -e 's|^metalink=|#metalink=|g' ", "-e 's|^#baseurl=http://download.example/pub/fedora/linux/|baseurl=", source_url, @@ -666,7 +664,7 @@ os_fedora_setsrc (char* option) // char* rm = "rm -rf /etc/yum.repos.d/fedora-updates.repo.bak"; // system(rm); - xy_info ("chsrc: 为 ubuntu 命令换源"); + xy_info ("chsrc: 为 fedora 命令换源"); xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } @@ -691,14 +689,42 @@ os_kali_setsrc(char* option) char* cmd = xy_strjoin(3, "sed -i \'s@(^[^#]* .*)http[:|\\.|\\/|a-z|A-Z]*\\/kali\\/@\\1", source_url, - "@g\'< /etc/apt/sources.list.bak | cat > /etc/apt/sources.list"); + "@g\' /etc/apt/sources.list"); system(cmd); free(cmd); // char* rm = "rm -rf /etc/apt/source.list.bak"; // system(rm); - xy_info ("chsrc: 为 ubuntu 命令换源"); + xy_info ("chsrc: 为 kali 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} + + +void +os_openbsd_setsrc(char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_openbsd_sources[selected].mirror->abbr; + const char* source_url = os_openbsd_sources[selected].url; + + char* backup = "cp -rf /etc/installurl /etc/installurl.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名: /etc/installurl.bak"); + + char* cmd = xy_strjoin(3,"echo ",source_url," > /etc/installurl"); + system(cmd); + free(cmd); + + // char* rm = "rm -rf /etc/installurl.bak"; + // system(rm); + + xy_info ("chsrc: 为 openbsd 命令换源"); xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } @@ -725,13 +751,14 @@ static const char const }, -*os_ubuntu [] = {"ubuntu", NULL, setsrc_fn(os_ubuntu_setsrc),NULL,sources_ptr(os_ubuntu_sources)}, -*os_debian [] = {"debian", NULL, setsrc_fn(os_debian_setsrc),NULL,sources_ptr(os_debian_sources)}, -*os_fedora [] = {"debian", NULL, setsrc_fn(os_fedora_setsrc),NULL,sources_ptr(os_fedora_sources)}, -*os_kali [] = {"debian", NULL, setsrc_fn(os_kali_setsrc), NULL,sources_ptr(os_kali_sources)}, +*os_ubuntu [] = {"ubuntu", NULL, setsrc_fn(os_ubuntu_setsrc), NULL,sources_ptr(os_ubuntu_sources)}, +*os_debian [] = {"debian", NULL, setsrc_fn(os_debian_setsrc), NULL,sources_ptr(os_debian_sources)}, +*os_fedora [] = {"fedora", NULL, setsrc_fn(os_fedora_setsrc), NULL,sources_ptr(os_fedora_sources)}, +*os_kali [] = {"kali", NULL, setsrc_fn(os_kali_setsrc), NULL,sources_ptr(os_kali_sources)}, +*os_openbsd [] = {"openbsd", NULL, setsrc_fn(os_openbsd_setsrc), NULL,sources_ptr(os_openbsd_sources)}, **os_systems[] = { - os_ubuntu,os_debian,os_fedora,os_kali + os_ubuntu,os_debian,os_fedora,os_kali,os_openbsd }, diff --git a/chsrc.h b/chsrc.h index 63ae770..2db8d8b 100644 --- a/chsrc.h +++ b/chsrc.h @@ -301,6 +301,23 @@ os_kali_sources[] = { {&Tencent, "https://mirrors.tencent.com/kali/"}, {&Netease, "https://mirrors.163.com/kali/"}, {&Sohu, "https://mirrors.sohu.com/kali/"}, +}, + + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_openbsd_sources[] = { + {&Ali, "https://mirrors.aliyun.com/OpenBSD/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/OpenBSD/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/OpenBSD/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/OpenBSD/"}, + {&Tencent, "https://mirrors.tencent.com/OpenBSD/"}, + {&Netease, "https://mirrors.163.com/OpenBSD/"}, + {&Sohu, "https://mirrors.sohu.com/OpenBSD/"}, } ; -- Gitee From 9d5f00b2beab1fc52fe7cd7af54dbc3f98f7d94b Mon Sep 17 00:00:00 2001 From: Heng Guo <2085471348@qq.com> Date: Sat, 2 Sep 2023 21:05:53 +0800 Subject: [PATCH 4/4] Add feature os_mysys2 --- chsrc.c | 43 +++++++++++++++++++++++++++++++++++++++++-- chsrc.h | 16 ++++++++++++++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/chsrc.c b/chsrc.c index 4592c24..ee5b3a6 100644 --- a/chsrc.c +++ b/chsrc.c @@ -635,7 +635,7 @@ os_fedora_setsrc (char* option) char* backup = "cp -rf /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/fedora.repo.bak"; system(backup); - char* backup = "cp -rf /etc/yum.repos.d/fedora-updates.repo /etc/yum.repos.d/fedora-updates.repo.bak"; + backup = "cp -rf /etc/yum.repos.d/fedora-updates.repo /etc/yum.repos.d/fedora-updates.repo.bak"; system(backup); xy_info ("chsrc: 备份文件名:1. /etc/yum.repos.d/fedora.repo.bak"); @@ -728,6 +728,44 @@ os_openbsd_setsrc(char* option) xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); } + +void +os_mysys2_setsrc(char* option) +{ + int selected = 0; + for (int i=0;iname; + const char* source_abbr = os_mysys2_sources[selected].mirror->abbr; + const char* source_url = os_mysys2_sources[selected].url; + + char* backup = "cp -rf /etc/pacman.d/mirrorlist.mingw32 /etc/pacman.d/mirrorlist.mingw32.bak"; + system(backup); + backup = "cp -rf /etc/pacman.d/mirrorlist.mingw64 /etc/pacman.d/mirrorlist.mingw64.bak"; + system(backup); + backup = "cp -rf /etc/pacman.d/mirrorlist.msys /etc/pacman.d/mirrorlist.msys.bak"; + system(backup); + + xy_info ("chsrc: 备份文件名:1. /etc/pacman.d/mirrorlist.mingw32.bak"); + xy_info ("chsrc: 备份文件名:2. /etc/pacman.d/mirrorlist.mingw64.bak"); + xy_info ("chsrc: 备份文件名:3. /etc/pacman.d/mirrorlist.msys.bak"); + + char* cmd = xy_strjoin(3,"sed -i \"s#https\?://mirror.msys2.org/#",source_url,"#g\" /etc/pacman.d/mirrorlist* "); + system(cmd); + free(cmd); + + // char* rm = "rm -rf /etc/pacman.d/mirrorlist.mingw32.bak"; + // system(rm); + // rm = "rm -rf /etc/pacman.d/mirrorlist.mingw64.bak"; + // system(rm); + // rm = "rm -rf /etc/pacman.d/mirrorlist.msys.bak"; + // system(rm); + + xy_info ("chsrc: 为 mysys2 命令换源"); + xy_success (xy_2strjoin("chsrc: 感谢镜像提供方:", source_name)); +} + #define setsrc_fn(func) (const char const*)func #define getsrc_fn(func) (const char const*)func #define sources_ptr(ptr) (const char const*)ptr @@ -756,9 +794,10 @@ static const char const *os_fedora [] = {"fedora", NULL, setsrc_fn(os_fedora_setsrc), NULL,sources_ptr(os_fedora_sources)}, *os_kali [] = {"kali", NULL, setsrc_fn(os_kali_setsrc), NULL,sources_ptr(os_kali_sources)}, *os_openbsd [] = {"openbsd", NULL, setsrc_fn(os_openbsd_setsrc), NULL,sources_ptr(os_openbsd_sources)}, +*os_mysys2 [] = {"mysys2", NULL, setsrc_fn(os_mysys2_setsrc), NULL,sources_ptr(os_mysys2_sources)}, **os_systems[] = { - os_ubuntu,os_debian,os_fedora,os_kali,os_openbsd + os_ubuntu,os_debian,os_fedora,os_kali,os_openbsd,os_mysys2 }, diff --git a/chsrc.h b/chsrc.h index 2db8d8b..8f67ed5 100644 --- a/chsrc.h +++ b/chsrc.h @@ -318,6 +318,22 @@ os_openbsd_sources[] = { {&Tencent, "https://mirrors.tencent.com/OpenBSD/"}, {&Netease, "https://mirrors.163.com/OpenBSD/"}, {&Sohu, "https://mirrors.sohu.com/OpenBSD/"}, +}, + + +/** + * 2023-09-02 更新 + * + * TODO: 1. 源并不完整,且未经测试是否有效 + */ +os_mysys2_sources[] = { + {&Ali, "https://mirrors.aliyun.com/msys2/"}, + {&Bfsu, "https://mirrors.bfsu.edu.cn/msys2/"}, + {&Ustc, "https://mirrors.ustc.edu.cn/msys2/"}, + {&Tuna, "https://mirrors.tuna.tsinghua.edu.cn/msys2/"}, + {&Tencent, "https://mirrors.tencent.com/msys2/"}, + {&Netease, "https://mirrors.163.com/msys2/"}, + {&Sohu, "https://mirrors.sohu.com/msys2/"}, } ; -- Gitee