пятница, 23 января 2009 г.

Программа проверки счета в биллинговой системе UTM. Наши дни

В предыдущих записях, я познакомил вас с моим творением ( ну натворил то...), под названием UеmCheck. Было это давно, многое изменилось. А программа осталась практически на той же стадии.

Написал я её до версии 0.9.2 , а провайдер решил в это время сменить версию билинга. Менял он медленно, в начале в одном районе , потом в другом. До моего района дошло только через год. И так это меня расстроило ( вру, лень было), что бросил я программу до лучших времен. И вот таки в моем районе стоит новый билинг, и судя по всему в нем уже нельзя что то менять по своему усмотрению в интерфейсе (дает надежду на простое решение). Видимо пришло время её дорабатывать.
Сделаем пока первый "костыль" для старой версии - показ остатка на счету.

Приглядевшись к новому билингу замечаем
  1. Вход в билинг осуществляется через другой адрес. Раньше было https://server/cgi-bin/utm/aaa , а сейчас https://server/cgi-bin/utm5/aaa6 . ( хотя это у меня в районе только, в других aaa5, но мы "костыль" пишем)
  2. Вход происходит в один переход, т.е. ввели логин и пароль и мы уже на странице статистики (раньше было 2 перехода)
  3. На форме ввода логина и пароля изменилось значение скрытого параметра cmd
  4. Страница билинга сделана в формате UTF. А это в начале ставит в тупик - получается надо строки обрабатывать в UTF, соответственно другие функции и тому подобное. А глядя на перемешку TCHAR и CHAR в коде, становится уныло. Но ведь любой UTF представим в нашей кодировке тоже, но "корявыми" символами. А они как раз умещаются в тип CHAR. Таким образом искомая нами строка будет
    Баланс основного счета</TD><TD class=\"utm-table\" align=\"left\">
    Только вот в строке есть переход на новую строку. Т.к. вся система рассчитана на nix системы, то код символа перехода строки "x0A".
  5. В нашем городе нету тарифов с предоплаченным трафиком, так что это мы обновлять не будем - протестировать не начем.

Определившись с нововведениями, начнем править код. Нужно изменить следующее:
в файле UtmCheck.cpp строку
GetPrivateProfileString(_T("Settings"),_T("balans"),_T("Баланс (руб.)</TD><TD width=50% bgcolor=#FFFFFF>"),
меняем на
GetPrivateProfileString(_T("Settings"),_T("balans"),_T("Баланс основного счета</TD>\x0A<TD class=\"utm-table\" align=\"left\">"),
в файле inet.cpp  строку
const char* FirstPage="/cgi-bin/utm/aaa";
меняем на
const char* FirstPage="/cgi-bin/utm5/aaa6 ";
( пробела между 6 и " нету, проблема с отображением)
strcat(param,"&cmd=user_verify");
меняем на
strcat(param,"&cmd=login");
блок
if (!GetTextFromPage(strs,FistTagLink,LastTagLink,buffer))
{
return ERROR_READ_DATA;
}
strs.clear();
//second page
int e1;
if ((e1=GetWebPage(hConnect,VerbGet,buffer,"",&strs))!=ERROR_NO) return e1;
закомментируем.

Теперь компилируем, и в итоге получаем рабочий вариант для UTM 5 версии.

UtmCheck_src0.9.3.zip - текущий рабочий комплект
UtmCheck_src.zip - исходники на Visual C++ 2005 текущей версии

4 комментария:

  1. server=bill.8mkr.ru или ip адресс
    пароль надо вводить через окно настроек, там он немного шифруется

    ОтветитьУдалить
  2. Оооооо!!! курто! заработало! Курто, Леха!
    Давай, еще надо бы сделать платежи через прогу....
    И ваааще шикарно будет!

    ОтветитьУдалить
  3. 05/26/11 09:49:12 Ошибка 12045
    в чем проблема?

    ОтветитьУдалить
  4. в том, что страница биллинга изменилась, и программа уже не работает

    ОтветитьУдалить