PDA

Просмотр полной версии : [Plugin] Process Killer (Linux)



Пельмень
10.09.2014, 19:47
День добрый, форумчане, написал, возможно для кого-то и бесполезный плагин.
Имеет одну функцию kill_proc (procname[]), которая убивает процесс с именем procname, работает только на linux, т.е хостер в основном не предоставляет доступ к консоли, однако, можно поубивать процессы при запуске сервера, root процессы не убивает, планирую в скором времени изучить баги ядер linux, на получение рут доступа, и доработать плагин.
Пока выставляю его в таком виде.
Плагин написан на Си (Не на c++).
Для компиляции использовал clang, также можете использовать любой другой компилятор, мануал по компиляции плагина есть в README. Линк оставлю ниже.

Процессы убиваются через SIGKILL, позже введу остальные, например SIGTERM!

Инклюд я создавать не стал, по-этому, в моде впишите native kill_proc (procname[]); и используйте на здоровье.

Пример использования:


native kill_proc (procname[]);

public OnGameModeInit () {
kill_proc ("samp03svr"); //Убиваем сервер - , -
return 1;
}

Автор Пельмень. Распространение на иные порталы категорически запрещено!
Компилировал на i686, для x86_64 придётся компилировать самому!

Ссылки:
Readme.md (https://github.com/Debug-/process_killer/blob/master/README.md)
process_killer.so (https://github.com/Debug-/process_killer/blob/master/process_killer.so)
Репозиторий (https://github.com/Debug-/process_killer)

Daniel_Cortez
10.09.2014, 20:09
Для чего можно использовать этот плагин? Нет, не что он делает, а для чего он может оказаться полезен?
"clang" пишется строчными буквами, даже не с заглавной.
Вместо того, чтобы проверять root-права при каждом вызове kill_proc, можно сделать проверку всего 1 раз при загрузке плагина (функция Load) и, если требуемых прав нет, вернуть 0, чтобы прервать загрузку плагина.
You really have to learn English, not Japanese... (https://github.com/Debug-/process_killer/blob/master/README.md)

Пельмень
10.09.2014, 20:20
1. Фактически плагин бесполезен, сейчас, для кого-то может и нет. Если получиться добыть багу на получение рут прав, можно будет заказывать хостинг на минимальное кол-во слотов и убивать машинку, на которой стоит сервер.
2. По-моему не суть :) Всегда так пишу. Исправим
3. Рут права получить человеческим способом не получится, скорее всего, функцию system плагин может не потянуть. По-этому придётся писать костыль, плагин будет гораздо интереснее, если можно будет получать рут без пароля, и убивать любые процессы, или-же использовать его в собственных целях :)
4. Что есть, то есть :mosking:

- - - Добавлено - - -

Сейчас, кстати, нет проверки на root права, здесь голенькая функция для убивания не рутовых процессов

$continue$
10.09.2014, 20:39
1. Фактически плагин бесполезен, сейчас, для кого-то может и нет. Если получиться добыть багу на получение рут прав, можно будет заказывать хостинг на минимальное кол-во слотов и убивать машинку, на которой стоит сервер.
2. По-моему не суть :) Всегда так пишу. Исправим
3. Рут права получить человеческим способом не получится, скорее всего, функцию system плагин может не потянуть. По-этому придётся писать костыль, плагин будет гораздо интереснее, если можно будет получать рут без пароля, и убивать любые процессы, или-же использовать его в собственных целях :)
4. Что есть, то есть :mosking:

- - - Добавлено - - -

Сейчас, кстати, нет проверки на root права, здесь голенькая функция для убивания не рутовых процессов

Если бы доработать для полезного, например на MySQL при убийстве процесса не вызывается OnGameModeInit а следовательно и MySQL не схоронят, подумай над этим ;)

Пельмень
10.09.2014, 20:40
Если бы доработать для полезного, например на MySQL при убийстве процесса не вызывается OnGameModeInit а следовательно и MySQL не схоронят, подумай над этим ;)

Можно убивать процесс при прогрузке плагина, это ещё будет до OnGameModeInit ;)