Roman Pogosyan 3 Опубликовано: 2011-08-09 11:11:22 Share Опубликовано: 2011-08-09 11:11:22 Вот слегка модифицировал стг для того чтоб не лезть в базу сторонними скриптами для получения названия тарифа извините диф делать не смогу (много чего переделывал и не все пока работает) но кому нузхно могут дописать и так в файле projects/stargazer/user_impl.cpp находим string scriptOnConnect = blablabla Дописываем после етой строчки string tarifname; tarifname.append(tariffName); далее находим strprintf(&scriptOnConnectParams, blablabla и переделываем ее в такой вид strprintf(&scriptOnConnectParams, "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"\"%s\"", scriptOnDisonnect.c_str(), login.c_str(), inet_ntostring(lastIPForDisconnect).c_str(), (double)cash, id,tarifname.c_str(), dirsStr); компилируем и заменяем файл stargazer из projects в /usr/sbin теперь в скрипте onConnect параметр $5 означает имя тарифа То же самое проделываем с string scriptOnDisconnect для получаения тарифа в скрипте дисконекта Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-08-10 07:34:09 Share Опубліковано: 2011-08-10 07:34:09 Вместо string tarifname; tarifname.append(tariffName); и strprintf(&scriptOnConnectParams, "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"\"%s\"", scriptOnDisonnect.c_str(), login.c_str(), inet_ntostring(lastIPForDisconnect).c_str(), (double)cash, id,tarifname.c_str(), dirsStr); проще сделать так: strprintf(&scriptOnConnectParams, "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"\"%s\"", scriptOnDisonnect.c_str(), login.c_str(), inet_ntostring(lastIPForDisconnect).c_str(), (double)cash, id,tariffName.ConstData().c_str(), dirsStr); Да и вообще, вместо конструирования и вызова append можно обойтись одним конструированием: std::string tariffname(tariffName); Но предыдущий вариант предпочтительнее, т.к. не требует дополнительной памяти, тактов процессора и строк кода. А вообще в планах есть реализация настраиваемого списка параметров, как это сделано в rscriptd. Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-08-10 08:46:01 Автор Share Опубліковано: 2011-08-10 08:46:01 Вместо string tarifname; tarifname.append(tariffName); и strprintf(&scriptOnConnectParams, "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"\"%s\"", scriptOnDisonnect.c_str(), login.c_str(), inet_ntostring(lastIPForDisconnect).c_str(), (double)cash, id,tarifname.c_str(), dirsStr); проще сделать так: strprintf(&scriptOnConnectParams, "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"\"%s\"", scriptOnDisonnect.c_str(), login.c_str(), inet_ntostring(lastIPForDisconnect).c_str(), (double)cash, id,tariffName.ConstData().c_str(), dirsStr); Да и вообще, вместо конструирования и вызова append можно обойтись одним конструированием: std::string tariffname(tariffName); Но предыдущий вариант предпочтительнее, т.к. не требует дополнительной памяти, тактов процессора и строк кода. А вообще в планах есть реализация настраиваемого списка параметров, как это сделано в rscriptd. В принципе все то же самое , преобразование в стринг а потом в чар, только сточек меньше П.С. Я не занимаюсь проф программированием , скорее это хобби и иногда по нужде так что оптимальный код реально не выдам просто исходя из костылей для нарезки скорости название тарифа надо было запихнуть , вот и запихнул видал тут народ делился скриптами в выковыриванием из файловой бд, для базы это еще куча строчек , вот решил подправить и поделится, кстате сделал так же отображение тарифа в клиенте , тоже нужная фишка для "современного" зверя. в будущем если будет время попытаюсь на .NET переложить код для более "современных" форм клиента. Просто перекладывать на .NET структуры довольно жуткая возьня Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-08-10 09:13:46 Share Опубліковано: 2011-08-10 09:13:46 ... В принципе все то же самое , преобразование в стринг а потом в чар, только сточек меньше П.С. Я не занимаюсь проф программированием , скорее это хобби и иногда по нужде так что оптимальный код реально не выдам просто исходя из костылей для нарезки скорости название тарифа надо было запихнуть , вот и запихнул видал тут народ делился скриптами в выковыриванием из файловой бд, для базы это еще куча строчек , вот решил подправить и поделится, кстате сделал так же отображение тарифа в клиенте , тоже нужная фишка для "современного" зверя. в будущем если будет время попытаюсь на .NET переложить код для более "современных" форм клиента. Просто перекладывать на .NET структуры довольно жуткая возьня Нет, не то же самое. Нет промежуточного преобразования в std::string. ConstData() возвращает константную ссылку на внутреннее представление. И в char * тоже преобразования нет, т.к. c_str() возвращает константный указатель на внутренний буфер. Т.е. это последовательный доступ к "потрохам" поля tariffName. После компиляции со включенным -finline-functions (включается на самом низком уровне оптимизации, т.е. почти всегда) вызовов ConstData() и c_str() не останется, будет только работа со внутренним буфером напрямую. По поводу отображения тарифа в авторизаторе - патчи есть? Могу включить в основное дерево. Ссылка на сообщение Поделиться на других сайтах
Zero_real 4 Опубліковано: 2011-08-10 09:50:24 Share Опубліковано: 2011-08-10 09:50:24 Хотелось бы и передачу тарифа включить в основное дерево... Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-08-10 09:55:25 Автор Share Опубліковано: 2011-08-10 09:55:25 Патчей нет могу написать что проделал Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-08-10 10:32:25 Автор Share Опубліковано: 2011-08-10 10:32:25 В принципе вот все что было изменено буквально 6 строчек кода Tarif_out_todo.doc Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-08-10 10:43:36 Share Опубліковано: 2011-08-10 10:43:36 Хотелось бы и передачу тарифа включить в основное дерево... Только в виде конфигурируемого списка параметров Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-08-10 10:47:25 Share Опубліковано: 2011-08-10 10:47:25 В принципе вот все что было изменено буквально 6 строчек кода doc, ужас какой. Тут бы хватило простого текстового файла или даже ссылки на pastebin. AliveSyn6 можно было не трогать, это поддержка старого протокола. Классический авторизатор с этим, скорее всего, работать не будет или будет глючить. Ссылка на сообщение Поделиться на других сайтах
Roman Pogosyan 3 Опубліковано: 2011-08-10 10:49:29 Автор Share Опубліковано: 2011-08-10 10:49:29 В принципе вот все что было изменено буквально 6 строчек кода doc, ужас какой. Тут бы хватило простого текстового файла или даже ссылки на pastebin. AliveSyn6 можно было не трогать, это поддержка старого протокола. Классический авторизатор с этим, скорее всего, работать не будет или будет глючить. Если не менять клиента он работает покрайней мере мой работал просто в лабле всего 4 буквы писал я голову ломал в чем дело , потом долшло что либы пересобрать надо было На счет дока просто описал поподробнее если кому надо до релиза доделать (если впишите в релиз) Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2011-08-10 11:21:18 Share Опубліковано: 2011-08-10 11:21:18 В принципе вот все что было изменено буквально 6 строчек кода doc, ужас какой. Тут бы хватило простого текстового файла или даже ссылки на pastebin. AliveSyn6 можно было не трогать, это поддержка старого протокола. Классический авторизатор с этим, скорее всего, работать не будет или будет глючить. Если не менять клиента он работает покрайней мере мой работал просто в лабле всего 4 буквы писал я голову ломал в чем дело , потом долшло что либы пересобрать надо было На счет дока просто описал поподробнее если кому надо до релиза доделать (если впишите в релиз) Просто повезло что поле status в AliveSyn8 не используется. Ну в таком виде оно точно в код не попадет. Тут надо в отдельную версию протокола его вынести, типа AliveSyn9. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас