Skip to content

Commit 38f7159

Browse files
committed
feat: import ssfx submodule
1 parent 834cb75 commit 38f7159

File tree

10 files changed

+61
-5
lines changed

10 files changed

+61
-5
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,3 +65,4 @@ docs/.vitepress/cache
6565
docs/.vitepress/.temp
6666
docs/.vitepress/dist
6767
node_modules
68+
sfx

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@
44
[submodule "src/catsh"]
55
path = src/catsh
66
url = https://github.com/rurioss/catsh
7+
[submodule "src/ssfx"]
8+
path = src/ssfx
9+
url = https://github.com/rurioss/ssfx

Makefile

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ CHECKER = clang-tidy
4848
CHECKER_FLAGS = --checks=*,-clang-analyzer-security.insecureAPI.strcpy,-altera-unroll-loops,-cert-err33-c,-concurrency-mt-unsafe,-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,-readability-function-cognitive-complexity,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-bugprone-easily-swappable-parameters,-cert-err34-c,-misc-include-cleaner,-readability-identifier-length,-bugprone-signal-handler,-cert-msc54-cpp,-cert-sig30-c,-altera-id-dependent-backward-branch,-bugprone-suspicious-realloc-usage,-hicpp-signed-bitwise,-clang-analyzer-security.insecureAPI.UncheckedReturn
4949
-include config.mk
5050
# Target.
51-
objects = easteregg/daijin.o catsh/src/catsh.o net.o checkdep.o dockerhub.o exec.o info.o lxcmirror.o shared.o signal.o archive.o subcommand.o main.o ruri/src/easteregg/action.o ruri/src/easteregg/nekofeng.o ruri/src/easteregg/layer.o ruri/src/easteregg/typewriter.o ruri/src/caplist.o ruri/src/chroot.o ruri/src/cprintf.o ruri/src/info.o ruri/src/rurienv.o ruri/src/rurifetch.o ruri/src/seccomp.o ruri/src/signal.o ruri/src/umount.o ruri/src/unshare.o ruri/src/rootless.o ruri/src/mount.o ruri/src/k2v.o ruri/src/elf-magic.o ruri/src/config.o ruri/src/cgroup.o ruri/src/passwd.o ruri/src/ps.o ruri/src/ruri.o
51+
objects = ssfx/ssfx.o easteregg/daijin.o catsh/src/catsh.o net.o checkdep.o dockerhub.o exec.o info.o lxcmirror.o shared.o signal.o archive.o subcommand.o main.o ruri/src/easteregg/action.o ruri/src/easteregg/nekofeng.o ruri/src/easteregg/layer.o ruri/src/easteregg/typewriter.o ruri/src/caplist.o ruri/src/chroot.o ruri/src/cprintf.o ruri/src/info.o ruri/src/rurienv.o ruri/src/rurifetch.o ruri/src/seccomp.o ruri/src/signal.o ruri/src/umount.o ruri/src/unshare.o ruri/src/rootless.o ruri/src/mount.o ruri/src/k2v.o ruri/src/elf-magic.o ruri/src/config.o ruri/src/cgroup.o ruri/src/passwd.o ruri/src/ps.o ruri/src/ruri.o
5252
O = out
5353
BIN_TARGET = rurima
5454
.NOTPARALLEL:
@@ -75,6 +75,7 @@ build_dir:
7575
@mkdir -p $(O)/ruri/src
7676
@mkdir -p $(O)/ruri/src/easteregg
7777
@mkdir -p $(O)/catsh/src
78+
@mkdir -p $(O)/ssfx
7879
$(objects) :%.o:src/%.c $(build_dir)
7980
@cd $(O)
8081
@$(CC) $(CFLAGS) -c ../$< -o $@
@@ -103,4 +104,8 @@ help :
103104
@echo " make clean clean"
104105
@echo "Only for developers:"
105106
@echo " make check run clang-tidy"
106-
@echo " make format format code"
107+
@echo " make format format code"
108+
up :
109+
git submodule update --init --recursive
110+
git submodule foreach git pull origin main
111+
git submodule foreach git checkout main

build.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,6 +665,12 @@ void build()
665665
for (int i = 0; easteregg_rma_files && easteregg_rma_files[i] != NULL; i++) {
666666
add_args(&files, easteregg_rma_files[i]);
667667
}
668+
char ssfx_src[PATH_MAX];
669+
sprintf(ssfx_src, "%s/ssfx", SRC_DIR);
670+
char **ssfx_files = find_file(ssfx_src, ".c", (char *[]){ "main.c", NULL });
671+
for (int i = 0; ssfx_files && ssfx_files[i] != NULL; i++) {
672+
add_args(&files, ssfx_files[i]);
673+
}
668674
compile_files_parallel(files, JOBS);
669675
free_args(easteregg_files);
670676
free_args(easteregg_rma_files);

src/catsh

Submodule catsh updated 1 file

src/include/rurima.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
#include "../ruri/src/include/ruri.h"
7070
#include "../catsh/src/include/catsh.h"
7171
#include "../easteregg/daijin.h"
72+
#include "../ssfx/include/ssfx.h"
7273
struct RURIMA_CONFIG {
7374
char *_Nonnull docker_mirror;
7475
char *_Nonnull lxc_mirror;
@@ -201,4 +202,5 @@ void rurima_ota(void);
201202
void rurima_run(int argc, char **_Nonnull argv);
202203
void rurima_netns_wrapper(int argc, char **argv);
203204
void rurima_load_rootfs(int argc, char **argv);
204-
void rurima_docker_print_config_from_json(const char *_Nonnull config, const char *_Nonnull savedir);
205+
void rurima_docker_print_config_from_json(const char *_Nonnull config, const char *_Nonnull savedir);
206+
void rurima_sfx(int argc, char **argv);

src/main.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,10 @@ int main(int argc, char **argv)
279279
rurima_QwQ();
280280
return 0;
281281
}
282+
if (strcmp(argv[i], "sfx") == 0) {
283+
rurima_sfx(argc - i - 1, &argv[i + 1]);
284+
return 0;
285+
}
282286
show_help();
283287
rurima_error("{red}Invalid subcommand `%s`!\n", argv[i]);
284288
return 1;

src/ruri

Submodule ruri updated from 442f516 to 2e92fa6

src/ssfx

Submodule ssfx added at 2c58626

src/subcommand.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,4 +869,38 @@ void rurima_load_rootfs(int argc, char **argv)
869869
rurima_check_dir_deny_list(tmp_dir);
870870
cth_exec_command((char *[]){ "rm", "-rf", tmp_dir, NULL });
871871
exit(0);
872+
}
873+
void rurima_sfx(int argc, char **_Nonnull argv)
874+
{
875+
//
876+
if (self_is_valid_ssfx_master()) {
877+
rurima_log("{base}This is a valid rurima sfx master executable.\n");
878+
} else if (self_is_valid_ssfx_pack()) {
879+
rurima_log("{base}This is a valid rurima sfx packed executable.\n");
880+
} else if (self_is_valid_ssfx_other()) {
881+
rurima_log("{base}This is a valid rurima sfx other executable.\n");
882+
} else {
883+
rurima_log("{base}This is not a valid rurima sfx executable.\n");
884+
}
885+
cprintf("{red}Warning: rurima sfx feature is in development, do not use it anyway!\n");
886+
//
887+
if (argc == 0) {
888+
rurima_error("{red}No subcommand specified!\n");
889+
}
890+
if (strcmp(argv[0], "pack-self") == 0) {
891+
if (argc < 3) {
892+
rurima_error("{red}Usage: rurima sfx pack-self <output_file> <input_dir>\n");
893+
}
894+
char *tar_exe_path = argv[1];
895+
char *output_file = argv[2];
896+
rurima_check_dir_deny_list(output_file);
897+
pack_ssfx_master(tar_exe_path, output_file);
898+
cprintf("{yellow}Warning: this feature is only for developers!\n");
899+
cprintf("{yellow}Warning: make sure that tar and rurima executable are compatible with target system!\n");
900+
cprintf("{yellow}Warning: make sure that tar and rurima executable are statically linked!\n");
901+
exit(0);
902+
}
903+
if (!self_is_valid_ssfx_master()) {
904+
rurima_error("{red}This executable is not a valid rurima sfx master!\n");
905+
}
872906
}

0 commit comments

Comments
 (0)