Skip to content
/ anon Public
forked from edsu/anon

tweet about anonymous Wikipedia edits from particular IP address ranges

License

Notifications You must be signed in to change notification settings

aachokey/anon

 
 

Repository files navigation

anon

Build Status Gitter chat

This little coffee script will watch Wikipedia for edits from a set of named IP ranges and will tweet when it notices one. It was inspired by @parliamentedits and is used to make @congressedits available. It is now being used a community of users to post selected Wikipedia edits to Twitter.

Run

To run anon you will need to:

  1. install Node
  2. npm install -g coffee-script
  3. git clone https://github.com/edsu/anon.git
  4. cd anon
  5. npm install
  6. cp config.json.template config.json
  7. add twitter credentials for your bot to config.json (make sure the Twitter app you create has read/write permission so it can tweet)
  8. add IP ranges/names to config.json
  9. modify status template if desired
  10. ./anon.coffee (you may want to use our shared instance in Wikimedia Labs, see below)

IP Ranges

You will notice in the example config.json.template that you can configure ip address ranges using a netmask:

"143.231.0.0/16"

or with an array of start/end IP addresses:

["143.231.0.0", "143.231.255.255"]

These two are equivalent, but the former is a bit faster, and easier to read. The latter is convenient if your range is difficult to express using a netmask.

If you would like your configuration file to reference the IP addresses in the external file just use the filename. So instead of:

{
  "nick": "anon1234",
  "accounts": [
    {
      "consumer_key": "",
      "consumer_secret": "",
      "access_token": "",
      "access_token_secret": "",
      "template": "{{page}} Wikipedia article edited anonymously from {{name}} {{&url}}",
      "ranges": {
        "Home Network": [
          ["192.168.1.1", "192.168.255.255"]
        ]
      }
    }
  ]
}

you would have:

{
  "nick": "anon1234",
  "accounts": [
    {
      "consumer_key": "",
      "consumer_secret": "",
      "access_token": "",
      "access_token_secret": "",
      "template": "{{page}} Wikipedia article edited anonymously from {{name}} {{&url}}",
      "ranges": "ranges.json"
    }
  ]
}

Debugging

If you would like to test without tweeting you can run anon with the --noop flag, which will cause the tweet to be written to the console but not actually sent to Twitter.

./anon.coffee --noop

If you would like to see all the change activity (URLs for each change) to test that it is actually listening, use the --verbose flag:

./anon.coffee --verbose

Alternate Configuration Files

By default anon will look for a config.json file in your current working directory. If you would like to specify the location of the configuration file, use the --config parameter:

./anon.coffee --config test.config

Running on Wikimedia Labs

We have a shared instance of anon running on Wikimedia Labs. This is useful once you have a configuration that is working and you'd like to have the running instance in labs use it.

Develop

There is not much to anon but there is a small test suite, which might come in handy if you want to add functionality.

npm test

Which Wikipedias?

anon uses the wikichanges module to listen to 38 language Wikipedias. wikichanges achieves this by logging in to the Wikimedia IRC server and listening to the recent changes channels for each Wikipedia. So if you plan on running wikichanges be sure your network supports IRC (it can sometimes be blocked).

Here are the Wikipedias that it currently supports:

If you would like to have another one added please add a ticket to the wikichanges issue tracker.

Community

Below is a list of known anon instances. Please feel free to add, in an alphabetic order, your own by sending a pull request.

License:

  • CC0 public domain dedication

About

tweet about anonymous Wikipedia edits from particular IP address ranges

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • CoffeeScript 77.0%
  • Python 23.0%