Archive for the ‘ubuntu’ Category

Early Eagle taking off

Posted at 9:17 am in rapache, ubuntu

It’s been a while since I blogged about Rapache. Hell, I didn’t even mentioned that Rapache 0.6 made it in Intrepid repositories and in Hardy backports!

I am happy to say 0.7 release is coming soon. The codename for this release is early eagle, but don’t fear it’s unlikely we will stick with Ubuntu’s naming convention, and, if we do, we won’t come up with.. ehm.. Jackalopes. Promise ! ;-)

This release marks the half way beetwen the proof of concept-ish rapache and the full featured version (which will have - most notably - ssh capabilities).

Major points for this release are:

Reworked UI

The edges of the user interface has been rounded a little.

  • most notably: the “Virtualhost Editor” window is very polished and has not anymore horizontal tabs.
  • Virtualhost and Module editors have a link to the respective online documentation. This is something very simple to implement, yet much needed.

Plugins for more advanced capabilities

Rapache enjoys now a handful plugins to let you perform common tasks easily:

  • the advanced tab lets you configure less often needed things like the server admin e-mail, the custom error log location (along with the error log level), enable or disable apache’s directory listing and to setup your own default documents policy.
  • the basic security plugin it’s basically an interface to the basic_auth module of Apache. This is simple but incredibly handy, you can quickly set up an access list (namely creating users and assigning a password to them) to any virtualhost. Useful for disabling or enabling access to any virtualhost with a click or to restrict the access to a given site without having to resort to any server-side technology other than Apache.

  • SSL ! We provide a Gui to quickly set-up an https:// enabled Virtualhost. Certificate Request creation is provided and even certificates self signing is available. It takes 5-6 clicks to be in business with Apache+SSL :-)

  • We now store last 20 backups of every virtualhost you edit within Rapache. That means that if something goes wrong, you can quickly restore the previous version.
  • You can also now edit the virtualhosts source at hand and save it directly from Rapache. You will enjoy syntax highlighting as you deserve (hey, everyone deserves syntax highlighting).

Apache status

  • Rapache now shows Apache’s status changing its own icon color. So you can see at a glance if Apache is up or not.
  • We put some new item in the menu bar to allow users to start/stop/restart Apache.
  • The new “Log Files” tab allows the user to quickly browse the logs.
  • Every error you get on Apache restart will be shown to the user inside a tab in the main window.

That’s it with the features.

How to get it:

The new dependencies are: python-crypto and python-lxml. After installing those, just check it out from the Rapache’s branch on launchpad.

sudo apt-get install python-crypto python-openssl python-lxml
sudo apt-get install python-glade2 python-gnome2-extras
sudo apt-get install python-gtk2 python-gtksourceview2 gksu
bzr branch lp:rapache
cd rapache
./rapache

Please report any dependency issues you encounter.

What’s next ?

We will soon be putting Rapache in the PPA to let you get it from there. As early eagle is not yet released, we welcome anyone willing to test it to download it and report bugs.

We are also looking for non-debian contributors interested to see Rapache run on their distribution of choice. If you are amongst them, please get in touch.

We can be contacted:

Also, here’s the Rapache project homepage.

Big thanks !

To Jason for doing so much work! To Qense for helping out with bugs and QA.

Sorry !

No EULA available yet. :)

 
1 comment

Written by Stefano Forenza on September 15th, 2008

Firefox Eula to clutter Ubuntu User’s Experience

Posted at 9:35 pm in ubuntu

In the nearing Intrepid release, Firefox displays an EULA to the user the first time it is started.
This brought a lenghty discussion on launchpad.

Firefox’s EULA raises a number of concerns:

  • the EULA refusal doesn’t prevent the user in any way from using Firefox, therefore EULA’s is just noise added to the user experience.
  • the EULA agreement would make firefox a non-free application which should be moved to multiverse.
  • refusing the EULA would (legally) leave the user without a browser in the default install.
  • EULA approval on first start would make firefox less usable when using the Live CD.

So far the options are the following:

  • Keeping firefox as it is, even with the EULA.
  • Switch to Epiphany as the default webbrowser.
  • Adopt IceWeasel from debian (which is firefox, with logo and brand replaced)

I’ve created three different Brainstorm idea to let people make their voice heard:

Keeping Firefox:


Adopting Iceweasel:


Adopting Epiphany:

EDIT: I’ve been digged ! http://digg.com/linux_unix/firefox_eula_to_clutter_ubuntu_user_s_experience

 
5 comments

Written by Stefano Forenza on September 14th, 2008

Ubuntu new codename announced (sic)

Posted at 7:25 pm in fun, ubuntu

PS: Mark, it is not too late ;-)

 
3 comments

Written by Stefano Forenza on September 9th, 2008

ISO looses consensum in South America

Posted at 2:22 pm in ubuntu

Seems like ISO’s reject of some national bodies appeals (on its OOXML approval procedures) got ISO itself in a bad position as a standard organization.

Weirdly enough, development countries seems stronger in making their voice heard than other countries. In a joint letter published yesterday, the representatives of Brazil, South Africa, VenezuelaEcuador, Cuba and Paraguay, make clear that integrity and impartiality of ISO’s are now in question, and from now on every new standard from ISO is not anymore going to be taken for unbiased automatically.

What follows is the full excerpt (source: www.convergenciadigital.com)

CONSEGI 2008 DECLARATION

We, the undersigned representatives of state IT organisations from Brazil, South Africa, Venezuela,  Ecuador, Cuba and Paraguay, note with disappointment the press release from ISO/IEC/JTC-1 of 20 August regarding the appeals registered by the national bodies of Brazil, South Africa, India and Venezuela.  Our national bodies, together with India, had independently raised a number of serious concerns about the process surrounding the fast track approval of DIS29500.  That those concerns were not properly addressed in the form of a conciliation panel reflects poorly on the integrity of these international standards development institutions.

Whereas we do not intend to waste any more resources on lobbying our national bodies to pursue the appeals further,  we feel it is important to make the following points clear:

1.The bending of the rules to facilitate the fast track processing of DIS29500 remains a significant concern to us.  That the ISO TMB did not deem it necessary to properly explore the substance of the appeals must, of necessity, put confidence in those institutions ability to meet our national requirements into question.
2.The overlap of subject matter with the existing ISO/IEC26300 (Open Document Format) standard remains an area of concern.  Many of our countries have made substantial commitments to the use of ISO/IEC26300, not least because it was published as an ISO standard in 2006.
3.The large scale adoption of a standard for office document formats is a long and expensive exercise, with multi-year projects being undertaken in each of our countries.  Many of us have dedicated significant time and resources to this effort.  For example, in Brazil, the process of translation of ISO/IEC26300 into Portuguese has taken over a year.

The issues which emerged over the past year have placed all of us at a difficult crossroads.  Given the organisation’s inability to follow its own rules we are no longer confident that ISO/IEC will be capable of  transforming itself into the open and vendor-neutral standards setting organisation which is such an urgent requirement.  What is now clear is that we will have to, albeit reluctantly, re-evaluate our assessment of ISO/IEC, particularly in its relevance to our various national government interoperability frameworks.  Whereas in the past it has been assumed that an ISO/IEC standard should automatically be considered for use within government, clearly this position no longer stands.

-Aslam Raffee (South Africa)
Chairman, Government IT Officer’s Council Working Group on Open Standards Open Source Software

- Marcos Vinicius Ferreira Mazoni (Brazil)
Presidente, Servico Federal de Processamento de Dados

- Carlos Eloy Figueira (Venezuela)
President, Centro Nacional de Tecnologías de Información

- Eduardo Alvear Simba (Ecuador)
Director de Software Libre, Presidencia de la República

- Tomas Ariel Duarte C. (Paraguay)
Director de Informática, Presidencia de la República

- Miriam Valdés Abreu (Cuba)
Directora de Análisis, Oficina para la Informatización.

 
1 comment

Written by Stefano Forenza on September 2nd, 2008

Tagged with , ,

Google leaves freetards in the dust

Posted at 12:57 am in google, ubuntu

A quick update on the new Google browser.

Seems like they’re working hard to make it available on all the platforms. But something in my head says we can forget it for at least 1/2 months. Maybe much more. Too bad.

 
7 comments

Written by Stefano Forenza on September 2nd, 2008

Google browser on the start line ?

Posted at 7:35 pm in google, ubuntu

Google Blogoscoped published an interesting article along with a comic about a new Webkit based browser from google.

Well, I have been able to read only the first pages of the comic, since the server quickly under stress and the admin disabled the comic. (by the time you read this it could be up again, though)

The browser it’s meant to be opensource, so that would leave behind privacy and anti-trust concerns.

As for the rest, read the article and let me know what you think about it. :)

 
no comments

Written by Stefano Forenza on September 1st, 2008

A new parser for Rapache

Posted at 2:18 pm in rapache, ubuntu

Writing a parser for Apache configuration files presented many interesting challenges. Along with the third rewrite of the parser (which shouldn’t considered ’stable’ yet, anyway) we tried to fullfill our need of having a more powerful API and managed to make the new API quite pythonic.

I thought I’ll just post a little tutorial I wrote for it, in the case someone is interested in something like that.

Warning: lots of grammatical errors down there. Late night writing :-)

Warning !!: long and boring post.

Rapache Parser

The parser is currently in RapacheCore.LineElement. A rename will happen soon.

Loading a file

In this tutorial we’ll work mostly on this file:

    ServerAlias www.example.com
    ServerAlias www.example.net

    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
    ErrorDocument 410 /error/HTTP_GONE.html.var
    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
    ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

    <VirtualHost *>
        ServerName example.org
        DocumentRoot /var/www/example.org/httpdocs
        ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
        ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
        ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
        ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var

        ErrorDocument 666 /error/HTTP_FORBIDDEN.html.var
        ErrorDocument 666 /error/HTTP_NOT_FOUND.html.var
    </VirtualHost>

Let’s instance the parser and load the file:

>>> from RapacheCore.LineElement import Parser
>>> p = Parser()
>>> p.load ( 'tests/datafiles/errordocuments.conf' )

Basics

The parser instance:

>>> print p
<RapacheCore.LineElement.Parser object at 0x822256c>

The parser allows searching for directives and sections by its attributes. Every attribute (but .lines, .sections, .value and .opts) returns a selection object.

>>> print p.ErrorDocument
<RapacheCore.LineElement.PlainSelection object at 0x825ee2c>

It is case insensitive, by the way

>>> print p.errordocument
<RapacheCore.LineElement.PlainSelection object at 0x826faec>

2 specialized selections also exist: .lines and .sections. Everyone of these contains all the lines/sections to be found in the global scope of the loaded file.

>>> len ( p.lines )
21
>>> len ( p.sections )
1

Selections

A selection is an iterable object, which allow iteration on the group of lines/sections it rappresents.
For example p.ErrorDocument will return a selection of all the ErrorDocument directives in the global scope of the configuration file.

>>> print len (p.ErrorDocument)
17

Direct access is also allowed.

>>> print p.ErrorDocument[0]
<RapacheCore.LineElement.Line object at 0x8273aac>
>>> for line in p.ErrorDocument[0:3]: print line
<RapacheCore.LineElement.Line object at 0x82789ac>
<RapacheCore.LineElement.Line object at 0x82789cc>
<RapacheCore.LineElement.Line object at 0x827888c>

Lines

Every directive is reppresented by a Line object.

line = p.ServerAlias
>>> line.value
'www.example.net'
>>> print line.key
ServerAlias
>>> print line.opts
<RapacheCore.LineElement.Options object at 0x8273d2c>

The opts attribute treats the value as a list of sub-values separated by a space. It’s an iterable object, you can convert it easily to a list and you can set it from a list or a tuple.

>>>print list(line.opts)
['www.example.net']
>>> line.opts = "test.example.net", "beta.example.net", "www.example.net"
>>> print line.opts

<RapacheCore.LineElement.Options object at 0x827366c>
>>> print list(line.opts)
['test.example.net', 'beta.example.net', 'www.example.net']
>>> print line.value
test.example.net beta.example.net www.example.net
>>> print line.opts[0]
test.example.net

You can as well delete elements from .opts as you’d do with a normal list and so on.

Selections meet lines

Every selection object also support the Line interface. .value .key and .opts will work, and will refer to the last line in the selection (given that last line wins in apache configuration files this seems the best policy)

>>> print p.ErrorDocument.value
506 /error/HTTP_VARIANT_ALSO_VARIES.html.var

You still can access the other lines as you would with list items

>>> print p.ErrorDocument[0].value
400 /error/HTTP_BAD_REQUEST.html.var

Creating a new line is as easy as specifying a new value for a non existing directive. (if the directive already exists it will just be overwritten)

>>> len(p.lines)
21
>>> p.fakeline.value = 'sdoij'
>>> p.fakeline.value
'sdoij'
>>> len(p.lines)
22

As affirmed before, trying to create a directive that already exist will just overwrite the last existing line.

>>> len(p.lines)
22
>>> p.ServerAlias.value = "www.example.org"
>>> len(p.lines)
22

As a possible exception to the ‘whatever you do on a selection, it’ll affect the last line in that selection’ rule, deleting a selection will erase all the lines pertaining to it.

>>> len( p.ServerAlias )
2
>>> del p.ServerAlias
>>> len( p.ServerAlias )
0

To be able to delete individual lines, just specify their index:

>>> len ( p.ErrorDocument )
17
>>> p.ErrorDocument[-1].value
'506 /error/HTTP_VARIANT_ALSO_VARIES.html.var'
>>> del p.ErrorDocument[-1]
>>> len ( p.ErrorDocument )
16
>>> p.ErrorDocument[-1].value
'503 /error/HTTP_SERVICE_UNAVAILABLE.html.var'

Searching

As not every directive in Apache configuration files is meant to be unique (ErrorDocument for example), searching may be necessary.

You can search using the .search() method, specifying a list of searched options as parameters.
The search will return a Selection so quite everything valid for selections (iterating, last line wins, etc) will be valid for search result

>>> len( p.ErrorDocument.search([404]) )
1
>>> p.ErrorDocument.search([404]).value
'404 /error/HTTP_NOT_FOUND.html.var'

It’s possible to search for just the second option, just specify None as the first option

>>> p.ErrorDocument.search([None, '/error/HTTP_NOT_FOUND.html.var']).value
'404 /error/HTTP_NOT_FOUND.html.var'

You can modify the value of the searched lines easily:

>>> p.ErrorDocument.search([404]).opts = [404, '/error/NEW_ERROR.html.var']

>>> p.ErrorDocument.search([404]).value
'404 /error/NEW_ERROR.html.var'

As an exception, deleting all the found lines requires the use of the delete() method.

>>> p.ErrorDocument.search([404]).delete()
>>> len( p.ErrorDocument.search([404]) )
0

Sections

A section is a part of the config file enclosed in some <TAG></TAG>. Every directive or sub-section inside a section is not accessible from the outscope selections. (i.e.: p.ErrorDocument won’t return the entries inside a <VirtualHost>).
You can get a selection of sections in the very same way you access lines. Also, the sections behave the precise same way as the Parser class.

>>> len( p.VirtualHost )
1
>>> len( p.VirtualHost.ErrorDocument )
6

Sections also implement the Line interface, which means you that expose .key,.value and .opts attributes you can manipulate

>>> print p.VirtualHost.key
VirtualHost
>>> print p.VirtualHost.value
*

While sections are deletable the exact same ways as line, they you can’t create the same way you do with lines.
p.Directory.value = ”/var/www”, for example, would create a line “Directory /var/www” and not a full section, and that will cause Apache to complain on the next restart. That’s because the parser has no way to know that you want to create a section.

To create a section, you should use the following code:

>>> v.sections.create( 'VirtualHost',  '*:80')
>>> p.sections.create( 'VirtualHost',  '*:80')
<RapacheCore.LineElement.Section object at 0x8260f2c>
>>> p.VirtualHost.get_as_str()
'<VirtualHost *:80>\n</section>\n'

Getting/Setting the content

You can get and set the config file into the parser not only via load() but also passing in a list or string.

  • p.set_from_str( string ) : sets the content from a string
  • p.set_from_list( list ) : sets the content from a list of individual lines
  • p.get_as_str() : returns content as a string
  • p.get_as_list() : returns content as a list containing individual lines
 
2 comments

Written by Stefano Forenza on August 29th, 2008

Lazy update

Posted at 8:02 am in ubuntu

Ok, not that I love so much this kind of posts, links lists I mean, but I found some interesting stuff recently:

  • This is not secret, but I didn’t know. You can host a proprietary project on launchpad, you just need to buy a subscription for it. As for me I fully agree with this policy.
  • Google Maps needs user’s help to map a handful of developing countries. While their mapping toy is pretty cool, it just seem a black hole to me. Once you put in things, you likely will never been able to get the info out (for your own uses, contributing to Open Street Maps, for example). I do understand that they can’t release geographic data that they actually bought or licensed from commercial party, but asking users help to get more data while not making that data available under fair license terms is pretty lame.
  • Sex is for fags (read their guide).
 
no comments

Written by Stefano Forenza on August 29th, 2008

Got the new Memaker into Intrepid

Posted at 1:58 am in ubuntu

With Intrepid’s freeze being only 2 days far, I finally got Memaker 1.0.1 packaged and kindly sponsored (thanks Emanuele) to Hardy Intrepid.

This new version sports a bunch of bugfixes and, most notably, an handful of new themes to create your avatars.

Sample of Memaker "Freestyle" theme

As Memaker’s upstream is starting the work on the 2.0 version, if you’re an artist I encourage you to get involved in Memaker and try create some theme for it. It would be a great way to contribute to the community and quite funny either ! Just subscribe yourself to the artist’s mailing list or drop to #memaker (on freenode.org) to  say hi !

 
3 comments

Written by Stefano Forenza on August 27th, 2008

Google Reader wants me to learn more. But I do *not* want to learn. Anything.

Posted at 11:46 pm in google, ubuntu

Seems like Google is desperate about getting me to make new google friends. Of course the info bubble does not have a close button. Does not disappear even if I:

  • click in the white space of the rest of the page
  • refresh the page with F5.
  • perform logout and login (yes, afterwards you’ll find it there).

Google reader is very nice but I really:

  • don’t want any google friend
  • don’t want to learn more
  • just want to use my reader.

I find google getting less and less inspired respect of a bunch of years ago. That’s normal, as the tree grows you’re more likely to find apples gone bad. Just cut them.

 
4 comments

Written by Stefano Forenza on August 13th, 2008

Tagged with