Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 etc
Octocat-spinner-32 sweettooth
Octocat-spinner-32 .gitignore
Octocat-spinner-32 COPYING
Octocat-spinner-32 README.rst
Octocat-spinner-32 extensions-web.doap
Octocat-spinner-32 requirements.txt
README.rst

SweetTooth-Web

SweetTooth-Web is a Django-powered web application that, in co-operation with some co-horts in GNOME Shell and other places, allows users to install, upgrade and enable/disable their own Shell Extensions. All operations with the Shell are done through a special NPAPI plugin which proxies over to the Shell by DBus.

Since extensions can be dangerous, all extensions uploaded to the repository must go through code review and testing.

Getting Started

You can get started developing the website with:

$ git clone git://github.com/magcius/sweettooth.git
$ cd sweettooth
$ virtualenv_ --system-site-packages ./venv
$ . ./venv/bin/activate
$ pip_ install -r requirements.txt
$ # ... Database setup...
$ python sweettooth/manage.py `runserver_plus`_

I use --system-site-packages because we require Xapian, which doesn't have its Python bindings in PyPI.

Create a superuser, and log in. You should be able to upload extensions and review extensions.

Testing with the Shell

If you have GNOME Shell, and you want to test the installation system, you're going to have to hack your system. For security reasons, the browser plugin and GNOME Shell both ping the URL https://extensions.gnome.org directly. The easiest way to get around this is to make a development environment with the proper things that it needs. Since the Django development server doesn't natively support SSL connections, we need to install Apache. Follow the instructions above to get a proper SweetTooth checkout, and then:

# Install Apache
$ sudo yum install httpd mod_wsgi mod_ssl

# Generate a self-signed cert
$ openssl req -new -nodes -out ego.csr -keyout extensions.gnome.org.key
# Answer questions. The only one required is the Common Name. You must put
# extensions.gnome.org -- the hostname -- as the answer.

$ openssl x509 -req -in ego.csr -signkey extensions.gnome.org.key -out extensions.gnome.org.crt
$ rm ego.csr
$ chmod 600 extensions.gnome.org.key

# Install it on your system.
$ sudo cp extensions.gnome.org.crt /etc/pki/tls/certs/
$ sudo cp --preserve=mode extensions.gnome.org.key /etc/pki/tls/private/

# The shell will look for a special file called 'extensions.gnome.org.crt',
# for development purposes. Otherwise it will use your system's CA bundle.
$ mkdir -p ~/.local/share/gnome-shell
$ cp extensions.gnome.org.crt ~/.local/share/gnome-shell/

# Configure Apache.
$ cp etc/sweettooth.wsgi.example ./sweettooth.wsgi
$ $EDITOR ./sweettooth.wsgi

$ cp etc/sweettooth.httpd.conf.example ./sweettooth.httpd.conf
$ $EDITOR ./sweettooth.httpd.conf
$ sudo cp sweettooth.httpd.conf /etc/httpd/conf.d/sweettooth.conf

# Edit /etc/hosts
$ sudo tee -a /etc/hosts <<< 'extensions.gnome.org 127.0.0.1'

Requirements

Something went wrong with that request. Please try again.