LINUX.ORG.RU
Ответ на: комментарий от gaa
>> Уже можно бегать кругами по улице и кричать "Мы все умрёооооом!" ?

Можно. Ааааааа! Мы все умрёооооом!!!!

Deleted
()
Ответ на: комментарий от lazyklimm
> Реквестирую голосовалку в галерею

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

LoGoPeD
()
Отстаньте вы уже от нашего ЭМО-генерала
gnomino
()
Ответ на: комментарий от Osmos
>а приз - встреча с деанонимизированным героем?

это только для сотой

lazyklimm ★★★★★
()
Ответ на: комментарий от Osmos
организовать не могу, ибо я в мск, а деанонимизированный в харькове. Как вариант можете взять пиво и отправиться туда отпаивать его после такого стресса. Я вот думаю, мож раз так простебали скинемся гиниратырю по пятаку на опохмел, чтобы не так обидно было?
LoGoPeD
()
Чёрт возьми, да кто же это делает?
ShprotX ★
()
Ладно, подводим итоги.
Собрано (89 аважаб + 8 постеров + 1 в хидер)=99 гипножаб.
http://invyl.ath.cx:8083/gen-o-gluk/ было по грепу апачевских логов запрошено 1013 раз. Страница на луркморе - сделано. Мемизация? Время покажет.
AiFiLTr0 ★★★★★
()
Ответ на: комментарий от lazyklimm
>> в жопу пых и мускуль - перлом в файлы можно, и всего делов

Фтопку перл!

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

cat | openssl base64 -d | tar -vxz

Фичи:
* Возможность голосования. Голосовать за одну картинку с одного
  IP можно только один раз.
* Автоматическая генерация тарболла при появлении новых картинок.
* Логика отделена от HTML-шаблонов, проще изменять дизайн.
* W3C-compliant =).

Недостатки:
* Нужно чтобы имена файлов были без пробелов и символов, недопустимых в URL.
* Подтормаживает малость.

Требования:
* POSIX-compliant shell.
* Стандартные утилиты: ls, grep, cut, sort и некоторые другие.
Deleted
()
Ответ на: комментарий от Deleted
Блин... Только сейчас вспомнил, что забыл добавить мьютекс на создание тарболла. Так что есть небольшая вероятность, что два процесса одновременно будут пытаться создать один и тот же файл. Сейчас исправлять влом, т.к. шесть утра, а я ещё не спал.
Deleted
()
Ответ на: комментарий от Deleted
Таки пофиксил + кое-что добавил:

--- cgi-bin/glukojaba-gallery.sh.old    2008-12-13 06:31:53.000000000 +0500
+++ cgi-bin/glukojaba-gallery.sh        2008-12-13 06:40:46.000000000 +0500
@@ -19,9 +19,13 @@
 # Path to data directory (for voting and tarball generation).
 DATA_DIR='/var/www/localhost/data/glukojaba-gallery'

+# Appearance.
 AVATARS_PER_LINE=5
 POSTERS_PER_LINE=1

+# Name of tarball.
+TARBALL_NAME='all.tar.gz'
+
 #******************************************************************************
#
 # CGI handler.
 #******************************************************************************
#
@@ -42,6 +46,12 @@
        return 0
 }

+# $1 - path.
+createDir()
+{
+       [ -d "${1}" ] || mkdir -p "${1}"
+}
+
 # $1 - type: 'a' = avatar, 'p' = poster.
 # $2 - image name.
 # stdout - total number of votes.
@@ -83,7 +93,7 @@

        [ -f "${IMG_REAL_DIR}/${dir}/${3}" ] || return 1

-       mkdir -p "${DATA_DIR}/${2}" 2> /dev/null
+       createDir "${DATA_DIR}/${2}"
        vote_file="${DATA_DIR}/${2}/${3}"
        vote_file_ips="${vote_file}.ips"
        vote_file_lock="${vote_file}.lock"
@@ -158,6 +168,11 @@
 if [ "${1}" = 'tarball' ]; then
        tarball="${DATA_DIR}/cache.tar.gz"
        tarball_ts="${tarball}.timestamp"
+       tarball_lock="${tarball}.lock"
+
+       createDir "${DATA_DIR}"
+
+       lockFile "${tarball_lock}"

        if [ -f "${tarball}" ]; then
                tarball_last_mod=$( cat "${tarball_ts}" )
@@ -174,8 +189,6 @@
        [ $files_last_mod -gt $tarball_last_mod ] && need_regen='yes'

        if [ -n "${need_regen}" ]; then
-               mkdir -p "${DATA_DIR}" 2> /dev/null
-
                rm "${tarball}" 2> /dev/null
                tar -czf "${tarball}" -C "${IMG_REAL_DIR}" \
                                "${AVATARS_DIR}" \
@@ -184,14 +197,17 @@
                echo -n "${files_last_mod}" > "${tarball_ts}"
        fi

+       unlockFile "${tarball_lock}"
+
        length=$(( $( stat -c '%s' "${tarball}" ) ))

-       echo 'Content-type: application/x-gzip'
+       echo 'Content-Type: application/x-gzip'
        echo "Content-Length: ${length}"
+       echo "Content-Disposition: attachment; filename=${TARBALL_NAME}"
        echo
        cat "${tarball}"
 else
-       echo 'Content-type: text/html; charset=utf-8'
+       echo 'Content-Type: text/html; charset=utf-8'
        echo

        VOTE_RESULT=''

Deleted
()
Ответ на: комментарий от Deleted
Я ИДИОТ! Забыл приложить шаблоны...

Вот полный вариант последней версии (т.е. патч не нужен):

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
icmYjMmYjMm4tPFfFEmLjQBQAAA=

cat | openssl base64 -d | tar -vxz
Deleted
()
Ответ на: комментарий от AiFiLTr0
Небольшой секьюрити фикс:

--- glukojaba-gallery.sh.old    2008-12-13 17:02:19.000000000 +0500
+++ glukojaba-gallery.sh        2008-12-13 17:05:39.000000000 +0500
@@ -212,7 +212,8 @@

        VOTE_RESULT=''
        if [ "${1}" = 'vote' ]; then
-               addVote "${2}" "${3}" "${4}"
+               img_name=$( echo -n "${4}" | tr -d '/\\*?~' )
+               addVote "${2}" "${3}" "${img_name}"
                VOTE_RESULT=$?
        fi

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