Добавлять текст в файл при открытии в редакторе
Вот сценарий: пользователь создает новый файл X.php, скажем, с помощью nano. Пользователь пишет некоторый контент, сохраняет файл (Этап S1), но не выходит из нано. Он снова вносит некоторые изменения и затем выходит из nano после повторного сохранения файла (этап S2).
Вопрос: У меня есть фрагмент кода (триггер), который мне нужно внедрить в каждый php- файл в каталоге. Я могу это сделать. Но в верхнем сценарии, как только я обнаруживаю, что создается новый файл (с использованием inotifywait) (этап S1), я внедряю в него свой код. Однако, поскольку nano никогда не закрывался, таким образом, при следующем сохранении (этап S2) мой введенный код перезаписывается новыми изменениями пользователя. Как я могу избавиться от этой проблемы?
PS: Редактором может быть любой текстовый редактор, и я не знаю редактора, используемого пользователем для создания файла.
2 ответа
Вам нужно изменить процесс инжектора кода, чтобы он действовал всякий раз, когда PHP-файл был изменен или создан, и сделать его достаточно умным, чтобы проверить, есть ли ваш код, и вставить его, если его нет. В противном случае вы уязвимы для следующего сценария:
- Пользователь создает X.php, сохраняет его и выходит из редактора.
- Ваш процесс вставляет ваш код.
- Пользователь редактирует файл, видит ваш код, говорит "WTF?" И удаляет его (и сохраняет файл).
Извините, но редакторы буферизируют процесс редактирования разными способами. Если вы не создадите свой собственный редактор с учетом желаемой архитектуры и не заставите всех использовать этот конкретный редактор, вы будете очень разочарованы и столкнетесь с множеством сложностей, в которых проблема все еще остается.
Обертки в редакторах тоже не помогут. Пока файл открыт логически (в режиме с буферизацией), вы будете обречены на провал.