# asy_spamexample v0.1 # A simple Anti-Spam-plugin example to show 4.0.3 features. # Sencer Yurdaguel # http://www.sencer.de # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTU6ImFzeV9zcGFtZXhhbXBsZSI7czo3OiJ2ZXJzaW9uIjtz OjM6IjAuMSI7czo2OiJhdXRob3IiO3M6MTY6IlNlbmNlciBZdXJkYWd1ZWwiO3M6MTA6ImF1 dGhvcl91cmkiO3M6MjA6Imh0dHA6Ly93d3cuc2VuY2VyLmRlIjtzOjExOiJkZXNjcmlwdGlv biI7czo1NzoiQSBzaW1wbGUgQW50aS1TcGFtLXBsdWdpbiBleGFtcGxlIHRvIHNob3cgNC4w LjMgZmVhdHVyZXMuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6ImhlbHAiO3M6NDM0OiIKCTxwPlRo aXMgaXMgbWFpbmx5IHRvIGdldCB5b3Ugc3RhcnRlZC4gRm9yIGZ1cnRoZXIgaW5mb3JtYXRp b24gbWFrZSBzdXJlIHRvIGNoZWNrIHRoZSBXZWJsb2cgYW5kIHRoZSBUZXh0Ym9vayB3aWtp IHBlcmlvZGljYWxseS4gPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm5ldC93aWtpL2lu ZGV4LnBocD90aXRsZT1Db21iYXRfQ29tbWVudF9TcGFtIj5UZXh0Ym9vazogQ29tYmF0X0Nv bW1lbnRfU3BhbTwvYT4gYW5kIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5jb20vd2Vi bG9nIj5odHRwOi8vdGV4dHBhdHRlcm4uY29tL3dlYmxvZzwvYT4uPC9wPgoKCTxwPlRoaXMg cGx1Z2luIHdpbGwgYWRkIGEgcXVlc3Rpb24gdG8gdGhlIGZvcm0sIGFuZCBjaGVjayB3aGV0 aGVyIHRoZSBhbnN3ZXIgaXMgY29ycmVjdCBiZWZvcmUgc2F2aW5nLjwvcD4KCgoKICI7czo0 OiJjb2RlIjtzOjI5NzA6IgovLyBUaGlzIGxldCdzIHVzIGFkZCBzdHVmZiB0byB0aGUgZm9y bS4gQnV0IHdlIGFsd2F5cyBsZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhpcwovLyB3aGVuIGhl IHBsYWNlcyBvdXIgdGFnIGluIGhpcyBmb3JtIGhpbXNlbGYuIFNlZSBiZWxvdyBob3cuLi4K cmVnaXN0ZXJfY2FsbGJhY2soJ2FzeV9leGFtcGxlcXVlc3Rpb25fYXNrJywnY29tbWVudC5m b3JtJyk7CgovLyBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIHdoZW4gVHhwIGlzIGFib3V0 IHRvIHNhdmUuCnJlZ2lzdGVyX2NhbGxiYWNrKCdhc3lfZXhhbXBsZXF1ZXN0aW9uX2NoZWNr JywnY29tbWVudC5zYXZlJyk7CgpmdW5jdGlvbiBhc3lfZXhhbXBsZXF1ZXN0aW9uX2Fzaygk YXR0cykKewoJc3RhdGljICRhbHJlYWR5X2NhbGxlZCA9IGZhbHNlOwoKCS8vIFRoaXMgZnVu Y3Rpb24gaXMgZHVhbC11c2UuIENhbiBiZSB1c2VkIGFzIGNhbGxiYWNrLCBvciBhcyBhIHRh Zy4KCS8vIEJ1dCB5b3UgY2FuIG1ha2Ugc2VwZXJhdGUgZnVuY3Rpb25zIGlmIHlvdSB3aXNo LiBPciBpZiBhbGwgeW91IGFkZCBpcyBoaWRkZW4KCS8vIGlucHV0IG9yIGphdmFzY3JpcHQs IG5vIHRhZ3MgYXJlIG5lY2Vzc2FyeSwgYW5kIHlvdSBjYW4gYXV0by1hZGQuCglleHRyYWN0 KGxBdHRzKGFycmF5KAoJCSdzaXplJwkJPT4gJzEwJywKCQkndGFiJwkJPT4gJycsCgkJJ2Ns YXNzJwkJPT4gX19GVU5DVElPTl9fLAoJKSwkYXR0cykpOwoKCSRteXN0dWZmID0gJyc7CgoJ Ly8gV2Ugb25seSByZXR1cm4gYSB2YWx1ZSB0aGUgZmlyc3QgdGltZS4gVGhlIGZvcm0gaXMg YWx3YXlzIHBhcnNlZCwgYmVmb3JlIHRoZSBhdXRvLWFkZCwKCS8vIHNvIGlmIHRoZSB1c2Vy IGNhbGxlZCB0aGlzIGZ1bmN0aW9uIG1hbnVhbGx5IHZpYSBhIHRhZyBoZSB3aWxsIGFsd2F5 cyBvdmVycmlkZSB0aGUgYXV0by1hZGRpdGlvbi4KCWlmICghJGFscmVhZHlfY2FsbGVkKQoJ ewoJCSRhbHJlYWR5X2NhbGxlZCA9IHRydWU7CgkJaWYgKCBpc3NldCgkYXR0cykgJiYgaXNf YXJyYXkoJGF0dHMpICkKCQl7CgkJCS8vIFRoaXMgaXMgYSBjYWxsIGZyb20gYSB0YWcsIHNv IHdlIG9ubHkgb3V0cHV0IHRoZSBodG1sLXRhZwoJCQkvLyBDaGVjayBmSW5wdXQoKSBpbiB0 ZXh0cGF0dGVybi9saWIvdHhwbGliX2Zvcm1zLnBocCBvbiBsaW5lIDcwCgkJCSRteXN0dWZm ID0gZklucHV0KCd0ZXh0JywnYXN5X215ZXhhbXBsZWlucHV0JyxwcygnYXN5X215ZXhhbXBs ZWlucHV0JyksJGNsYXNzLCcnLCcnLCRzaXplLCR0YWIsJ2FzeV9teWV4YW1wbGVpbnB1dCcp OwoJCX0gZWxzZSB7IC8vIFRoaXMgaXMgdGhlIGNhbGxiYWNrLWFkZGl0aW9uIHRvIHRoZSBm b3JtLCBzbyB3ZSBhbHNvIGFkZCBhIGxhYmVsIGFuZCBzb21lIGluZm8KCQkJLy8gQmVjYXVz ZSB3ZSBpbnNlcnQgcmlnaHQgYWZ0ZXIgdGhlIHRleHRhcmVhLCB3ZSBzdGFydCB3aXRoIGEg PGJyPgoJCQkkbXlzdHVmZiA9ICc8YnIgLz48bGFiZWwgZm9yPSJhc3lfbXlleGFtcGxlaW5w dXQiPldoYXQgaXMgdGhyZWUgdGltZXMgMjA/PC9sYWJlbD4nCgkJCS5mSW5wdXQoJ3RleHQn LCdhc3lfbXlleGFtcGxlaW5wdXQnLHBzKCdhc3lfbXlleGFtcGxlaW5wdXQnKSwkY2xhc3Ms JycsJycsJHNpemUsJHRhYiwnYXN5X215ZXhhbXBsZWlucHV0Jyk7CgkJfQoJfQoJcmV0dXJu ICRteXN0dWZmOwp9CgpmdW5jdGlvbiBhc3lfZXhhbXBsZXF1ZXN0aW9uX2NoZWNrKCkKewoJ Ly8gSWYgeW91IHdhbnRlZCB0byBjaGVjayB0aGUgcmVndWxhciBjb21tZW50LWZvcm0gdmFy aWFibGVzLCB3ZSB3ZSB3b3VsZCB1c2U6CgkvLyBleHRyYWN0KGdldENvbW1lbnQoKSk7Cgkv LyBCdXQgaW5zdGVhZCB3ZSBvbmx5IGNhcmUgYWJvdXQgb3VyIG93biBmb3JtLWVsZW1lbnQu CgkkYW5zd2VyID0gdHJpbShwcygnYXN5X215ZXhhbXBsZWlucHV0JykpOwoKCS8vIFdlIGdl dCB0aGUgZXZhbHVhdG9yIGluc3RhbmNlLiBZb3UgYWx3YXlzIG5lZWQgdGhpcy4KCSRldmFs dWF0b3IgPSYgZ2V0X2NvbW1lbnRfZXZhbHVhdG9yKCk7CgoJLy8gSWYgd2Ugd2FudGVkIHRv IGZvcmNlIGEgcmVsb2FkIHVudGlsIHNvbWUgYW5zd2VyIGlzIGdpdmVuLCB3ZSB3b3VsZCBk byB0aGlzOgoJLy9pZiAoISRhbnN3ZXIpCSRldmFsdWF0b3IgLT4gYWRkX2VzdGltYXRlKFJF TE9BRCwgMSwgJ1BsZWFzZSBhbnN3ZXIgdGhlIHF1ZXN0aW9uLicpCgkvLyBlbHNlCgoJLy8g V2UgbWF5IGNvdWxkIGRlY2lkZSB0byBzZW5kIHRoZSBjb21tZW50IGluIHRoZSBtb2RlcmF0 aW9uIHF1ZXVlOgoJLy8gJGV2YWx1YXRvciAtPiBhZGRfZXN0aW1hdGUoTU9ERVJBVEUsIDAu NiwgJ2FzeV9leGFtcGxlcXVlc3Rpb24gYW5zd2VyZWQgY29ycmVjdGx5Jyk7CgoJLy8gSG93 ZXZlciB3ZSB3YW50IHRvIG1hcmsgd3JvbmcgYW5zd2VycyBhcyBzcGFtCglpZiAoISAoKCRh bnN3ZXIgPT0gJzYwJykgfHwgKCRhbnN3ZXIgPT0gJ3NpeHR5JykpKQoJCSRldmFsdWF0b3Ig LT4gYWRkX2VzdGltYXRlKFNQQU0sIDAuNzUsICdhc3lfZXhhbXBsZXF1ZXN0aW9uIGFuc3dl cmVkIGluY29ycmVjdGx5Jyk7CgllbHNlCgkJJGV2YWx1YXRvciAtPiBhZGRfZXN0aW1hdGUo VklTSUJMRSwgMC43NSwgJ2FzeV9leGFtcGxlcXVlc3Rpb24gYW5zd2VyZWQgY29ycmVjdGx5 Jyk7CgoJLy8gVGhhdCB3YXMgaXQuIEhvcGVmdWxseSBwcmV0dHkgZWFzeS4gTW9yZSBjb21w bGV4IGV4YW1wbGVzIGFuZCBwbHVnaW5zIHdpbGwgZm9sbG93CgkvLyBJZiB5b3Ugd2FudCB0 byBoYXZlIGR5bmFtaWMgYW5kIHNlY3JldCB2YWx1ZXMsIHlvdSBjYW4gcXVlcnkgdGhlIGRi IGZvciB0aGUgc2VjcmV0CgkvLyBwYXJ0IG9mIHRoZSBub25jZSBhbmQgdXNlIHRoYXQgdG8g Z2VuZXJhdGUgYW55IGR5bmFtaWMga2V5cy4gSXQgd2lsbCBiZSB0aGUgc2FtZSBmb3IKCS8v IHByZXZpZXcgYW5kIHN1Ym1pdCAob3RoZXJ3aXNlIGl0IHdvdWxkbid0IHBhc3MgdGhlIG5v bmNlLWNoZWNrLi4uKQp9CiI7czozOiJtZDUiO3M6MzI6ImM4ZTlmYTc5YThiNGRmMDMwNTA2 ZDk3N2YxNzMxNjMwIjt9