vovksextra
СitizensТип контенту
Профили
Форум
Календарь
Все, що було написано vovksextra
-
Для того что-бы поддержать VOP я немного полазил в коде и вот что обнаружил. Подправьте меня если я не прав )))) где-то в коде if (store->SaveUserConf(uc, login)) { WriteServLog("Cannot write conf for user %s.", login.c_str()); WriteServLog("%s", store->GetStrError().c_str()); printfd(__FILE__, "Cannot write conf for user %s.\n", login.c_str()); printfd(__FILE__, "%s\n", store->GetStrError().c_str()); return -1; } Смотрим что делает SaveUserConf int FILES_STORE::SaveUserConf(const USER_CONF & conf, const string & login) const { string fileName; fileName = storeSettings.GetUsersDir() + "/" + login + "/conf"; BAK_FILE bakFile(fileName); CONFIGFILE cfstat(fileName); int e = cfstat.Error(); if (e) { errorStr = string("User \'") + login + "\' conf not written\n"; return -1; } chmod(fileName.c_str(), storeSettings.GetConfMode()); chown(fileName.c_str(), storeSettings.GetConfUID(), storeSettings.GetConfGID()); cfstat.WriteString("Password", conf.password); cfstat.WriteInt ("Passive", conf.passive); cfstat.WriteInt ("Down", conf.disabled); cfstat.WriteInt ("AlwaysOnline", conf.alwaysOnline); cfstat.WriteString("Tariff", conf.tariffName); cfstat.WriteString("Address", conf.address); cfstat.WriteString("Phone", conf.phone); cfstat.WriteString("Email", conf.email); cfstat.WriteString("Note", conf.note); cfstat.WriteString("RealName", conf.realName); cfstat.WriteString("Group", conf.group); cfstat.WriteDouble("Credit", conf.credit); cfstat.WriteString("TariffChange", conf.nextTariff); char userdataName[12]; for (int i = 0; i < USERDATA_NUM; i++) { sprintf(userdataName, "Userdata%d", i); cfstat.WriteString(userdataName, conf.userdata[i]); } cfstat.WriteInt("CreditExpire", conf.creditExpire); stringstream ipStr; ipStr << conf.ips; cfstat.WriteString("IP", ipStr.str()); return 0; } Казалось бы где ошибка????? 1. Нету проверки - создан ли bak файл !!!! 2. Создается класс CONFIGFILE cfstat(fileName) - файл открывется для записи , ноооооооооооооооо где fclose ???????????????????????? или flush ????????????? я так понимаю после того как мы создали класс и с ним поработали нужно вызвать деструктор, в деструкторе как минимум должно стоять fclose ???? Значит файл мы не закрываем. Дык открыть для записи открыли- что-то туда записали, а скинуть буффер на диск не скинули !!! Подправьте меня если я не прав
-
ладно.вбей в поле пароль "/><t = 45 и повтори эту же строчку ))) подтверждается - сервер отрапортавал об ошибке в парсинге строки можно посидеть и придумать строчку, которая положит сервер. )))) проверяй еще раз
-
так как ряд багов возникает при работе конфигуратора, я предлагаю, перед передачей пакета в виде XML структуры на сервер (перед вызовом Trans ) записывать ее в некий лог в читабельном виде. При возникновении бага - достаточно отправить эту структуру разработчику и ему будет нагляднее видно что отправляется и как с этим бороться. например, я могу в адресе пользователя написать адрес: "/> и снова баг )))
-
Выложил последний релиз inetaccess (1.0.9.2) для компиляции нужно проинсталить пару компонент (все включено в архив) Основные изменения 1. Отказался от сокетов - админпанель с авторизатором работает по UDP 2. немного "вылизан" код 3. добавилось много команд CommandArray[0].Name := 'msg'; CommandArray[1].Name := 'ver'; CommandArray[2].Name := 'lgn'; CommandArray[3].Name := 'setlgn'; CommandArray[4].Name := 'psw'; CommandArray[5].Name := 'setpsw'; CommandArray[6].Name := 'iptable'; CommandArray[7].Name := 'nictable'; CommandArray[8].Name := 'routetable'; CommandArray[9].Name := 'cntable'; CommandArray[10].Name := 'cnextable'; CommandArray[11].Name := 'killproc'; CommandArray[12].Name := 'getrun'; CommandArray[13].Name := 'dir'; findip - ищет всех юзеров
-
А чего ждать - в шапке все рабочее - проверяй )) выложил версию 1.0.0.5 - снято ограничение на пополнение счета Планируется выход полноценной компоненты. В серверной части обнаружен мелкий баг - это сдерживает разработку. madf - обещал разобраться с багом ))) Спасибо ему )))
-
Еще не определились что с ней делать. Просто идея возникла спонтанно и компонента была написана за 3 дня и выложена как бетка. Но навсякий случай сделали ограничение. И еще если у тебя есть время сделаешь als файлик? strSetParamsOfConnection = 'SetParamsOfConnection,УстановитьПараметрыПодключения,ВстановитиПараметриПідключення'; strGetTableUsers = 'GetTableUsers,ПолучитьТаблицуПользователей,ОтриматиТаблицюКористувачів'; strGetUserCash = 'GetUserCash,ПолучитьОстатокПользователя,ОтриматиЗалишокКористувача'; strGetUserName = 'GetUserName,ПолучитьИмяПользователя,ОтриматиІмяКористувача'; strGetUserAddress = 'GetUserAdress,ПолучитьАдресПользователя,ОтриматиАдресуКористувача'; strGetUserTariff = 'GetUserTariff,ПолучитьТарифныйПланПользователя,ОтриматиТарифнийПланКористувача'; strGetUserIp = 'GetUserIp,ПолучитьИППользователя,ОтриматиИПКористувача'; strGetUserPhone = 'GetUserPhone,ПолучитьНомерТелефонаПользователя,,ОтриматиНомерТелефонуКористувача'; strAddUserCash = 'AddUserCash,ПополнитьСчетПользователя,ПоповнитиРахунокКористувача'; strErrorMessage = 'ErrorMessage,СтрокаОшибки,СтрокаПомилки'; думаю разберешься
-
Не там искал - баг нашелся чуток раньше Забери 1,0,0,4 и пробуй еще раз )) спасибо
-
по-поводу внешних компонент на 7ку и 8ку - я сам знаю )) В следующий раз подправлять не нужно )) 1С - основная моя работа - все остальное хобби )) Проблема где-то здесь то-есть код не видит признак окончания строки и еще раз пытается получить данные из сокета, которыых уже нет ((( По-этому и выдается такое сообщение как у тебя (RECV_DATA_ANSWER_ERROR) где глюк не вижу- может тебе что-то на ум прийдет. У меня все работает .х-з куда рыть дальше function TNetTransact.RxDataAnswer: Integer; var n: Integer; ret: Integer; bufferS: TCryptBuff; buffer: TCryptBuff; j: Integer; Len: Integer; Flag: Boolean; begin n := 0; FStream.Clear; EnDecryptInit(password, strlen(password)); Flag := True; while Flag do begin ret := winsock.recv(outerSocket, bufferS[n], 1, 0); if ret <= 0 then begin winsock.closesocket(outerSocket); strcpy(errorMsg, RECV_DATA_ANSWER_ERROR); result := st_recv_fail; exit; end; inc(n); if n = 8 then begin n := 0; len := 8; Decrypt(@buffer, bufferS); for j := 0 to 7 do if buffer[j] = #0 then begin len := j; flag := False; end; if Len <> 0 then FStream.Write(buffer, len); end; end; FStream.Position := 0; result := st_ok; end;
-
хм... Скажи полную версию сервера, я проверю. У мну все работает... проверь версию файла (свойства файла) - должно быть 1,0,0,3 и в какой платформе подключаешь? Если на 8-ке попробуй на 7-ке?
-
Вдогонку обновил 1.0.0.3 - эта точно должна работать
-
Вдогонку вроде бы нашел свой баг. При получении данных из сокета неправильно определял когда закончить прием. Подправил - забери из шапки обновленную версию (1.0.0.2) - проверь спасибо
-
stg-2.402.9.7 + 7.70.025 - проверялось - работает за основу были взяты исходники конфигуратора 1.88.9 1. Проверку на длину строк не делал - незачем - бага всеравно не будет - в сокет передается только то что нужно.Вырезка из кода: var loginZ: array[0..ADM_LOGIN_LEN - 1] of char; ............ ............ begin ......... ......... fillchar(loginZ, ADM_LOGIN_LEN, #0); strncpy(loginZ, login, ADM_LOGIN_LEN); 2. Я использую Trim внутри 3. По-поводу сохранений - включи - я переделывал из другой обработки.)) Это всего лишь наброска сделанная за 5 минут )) Насчет нового сервера - отпиши мне какой конфигуратор используешь я сравню изменения Судя по ошибке - у тебя прошли проверки на заголовок,логин,пароль и даже данные отправил, только вот получить не удалось - нужно смотреть - я поссмотрю в чем может быть проблема И опиши когда ошибка возникает при загрузке таблицы пользователей или при попытке деньги добавить
-
По-поводу преимущества SQL - очень все просто За сохранения целостности базы данных и за их надежность - будет отвечать СУБД ))
-
Перечитал тему по поводу связки билинга с 1С и не придумал ничего лучшего чем написать компоненту под 1С выкладываю пробную версию компоненты и внешнюю обработку (1С77) с примером использования. Документацию и файлик с расширением als выложу когда сделаю )) версия 1.0.0.5 Берем здесь версия 2.0.1.6 (с исходниками) Берем здесь Для желающих оказать материальную поддержку в WMZ: Z339491627945 Для разбора XML структуры были использованы классы (На мой взгляд самые лучшие) реализованные в модуле GsvXml.pas - размер всего 62к (релизация DOM и SAX парсера) Автор Гурин Сергей Сайт автора http://gurin.tomsknet.ru/delphixml.htm В общем обсуждаем здесь PS Отдельное спасибо коллективу сети http://komservice.net/ за оказанную поддержку и моральную и техническую.
-
А может хорош флудить - и будем выдвигать конструктивные решения
-
Я согласен что тема про файловое хранилище обсасывалсь 1000 раз - но решений найдено небыло. А надеяться на бэкапы и на UPS - это бред. VOP совершенно прав. Может быть в окончательном релизе вообще выбросить файловый стораж - раз решений не найдено и остановится на СУБД. Ведь тема будет всплывать постоянно )) У меня сложилось такое мнение что автор(ы) вообще никого не хотят слушать. А используют ветку старгейзера только для исправления своих багов. Ведь техплощадка получается неплохая. пост с критикой - но это ведь правда )))
-
Хотелось бы иметь такую возможность
тема ответил в fredik пользователя vovksextra в Розробка Stargazer
Насчет идеек я тебе могу сказать одно - в теме про биллинг Старгейзер - идейки НЕПРИНИМАЮТСЯ - юзай то что есть и скажи спасибо и за это ))) -
дело не в исходниках ))
-
Совсем согласен.Работы у stg34 - действительно много.Но есть глобальные проблемы которые не решаются и которые не воспринимаются всерьез, например файлы статистики после довна становятся нулевыми.Нужно делать ребут а потом выключать.Уже раз попались с последствиями нехорошими. Можно мотивировать тем что используй MySQL или FireBird .... но факт есть факт.н это так мысли вслух. Суть нашего проекта была найти и применить некие идеи, которые бы облегчили-бы жизнь админам. Пусть даже в такой мелочи как авторизатор.Но есть одно но - он стоит на каждой машине ! Следовательно можно просто контролировать пользователей, а не думать как купить управляемый свич и т.д. теперь что касается моего предыдущего поста процедуру SetDirNameFromIni() - нельзя сделать методом класса ибо работать не будет. Пришлось бы переделывать класс TClentProt - особенно мне не понравилось как там реализован поток на прием сообщений. По-этому пошли по пути наименьшего сопротивления - некрасивый код просто.Не совсем "красивая" реализация.
-
По-поводу "ДЫРЫ" - спорить не буду ......оставим без комментариев Фраза мне не нравится делфи сразу вызывает у меня ответную реакцию на ниже приведенный код: void SetDirNameFromIni() { int k = 0, n = 1; for (int j = 0; j < DIR_NUM; j++) { if (settings.dirName[j][0] != 0) k++; } if (k == 0) { MainForm->StatGrid->RowCount = 2; особенно интересна последняя строчка - но зато написано на СИ а разрываться на несколько платформ - напоминает мне резюме программиста с его знанием и того и сего. Не место сейчас спорить какая среда разработки лучше, а какая хуже. Конечному пользователю все-равно на чем написано. А вообщем я о чем исходники авторизатора 2.60 засветятся ?
-
мда глубокий оффтоп ((( такое ощущение что здесь сидят одни флудеры ))) мне бы больше конструктивных решений всеж по данной теме )) Я понимаю иронию stg34 в каждом его посте, ибо зачем ему все это. Но значит чего-то заводит его. А поводу статической таблицы АРП - так это абсолютно не моя идея, а в случае невозможности строить сеть с управляемыми свичами - это единственное правильное решение. Ежели нет докажите обратное.
-
что значит хаков с АРП? а не проще ли сразу от каждого юзера к серверу по витой паре проложить? И отключать легче ))
-
Пардон не совсем корректно задал вопрос. Как заставить винду не обновлять динамически ARP таблицу. Допустим я забил статически адреса и маки, но при обращении к некому айпи таблица дописывает его адрес и мак динамически. Как избавится от него перерыл MSDN - ничего похожего не нашел - можно время просто задать на автообновление, но это проблему все-равно не решает. Как навечно избавиться от автообновления
-
прочитай интересную статейку http://xgu.ru/wiki/ARP-spoofing может и поможет тебе как-то
-
К сожалению проект перешел в рамки нашей сети (уже имеется релиз 1.05с) было реализовано еще несколько комманд: 1. проссмотр таблицы соединений (все приложения, которые висят на tcp и udp портах) 2. Возможность удаления процесса 3. Возможность проссмотра секции run реестра 4. и т.д Были внесены изменения (в лучшую сторону) в интерфейс И самое главное - планируется внести изменения по шифрованию пакетов как в авторизаторе так и на самом сервере, по-этому выкладывать исходники - смысла нет (( Но всем кто хочет оказать помощь могут писать модуля команд. Пример реализации можно поссмотреть в: CommandUnit.pas и NetCommandUnit.pas Оказавшим помощь - будут выданы новые релизы И еще прошу оказать помощь с одним вопросом как в винде отключить использование ARP на сетевых интерфейсах ????? (всякие там снифферы спуферы не предлагать )) ) И возможно ли это (пусть даже на уровне ядра) и как ?
