Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Есть много задумок по этому поводу, но ни как не могу все мысли собрать в кучу. Ну а сейчас опишу покрайнее мере цели.
1)Программа должна подключаться к веб-серверу(или получать данные post/get) и зависимо от полученых условий, выполнять заданную ею команды.
с одной стороны тут ни чего сложного. Программа делает каждые 5 минут запрос к серверу получает данные с файла/скрипта и выполняет команду.
Но этот процесс надо както шире обдумать.
во 1 у каждой прогрммы есть свой ID по этому ID программа должна авторизоваться показывать что она онлайн. Во 2 программа например обратилась к файлу/скрипту .....1.php тот ей вернул ответ 1 значит команду надо выполнить, после выполнения, через 5 мин, программа опять обратиться к 1.php и опять тот же ответ, и не нужная команда будет выполнена. конечно это можно решить путем Обращение к файлу, получение ответа, обнуление данных в скрипте.
Но каждый раз обнулять, а в друг программа не удачно выполнила задачу. +- хочется что бы было моментальное оповещение ( обращение , получение данных) как в аське, отправка сообщения -> сервер-> получения сообщения затратра времени 3 сек(max) а в НБ если делать запрос через каждые 2-3 сек, то как помню она просто зависает пока не получит ответ, и другие параметры в это время не выполняет.
Во общем набросал тут свои мысли ( в хаотичном порядке так как сам еще не могу все соединить ) может кто то посоветует какие то алгоритмы. Идеи. писать скрипт на php не проблема. Но моя голова не хочет думать на все 100% сейчас.
кому показывать (серверу, юзеру?) и зачем? ведь еще будет гемор со сбросом состояния "онлайн"
потом, неясно что за команды (а скорее понадобится последовательность команд, сценарии). Если 1-2 то ладно, а если больше - потребуется контроль статуса выполнения каждой команды, для каждого ID. Вести базу данных чтоли?
короче попробуй упростить задачу, например без статусов и идентификации программ. Если просто - обратиться к серверу за инфой - и потом чтото выполнить - ничего сложного то не будет... Как задавать вопросы
после выполнения, через 5 мин, программа опять обратиться к 1.php
А зачем?! В этом есть смысл, если на сервере изменились какие нить данные, а так зачем гонять запросы? очередной лаунчер? если нет, то... Очередной недо-троян? Какова суть проги в связке НБ->Сервер->НБ?
Суть программы не троян ) А мониторинг за серверами и определенными программами на этих серверах. Если какойто сервер вдруг упал, об этом я должен видеть в админке сервера. Если моя программа выключилась, то она перезапускаеться + об этом должно быть видно на сервере. если программа выдала 1 из 3 ошибок, выполнить условия заложенные в нею и выполнить. +- удаленно программа должна получать данные с сервера, например все программы должны скачать себе файл, запустить установить программу. ссылку берут из запроса к серверу + порядок нажатий(выполнений команд) из сервера.
иногда надо действия выполнят 30-40 раз и более, а это облегчит задачу.
локальные задачи как сделать знаю. но все же слабая сторона НБ всегда была сеть. хотел через плагин alTCP сделать но там свои проблемы. из за этого решил НБ->сервер->нб
Добавлено (26 Июля 2014, 01:18) ---------------------------------------------
Цитатаmishem ()
Очередной вирус кражи данных?
ЦитатаСергей ()
очередной лаунчер? если нет, то... Очередной недо-троян?
да что же вы обо мне такого плохого мнения ) если надо было вирус троян итп сделать, тут уже не было бы проблем ) но это пустая трата времени, аналогов навалом + криптовать=)
очередной лаунчер? если нет, то... Очередной недо-троян?
Цитатаxaker01 ()
да что же вы обо мне такого плохого мнения )
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
во 1 у каждой прогрммы есть свой ID по этому ID программа должна авторизоваться показывать что она онлайн.
Цитатаxaker01 ()
после выполнения, через 5 мин, программа опять обратиться к 1.phpи опять тот же ответ, и не нужная команда будет выполнена.
Примерная последовательность:
1. Запуск программы, обращение к файлу auth.php с передачей уникального ID компа (воспользуйся функцией виндов GetCurrentHwProfile или аналогичным образом получи его) 2. Скрипт auth.php записывает с БД доступ с полученного ID и отмечает его как онлайн 3. Программа периодически запрашивает ответ со скрипта action.php, передавая ему ID 4. Скрипт action.php повторно записывает для ID статус "онлайн", отдаёт информацию, записывает в БД время доступа 5. Программа выполняет действие и вызывает другой скрипт, к примеру, ondone.php, передавая свой ID и результат действия 6. Пункты 3-5 повторяются 7. При выходе из программы она вызывает скрипт onexit.php, передавая ID. Скрипт записывает в базу статус "офлайн" для данного ID
Думаю, это самый простой вариант для твоей задачи. Я подобное делал. Осилишь? В принципе, пункты 1-2 можно и пропустить. катился колобок по лесу пел песню он закрыв глаза а как с открытыми катиться когда ты катишься лицом
Я бы не стал бы доверять человеку с ником xaker который просит ему помочь в удаленном управлении другими ПК.
На тему уникальных ID и прочего - не обязательно получать сразу, можно при первом запуске отправлять на сервер запрос и получать свой ID, записывать его и потом при каждом обращении слать. Сервер под каждый ID генерирует команду/команды, записывает в БД под этим ID. Клиент обращается к серверу, получает команды, сервер затирает их у себя. При желании немного расширяем, делаем каждой команде ещё и свой локальный ID, клиент же при каждом обращении при наличии успешно выполненных команд шлет ещё и их ID. Это даст контроль - выполнено или нет, успешно или нет. Для определения онлайн-офлайн можно проставлять для ID клиента статус онлайн, а если обращений не было некоторое время - ставить онлайн. При этом при выходе клиент может слать сообщение что выключается, если же по сценарию выше сообщения о выключении не было и запросов долго небыло - значит какие-то проблемы у клиента.
Можно обойтись одними GET-запросами, ведь по сути обмен чисто строковыми идентификаторами.
Но походу очередной троян, а жаль.
Добавлено (26 Июля 2014, 21:02) --------------------------------------------- "Хочу рассказать способ получения голосов с сбрученных аккаунтов vk.com" (с) со ссылки в профиле автора.
Уникальный ID не получится... Пытались мы с фомунчанином реализовать уникальный ID для каждой копии программы для его лаунчера. На поверку все это так себе... Чтоб сервер смог различать каждую копию, надо в каждом запросе отсылать ID Но его можно вытянуть любым снифером и отсылать уже от другой копии (например стыренной у кого нить "разявы"). Но если это не важно, то только так, и сервер каждый раз будет искать в БД присланный ID и.... Если для каждой копии уже заготовлен список команд, то я понимаю, а так не догоняю зачем запросы каждые 5 минут и ID Как минимум странно вся эта затея. Может просветишь:
это "их" заповедник пусть что хотят то и делают. Если там позволяют себя "обувать" (эт я там тему про розыгрыш прочитал)) Главное в нормальных ресурсах нет это возни
Добавлено (26 Июля 2014, 21:57) ---------------------------------------------
ЦитатаСергей ()
Может просветишь:
а все увидел чет моргнул твой пост
Добавлено (26 Июля 2014, 22:13) --------------------------------------------- xaker01, ну ты большую затею надумал. Надо создать некий "бизнес-план" и поэтапно решать задачи начинать с наболевших. С идентификацией проги все ясно, создай любой ID сохрани в файл и с каждым запуском проги отправляй его на сервак, а сервер в БД уже будет вытаскивать команды, которые ты вбиваешь с основного. ID желательно сделать через uniqid + номер харда или проца Мини план: 1) первый запуск НБ (т.е. еще нет ID-токен) - отправляет запрос на сервер с командой "new" и например номер харда 2) Сервер генерирует ID-токен=uniqid(номер харда) заносит в БД и отдает НБ ID-токен 3) НБ сохраняет ID-токен в файл, это и будет имя для сервака 4) Мониторишь сервер на предмет новых команд С основного сервера забиваешь команду в БД, а НБ уже при получении выполняет. Это как я понял задумку...
Что-то я туплю. Можно вообще без генерации ID обойтись. Пусть скрипт берёт IP адрес клиента из суперглобальной переменной $_SERVER. В общем случае, данный адрес будет уникальным для твоего пользователя, так что можно им вполне обойтись. Про генерацию забудь. В таком случае, будет всего 2 скрипта - один для отстукивания на сервер кажные n минут, второй - для выхода из онлайна. Если тебе не важен сам момент выхода (то есть, сервер не должен делать ничего при выходе клиента) , а я полагаю, не нужен, то задача упрощается до всего одного файла.
Получается следующее. Крутишь циклически запрос к своему скрипту. Программа запрашивает скрипт, он берёт IP адрес клиента из $_SERVER['REMOTE_ADDR'], выбирает из базы записи с данным адресом и берёт последнее время, сохранённое там. Если прошло столько времени, сколько тебе надо или больше, то отдаёшь программе данные, если меньше - то не отдаёшь. Логику реализуешь в программе, что если ничего не пришло, то ничего и не делать. А сразу за этим вписываешь в базу новое время доступа, в ту же ячейку (UPDATE). Профит. Я бы так сделал. Проще и красивее не бывает.
Добавлено (26 Июля 2014, 23:19) ---------------------------------------------
Цитатаtoizy ()
создай любой ID сохрани в файл и с каждым запуском проги отправляй его на сервак
Ага, забываем сменить ID или пользователь лезет куда не просят - и ломаем логику работы. Вдруг этот ID должен быть заведомо уникальным, иначе ничего не получится?
ЦитатаСергей ()
Сервер генерирует ID-токен=uniqid(номер харда)
Смысл? Добавит номер харда к текущей временной метке. Проще бы использовать md5(). Но опять же, зачем? Чтоб пользователь не догадался что ли? катился колобок по лесу пел песню он закрыв глаза а как с открытыми катиться когда ты катишься лицом
Сообщение отредактировано toizy - Сб, 26 Июля 2014, 23:24
uniqid генерирует уникальный ид Задача создать уникальность. Номер харда необязателен, можно с префиксом: echo uniqid('NB',true); //NB53d514f3083bb7.29767391 echo uniqid('NB',true); //NB53d514f34c5a33.97584916 а md5 не создает уникальность, у функции другое назначение) echo md5('NB_'); //a8f1a22bf0b1a73bfa5f587f3d70b3c4 echo md5('NB_'); //a8f1a22bf0b1a73bfa5f587f3d70b3c4
Цитатаtoizy ()
Чтоб пользователь не догадался что ли?
Как я понял он делает для своих админских нужд и юзеров у проги не будет. Вообще я предложил "генерировать ид" только для идентификации проги у сервера и все. Он может и сам дать любые имена прогам (их же не милион будет))) и зашить их в самой проге Ручной ввод надежнее ) Но действительно использовать IP будет проще, если только компы не будут в одной сети.
Добавлено (27 Июля 2014, 19:32) --------------------------------------------- Хотя, IP периодически меняется... Все таки придется использовать идентификатор. Иначе когда сменится ип, то сервер его не признает
Хотя, IP периодически меняется... Все таки придется использовать идентификатор. Иначе когда сменится ип, то сервер его не признает
Это не проблема. IP должен быть актуален только в пределах сессии, этого достаточно.
ЦитатаСергей ()
uniqid генерирует уникальный ид
ЦитатаСергей ()
а md5 не создает уникальность, у функции другое назначение)
Да ну? Почитай доки. uniqid генерирует на основе временной метки, а md5 даёт хеш на основе как раз переданных ему данных. Если уж и создавать действительно уникальный ID, то через хеш-функцию. Не вводи человека в заблуждение.
Добавлено (27 Июля 2014, 22:36) --------------------------------------------- Блин, нет, меня поражает =) Как иногда умеют люди говорить не вникая в суть задачи. Всё время пишу быстро и одной лапой, так что только сейчас догнал:
ЦитатаСергей ()
Задача создать уникальность
ЦитатаСергей ()
а md5 не создает уникальность
ЦитатаСергей ()
Хотя, IP периодически меняется... Все таки придется использовать идентификатор. Иначе когда сменится ип, то сервер его не признает
Без комментариев... Нам нужна уникальность, но по факту uniqid её не даст! uniqid просто сгенерирует строку, основанную на времени, то есть, в разный момент времени это значение будет разным! Ты же сам приводишь пример генерации. А md5 создаёт хеш-строку, она как раз и не меняется, то есть уникальна для одних и тех же входных данных. Это называется, с php не работал, просто справку прочитал. Не вводи в заблуждение, в общем.
Добавлено (27 Июля 2014, 22:41) --------------------------------------------- До кучи:
ЦитатаСергей ()
Номер харда необязателен, можно с префиксом:
Можно вообще без префикса (инфа 146%)
ЦитатаСергей ()
Но действительно использовать IP будет проще, если только компы не будут в одной сети.
Можно даже в пределах одной сети, за NAT. В локалке 2 одинаковых IP быть не может, роутер просто не раздаст. катился колобок по лесу пел песню он закрыв глаза а как с открытыми катиться когда ты катишься лицом
уникальность md5 будет примерно в такой связке md5(microtime(true)); Но тогда почему не uniqid...
Объясняю. Не будет уникальности. Потому что ты лишь получишь хеш от микротайм. А почему не uniqid? Потому что это не хеш и зависит от времени.
ЦитатаСергей ()
и в чем ее тогда уникальность, если она не меняется?! с двух копий будет одна и та же строка...
Вот именно. Снова объясняю. Хеш даёт всегда (теоретически) один и тот же результат. Конечно, бывают коллизии, но в общем случае тот же md5 даст уникальную строку для разных входных данных. Ты понимаешь уникальность как-то... странно. Потому я и делаю вывод, что ты только читал, но не использовал, в противном случае вопрос бы не возник.
ЦитатаСергей ()
и в чем ее тогда уникальность, если она не меняется?!
Как раз в том, что не меняется. Нам нужно определить уникальность одного компьютера вне зависимости от временной энтропии. А uniqid как раз зависим от времени. Даже для одного компьютера результат будет разным. Тогда
ЦитатаСергей ()
ID желательно сделать через uniqid + номер харда или проца
лишено смысла. Я не знаю, как это ещё объяснить, чтоб понятнее. Просто это очевидная вещь.
Но это всё не имеет значения, если опираться на IP, так как IP всегда есть и всегда уникален. Проще придумать уже невозможно.
Добавлено (27 Июля 2014, 23:50) ---------------------------------------------
Предостережение Эта функция не генерирует защищенные криптографически токены, по сути, не передается каких-либо дополнительных параметров и возвращаемое значение мало чем отличается от возвращаемого функцией microtime(). Если необходимо сгенерировать криптографически защищенные токены, то нужно использовать функцию openssl_random_pseudo_bytes().
катился колобок по лесу пел песню он закрыв глаза а как с открытыми катиться когда ты катишься лицом
Но айпи может постоянно менятся, что как бэ не даст отследить обращалась ли эта программа за определенным запросом.
Меняется не постоянно, а при переподключении или перезагрузке роутера, либо при разрыве сессии у провайдера. Но я не вижу в этом проблемы, потому что как бэ и не надо ничего отслеживать (автор этого не указывал). Повторю самого себя - ip в пределах сессии работы программы уникален, то есть вообще в мире уникален.
Единственная проблема, это если нужно связывать несколько компов за NAT, они в сети роутера и внешний ip будет один на всех. В этом случае, лучше сделать авторизацию на сервере по токену (запрашиваем скрипт, выдающий токен - любое уникальное значение, в последствии все операции подписываются данным токеном), но это вилы для не смыслящего в php.
Цитатаmishem ()
Проще наверно уже по мак адресу, этот точно всегда уникален и редко меняется.
Не проще, и тому две причины:
1. Я предлагаю ip как средство избавиться от передачи вообще любых идентификаторов. 2. MAC-адрес легко меняется пользователем на произвольный. Не думаю, что делать будут, но тем не менее. Также вполне возможна ситуация, в которой получить мак адрес не получится (например, нет админских прав). IP же будет присутствовать всегда.
Такие соображения. Как сделает ТС, его дело. Я почему-то думаю, что не станет связываться вообще ) катился колобок по лесу пел песню он закрыв глаза а как с открытыми катиться когда ты катишься лицом
Меняется не постоянно, а при переподключении или перезагрузке роутера, либо при разрыве сессии у провайдера.
Под словом постоянно я это и имел ввиду. У меня меняется раз в сутки по любому.
Цитатаtoizy ()
Также вполне возможна ситуация, в которой получить мак адрес не получится (например, нет админских прав).
Ну в принципе тоже правильно.
Цитатаtoizy ()
не надо ничего отслеживать (автор этого не указывал).
Я исхожу из этого что нужно отследить обращалась ли программа вообще за данными.
Цитатаxaker01 ()
Во 2 программа например обратилась к файлу/скрипту .....1.php тот ей вернул ответ 1 значит команду надо выполнить, после выполнения, через 5 мин, программа опять обратиться к 1.php и опять тот же ответ, и не нужная команда будет выполнена.
Тоесть как то идентифицировать ее все равно надо.
Хотя выше я уже говорил, программа сама может вести лог и отслеживать что она выполнила, а что нужно выполнить. Не хочешь читать хелп?
кстати, интересно, а что за контора?! С таким количеством серваков должно быть крупная... 100 пудов на слух попадалось, разве не?! Мало верится, что это местная контора по "производству запчастей", ну или другой хрени местного значения...
Добавлено (02 Августа 2014, 23:48) ---------------------------------------------
Цитатаxaker01 ()
но не понимаю что тут смешного
как сказать... 500 серваков и нет квалифицированного админа?! нет ПО, которая мониторит и обслуживает 500 сервов?! Ты ошибся ресурсом, тебе сюда. //Отредактировано администратором - нарушение пункта 9 раздела III Правил форума.
Добавлено (02 Августа 2014, 23:55) --------------------------------------------- // Удалено администратором - нарушение пункта 2 раздела III Правил форума.
P.S.Во избежание возможных недоразумений рекомендуется ещё раз прочитать раздел VI тех же Правил форума
Peter, администратор.
Сообщение отредактировано Сергей - Сб, 02 Августа 2014, 23:56
жаль конечно, но не понимаю что тут смешного, на с++ программировать я не умею, а связать php+mysql+НБ
У меня на работе не 500 серверов, а всего 14, правда свои, родные, честно мной настроенные и заточенные каждый под свою задачу. И управляются они программами которые все вместе стоят больше чем моя зарплата за год или даже за два... А ты хочешь 500 серверами управлять самописной связкой php+mysql+НБ. Ну... желаю успехов.
Цитатаxaker01 ()
500 серверов это сбрученые дедики ) да тут есть грешок ) Но ставиться боты, которые скажем так крафтят нужные мне ресы.(больше 10% не отнимает ресов компа)...
Сисадмин с 7 летним стажем и чувствую себя чмом, я безбожно устарел... сейчас пол час искал в инете что такое "сбрученые дедики", "пинч", "боты, которые скажем так крафтят нужные мне ресы".
И если дядя Google мне все правильно подсказал, то я просто в ахрене. Перебором взломать 500 серверов, чтобы на них разместить 500 ботов которые для какой то онлайн RPG, крафтили какие то там ресурсы. И сейчас писать на NeoBook программу которая позволила бы удаленно проверять работают твои боты или уже сдохли из-за глюков, или из-за того что их админы серверов нашли. Чувак ты мегазадрот.
И что то мне подсказывает что NeoBook, эта не так среда, что тебе нужна... "Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"
Сообщение отредактировано anton - Вс, 03 Августа 2014, 10:06
Джентльмены, но что вы так накинулись на человека? Погоды нынче жаркие стоят... А может и увидим рабочий исходник...
Меня вон тоже переклинило - вдруг стукнуло сделать небольшой апгрейд своему компу (интерфейсной части всего-то ради двух гнезд USB3 на морде корпуса), купил "мамку", сильно засомневался в смысле задуманного, и сейчас сижу думаю "сдавать её обратно или нет?". Видимо, из-за того, что похолодало - сегодня в Питере "всего" +27.
Но это - мелочь в сравнение с "а не купить ли семерку, пока не поздно?" Жарко
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
500 error к нб не должна иметь никакого отношения, 5хх ошибки - это ошибки сервера.
Цитата
Ошибка 500 также может возникать вследствие неправильного обращения с CGI-скриптами:
CGI-скрипты должны иметь окончания строк в формате UNIX (\n), а не в формате Windows (\r\n). Для этого их надо загружать на сервер по FTP в режиме ASCII.
CGI-скрипты и папки, в которых они находятся, должны быть доступны для записи только владельцу, то есть иметь права 0755 (drwxr-xr-x).
В результате работы CGI-скрипта сформированны неправильные HTTP-заголовки ответа. В этом случае для решения проблемы полезно обратиться к error_log (его можно найти в контрольной панели в разделе «Хостинг / Статитистика / Лог-файлы / Ошибки»).
500 error к нб не должна иметь никакого отношения, 5хх ошибки - это ошибки сервера.
Цитата Ошибка 500 также может возникать вследствие неправильного обращения с CGI-скриптами:
CGI-скрипты должны иметь окончания строк в формате UNIX (\n), а не в формате Windows (\r\n). Для этого их надо загружать на сервер по FTP в режиме ASCII.
CGI-скрипты и папки, в которых они находятся, должны быть доступны для записи только владельцу, то есть иметь права 0755 (drwxr-xr-x).
В результате работы CGI-скрипта сформированны неправильные HTTP-заголовки ответа. В этом случае для решения проблемы полезно обратиться к error_log (его можно найти в контрольной панели в разделе «Хостинг / Статитистика / Лог-файлы / Ошибки»).
по-ходу, это про тебя пишут как раз
все же связь есть, я знаю что это серверная ошибка, и я нашел выход. но все же приведу пример, в каком случае ошибка возникает