LINUX.ORG.RU

nanoFTPd


0

0

Продолжая тему приложений написанных на PHP, уровнем сложнее CMS

После веб-сервера, написанного на PHP вниманию общественности предлагается FTP-демон nanoFTPd.

Что он умеет:
* Авторизация пользователей через БД/текстовые файлы
* Поддержка MySQL/PosgreSQL
* Поддержка пассивного режима
* Поддержка динамических IP
* Базовые команды FTP
* Ведение логов

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Ответ на: комментарий от pento

Просто некоторые особо одараённые дурью, маются.

anonymous
()

Ужас! Дело леммингов живёт и смердит! Кто не смог освоить Перл, думают, что с ПХП им повезёт больше... Бедолаги!

anonymous
()
Ответ на: комментарий от a_i_m

>СтОит ли чего? писать WEB-приложения или писать на PHP?

писать на PHP.

>По моему сотни тысяч сайтов написаны на этом языке и вполне себе отлично существуют.

Угу, миллионы мух не могут ошибаться. За одну только объектную модель в php разработчиков языка нужно отправить в биореактор. Если язык не поощряет писать "правильно" - фтопку такой язык. Я понимаю, что можно сделать надстройку и не лепить в один файл html, sql-запросы и php-код. Но имхо, в php-кодеров моск работает как-то особенно и большинство почему-то предпочитают минимально напрягать нейроны. Как результат - <?=$var;?> и другие прелести.

P.S. Сам прямо сейчас имею несчастье писать на php.

anonymous
()
Ответ на: комментарий от a_i_m

>Неужели красноглазики вы не поняли что под каждую задачу свой инструмент!!!

Вы это, не нервируйте так сильно, все будет хорошо =)

Мы это давно поняли, поэтому пых-пых и не используем.

>со многими задачами PHP успешно справляется.

Ну никто с этим не спорит. Personal home page на ПХП делать в самый раз. Но не больше.

anonymous
()

Вы что ВСЕРЬЁЗ считаете, что FTP демон сложнее CMS?

anonymous
()
Ответ на: комментарий от pento

>для какого рода веб-приложений PHP будет плох?

Для всех тех, для которых чтобы обеспечить нормальную поддержку в будущем нужно соорудить систему костылей перед тем, как начать программировать. Например комментарии перед методами вроде

/** * @access private */

И не говорите, что v 5.* уже это умеет. Предыдущий код выкинуть?

Или "конструкторы" вроде

if (is_numeric($arg_)) { $this->Read($arg_); } elseif (is_array($arg_)) { $this->Set($arg_); }

Проход в цикле по списку объектов без копирования объекта (например для изменения объектов в списке) вообще сказочно делается.

Итог: для приложений, которые нужно сопровождать, пхп лучше не использовать, ибо разобраться в костылях сложно уже через неделю :)

anonymous
()
Ответ на: комментарий от anonymous

Сорр, форматирование побилось. Когда на ЛОРе будут теги [code]...[/code]?

anonymous
()
Ответ на: комментарий от anonymous

> По поводу /** * @access private */
А давайте уже забудем про 4-ку?

> Проход в цикле по списку объектов без копирования объекта (например
> для изменения объектов в списке) вообще сказочно делается.
Пример сказачного прохода по списку?

pento ★★★★★
()
Ответ на: комментарий от pento

>А давайте уже забудем про 4-ку?

Угу, а уже написанный код переписать под 5.*?

>Пример сказачного прохода по списку?

Выборка индексов массива, перебор foreach'ем индексов, инициализация временной переменной объектом из массива, полученным по индексу, работа с объектом, unset временной переменной. Красиво?

anonymous
()
Ответ на: комментарий от anonymous

>Выборка индексов массива, перебор foreach'ем индексов, инициализация >временной переменной объектом из массива, полученным по индексу, >работа с объектом, unset временной переменной. Красиво?

брр...ЭТО правда??
ЗЫ Я просто пхп плохо знаю..:)

GlorySmith
()
Ответ на: комментарий от anonymous

>>Неужели красноглазики вы не поняли что под каждую задачу свой инструмент!!!

>Вы это, не нервируйте так сильно, все будет хорошо =)

Да несомненно! :-) Вы тоже близко к сердцу не принимайте ;-)

>Мы это давно поняли, поэтому пых-пых и не используем.

К слову сказать я PHP тоже не использую в своих задачах. Но это не значит что теперь PHP надо обкакивать.

>>со многими задачами PHP успешно справляется.

>Ну никто с этим не спорит. Personal home page на ПХП делать в самый раз. Но не больше.

Ну, как видите, сделано даже чуть больше чем Home Page. Вот Вы лично использовали этот демон? Тестировали на нагрузку? Нашли в нем хотя бы одну дыру? В код хотя бы глянули?

По моему PHP перерос первоначальное свое назначение уже давно. Я знаю несколько вполне серьезных проектов на PHP уровнем гораздо выше чем эти демоны. Рассчитанные на очень приличную нагрузку. Почему-то если-бы новость вышла о перловом или питонном ftpd, то негатива было бы гораздо меньше. Это мода пошла дурацкая... Всякий ламер что научился немного кодить на перле или питоне начинает чувствовать звездную болезнь...

a_i_m
()
Ответ на: комментарий от a_i_m

> Я знаю несколько вполне серьезных проектов на PHP уровнем гораздо выше чем эти демоны. Рассчитанные на очень приличную нагрузку.

Мы тоже хотим знать!

> Это мода пошла дурацкая...

Я не знаю с какой стати она у Вас только сейчас пошла, эта мода, но если Вы посмотрите дискуссии о ПХП на ЛОРе которые велись раньше, намного раньше, Вы может быть поймёте почему тут так не любят ПХП.

valeri_ufo
()

Ебланы, забудьте о пхп4, никто на нём сейчас ничего не делает из нормальных людей. И методы там нормальные и нет никаких копирований объектов.

srg11
()
Ответ на: комментарий от pento

> Пример сказачного прохода по списку?

просто для очистки совести вытянул это чудо и заглянул внутрь. ну, давайте посмотрим, что есть унутре типичного пыхпых-кода:

$fperms = explode(":", $this->get_perms($f)); ... if ($fowner == $uname && $fperms[2] == "x") { return true; } elseif ($fgroup == $ugroup && $fperms[5] == "x") { return true; } elseif ($fperms[8] == "x") { return true; } else { return false; } ...

function get_perms($f) { $mode = fileperms($f); /* Determine permissions */ $owner['read'] = ($mode & 00400) ? 'r' : '-'; $owner['write'] = ($mode & 00200) ? 'w' : '-'; $owner['execute'] = ($mode & 00100) ? 'x' : '-'; $group['read'] = ($mode & 00040) ? 'r' : '-'; $group['write'] = ($mode & 00020) ? 'w' : '-'; $group['execute'] = ($mode & 00010) ? 'x' : '-'; $world['read'] = ($mode & 00004) ? 'r' : '-'; $world['write'] = ($mode & 00002) ? 'w' : '-'; $world['execute'] = ($mode & 00001) ? 'x' : '-'; $permstr = $owner['read'].":".$owner['write'].":".$owner['execute'].&qu ot;:".$group['read'].":".$group['write'].":".$group['ex ecute'].":".$world['read'].": $this->clean(); return $permstr; }

сначала растаскивает целое по массиву со _строчными_ индексами, потом все это нахер пакуется в цепочку буковок и отдается наверх, где обратно распиливается в массив, обращение к элементам которого идет по _числовому_ индексу. дальше я даже и смотреть не стал, так как уверен, что подобных опусов там немерянно.

это именно то, что всегда бросается в глаза при виде любого пыхпых-кода - обилие нетривиальных решений тривиальных задач.

anonymous
()
Ответ на: комментарий от pento

извините, про форматирование забыл, а читать это, даже красиво выровненное, непросто:

$fperms = explode(":", $this->get_perms($f)); ... if ($fowner == $uname && $fperms[2] == "x") { return true; } elseif ($fgroup == $ugroup && $fperms[5] == "x") { return true; } elseif ($fperms[8] == "x") { return true; } else { return false; } ...

function get_perms($f) { $mode = fileperms($f); /* Determine permissions */ $owner['read'] = ($mode & 00400) ? 'r' : '-'; $owner['write'] = ($mode & 00200) ? 'w' : '-'; $owner['execute'] = ($mode & 00100) ? 'x' : '-'; $group['read'] = ($mode & 00040) ? 'r' : '-'; $group['write'] = ($mode & 00020) ? 'w' : '-'; $group['execute'] = ($mode & 00010) ? 'x' : '-'; $world['read'] = ($mode & 00004) ? 'r' : '-'; $world['write'] = ($mode & 00002) ? 'w' : '-'; $world['execute'] = ($mode & 00001) ? 'x' : '-'; $permstr = $owner['read'].":".$owner['write'].":".$owner['execute'].&qu ot;:".$group['read'].":".$group['write'].":".$group['ex ecute'].":".$world['read'].": $this->clean(); return $permstr; }

а вот реализацию пыхпышниками поиска всех возможных перестановок с использованием базы данных я вам все равно не покажу :)

anonymous
()
Ответ на: комментарий от anonymous

попробую, еще раз - не смог удержаться:

   if (! in_array($value, $this->pool)) {
       return array_push($this->pool, $value);
   } else {
       return 2;
   }

вопрос: каким образом "наверху" можно отличить 2, когда мы обломились
от 2, возвращенной array_push()?

варианты ответов:

1) проверив длинну pool
2) по времени выполнения вызова этой функции
3) по звездам
4) а кто сказал, что нас интересует, что эта функция вернула?!!
5) да пошел бы ты на.... всиравно пхп - наше фсйё!!!

anonymous
()
Ответ на: комментарий от anonymous

а вот еще интересный способ удаления элемента массива:

        function remove($rem_value) {
                if (in_array($rem_value, $this->pool)) {
                        $new_pool = array();
                        foreach ($this->pool as $value) {
                                if ($value == $rem_value) continue;
                                $new_pool[] = $value;
                        }

                        $this->pool = $new_pool;

                        return true;
                } else {
                        return false;
                }
        }

anonymous
()
Ответ на: комментарий от a_i_m

>К слову сказать я PHP тоже не использую в своих задачах.

Мне повезло меньше... =(

>Но это не значит что теперь PHP надо обкакивать.

Нет, конечно. Нужно говорить правду =)

>Вот Вы лично использовали этот демон? Тестировали на нагрузку? Нашли в нем хотя бы одну дыру? В код хотя бы глянули?

На все вопросы ответ отрицательный. Надеюсь, к счастью =)

>По моему PHP перерос первоначальное свое назначение уже давно. Я знаю несколько вполне серьезных проектов на PHP уровнем гораздо выше чем эти демоны. Рассчитанные на очень приличную нагрузку.

Вопрос не так в нагрузке, как в предназначении. Сначала был шаблонизатор, тепер - язык общего назначения. То ООП нам не надо, то теперь ООП - наше все. В результате получили непонятно что. Было бы в нем меньше ляпов/неудобств/несовместимых версий/разных стилей/... - намного меньше негатива было бы. (Все имхо, кому хочется конкретики - гугль вам поможет, в нете добра на эту тему навалом)

>Почему-то если-бы новость вышла о перловом или питонном ftpd, то негатива было бы гораздо меньше.

Все правильно, возвращаемся к вопросу о соответствии инструмента задаче

>Это мода пошла дурацкая... Всякий ламер что научился немного кодить на перле или питоне начинает чувствовать звездную болезнь...

Может все-таки стоит в консерватории подправить? (ц)

anonymous
()
Ответ на: комментарий от anonymous

>а вот еще интересный способ удаления элемента массива:

Откуда вы ЭТО откопали? Работаете с индусами? О_о

anonymous
()
Ответ на: комментарий от anonymous

> Откуда вы ЭТО откопали?

это - кусок из nanoftpd. да такие перлы можно увидеть в каждом втором, если не чаще, прожекте

anonymous
()

Вообще, на PHP проблематично сделать что-либо системное, не веб-ориентированное, типа FTP-сервера или ... LDAP-сервера :) - не для того он создан.

именно по этому его и ставят на хостинг, чтобы клиенты интерфейс делали, а не превращали хостинг в мега-сервис где крутится HL-сервер, CS, pvpgn-подобная хня и Lineage2 :). очень многое на перле написано - он удобен для всего, но перл почти нигде не ставят.

а иногда оч. хочется поюзать каналы хостера... для компрессилки трафика например, или анонимный прокси там забодяжить (благо, почти никто не логирует открытие tcp-соединений :)

так что иногда бывает удобно засунать свой вот такой сервачок туда, повесить его на порт... эдак 8566, и раздавать оттуда что-нить.

только лучше-бы написали HTTP или SOCKS-прокси.

PS: кста, пишут-то на PHP 4.4+

Знаю хостинг, где стоит PHP 4.1.2 - ох и надолбался я там, прикручивая свою поделку.

romanr
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.