These are chat archives for synrc/n2o

9th
Jan 2016
heiheshang
@heiheshang
Jan 09 2016 07:22
Подскажите как перехватить событие что сессия истекла ?
Andy
@m-2k
Jan 09 2016 07:24
В ETS нет таймеров
Чекай авторизацию на каждый ивент со стороны браузера
heiheshang
@heiheshang
Jan 09 2016 07:36
а откуда тогда месага в консоль прилетает ?
Andy
@m-2k
Jan 09 2016 07:38
Какая
heiheshang
@heiheshang
Jan 09 2016 07:43
=INFO REPORT==== 9-Jan-2016::07:18:52 ===
n2o_session:Auth Cookie Expired in Session <<"094d704160a319abca684ecc4a73ced0">>
Andy
@m-2k
Jan 09 2016 07:47
отседова
но я так понимаю она прилетает когда страницу ребутаешь? прост скажи что ты сделать хочешь
heiheshang
@heiheshang
Jan 09 2016 07:51
у меня для авторизованого юзера и неавторизованого по разному страница показывается, хочу когда сессия истечет зарефрешить страницу и месагу выкинуть
Andy
@m-2k
Jan 09 2016 07:54
когда мессага прилетает в консоль (Auth Cookie Expired)? когда страницу ребутаешь?
heiheshang
@heiheshang
Jan 09 2016 07:54
сижу наблюдаю за процессом когда они прилетают
Andy
@m-2k
Jan 09 2016 07:55
да хоть на столе стой, мне то что
ты на вопрос ответить в состоянии?
heiheshang
@heiheshang
Jan 09 2016 07:56
ну ты же спрашиваешь когда, я и пытаюсь определить
Andy
@m-2k
Jan 09 2016 07:56
скорее всего когда страница загружается
я ж всё уже сказал
в ETS нет таймеров
определить протухла ли кука можно только запросив ее из ETS
поэтому если ты навесишь на это коллбэк автоматически всё равно ничего получать не будешь пока страницу не ребутнешь или не вызовешь ensure_sid
если тебе так уж нужен автоматический триггер на протухание куки
то после инициализации ws подключения ( в event(init) ) создай таймер на продолжительность оставшегося кол-ва времни
то есть дергаешь из ETS запись, смотришь поле expire, высчитываешь оставшееся кол-во секунд и создаешь таймер
в event(terminate) дестроишь его (таймер)
Andy
@m-2k
Jan 09 2016 08:02
и желательно не делать таймеры более чем на день, рекомендуется дробить большее значение на отрезки и постепенно вычитать через таймеры
но эту инфу ты и сам можешь загуглить
heiheshang
@heiheshang
Jan 09 2016 08:11
нее не буду пока над этим заморачиваться, пока для меня это сложно
heiheshang
@heiheshang
Jan 09 2016 12:24
подскажите как изменить каталог в который сохраняется файл ftp , почему то ковбой отказывается видеть каталоги вида 094d704160a319abca684ecc4a73ced0 ?
fxmy wang
@fxmy
Jan 09 2016 12:29
I believe it is in n2o_file.erl
-define(ROOT, wf:config(n2o,upload,code:priv_dir(n2o))).
heiheshang
@heiheshang
Jan 09 2016 12:37
это только задается каталог хранения , а подкаталоги как переопределить ?
судя по коду ни как ?
Dir   = lists:concat([?ROOT,'/',wf:to_list(Sid),'/']),
fxmy wang
@fxmy
Jan 09 2016 12:44
not sure what you are trying to say cause the outputs of google translate really confuses me :smile:
heiheshang
@heiheshang
Jan 09 2016 12:50
you can see link http://5ht.co/ftp.htm
wf:to_list(Sid) - this its problem
fxmy wang
@fxmy
Jan 09 2016 12:59

well I believe that snippet is obsolete since it differs from what's in the source.

info(#ftp{sid=Sid,filename=FileName,status= <<"init">>,block=Block,offset=Offset,size=TotalSize}=FTP,Req,State) ->
      application:set_env(n2o,formatter,bert),
      Root=?ROOT,
      RelPath=(wf:config(n2o,filename,n2o_file)):filename(FTP),
      FilePath=filename:join(Root,RelPath),
      ok=filelib:ensure_dir(FilePath),

what is the problem by the way?

heiheshang
@heiheshang
Jan 09 2016 13:07
well, how do I change a subdirectory in my code?
fxmy wang
@fxmy
Jan 09 2016 13:11
you mean to change the directory of the uploaded file ?
in that case, try to modify sys.config
[
    {n2o, [{port,8000},
           {app,review},
           {upload,"./apps/review/priv/static/"},
           {search,"/Users/5HT/depot/synrc/synrc.com/apps/*/doc/web/*.htm"},
           {route,routes},
         {mq,n2o_mq},
that upload section
heiheshang
@heiheshang
Jan 09 2016 13:34
You do not understand. This is the root directory, and the file is loaded into a subdirectory = sid
fxmy wang
@fxmy
Jan 09 2016 13:41
ah
about the subdirectorys
filename(#ftp{sid=Sid,filename=FileName}) -> filename:join(wf:to_list(Sid),FileName).

RelPath=(wf:config(n2o,filename,n2o_file)):filename(FTP),
FilePath=filename:join(Root,RelPath)
heiheshang
@heiheshang
Jan 09 2016 13:43
wf:to_list(Sid)
fxmy wang
@fxmy
Jan 09 2016 13:46
so to change the subdirectory
1) add a filename entry inside n2o in sys.config, call it magic_namer
2) implement and export filename/1 from the module magic_namer
heiheshang
@heiheshang
Jan 09 2016 13:50
magic_namer what is it ?
fxmy wang
@fxmy
Jan 09 2016 13:51
write your own module, call it anything you like :smile:
n2o uses process dictionary intensively which sometimes is really confusing especially when you try something in erlang shell... :worried:
@5HT any design decisions behind this? :smile:
Andy
@m-2k
Jan 09 2016 13:57
RelPath=(wf:config(n2o,filename,n2o_file)):filename(FTP),
RelPath -- это твоя кастомная директория + имя файла внутри директории для аплоада (FilePath=filename:join(Root,RelPath),)
добавь в sys.config {filename,YOUR_MODULE} и переопредели в нем функцию filename/1https://github.com/synrc/n2o/blob/93582a8c83e73d338253e01a6ccfe7ae55955b4b/src/protocols/n2o_file.erl#L13
Andy
@m-2k
Jan 09 2016 14:07
если хочешь писать файлы с одинаковыми именами в одну директорию - надо отправлять из JS указывая кастомное имя файла (например дату). так как имя файла в связи со спецификой почанковой передачи нельзя изменить на сервере - оно как бы является идентификатором сессии (Name) для каждого юзера при передаче
Name={Sid,filename:basename(FileName)},
***
n2o_async:start(#handler{module=?MODULE,class=file,group=n2o,state=FTP2,name=Name}),
heiheshang
@heiheshang
Jan 09 2016 14:30
чет не получается просто переопределить, валится сервак с ошибкой
Namdak Tonpa
@5HT
Jan 09 2016 14:34
@fxmy explained wery well
you can introduce your own naming scheme by specifying custom module and filename function in it.
fxmy wang
@fxmy
Jan 09 2016 14:39
that is indeed very flexible design :+1:
Namdak Tonpa
@5HT
Jan 09 2016 14:41
thanks to @m-2k he was requested that
heiheshang
@heiheshang
Jan 09 2016 14:59
как это изменить ?
Name={Sid,filename:basename(FileName)}
Namdak Tonpa
@5HT
Jan 09 2016 15:02
а зачем это менять?
heiheshang
@heiheshang
Jan 09 2016 15:06
да хрен его знает, у меня в бесконечный цикл входит после изменения filename
fxmy wang
@fxmy
Jan 09 2016 15:34
funny story:
1)console flooded with new_sessin INFO_REPORT while no web pages to localhost:8000 is even opened
2)these messages came at a steady pace of 10min
3)every 10min will result exact one insert in cookies table with from=site & sid=undifined
4)maybe a leaked timer? found nothing..
5)try to grep '10*60' '60*10' etc. in source? found nothing..
6)finally netstat, turns out to be Transmission bittorrent client poking on local 8000 port every 10min
7)wtf :joy_cat:
Andy
@m-2k
Jan 09 2016 16:12
@5HT ok, bro