Защита от неплательщиков.
декабря 6, 2007
На волнах фриланса частенько попадаются жадные купцы.
Денежку пожалеют, и разработчику не заплатят.
Особенно озадачивает разработчика сей факт, когда он, наивный, отдал результат работы в жадные купцовы руки.
Лучшая защита – работать только с теми, кто у вас в local-trust )))
Но вот еще небольшая подмога. Класс Permission.
Для работы с ним, конечно понадобиться свой родной домен, на который вы сможете положить скромный crossdomain.xml. В нем укажите доступ для того домена, на котором будет лежать результат вашей работы. Ну а если не знаете где именно, будет лежать разрешайте доступ всем. Хуже не будет.
Далее. Кладем у себя мальнький текстовый файл, в котором будут записаны две переменных allow=1 и message=ЗАПЛАТИ ДЕНЕГ!!!
Пока allow=1 флешка будет работать как положено.
Но как только вам покажется, что денег больше не видать – меняйте allow=0.
Теперь все будут поверх флешки периодически читать ваш душещипательный message.
Конечно, по завершении работ, в случае благополучной оплаты – лучше убрать эту мышеловку из кода, и отправить финальный , стерильный вариант.
Использование:
Просто заводим новый экземпляр Permission и передаем в конструкторе путь к текстовому файлу.
var my_permission:Permission = new Permission("my_domain.net/my_permission.txt");
Код классa: ru.decafe.utils.Permission
/** * class ru.decafe.utils.Permission * @author Mikhail Ivanchuk * @version 0.1 */ import ru.decafe.utils.Cache; class ru.decafe.utils.Permission { private var theURL:String = ""; private var accessor:LoadVars; private var blinker:Number; private var alert_mc:MovieClip; private var message:String = ""; public function Permission(url:String) { theURL = url; accessor = new LoadVars(); } public function loadAccess():Void { var refer:Permission = this; var _key:String = theURL.indexOf("?")==-1?"?":"&"; accessor.load(theURL+Cache.disable(_key+"nocache=")); accessor.onLoad = function (success:Boolean) { var mode:String = "demo"; if (success && this.allow == "1") { mode = "allow"; } trace("mode: "+mode+"\n"+this.message); if (mode=="demo") { refer.message = this.message; refer.blinker = setInterval(refer,"alert",10000); } } } private function alert():Void { alert_mc = _level0.createEmptyMovieClip("alrt",_level0.getNextHighestDepth()); var txt:TextField = alert_mc.createTextField("txt",0,0,0,150,60); txt.background = true; txt.multiline = true; txt.wordWrap = true; txt.backgroundColor = 0xDEDEDE; txt.border = true; txt.borderColor = 0; txt.html = true; txt.condenseWhite = true; txt.htmlText = " <span style="font-family: Arial;">"+message+" "; alert_mc.counter = 100; alert_mc.onEnterFrame = function () { this.counter--; if (this.counter<0) this.removeMovieClip(); } } } </span>
+ Cache.as, который необходим для работы класса Permission: ru.decafe.utils.Cache
Popularity: 9% [?]
Entry Filed under: AS2.0,ActionScript,грабли

2 комментария
1. concretica | декабря 6, 2007 at 16:45
и не забыть заэнкриптить файл
2. murejib | декабря 6, 2007 at 18:09
Ну да. Чтобы от декомпиляторов отгородиться.
Хотя часто декомпиленный проект не подлежит обратной сборке. Очень многое валится.