Регистратор и подписка - можно ли без своего сервера?
От: Basil2 Россия https://starostin.msk.ru
Дата: 14.01.20 09:49
Оценка:
Планирую продавать программу (Windows, C++) по подписке.

Но такое ощущение, что у регистраторов (fastspring в частности) нет API, чтобы программа могла проверить подписку. Они только могут дернуть API на моем сервере, но блин я не хочу писать еще и сервер!

Вопрос — есть ли схема, чтобы программа продавалась по подписке без дополнительных серверов?
Либо, может есть уже готовые сервера?

Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник. Но непонятно, как связать ключ со временем активации. Ну и получится пользователь должен покупать программу каждый месяц, хотя это поначалу приемлемо.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Отредактировано 14.01.2020 10:42 Basil2 . Предыдущая версия .
Re: Регистратор и подписка - можно ли без своего сервера?
От: wantus  
Дата: 14.01.20 11:23
Оценка:
Здравствуйте, Basil2, Вы писали:

B>я не хочу писать еще и сервер!


А кому легко? Сервер всё равно понадобится — апдейты раздавать, форум хостить и всё такое. Нервотрепка начинается, когда нужен uptime с пятью девятками, но для лицензионных серверов требования по-проще.

B>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник.


Ключи должны проверяться на сервере. Тут без вариантов как бы. Все альтернативы на порядок хуже, больше геммороя, фрода и пр. Единственный недостаток (был), что online активация раньше выглядела дико и отпугивала клиентов. Сейчас весь софт звонит домой, всему нужен онлайн и народ уже попривыкал к online validation. Тем более, если это около-игровой софт — там Steam всех уже давно зазомбировал как надо.
Re[2]: Регистратор и подписка - можно ли без своего сервера?
От: Basil2 Россия https://starostin.msk.ru
Дата: 14.01.20 12:52
Оценка:
Здравствуйте, wantus, Вы писали:

B>>я не хочу писать еще и сервер!

W>А кому легко? Сервер всё равно понадобится — апдейты раздавать, форум хостить и всё такое.
Дык апдейты сами скачают, а форум не нужен — есть же дискорд.

B>>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник.

W>Ключи должны проверяться на сервере. Тут без вариантов как бы. Все альтернативы на порядок хуже, больше геммороя, фрода и пр.

Все тут пишут что проще захардкодить хеши ключей в код. Я б так и сделал, но в случае с подпиской надо еще и время активации отслеживать, что пока непонятно как.

W>Единственный недостаток (был), что online активация раньше выглядела дико и отпугивала клиентов. Сейчас весь софт звонит домой, всему нужен онлайн и народ уже попривыкал к online validation.


Это да, не проблема, т.к. софт для онлайн игры.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[3]: Регистратор и подписка - можно ли без своего сервера?
От: Michael  
Дата: 14.01.20 13:29
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Здравствуйте, wantus, Вы писали:


B>>>я не хочу писать еще и сервер!

W>>А кому легко? Сервер всё равно понадобится — апдейты раздавать, форум хостить и всё такое.
B>Дык апдейты сами скачают, а форум не нужен — есть же дискорд.

B>>>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник.

W>>Ключи должны проверяться на сервере. Тут без вариантов как бы. Все альтернативы на порядок хуже, больше геммороя, фрода и пр.

B>Все тут пишут что проще захардкодить хеши ключей в код. Я б так и сделал, но в случае с подпиской надо еще и время активации отслеживать, что пока непонятно как.


W>>Единственный недостаток (был), что online активация раньше выглядела дико и отпугивала клиентов. Сейчас весь софт звонит домой, всему нужен онлайн и народ уже попривыкал к online validation.


B>Это да, не проблема, т.к. софт для онлайн игры.


раньше был DevMate,всё брал на себя, но он слился.
Если сервер не хочется писать (что правильно на этом этапе), то можно написать "вы получите ключ в течении 12 часов после оплаты" и ручками обрабатывать.
вон я не давно видел такое и норм.
Re: Регистратор и подписка - можно ли без своего сервера?
От: Supporter  
Дата: 14.01.20 13:45
Оценка: 6 (1)
Здравствуйте, Basil2, Вы писали:

B>Планирую продавать программу (Windows, C++) по подписке.


B>Но такое ощущение, что у регистраторов (fastspring в частности) нет API, чтобы программа могла проверить подписку. Они только могут дернуть API на моем сервере, но блин я не хочу писать еще и сервер!


У Плимуса давно была какая-то заглушка, на запуск проги вешалась. Если чел логинелся, то прога запускалась.
Это единственное, что я могу припомнить от регистратора за долгие годы. Наверное у Плимуса этого и нет уже. Да и отламывается наверняка легко и пользователей раздражает.

B>Вопрос — есть ли схема, чтобы программа продавалась по подписке без дополнительных серверов?

B>Либо, может есть уже готовые сервера?

Готовый есть вроде у VMProtect. Но могу ошибаться. Мы используем самописный, точнее его нам Autopsist делал, мы немного дорабатывали уже по ходу эксплуатации.

B>Еще вариант, придумать как сделать схему с зашитыми ключами в экзешник. Но непонятно, как связать ключ со временем активации. Ну и получится пользователь должен покупать программу каждый месяц, хотя это поначалу приемлемо.


Ну как вариант — есть ключи A, B, C. В екзешнике зашито что ключ A действует 30 дней, B — 60 дней, C — 90 дней. На сервере есть та же информация. Соответственно все это оборачиваешь в функционал. Но мне такой подход изначально не нравится. Максимум логики должно быть на сервере, на стооне клиента только защита.

Ты сам себе ТЗ напиши, продумай все случаи по максимуму, картина должна начать вырисовываться сама по ходу составления...
Re[3]: Регистратор и подписка - можно ли без своего сервера?
От: wantus  
Дата: 14.01.20 14:03
Оценка: 6 (1)
Здравствуйте, 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]: Регистратор и подписка - можно ли без своего сервера?
От: Unhandled_Exception Россия  
Дата: 14.01.20 14:26
Оценка:
Здравствуйте, wantus, Вы писали:

B>>Все тут пишут что проще захардкодить хеши ключей в код. Я б так и сделал, но в случае с подпиской надо еще и время активации отслеживать, что пока непонятно как.

W>Бред. Это динозавры пишут, которым свои доисторические икебаны лень переделывать.

Я тот динозавр А советовал я хеши, чтобы продукт скорее вышел на рынок. Если продажи пошли, то можно начинать делать красиво.
Re[5]: Регистратор и подписка - можно ли без своего сервера?
От: wantus  
Дата: 14.01.20 14:30
Оценка:
U_E>Я тот динозавр А советовал я хеши, чтобы продукт скорее вышел на рынок. Если продажи пошли, то можно начинать делать красиво.

У каждого свой background, но там — день работы. Ну два, три макс. Какие хэши? 21й век, уже 20 лет как
Re[6]: Регистратор и подписка - можно ли без своего сервера?
От: Unhandled_Exception Россия  
Дата: 14.01.20 14:47
Оценка:
Здравствуйте, wantus, Вы писали:

W>У каждого свой background, но там — день работы. Ну два, три макс. Какие хэши? 21й век, уже 20 лет как


До первой продажи я бы не стал делать сервер активации. Первой продажи может и не быть.
Re[7]: Регистратор и подписка - можно ли без своего сервера?
От: wantus  
Дата: 14.01.20 14:51
Оценка:
U_E>До первой продажи я бы не стал делать сервер активации. Первой продажи может и не быть.

Кому как.

До первой продажи надо делать бету и смотреть как идет. Если идет хорошо, то делать активацию и сразу делать её нормально.
Re: Регистратор и подписка - можно ли без своего сервера?
От: Sharowarsheg  
Дата: 14.01.20 15:19
Оценка: 6 (1) +3
Здравствуйте, Basil2, Вы писали:

B>Планирую продавать программу (Windows, C++) по подписке.


B>Но такое ощущение, что у регистраторов (fastspring в частности) нет API, чтобы программа могла проверить подписку. Они только могут дернуть API на моем сервере, но блин я не хочу писать еще и сервер!


Лучше день потерять, потом за пять минут долететь, чем получить vendor lock-in со всеми лицензиями, ключами, и прочим. Представь себе, ты подключил чужую систему активации, а ребята, которые ей занимались, разорились, ну или им надоело, ну или мало ли что ещё. Старые версии твоего софта ломаются, нужно бегать и искать новую систему активации, и вообще наживешь себе колотьё в боку.

так-то вообще вот, например — https://www.softactivate.com/
Отредактировано 14.01.2020 15:21 Sharowarsheg . Предыдущая версия .
Re[2]: Регистратор и подписка - можно ли без своего сервера?
От: Basil2 Россия https://starostin.msk.ru
Дата: 14.01.20 20:10
Оценка:
Здравствуйте, Supporter, Вы писали:

S>У Плимуса давно была какая-то заглушка, на запуск проги вешалась. Если чел логинелся, то прога запускалась.


Спасибо, гляну на него (BlueSnap теперича).

S>Готовый есть вроде у VMProtect. Но могу ошибаться. Мы используем самописный, точнее его нам Autopsist делал, мы немного дорабатывали уже по ходу эксплуатации.


У них есть какое-то решение по проверке ключей, но ничего не сказано где их брать. Я подозреваю что внешний сервис таки нужен.

S>Ну как вариант — есть ключи A, B, C. В екзешнике зашито что ключ A действует 30 дней, B — 60 дней, C — 90 дней. На сервере есть та же информация.


Проблема в том, где хранить что ключ начал действовать (и когда потом должен протухнуть; а также помнить что он уже использован и не юзать повторно — с подпиской все блин геморройнее значительно).

S>Ты сам себе ТЗ напиши, продумай все случаи по максимуму, картина должна начать вырисовываться сама по ходу составления...


Должна, но я то наивно полагал что такой велосипед должен на каждом углу стоять.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[4]: Регистратор и подписка - можно ли без своего сервера?
От: Basil2 Россия https://starostin.msk.ru
Дата: 14.01.20 20:15
Оценка:
Здравствуйте, Michael, Вы писали:

M>Если сервер не хочется писать (что правильно на этом этапе), то можно написать "вы получите ключ в течении 12 часов после оплаты" и ручками обрабатывать.

M>вон я не давно видел такое и норм.

Была такая мысль. Но это когда я думал о стоимости подписки в 10-15$. Сейчас, когда предполагается 2$, что-то не очень хочется возиться. Но это лирика, главное вот что — непонятно как такой подход решает проблему. Ключ-то я дам, и? Ключ по идее и регистратор может выдать. Вопрос в том, как программа отследит когда ключ протухнет. Ведь если ключи захардкожены внутри, то им нельзя прописать дату начала.

Идея лайт — при продаже проставлять в ключе дату и защищать его контрольной суммой. Но это требует генерацию ключа на лету, и регистратор наверняка захочет получить их с отдельного сервера.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Отредактировано 14.01.2020 20:18 Basil2 . Предыдущая версия .
Re[4]: Регистратор и подписка - можно ли без своего сервера?
От: Basil2 Россия https://starostin.msk.ru
Дата: 14.01.20 20:42
Оценка:
Здравствуйте, 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]: Регистратор и подписка - можно ли без своего сервера?
От: Аноним  
Дата: 14.01.20 21:00
Оценка: 1 (1)
Здравствуйте, Basil2, Вы писали:

B>Здравствуйте, Michael, Вы писали:


M>>Если сервер не хочется писать (что правильно на этом этапе), то можно написать "вы получите ключ в течении 12 часов после оплаты" и ручками обрабатывать.

M>>вон я не давно видел такое и норм.

B> Была такая мысль. Но это когда я думал о стоимости подписки в 10-15$. Сейчас, когда предполагается 2$, что-то не очень хочется возиться. Но это лирика, главное вот что — непонятно как такой подход решает проблему. Ключ-то я дам, и? Ключ по идее и регистратор может выдать. Вопрос в том, как программа отследит когда ключ протухнет. Ведь если ключи захардкожены внутри, то им нельзя прописать дату начала.


B>Идея лайт — при продаже проставлять в ключе дату и защищать его контрольной суммой. Но это требует генерацию ключа на лету, и регистратор наверняка захочет получить их с отдельного сервера.


ну допустим вы продаёте ключи которые должны действовать 30 и 60 дней. Создаёте два продукта в паддле,
100штук ключей грузанули в один продукт в паддле и 100 в другой (ключи уникальные). Оба массива захардкодили в софте.
При активации внутри программы определяете длительность и прибавляйте например 30дней к текущей дате и куда нибудь пишите эту дату (в реестр, в файл).
да это такой лайт вариант, не особо устойчив к хитрожопым, но для нормальных юзеров чем не вариант....
Re[5]: Регистратор и подписка - можно ли без своего сервера?
От: Kerk Россия  
Дата: 14.01.20 22:23
Оценка: +1
Здравствуйте, Basil2, Вы писали:

B> генерации hardware ID


А ты уверен что оно тебе надо?
No taxation without representation
Re[5]: Регистратор и подписка - можно ли без своего сервера?
От: icezone  
Дата: 15.01.20 02:45
Оценка:
Здравствуйте, 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]: Регистратор и подписка - можно ли без своего сервера?
От: edton  
Дата: 15.01.20 06:32
Оценка: 6 (1)
Здравствуйте, Basil2, Вы писали:

B>Идея лайт — при продаже проставлять в ключе дату и защищать его контрольной суммой. Но это требует генерацию ключа на лету, и регистратор наверняка захочет получить их с отдельного сервера.


MyCommerce (он же share-it) поддерживает генерацию ключей на своем сервере с помощь вашего консольного генератора ключей:
https://cp.shareit.com/shareit/cp/download/KeyGenSDK.pdf
Re[6]: Регистратор и подписка - можно ли без своего сервера?
От: wantus  
Дата: 15.01.20 07:49
Оценка: 2 (1)
B>>Это опять таки либы тянуть — сетевые, для подписи, для генерации hardware ID. Прикручивать, кодить, отлаживать.
I>сеть — штатный WinAPI, подпись OpenSSL, Hardware ID генерируется через WMI в 10 строк кода

Подпись — CryptVerifySignature
Hardware ID — GetAdaptersInfo, если не особо мудрить

B>>Имхо приличный объем работы, на несколько дней. И велосипедно пипец как.

I>это в тебе лень говорит

Однозначно
Re[5]: Регистратор и подписка - можно ли без своего сервера?
От: wantus  
Дата: 15.01.20 08:32
Оценка: 1 (1)
Здравствуйте, Basil2, Вы писали:

B>Я PHP не знаю, значит будут Python или Rust.


Дык его никто не знает, но это не мешает на нем писать

PHP — это C для идиотов, там всё предельно просто.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.