Факультет ИСиТ Суббота, 04.04.2020, 20:22
Приветствую Вас Гость | RSS
[ Персональный раздел · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Факультет ИСиТ СыктГУ - Форум » Компьютеры / Интернет / Информационные системы и технологии » Программирование » git на примере менеджера пользователей sqiud (с ncsa авторизацией)
git на примере менеджера пользователей sqiud
eXceed Дата: Пятница, 26.08.2011, 13:21 | Сообщение # 1
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Решил опробовать git на примере простенького менеджера пользователей sqiud с ncsa авторизацией.
http://code.google.com/p/simple-squid-ncsa-users-manager/

Нужно было как то добавлять/удалять пользователей в SQUID. Самое простое решение пришло на php с процедурной парадигмой. Может кому пригодится.
Третий день php быдлокодер - кун.


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
zhylik Дата: Суббота, 27.08.2011, 12:42 | Сообщение # 2
Специалист
Группа: СуперАктив
Сообщений: 146
Награды: 0
Статус: Offline
Если ты выложил скрипт в общее пользование, то мне кажется лучше хотя бы readme приложить и в нем дать советик как ограничить доступ к скрипту (хотя бы ссылку на какую-нибудь статью про htaccess + htpasswd). Ато любой, кто будет знать ссылку на запуск скрипта через браузер сможет править пользователей сквида и выполнять любые команды на сервере от имени апача, передав в качестве пароля например 'пароль && команда' -- system() такое осилит выполнить мне кажется, а ввод ты не фильтруешь (http://ru2.php.net/manual/en/function.system.php около восклицательных знаков)...

+ Регексп $yoba = "/" . $user_name . "/i" отработает положительно (при поиске 'user') на всех строках типа:
123456user:123456789
user123456:123456
12user23:132465
132456:user123
и т.п.
надо что то типа "/^$username\:/i" использовать

+ в php есть много милых вещей типа:
- foreach ($array as $key => $val) {}
- $array[] = $val -- добавляет новое значение в конец (не надо тянуть $array[$i++]=$val)
- строки типа '123:456' можно парсить так (если уверен в структуре строки) -- list($user, $pass) = explode(":", $str)
- функции get_user_passwords() и get_user_names() можно объединить, возвращая хеш или массив массивов:
Code
$users = array();
начало цикла чтения
...
list($user, $pass) = explode(":", $str);
$users[$user] = $pass;
...
конец цикла чтения
return $users

и потом читать
foreach ($users as $user => $pass) { echo $user .":". $pass; }


utf-8 кодировку можно передавать прямо в head-секции index.html:
Code
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>


потом, если просто запустить скрипт squiduseradd.php из браузера (а не через сабмит формы), то он запустится и $_POST будет пустой, соответственно, неизвестно как скрипт отреагирует


Ваня Жилин ("zhylik" читается как жулик))
 
Expert Дата: Суббота, 27.08.2011, 12:45 | Сообщение # 3
Главный
Группа: Администраторы
Сообщений: 6113
Награды: 1
Статус: Offline
eXceed, не шутите с инструментами, пожалуйста.

Слушайте zhylik'а.


Блог декана

Уведомление для прессы и всех пользователей сети интернет: администрация форума может не заметить вовремя нецензурных слов и других, возможно, оскорбительных выражений/картинок/прочих материалов. Если вы заметили косвенный либо прямой факт оскорбления кого бы то ни было, пожалуйста, сообщите об этом администратору форума для принятия решения об удалении/модерировании соответствующего сообщения. Полный текст уведомления см. здесь.
 
eXceed Дата: Суббота, 27.08.2011, 14:39 | Сообщение # 4
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
zhylik

Quote
лучше хотя бы readme приложить и в нем дать советик как ограничить доступ к скрипту.


Конечно. Хотя это должен сам админ решать (я просто в конфигурационном файле виртуального хоста разрешил только моей машине ходить туда), но тем не менее readme сделаю.

Quote
надо что то типа "/^$username\:/i" использовать


Надо, запилю более грамотный re. Хотя это не обязательно, т.к. ncsa авторизация четко регламентирована.

Quote
Ато любой, кто будет знать ссылку на запуск скрипта через браузер сможет править пользователей сквида и выполнять любые команды на сервере от имени апача, передав в качестве пароля например 'пароль && команда' -- system() такое осилит выполнить мне кажется, а ввод ты не фильтруешь (http://ru2.php.net/manual/en/function.system.php около восклицательных знаков)...


Не уверен, что в данном случае получится что то выполнить, скорее htpasswd плюнет в stderr о некорректности введенных данных, хотя надо проверять. Тем не менее о фильтрации ввода задумывался в пятницу, но решил отложить на понедельник.

Quote
- foreach ($array as $key => $val) {}
- $array[] = $val -- добавляет новое значение в конец (не надо тянуть $array[$i++]=$val)
- строки типа '123:456' можно парсить так (если уверен в структуре строки) -- list($user, $pass) = explode(":", $str)
- функции get_user_passwords() и get_user_names() можно объединить, возвращая хеш или массив массивов:


Не знал про существование foreach() в php. В бидоне for foo in yoba эквивалентен foreach(), а for foo in range(yoba) эквивалентен обычному for. Делал по аналогии с C++, т.к. php унаследовал от него многое.
Ага, массивы поправлю, делал по аналогии с C++ из-за нулевых знаний php.
За explode() спасибо, очень годная функция.

Ну я сам не доволен тем, что пока не получилось сделать это элегантно. Брать и что то учить? Лень, да и времени нет. Взял справочник по функциям на php.su и начал пробовать, т.к. делать надо было очень быстро, иначе простой в работе образовался. Что недопустимо в моей нынешней ситуации.
Все равно почти все перепиливать надо.

Есть какой нибудь мануал по php наподобие Dive into Python? Ну чтоб идеологию языка передал? Бидоновская концепция здесь не работает, чувствуются корни C++, но идеология C++ здесь работает плохо, так как язык ушел в сторону от классических вещей.

Quote
utf-8 кодировку можно передавать прямо в head-секции index.html


Зачем, когда оно же передается веб сервером в соответствии с настройкой в .htaccess?

Алсо в php есть аналог map из STL C++ или кортежей бидона?


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.

Сообщение отредактировал eXceed - Суббота, 27.08.2011, 15:01
 
eXceed Дата: Суббота, 27.08.2011, 14:41 | Сообщение # 5
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Expert

Quote
eXceed, не шутите с инструментами, пожалуйста.


Не совсем понял, что вы имели ввиду?

Quote
Слушайте zhylik'а.


Слушаю же, т.к. не обладаю достаточными навыками и знаниями в веб разработке.
Эх, мне бы обратно, на бидон или плюсы. А жизнь то вот как повернулась, что пришлось браться за php.


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
zhylik Дата: Суббота, 27.08.2011, 17:01 | Сообщение # 6
Специалист
Группа: СуперАктив
Сообщений: 146
Награды: 0
Статус: Offline
Quote (eXceed)
Не уверен, что в данном случае получится что то выполнить, скорее htpasswd плюнет в stderr о некорректности введенных данных, хотя надо проверять. Тем не менее о фильтрации ввода задумывался в пятницу, но решил отложить на понедельник.

Помоему system() отрабатывает как командная строка. и если в нее прописать system('mkdir aaa && mkdir bbb') выполнятся обе команды. А в твоем случае -- отработает корректно и htpasswd и команда, переданная в пароле. Думается мне..

Quote (eXceed)
Есть какой нибудь мануал по php наподобие Dive into Python?

Хз, я очень мало знаю о php. Начинал со статей каких-то, потом пользовался примерами из какого-то справочника по PHP, в котором были все функции описаны с примерами (дамп php.net в виде CHM). Я просто работал в основном с Drupal, а там знаний PHP особых не нужно...

Quote (eXceed)
Зачем, когда оно же передается веб сервером в соответствии с настройкой в .htaccess?

Просто обычно кодировка контролируется на уровне CMS (или скриптов, выводящих HTML).

Quote (eXceed)
Алсо в php есть аналог map из STL C++ или кортежей бидона?

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


Ваня Жилин ("zhylik" читается как жулик))
 
Expert Дата: Суббота, 27.08.2011, 18:36 | Сообщение # 7
Главный
Группа: Администраторы
Сообщений: 6113
Награды: 1
Статус: Offline
Quote (eXceed)
Не совсем понял, что вы имели ввиду?


Насколько я понял первый пост zhylik'а, вы создали что-то квазиопасное smile .


Блог декана

Уведомление для прессы и всех пользователей сети интернет: администрация форума может не заметить вовремя нецензурных слов и других, возможно, оскорбительных выражений/картинок/прочих материалов. Если вы заметили косвенный либо прямой факт оскорбления кого бы то ни было, пожалуйста, сообщите об этом администратору форума для принятия решения об удалении/модерировании соответствующего сообщения. Полный текст уведомления см. здесь.
 
eXceed Дата: Суббота, 27.08.2011, 19:16 | Сообщение # 8
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
zhylik

Quote
Помоему system() отрабатывает как командная строка. и если в нее прописать system('mkdir aaa && mkdir bbb') выполнятся обе команды. А в твоем случае -- отработает корректно и htpasswd и команда, переданная в пароле. Думается мне..


Я проверю в понедельник. Но не думается мне, что-то выполнится, т.к. у меня апач заперт в chroot вместе с htpasswd. Ну это в моей конфигурации, а так, таки да, в общем случае думаю, что уязвимость на лицо. Протестирую - обязательно отпишусь. Поставлю голый дебиан, конфигурация апача и пхп по умолчанию, ну и на своей конфигурации проверю.

Quote
Просто обычно кодировка контролируется на уровне CMS (или скриптов, выводящих HTML).


Считаю, что это удобно лишь в случае CMS, а тут инструмент исключительно для меня и моего помощника. Хотя опять же, веб сервер может настроен быть так, что .htaccess нельзя использовать.

В общем виде про кортежи.
http://ru.diveintopython.org/odbchelper_tuple.html

Expert

Ну, ничего в этом опасного нет. Скрипт делается в меру моих познаний php. Hello, world на нем сделал в эту среду =). Естественно, что после C++, python сложно думать немного иначе, хоть и почти так же. Многих вещей в нем еще просто не знаю, не знаю его возможностей.
И вот перед вами сила Open Source. Сила в том, что мы можем общаться, подсказывать друг другу. Вести разработку эффективней в разы. Пускай, что по факту я один делаю, но подсказки zhylik'а, особенно explode() позволят сократить количество кода. Вообщем Open Source это добро =)
----
TODO:
1. Сократить размеры кода.
2. Ввести дополнительные поля, для сохранения информации о пользователе. Буду работать без поддержки БД. Поэтому ожидается n'ое количество быдлокода :3
3. Некоторые опции для изменения настроек NCSA авторизации.
4. Интеграция с sarg для ведения статистики. ХЗ пока как сделать, но попробуем.


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.

Сообщение отредактировал eXceed - Суббота, 27.08.2011, 19:22
 
tersus Дата: Воскресенье, 28.08.2011, 20:46 | Сообщение # 9
Профессор
Группа: СуперАктив
Сообщений: 2831
Награды: 0
Статус: Offline
eXceed, Почему Git? Почему не Меркуриал?

Судьба даёт нам меньше, чем мы хотим, поэтому если просить мало, можно не получить вообще ничего.
 
eXceed Дата: Воскресенье, 28.08.2011, 21:48 | Сообщение # 10
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Честно говоря, что меркуриал еще даже и не трогал. Просто сейчас среди быдлокодеров git популярен, я и решил попробовать.

bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
eXceed Дата: Понедельник, 29.08.2011, 11:26 | Сообщение # 11
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Выпустил апдейт. Оптимизация кода + фильтрация вводимых данных пользователем. Доступно здесь: http://code.google.com/p/simple-squid-ncsa-users-manager/ либо через git.

bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
eXceed Дата: Вторник, 30.08.2011, 13:53 | Сообщение # 12
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Решил переписать с использованием sqlite. Обычные файлы - все равно, что пердолится в жопу.

bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
tersus Дата: Вторник, 30.08.2011, 15:46 | Сообщение # 13
Профессор
Группа: СуперАктив
Сообщений: 2831
Награды: 0
Статус: Offline
eXceed, Давай на MongoDB замути всю канитель. А затем апликацию напиши под iOS. App Store сделает тебя состоятельным человеком.

Судьба даёт нам меньше, чем мы хотим, поэтому если просить мало, можно не получить вообще ничего.
 
eXceed Дата: Вторник, 30.08.2011, 16:57 | Сообщение # 14
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Завтра поясню по хардкору, с точки зрения быдлокодера почему файлы = консоль-пердоль.

bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
eXceed Дата: Среда, 31.08.2011, 15:46 | Сообщение # 15
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Выложил в git промежуточную версию с поддержкой sqlite. Версия еще не рабочая. Не весь функционал реализован, т.к. почти весь день изучал sqlite + SQL. Можете смотреть для ознакомления. Решил проблему с безопасностью, т.к. вообще не буду использовать htpasswd, а буду кодировать налету. Пока надо запилить удаление из базы + синхронизацию базу с файлом. Быдлокод можно взять здесь: http://code.google.com/p/simple-squid-ncsa-users-manager/

Файлы это пердоль по той простой причине, что их надо обрабатывать построчно и вообще ебли вагон =( А идея была хороша.


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.

Сообщение отредактировал eXceed - Среда, 31.08.2011, 16:06
 
eXceed Дата: Среда, 31.08.2011, 16:20 | Сообщение # 16
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
ПРИШЛО ВРЕМЯ ОСВОБОДИТЬ ПАМЯТЬ
ПАМЯТЬ САМА НЕ ОСВОБОДИТСЯ
ОСВОБОДИ ЕЁ, ОСВОБОДИ ЕЁ ЕЩЕ РАЗ
ЗАЧЕМ МНЕ НУЖЕН ХАЧКЕЛЬ, У МЕНЯ НЕТ ВРЕМЕНИ ЧТОБЫ ЕБАТЬСЯ С НИМ
ЛУЧШЕ ЕЩЕ РАЗ ОСВОБОДИТЬ ПАМЯТЬ
Я ОСВОБОЖДАЮ ПАМЯТЬ ПО 3 РАЗА В ДЕНЬ
КАЖДОЕ ОСВОБОЖДЕНИЕ ЗАНИМАЕТ ДВАДЦАТЬ НАНОСЕКУНД
Я ЖИВУ АКТИВНОЙ И ПОЛНОЦЕННОЙ ЖИЗНЬЮ
Я УСПЕШЕН И ПОЭТОМУ ЦЕЛЫЙ ДЕНЬ ВЫДЕЛЯЮ ПАМЯТЬ
А ПОСЛЕ ЭТОГО ОСВОБОЖДАЮ ЕЁ
ТУПЫЕ ХАЧКЕБЛЯДКИ ОДЕРЖИМЫ МОНАДАМИ
А Я СВОБОДНЫЙ ОТ ЗАДРОТСТВА ЧЕЛОВЕК
TEMPLATE BAR * FOO::DOWORK()
INT SUM = (N & (N % 2 ? 0 : ~0) | ( ((N & 2)>>1) ^ (N & 1) ) );
ЛУЧШЕ Я ВЫДЕЛЮ ЕЩЕ РАЗ ПАМЯТЬ
И ЗАБУДУ ОСВОБОДИТЬ ЕЁ, СТАБИЛЬНОСТЬ НЕ НУЖНА
Я НЕ ОСВОБОЖДАЛ ПАМЯТЬ НЕДЕЛЮ
ПОЙДУ ОСВОБОЖУ
В C++ ВСЕ ПРОСТО И ПОНЯТНО
SEGMENTATION FAULT. ЭТО ЖЕ ОЧЕВИДНО КАК ЕЕ РЕШИТЬ
ПРИШЛО ВРЕМЯ ОСВОБОДИТЬ ПАМЯТЬ
КОКОКОКОКОКОКО
КВИКСОРТ КОНКАТЕНАЦИЯ ЗА O(1) INLINE ASSEMBLER
КОКОКОКОКОКОКО


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
eXceed Дата: Понедельник, 14.11.2011, 12:26 | Сообщение # 17
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
Перепиливаю тулзу на python(django) в рамках изучения фреймворка =)

bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
tersus Дата: Понедельник, 14.11.2011, 20:34 | Сообщение # 18
Профессор
Группа: СуперАктив
Сообщений: 2831
Награды: 0
Статус: Offline
eXceed, Это отличная новость. Видимо в С. в водопроводную воду таки добрались нуклиды из Японии.

Пузомерка языков

Пайтон проигрывает даже PHP по скорости.

----
Список книг по Пайтону.


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

Сообщение отредактировал tersus - Понедельник, 14.11.2011, 21:04
 
eXceed Дата: Вторник, 15.11.2011, 07:49 | Сообщение # 19
Профессор
Группа: СуперАктив
Сообщений: 5278
Награды: 0
Статус: Offline
tersus

Скорость не нужна. Сам удивляюсь тому, что это говорю.

Quote
Пайтон проигрывает даже PHP по скорости.


А ребята из гугла не знали. ПХП это ублюдочный язык. Его спасает низкий порог вхождения и поддержка из коробки апачами. Внутри это хтонический ужас.

Он умрет. Инфа 100%

Алсо если лабать CGI на сишке, то будет еще быстрее. Но кого это волнует?


bda-expert.ru — это система форумов, где можно общаться быстро и свободно, где любая точка зрения имеет право на жизнь.
 
tersus Дата: Вторник, 15.11.2011, 12:23 | Сообщение # 20
Профессор
Группа: СуперАктив
Сообщений: 2831
Награды: 0
Статус: Offline
Quote (eXceed)
Он умрет. Инфа 100%

Согласен.

Quote (eXceed)
Алсо если лабать CGI на сишке, то будет еще быстрее.

Python выигрывает в краткости кода, т.е. больше творчества и меньше рутины. Он очень наглядный и легко читаемый.

И не даст написать "опасный" говнокод.


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

Сообщение отредактировал tersus - Вторник, 15.11.2011, 12:23
 
Факультет ИСиТ СыктГУ - Форум » Компьютеры / Интернет / Информационные системы и технологии » Программирование » git на примере менеджера пользователей sqiud (с ncsa авторизацией)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:



Copyright bda-expert.ru © 2008-2020Хостинг от uCoz