Планирую продавать программу (Windows, C++) по подписке.
Но такое ощущение, что у регистраторов (fastspring в частности) нет API, чтобы программа могла проверить подписку. Они только могут дернуть API на моем сервере, но блин я не хочу писать еще и сервер!
Вопрос — есть ли схема, чтобы программа продавалась по подписке без дополнительных серверов?
Либо, может есть уже готовые сервера?
Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник. Но непонятно, как связать ключ со временем активации. Ну и получится пользователь должен покупать программу каждый месяц, хотя это поначалу приемлемо.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, Basil2, Вы писали:
B>я не хочу писать еще и сервер!
А кому легко? Сервер всё равно понадобится — апдейты раздавать, форум хостить и всё такое. Нервотрепка начинается, когда нужен uptime с пятью девятками, но для лицензионных серверов требования по-проще.
B>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник.
Ключи должны проверяться на сервере. Тут без вариантов как бы. Все альтернативы на порядок хуже, больше геммороя, фрода и пр. Единственный недостаток (был), что online активация раньше выглядела дико и отпугивала клиентов. Сейчас весь софт звонит домой, всему нужен онлайн и народ уже попривыкал к online validation. Тем более, если это около-игровой софт — там Steam всех уже давно зазомбировал как надо.
Re[2]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, wantus, Вы писали:
B>>я не хочу писать еще и сервер! W>А кому легко? Сервер всё равно понадобится — апдейты раздавать, форум хостить и всё такое.
Дык апдейты сами скачают, а форум не нужен — есть же дискорд.
B>>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник. W>Ключи должны проверяться на сервере. Тут без вариантов как бы. Все альтернативы на порядок хуже, больше геммороя, фрода и пр.
Все тут пишут что проще захардкодить хеши ключей в код. Я б так и сделал, но в случае с подпиской надо еще и время активации отслеживать, что пока непонятно как.
W>Единственный недостаток (был), что online активация раньше выглядела дико и отпугивала клиентов. Сейчас весь софт звонит домой, всему нужен онлайн и народ уже попривыкал к online validation.
Это да, не проблема, т.к. софт для онлайн игры.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[3]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Basil2, Вы писали:
B>Здравствуйте, wantus, Вы писали:
B>>>я не хочу писать еще и сервер! W>>А кому легко? Сервер всё равно понадобится — апдейты раздавать, форум хостить и всё такое. B>Дык апдейты сами скачают, а форум не нужен — есть же дискорд.
B>>>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник. W>>Ключи должны проверяться на сервере. Тут без вариантов как бы. Все альтернативы на порядок хуже, больше геммороя, фрода и пр.
B>Все тут пишут что проще захардкодить хеши ключей в код. Я б так и сделал, но в случае с подпиской надо еще и время активации отслеживать, что пока непонятно как.
W>>Единственный недостаток (был), что online активация раньше выглядела дико и отпугивала клиентов. Сейчас весь софт звонит домой, всему нужен онлайн и народ уже попривыкал к online validation.
B>Это да, не проблема, т.к. софт для онлайн игры.
раньше был DevMate,всё брал на себя, но он слился.
Если сервер не хочется писать (что правильно на этом этапе), то можно написать "вы получите ключ в течении 12 часов после оплаты" и ручками обрабатывать.
вон я не давно видел такое и норм.
Re: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Basil2, Вы писали:
B>Планирую продавать программу (Windows, C++) по подписке.
B>Но такое ощущение, что у регистраторов (fastspring в частности) нет API, чтобы программа могла проверить подписку. Они только могут дернуть API на моем сервере, но блин я не хочу писать еще и сервер!
У Плимуса давно была какая-то заглушка, на запуск проги вешалась. Если чел логинелся, то прога запускалась.
Это единственное, что я могу припомнить от регистратора за долгие годы. Наверное у Плимуса этого и нет уже. Да и отламывается наверняка легко и пользователей раздражает.
B>Вопрос — есть ли схема, чтобы программа продавалась по подписке без дополнительных серверов? B>Либо, может есть уже готовые сервера?
Готовый есть вроде у VMProtect. Но могу ошибаться. Мы используем самописный, точнее его нам Autopsist делал, мы немного дорабатывали уже по ходу эксплуатации.
B>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник. Но непонятно, как связать ключ со временем активации. Ну и получится пользователь должен покупать программу каждый месяц, хотя это поначалу приемлемо.
Ну как вариант — есть ключи A, B, C. В екзешнике зашито что ключ A действует 30 дней, B — 60 дней, C — 90 дней. На сервере есть та же информация. Соответственно все это оборачиваешь в функционал. Но мне такой подход изначально не нравится. Максимум логики должно быть на сервере, на стооне клиента только защита.
Ты сам себе ТЗ напиши, продумай все случаи по максимуму, картина должна начать вырисовываться сама по ходу составления...
Re[3]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Basil2, Вы писали:
B>Все тут пишут что проще захардкодить хеши ключей в код. Я б так и сделал, но в случае с подпиской надо еще и время активации отслеживать, что пока непонятно как.
Бред. Это динозавры пишут, которым свои доисторические икебаны лень переделывать.
Там писать то всего-ничего:
1. Таблица — [ключ, уплочено-до-такой-то даты]
2. Скрипт (php, скажем)- получает от клиента ключ и hardware ID, смотрит в таблицу, прописывает в лицензию дату окончания и hardware ID, дергает openssl, подписывает private ключом, отсылает результат клиенту
На клиенте:
1. Есть public key, который прошит.
2. При запуске смотрит есть ли лицензия, проверяет подпись и дату окончания, сверяет hardware ID. Если чего-то не так, то жалуется юзеру.
3. Разговор с сервером — через WinInet, пишется по примеру из MSDN на коленке за пару часов.
Это база. Потом на сервере можно прикрутить ограничения на перевыпуск лицензий для новых hardware ID (но с тем же ключом) или еще какую логику, как требуется. В принципе, полный контроль за процессом. Можешь, например, выдавать лицензии длинной в день. Либо выдавать такие только в первые несколько дней после покупки, чтобы отфильтровывать фрод. Чего хочешь, то и делай. As forward-compatible as it gets типа.
Re[4]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, wantus, Вы писали:
B>>Все тут пишут что проще захардкодить хеши ключей в код. Я б так и сделал, но в случае с подпиской надо еще и время активации отслеживать, что пока непонятно как. W>Бред. Это динозавры пишут, которым свои доисторические икебаны лень переделывать.
Я тот динозавр А советовал я хеши, чтобы продукт скорее вышел на рынок. Если продажи пошли, то можно начинать делать красиво.
Re[5]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Basil2, Вы писали:
B>Планирую продавать программу (Windows, C++) по подписке.
B>Но такое ощущение, что у регистраторов (fastspring в частности) нет API, чтобы программа могла проверить подписку. Они только могут дернуть API на моем сервере, но блин я не хочу писать еще и сервер!
Лучше день потерять, потом за пять минут долететь, чем получить vendor lock-in со всеми лицензиями, ключами, и прочим. Представь себе, ты подключил чужую систему активации, а ребята, которые ей занимались, разорились, ну или им надоело, ну или мало ли что ещё. Старые версии твоего софта ломаются, нужно бегать и искать новую систему активации, и вообще наживешь себе колотьё в боку.
Здравствуйте, Supporter, Вы писали:
S>У Плимуса давно была какая-то заглушка, на запуск проги вешалась. Если чел логинелся, то прога запускалась.
Спасибо, гляну на него (BlueSnap теперича).
S>Готовый есть вроде у VMProtect. Но могу ошибаться. Мы используем самописный, точнее его нам Autopsist делал, мы немного дорабатывали уже по ходу эксплуатации.
У них есть какое-то решение по проверке ключей, но ничего не сказано где их брать. Я подозреваю что внешний сервис таки нужен.
S>Ну как вариант — есть ключи A, B, C. В екзешнике зашито что ключ A действует 30 дней, B — 60 дней, C — 90 дней. На сервере есть та же информация.
Проблема в том, где хранить что ключ начал действовать (и когда потом должен протухнуть; а также помнить что он уже использован и не юзать повторно — с подпиской все блин геморройнее значительно).
S>Ты сам себе ТЗ напиши, продумай все случаи по максимуму, картина должна начать вырисовываться сама по ходу составления...
Должна, но я то наивно полагал что такой велосипед должен на каждом углу стоять.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[4]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Michael, Вы писали:
M>Если сервер не хочется писать (что правильно на этом этапе), то можно написать "вы получите ключ в течении 12 часов после оплаты" и ручками обрабатывать. M>вон я не давно видел такое и норм.
Была такая мысль. Но это когда я думал о стоимости подписки в 10-15$. Сейчас, когда предполагается 2$, что-то не очень хочется возиться. Но это лирика, главное вот что — непонятно как такой подход решает проблему. Ключ-то я дам, и? Ключ по идее и регистратор может выдать. Вопрос в том, как программа отследит когда ключ протухнет. Ведь если ключи захардкожены внутри, то им нельзя прописать дату начала.
Идея лайт — при продаже проставлять в ключе дату и защищать его контрольной суммой. Но это требует генерацию ключа на лету, и регистратор наверняка захочет получить их с отдельного сервера.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Здравствуйте, wantus, Вы писали:
W>Там писать то всего-ничего:
Я что делать-то представляю, но имхо там объем как минимум средний.
W>1. Таблица — [ключ, уплочено-до-такой-то даты]
Это по хорошему микро-бд, то есть либу какую-то тащить.
W>2. Скрипт (php, скажем)- получает от клиента ключ и hardware ID, смотрит в таблицу, прописывает в лицензию дату окончания и hardware ID, дергает openssl, подписывает private ключом, отсылает результат клиенту
Я PHP не знаю, значит будут Python или Rust. То есть городить или веб-сервер с Rest API, или что-то совсем колхозное на сокетах. Опять таки выбирать технологию (типа WebSockets), прикручивать.
Потом сервак-то надо поднять, это значит покупать VDS и потом следить за ней, что не упало.
W>На клиенте:
W>1. Есть public key, который прошит. W>2. При запуске смотрит есть ли лицензия, проверяет подпись и дату окончания, сверяет hardware ID. Если чего-то не так, то жалуется юзеру. W>3. Разговор с сервером — через WinInet, пишется по примеру из MSDN на коленке за пару часов.
Это опять таки либы тянуть — сетевые, для подписи, для генерации hardware ID. Прикручивать, кодить, отлаживать.
Имхо приличный объем работы, на несколько дней. И велосипедно пипец как.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[5]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Basil2, Вы писали:
B>Здравствуйте, Michael, Вы писали:
M>>Если сервер не хочется писать (что правильно на этом этапе), то можно написать "вы получите ключ в течении 12 часов после оплаты" и ручками обрабатывать. M>>вон я не давно видел такое и норм.
B> Была такая мысль. Но это когда я думал о стоимости подписки в 10-15$. Сейчас, когда предполагается 2$, что-то не очень хочется возиться. Но это лирика, главное вот что — непонятно как такой подход решает проблему. Ключ-то я дам, и? Ключ по идее и регистратор может выдать. Вопрос в том, как программа отследит когда ключ протухнет. Ведь если ключи захардкожены внутри, то им нельзя прописать дату начала.
B>Идея лайт — при продаже проставлять в ключе дату и защищать его контрольной суммой. Но это требует генерацию ключа на лету, и регистратор наверняка захочет получить их с отдельного сервера.
ну допустим вы продаёте ключи которые должны действовать 30 и 60 дней. Создаёте два продукта в паддле,
100штук ключей грузанули в один продукт в паддле и 100 в другой (ключи уникальные). Оба массива захардкодили в софте.
При активации внутри программы определяете длительность и прибавляйте например 30дней к текущей дате и куда нибудь пишите эту дату (в реестр, в файл).
да это такой лайт вариант, не особо устойчив к хитрожопым, но для нормальных юзеров чем не вариант....
Re[5]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Basil2, Вы писали:
B>Это по хорошему микро-бд, то есть либу какую-то тащить.
куда тащить? база на сервере
B>Я PHP не знаю, значит будут Python или Rust. То есть городить или веб-сервер с Rest API, или что-то совсем колхозное на сокетах. Опять таки выбирать технологию (типа WebSockets), прикручивать. B>Потом сервак-то надо поднять, это значит покупать VDS и потом следить за ней, что не упало.
обычный VPS с LAMP копейки стоит и требует минимум обслуживания
B>Это опять таки либы тянуть — сетевые, для подписи, для генерации hardware ID. Прикручивать, кодить, отлаживать.
сеть — штатный WinAPI, подпись OpenSSL, Hardware ID генерируется через WMI в 10 строк кода
B>Имхо приличный объем работы, на несколько дней. И велосипедно пипец как.
это в тебе лень говорит
Re[5]: Регистратор и подписка - можно ли без своего сервера?
Здравствуйте, Basil2, Вы писали:
B>Идея лайт — при продаже проставлять в ключе дату и защищать его контрольной суммой. Но это требует генерацию ключа на лету, и регистратор наверняка захочет получить их с отдельного сервера.
B>>Это опять таки либы тянуть — сетевые, для подписи, для генерации hardware ID. Прикручивать, кодить, отлаживать. I>сеть — штатный WinAPI, подпись OpenSSL, Hardware ID генерируется через WMI в 10 строк кода
Подпись — CryptVerifySignature
Hardware ID — GetAdaptersInfo, если не особо мудрить
B>>Имхо приличный объем работы, на несколько дней. И велосипедно пипец как. I>это в тебе лень говорит
Однозначно
Re[5]: Регистратор и подписка - можно ли без своего сервера?