Preventing abuse of your public YOURLS install

A lot of you, beloved users, are using YOURLS to set up public shorteners. Sooner or later you all face the same problem: abuse by spammers, sometimes until your hosting provider shuts down your site. Hopefully, thanks to the plugin API, being abused by spammers is not inevitable destiny and plugins can address that issue.

I know at least 2 plugins on this topic:

If you made a plugin on this topic, be sure to let me know (remember: DON’T MODIFY core, make a plugin instead!!)

Short URL to this post:

YOURLS Plugin Example: Conditional Toolbar

Today a YOURLS users expressed an interesting request:

Hello, I’d like to show a toolbar for, say, http://sho.rt/b when I enter the address http://sho.rt/t/b.
Is there any fast modification I can make on the toolbar sample to make this work?

Of course there is :) Thanks to the plugin API within YOURLS, this is easily feasible, and this would also be an interesting plugin poking with various areas of YOURLS code, so I thought it deserved a little blog post about it.
Continue reading

Short URL to this post:

Happy New Year and a Plugin

Happy New Year, fellow YOURLS users. May this year bring all sorts of shortened URLs to you and your family!

I’m done writing my upcoming book about WordPress plugins (Professional WordPress Plugin Development) so I’m back on being able to dedicate some free time to YOURLS again. Ain’t that good news? :)

Also, I’ve added a new plugin to the Wiki Docs: this one lets you Ignore Bots from your stats and click counts.

Short URL to this post:

YOURLS 1.5 Released

I’m delighted to announce the availability of the YOURLS 1.5 “Ronnie James Dio” release.

\m/ Dio \m/

First, in the tradition of an Open Source CMS I particularly love and steal code from, I decided to baptize YOURLS release after the name of a musician, so I elected to pick someone I truly heart and who has been often with me when coding recently. But this post isn’t about me being a metalhead, right? So, back to YOURLS. What’s new?

Plugins. OMG PLUGINS!!1

The big new feature in YOURLS is a very cool plugin API. Plugins are simple PHP files that extend or modify features of YOURLS. Plugins are uberly cool because you can change how things work without modifying core files, and this way update YOURLS without losing your changes. Plugins are rather simple to write, and the package comes with a few sample plugins that you can use as examples to build your own. If you happen to also know that Open Source CMS I love, you’ll see that things are very similar.

Lots of cool stuff!

This release introduces other cool features or improvements:

  • You can move your config.php in the new /user directory where plugins live. This way, when you want to update YOURLS, simply delete everything except your /user folder and upload fresh files.
  • Shortening links is now more convenient than ever. There are 4 different bookmarklets, and the very handy “Prefix-n-shorten” feature allows you to simply type your site URL before any URL (like sho.rt/http://very-long-url-to-shrink/bleh).
  • Page titles are now saved when you shorten a long URL

Check the almost detailed changelog, or the very detailed commit log for more. Or, you know what? Simply check what’s new in the admin area of your YOURLS setup :)

But it still sucks :(

All things are not perfect yet and there will be a few bugs to axe. In particular, you may experience a few kinks when YOURLS will be fetching the title of a remote page with funky characters.

Also, this release is still using a, hmmm, “rather poor”? yeah, seems polite enough, rather poor DB structure that is more or less what I implemented when I began coding on YOURLS and when I didn’t plan for success or fun features. This DB schema will be just fine for most installs and use, but it’s not scalable and is difficult to make evolve.

So, the next release may be a quick 1.5.1 in a couple of weeks if I get enough feedback to fix a few things I left in 1.5, and then I’ll start working on the major rethinking of the DB structure (and a sure fun updater script) that is a pre-requisite to implement a load of other exciting features.

Another thing I need to improve is the community side. Version 1.4.3 have been downloaded more than 15,000 times so I guess there are a few thousands users now. Issues on the project are fine to report bugs or suggest features, but it’s too limited for the growing number of people seeking advice or help. I also want a simple way for people to share their plugins, so I’ll probably set up some kind of forum soon.

Shorten up!

Thank you for using YOURLS. I hope you’ll enjoy it as much as I enjoyed making it and improving it thanks to the invaluable feedback I got from a few users. Have fun!

Short URL to this post:

Future Database Structure

Even though the 1.5 version is not ready yet, I also have in mind the next release, 1.6, which will introduce a much needed DB rethinking. Currently the DB schema is very weak and inefficient, making it difficult to introduce new features and having lots of redundant data. Another effect of the “never thought this project would get that big” syndrome.

What I have currently in mind is this schema:
DB schema v2

Comments welcome on the wiki page to keep things in one place.

Short URL to this post:

Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging YOURLS’ Blog! I’ll try to separate things from my main blog and post updates about YOURLS here (the major stuff will be probably cross-posted on both anyway)

As some of you know, I’m pretty busy at the moment, but still working on the 1.5 release (no, no ETA)

Short URL to this post: