htmlbook.ru - настольная книга администратора

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Loading

Go Back   форум vBSupport.org > > >
Register Изображения Меню vBsupport Files Manager Аллея Звёзд Реклама на форуме Search Today's Posts Mark Forums Read
  • Мемберка
  • Администраторам
  • Premoderation
  • For English speaking users
  • Изменения в правах
  • Каталог Фрилансеров
Пароли на скачивание файлов в Member Area меняются автоматически каждый день
Если вам нужно скачать какой то скрипт, за паролем ко мне в ЛС
привет какирам kerk
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Не можете скачать вложение?
Изменения в правах групп пользователей
внимательно читаем эту и эту темы
Короткая версия - тут
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

 
 
Первый пост
Old  
SMak044
Эксперт
 
SMak044's Avatar
Default 0

kerk, Спасибо, так наверно и сделаю.
Просто это скелет, который я показал как вариант работы с вложениями. понятно, что во многих случаях нужны будут дополнительные действия, например проверки файла на соответствие настройкам в админке, их тут просто нет... например в своей функции я собираюсь не верные файлы размещать на dropbox...
В общем это не для прямого применения, а для понимания процесса и определения круга обязательных условий и параметров для кодеров, а дальше тут уж творчество...
Сейчас пытаюсь побороть проблему проверки на загрузку методом пост или гет...

SMak044 добавил 31.08.2012 в 15:34
Кстати по ходу дела научился вставлять html в сообщения в разделе, где это запрещено, оказалось все проще простого...
Если есть необходимость вставить html сообщение прямым запросом в разделе где это запрещено, надо вставлять html в 2 таблицы в таблицу постов и в таблицу постпарсед.
В этом случае при отображении темы такое сообщение будет в виде html....
PHP Code:
if($foruminfo['allowhtml'] == 0)
{
    
$db->query_write("
        REPLACE INTO " 
TABLE_PREFIX "postparsed (postid, dateline, hasimages, pagetext_html, styleid, languageid)
        VALUES (
            
$postid, " .
            
intval($date) . ", " .
            
", '" .
            
$db->escape_string($pagetext) . "', " .
            
intval(STYLEID) . ", " .
            
intval(LANGUAGEID) . "
            )
    "
);

Правда тут есть один нюанс если такое сообщение отредактировать, то html отображение теряется... но не думаю, что это проблема... мы же автоматом его вставляли, а автомат редактировать не побежит

Last edited by SMak044 : 08-31-2012 at 04:34 PM. Reason: Добавлено сообщение
 
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
Old  
kerk
k0t
 
kerk's Avatar
Default 1

Quote:
Originally Posted by SMak044 View Post
если такое сообщение отредактировать, то html отображение теряется... но не думаю, что это проблема... мы же автоматом его вставляли, а автомат редактировать не побежит
да, не побежит, но через какое то время админу может понадобиться что то изменить в сообщении =)
если мы научили автоматом вставлять хтмл, то научить обновлять этот же пост с хтмл, тоже не будет проблемой, на соотв. хуке повесить выполнение своего кода, вместо вобловского и добавлять свой хтмл
 
Old  
kerk
k0t
 
kerk's Avatar
Default 1

Quote:
Originally Posted by SMak044 View Post
Сейчас пытаюсь побороть проблему проверки на загрузку методом пост или гет
в вобле же разрешено добавлять файлы по URL (с удаленных ресурсов)
наверное можно костыль какой то придумать и данном случае
т.е. насильно скрипту сказать, что файл нЕ в соседней папке, а типа где то там.. и использовать тот же cURL для получения данных о файле
не думаю, что будет сильно напрягать сервак, т.к. соединение будет с этим же сервером, просто файл будет копироваться дважды, сначала из указанного каталога в темп папку, а оттуда в каталог вложений
но в этом случае, наш файл нЕ удалится =)

вот только не знаю, можно ли использовать cURL со своим же серваком, никогда не делал так =)
 
Old  
cyberdaemon
Эксперт
 
cyberdaemon's Avatar
Default 2

SMak044, на всякий случай скину содержимое модуля, может что пригодится (нифига не чистил, писалось под торрент вложения)
PHP Code:
$navbits = array(); 
$navbits[$parent] = 'Парсер раздач с FTO'
$navbits construct_navbits($navbits);
require_once(
CWD '/includes/class_dm.php');
require_once(
CWD '/includes/class_dm_threadpost.php');
require_once(
CWD '/includes/class_dm_attachment.php');
(
$hook vBulletinHook::fetch_hook('parser_login_hook')) ? eval($hook) : false;

$forumid $_POST['forumid'];
$userid $vbulletin->userinfo['userid'];
$username $vbulletin->userinfo['username'];
$pagetext $_POST['textbox'];
$title $_POST['topicname'];
$visible $vbulletin->options['visible'];
$attach '1';
$filename '';
$filedata1 '';
$filehash md5($filedata);
$filesize strlen($filedata);
$extension 'torrent';
$dateline TIMENOW;

$threaddm = new vB_DataManager_Thread_FirstPost($vbulletinERRTYPE_STANDARD);
$threaddm->do_set('forumid'$forumid);
$threaddm->do_set('postuserid'$userid);
$threaddm->do_set('userid'$userid);
$threaddm->do_set('username'$username);
$threaddm->do_set('pagetext'$pagetext);
$threaddm->do_set('title'$title);
$threaddm->do_set('visible'$visible);
$threaddm->do_set('allowsmilie'$yes);
$threaddm->do_set('dateline'$dateline);
$threaddm->do_set('attach'$attach);
$new_treadid $threaddm->save();
$getfirstpost $vbulletin->db->query_first("SELECT postid FROM " TABLE_PREFIX "post WHERE threadid=$new_treadid ORDER BY dateline LIMIT 1");
$postid $getfirstpost['postid'];
$filedm = new vB_DataManager_Attachment($vbulletinERRTYPE_STANDARD);
$filedm->do_set('postid'$postid);
$filedm->do_set('userid'$userid);
$filedm->do_set('filename'$filename);
$filedm->do_set('filedata'$filedata1);
$filedm->do_set('filesize'$filesize);
$filedm->do_set('extension'$extension);
$filedm->do_set('filehash'$filehash);
$filedm->do_set('dateline'$dateline);
$filedm->do_set('visible'$visible);
$filedm->do_set('thumbnail_dateline'$dateline);
$new_fileid $filedm->save();

(
$hook vBulletinHook::fetch_hook('parser_bencode_hook')) ? eval($hook) : false;
$tfile BDecode($filedata);
$infovariable $tfile["info"];
$infohash pack("H*"sha1(BEncode($tfile["info"])));
$infohash mysql_real_escape_string($infohash);
$result $infovariable["length"];
$filecount $vbulletin->db->query("SELECT `fid` FROM `files` ORDER BY `fid` DESC LIMIT 1");
$filecount mysql_fetch_array($filecount);
$filecount $filecount['fid'];
if (isset(
$infovariable["files"]))  {
foreach (
$infovariable["files"] as $torfile)
{
$filecount $filecount+1;
$multiname $torfile['path'];
$a='';
if (
$multiname[10] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]/$multiname[4]/$multiname[5]/$multiname[6]/$multiname[7]/$multiname[8]/$multiname[9]/$multiname[10]";}
else
if (
$multiname[9] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]/$multiname[4]/$multiname[5]/$multiname[6]/$multiname[7]/$multiname[8]/$multiname[9]";}
else
if (
$multiname[8] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]/$multiname[4]/$multiname[5]/$multiname[6]/$multiname[7]/$multiname[8]";}
else
if (
$multiname[7] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]/$multiname[4]/$multiname[5]/$multiname[6]/$multiname[7]";}
else
if (
$multiname[6] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]/$multiname[4]/$multiname[5]/$multiname[6]";}
else
if (
$multiname[5] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]/$multiname[4]/$multiname[5]";}
else
if (
$multiname[4] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]/$multiname[4]";}
else
if (
$multiname[3] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]/$multiname[3]";}
else
if (
$multiname[2] !=$a) {$multiname "/$multiname[0]/$multiname[1]/$multiname[2]";}
else
if (
$multiname[1] !=$a) {$multiname "/$multiname[0]/$multiname[1]";}
else
$multiname "/$multiname[0]";
$multiname = @iconv('UTF-8'$stylevar['charset'] ,$multiname);
$multiname mysql_real_escape_string($multiname);

$multitorrentsize $torfile['length'];
$torrentsize += $torfile['length'];
$vbulletin->db->query("INSERT INTO files (fid, name, size, attachmentid) VALUES ('$filecount', '$multiname', '$multitorrentsize', '$new_fileid')") or die(mysql_error());
}
}
else {
$filecount $filecount+1;
$name $infovariable['name'];
$torrentsize $infovariable['length'];
$vbulletin->db->query("INSERT INTO files (fid, name, size, attachmentid) VALUES ('$filecount', '$name', '$torrentsize', '$new_fileid')") or die(mysql_error());
}
$bburl=$vbulletin->options['parsed_bb_url'];
$vbulletin->db->query("UPDATE attachment SET filename='".$new_fileid."_[".$bburl."].torrent', info_hash='$infohash', size='$torrentsize', mtime='$dateline' WHERE attachmentid = $new_fileid") or die(mysql_error());


$filepath=$vbulletin->options['attachpath'];
$file $filepath '/' implode('/'preg_split('//'$userid,  -1PREG_SPLIT_NO_EMPTY))."/".$new_fileid.".attach";
$fp fopen($file"w");
fwrite($fp$filedata);
fclose ($fp);
$posturl=''.$vbulletin->options['bburl'].'/showthread.php?t='.$new_treadid.'';
$postlink='<a href='.$posturl.' target="_blank">'.$posturl.'</a>';
$newthreadurl['url']=$posturl;
require_once(
CWD '/includes/functions_databuild.php'); 
build_forum_counters($forumid);
build_thread_counters($threadinfo['threadid']);
eval(
'$navbar = "' fetch_template('navbar') . '";'); 
eval(
'print_output("' fetch_template('parser_final') . '");'); 
 
Old  
Orfo
Знаток
Default 1

Quote:
Originally Posted by kerk
вот только не знаю, можно ли использовать cURL со своим же серваком, никогда не делал так =)
Вроде работает. Мой костыль
PHP Code:
$vbulletin->GPC['attachment']['name']["1"] =  $vbulletin->options['bburl'].$link;
$vbulletin->GPC['attachment']['url']["1"]  = true;

$attachdata        =& datamanager_init('Attachment'$vbulletinERRTYPE_ARRAY);
$upload            =& new vB_Upload_Attachment($vbulletin);
$image             =& new vB_Image();

$upload->data      =& $attachdata;
$upload->image     =& $image->fetch_library($vbulletin);
$upload->emptyfile false;
$upload->foruminfo =& $foruminfo;
$upload->postinfo  =& $postinfo;

$attachmentid $upload->process_upload($vbulletin->GPC['attachment']['name']["1"]); 
 
Old  
SMak044
Эксперт
 
SMak044's Avatar
Default 0

Quote:
Originally Posted by Orfo View Post
Вроде работает. Мой костыль
А как ты вызывал этот скрипт?
Ты указывал файл в форме и жал сабмит, или указал переменную линк прямым указанием на файл?
 
Old  
Orfo
Знаток
Default 1

Quote:
Originally Posted by SMak044 View Post
А как ты вызывал этот скрипт?
Ты указывал файл в форме и жал сабмит, или указал переменную линк прямым указанием на файл?
Передача переменных через ПОСТ использовалось, но не для загрузки файла а для вызова скрипта (т.е. фактически сабмит я нажимал), файл загружался на мой сервер и дальше скрипт начинал загружать файл, далее создавал тему с тем же posthash.

Как уже писал ранее решение костыльное, да сам хочу отказаться от cUrl, как-то не до этого было.

из скрипта class_upload.php
PHP Code:
$this->upload['location'
Я так понимаю можно просто указать массив с данными, location вроде как путь к файлу который можно создать временно?!

Для работы подключал:
Оффтоп
 
Old  
SMak044
Эксперт
 
SMak044's Avatar
Default 0

Orfo, В этом то и проблема, дело в том, что на строке 359 файла class_upload.php есть проверка источника файла !is_uploaded_file($this->upload['location'])
$this->upload['location'] это фактически $file[tmp_name] или $_FILES[attacment][tmp_name] Но когда ты назначаешь $this->upload['location'] принудительно скриптом, то такое значение не проходит проверку. Я пытался вставить в массив $_FILES нужное значение, но сабака php умный и не верит мне
В твоем же случае массив $_FILES заполняется и проверка файла проходит без проблем...

В общем даже не знаю, что можно сделать, что бы не использовать вторичную загрузку файла. Весь вопрос свелся к возможности модификации глобальных переменных, что во многих случаях просто запрещено на уровне хостига. Склоняюсь к тому, что все же будет необходимо использовать vB_vURL
 
Old  
netwind
Гуру
 
netwind's Avatar
Default 1

Quote:
Originally Posted by SMak044 View Post
Весь вопрос свелся к возможности модификации глобальных переменных, что во многих случаях просто запрещено на уровне хостига.
Вообще-то должно работать. зачем бы хостингу это запрещать ? Скорее всего что-то другое в коде не так сработало и ты сделал неправильный вывод.
Сделай изолированный тест прежде чем такое утверждать.
 
Old  
SMak044
Эксперт
 
SMak044's Avatar
Default 0

Quote:
Originally Posted by netwind View Post
Вообще-то должно работать. зачем бы хостингу это запрещать ? Скорее всего что-то другое в коде не так сработало и ты сделал неправильный вывод.
Сделай изолированный тест прежде чем такое утверждать.
Делал, вставка значений в $_FILEAS не помогает, так же как и добавка значений в $_POST... правда тут одна сложность подозреваю, что в ПЗС необходимо иметь еще и массив с содержанием описание которого необходимо сделать в $_POST? а там строка с boundary, которую я просто не знаю как сформировать.
Но это уже не страшно, так как обошелся работой через урл...
Пока не готов выложить решение полностью, еще в процессе, но как доработаю, то выложу тут.
 
 

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 07:59 AM.


Powered by vBulletin® Version Random
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.