Roman Pogosyan Опубликовано: August 9, 2011 at 11:11 Опубликовано: August 9, 2011 at 11:11 Вот слегка модифицировал стг для того чтоб не лезть в базу сторонними скриптами для получения названия тарифа извините диф делать не смогу (много чего переделывал и не все пока работает) но кому нузхно могут дописать и так в файле 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 Опубліковано: August 10, 2011 at 07:34 Опубліковано: August 10, 2011 at 07:34 Вместо 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 Опубліковано: August 10, 2011 at 08:46 Автор Опубліковано: August 10, 2011 at 08:46 Вместо 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 Опубліковано: August 10, 2011 at 09:13 Опубліковано: August 10, 2011 at 09:13 ... В принципе все то же самое , преобразование в стринг а потом в чар, только сточек меньше П.С. Я не занимаюсь проф программированием , скорее это хобби и иногда по нужде так что оптимальный код реально не выдам просто исходя из костылей для нарезки скорости название тарифа надо было запихнуть , вот и запихнул видал тут народ делился скриптами в выковыриванием из файловой бд, для базы это еще куча строчек , вот решил подправить и поделится, кстате сделал так же отображение тарифа в клиенте , тоже нужная фишка для "современного" зверя. в будущем если будет время попытаюсь на .NET переложить код для более "современных" форм клиента. Просто перекладывать на .NET структуры довольно жуткая возьня Нет, не то же самое. Нет промежуточного преобразования в std::string. ConstData() возвращает константную ссылку на внутреннее представление. И в char * тоже преобразования нет, т.к. c_str() возвращает константный указатель на внутренний буфер. Т.е. это последовательный доступ к "потрохам" поля tariffName. После компиляции со включенным -finline-functions (включается на самом низком уровне оптимизации, т.е. почти всегда) вызовов ConstData() и c_str() не останется, будет только работа со внутренним буфером напрямую. По поводу отображения тарифа в авторизаторе - патчи есть? Могу включить в основное дерево.
Zero_real Опубліковано: August 10, 2011 at 09:50 Опубліковано: August 10, 2011 at 09:50 Хотелось бы и передачу тарифа включить в основное дерево...
Roman Pogosyan Опубліковано: August 10, 2011 at 09:55 Автор Опубліковано: August 10, 2011 at 09:55 Патчей нет могу написать что проделал
Roman Pogosyan Опубліковано: August 10, 2011 at 10:32 Автор Опубліковано: August 10, 2011 at 10:32 В принципе вот все что было изменено буквально 6 строчек кода Tarif_out_todo.doc
madf Опубліковано: August 10, 2011 at 10:43 Опубліковано: August 10, 2011 at 10:43 Хотелось бы и передачу тарифа включить в основное дерево... Только в виде конфигурируемого списка параметров
madf Опубліковано: August 10, 2011 at 10:47 Опубліковано: August 10, 2011 at 10:47 В принципе вот все что было изменено буквально 6 строчек кода doc, ужас какой. Тут бы хватило простого текстового файла или даже ссылки на pastebin. AliveSyn6 можно было не трогать, это поддержка старого протокола. Классический авторизатор с этим, скорее всего, работать не будет или будет глючить.
Roman Pogosyan Опубліковано: August 10, 2011 at 10:49 Автор Опубліковано: August 10, 2011 at 10:49 В принципе вот все что было изменено буквально 6 строчек кода doc, ужас какой. Тут бы хватило простого текстового файла или даже ссылки на pastebin. AliveSyn6 можно было не трогать, это поддержка старого протокола. Классический авторизатор с этим, скорее всего, работать не будет или будет глючить. Если не менять клиента он работает покрайней мере мой работал просто в лабле всего 4 буквы писал я голову ломал в чем дело , потом долшло что либы пересобрать надо было На счет дока просто описал поподробнее если кому надо до релиза доделать (если впишите в релиз)
madf Опубліковано: August 10, 2011 at 11:21 Опубліковано: August 10, 2011 at 11:21 В принципе вот все что было изменено буквально 6 строчек кода doc, ужас какой. Тут бы хватило простого текстового файла или даже ссылки на pastebin. AliveSyn6 можно было не трогать, это поддержка старого протокола. Классический авторизатор с этим, скорее всего, работать не будет или будет глючить. Если не менять клиента он работает покрайней мере мой работал просто в лабле всего 4 буквы писал я голову ломал в чем дело , потом долшло что либы пересобрать надо было На счет дока просто описал поподробнее если кому надо до релиза доделать (если впишите в релиз) Просто повезло что поле status в AliveSyn8 не используется. Ну в таком виде оно точно в код не попадет. Тут надо в отдельную версию протокола его вынести, типа AliveSyn9.
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас