Page 18 of 49

Posted: 03 Jan 2009, 22:27 Sat
by vladra
Rand26 wrote: Все сделал как написано преустановил все пару раз та и не полуилось добится предачи ссылок с рапиды в usd, может в следущей версии сделаете чтоб плагин сразу предавал ссылки с рапиды в usd, тогда бы цены ему небыло бы!
У меня тоже такое было, решилось банальным перезапуском ДМ.

А вот добавить ограничение на кличество одновременно скачиваемых одним пользователем файлов непомешало...

Posted: 04 Jan 2009, 7:44 Sun
by Korney San
vladra wrote:А вот добавить ограничение на кличество одновременно скачиваемых одним пользователем файлов непомешало...
Смысл?

Posted: 04 Jan 2009, 8:53 Sun
by vladra
Korney San wrote:
vladra wrote:А вот добавить ограничение на кличество одновременно скачиваемых одним пользователем файлов непомешало...
Смысл?
Если ДМ пользуют через плуг несколько человек, то наверняка возникнет ситуация когда ктото поставит на закачку много файлов одновременно, соответственно остальные будут ждать закачки своих файлов очень долго.

Posted: 04 Jan 2009, 10:56 Sun
by x2088
У меня UserGate с портом 3128. При этом плаг никак не конектится ни на HTTPS, ни на HTTP. Старый плаг подключается, но толку теперь с него...

Posted: 04 Jan 2009, 19:54 Sun
by Korney San
vladra wrote:Если ДМ пользуют через плуг несколько человек, то наверняка возникнет ситуация когда ктото поставит на закачку много файлов одновременно, соответственно остальные будут ждать закачки своих файлов очень долго.
Может, ещё и ограничение на общий размер добавляемых файлов накладывать? И количество добавляемых файлов в час?
x2088 wrote:У меня UserGate с портом 3128.
У меня на работе тоже UserGate. Правда, для ICQ выделен свой IP и порт, но - как ни странно, подключается, правда, только по HTTPS - по HTTP не хочет. Ку?

P.S. I'm at home... :)

Posted: 08 Jan 2009, 11:41 Thu
by x2088
Korney San, скажите пожалуйста - как на нём порты открывать, а? У меня v2.8...

Posted: 08 Jan 2009, 12:09 Thu
by Korney San
x2088 wrote:Korney San, скажите пожалуйста - как на нём порты открывать, а? У меня v2.8...
Без понятия. Сам не устанавливал и не смотрел, на работе им владеют админы. Знаю только, что версия у него 4.x...

Posted: 08 Jan 2009, 14:57 Thu
by jaded
vladra wrote:
Rand26 wrote: Все сделал как написано преустановил все пару раз та и не полуилось добится предачи ссылок с рапиды в usd, может в следущей версии сделаете чтоб плагин сразу предавал ссылки с рапиды в usd, тогда бы цены ему небыло бы!
У меня тоже такое было, решилось банальным перезапуском ДМ.

А вот добавить ограничение на кличество одновременно скачиваемых одним пользователем файлов непомешало...
http://rapidshare.com/files/180184887/M ... .part1.rar

Закачки с файлообменников работают через раз... А задумка вообще хорошая :)

Posted: 08 Jan 2009, 14:59 Thu
by G0rdon
Ужос....
незнаю как в плагине работает подключение и переподключение,но с ним проблемы..
У меня на компе работает нормально,на другом не переподключается....
Хотя плагин-альтернатива переподключается ...
хотелось бы посмотреть на код(часть кода) отвечающая за переподключение..

Posted: 08 Jan 2009, 15:11 Thu
by jaded
G0rdon wrote:Ужос....
незнаю как в плагине работает подключение и переподключение,но с ним проблемы..
У меня на компе работает нормально,на другом не переподключается....
Хотя плагин-альтернатива переподключается ...
хотелось бы посмотреть на код(часть кода) отвечающая за переподключение..
Компонента TICQClient

Posted: 08 Jan 2009, 17:48 Thu
by Korney San
G0rdon wrote:хотелось бы посмотреть на код(часть кода) отвечающая за переподключение..
Я уже писал три страницы назад:
Работа с подключением идёт так.
Запускается подключение и фиксируется факт этого.
При подключении фиксируется его факт.
При перехвате отключения и установленной опции "Переподключаться" идёт переподключение.
Ежеминутно выполняется проверка на соответствие состояния подключения зафиксированным фактам.
Если фиксировалось, что плагин подключился, а сейчас он реально отключён - идёт переподключение.
Естественно, что в компоненте на все события, отвечающие за обработку ошибок, повешены соответствующие процедуры.

Попробуйте сменить сервер ICQ.

Posted: 08 Jan 2009, 23:59 Thu
by G0rdon

Code: Select all

Работа с подключением идёт так. 
Запускается подключение и фиксируется факт этого. 
При подключении фиксируется его факт. 
При перехвате отключения и установленной опции "Переподключаться" идёт переподключение. 
Ежеминутно выполняется проверка на соответствие состояния подключения зафиксированным фактам. 
Если фиксировалось, что плагин подключился, а сейчас он реально отключён - идёт переподключение.
вот,хотелось бы посмотреть на реализованную практическую часть..
Мой вариант(не проверял блин пока на том компе,на которои не подключилось,у меня работает на ура(вроде))

procedure TForm1.Timer1Timer(Sender: TObject);\\тамер каждую минуту
begin
if IcqClient1.LoggedIn = false then connect;
end;

procedure TForm1.connect;
begin
Label4.caption:='connecting';
IcqClient1.UIN:=StrToInt(Edit3.Text);
IcqClient1.Password:=(Edit4.Text);
ICQClient1.ConvertToPlaintext:=true;
Icqclient1.Login(0);
end;

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

Posted: 09 Jan 2009, 9:25 Fri
by Korney San
G0rdon wrote:хотелось бы глянуть как переподключение реализовано у вас)
Раз пошла такая пьянка...

Code: Select all

procedure TDMTestPlugIn.ICQLogin(Sender: TObject);
begin { ICQ ОНЛАЙН }
...
 WasConnected:=true;
 WasDisconnected:=false;
 Connecting:=false;
...
end;

procedure TDMTestPlugIn.ICQLogOff(Sender: TObject);
begin { ICQ ОФФЛАЙН }
...
 WasConnected:=false;
 WasDisconnected:=false;
 Connecting:=false;
...
end;

procedure TDMTestPlugIn.ICQServerDisconnect(Sender: TObject; Reason: LongInt; Description: string);
begin // ICQ - Сервер отключил
 WasDisconnected:=true;
end;

procedure TDMTestPlugIn.ICQConnectionFailed(Sender: TObject);
begin // ICQ - не удалось подключиться
 WasDisconnected:=true;
 Connecting:=false;
end;

procedure TDMTestPlugIn.CommonInit;
begin
 ...
 //ICQ init
 Application.CreateHandle;             // убирает тормоза
 ICQ:=TICQClient.Create(Application);  // при ответе ICQ
 ICQ.OnMessageRecv := ICQMsgRecv;
 ICQ.OnError := ICQError;
 ICQ.OnLogin := ICQLogin;
 ICQ.OnLogOff := ICQLogOff;
 ICQ.OnUserInfoShort := ICQInfoShort;
 ICQ.OnInfoChanged := ICQInfoChanged;
 ICQ.TypingNotifications:=true;
 ICQ.ConvertToPlaintext := True;
 ICQ.DisableDirectConnections:=true;
 //отключения
 ICQ.OnServerDisconnect := ICQServerDisconnect;
 //авторизация
 ICQ.OnAuthRequest := ICQAuthRequest;
 //
 ...
 WasConnected:=false;
 WasDisconnected:=false;
 Connecting:=false;
 ...
end;

procedure TDMTestPlugIn.ICQSetup;
 var
  i: Integer;
  s: String;
begin
 ICQ.UIN:=Sets[cBotUIN];
 ICQ.Password:=[censored];
 ICQ.SecureLogin := True;
 i:=Sets[cNetServer];
 s:=Sets[cNetServers];
 if WordCount(s, [','])<(i+1) then
  begin
   i:=0;
   Sets[cNetServer]:=i;
  end;
 ICQ.ICQServer := ExtractWord(i+1, s, [',']);
 ICQ.ICQPort := Sets[cNetPort];
 case Sets[cProxyType] of
  1: ICQ.ProxyType:=P_HTTP;
  2: ICQ.ProxyType:=P_HTTPS;
  3: ICQ.ProxyType:=P_SOCKS4;
  4: ICQ.ProxyType:=P_SOCKS5;
  else
    ICQ.ProxyType:=P_NONE;
  end;
 ICQ.ProxyHost:=Sets[cProxyHost];
 ICQ.ProxyPort:=Sets[cProxyPort];
 ICQ.ProxyAuth:=Sets[cProxyAuth];
 ICQ.ProxyUserID:=Sets[cProxyLogin];
 if Sets[cProxyLogin]='' then
   ICQ.ProxyPass:=''
 else
   ICQ.ProxyPass:=[censored];
 ICQ.ProxyResolve := ICQ.ProxyType<>P_NONE;                     
end;

procedure TDMTestPlugIn.ConnectICQ;
begin
 ...
 ICQ.Login(S_ALLOWDAUTH);    //ВАЖНО! указанноый статус позволяет
                             //избежать завечивания IP адреса
 //
 WasConnected:=false;
 Connecting:=true;
...
end;

procedure TDMTestPlugIn.DisconnectICQ;
begin
...
 ICQ.LogOff;
 //
 WasDisconnected:=false;
 Connecting:=false;
end;

procedure TDMTestPlugIn.ICQError(Sender: TObject; ErrorType: TErrorType; ErrorMsg: String);
begin { ICQ - Ошибка }
...
 case ErrorType of
  ERR_SOCKET:
   begin
    if Sets[cShowErrorPopups] then
      PopUp('Socket '+BoolToStr(ICQ.LoggedIn, true)+#13+ErrorMsg, ptError);
   end;
  ERR_PROXY:
   begin
    if Sets[cShowErrorPopups] then
      PopUp('Proxy '+BoolToStr(ICQ.LoggedIn, true)+#13+ErrorMsg, ptError);
   end;
  ERR_PROTOCOL:
   begin
    if Sets[cShowErrorPopups] then
      PopUp('Protocol '+BoolToStr(ICQ.LoggedIn, true)+#13+ErrorMsg, ptError);
   end;
  ERR_CONNTIMEOUT:
   begin
    if Sets[cShowErrorPopups] then
      PopUp('Timeout '+BoolToStr(ICQ.LoggedIn, true)+#13+ErrorMsg, ptError);
   end;
  end;
 //
 if not ICQ.LoggedIn and WasConnected then
   WasDisconnected:=true;
 Connecting:=false;
end;

function TDMTestPlugIn.EventRaised(eventType: WideString; eventData: WideString): WideString;//вызывается из ДМ-ма при возникновении какого либо события
...
begin
 if eventType = 'plugin_start' then
   Enabled:=true;
 if eventType = 'plugin_stop' then
   Enabled:=false;
 if (eventType = 'dm_timer_60') then
  begin
   if ICQ.LoggedIn then //подключены?
    begin
     ICQ.SendKeepAlive; //поддерживаем соединение
     ICQSetXStatus;
    end
   else //выбило?
    begin
     if (WasDisconnected or WasConnected) and Sets[cBotReConnect] then
      begin
       if WasConnected and not WasDisconnected then
        begin
         if Sets[cShowErrorPopups] then
           PopUp('Неизвестная ошибка отключения от сети!', ptError);
        end;
       ConnectICQ;
      end;
    end;
   ...
  end;
...
end;
Подключение выполняется через процедуру ConnectICQ, отключение - DisconnectICQ.

Posted: 09 Jan 2009, 14:12 Fri
by G0rdon
Вроде нормально,все должно работать((
Я вот только не понял зачем нужна проверка в function TDMTestPlugIn.EventRaised
if (WasDisconnected or WasConnected) and Sets[cBotReConnect]
зачем (WasDisconnected or WasConnected)?кажется без него было бы лучше....


ЗЫ:код кстати можно оптимизировать...
много ненужных beginов))

Posted: 09 Jan 2009, 16:21 Fri
by Korney San
G0rdon wrote: Я вот только не понял зачем нужна проверка в function TDMTestPlugIn.EventRaised
if (WasDisconnected or WasConnected) and Sets[cBotReConnect]
зачем (WasDisconnected or WasConnected)?
Чтобы разбираться, когда плагин выбило, а когда диспетчер кнопку нажал...
G0rdon wrote: ЗЫ:код кстати можно оптимизировать...
много ненужных beginов))
Это Вы скажите компилятору, у которого без этих beginов не все варианты отрабатывают...