diff --git a/staging-v0.3.5/LICENSE b/staging-v0.3.5/LICENSE new file mode 100644 index 0000000..b7b5f53 --- /dev/null +++ b/staging-v0.3.5/LICENSE @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/staging-v0.3.5/MANIFEST.in b/staging-v0.3.5/MANIFEST.in new file mode 100644 index 0000000..5eb8cfe --- /dev/null +++ b/staging-v0.3.5/MANIFEST.in @@ -0,0 +1,15 @@ +include README* +include LICENSE +include changelog +include copyright +graft man +graft scripts +graft doc +graft conf-examples +graft event-scripts +graft www-data +graft templates +graft lang +graft plugins +graft intl +prune package.exclude diff --git a/staging-v0.3.5/README b/staging-v0.3.5/README new file mode 100644 index 0000000..7473328 --- /dev/null +++ b/staging-v0.3.5/README @@ -0,0 +1,199 @@ +******************************************** +* CryptoBox v0.3.xx * +******************************************** + +$Id$ + +This file describes the webserver CryptoBox. +The CryptoBox enables you to control the plaintext or encrypted harddisks of +your server via a webinterface. +Read on if you want to install the CryptoBox-server package on your computer. + +For more information, see the website: + http://cryptobox.org + +Table of contents: + 1) Requirements + 2) Installation + 3) Setup + 4) Usage + 5) Data access + 6) Development + 7) Acknowledgements + 8) Licence + +-------------------------------------------- + +1) Requirements + - Linux 2.6 + - super (to selectively gain root privileges) + - Python 2.4 + - some python packages: + clearsilver 0.10 for python + python-configobj 4.x + cherrypy 2.x + + +2) Installation +For Debian, Ubuntu and other derivates you should use the debian package: + see http://systemausfall.org/toolforge/debian/ + +Please follow the /usr/share/doc/cryptobox-server/README.Debian for +any special steps regarding Debian. + +There are currently no official rpm or other packages of the CryptoBox. +Use the source installation on non-deb based distributions. + +For source installation follow these steps: + Get the source: + http://cryptobox.org/download + + Extract tarball and change to the new directory: + tar xzf cryptobox-0.?.?.tar.gz + + Install the program: + python setup.by install + + Fulfil the requirements: + read more in the user documentation + +The installed pyhton modules can be found in your local python installation directory. +The default location should be: + /usr/lib/python2.4/site-packages/cryptobox/ +The data files are (by default) installed to: + /usr/share/cryptobox-server/ + +As some actions of the cryptobox require root privileges, you have to add the +following line to /etc/super.tab: + CryptoBoxRootActions /usr/bin/CryptoBoxRootActions cryptobox +The script /usr/bin/CryptoBoxRootActions is used to execute all actions +requiring root privileges. Please check it to make sure, that your system will +not get compromised. + + +3) Setup + + a) Start at bootup + Set NO_START in /etc/default/cryptobox-server to "0". + The CryptoBox webserver will get started by its runlevel control script + after bootup. + + b) Define managed devices + You may restrict which blockdevices should be accessible to the CryptoBox. + Simply set [Main]->AllowedDevices in /etc/cryptobox-server/cryptobox.conf + to a comma separated list of device prefixes: e.g. /dev/sd gives access to + all SCSI devices, while /dev/hda3 restricts it to this single partition. + The user executing the webserver (by default: 'cryptobox') must have write + access to these devices. Usually the cryptobox user is member of the 'disk' + group. This gives control over most devices. + Be careful with this setting, as you may expose important data to public + read and write access. + + c) Listening port and interface + By default, the CryptoBox webserver listens to tcp port 8080 on all network + interfaces. You can change this setting in /etc/default/cryptobox-server. + Also take a look at your firewall settings. + + d) Disable plugins + The CryptoBox contains a lot of plugins. As some of them could expose + unwanted features to your users, you should carefully select which plugins + to disable. + Quite likely candidates for disabling are: + - shutdown: poweroff or reboot the computer + - network: change IP, gateway or dns settings of the server + - partition: partition blockdevices + - volume_format_fs: format a disk/partition (plaintext/encrypted) + Take a look at /usr/share/cryptobox-server/plugins for the list of + other plugins. + The setting [Main]->DisabledPlugins in /etc/cryptobox-server/cryptobox.conf + is a comma separated list of plugin names. Capitalization is important! + + e) Separate configuration partition + The CryptoBox webserver requires a writeable directory for proper + operation. If your root filesystem is not writeable (e.g. booting from a + cdrom, read-only mounted flash memory, ...) you may use a seperated + partition to store runtime settings. The CryptoBox will automatically + creates it, when you use partition one of your disks with its interface. + The setting [Main]->UseConfigPartition (see + /etc/cryptobox-server/cryptobox.conf) defines, whether you want to use a + separate partition (value "1") or if you want to store your runtime + settings in the root filesystem (typically below + /var/cache/cryptobox-server). + + f) Samba/WebDAV/NFS/??? integration (aka. event script handling) + The CryptoBox allows you to add event handling scripts for most of the + interesting events: bootup/shutdown of the webserver and mount/umount + of single volumes. + If you want to automatically publish your mounted volumes with samba + or similar fileservers, then you should take a closer look at the + example scripts for samba and apache-webdav in + /usr/share/doc/cryptobox-server/event-scripts. + You may also just publish the mount directory of the CryptoBox. This + will expose all mounted volumes very easily. Review the configuration + file for the setting [Locations]->MountParentDir. + + g) Take a close look at the configuration file to check all other options + before you start the CryptoBox webserver. + + +4) Usage +Use your favourite web browser to go to http://localhost:8080 and browse the +webinterface of the CryptoBox. +Some parts of the interface are restricted to administrative access. The +default access combination is the user 'admin' and the password 'admin'. Please +change this setting immediately. +The plugin 'user_manager' allows you to add users and to change passwords. +The plugin 'plugin_manager' lets you configure, which plugins require +administrative authentication. + + +5) Data access +Before you can access your plaintext or encrypted data on a volume, you have to +open it. To accomplish this, you have to go to the webinterface, select the +appropriate volume and click on "Open volume" in the "Activation" tab. + +If you are running the CryptoBox locally, then you can access all open volumes +below the 'MountDir' as specified in the configuration file +(/etc/cryptobox-server/cryptobox.conf). The default mount location is +/var/cache/cryptobox/mnt. + +If the CryptoBox package is running on a networking server, then you have to +configure your favourite fileserver (e.g. samba, webdav, nfs, ftp, ...) to +publish the subdirectories of the 'MountDir' (see above). +If you want to customize the publishing of volumes, then you may use the +event script feature fo the CryptoBox. See event-scripts/README for details. + + +6) Development +bug reports: please use our issue tracker + https://systemausfall.org/trac/cryptobox/newticket + +email: + info@cryptobox.org + +The CryptoBox project is mainly driven by sense.lab (http://senselab.org). + + +7) Acknowledgements +Besides the core development team, these people helped a lot: +Clavdia Horvat, Tadej Brce & DuĊĦan Rebolj - Slovenian translation +rike - French translation +Fabrizio Tarizzo - Italian translation +kinneko - Japanese translation +Andrzej S. Kaznowski - Polish translation +Fadrique - Spanish translation +Michiel van Dijk - Dutch translation +Raimar - the blender dragon +Gilles Accad - French translation +ASpr - Russian translation + +We also want to thank the numerous developers of the Free Software, the +CryptoBox depends on and that was used in development. + + +8) License +The code is licensed under the GPL v2.0 or above. +The documentation and all graphics are licenced under "Creative Commons Attribution +Share-Alike 2.5" (http://creativecommons.org/licenses/by-sa/2.5/). +See the file 'copyright' for details. + diff --git a/staging-v0.3.5/README.davfs b/staging-v0.3.5/README.davfs new file mode 100644 index 0000000..6687d23 --- /dev/null +++ b/staging-v0.3.5/README.davfs @@ -0,0 +1,47 @@ +Integration of apach2 as a (Web)DAV server into the CryptoBox + +This file describes how to expose the volumes that are managed by the CryptoBox +through WebDAV shares. +Apache2 including the dav_fs module is the most common server for the WebDAV +filesystem. The following description will focus on this server. + +First you have to install apache2 and the dav_fs module. +Use your favourite package manager to install them. +(Note for debian: the dav_fs module is part of the apache2-common package. +Just activate the module via 'a2enmod dav_fs'.) + +There are two different ways to do use dav shares: + + +A) one share for all volumes together + +Just create a file with the following lines to your /etc/apache2/conf.d directory: + Alias "/cryptobox" "/var/cache/cryptobox-server/mnt" + + Dav filesystem + + +Reload the new apache2 configuration by calling: + invoke-rc.d apache2 reload + + + +B) one share for each volume + +Copy the example event script +/usr/share/doc/cryptobox-server/event-script/apache2_dav to +/etc/cryptobox-server/events.d/apache2_dav. This event handler will add and remove +shares whenever a volume is mounted or unmounted via the CryptoBox webinterface. + +Copy the file /usr/share/doc/cryptobox-server/conf-examples/apache2_dav.conf to +/etc/apache2/conf.d/apache2_dav. + +Create a directory for the apache share config files: + mkdir -p /var/cache/cryptobox-server/apache2_dav.conf.d + +Chown it to the cryptobox user: + chown cryptobox /var/cache/cryptobox-server/apache2_dav.conf.d + +Reload the new apache2 configuration by calling: + invoke-rc.d apache2 reload + diff --git a/staging-v0.3.5/README.proxy b/staging-v0.3.5/README.proxy new file mode 100644 index 0000000..cf3ab5a --- /dev/null +++ b/staging-v0.3.5/README.proxy @@ -0,0 +1,66 @@ +Running the CryptoBox behind a proxy + +This describes how to setup the CryptoBox webserver behind a proxy webserver +(e.g.: apache or lighttpd). + + + +-=-=-=- apache in front of the cryptobox-server (cherrypy) -=-=-=- + + +The following section describes how to configure an apache2 webserver to +forward requests to the cherrypy server of the CryptoBox. + + +1) Required modules + - proxy + - headers + Both module should be part of usual default installations of apache2. + Activate these modules. For debian you should run: a2enmod MOD_NAME + + +2) Configuration directives + The following example should help you to create your own proxy configuration + for apache2. + + ProxyRequests Off + + + Order Deny,Allow + Allow from all + + + + ProxyPass http://localhost:8080/ + ProxyPassReverse http://localhost:8080/ + RequestHeader set CryptoBox-Location /cryptobox + # uncomment the next line for ssl-enabled virtualhosts + RequestHeader set X-SSL-Request 1 + + + Now you should restart apache2. + + +3) Testing + Now you should point your webserver to the proxy host and check if + the CryptoBox layout ist displayed properly. + + + +-=-=-=- lighttpd in front of the cryptobox-server (cherrypy) -=-=-=- + + +In this section we do the same as above, but with lighttpd. + +Your lighttpd config should contain something like this: + + # selecting modules + server.modules = ( "mod_scgi" ) + + scgi.server = ( "/cryptobox" => + (( "host" => "127.0.0.1", + "port" => 8080, + "check-local" => "disable" + )) + ) + diff --git a/staging-v0.3.5/README.samba b/staging-v0.3.5/README.samba new file mode 100644 index 0000000..5d87185 --- /dev/null +++ b/staging-v0.3.5/README.samba @@ -0,0 +1,31 @@ +Integration of samba into the CryptoBox + +This file describes how to expose the volumes that are managed by the CryptoBox +through samba shares. + +There are two different ways to do this: + + +A) one share for all volumes together + +Just add the following lines to your /etc/samba/smb.conf: + [cryptobox] + path = /var/cache/cryptobox-server/mnt + browseable = yes + read only = no + guest ok = yes + +Reload the new samba configuration by calling: + invoke-rc.d samba reload + + +B) one share for each volume + +Copy the example event script /usr/share/doc/cryptobox-server/event-scripts/samba +to /etc/cryptobox-server/events.d/samba and make sure it is executable +by root. This event handler will add and remove shares whenever a volume is mounted +or unmounted via the CryptoBox webinterface. + +Add the following line to your /etc/samba/smb.conf: + include = /var/cache/cryptobox-server/settings/misc/samba-include.conf + diff --git a/staging-v0.3.5/README.ssl b/staging-v0.3.5/README.ssl new file mode 100644 index 0000000..6d4dd81 --- /dev/null +++ b/staging-v0.3.5/README.ssl @@ -0,0 +1,113 @@ +Encrypting the http traffic to the CryptoBox webserver with SSL + +This file describes how to encrypt your connection to the CryptoBox webserver. +This is highly recommended as the encryption password for your data could be +exposed to intruders in your local network otherwise. + +Below you will find detailed descriptions on how to set up an encrypted +connection to the webinterface: + - use the plugin "encrypted_webinterface" + - run the CryptoBox webserver behind an ssl-enabled webserver + - use stunnel or stunnel4 to provide an SSL socket + - use the a proxy server (e.g. pound) + - ... + +At the end of this document you will find some information on how to turn off +SSL detection of the CryptoBox. You should read it, if there is no solution +for your specific setup available or if you are _very_ sure, that you do not +need encrypted http connections. + +------------------------------------------------------------------- + +1) using the plugin 'encrypted_webinterface' + This plugin is disabled by default. You can enable it in your + cryptobox.conf file by removing it from the 'DisabledPlugins' setting. + + The plugin does the following during startup of the CryptoBox: + - create a self-signed X.509 certificate if necessary + - run stunnel4 from port 80 to 443 (https) with this certificate + + Of course, this will not work, if the port 443 is already in use by + another program - in this case, you should better choose one of the + solutions described below. + + Now, you need to point your browser to the URL of the CryptoBox with + 'https' instead of 'http'. Or just follow the "Use encrypted + connection" link that appears, if you use plain http. + + For a finer tuned certifacte follow the steps under "CryptoBox + behind stunnel". + + +------------------------------------------------------------------- + +2) CryptoBox behind an ssl-enabled webserver + Read the documentation of your favourite webserver to learn how to enable + ssl encryption. + + The CryptoBox webserver cannot detect whether the connection is encrypted + or not since it is behind the proxy webserver and does not share its + environment. Thus you have to tell the CryptoBox in the request header + whether the connection is encrypted or not. + + for apache2: + 1) enable the 'headers' module (for debian: "a2enmod headers") + 2) add this line to your ssl-enabled virtualhost: + RequestHeader set X-SSL-Request 1 + 3) restart your webserver + + +------------------------------------------------------------------- + +3) CryptoBox behind stunnel (configured manually) + You may want to tunnel the traffic between the cryptobox-server + and your browser. "stunnel" or "stunnel4" are excellent candidates for this job. + + If you do not have an ssl certificate yet, then you should create + one first. On Debian: "apt-get install ssl-cert" and run the following + command (the supplied example openssl.conf file resides in the doc + directory of the cryptobox-server package): + + make-ssl-cert conf-examples/openssl.conf + + In case, that you already have a certificate just run this command: + + stunnel -p -r localhost:80 -d 443 + + And maybe you want to add the last command to your bootup scripts. + + +------------------------------------------------------------------- + +4) CryptoBox behind a proxy server + As there are many proxy servers around, we cannot describe all of them. As + an example, we will explain the setup of the load-balancing proxy 'pound' + (http://www.apsis.ch/pound/). + + Just add the following lines to you /etc/pound/pound.cfg: + # Remove the X-SSL-Request header from incoming + # connections to prevent hackers from spoofing it + HeadRemove "X-SSL-Request" + + # Add an extra header to tell the CryptoBox that + # the external connection is secure + HTTPSHeaders 0 "X-SSL-Request: 1" + + This example is taken from: + http://jamesthornton.com/writing/openacs-pound.html + + +------------------------------------------------------------------- + +5) Problems with SSL detection? + If the CryptoBox continues to complain about the unencrypted connection, even + if it runs behind an ssl-enabled webserver or behind stunnel, then you can do + one of the following things: + - disable the plugin 'encypted_webinterface' in the cryptobox.conf file + if you do not need it + - set the request header value "X-SSL-Request" to "1" (the digit 'one') + - set the environment setting "HTTPS" to a non-empty value during the + startup of the CryptoBox webserver. Maybe + /etc/default/cryptobox-server would be the right place for this. + - let the CryptoBox webserver listen to port 443 + diff --git a/staging-v0.3.5/bin/CryptoBoxRootActions b/staging-v0.3.5/bin/CryptoBoxRootActions new file mode 100755 index 0000000..3f2e534 --- /dev/null +++ b/staging-v0.3.5/bin/CryptoBoxRootActions @@ -0,0 +1,555 @@ +#!/usr/bin/env python +# +# Copyright 2007 sense.lab e.V. +# +# This file is part of the CryptoBox. +# +# The CryptoBox is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# The CryptoBox is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the CryptoBox; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + + +"""module for executing some programs or scripts that need root privileges + +Syntax: + check + - return exitcode zero if basic checks succeeded + + program PROGRAM_NAME [ARGS] + - call the program (must be defined in "allowedProgs" below) + + event EVENT_SCRIPT [ARGS] + - call an event script + + plugin PLUGIN_NAME [ARGS] + - call a root_action script of a plugin + + +Exitcodes: + 0 - execution was ok + 1 - the executed program or action returned a failure exitcode + 100 - improper calling or misconfiguration + of CryptoBoxRootAction (wrong arguments, wrong uid) + 101 - failed to execute the given program - maybe it does not exist? + +For more detailed information take a look at the manpage: + "man CryptoBoxRootActions" +""" + +__revision__ = "$Id" + +import os +import sys +import subprocess +import pwd +import grp +import types + +allowedProgs = { + "sfdisk": "/sbin/sfdisk", + "cryptsetup": "/sbin/cryptsetup", + "mount": "/bin/mount", + "umount": "/bin/umount", + "blkid": "/sbin/blkid", + "pvdisplay": "/sbin/pvdisplay", + } + +## this line is necessary for running unittests or playing around with a local +## svn working copy - otherwise the security checks would be too strict +OVERRIDE_FILECHECK = False + +DEV_TYPES = { "pipe":1, "char":2, "dir":4, "block":6, "file":8, "link":10, "socket":12} +EVENT_MARKER = '_event_scripts_' +## use this string as device name if you want to mount a ramdisk +MAGIC_TMPFS = "_tmpfs_" + + +def checkIfFileIsSafe(fname): + """check if the file and its parents are only writeable for root""" + ## the override setting may be turned off temporarily to allow unittests + if OVERRIDE_FILECHECK: + return True + ## if the calling user id is 0 (root), then we do not have to check this, + ## as root would be allowed to do this anyway + ## this eases testing with a not-installed working copy in a uml environment + if getCallingUserInfo()[1] == 0: + return True + props = os.stat(fname) + ## check if it is owned by non-root + if props.st_uid != 0: return False + ## check group-write permission if gid is not zero + if (props.st_gid != 0) and (props.st_mode % 32 / 16 > 0): return False + ## check if it is world-writeable + if props.st_mode % 4 / 2 > 0: return False + ## are we at root-level (directory-wise)? If yes, then we are ok ... + if fname == os.path.sep: return True + ## check if the parent directory is ok - recursively :) + return checkIfFileIsSafe(os.path.dirname(os.path.abspath(fname))) + + +def checkIfPluginIsValid(plugin): + import imp + try: + x = imp.load_source("cbox_plugin", plugin) + except (SyntaxError, IOError): + return False + try: + if getattr(x, "PLUGIN_TYPE") == "cryptobox": + return True + else: + return False + except AttributeError: + return False + + +def checkIfEventScriptIsValid(plugin): + event_dir = os.path.dirname(plugin) + if os.path.exists(os.path.join(event_dir, EVENT_MARKER)): + return True + else: + return False + + +def call_plugin(args): + """check if the plugin may be called - and do it finally ...""" + plugin = os.path.abspath(args[0]) + del args[0] + ## check existence and if it is executable + if not os.access(plugin, os.X_OK): + raise Exception, "could not find executable plugin (%s)" % plugin + ## check if the plugin (and its parents) are only writeable for root + ## this can be overridden by OVERRIDE_FILECHECK + if not checkIfFileIsSafe(plugin): + raise Exception, "the plugin (%s) is not safe - check its " % plugin \ + + "(and its parents') permissions" + ## check if the plugin is a python program, that is marked as a cryptobox plugin + if not checkIfPluginIsValid(plugin): + raise Exception, "the plugin (%s) is not a correctly marked python script" % plugin + args.insert(0, plugin) + proc = subprocess.Popen( + shell = False, + args = args) + proc.wait() + return proc.returncode == 0 + + +def call_event(args): + """check if the event script may be called - and do it finally ...""" + event = os.path.abspath(args[0]) + del args[0] + ## check existence and if it is executable + if not os.access(event, os.X_OK): + raise Exception, "could not find executable event script (%s)" % event + ## check if the script is valid (the marker file must be in the same directory) + if not checkIfEventScriptIsValid(event): + raise Exception, "the event script (%s) does not reside in" % event \ + + "a directory with the marker file (%s) - this " % EVENT_MARKER \ + + "is not allowed due to abuse prevention" + ## check if the event (and its parents) are only writeable for root + if not checkIfFileIsSafe(event): + raise Exception, "the event (%s) is not safe - check its " % event \ + + "(and its parents') permissions" + args.insert(0, event) + proc = subprocess.Popen( + shell = False, + args = args) + proc.wait() + return proc.returncode == 0 + + +def isWriteable(path, force_dev_type=None): + """check if the calling user (not root!) has write access to the device/file + + the real (not the effective) user id is used for the check + additionally the permissions of the default groups of the real uid are checked + it is sufficient, if the device/dir is owned by us + this check works nicely together with "super", as it changes (by default) only + the effective uid (not the real uid) + """ + ## first check, if the device/file exists + if not os.path.exists(path): + sys.stderr.write("%s does not exist!\n" % path) + return False + ## check the type of the path - if necessary + if (not force_dev_type is None) and \ + (force_dev_type != os.stat(path).st_mode % 65536 / 4096): + sys.stderr.write("%s does not have the numeric type '%d'!\n" \ + % (path, force_dev_type)) + return False + ## retrieve the information for the real user id + (trustUserName, trustUID, groupsOfTrustUser) = getCallingUserInfo() + ## are we called by the root user? this would be ok + if trustUID == 0: + return True + ## is the path owned by us? + if os.stat(path)[4] == trustUID: + return True + ## set the default groups of the caller for the check (restore them later) + savedGroups = os.getgroups() + os.setgroups(groupsOfTrustUser) + ## check permissions + result = os.access(path, os.W_OK) and os.access(path, os.R_OK) + ## reset the groups of this process + os.setgroups(savedGroups) + return result + + +def run_cryptsetup(args): + """execute cryptsetup as root + + @args: list of arguments - they will be treated accordingly to the first element + of this list (the action)""" + if not args: raise "WrongArguments", "no action for cryptsetup supplied" + if type(args) != types.ListType: + raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) + try: + action = args[0] + del args[0] + device = None + cmd_args = [] + if action == "luksFormat": + device = args[0]; del args[0] + cmd_args.append(action) + cmd_args.append(device) + elif action == "luksUUID": + device = args[0]; del args[0] + cmd_args.append(action) + cmd_args.append(device) + elif action == "luksOpen": + if len(args) < 2: raise "WrongArguments", "missing arguments" + device = args[0]; del args[0] + destination = args[0]; del args[0] + cmd_args.append(action) + cmd_args.append(device) + cmd_args.append(destination) + elif action == "luksClose": + if len(args) < 1: raise "WrongArguments", "missing arguments" + destination = args[0]; del args[0] + # maybe add a check for the mapped device's permissions? + # dmsetup deps self.device + cmd_args.append(action) + cmd_args.append(destination) + elif action == "luksAddKey": + device = args[0]; del args[0] + cmd_args.append(action) + cmd_args.append(device) + elif action == "luksDelKey": + if len(args) < 2: raise "WrongArguments", "missing arguments" + device = args[0]; del args[0] + slot = args[0]; del args[0] + cmd_args.append(action) + cmd_args.append(device) + cmd_args.append(slot) + elif action == "isLuks": + device = args[0]; del args[0] + cmd_args.append(action) + cmd_args.append(device) + else: raise "WrongArguments", "invalid action supplied: %s" % (action, ) + # check if a device was defined - and check it + if (not device is None) and (not isWriteable(device, DEV_TYPES["block"])): + raise "WrongArguments", "%s is not a writeable block device" % (device, ) + cs_args = [allowedProgs["cryptsetup"]] + cs_args.extend(args) + cs_args.extend(cmd_args) + except (TypeError, IndexError): + raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) + # execute cryptsetup with the given parameters + proc = subprocess.Popen( + shell = False, + args = cs_args) + proc.wait() + ## chown the devmapper block device to the cryptobox user + calling_user = getCallingUserInfo() + if (proc.returncode == 0) and (action == "luksOpen"): + os.chown(os.path.join(os.path.sep, "dev", "mapper", destination), + calling_user[1], calling_user[2][0]) + return proc.returncode == 0 + + +def getFSType(device): + """get the filesystem type of a device""" + proc = subprocess.Popen( + shell = False, + stdout = subprocess.PIPE, + args = [ allowedProgs["blkid"], + "-s", "TYPE", + "-o", "value", + "-c", os.devnull, + "-w", os.devnull, + device]) + (stdout, stderr) = proc.communicate() + if proc.returncode != 0: + return None + return stdout.strip() + + +def run_mount(args): + """execute mount + """ + if not args: raise "WrongArguments", "no destination for mount supplied" + if type(args) != types.ListType: + raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) + try: + device = args[0] + del args[0] + destination = args[0] + del args[0] + ## shall we mount a ramdisk? + is_tmpfs = (device == MAGIC_TMPFS) + # check permissions for the device + if (not is_tmpfs) and (not isWriteable(device, DEV_TYPES["block"])): + raise "WrongArguments", "%s is not a writeable block device" % (device, ) + ## check permissions for the mountpoint + if not isWriteable(destination, DEV_TYPES["dir"]): + raise "WrongArguments", "the mountpoint (%s) is not writeable" \ + % (destination, ) + # check for additional (not allowed) arguments + if len(args) != 0: + raise "WrongArguments", "too many arguments for 'mount': %s" % (args, ) + except TypeError: + raise "WrongArguments", "invalid arguments supplied: %s" % (args, ) + # execute mount with the given parameters + # first overwrite the real uid, as 'mount' wants this to be zero (root) + savedUID = os.getuid() + os.setuid(os.geteuid()) + ## we have to change the permissions of the mounted directory - otherwise it will + ## not be writeable for the cryptobox user + ## for 'vfat' we have to do this during mount + ## for ext2/3 we have to do it afterward + ## first: get the user/group of the target + (trustUserName, trustUID, groupsOfTrustUser) = getUserInfo(savedUID) + trustGID = groupsOfTrustUser[0] + if is_tmpfs: + fsType = "tmpfs" + else: + fsType = getFSType(device) + ## define arguments + if fsType == "vfat": + ## add the "uid/gid" arguments to the mount call + mount_args = [ allowedProgs["mount"], + "-o", "uid=%d,gid=%d,umask=0000" % (trustUID, trustGID), + device, + destination ] + ## use fuse (ntfs-3g) for ntfs + elif fsType == "ntfs": + mount_args = [ allowedProgs["mount"], + "-t", "ntfs-3g", + device, + destination ] + elif is_tmpfs: + mount_args = [ allowedProgs["mount"], + "-t", "tmpfs", + "cryptobox-tmpfs", destination ] + else: + ## all other filesystem types will be handled after mount + mount_args = [ allowedProgs["mount"], device, destination ] + # execute mount + proc = subprocess.Popen( + shell = False, + args = mount_args) + proc.wait() + ## return in case of an error + if proc.returncode != 0: + return False + ## for vfat: we are done + if fsType == "vfat": return True + ## for all other filesystem types: chown the mount directory + try: + os.chown(destination, trustUID, groupsOfTrustUser[0]) + except OSError, errMsg: + sys.stderr.write("could not chown the mount destination (%s) " % destination \ + + "to the specified user (%d/%d): " % (trustUID, groupsOfTrustUser[0]) \ + + "%s/n" % str(errMsg)) + sys.stderr.write("UID: %d\n" % (os.geteuid(),)) + return False + ## BEWARE: it would be nice, if we could restore the previous uid (not euid) but + ## this would also override the euid (see 'man 2 setuid') - any ideas? + return True + + +def run_umount(args): + """execute mount + """ + if not args: raise "WrongArguments", "no mountpoint for umount supplied" + if type(args) != types.ListType: + raise "WrongArguments", "invalid arguments supplied" + try: + destination = args[0] + del args[0] + # check permissions for the destination + if not isWriteable(os.path.dirname(destination), DEV_TYPES["dir"]): + raise "WrongArguments", "the parent of the mountpoint " \ + + "(%s) is not writeable" % (destination, ) + if len(args) != 0: raise "WrongArguments", "umount does not allow arguments" + except TypeError: + raise "WrongArguments", "invalid arguments supplied" + # execute umount with the given parameters + # first overwrite the real uid, as 'umount' wants this to be zero (root) + savedUID = os.getuid() + os.setuid(os.geteuid()) + # execute umount (with the parameter '-l' - lazy umount) + proc = subprocess.Popen( + shell = False, + args = [allowedProgs["umount"], "-l", destination]) + proc.wait() + # restore previous real uid + os.setuid(savedUID) + return proc.returncode == 0 + + +def run_pvdisplay(args): + """execute pvdisplay to check for physical LVM devices + """ + if len(args) > 0: + raise "WrongArguments", "no arguments may be supplied for 'pvdisplay'" + ## call pvdisplay with the parameter "--colon" + proc = subprocess.Popen( + shell = False, + args = [ allowedProgs["pvdisplay"], "--colon" ]) + proc.wait() + return proc.returncode == 0 + + +def getCallingUserInfo(): + """return information about the user that was calling this program via "super" + + @user: (uid or name) + @return: tuple of (name, uid, (groups)) + """ + ## are we called via 'super'? + if ("SUPERCMD" in os.environ) and ("ORIG_USER" in os.environ): + ## return the user that was calling super + return getUserInfo(os.environ["ORIG_USER"]) + else: + ## return the current user + return getUserInfo(os.getuid()) + + +def getUserInfo(user): + """return information about the specified user + + @user: (uid or name) + @return: tuple of (name, uid, (groups)) + """ + if (user is None) or (user == ""): + raise "KeyError", "no user supplied" + ## if a KeyError is raised again in the following lines, then the supplied + ## user was invalid + if type(user) is int: + # 'user' is a uid + userinfo = pwd.getpwuid(user) + elif type(user) is str: + # 'user' is a name + userinfo = pwd.getpwnam(user) + u_groups = [one_group.gr_gid + for one_group in grp.getgrall() + if userinfo.pw_name in one_group.gr_mem] + if not userinfo.pw_gid in u_groups: + ## put in front of the list + u_groups.insert(0,userinfo.pw_gid) + return (userinfo.pw_name, userinfo.pw_uid, u_groups) + + +# **************** main ********************** + +# prevent import +if __name__ == "__main__": + + ## do we have root privileges (effective uid is zero)? + if os.geteuid() != 0: + sys.stderr.write("the effective uid is not zero - you should use " \ + + "'super' to call this script (%s)" % sys.argv[0]) + sys.exit(100) + + ## remove program name + args = sys.argv[1:] + + # do not allow to use root permissions (real uid may not be zero) + #if os.getuid() == 0: + # sys.stderr.write("the uid of the caller is zero (root) - this is not allowed\n") + # sys.exit(100) + + ## check if there were arguments + if (len(args) == 0): + sys.stderr.write("No arguments supplied\n") + sys.exit(100) + + ## did the user call the "check" action? + if (len(args) == 1) and (args[0].lower() == "check"): + # exit silently + sys.exit(0) + + ## all of the following actions require at least two arguments + if len(args) < 2: + sys.stderr.write("No program/plugin/event specified for execution\n") + sys.exit(100) + + ## call a plugin root_action script + if args[0].lower() == "plugin": + del args[0] + try: + isOK = call_plugin(args) + except Exception, errMsg: + sys.stderr.write("Execution of plugin '%s' failed: %s\n" \ + % (args[0], errMsg)) + sys.exit(100) + if isOK: + sys.exit(0) + else: + sys.exit(1) + + ## call an event script + if args[0].lower() == "event": + del args[0] + try: + isOK = call_event(args) + except Exception, errMsg: + sys.stderr.write("Execution of event '%s' failed: %s\n" \ + % (args[0], errMsg)) + sys.exit(100) + if isOK: + sys.exit(0) + else: + sys.exit(1) + + ## call one of the allowed programs + if args[0].lower() == "program": + del args[0] + + progRequest = args[0] + del args[0] + + if not progRequest in allowedProgs.keys(): + sys.stderr.write("Invalid program requested: %s\n" % progRequest) + sys.exit(100) + + if progRequest == "cryptsetup": runner = run_cryptsetup + elif progRequest == "mount": runner = run_mount + elif progRequest == "umount": runner = run_umount + elif progRequest == "pvdisplay": runner = run_pvdisplay + else: + sys.stderr.write("The interface for this program (%s) is " \ + + "not yet implemented!\n" % progRequest) + sys.exit(100) + try: + if runner(args): + sys.exit(0) + else: + sys.exit(1) + except OSError, errstr: + sys.stderr.write("Execution failed: %s\n" % errstr) + sys.exit(101) + except "WrongArguments", errstr: + sys.stderr.write("Invalid arguments: %s\n" % errstr) + sys.exit(100) diff --git a/staging-v0.3.5/bin/CryptoBoxWebserver b/staging-v0.3.5/bin/CryptoBoxWebserver new file mode 100755 index 0000000..6dd1032 --- /dev/null +++ b/staging-v0.3.5/bin/CryptoBoxWebserver @@ -0,0 +1,401 @@ +#!/usr/bin/env python +# +# The daemon script to run the CryptoBox webserver. +# +# run the script with "--help" to see all possible paramters +# +# +# Copyright 2006 sense.lab e.V. +# +# This file is part of the CryptoBox. +# +# The CryptoBox is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# The CryptoBox is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the CryptoBox; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +__revision__ = "$Id" + +REMOVE_ENV_SETTINGS = [ "LANG", "LC", "LC_ALL", "LC_COLLATE", "LC_CTYPE", + "LC_MESSAGES", "LC_NUMERIC", "BASH_ENV", "SHELLOPTS" ] + +import os, sys +import signal, atexit +import cryptobox.web.sites +from cryptobox.core.exceptions import * +from optparse import OptionParser + +## check python version +(ver_major, ver_minor, ver_sub, ver_desc, ver_subsub) = sys.version_info +if (ver_major < 2) or ((ver_major == 2) and (ver_minor < 4)): + sys.stderr.write("You need a python version >= 2.4\n") + sys.stderr.write("Current version is: %s\n" % sys.version) + sys.exit(1) + +## check cherrypy dependency +try: + import cherrypy +except: + sys.stderr.write("Could not import the cherrypy module!\n") + sys.stderr.write("Try 'apt-get install python-cherrypy'.\n") + sys.exit(1) + +## check clearsilver dependency +try: + import neo_cgi, neo_util +except: + sys.stderr.write("Could not import the clearsilver module!\n") + sys.stderr.write("Try 'apt-get install python-clearsilver'.\n") + sys.exit(1) + +## check configobj dependency +try: + import configobj, validate +except: + sys.stderr.write("Could not import the configobj or validate module!\n") + sys.stderr.write("Try 'apt-get install python-configobj'.\n") + sys.exit(1) + + +SERVER_ENVIRONMENT = "production" + +class CryptoBoxWebserver: + '''this class starts the cherrypy webserver and serves the single sites''' + + def __init__(self, opts): + """Configure cherrypy and check the location of the configuration file + """ + self.opts = opts + ## check conffile + if not os.access(opts.conffile, os.R_OK) or not os.path.isfile(opts.conffile): + sys.stderr.write("Error: could not read configuration file (%s)\n" % opts.conffile) + sys.exit(1) + ## store the absolute path as we will chdir later (for daemons) + self.conffile = os.path.realpath(opts.conffile) + ## expose static content and set options + ## beware: + cherrypy.config.update({ + "global": { + "server.socket_port" : int(opts.port), + "server.socket_host" : opts.host, + "server.log_to_screen" : not opts.background and opts.verbose, + "server.log_tracebacks" : opts.verbose, + "server.log_request_headers": opts.verbose, + "server.environment": SERVER_ENVIRONMENT, + "server.log_file" : opts.logfile }, + "/cryptobox-misc": { + "staticFilter.on" : True, + "staticFilter.dir": os.path.realpath(opts.datadir)}, + "/favicon.ico": { + "staticFilter.on" : True, + "staticFilter.file": os.path.realpath(os.path.join(opts.datadir, 'favicon.ico'))} + }) + + + def bootup_cryptobox(self): + ## initialize site class + try: + cherrypy.root = cryptobox.web.sites.WebInterfaceSites(self.conffile) + self.website = cherrypy.root + except (CBConfigError,CBEnvironmentError), err_msg: + sys.stderr.write("Error: the CryptoBox is misconfigured - please fix it!\n") + raise + + + def get_user_info(self): + """Retrieve the uid, gid and additional groups of the given user + """ + import pwd, grp + user_entry = pwd.getpwuid(self.opts.user) + ## get the new uid and gid + pw_name, pw_uid, pw_gid = user_entry[0], user_entry[2], user_entry[3] + ## change the owner of the webserver log file + try: + os.chown(self.opts.logfile, pw_uid, pw_gid) + except OSError: + ## fail silently + pass + ## calculate additional groups of the given user + additional_groups = [ entry[2] + for entry in grp.getgrall() + if pw_name in entry[3] ] + [ pw_gid ] + return (pw_uid, pw_gid, additional_groups) + + + def change_groups(self): + """Change the groups of the current process to the ones of the given user + + we have to do this before we call cherrypy.server.start(), as it somehow + remembers the current setting for any thread it will create later + """ + if self.opts.user is None: + return + (pw_uid, pw_gid, additional_groups) = self.get_user_info() + try: + os.setgroups(additional_groups) + except OSError, err_msg: + sys.stderr.write("Failed to change the groups: %s\n" % err_msg) + + + def drop_privileges_permanently(self): + """Drop all privileges of the current process and acquire the privileges of the + given user instead. + """ + if self.opts.user is None: + return + (pw_uid, pw_gid, additional_groups) = self.get_user_info() + try: + ## setgroups happened before (see 'change_groups') + os.setregid(pw_gid, pw_gid) + os.setreuid(pw_uid, pw_uid) + except OSError, err_msg: + sys.stderr.write("Failed to drop privileges permanently: %s\n" % err_msg) + + + + def start(self): + try: + ## first: change the groups (cherrypy.server.start stores the + ## current setting for creating new threads later) + self.change_groups() + cherrypy.server.start(initOnly=True) + self.drop_privileges_permanently() + ## this must be done with dropped privileges - otherwise there is + ## at least a problem with 'blkid' - see bug #139 + self.bootup_cryptobox() + cherrypy.server.wait_for_http_ready() + except cherrypy._cperror.NotReady, err_msg: + sys.stderr.write("Failed to start CryptoBox: %s\n" % err_msg) + sys.exit(1) + except Exception, err_msg: + if err_msg == "(98, 'Address already in use')": + sys.stderr.write("Failed to start CryptoBox: %s\n" % err_msg) + sys.exit(1) + else: + raise + + + +def fork_to_background(): + ## this is just copy'n'pasted from http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/278731 + ## check the original for exhaustive comments + try: + pid = os.fork() + except OSError, err_msg: + sys.stderr.write("Error: failed to fork cryptobox daemon process!\n") + sys.stderr.write("%s\n" % err_msg) + sys.exit(1) + if pid == 0: # the first child + os.setsid() + try: + pid = os.fork() + except OSError, err_msg: + sys.stderr.write("Error: failed to fork second cryptobox daemon process!\n") + sys.stderr.write("%s\n" % err_msg) + sys.exit(1) + if pid == 0: # the second child + ## we do not change the directory - otherwise there seems to be a race condition with the python interpreter loading this script file + #os.chdir(os.path.sep) + os.umask(0) + else: + os._exit(0) + else: + os._exit(0) + + +def close_open_files(): + """this is only necessary if we want to go into background + we will only close stdin, stdout and stderr + """ + import resource # Resource usage information. + ## use the following lines to close all open files (including the log file) + # maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1] + # if (maxfd == resource.RLIM_INFINITY): + # maxfd = 1024 + maxfd = 2 + for fd in range(0, maxfd): + try: + ## close all except for stderr - we will redirect it later + if fd != 2: + os.close(fd) + except OSError: # ERROR, fd wasn't open to begin with (ignored) + pass + os.open(os.devnull, os.O_RDWR) # standard input (0) + os.dup2(0, 1) # standard output (1) + + +def write_pid_file(pid_file, pid=None): + """write the process ID of the cryptonas daemon to a file + + call this function with the second parameter (e.g. pid=0) to check, if the + given location is writeable + @param pid_file: the path of the pid file to be written + @type pid_file: string + @param pid: use a specific PID instead of the PID of the current process + @type pid: int + """ + if pid is None: + ## use the PID of the current process + pid = os.getpid() + if os.path.exists(pid_file): + sys.stderr.write( + "Warning: pid file (%s) already exists - overwriting ...\n" % pid_file) + try: + pidf = open(pid_file,"w") + pidf.write(str(pid)) + pidf.close() + except (IOError, OSError), err_msg: + sys.stderr.write( + "Warning: failed to write pid file (%s): %s\n" % (pid_file, err_msg)) + ## it is just a warning - no need to break + + +def parseOptions(): + import cryptobox + import pwd + version = "%prog" + cryptobox.__version__ + parser = OptionParser(version=version) + parser.set_defaults(conffile="/etc/cryptobox-server/cryptobox.conf", + pidfile="/var/run/cryptobox-server/webserver.pid", + background=False, + datadir="/usr/share/cryptobox-server/www-data", + logfile="/var/log/cryptobox-server/webserver.log", + port="8080", + host="", + verbose=True, + profile_file=False, + user=None) + parser.add_option("-c", "--config", dest="conffile", + help="read configuration from FILE", metavar="FILE") + parser.add_option("","--pidfile", dest="pidfile", + help="write process id to FILE", metavar="FILE") + parser.add_option("-B","", dest="background", action="store_true", + help="run webserver in background (as daemon)") + parser.add_option("-q","", dest="verbose", action="store_false", + help="output only errors") + parser.add_option("","--datadir", dest="datadir", metavar="DIR", + help="set data directory to DIR") + parser.add_option("-p","--port", dest="port", metavar="PORT", + help="listen on PORT") + parser.add_option("-l","--logfile", dest="logfile", metavar="FILE", + help="write webserver log to FILE") + parser.add_option("","--host", dest="host", metavar="HOST", + help="attach to HOST") + parser.add_option("-u","--user", dest="user", metavar="USER", + help="change to USER after starting the webserver") + parser.add_option("","--profile", dest="profile_file", metavar="PROFILE_FILE", + help="enable profiling and store results in PROFILE_FILE") + (options, args) = parser.parse_args() + ## we do not expect any remaining arguments + if len(args) != 0: + parser.error("unknown argument: %s" % str(args[0])) + if not ((not os.path.exists(options.logfile) \ + and os.access(os.path.dirname(options.logfile), os.W_OK)) \ + or os.access(options.logfile, os.W_OK)): + parser.error("could not write to logfile (%s)" % options.logfile) + if not os.path.isdir(options.datadir) or not os.access(options.datadir,os.X_OK): + parser.error("could not access the data directory (%s)" % options.datadir) + try: + if (int(options.port) < 0) or (int(options.port) > 65535): + parser.error("invalid port number: %s" % str(options.port)) + except ValueError: + parser.error("invalid port specified (%s) - it must be a number" % (options.port)) + if options.user: + try: + try: + ## check for the user given as uid + uid = pwd.getpwuid(int(options.user))[2] + except ValueError: + ## check for the user given as name + uid = pwd.getpwnam(options.user)[2] + except KeyError: + ## invalid user specified + parser.error("invalid user specified (%s)" % options.user) + ## we will use the uid + options.user = uid + if options.profile_file: + options.profile_file = os.path.abspath(options.profile_file) + try: + import profile + except ImportError: + parser.error("profiling requires the python module 'profile' - debian users should run 'apt-get install python-profiler'") + return options + + +def clean_environment(settings_list): + """Remove some environment settings with side effects (e.g. LANG) + + Useful, as some plugins depend on the output of other commands - localized + output would be quite ugly for them ... + """ + for one_setting in settings_list: + os.unsetenv(one_setting) + + +if __name__ == "__main__": + ## process arguments + options = parseOptions() + ## set umask to 022 (aka 755) - octal value + os.umask(022) + ## initialize the webserver class + cbw = CryptoBoxWebserver(options) + ## remove some environment settings + clean_environment(REMOVE_ENV_SETTINGS) + ## fork to background before cbw.start() - otherwise we lose the socket + if options.background: + fork_to_background() + ## define the default exit handler + def exit_handler(signum, sigframe): + if hasattr(cbw, "website"): + ## are we already up? + cbw.website.cbox.log.info("Shutting down ...") + cbw.website.cleanup() + cherrypy.server.stop() + try: + os.remove(options.pidfile) + except OSError: + pass + os._exit(0) + ## the signal handler gets called by a kill signal (usually in background mode) + signal.signal(signal.SIGTERM, exit_handler) + ## this exit handler gets called by KeyboardInterrupt and similar ones (foreground) + atexit.register(exit_handler, None, None) + ## start the webserver + try: + if options.profile_file: + import profile + profile.run('cbw.start()', options.profile_file) + else: + cbw.start() + except CBError, err_msg: + sys.stderr.write("Failed to start the CryptoBox webserver!\n") + sys.stderr.write("%s\n" % str(err_msg)) + sys.stderr.write("Check the log file for details.\n") + cherrypy.server.stop() + sys.exit(1) + ## test if we can write to the PID file + ## this _must_ be done before forking, since a potential error would be + ## silent (due to the closed files - e.g. STDERR) + write_pid_file(options.pidfile, 0) + ## redirect stderr to the webserver's logfile + if options.background: + ## replace stdin and stdout by /dev/null + close_open_files() + ## replace stderr by the webserver logfile + os.close(2) + os.open(options.logfile, os.O_WRONLY | os.O_APPEND) + ## startup went fine - fork is done - now we may write the pid file + write_pid_file(options.pidfile) + ## this will never exit - one of the above exit handlers will get triggered + cherrypy.server.block() + diff --git a/staging-v0.3.5/bin/cryptobox-unittests.conf b/staging-v0.3.5/bin/cryptobox-unittests.conf new file mode 100644 index 0000000..594268a --- /dev/null +++ b/staging-v0.3.5/bin/cryptobox-unittests.conf @@ -0,0 +1,100 @@ +[Main] + +# comma separated list of possible prefixes for accesible devices +# beware: .e.g "/dev/hd" grants access to _all_ harddisks +AllowedDevices = /dev/ubdb + +# use separate config partition? (1=yes / 0=no) +UseConfigPartition = 1 + +# the default name prefix of not unnamed containers +DefaultVolumePrefix = "Disk" + +# which cipher should cryptsetup-luks use? +#TODO: uml does not support this module - DefaultCipher = aes-cbc-essiv:sha256 +DefaultCipher = aes-plain + +# label of the configuration partition (you should never change this) +ConfigVolumeLabel = cbox_config + +# which plugins should be disabled? (comma seperated list) +#DisabledPlugins = network, shutdown, partition + + +[Locations] +# where should we mount volumes? +# this directory must be writeable by the cryptobox user (see above) +#MountParentDir = /var/cache/cryptobox/mnt +MountParentDir = ../ttt/mnt + +# settings directory: contains name database and plugin configuration +#SettingsDir = /var/cache/cryptobox/settings +SettingsDir = ../ttt/settings + +# where are the clearsilver templates? +#TemplateDir = /usr/share/cryptobox/templates +TemplateDir = ../templates + +# path to documentation files +#DocDir = /usr/share/doc/cryptobox/www-data +DocDir = ../doc/html + +# path to the plugin directory +#PluginDir = /usr/share/cryptobox/plugins +PluginDir = ../plugins + +# path to the hook directory (e.g. containing some scripts) +#HookDir = /etc/cryptobox/hooks.d +EventDir = ../event-scripts + + +[Log] +# possible values are "debug", "info", "warn" and "error" or numbers from +# 0 (debug) to 7 (error) +Level = debug + +# where to write the log messages to? +# possible values are: file +# syslog support will be added later +Destination = file + +# depending on the choosen destination (see above) you may select +# details. Possible values for the different destinations are: +# file: $FILENAME +# syslog: $LOG_FACILITY +#Details = /var/log/cryptobox.log +Details = ./cryptobox.log + + +[WebSettings] +# URL of default stylesheet +Stylesheet = cryptobox-misc/cryptobox.css + +# default language +Languages = en, de, sl, fr + + +[Programs] +cryptsetup = /sbin/cryptsetup +mkfs = /sbin/mkfs +blkid = /sbin/blkid +blockdev = /sbin/blockdev +mount = /bin/mount +umount = /bin/umount +nice = /usr/bin/nice +super = /usr/bin/super +# this is the "program" name as defined in /etc/super.tab +# "CryptoBoxRootActionsLocal" (in /etc/super.tab) should point to the +# CryptoBoxRootActions.py file in your local working directory. This avoids +# conflicts with a locally (apt-)installed CryptoBoxRootActions.py file +CryptoBoxRootActions = CryptoBoxRootActionsLocal + + +[PluginSettings] +# plugin specific settings +# the section names _must_ be the same as the names of the plugins + +## change the default network interface for the plugin "network" +#[[network]] +#interface = eth0 + diff --git a/staging-v0.3.5/bin/cryptobox.conf b/staging-v0.3.5/bin/cryptobox.conf new file mode 120000 index 0000000..49e4717 --- /dev/null +++ b/staging-v0.3.5/bin/cryptobox.conf @@ -0,0 +1 @@ +cryptobox-unittests.conf \ No newline at end of file diff --git a/staging-v0.3.5/bin/do_pylint.sh b/staging-v0.3.5/bin/do_pylint.sh new file mode 100755 index 0000000..d4991d9 --- /dev/null +++ b/staging-v0.3.5/bin/do_pylint.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# +# set some environmental variables for pylint and run it +# + +PROJ_DIR=$(dirname "$0")/.. +PROJ_DIR=$(cd "$PROJ_DIR"; pwd) + +PYLINTRC=$PROJ_DIR/src/pylintrc +PYTHONPATH=$PROJ_DIR/src + +check_for_filename() +{ + # maybe the argument is a file instead of a module name + if echo "$1" | grep -q "\.py$" && test -e "$1" + then local FILE_DIR=$(dirname "$1") + local MODULE=$(basename "${1%.py}") + ARGS="${ARGS} ${MODULE}" + PYTHONPATH="${PYTHONPATH}:${FILE_DIR}" + else ARGS="${ARGS} ${1}" + fi +} + +while test $# -gt 0 + do check_for_filename "$1" + shift + done + +export PYTHONPATH +export PYLINTRC + +[ ! -x /usr/bin/pylint ] && echo >&2 "please run \"apt-get install pylint\" first" && exit 1 + +pylint $ARGS + diff --git a/staging-v0.3.5/bin/do_unittests.sh b/staging-v0.3.5/bin/do_unittests.sh new file mode 100755 index 0000000..3ef4765 --- /dev/null +++ b/staging-v0.3.5/bin/do_unittests.sh @@ -0,0 +1,112 @@ +#!/bin/sh +#do_unittests.sh +# +# run this script _before_ you do a commit and fix errors before uploading +# +# preparations: +# - add the following lines to /etc/super.tab: +# :global_options relative_path=y +# CryptoBoxRootActionsLocal ./CryptoBoxRootActions cryptobox +# + +GETOPT="getopt" +BASE_DIR=$(cd "$(dirname $0)/.."; pwd) + +export PYTHONPATH=$BASE_DIR/src + +disable_filecheck() +{ + sed -i "s/^OVERRIDE_FILECHECK = .*$/OVERRIDE_FILECHECK = True/" "$BASE_DIR/bin/CryptoBoxRootActions" +} + +enable_filecheck() +{ + sed -i "s/^OVERRIDE_FILECHECK = .*$/OVERRIDE_FILECHECK = False/" "$BASE_DIR/bin/CryptoBoxRootActions" +} + + +run_tests() +{ + # chdir to 'bin' - all config settings depend on this + cd "${BASE_DIR}/bin" + + disable_filecheck + + if test -n "$files" + then # do the specified tests + ##The use of "eval", plus not using double quotes for + ##$a below are + ##required because getopt already puts argument names in + ##single-quotes, and the script will not work with both sets + ##of quotes. + for a in $files + do eval testoob -v $a + done + else # do all tests + for a in ${BASE_DIR}/src/cryptobox/tests/test.*.py + do testoob -v "$a" + done + fi + + enable_filecheck + + return 0 +} + + +usage() +{ + echo -e "Usage:" + echo -e "\tbin/do_unittests.sh --clobber=foo [ files... ]" + echo -e "\t" + echo -e "\t(Where \"files\", if given, are absolute pathnames)" + echo -e "\t(Example: bin/do_unittests.sh --clobber=sdX)" + echo -e "***Warning: All data on /dev/foo will be DESTROYED!" + echo -e "\t" + exit 1 +} + + +##### main() section ##### + +##Declare global variables with empty contents +CNAS_UTEST_CLOBBER="" +files="" +clobber_dev_arg="" + + +##Use the getopt command line utility to simplify parsing +getopt_str=`${GETOPT} -o c: --long clobber: \ +-n do_unittests.sh -- "$@"` +#echo $getopt_str +##Assign the tokens to an array +getopt_arr=($getopt_str) + +##Note: Output of getopt in this script should look like: +## --clobber 'sdX' -- file1 file2 file3 ... +##Read the following code with that in mind. + +##If there is exactly one option, and it has an argument +if [ "${getopt_arr[0]}" == "--clobber" ] \ + && [ "${getopt_arr[2]}" == "--" ]; then + clobber_dev_arg="${getopt_arr[1]}" + ##Strip any single quotes from the device name + clobber_dev_arg="${clobber_dev_arg//\'/}" + #echo ${clobber_dev_arg} + ##Grab the part of $getopt_str that follows "--" + files="`expr match \"${getopt_str}\" '.*--\(.*\)'`" + #echo $files + if [ -b "/dev/${clobber_dev_arg}" ]; then + export CNAS_UTEST_CLOBBER="${clobber_dev_arg}" + ##Run the tests using testoob... + run_tests + else + echo "Error: /dev/${clobber_dev_arg} is not a valid block device" + exit 2 + fi +else + usage +fi + + + diff --git a/staging-v0.3.5/bin/run_webserver.sh b/staging-v0.3.5/bin/run_webserver.sh new file mode 100755 index 0000000..9342552 --- /dev/null +++ b/staging-v0.3.5/bin/run_webserver.sh @@ -0,0 +1,58 @@ +#!/bin/sh +# +# example start script to run a local cryptobox webserver +# +# we set some parameters to make it possible to run it without an +# existing cryptobox installation +# +# change your local settings in "cryptobox-local.conf" - if this file +# does not exist, then "cryptobox.conf" is used +# +# the environment variable PORT may override the default (8080) +# +# BEWARE: the super.tab entry must be named "CryptoBoxRootActionsLocal" instead of +# "CryptoBoxRootActions" (useful for development) +# + +BIN_DIR=$(dirname "$0") +BIN_DIR=$(cd "$BIN_DIR"; pwd) + +disable_filecheck() +{ + sed -i "s/^OVERRIDE_FILECHECK = .*$/OVERRIDE_FILECHECK = True/" "$BIN_DIR/CryptoBoxRootActions" +} + +enable_filecheck() +{ + sed -i "s/^OVERRIDE_FILECHECK = .*$/OVERRIDE_FILECHECK = False/" "$BIN_DIR/CryptoBoxRootActions" +} + +## add the local python directory to the search path +export PYTHONPATH="$BIN_DIR/../src" +## disable ssl detection +#export HTTPS=1 + +PREFERRED_CONF_FILE=$BIN_DIR/cryptobox-local.conf +FALLBACK_CONF_FILE=$BIN_DIR/cryptobox-unittests.conf + +## determine the configuration file +CONFIG_FILE=$FALLBACK_CONF_FILE +test -r "$PREFERRED_CONF_FILE" && CONFIG_FILE=$PREFERRED_CONF_FILE +echo "used config: $CONFIG_FILE" + +## create necessary directories +mkdir -p "$BIN_DIR/../ttt/mnt" +mkdir -p "$BIN_DIR/../ttt/settings" + +cd "$BIN_DIR" + + +# disable strict security checks of CryptoBoxRootActions +disable_filecheck + +## run the webserver +"$BIN_DIR/CryptoBoxWebserver" --config="$CONFIG_FILE" --pidfile=/tmp/cryptoboxwebserver.pid --logfile=/tmp/cryptoboxwebserver.log --port=${PORT:-8080} --datadir="$BIN_DIR/../www-data" "$@" + +# enable strict security checks of CryptoBoxRootActions again +enable_filecheck + diff --git a/staging-v0.3.5/bin/uml-setup.sh b/staging-v0.3.5/bin/uml-setup.sh new file mode 100755 index 0000000..2ba5457 --- /dev/null +++ b/staging-v0.3.5/bin/uml-setup.sh @@ -0,0 +1,42 @@ +#!/bin/sh +#uml-setup.sh +# +#This file does some setup required for running the unit tests under +#User Mode Linux (UML). If you are using a different test setup, it +#does not apply. + +PROJ_DIR=$(dirname "$0")/.. +PROJ_DIR=$(cd "$PROJ_DIR"; pwd) +ROOT_IMG=$PROJ_DIR/bin/cryptobox.img +TEST_IMG=$PROJ_DIR/bin/test.img +TEST_SIZE=128 +MEM_SIZE=128M + +if test ! -e "$ROOT_IMG" + then echo "Could not find the cryptobox system image ($ROOT_IMG)" + echo " see stuff/uml-howto.txt for information on how to build a system image" + echo " store (or link) the result as '$ROOT_IMG'" + exit 1 + fi + +# Preparations: +# echo "tun" >>/etc/modules +# follow the instructions in /usr/share/doc/uml-utilities/README.Debian +# add your user to the group 'uml-net' +# + +/sbin/ifconfig tap0 &>/dev/null || { echo "tap0 is not configured - read /usr/share/doc/uml-utilities/README.Debian for hints"; exit 1; } + + +if [ ! -e "$TEST_IMG" ] + then echo "Creating testing image file ..." + dd if=/dev/zero of="$TEST_IMG" bs=1M count=$TEST_SIZE + fi + +if [ ! -w "$ROOT_IMG" ]; then + echo "Make sure \"${ROOT_IMG}\" exists and is writeable" + exit 1; +fi +# "aio=2.4" is necessary, as otherwise sfdiks hangs at "nanosleep({3,0})" +linux ubd0="$ROOT_IMG" ubd1="$TEST_IMG" con=xterm hostfs=$PROJ_DIR fakehd eth0=daemon mem=$MEM_SIZE aio=2.4 + diff --git a/staging-v0.3.5/changelog b/staging-v0.3.5/changelog new file mode 100644 index 0000000..d48be96 --- /dev/null +++ b/staging-v0.3.5/changelog @@ -0,0 +1,87 @@ +Version 0.3.4.5 - 08/23/02007 + * added: French translation provided by Gilles Accad + * added: Dutch translation provided by Michiel van Dijk + * fixed: IP address change bug + +Version 0.3.4.4 - 05/23/02007 + * added: Spanish translation provided by Fadrique + +Version 0.3.4.3 - 04/01/02007 + * added: Polish translation provided by Andrzej S. Kaznowski + +Version 0.3.4.2 - 03/21/02007 + * added: Italian translation provided by Fabrizio Tarizzo + +Version 0.3.4.1 - 02/27/02007 + * added: Japanese translation provided by kinneko + +Version 0.3.4 - 02/19/02007 + * fixed: unclean uid handling in server wrapper (Closes: #139) + * added: support for partitioning of raid devices + +Version 0.3.3 - 01/26/02007 + * fixed: bug in reinitializing of plugins (Closes: #111) + * fixed: broken group membership changing of webserver (Closes: #114) + * fixed: glitch that delayed the effect of changes made by the plugin_manager + * fixed: disc usage statistic + * completed: Slovenian translation + * completed: German translation + * added: restore network settings during startup + * added: new plugin provides an encrypted (https) connection to the webinterface + * added: support for netmask and gateway setting to 'network' plugin + * added: download of complete log file possible + * added: show/hide help texts + * usablity: ignore devices without read and write permissions + * interface: provide low-quality 'gif' icons instead of default 'png' icons for + IE 5.5/6.0 users due to its lack of support for transparency + * interface: unified layout of plugins + * requires: python module 'm2crypto' for (optional) certificate generation + +Version 0.3.2 - 01/08/02007 + * fixed bug causing ignorance towards group permissions (Closes: #114) + * fixed bug in Plugin manager breaking web interface (Closes: #111) + * fixed delay of Plugin manager settings being committed + +Version 0.3.1 - 12/20/02006 + * fixed broken interface of 'partition' plugin for ie + * fixed rendering bug of volume_properties for ie + * fixed screen width in a mozilla/ie compatible way + * fixed config management of 'plugin_manager' plugin + * fixed filtering of log level messages for 'logs' plugin + * added some german translations + * changed default language to english + * ports lower than 1024 are supported now + +Version 0.3.0 - 12/15/02006 + * new interface + * manage multiple disks + * support custom partitioning + * support plaintext partitions + * use cryptsetup-luks instead of plain cryptsetup + * allow to set time and date + * change of encryption passphrase without data losses + * support for pluggable features + * seperated cryptobox-server package + +Version 0.2.1 - 10/22/02005 + * fixed a critical bug in the initialisation process + * default cipher changed to "aes-cbc-essiv:sha256" (more secure) + * the boot menue (grub) is now protected + * support for usb and firewire harddisks + * new kernel: Linux 2.6.12.6 + * minor language improvements + +Version 0.2 - 10/04/02005 + * first public release + * fully configurable via web interface + * AES encryption via device-mapper + * Samba v3.0.14a-3 + * Linux 2.6.11 + * based on Debian GNU/Linux 3.1 + * documentation languages: + * English + * German + * interface languages: + * English + * German + * Slovenian diff --git a/staging-v0.3.5/conf-examples/apache2_dav.conf b/staging-v0.3.5/conf-examples/apache2_dav.conf new file mode 100644 index 0000000..e1572ef --- /dev/null +++ b/staging-v0.3.5/conf-examples/apache2_dav.conf @@ -0,0 +1,13 @@ +# this file is part of the CryptoBox +# put it into /etc/apache2/conf.d/ +# you MUST create the directory given below - otherwise apache will not like it :( +# do not forget to chown the directory to the cryptobox user + + + # include the dynamically managed configuration directory - IT MUST EXIST + Include /var/cache/cryptobox-server/settings/misc/apache2_dav.conf.d/ + # lock database - should be writeable for www-data + DavLockDB /tmp/dav_lock.db + # a longer value than the default (120) help for high-latency networks + DavMinTimeout 600 + diff --git a/staging-v0.3.5/conf-examples/apache_proxypass.conf b/staging-v0.3.5/conf-examples/apache_proxypass.conf new file mode 100644 index 0000000..dff6d0d --- /dev/null +++ b/staging-v0.3.5/conf-examples/apache_proxypass.conf @@ -0,0 +1,25 @@ +# CryptoBox configuration file +# +# the following directives allow you to use the cryptobox web interface behind apache2 +# +# you need to enable the following modules: +# - proxy +# - headers +# (for debian: run "a2enmod MOD_NAME") +# + +ProxyRequests Off + +# you may restrict access if necessary + + Order Deny,Allow + Allow from all + + + + ProxyPass http://localhost:8080/ + ProxyPassReverse http://localhost:8080/ + # this requestheader is necessary to allow proper redirection to https + RequestHeader set CryptoBox-Location /cryptobox + + diff --git a/staging-v0.3.5/conf-examples/cryptobox.conf b/staging-v0.3.5/conf-examples/cryptobox.conf new file mode 100644 index 0000000..eb4e9d2 --- /dev/null +++ b/staging-v0.3.5/conf-examples/cryptobox.conf @@ -0,0 +1,97 @@ +[Main] + +# comma separated list of possible prefixes for accesible devices +# beware: .e.g "/dev/hd" grants access to _all_ harddisks +# take care, that the user 'cryptobox' has write access to these devices +# (floppy disks are not supported) +AllowedDevices = /dev/loop, /dev/ubdb + +# use separate config partition? (1=yes / 0=no) +UseConfigPartition = 0 + +# the default name prefix of not unnamed containers +DefaultVolumePrefix = "Disk_" + +# which cipher should cryptsetup-luks use? +# if you lack the appropriate kernel modules, then you could try "aes-plain" - but it is less secure +DefaultCipher = aes-cbc-essiv:sha256 + +# label of the configuration partition (you should never change this) +ConfigVolumeLabel = cbox_config + +# which plugins should be disabled? (comma seperated list) +#DisabledPlugins = encrypted_webinterface, network, shutdown, partition +DisabledPlugins = encrypted_webinterface + + +[Locations] +# where should we mount volumes? +# this directory must be writeable by the cryptobox user (see above) +MountParentDir = /var/cache/cryptobox-server/mnt + +# settings directory: contains name database and plugin configuration +SettingsDir = /var/cache/cryptobox-server/settings + +# where are the clearsilver templates? +TemplateDir = /usr/share/cryptobox-server/templates + +# path to documentation files +DocDir = /usr/share/doc/cryptobox-server/html + +# path to the plugin directory +PluginDir = /usr/share/cryptobox-server/plugins + +# path to the event directory (e.g. containing some scripts) +EventDir = /etc/cryptobox-server/events.d + + +[Log] +# possible values are "debug", "info", "warn" and "error" or numbers from +# 0 (debug) to 7 (error) +Level = info + +# where to write the log messages to? +# possible values are 'file' and 'syslog' +Destination = file + +# depending on the choosen destination (see above) you may select +# details. Possible values for the different destinations are: +# file: $FILENAME +# syslog: KERN | USER | MAIL | DAEMON | AUTH | SYSLOG | LPR | NEWS | UUCP +# | CRON | AUTHPRIV | LOCAL0 .. LOCAL7 +Details = /var/log/cryptobox-server/cryptobox.log + + +[WebSettings] +# URL of default stylesheet +Stylesheet = cryptobox-misc/cryptobox.css + +# comma seperated list of available languages for the web interface +# the first language is the default +# all other languages serve as fallbacks for an incomplete translation +# available languages: cs, da, de, en, es, fi, fr, hu, it, ja, nl, pl, pt, ru, sl, sv, ur +# well supported languages: de, en, ja, sl +Languages = en, de, ja, sl, it, pl, es + + +[Programs] +cryptsetup = /sbin/cryptsetup +mkfs = /sbin/mkfs +blkid = /sbin/blkid +blockdev = /sbin/blockdev +mount = /bin/mount +umount = /bin/umount +nice = /usr/bin/nice +super = /usr/bin/super +# this is the "program" name as defined in /etc/super.tab +CryptoBoxRootActions = CryptoBoxRootActions + + +[PluginSettings] +# plugin specific settings +# the section names _must_ be the same as the names of the plugins + +## change the default network interface for the plugin "network" +#[[network]] +#interface = eth0 + diff --git a/staging-v0.3.5/conf-examples/openssl.cnf b/staging-v0.3.5/conf-examples/openssl.cnf new file mode 100644 index 0000000..73905e0 --- /dev/null +++ b/staging-v0.3.5/conf-examples/openssl.cnf @@ -0,0 +1,65 @@ +# +# OpenSSL configuration file. +# + +# Establish working directory. + +dir = . + +[ ca ] +default_ca = CA_default + +[ CA_default ] +default_days = 3650 +default_md = md5 +policy = policy_match +#serial = $dir/serial +#database = $dir/index.txt +#new_certs_dir = $dir/newcert +#certificate = $dir/cacert.pem +#private_key = $dir/private/cakey.pem +#preserve = no +#email_in_dn = no +#nameopt = default_ca +#certopt = default_ca + +[ policy_match ] +countryName = match +stateOrProvinceName = match +organizationName = match +organizationalUnitName = match +commonName = supplied +emailAddress = optional + +[ req ] +default_bits = 1024 # Size of keys +default_keyfile = stunnel.pem # name of generated keys +default_md = md5 # message digest algorithm +distinguished_name = req_distinguished_name + +[ req_distinguished_name ] +# Variable name Prompt string +#---------------------- ---------------------------------- +0.organizationName = Organization Name (company) +organizationalUnitName = Organizational Unit Name (department, division) +emailAddress = Email Address +emailAddress_max = 40 +localityName = Locality Name (city, district) +stateOrProvinceName = State or Province Name (full name) +#countryName = Country Name (2 letter code) +#countryName_min = 2 +#countryName_max = 2 +#commonName = Common Name (hostname, IP, or your name) +#commonName_max = 64 + +# Default values for the above, for consistency and less typing. +# Variable name Value +#------------------------------ ------------------------------ +0.organizationName_default = CryptoBox +organizationalUnitName_default = Sense.Lab +localityName_default = Kugelmugel +stateOrProvinceName_default = Metropolis +emailAddress_default = info@cryptobox.org + + + diff --git a/staging-v0.3.5/conf-examples/start_stunnel.sh b/staging-v0.3.5/conf-examples/start_stunnel.sh new file mode 100755 index 0000000..a5cf0a5 --- /dev/null +++ b/staging-v0.3.5/conf-examples/start_stunnel.sh @@ -0,0 +1,42 @@ +#!/bin/sh +# +# This script creates a stunnel certificate for https +# and starts a tunnel from :80 to :443. It's meant as en example so +# use it with care. +# +# An example for the openssl config file can be found in +# conf-examples/openssl.cnf . +# + +set -eu + +test $# -ne 2 && echo "Usage: $(basename $0) OPENSSL_CONF_FILE CERT_FILE" && exit 1 + +TMP_FILE=/tmp/cryptobox-cert.tmp +## vcert values are in openssl.conf +#OPENSSL_CONF_FILE="../conf-examples/openssl.cnf" +OPENSSL_CONF_FILE="$1" +## filename for the created cert +#CERTFILE="cryptobox.cert" +CERTFILE="$2" +## source & destination ports +SRC_PORT="8080" +DST_PORT="443" + + +[ ! -f "$OPENSSL_CONF_FILE" ] && echo "`basename $0`: $OPENSSL_CONF_FILE not found" && exit 2 +# this command creates the certificate +# the "\n" are required, because the certbuilding asks for 5 returns +echo -ne "\n\n\n\n\n" | openssl req -new -x509 -nodes -days 3650 -config "$OPENSSL_CONF_FILE" -out "$CERTFILE" -keyout "$CERTFILE" +chmod 600 "$CERTFILE" + +# next step needs a lot of randomdata +dd if=/dev/urandom of="$TMP_FILE" bs=1024 count=1024 +openssl dhparam -rand "$TMP_FILE" 512 >> "$CERTFILE" +rm "$TMP_FILE" + +## print out cert values +#openssl x509 -subject -dates -fingerprint -in stunnel.pem + +stunnel -p ${CERTFILE} -r localhost:${SRC_PORT} -d ${DST_PORT} + diff --git a/staging-v0.3.5/conf-examples/super.tab-example b/staging-v0.3.5/conf-examples/super.tab-example new file mode 100644 index 0000000..477c13b --- /dev/null +++ b/staging-v0.3.5/conf-examples/super.tab-example @@ -0,0 +1,9 @@ +# Add the following line to your "super.tab". +# This file usally lays in /etc/super.tab , depending on your +# installation it can also be found in /usr/etc/ or /usr/local/etc/ +# +# 'yourUserName' is typically 'cryptobox' +# +# syntax of super.tab: +# super_command path_to_real_command username +CryptoBoxRootActions /your/local/path/to/CryptoBoxRootActions.py yourUserName diff --git a/staging-v0.3.5/copyright b/staging-v0.3.5/copyright new file mode 100644 index 0000000..3c331f2 --- /dev/null +++ b/staging-v0.3.5/copyright @@ -0,0 +1,32 @@ +Copyright (c) 02005-2007 sense.lab + +Documentation: + The documentation is licensed under the Creative Commons Attribution + ShareAlike 2.5 license (http://creativecommons.org/licenses/by-sa/2.5/). + + +Graphics: + All graphics are licensed under the Creative Commons Attribution + ShareAlike 2.5 license (http://creativecommons.org/licenses/by-sa/2.5/). + + See detailed information for all pictures in 'copyright.pictures'. + + +Code: + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 2. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License with + your Debian GNU/Linux system, in /usr/share/common-licenses/GPL, or with the + Debian GNU/Linux hello source package as the file COPYING. If not, + write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + Boston, MA 02110-1301 USA + +$Id$ + diff --git a/staging-v0.3.5/copyright.graphics b/staging-v0.3.5/copyright.graphics new file mode 100644 index 0000000..eeac3c0 --- /dev/null +++ b/staging-v0.3.5/copyright.graphics @@ -0,0 +1,158 @@ +This file lists detailed information about the licenses and the original authors +of the graphics that are used as a part of the CryptoBox. + + +******************** Creative Commons graphics ************************* + +The graphics listed below are licensed under the Creative Commons Attribution +ShareAlike 2.5 license (http://creativecommons.org/licenses/by-sa/2.5/). + +1) Sense.Lab e.V. (http://senselab.org) + design/cryptobox_backgrounds.svg + all graphics in the directory design/logo/ + all graphics in the directory www-data/screenshots + all graphics not listed below + +2) Tango Desktop Project (http://tango.freedesktop.org) + design/icons/applications-system_tango.svg + design/icons/computer_tango.svg + design/icons/dialog-error_tango.svg + design/icons/dialog-information_tango.svg + design/icons/dialog-warning_tango.svg + design/icons/drive-cdrom_tango.svg + design/icons/drive-harddisk_tango.svg + design/icons/drive-removable-media_tango.svg + design/icons/go-down_tango.svg + design/icons/go-up_tango.svg + design/icons/inaccessible_tango_emblem-unreadable.svg + design/icons/locked_tango-emblem-readonly.svg + design/icons/multimedia-dell-dj-pocket_tango.svg + design/icons/multimedia-player-ipod-mini-blue_tango.svg + design/icons/multimedia-player-motorola-rokr_tango.svg + design/icons/package-x-generic_tango.svg + design/icons/preferences-system_tango.svg + design/icons/system-log-out_tango.svg + design/icons/face_smile_big.svg + design/icons/help_browser.svg + design/icons/help_browser_disable.svg [derived] + design/icons/globe-lips.svg [derived] + design/icons/network-transmit-receive_design.svg + design/icons/unlocked-device_tango.svg [derived] + design/icons/pile_of_devices.svg [derived] + www-data/dialog-error_tango.gif + www-data/dialog-error_tango.png + www-data/dialog-information_tango.gif + www-data/dialog-information_tango.png + www-data/dialog-warning_tango.gif + www-data/dialog-warning_tango.png + www-data/icon_get_help.gif + www-data/icon_get_help.png + www-data/icon_get_help_disable.gif [derived] + www-data/icon_get_help_disable.png [derived] + www-data/smile.gif + www-data/smile.png + www-data/smile4.gif + www-data/smile4.png + www-data/volume_active_crypto.gif [derived] + www-data/volume_active_crypto.png [derived] + www-data/volume_active_crypto_busy.gif [derived] + www-data/volume_active_crypto_busy.png [derived] + www-data/volume_active_plain.gif [derived] + www-data/volume_active_plain.png [derived] + www-data/volume_active_plain_busy.gif [derived] + www-data/volume_active_plain_busy.png [derived] + www-data/volume_passive_crypto.gif [derived] + www-data/volume_passive_crypto.png [derived] + www-data/volume_passive_crypto_busy.gif [derived] + www-data/volume_passive_crypto_busy.png [derived] + www-data/volume_passive_plain.gif [derived] + www-data/volume_passive_plain.png [derived] + www-data/volume_passive_plain_busy.gif [derived] + www-data/volume_passive_plain_busy.png [derived] + plugins/language_selection/list_marker_tango.gif + plugins/volume_format_fs/plugin_icon.gif + plugins/volume_format_fs/plugin_icon.png + plugins/disks/plugin_icon.gif [derived] + plugins/disks/plugin_icon.png [derived] + plugins/shutdown/plugin_icon.gif + plugins/shutdown/plugin_icon.png + plugins/volume_props/plugin_icon.gif + plugins/volume_props/plugin_icon.png + plugins/system_preferences/plugin_icon.gif + plugins/system_preferences/plugin_icon.png + plugins/network/plugin_icon.gif + plugins/network/plugin_icon.png + plugins/volume_mount/plugin_icon.gif + plugins/volume_mount/plugin_icon.png + plugins/plugin_manager/plugin_icon.gif + plugins/plugin_manager/plugin_icon.png + plugins/plugin_manager/tango-go-up.png + plugins/plugin_manager/tango-go-down.png + plugins/plugin_icon_unknown.gif + plugins/plugin_icon_unknown.png + + +3) David Vignoni + design/icons/gnome-dev-removable-usb_nuvola.svg + design/icons/gnome-globe_nuvola.svg + design/icons/gtk-ok_nuvola.svg + design/icons/gtk-stop_nuvola.svg + design/icons/gtk-zoom-in_nuvola.svg + plugins/volume_details/plugin_icon.gif + plugins/volume_details/plugin_icon.png + +4) Andy Fitzsimon + design/icons/pile_of_devices.svg [derived] + plugins/disks/plugin_icon.gif [derived] + plugins/disks/plugin_icon.png [derived] + +5) Matthew McClintock + design/icons/redhat-config-users_wasp.svg + +3) David Vignoni + design/icons/gnome-dev-removable-usb_nuvola.svg + design/icons/gnome-globe_nuvola.svg + design/icons/gtk-ok_nuvola.svg + design/icons/gtk-stop_nuvola.svg + design/icons/gtk-zoom-in_nuvola.svg + +4) Andy Fitzsimon + design/icons/pile_of_devices.svg [derived] + plugins/disks/plugin_icon.gif [derived] + plugins/disks/plugin_icon.png [derived] + +5) Matthew McClintock + design/icons/redhat-config-users_wasp.svg + plugins/user_manager/plugin_icon.gif + plugins/user_manager/plugin_icon.png + +6) Nicu Buculei + design/icons/globe-lips.svg [derived] + plugins/language_selection/plugin_icon.gif [derived] + plugins/language_selection/plugin_icon.png [derived] + + +*********************** GPL graphics ****************************** + +The graphics listed below are licensed under the GNU General Public License (GPL) +v2.0 or later (http://www.gnu.org/licenses/gpl.html). + +1) Gnome Project (http://www.gnome.org/) + plugins/shutdown/gnome-reboot.gif + plugins/shutdown/gnome-reboot.png + plugins/shutdown/gnome-shutdown.gif + plugins/shutdown/gnome-shutdown.png + plugins/date/plugin_icon.gif + plugins/date/plugin_icon.png + plugins/partition/plugin_icon.gif + plugins/partition/plugin_icon.png + plugins/help/plugin_icon.gif + plugins/help/plugin_icon.png + + +********** Creative Commons Public Domain Dedications ************** + +1) http://openclipart.org + plugins/logs/plugin_icon.gif + plugins/logs/plugin_icon.png + diff --git a/staging-v0.3.5/debian/README.Debian b/staging-v0.3.5/debian/README.Debian new file mode 100644 index 0000000..93cec3d --- /dev/null +++ b/staging-v0.3.5/debian/README.Debian @@ -0,0 +1,32 @@ +CryptoBox for Debian - installation notes + +The main configuration file of the CryptoBox webserver is: + /etc/cryptobox-server/cryptobox.conf +All settings named [Foo]->Bar are defined in this file. + +1) Configure startup and network settings in /etc/default/cryptobox-server. +Set 'NO_START' to "0" if the CryptoBox should start at every bootup. +Set the port on which the cryptobox-server should listen. + +2) Define [Main]->AllowedDevices according to the devices that you want to +publish via the cryptobox webinterface. Be careful: the data on these drives +can be overwritten by front-end users! + +3) Choose a list of plugins to disable in [Main]->DisabledPlugins. + +4) Use the username 'admin' and the password 'admin' to access protected +parts of the CryptoBox. Please change the password soon in the 'user_manager'. +You can use the 'plugin_manager' to define which parts of the CryptoBox should +be restricted to administrative access. + +5) Read /usr/share/doc/cryptobox-server/event-scripts/README for information +about event handlers. They can be used to integrate fileservers (samba, +apache2-dav, nfs, ...) into the CryptoBox. Detailed information about +integration with samba and apach2-dav can be found in README.samba and +README.davfs. + +6) A line was automatically added to /etc/super.tab. +This is necessary to gain root privileges for certain actions. +Please inspect /usr/sbin/CryptoBoxRootActions carefully to make sure, that your +system can not get compromised by this. + diff --git a/staging-v0.3.5/debian/changelog b/staging-v0.3.5/debian/changelog new file mode 100644 index 0000000..3637c43 --- /dev/null +++ b/staging-v0.3.5/debian/changelog @@ -0,0 +1,137 @@ +cryptobox (0.3.4.5-1) unstable; urgency=low + + * new upstream release: + * added French translation provided by Gilles Accad + * added Dutch translation provided by Michiel van Dijk + * fixed bug related to change of IP address + + -- Lars Kruse Wed, 22 Aug 2007 18:35:55 +0200 + +cryptobox (0.3.4.4-1) unstable; urgency=low + + * new upstream release: added Spanish translation provided by Fadrique + + -- Henning Wed, 23 May 2007 01:50:00 +0200 + +cryptobox (0.3.4.3-1) unstable; urgency=low + + * new upstream release: added Polish translation provided by Andrzej S. Kaznowski + + -- Lars Kruse Sun, 1 Apr 2007 15:05:41 +0200 + +cryptobox (0.3.4.2-1) unstable; urgency=low + + * new upstream release: added Italian translation provided by Fabrizio Tarizzo + + -- Lars Kruse Wed, 21 Mar 2007 19:16:59 +0100 + +cryptobox (0.3.4.1-1) unstable; urgency=low + + * added: Japanese translation provided by kinneko + + -- Lars Kruse Tue, 27 Feb 2007 01:00:39 +0100 + +cryptobox (0.3.4-1) unstable; urgency=low + + * new upstream release + + -- Lars Kruse Mon, 19 Feb 2007 02:39:52 +0100 + +cryptobox (0.3.3-1) unstable; urgency=low + + * new upstream release + + -- Lars Kruse Thu, 8 Feb 2007 01:53:00 +0100 + +cryptobox (0.3.2-1) unstable; urgency=low + + * new upstream release + + -- Lars Kruse Fri, 26 Jan 2007 01:58:27 +0100 + +cryptobox (0.3.1-1) unstable; urgency=low + + * new upstream release + * reduced pyton-central dependency to v0.5.6 + + -- Lars Kruse Tue, 19 Dec 2006 18:21:43 +0100 + +cryptobox (0.3.0-1) unstable; urgency=low + + * first release of the CryptoBox as a seperate package + + -- Lars Kruse Fri, 15 Dec 2006 14:37:07 +0100 + +cryptobox (0.2.59-1) unstable; urgency=low + + * remove leading white lines to improve standard complicance of html + + -- Lars Kruse Thu, 14 Dec 2006 14:19:12 +0100 + +cryptobox (0.2.58-1) unstable; urgency=low + + * fixed small layout bug + + -- Lars Kruse Thu, 14 Dec 2006 01:57:05 +0100 + +cryptobox (0.2.57-1) unstable; urgency=low + + * added some documentation + * fixed ssl issue + * turn on some ownership checks of CryptoBoxRootActions + + -- Lars Kruse Thu, 14 Dec 2006 00:36:26 +0100 + +cryptobox (0.2.56-1) unstable; urgency=low + + * added inline help texts + * fixed 'encryption status' in 'volume_details' + * improved rendering of 'volume_properties' and 'user_manager' + * chmod mount directory to 0777 - this should avoid permission problems + * + + -- Lars Kruse Wed, 13 Dec 2006 02:14:35 +0100 + +cryptobox (0.2.55-1) unstable; urgency=low + + * more unittests + * new help system + + -- Lars Kruse Tue, 12 Dec 2006 04:47:47 +0100 + +cryptobox (0.2.54-1) unstable; urgency=low + + * log plugin improved + * samba plugin fixed + * syslog support added + * improved output of 'logs' plugin + * finished 'volume_automount' plugin + + -- Lars Kruse Mon, 11 Dec 2006 11:52:38 +0100 + +cryptobox (0.2.53-1) unstable; urgency=low + + * constant screen width + * improved documentation + * improved event scripts + * changed default setting of 'UseConfigPartition' + + -- Lars Kruse Thu, 7 Dec 2006 05:10:43 +0100 + +cryptobox (0.2.52-1) unstable; urgency=low + + * format partitions in background + * mark busy partitions + + -- Lars Kruse Wed, 6 Dec 2006 14:57:43 +0100 + +cryptobox (0.2.51-1) unstable; urgency=low + + * favicon included + * first pre-official test release + + -- Lars Kruse Thu, 05 December 2006 19:51:24 +0100 + +cryptobox (0.2.50-1) unstable; urgency=low + * Initial release + -- Lars Kruse Wed, 30 November 2006 20:26:47 +0100 diff --git a/staging-v0.3.5/debian/compat b/staging-v0.3.5/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/staging-v0.3.5/debian/compat @@ -0,0 +1 @@ +5 diff --git a/staging-v0.3.5/debian/control b/staging-v0.3.5/debian/control new file mode 100644 index 0000000..f0a0145 --- /dev/null +++ b/staging-v0.3.5/debian/control @@ -0,0 +1,22 @@ +Source: cryptobox +Section: admin +Priority: extra +Maintainer: Lars Kruse +Build-Depends: debhelper (>= 5.0.38), dpatch, python-all-dev (>= 2.4), python-central (>= 0.5.6), gettext +XS-Python-Version: >= 2.4 +Standards-Version: 3.7.2 + +Package: cryptobox-server +Architecture: any +Pre-Depends: adduser +Depends: python-central (>= 0.5.6), cryptsetup (>=20050111), e2fsprogs (>= 1.27), python (>=2.4), python-clearsilver, super, dosfstools, python-cherrypy, python-configobj, python-m2crypto +Suggests: samba, apache2, stunnel4, ntfs-3g +Replaces: cryptobox +XB-Python-Version: ${python:Versions} +Description: Web interface for an encrypting fileserver + This web interface allows you to manage encrypted and plaintext + disks. + This package is especially useful for non-desktop systems. + Even non-technical users are able to encrypt their private data with + the CryptoBox. + diff --git a/staging-v0.3.5/debian/copyright b/staging-v0.3.5/debian/copyright new file mode 100644 index 0000000..0219b29 --- /dev/null +++ b/staging-v0.3.5/debian/copyright @@ -0,0 +1,27 @@ +This package was debianized by Lars Kruse on +Wed, May 10 21:23:16 CEST 2006 + +It was downloaded from http://cryptobox.org/ + +Upstream Authors: + sense.lab development + +Copyright: + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the + Free Software Foundation, Inc., + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +On Debian GNU/Linux systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + diff --git a/staging-v0.3.5/debian/cryptobox-server.default b/staging-v0.3.5/debian/cryptobox-server.default new file mode 100644 index 0000000..680aacf --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.default @@ -0,0 +1,20 @@ +# boot configuration file for the CryptoBox +# +# the default state of the cryptobox is disabled + +# set to "0" to enable the startup of the cryptobox - otherwise "1" +NO_START=1 + +# the user that should execute the cryptobox +RUNAS=cryptobox + +# listening port +PORT=8080 + +# some more server options (rarely necessary) +#SERVER_OPTS="--host localhost --datadir=/usr/share/cryptobox-server/www-data" + +# if the CryptoBox keeps complaining about a non-encrypted connection, then +# you can override this warning by uncommenting the following line: +#export HTTPS=1 + diff --git a/staging-v0.3.5/debian/cryptobox-server.dirs b/staging-v0.3.5/debian/cryptobox-server.dirs new file mode 100644 index 0000000..b12a5dc --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.dirs @@ -0,0 +1,4 @@ +usr/sbin +usr/share/cryptobox-server +var/log/cryptobox-server +var/run/cryptobox-server diff --git a/staging-v0.3.5/debian/cryptobox-server.docs b/staging-v0.3.5/debian/cryptobox-server.docs new file mode 100644 index 0000000..3285b8a --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.docs @@ -0,0 +1,9 @@ +README +README.samba +README.davfs +README.ssl +README.proxy +copyright +changelog +doc/html +event-scripts diff --git a/staging-v0.3.5/debian/cryptobox-server.examples b/staging-v0.3.5/debian/cryptobox-server.examples new file mode 100644 index 0000000..c50cf7e --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.examples @@ -0,0 +1 @@ +conf-examples diff --git a/staging-v0.3.5/debian/cryptobox-server.init b/staging-v0.3.5/debian/cryptobox-server.init new file mode 100644 index 0000000..874d13d --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.init @@ -0,0 +1,117 @@ +#!/bin/sh +# +# runlevel script of the cryptobox package +# +# Copyright (c) 02006, senselab +# +# see LICENSE file in this package for details +# + +### BEGIN INIT INFO +# Provides: cryptobox-server +# Required-Start: $network $local_fs $remote_fs +# Required-Stop: $network $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: start CryptoBox webserver +### END INIT INFO + +# include some useful functions to unify our output format +. /lib/lsb/init-functions + +# read the default setting file, if it exists +[ -r /etc/default/cryptobox-server ] && . /etc/default/cryptobox-server + +# set default values (if not defined in /etc/default/cryptobox-server) +NO_START=${NO_START:-0} +RUNAS=${RUNAS:-cryptobox} +PORT=${PORT:-8080} +HOST=${HOST:-} +LOGFILE=/var/log/cryptobox-server/webserver.log +SERVER_OPTS=${SERVER_OPTS:-} +CONF_FILE=/etc/cryptobox-server/cryptobox.conf + +DAEMON=/usr/sbin/CryptoBoxWebserver +# default install location is /usr/bin/ - debian installation requires /usr/sbin/ +test -x "$DAEMON" || DAEMON=/usr/bin/CryptoBoxWebserver +PYTHON_EXEC=/usr/bin/python +PIDFILE=/var/run/cryptobox-server/webserver.pid +DESC="CryptoBox Daemon (webinterface)" +OPTIONS="-B --pidfile=$PIDFILE --config=$CONF_FILE --logfile=$LOGFILE --host=$HOST --port=$PORT --user=$RUNAS $SERVER_OPTS" + +# quit if NO_START is 1 (see /etc/default/cryptobox-server) +[ "$NO_START" = "1" ] && log_daemon_msg "Not starting $DESC please edit /etc/default/cryptobox-server!" && exit 0 + +# check if the package is installed +test -e "$DAEMON" || exit 0 + + +case "$1" in + start ) + # create the directory of the pid file if necessary + PIDDIR=$(dirname "$PIDFILE") + if [ ! -d "$PIDDIR" ] + then mkdir -p "$PIDDIR" + # necessary: the cryptobox server needs the permission to remove the pid file + chown $RUNAS:root "$PIDDIR" + chmod 755 "$PIDDIR" + fi + # create the directory of the pid file if necessary + LOGDIR=$(dirname "$LOGFILE") + if [ ! -d "$LOGDIR" ] + then mkdir -p "$LOGDIR" + chown $RUNAS:root "$LOGDIR" + chmod 750 "$LOGDIR" + fi + log_daemon_msg "Starting $DESC" + if start-stop-daemon \ + --quiet --start --user $RUNAS --pidfile "$PIDFILE" \ + --startas "$PYTHON_EXEC" -- "$DAEMON" $OPTIONS + then log_end_msg 0 + else log_end_msg 1 + fi + ;; + stop ) + log_daemon_msg "Stopping $DESC" + # if there is no pid file for some reason, then we try to find the process + if test ! -e "$PIDFILE" + then if start-stop-daemon --quiet --stop --user "$RUNAS" --exec "$PYTHON_EXEC" + then log_end_msg 0 + else log_end_msg 1 + fi + # there is a pid file - great! + elif start-stop-daemon --quiet --stop \ + --pidfile "$PIDFILE" \ + --user "$RUNAS" + then test -e "$PIDFILE" && rm "$PIDFILE" + log_end_msg 0 + else log_end_msg 1 + fi + ;; + reload | force-reload | restart ) + "$0" stop + sleep 3 + "$0" start + ;; + status ) + echo -n "$DESC " + if start-stop-daemon --stop --signal 0 --quiet \ + --pidfile "$PIDFILE" --user "$RUNAS" + then echo "running" + exit 0 + else if [ -e "$PIDFILE" ] + then echo "failed" + exit 1 + else echo "not running" + exit 0 + fi + fi + ;; + * ) + echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2 + exit 1 + ;; + esac + +exit 0 + diff --git a/staging-v0.3.5/debian/cryptobox-server.lintian b/staging-v0.3.5/debian/cryptobox-server.lintian new file mode 100644 index 0000000..2b4a0e9 --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.lintian @@ -0,0 +1 @@ +cryptobox-server: package-has-a-duplicate-relation diff --git a/staging-v0.3.5/debian/cryptobox-server.logrotate b/staging-v0.3.5/debian/cryptobox-server.logrotate new file mode 100644 index 0000000..35ae3e7 --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.logrotate @@ -0,0 +1,6 @@ +/var/log/cryptobox-server/cryptobox.log /var/log/cryptobox-server/webserver.log { + rotate 2 + size 100k + copytruncate + nocompress +} diff --git a/staging-v0.3.5/debian/cryptobox-server.manpages b/staging-v0.3.5/debian/cryptobox-server.manpages new file mode 100644 index 0000000..70d5772 --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.manpages @@ -0,0 +1,2 @@ +man/CryptoBoxWebserver.8 +man/CryptoBoxRootActions.8 diff --git a/staging-v0.3.5/debian/cryptobox-server.postinst b/staging-v0.3.5/debian/cryptobox-server.postinst new file mode 100644 index 0000000..145f0fa --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.postinst @@ -0,0 +1,78 @@ +#!/bin/sh + +set -u + +# check the current cryptobox user - maybe it was changed manually +test -r /etc/default/cryptobox-server && . /etc/default/cryptobox-server + +# RUNAS was probably imported from /etc/default/cryptobox-server - otherwise use the default +CRYPTOBOX_USER=${RUNAS:-cryptobox} +LOG_FILE=/var/log/cryptobox-server/cryptobox.log +WEBLOG_FILE=/var/log/cryptobox-server/webserver.log +PID_DIR=/var/run/cryptobox-server +USER_HOME=/var/cache/cryptobox-server +SUPER_FILE=/etc/super.tab +ADDITIONAL_GROUP=disk + + +create_user_home() +{ + # if the user already exists -> do nothing + getent passwd "$CRYPTOBOX_USER" 2>/dev/null >/dev/null && return 0 + # create cryptobox user + echo "Creating new user '$CRYPTOBOX_USER' ..." + adduser --system --group --home "$USER_HOME" "$CRYPTOBOX_USER" + adduser "$CRYPTOBOX_USER" "$ADDITIONAL_GROUP" + mkdir -p "$USER_HOME/mnt" + mkdir -p "$USER_HOME/settings" + chown -R ${CRYPTOBOX_USER}: "$USER_HOME" + # only members of the cryptobox group may access the user directory + chmod 755 "$USER_HOME" +} + +create_add_super_permission() +{ + ## this will add some lines to the configuration file of 'super' + ## do nothing, if there is already a CryptoBox line + grep -q "CRYPTOBOX_MARKER" "$SUPER_FILE" && return 0 + echo >>"$SUPER_FILE" "## CRYPTOBOX_MARKER - please do not remove!" + echo >>"$SUPER_FILE" "CryptoBoxRootActions /usr/sbin/CryptoBoxRootActions $CRYPTOBOX_USER" +} + +create_dirs_and_files() +{ + # pid file + test ! -e "$PID_DIR" && mkdir -p "$PID_DIR" + chown "$CRYPTOBOX_USER" "$PID_DIR" + # create config directories with appropriate permissions + test ! -e "$LOG_FILE" && mkdir -p "$(dirname $LOG_FILE)" && touch "$LOG_FILE" + chown "$CRYPTOBOX_USER" "$LOG_FILE" + test ! -e "$WEBLOG_FILE" && mkdir -p "$(dirname $WEBLOG_FILE)" && touch "$WEBLOG_FILE" + chown "$CRYPTOBOX_USER" "$WEBLOG_FILE" +} + + +#################### main ###################### + +case "$1" in + reconfigure|configure) + create_user_home + create_dirs_and_files + create_add_super_permission + # continue at the end + ;; + abort-upgrade|abort-remove|abort-deconfigure) + # nothing to be done + exit 0 + ;; + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 0 + ;; + esac + + +#DEBHELPER# + +exit 0 + diff --git a/staging-v0.3.5/debian/cryptobox-server.postrm b/staging-v0.3.5/debian/cryptobox-server.postrm new file mode 100644 index 0000000..01e4b4b --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.postrm @@ -0,0 +1,65 @@ +#!/bin/sh + +set -u + +CRYPTOBOX_USER=cryptobox +LOG_FILE=/var/log/cryptobox-server/cryptobox.log +WEBLOG_FILE=/var/log/cryptobox-server/webserver.log +PID_DIR=/var/run/cryptobox-server +SUPER_FILE=/etc/super.tab +MNT_DIR=/var/cache/cryptobox-server/mnt +SETTINGS_DIR=/var/cache/cryptobox-server/settings + +remove_super_lines() +{ + ## do nothing, if there is no CryptoBox line + grep -q "CRYPTOBOX_MARKER" "$SUPER_FILE" || return 0 + sed -i /CRYPTOBOX_MARKER/d "$SUPER_FILE" + sed -i /^CryptoBoxRootActions/d "$SUPER_FILE" +} + + +umount_all() +{ + test -d "$SETTINGS_DIR" && mountpoint -q "$SETTINGS_DIR" && umount "$SETTINGS_DIR" + test -d "$MNT_DIR" && ls "$MNT_DIR" | while read dir + do if test -d "$MNT_DIR/$dir" + then mountpoint -q "$MNT_DIR/$dir" && umount "$MNT_DIR/$dir" + rm -r "$MNT_DIR/$dir" + fi + done +} + + +remove_stuff() +{ + #TODO: remove old log files too (created by logrotate) + test -e "$LOG_FILE" && rm "$LOG_FILE" + test -e "$WEBLOG_FILE" && rm "$WEBLOG_FILE" + test -e "$PID_DIR" && rm -r "$PID_DIR" + test -e "$SETTINGS_DIR" && rm -r "$SETTINGS_DIR" +} + + +################## main ################### + +# umount everything that is still active +umount_all + +# remove the user +if test "$1" = "purge" && getent passwd "$CRYPTOBOX_USER" 2>/dev/null >/dev/null \ + && test "$(getent passwd $CRYPTOBOX_USER | cut -d : -f 6)" = /var/cache/cryptobox-server + then echo "Removing user 'cryptobox' ..." + userdel -r "$CRYPTOBOX_USER" + fi + +# always remove the lines from the 'super' configuration file +remove_super_lines + +# remove obsolete files +test "$1" = "purge" && remove_stuff + +#DEBHELPER# + +# return without error +true diff --git a/staging-v0.3.5/debian/cryptobox-server.preinst b/staging-v0.3.5/debian/cryptobox-server.preinst new file mode 100644 index 0000000..dadbb97 --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.preinst @@ -0,0 +1,4 @@ +#!/bin/sh + +#DEBHELPER# + diff --git a/staging-v0.3.5/debian/cryptobox-server.prerm b/staging-v0.3.5/debian/cryptobox-server.prerm new file mode 100644 index 0000000..dadbb97 --- /dev/null +++ b/staging-v0.3.5/debian/cryptobox-server.prerm @@ -0,0 +1,4 @@ +#!/bin/sh + +#DEBHELPER# + diff --git a/staging-v0.3.5/debian/patches/00list b/staging-v0.3.5/debian/patches/00list new file mode 100644 index 0000000..e69de29 diff --git a/staging-v0.3.5/debian/pycompat b/staging-v0.3.5/debian/pycompat new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/staging-v0.3.5/debian/pycompat @@ -0,0 +1 @@ +2 diff --git a/staging-v0.3.5/debian/rules b/staging-v0.3.5/debian/rules new file mode 100755 index 0000000..d5dcb9a --- /dev/null +++ b/staging-v0.3.5/debian/rules @@ -0,0 +1,97 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# necessary for dpatch +.NOTPARALLEL: + +DEB_BUILD_DIR=$(CURDIR)/debian/cryptobox-server +PY_VER=$(shell pyversions -vr | cut -f 1 -d " ") +CB_PYDIR=$(DEB_BUILD_DIR)/usr/lib/python${PY_VER}/site-packages/cryptobox + + +build: build-stamp + +build-stamp: + dh_testdir + python setup.py build + touch build-stamp + +clean: clean-patched unpatch + +clean-patched: + dh_testdir + dh_testroot + python setup.py clean + rm -f build-stamp + rm -rf build + find -type f -name '*.mo' -print0 | xargs -0 rm -f + find -type f -name '*.py[co]' -print0 | xargs -0 rm -f + rm -f MANIFEST + dh_clean + +patch: patch-stamp +patch-stamp: + dpatch apply-all + touch patch-stamp + +unpatch: + dpatch deapply-all + rm -rf patch-stamp debian/patched + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + python setup.py install --root=$(DEB_BUILD_DIR) + # compile language files + find $(DEB_BUILD_DIR) -type f -name \*.po | while read pofile; \ + do msgfmt -o "$${pofile%.po}.mo" "$$pofile"; rm "$$pofile"; done + # the cryptobox is a webserver - it should be installed in /usr/sbin + mv $(DEB_BUILD_DIR)/usr/bin/CryptoBoxWebserver $(DEB_BUILD_DIR)/usr/sbin/ + mv $(DEB_BUILD_DIR)/usr/bin/CryptoBoxRootActions $(DEB_BUILD_DIR)/usr/sbin/ + # remove tests + rm -r $(CB_PYDIR)/tests + # remove doc directory (installed by debian scripts anyway) + rm -r $(DEB_BUILD_DIR)/usr/share/doc/cryptobox-server + # install lintian override file: for multiple dependency caused by {python:Depends} + install -D -m 644 debian/cryptobox-server.lintian \ + $(DEB_BUILD_DIR)/usr/share/lintian/overrides/cryptobox-server + + +# Build architecture-independent files here. +binary-indep: build install + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples + dh_installlogrotate + dh_installdirs + dh_installman + dh_install + dh_pycentral + @# pycentral must be called before installinit - otherwise the DEBHELPER part + @# in the postinst script is filled in the wrong order - this causes a failing + @# shutdown after removal, as the "pycentral pkgremove" call stops the daemon before + dh_installinit + dh_compress + dh_fixperms + dh_installdeb + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install clean-patched patch patch-stamp unpatch diff --git a/staging-v0.3.5/design/cd-cover.svg b/staging-v0.3.5/design/cd-cover.svg new file mode 100644 index 0000000..3ede538 --- /dev/null +++ b/staging-v0.3.5/design/cd-cover.svg @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + CryptoBox-CD-Cover + 2007-02-24 + + + Sense.Lab e.V. - http://senselab.org + + + + + Sense.Lab e.V. - http://senselab.org + + + + + Sense.Lab e.V. - http://senselab.org + + + https://systemausfall.org/svn/cryptobox/trunk/design/cd-cover.svg + + + CryptoBox cd cover + + + + + + + + + + + + + + + + Crypto + Box + + + + Privacy for the rest of us. + Privacy for the rest of us. + + + Crypto + Box + + + Und 1984 war gestern ... + Und 1984 war gestern ... + + diff --git a/staging-v0.3.5/design/cd-label.png b/staging-v0.3.5/design/cd-label.png new file mode 100644 index 0000000..06d9634 Binary files /dev/null and b/staging-v0.3.5/design/cd-label.png differ diff --git a/staging-v0.3.5/design/cd-label.xcf b/staging-v0.3.5/design/cd-label.xcf new file mode 100644 index 0000000..0c2c15b Binary files /dev/null and b/staging-v0.3.5/design/cd-label.xcf differ diff --git a/staging-v0.3.5/design/cryptobox_backgrounds.svg b/staging-v0.3.5/design/cryptobox_backgrounds.svg new file mode 100644 index 0000000..a289b74 --- /dev/null +++ b/staging-v0.3.5/design/cryptobox_backgrounds.svg @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + CryptoBox: background items + 02006-09-01 + + + Sense.Lab e.V. (http://senselab.org) + + + + + + Sense.Lab e.V. (http://senselab.org) + + + + + Sense.Lab e.V. (http://senselab.org) + + + https://systemausfall.org/svn/cryptobox/tags/v0.3.3/design/cryptobox_backgrounds.svgh + https://systemausfall.org/svn/cryptobox/tags/v0.3.3/design/cryptobox_backgrounds.svg + + + backgrounds cryptobox + + + + + + + + + + + + + + + + + + + icon_background_active60x7980x106100x132256x338 + icon_background_passive60x7980x106100x132256x338 + register_active2240x120 + register_passive2240x120 + footer_line494x3 + + volume_property_frame1800x1600 + backpane_left250x3 + + backpane_right250x3 + + + backpane_left_top90dpi + backpane_right_top90dpi + + backpane_top8x3 + + + + help_background1600x600 + + environment_warning_background1600x400 + + diff --git a/staging-v0.3.5/design/icons/applications-system_tango.svg b/staging-v0.3.5/design/icons/applications-system_tango.svg new file mode 100644 index 0000000..35e2ffa --- /dev/null +++ b/staging-v0.3.5/design/icons/applications-system_tango.svg @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + System Applications + + + Jakub Steiner + + + http://jimmac.musichall.cz/ + + + system + applications + group + category + admin + root + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/computer_tango.svg b/staging-v0.3.5/design/icons/computer_tango.svg new file mode 100644 index 0000000..d6e0f6b --- /dev/null +++ b/staging-v0.3.5/design/icons/computer_tango.svg @@ -0,0 +1,738 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Computer + 2005-03-08 + + + Jakub Steiner + + + + + workstation + computer + node + client + + + + http://jimmac.musichall.cz/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/dialog-error_tango.svg b/staging-v0.3.5/design/icons/dialog-error_tango.svg new file mode 100644 index 0000000..602fa79 --- /dev/null +++ b/staging-v0.3.5/design/icons/dialog-error_tango.svg @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Rodney Dawes + + + + + Jakub Steiner, Garrett LeSage + + + + Dialog Error + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/dialog-information_tango.svg b/staging-v0.3.5/design/icons/dialog-information_tango.svg new file mode 100644 index 0000000..1e957cc --- /dev/null +++ b/staging-v0.3.5/design/icons/dialog-information_tango.svg @@ -0,0 +1,1145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Info + + + Jakub Steiner + + + + + dialog + info + + + http://jimmac.musichall.cz + + + + Garrett LeSage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/dialog-warning_tango.svg b/staging-v0.3.5/design/icons/dialog-warning_tango.svg new file mode 100644 index 0000000..3870db2 --- /dev/null +++ b/staging-v0.3.5/design/icons/dialog-warning_tango.svg @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Dialog Warning + 2005-10-14 + + + Andreas Nilsson + + + + + Jakub Steiner, Garrett LeSage + + + + + dialog + warning + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/drive-cdrom_tango.svg b/staging-v0.3.5/design/icons/drive-cdrom_tango.svg new file mode 100644 index 0000000..6588a65 --- /dev/null +++ b/staging-v0.3.5/design/icons/drive-cdrom_tango.svg @@ -0,0 +1,444 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Drive - CD-ROM + + + Jakub Steiner + + + + + cdrom + cd-rom + optical + drive + + + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/drive-harddisk_tango.svg b/staging-v0.3.5/design/icons/drive-harddisk_tango.svg new file mode 100644 index 0000000..406c4ac --- /dev/null +++ b/staging-v0.3.5/design/icons/drive-harddisk_tango.svg @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Drive - Hard Disk + + + Jakub Steiner + + + + + hdd + hard drive + fixed + media + solid + + + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/drive-removable-media_tango.svg b/staging-v0.3.5/design/icons/drive-removable-media_tango.svg new file mode 100644 index 0000000..e448605 --- /dev/null +++ b/staging-v0.3.5/design/icons/drive-removable-media_tango.svg @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Drive - Removable + + + Jakub Steiner + + + + + media + removable + + + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/face_smile_big.svg b/staging-v0.3.5/design/icons/face_smile_big.svg new file mode 100644 index 0000000..9c275b6 --- /dev/null +++ b/staging-v0.3.5/design/icons/face_smile_big.svg @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Face - Laughing + + + emoticon + emote + smiley + laughing + :-D + :D + + + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/globe-lips.svg b/staging-v0.3.5/design/icons/globe-lips.svg new file mode 100644 index 0000000..c1cec26 --- /dev/null +++ b/staging-v0.3.5/design/icons/globe-lips.svg @@ -0,0 +1,525 @@ + + + + + + + GlobeLips + + + + bodypart + mouth + globe + + + + + Open Clip Art Library + + + + + Nicu Buculei + + + + + Nicu Buculei + + + 20.10.02007 + image/svg+xml + + + en + + + Lars Kruse +Clavdia Horvat + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/gnome-dev-removable-usb_nuvola.svg b/staging-v0.3.5/design/icons/gnome-dev-removable-usb_nuvola.svg new file mode 100644 index 0000000..a2c624a --- /dev/null +++ b/staging-v0.3.5/design/icons/gnome-dev-removable-usb_nuvola.svg @@ -0,0 +1,1004 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Adobe PDF library 6.66 + + + + + + + + + + 2004-10-01T14:58:15+02:00 + + 2005-02-15T09:49:25Z + + Illustrator + + 2004-10-01T14:58:15+02:00 + + + + + JPEG + + 256 + + 256 + + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 +FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F +XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX +Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY +q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq +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 +rF+j9Kff61cAxoy+KJ9uT/iPuM1mo1/Qn4BmIvavJn5QeUfLJS4WH9Iamm/125AYq3jHH9lPnu3v +mqyaiUvIMwGcZQl2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvnX82fJH+Hda+u +2kdNI1Fi0QA2il6vF7D9pfbbtmywz8SNHmGB2Zn+UfnE32m/oS8k5XdktbV26yQDYD5x9PlmHkhR +ZBl19rSopFsnrsNjJWkYPf4v2iPBfppkEvMPO3mlUJS9ufVmG6WybAf7Cvw/Nt/nlmPFKfLkgli/ +l/yV5r86XHOyt/q+nBqPeTVWIeIBpWRvZR86Zk8OPFz3kx3KX+d/J2oeUNabTrl/XgkUSWt0F4rK +h6mlWoVOxFf4Zm6XUA7sSEsLX99YQ2d7f3EumQ1EGncykC/EWPJVpzPIk1b5ZsYaWBPEWFrTd2dp +GIoEWg6IgAUfdkp6iEBQWmS+WPy087+a+EqQ/o/S33+t3AKIy+KL9uT/AIj75rNRr+hPwDMRey+U +Pyb8oeXeE8kP6U1FaH61dAFVbxji3RfatSPHNVk1MpeQbAGd5jpdirsVdirsVdirsVdirsVdirsV +dirsVdirsVdirsVdirsVdirsVdiqV+ZvL1j5g0W50q8H7udfgkH2o5Bujr7qcnjmYmwpD568uxQ+ +VvPcdp5jpDDYSSC5JUupUxtSigEsrggjbeubDLHjjcWA2ZDq/nrzH5vv20ryfYSpFsDPQepx6cmb +7EK/M/TlcdPGAuZTbJvJ/wCR+m2brfeZZBqd8TyNsCfQU/5RPxSn50HscryaonaOwUReoRRRxRrF +EixxoAqIoAVQNgAB0GYjJiX5peUo/MnlO5iSPnqFmpubBgPi5oKsg/4yL8NPGnhl2DJwy8kEPFvK +/wCT3nTXkje4T9FacaH1roEOVPdIRRj/ALLiPfNll1oAq7YCL2Lyn+UPk/y9xm+r/pG/Xf61dgPx +P+RHTgvsaV9812TUSl5BmAzbKEuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K +uxV2KuxV2KsT84flroPmm/s72+aSKW2BSUw0Bmj6hGJBpQ9/n9F2LPKAICCE/wBI0XStHs1s9MtY +7S2X9iMUqfFid2PuTXK5TMjZSjcirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV +dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd +irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi +rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir +sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs +VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV +dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd +irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi +rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir//Z + + + + + + + + + + + + uuid:74d5a603-9ab8-427f-9735-c474bf2487a1 + + + + + + image/svg+xml + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/gnome-globe_nuvola.svg b/staging-v0.3.5/design/icons/gnome-globe_nuvola.svg new file mode 100644 index 0000000..3a5a620 --- /dev/null +++ b/staging-v0.3.5/design/icons/gnome-globe_nuvola.svg @@ -0,0 +1,1195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +2004-03-28T20:03:13Z + +2004-03-28T20:03:13Z + +Illustrator + + + + +JPEG + +256 + +256 + +/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 +FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmDzFo +3l7TJdT1e5W1tItuTbszHoiKN2Y+AxV4j5g/5ydvTcMnl/SYlgU0Se/LOzDxMcTIF/4M4qk//QzP +nv8A5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/soxV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8 +sGl/8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hmfPf/ACwaX/yKuP8AsoxV3/QzPnv/AJYNL/5F +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 +4lCRoEQdFUAD8MVXYq7FXYq//9k= + + + + + + +image/svg+xml + + + + + + + + + +2004-03-28T20:07:21Z + +2004-03-28T20:07:21Z + +Illustrator + + + + +JPEG + +256 + +256 + +/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 +FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmDzFo +3l7TJdT1e5W1tItuTbszHoiKN2Y+AxV4j5g/5ydvTcMnl/SYlgU0Se/LOzDxMcTIF/4M4qk//QzP +nv8A5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/soxV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8 +sGl/8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hmfPf/ACwaX/yKuP8AsoxV3/QzPnv/AJYNL/5F +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 + + + + + + +image/svg+xml + + + + +begin='ïğż' id='W5M0MpCehiHzreSzNTczkc9d' + + + + + + +2004-03-28T20:10:24Z + +2004-03-28T20:13:14Z + +Illustrator + + + + +JPEG + +256 + +256 + +/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 +FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqlvmDzFo +3l7TJdT1e5W1tItuTbszHoiKN2Y+AxV4j5g/5ydvTcMnl/SYlgU0Se/LOzDxMcTIF/4M4qk//QzP +nv8A5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/soxV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8 +sGl/8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hmfPf/ACwaX/yKuP8AsoxV3/QzPnv/AJYNL/5F +XH/ZRirv+hmfPf8AywaX/wAirj/soxV3/QzPnv8A5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/so +xV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8sGl/8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hm +fPf/ACwaX/yKuP8AsoxV3/QzPnv/AJYNL/5FXH/ZRirv+hmfPf8AywaX/wAirj/soxV3/QzPnv8A +5YNL/wCRVx/2UYq7/oZnz3/ywaX/AMirj/soxV3/AEMz57/5YNL/AORVx/2UYq7/AKGZ89/8sGl/ +8irj/soxV3/QzPnv/lg0v/kVcf8AZRirv+hmfPf/ACwaX/yKuP8AsoxVFad/zk75oS4B1HSbG4t+ +6W/qwP8A8E7zj/hcVeyeRfzJ8tec7Vn0yUx3kQBuLCaizJ25AAkMlf2l+mmKsqxV2KuxV2KuxV2K +vm/XDqf5ufmk+j287Q+XtJLqJF3VIY2CSzAHYvM9AvtTwOKvePLfk/y35bs0tdHsYrZVFGlCgyuf +GSQ/Ex+ZxVOK4q6oxVrkMVdyGKu5jFWvUGKu9RffFWvVX3xV3rL74q71l8DirXrp4HFXfWE8DirX +1hPA4q76yngcVd9Zj8D+GKtfWo/A/hirvrcfgfw/rirvrcfgfw/rirX1yLwb8P64q765F4N+H9cV +d9di8G/D+uKtfXovBvw/riqVa/5X8r+abR7TV7GO55CiyMoWZP8AKjkHxKR7HFXzB5n0XXfys8/R +NZXBJgIudOujsJYGJUpIB8ijj+oxV9VeWtfs/MGhWWsWf9xexLKErUoxHxI3up2OKplirsVdirsV +Q+oMy2Fyy/aWJyvzCnFXhP8AziwqvL5nmYcpQLIBz1oxuC2/uVGKvficVaxVrFWicVaJxVrFWsVa +JxVonFWsVaxVrFWicVaxVrFWicVaJxVrFWsVaJxVonFWsVaxVdCSJkp/MP14q8V/5ypRBJ5ZkCjm +wvVZu5CmAgfRyOKsn/5x3vJX8lwWzElQZmSvbjMR/wAbYq9XxV2KuxV2KofUv+Oddf8AGGT/AIic +VeE/84pn/lKP+jD/ALGcVe+nFWsVaJxVonFWsVaxVonFWicVaxVrFWsVaJxVrFWsVaJxVonFWsVa +xVonFWicVaxVrFWicVXQ/wB9H/rD9eKvFv8AnKw/8ov/ANH/AP2LYqn/APzjn/yisHyuP+T4xV6/ +irsVdirsVQ+pf8c66/4wyf8AETirwf8A5xRNf8U/9GH/AGM4q9+PXFWicVaJxVrFWsVaJxVonFWs +VaxVrFWicVaxVrFWicVaJxVrFWsVaJxVonFWsVaxVonFWicVXQ/30f8ArD9eKvFf+crjT/C3/R// +ANi2Ksg/5xy/5RS3+Vx/yfGKvYMVdirsVdiqH1L/AI511/xhk/4icVeDf84nmv8Ain/ow/7GcVe/ +HrirROKtYq1irROKtE4q1irWKtYq0TirWKtYq0TirROKtYq1irROKtE4q1irWKtE4q0TirWKroP7 ++P8A1h+vFXiv/OWBp/hb/o//AOxbFWQf844f8onb/K4/5PjFXsOKuxV2KuxVD6l/xzrr/jDJ/wAR +OKvBP+cTD/ylX/Rh/wBjOKvf2O5xVrFWsVaJxVonFWsVaxVrFWicVQGq65oukQ+tql/b2MR6PcSp +ED8uRFfoyzHhnM1EE+5hPJGP1GmGaj+e/wCWdmxUao1046rbwyuP+CKqh+g5sIdj6mX8Ne8hxZdo +YR1tKn/5yN8lUBi0/Vp0I2eO3ip4ftTLlw7Czd8Pmf1Nf8p4+6X4+K6L/nIvyAWVbiLULMsK/v7d +dhWm/B3/AAwHsLP04T8UjtLF5sg0n83fy41RlS2123jkbolzytjXw/fiME/I5i5OzNRDnA/Df7m+ +GsxS5SZbHLHLGskbh43FUdSCpB7gjMEiubkgtk4FaJxVrFWsVaJxVonFWsVaxVdAf38f+sv68VeK +f85Zn/lFf+j/AP7FsVZD/wA43/8AKJW/yuP+T+KvYsVdirsVdiqH1L/jnXX/ABhk/wCInFXgX/OJ +R/5Sr/ow/wCxnFX0A3U4q1irROKtE4q1irWKtYqxnzn+Ynlfyjbh9Vua3LisFjDR7iT5JUUH+UxA +zM0mhy5z6Rt39HHz6qGIeo79zz2XzD+bfnViNNjXylosmyyuC946nuKgMviKBP8AWObiGk02D6v3 +kvs/HzdbLVZsv0+gfamOjfkDoTS/XNakuNWvXPKW4vZXJZvHipB/4MnIZe2SBUKiPJOPs+95faza +y8ieT9HRfSs7eDf4TFFHGaj3UVOa6evyz6uZHR44ptb6do0u0cZcDqST+vKJZ8ne2jBDuULnRtKl +mNs9pK6kAlqAx0Pjy2ycdTMC7DE6eB6Me1v8nfJmpq/qaZaszdWWMQv/AMjIuL/jmVi7VyR6lono +InkwW6/KDXPLUzXXk3XbvRpa1+qzN6to57A9V/4IOc2I12POKyREvvcU4Z4j6SR9yvp/5xa/5euI +9P8AzD0lrVWISPW7NTJbv2q6rWnieO/+QMxsvZEZjiwSv+ief4/FuRj15G2QfF6lpup6dqdlFfad +cx3dpMKxTxMHU/SO47jNJkxygeGQouxjISFjkicgyaJxVonFWsVaxVonFV8H9/H/AKy/rxV4l/zl +qf8AlFf+j/8A7FsVZF/zjb/yiNt8rn/k/ir2PFXYq7FXYqh9S/4511/xhk/4icVeA/8AOJBr/iv/ +ALd//Yzir6Bb7R+eKrScVaJxVrFWsVaxV5l57/NC9TU28q+S4lvvMLVW6ujQwWgFAxYn4WZa712U +7Gp+HNzoezQY+Jm2h0HUut1Wuo8GPeX3IHyf+W1lZXjarqkx1bX5TzuNSuSXCOevpBu/v1+Q2zM1 +Wt9PDEcMOgDiYNNxGzue96PavbWwHpr8XdzTl9Hh9GaXJOUubtYYxFFjUUkZVrwU9STlXA2Wl91o +8l7qzXE13/oQVRHAh+LYbgnsK75ZGdRoDdgRZTH95byxJCY47NVIeOh513pT8Mr58+bNUN4O2RpN +tfW/fHhTbTXKspVgGU7FTuDhApB3SHWvL9leW0saRRzQyCk1jMA8TjwHKtPkdszsGrIPq+bhZtN1 +j8nks/lrzH5Ivptb8hu8loCX1TyzMWZWA6mME8iQOn7Q7E/ZzczOPUREcvPpIODjnLGbj8Q9O8je +fdE846T9d05jHPEQl7YyU9WCTwYd1NPhbv8AOoHPazRzwS4ZfA97uMGeOQWGRk5iNzWKtYq0TirR +OKr4P7+P/XX9eKvEv+ctzT/Cn/bw/wCxbFWR/wDONf8Ayh9t8rn/AJP4q9jxV2KuxV2KofUv+Odd +f8YZP+InFXz/AP8AOIxr/iv/ALd//Yzir6Cb7R+eKrScVaxVrFWsVeZ/mj561KO7i8meVm5eYb9f +9JulNBaQncsSK8WK9/2RuNyubnszQxkPFyfQOneXWa7VEfu4fUfsS7yvoeleXrf9E6cfUuSBJqd8 +ftux8Tv134r/AJnO1WYy9UvgHD0+IXwj4llCXqooVdlHQDNTIEmy7WNAUF36Q98jwJtMFtLxhC4U +mOUAswpVanwqO2RsJtF/oh/+Wj/hP+bsjxJWzH6txhqSVFS52rU4KtNqf1v3x4Vt31v3x4Vt31v3 +x4Vt31v3x4VtJ9ftbmeL63p3H6/D8QQmglUD7HLoG8Cdux26ZmlzCJ4ZfQfscPVYDIcUfqH2vLNV +tbuK7bz55Irb65ZlhrmkUoJ1U/vleKteYp8a9T1HxUJ3UscZR8LLvA/TLu7nXYc5vijtIcw9d8le +cdL826BBrGnmgf4Li3Jq8MwHxxt8ux7jfOX1WmlhmYS/td9hyjJGwnuY7a0TirROKtYqvt/96Iv9 +df14q8R/5y5NP8Kf9vD/ALFsVZJ/zjV/yh1t8rn/AKiMVeyYq7FXYq7FUPqX/HOuv+MMn/ETir59 +/wCcQz/yln/bv/7GcVfQbn4j88VW4q1irWKsc8/+cLbyn5YutWkAecD0rKA/7suHrwX5D7TewOZe +i0pz5BAcuvucfVagYoGXy97yPSo7ry3pDalfVuvOPmSTm/qfbBl+JUNPsqv2pPD6BnTTMZmhtig8 +/ch55Jsh0pJIYltoeVxcOecsgBLySH7TkCv0DsKDoM1eafHKy7XDjEI0GUad5dvpiHvG9CP+QEFz +/AZiSmOjeAyS2tLW2jEcMYAHU9ST4knKSSWSvzwUm3c8aW0o1u+jVlh4/GKMHr2PbJxitpV9aNK9 +vHJcK2763748K2qwmeVWZB8C15OdlFBXqcaW1L63748K2763748K2wTzmZ/L+qw+bbCogZkh1mAf +ZZT8KTU8RXifo9zm40GUTj4Uvh+p0+vwmEvFj8Umh1OLyD5ytPMmnn/nTfM7KmoxLvHBOdw4p4VL +r7cgO2T1WnOfEYH+9x8vMNulziMgf4ZPeVdXRXQhkYAqw3BB3BGco7xsnFWsVaxVfbn/AEiL/XX9 +eKvEP+cvD/yif/bw/wCxbFWS/wDONH/KG2vyuf8AqIxV7LirsVdirsVQ+pf8c66/4wyf8ROKvnz/ +AJxBP/KWf9u//sZxV9Bv9o/M4qtxVrFWicVeMecrxfNP5nxac7ctD8px/WbsDdXumowU+NPhFP8A +JYd86Xs/F4Wn4v48uw934/Q6LW5ePLX8MPveZ+atd1XV9SvPM1tc/V7XS5xa6YAORnmZgHCDwK9a +9VoM2AjER4ejrjKXFxdXuX5dThNIiN8i2+r3Kq1zFWqg02RSfDuP19c0urwEGx9LuNPqBIb82Yc8 +wqcq3c8aW3c8aW0FqOtWlitHbnKfsxL1+nwGSjAlbYlNqXrXLTuo+NuRSpp8suEUWj/8T1h9BrWI +xUoEFQMj4a21bXGhG1BuJJBOKllUHv2HbEg2tqN7q9lNH6cFqISD8MnKpKjxFOp+eEQK2gvrfvku +FbU7jU7e2ge4uJVhgjHKSVyFVR4knbEQtBkBuXjn5gfmkdYR9L0otHplaTTnZp6HagO6pXffc96d +M2ml04geI83VarUmfpj9P3pl+XtxB5r8qap5OvH/AHvD1LF2/YcfFGw/1WFD7UGZOSfCRMfw/c4+ +DY8Pe9M/IvzVcar5VfSNQJGqaFIbSdH+1wXZK/6tOP0Zz3a2mGPNY+me4eh0eXihvzGz0jNY5TWK +tE4qvt/96Iv9df14q8Q/5y+P/KJ/9vD/ALFsVZL/AM4z/wDKGWvyuf8AqIxV7NirsVdirsVQ+pf8 +c66/4wyf8ROKvnr/AJw/Nf8AFv8A27/+xrFX0I/22+ZxVbirROKoXU7+HTtNu9Qn/ubOGSeXt8MS +l2/AZPHAzkIjmTTGchGJJ6PmmfWLnR/yw1PzBM3+5bzPdyv6n7Rq7LX/AGLc3GdhnIjOhyxxofj3 +PLxuUbPOZtS8reVob7y/5f1G0uZbC+tB6nqqOQZXdmkBR/hq1dmp94phEbiC1mVEh6bBJ0yEgziU ++sNduYgFkPqoPH7X35gZdNE8tnMx6gjnunEGq2koHxcG8G2/HpmHLBIOXHNEpf5m1q4sLSI2xWsx +K+p140FdsEMdndsthL3zu5d2LOxqzE1JOZHCttfW/fHhW3fW/fHhW3fW/fHhW0Lf69punoHvruK1 +Vq8TK6pyp/LyIr9GPCxMwObDtZ/OPSIIZBo8L6hMgBMjAxRKDtU8hzNGpUcR88sGLvapagdHmPmD +znr2vyhtQuC0Styjtk+GJDv0UdSK0q1T75fCo8nEnIy5pP67ZPja+Bkn5d6/JpXnDTrgHikkogkr +0pIQBX2DUP0YYzvY9UShW4ey6NcDy3+eUkcZ4WHme3WdV7GR61P/ACMRm+nMbtCHHpRLrjlXw/FO +x0U6yV0kHt+c47ZonFWsVX23+9EX+uv68VeH/wDOYBp/hL/t4f8AYrirJv8AnGX/AJQu0+Vz/wBR +GKvZ8VdirsVdiqH1L/jnXX/GGT/iJxV88f8AOHpr/i3/ALd3/Y1ir6Ff7bfM4qtJxVrFWE/nNftZ +fltrLqfjmSOAfKaVEb/hSc2PZMOLUx+fyDhdoy4cMnj/AOZUekWH5f6Vp1+nOSOzhFnGCQ31kp8U +m3Zakn7u+b+weInrJ0ZBBiB0DEPL/wCbF5Yww2t/ZJNBCqxpJAfTcKooPhNVO3yyUcx5FjLB3PR/ +L3nny7rBVLW6CXDdLab93JXwAOzf7EnDYLHhIZTFNlcosoyRkc2VGLaJJZ5r0I6/pDWkV5LYXaHn +a3cDsjI9KUbiQSh/aGV8LYJPA9R8w/mB5ev5dLvL10uLc8T6ixy8hT4WV5FYsGG4OS4AWQyy70L/ +AMrC85/9XD/kjB/zRj4YT40u9w/MLzn/ANXD/kjB/wBU8fDC+LLvQd15s803TcpdTuBtQiNzEtP9 +WPiMPAGJyE9UoZGZizEszGrMdySe5w0xtXsJjaXkc/ASKppJEejow4uh9mUkYQEFF6loLQ6otrZn +1oLkLNZSsQvKGQclLE0VSvR69CDhMN0CWyvrXlG80exhuL11WaeZ44olIYNEiqfVVgejFqUIGGWI +xG7GOQSOyU/V7iIRz8GQMaxSUIBKnfie9DkKZ29q883zTp+X/meNTE8rhHBFCFl4FfuHL55OuLHl +j/RtuwGpRPm+greYT28Uy9JUVx8mFc5J3y/FWsVX23+9MX+uv68VeHf85hGn+Ev+3j/2K4qyj/nG +P/lCrT5XP/URir2fFXYq7FXYqh9S/wCOddf8YZP+InFXzv8A84dH/lLv+3d/2NYq+hZD8bfM4qtx +VrFXmv8AzkE9Py8kFCeV1ANu25O/3ZuOwh/hHwLre1f7n4h43+fCEeZbKAEmOG0UICf8o1PzNBmz +x7xDrZfUXmfpZOkW70saW3pf5Z+dTA02n6zft6bcPqLTmoUjlzUyHpX4acjTJxapjuerxzggEHbE +xYiSISfIGLMSSnzD5V8veYfROq2omeCojkVmRwD1XkpBI9sjwsuJKYvyq8hRuHOns9OivNMR9wYY +aK8Txrzjoy6X5n1GyReMSTF4VAoBHJ8aAU8FYDDSQUm9LGk270saW3eljS2yDyt5Pn1lpbiTlHYW +wLSyAfE7AV4J7+Phk4Y7a55K97J7HRNIbQNCufNM8tsLaSWOO1lV6yqzVRaAFwooPoyVbC2FmzSd +eYLPSvMvmm28sCMomm288kjrRVV3jT01WnZagn7sjMsobC1PznG//KrPJ7SVEkN7aRU9vQf9XHBh ++qf9QuTDp73vfl9y+h2LHqYE/VnHvQo/FWsVX2x/0mL/AF1/Xirw7/nMU/8AKI/9vH/sVxVlH/OM +X/KE2nyuv+ojFXtGKuxV2KuxVD6l/wAc66/4wyf8ROKvnX/nDg/8pf8A9u7/ALGsVfQ0n22+ZxVb +irROKvO/z6t2l/Le9cdIJreRvkZQn63zbdiSrUjzB+513agvCfg8c/OlPX1DRb8brdWCMD471rXv +9rNviHMdxdZPvec+lltMHeljSuEJYgAVJ2AHUnGlt6/+XlvrllpLRamWWPkDaQyGrolNwfAeAy0Q +NOPOYvZlyz++AxQJLxce+R4U8Tf1j3x4U8TyX82rdTr1tcKN5bcBj4lHYfqIwGLZA2GEelgpm70s +aVMfL+inVtXt7GpVJGrIw6hFHJvwG2ERssZSoW9u0/Trazto7e2jEUEQoiKOgy4mnF5sc1Ly3fec +7T15lOmrbzMNNLhi7xHZ2ljJHEsVBXvlMi5Edk98o+SZNMv7nVtRuBeavdVVplHFAm3RdvibiCfw +ymUmwJd+ciRx6R5Y0yIcBLqKGNB0AjBjG3tzGOA0Mku6BciA+keb2Py+nDRLJelIV/VnJO/R+KtE +4qqW3+9MX+uv68VeGf8AOY5/5RD/ALeP/YrirKf+cYP+UHs/ldf9ROKvacVdirsVdiqH1L/jnXX/ +ABhk/wCInFXzn/zhsa/4v/7d3/Y1ir6Ik/vG+ZxVYTirROKse/MDS21XyVrVig5SS2kjRL4yRj1E +H0sozL0OXgzQl5uPq4ceKQ8nz95rUar+WvlnVVHJ7HlYTkdVoOC1/wCRI+/OolHhzSHfu8/E3AFg +HpZOkW70saW2Q+RdI+u6/E7LWK1BmfwqNk/4Yg4QN2GQ7PUjGy9MutxKdzcY0Ftv1jjwp4m/XODh +XiYN+ZdnNMlneBaxx8o5G8C1Cv6jkZxbsMmB+lldN9ovTtMW7mYSSCC2iXncTkEhEqB0HUkkADxw +0gl6d5H0Kwt7Q3tvatGJtoZ5jWZ4/wCYgbIGPRR95xumqVllb2ZmgkiWRoTIpUSx0DrUUqpIIqMr +Mkxi8dt/N2uWNrqNlHO7Pdy8zdFm9VGVhUqQf2gKHJcNtrOPKf5jXWoT6TosVmZL2ThFc3cr1BWN +ayScQKliqk7nrlGTHQJZxK38yJP0j+ZPl3Rk3XToXuZafsvKaAH6Yl+/KMkuDSzl/O2c3BG8sR3P +crWL0bWGKlPTRVp8hTOYdyqE4q1iqpa/70xf66/rxV4X/wA5kmn+EP8At4/9iuKsq/5xf/5Qaz+V +1/1E4q9qxV2KuxV2KofUv+Oddf8AGGT/AIicVfOX/OGhr/jD/t3f9jWKvoiT+8b5n9eKrCcVaxVr +FXglj5fS31Pzd+XkwCRysb/Rq9ArUZKH/J/djbwbOtObjx483wk84cfBOWP4h5VNaSwzPDKhSWJi +kiHqGU0IPyOZoDQzn8ufKEdyDrF7GHiRitpGwqCw+05H+Sdh7/LKsk62WmepptrAztBAkTSGshRQ +pYjxoN8gJsDFa8HtkxJgYqTW/tkxJjwrDb+2HjRwu+r+2PGjhQ+oaTFf2M1pKPgmUrXwPY/Qd8TJ +kBReNvaSLO0HHlIrFOK71INNsNORbPfLn5fSPZ28mokxxyP61xaU+JuO0as1dhQkkdd/urlMMbeg +xW4UBVACjYAdAMpMkiKjo2opqE9/GkfFbG4NtyrXkVUFjSm3xEjIz2pnEPDNQsri3vJUnieJ+bHi +6lT18DmWKIYln/5M6GG1C81uccbeyjMaO32eb7sa/wCSoof9bMTWToCI5luwx3tf+Wsb+avzA1Xz +PIpME8/p2tf98Q0Ar81VPpBzX9sT4Iwwjpuff+LdnoIXc/g94JzQuxaxVrFVS1/3qh/11/Xirwv/ +AJzLNP8AB/8A28f+xXFWVf8AOLv/ACgtn8rr/qJxV7XirsVdirsVQ+pf8c66/wCMMn/ETir5w/5w +xNf8Yf8Abt/7GsVfRMp/eN8z+vFVmKtYq0Tiry/85NHurJ9N886YnK90Rwl8i7GS0c0IPspYj5MT +2zedj5wbwy5T5e/8fc6rtLCaGQc48/cwT8xNDtb2G383aT+80/UVVrjj+zIRQMQOlejeDZttNMgn +HLmHXZRY4hyLN/KclldeW7F7NQsSRLG0Y6q6Cjg+9d/frlGWxI2mIsJi8HtgEkGKg1v7ZMSYGKm1 +v7ZLiY8Kw2/th40cLvq/th414Wxb+2DjTwrks41bkqAMepAFciZpEVdIPbImTMRVJLaRoJFiPCRl +IRvBiNjkONkIqHlnQf0Vpcds/F7kkyXUy1PqSsas5LbmuRy5eI2zjCkdqvl7T9ZsWsr+MvAxDfCS +rAjoQRlUcpibDZwAsH/NHUrXy55Yt/J2gII7/V/3KRKaskLH967E1Px/ZqffwzI03qkcs/pjuso8 +oR5ll35WeWItE0CIKu5UKrHYkdWb/ZNvnN6nOcuQzPV3eLGIRER0ZrlLNrFWsVVLU/6VD/rr+sYq +8K/5zONP8H/9vL/sVxVlf/OLn/KCWXyuv+onFXtmKuxV2KuxVD6l/wAc66/4wyf8ROKvm/8A5wvN +f8Y/9u3/ALGsVfRMv94/zP68VWYq0TirROKqVxbwXNvLb3CCWCZGjljYVVkYUZSPAg4YyINjmEEA +ii8TggXyJ5in8o6zWbylrRZtJuZd1jLmjRO3brQnxo23I51UMv5nGMkf72H1frefyY/AnwH6Jck+ +8q+UdS0C/v4VmSXRZiJLUEn1A/TcUp9nYnvQZDNqI5AD/EscRiT3MieD2ykSZGKi1v7ZISYmKmbf +2yXEx4Vpt/bDxo4Wvq/th414Vwt/bBxrwr1t/bImTLhVVg9siZMhFWSD2yBkzEURHBlZkzEUD5m8 +w6Z5Z0WfVdRcJFEPgT9qRz9lEHdmPT+lclhxSyy4QmRERbyvyDoWrebvMs3mrWVImuv95ojusFv+ +yq18R/X9rIdqaqIHgY/pjz8z+Pxs5OiwH65czye7RRpFGsaCiIAqj2GaR2DeKtYq0Tiqpa/71Q/6 +6/rGKvCv+c0DT/B3/by/7FcVZZ/zi1/ygdl8rr/qJOKvbMVdirsVdiqH1L/jnXX/ABhk/wCInFXz +b/zhaa/4x/7dv/Y1ir6Kl/vX/wBY/rxVYTirROKtYq1iqS+bfKuleaNFl0rUkrG/xRSr9uKQA8ZE +PiK/SNsyNNqZ4ZicebVnwxyR4ZPLtA8z6v5K1NfKfnNq23TS9YNTG0fRQzHt2qfs9DtQ50Uow1Mf +Exc+sXSerDLgny6F6WEjkQSRsHRhVWG4IOa+65uRVrGt/bJCTExUzb+2S40cK02/th40cLvq/tjx +rwti39sHGvCvW39sBknhVFt/bImTIRVkgyBkzEUs8z+aND8saa9/qk4jRdo4xu7tSoRF7k/50G+W +YcE8sqiicxEbvHba18wfmV5gj1TVI2i0mJq6bph+yF/35J0rWn0/6uXazWR08fCxfX/FL9A/H2st +PpzkPHPl0D3LRdIt9Ls1giA50/eN4nOddqj8VaxVonFWsVVLX/eqH/XX9YxV4T/zmkaf4O/7eX/Y +rirLf+cWP+UCsfldf9RJxV7birsVdirsVQ+pf8c66/4wyf8AETir5r/5wrP/ACmX/bt/7G8VfRcp +/ev/AKx/XiqwnFWsVaxVonFWicVSjzN5Y0bzHpj6fqsAmhbdG6OjdmRuoOXYM88UuKBoteXFGcak +LDyaW18//lnKRAra95VB+Fd/VhTwHXjTwoV+Wb/HqsGq2n6Mn2H8fi3T5NNkw7x9UPtZdon5kaF5 +gtQdHkifUOradcubeU7VIG0lT8qj3yM9FLGfV9PeN1jqBIbc0ovPN/mHTtfN3qWnTQad6foraq/K +PlUHmJQvB2r4dszoaLHPHwwkDLnf7GiWeUZWRs0v5rD1G5aXWOp4kTUNO1RwOH+SDX1fZ+1H5zyT +KX8zNAW09WOKZ7kqD9X40HIjoXO1B40ygdl5eKjVd7YdXCltt+Z2iNZ+rc28sVzyobaP958NftBz +6a4y7KycVAiu9A1ca3Tq186eVJ0VhfpGWA+CQFCCexqKZiz0OYfwt0c+M9U4kvLKK3+svMiwcfU9 +UsOPAivKvhTvmLwSJqt27iAeceafzt0y3kbTvK8J1rVGqFaOpgT3Lj7QH+Tt/lDM/HoOEceU8EWk +5jI1AWWN6D5A8x+atVXWfNE5vLgbxwt/cQqTXiF+z/D/AFsxNV2qBHw8A4Y9/U/j8U5eDRb8U9z3 +PZ9H0Wz0u3EcCgvT4pO5zSOwR+KtYq0TirWKtYqqWn+9cP8AxkX9YxV4R/zmof8AlDf+3l/2KYqy +7/nFf/lAbH5XX/UUcVe3Yq7FXYq7FUPqX/HOuv8AjDJ/xE4q+af+cKDX/GX/AG7f+xvFX0ZMf3r/ +AOsf14qsxVrFWicVaJxVrFWsVWOqOpR1DIdipFQcVYD5s/Jryrrbtc28f1C+J5etD8NW8SB/TM/T +dp5sOwNx7juHFzaLHk3I37wxGbyz+b/loFdP1EarYqCPRux6nw+HI1b/AIYZsodp6fJ/eQMT3x/H +63BloMsfplY80pn806zFRdb8jxSsPtyWTNDX3ogkJ/4LM7HqsR+jNX9b9rjS0+QfVD5fsQ0nnDy1 +SjeUNRifqVV5DT2+LMgZpf6rA/JqOL+hL7Vv+LtFKj6r5Mv523qZZpYxX3KqwwS1BHPNAfJIwXyh +L7VWDXfPVwQNG8t2OlD9m5lBnlU+IYk/imYuXXacfVklPyH4/S5ENJlPKIijIfy085eZZFl8x6pc +3sdQfQB9OAH2UUT7gpzAn2yI7YoCPmdz+Pm5cOz7+s29C8tfljoejxBREgpQlEHUj+Zjuf8APfNR +m1E8puZJLn48cYCoimYRRRQoI4kCIOigUylmuxVrFWicVaxVrFWsVVLQ/wClw/8AGRf1jFXg/wDz +muaf4N/7eX/YpirL/wDnFX/yX9j8rv8A6ijir2/FXYq7FXYqh9S/4511/wAYZP8AiJxV80f84TGv ++M/+3b/2N4q+jZv71/8AWP68VU8VaJxVonFWsVaxVonFWicVaxVrFVCa0tJa+pCjk9SVBP34qhH8 +v6M27WiVPhUfqOKrV8vaMhqLVK/Sf1nFUTHY2Ue8cCKfHiK/fiqsTirWKtYq1irROKtYq1irWKtE +4qq2n+9cH/GRf+JDFXg3/ObJp/gz/t5f9imKsv8A+cVP/JfWHyu/+oo4q9wxV2KuxV2KofUv+Odd +f8YZP+InFXzN/wA4SH/lM/8At2f9jeKvo6b++f8A1j+vFVMnFWicVaxVrFWicVaJxVrFWsVaJxVr +FWsVaxVonFWsVaxVrFWicVaxVrFWsVaJxVrFVWz/AN64P+Mi/wDEhirwX/nNs/8AKGf9vP8A7FMV +Zh/zil/5L2w+V3/1FHFXuOKuxV2KuxVD6l/xzrr/AIwyf8ROKvmX/nCI/wDKaf8Abs/7G8VfR05/ +fP8A6x/XiqmTirWKtYq0TirROKtYq1irROKtYq1irWKtE4q1irWKtYq0TirWKtYq1irROKtYq1iq +rZ/72Qf8ZF/4kMVeC/8AObp/5Qv/ALef/YpirMf+cUP/ACXlh8rv/qKOKvccVdirsVdiqH1L/jnX +X/GGT/iJxV8x/wDOD5r/AI0/7dn/AGN4q+j5z++k/wBY/rxVTxVrFWicVaJxVrFWsVaJxVrFWsVa +xVonFWsVaxVrFWicVaxVrFWsVaJxVrFWsVaxVVsz/pkH/GRP+JDFXgn/ADnAaf4L/wC3n/2KYqzL +/nE//wAl3p/yu/8AqKOKvcsVdirsVdiqH1L/AI511/xhk/4icVfMH/OEEipP50t3PGcjTmEZ2aiG +6DbexYVxV9I3FRNJX+Y/rxVTxVonFWicVaxVrFWicVaxVrFWsVaJxVrFWsVaxVonFWsVaxVrFWic +VaxVrFWsVaJxVWsQTeQACp5qfuNcVeAf85wzRmXyZEGBkRdSdk7hWNqFP08TirNv+cTww/LrT6gg +8bs7+BuiRir3LFXYq7FXYqtkjWSNo2+y4Kt8iKYq+MdZvdb/ACI/PG41qK2afy9qzSGWBaKsttM4 +eWNK7B4ZKMntTsTir6p8p+ePJPnfT47/AMv6pDeB1q8KOFuIz3WWE/GhHuPltiqefo6L+ZvwxV36 +Ni/mb8MVa/RkX87fhirv0ZF/O34Yq79Fw/zt+GKtfoqH+dvwxV36Kh/nb8P6Yq1+iYf52/DFXfom +H+dvwxV36Ig/nb8P6Yq1+h4P52/D+mKu/Q8H87fh/TFXfoaD+dvw/pirX6Fg/nb8P6Yq79Cwf78f +8P6Yq1+hLf8A34/4f0xV36Dt/wDfj/h/TFWv0Hb/AO/H/D+mKu/QVv8A78f8P6Yq79BW/wDvx/w/ +pirX6Bt/9+P+H9MVd+gLb/fj/h/TFUm8z+cPInkSwl1DXtThtOKkpFI4a4k8FihX43J9h89sVfEX +5i+dte/OD8yFuLW3aOOXjaaTZE19G2QluUhG1TVnc/R0AxV9j/k95cj0LQraxgH7m0t0iDEULE0+ +I+7cKn54q9CxV2KuxV2KuxVif5jflv5f89aHJpmqxKXpWCelWRx0I7/dir5H83/84t+bdJvXSwmW +WAk+mZgxXj7SRhq/SgxVjv8A0L55+8bX/gp/+qWKu/6F88/eNr/wU/8A1SxV3/Qvnn7xtf8Agp/+ +qWKu/wChfPP3ja/8FP8A9UsVd/0L55+8bX/gp/8Aqlirv+hfPP3ja/8ABT/9UsVd/wBC+efvG1/4 +Kf8A6pYq7/oXzz942v8AwU//AFSxV3/Qvnn7xtf+Cn/6pYq7/oXzz942v/BT/wDVLFXf9C+efvG1 +/wCCn/6pYq7/AKF88/eNr/wU/wD1SxV3/Qvnn7xtf+Cn/wCqWKu/6F88/eNr/wAFP/1SxV3/AEL5 +5+8bX/gp/wDqlirv+hfPP3ja/wDBT/8AVLFXf9C+efvG1/4Kf/qlirv+hfPP3ja/8FP/ANUsVd/0 +L55+8bX/AIKf/qlirv8AoXzz942v/BT/APVLFXf9C+efvG1/4Kf/AKpYq7/oXzz942v/AAU//VLF +UXpn/OOfnK4uAl3PBBF3eMSyN/wLLH+vFXvX5Wfknpnlwf6LCZ72QD17qWhcjrRiBRE/yR174q93 +02wjsbVYU3PV28WPfFUVirsVdirsVdirsVWyRRyqUkQOh6qwBH44qhTo2lk/7zJ92Ku/Q2l/8syf +jirv0Npf/LMn44q79DaX/wAsyfjirv0Npf8AyzJ+OKu/Q2l/8syfjirv0Npf/LMn44q79DaX/wAs +yfjirv0Npf8AyzJ+OKu/Q2l/8syfjirv0Npf/LMn44q79DaX/wAsyfjirv0Npf8AyzJ+OKu/Q2l/ +8syfjirv0Npf/LMn44q79DaX/wAsyfjirv0Npf8AyzJ+OKu/Q2l/8syfjirv0Npf/LMn44q79DaX +/wAsyfjirv0Npf8AyzJ+OKu/Q2l/8syfjirho2lg/wC8yfdiqKjijiUJGgRB0VQAPwxVdirsVdir +/9k= + + + + + + +image/svg+xml + + + + +end='w' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/go-down_tango.svg b/staging-v0.3.5/design/icons/go-down_tango.svg new file mode 100644 index 0000000..18dadc4 --- /dev/null +++ b/staging-v0.3.5/design/icons/go-down_tango.svg @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Down + + + go + lower + down + arrow + pointer + > + + + + + Andreas Nilsson + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/go-up_tango.svg b/staging-v0.3.5/design/icons/go-up_tango.svg new file mode 100644 index 0000000..0e3d01d --- /dev/null +++ b/staging-v0.3.5/design/icons/go-up_tango.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Go Up + + + go + higher + up + arrow + pointer + > + + + + + Andreas Nilsson + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/gtk-ok_nuvola.svg b/staging-v0.3.5/design/icons/gtk-ok_nuvola.svg new file mode 100644 index 0000000..b0b07ea --- /dev/null +++ b/staging-v0.3.5/design/icons/gtk-ok_nuvola.svg @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + begin='ïğż' id='W5M0MpCehiHzreSzNTczkc9d' + + + + +Adobe PDF library 5.00 + + + + + +2003-12-22T22:34:35+02:00 + +2004-04-17T21:25:50Z + +Adobe Illustrator 10.0 + +2004-01-19T17:51:02+01:00 + + + + +JPEG + +256 + +256 + +/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 +FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F +XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX +Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY +q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq +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 + + + + + + +uuid:4b4d592f-95b8-4bcd-a892-74a536c5e52f + + + +image/svg+xml + + + +test.ai + + + + + + end='w' + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/gtk-stop_nuvola.svg b/staging-v0.3.5/design/icons/gtk-stop_nuvola.svg new file mode 100644 index 0000000..e7d9883 --- /dev/null +++ b/staging-v0.3.5/design/icons/gtk-stop_nuvola.svg @@ -0,0 +1,669 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adobe PDF library 6.66 + + + + + + + + + + 2004-03-30T11:24:24+02:00 + + 2005-02-15T10:20:28Z + + Illustrator + + 2004-07-28T16:45:02+02:00 + + + + + JPEG + + 256 + + 256 + + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 +FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F +XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX +Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY +q7FXYq7FXYqxfzx+ZXlLyXaiXWrulxIOUFhDR7iQeKpUUH+UxA98qyZow5udouzc2pNQG3f0eG+Y +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 +7FXYq7FXYq7FX//Z + + + + + + + + + + + + uuid:74d5a603-9ab8-427f-9735-c474bf2487a1 + + + + + + image/svg+xml + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/gtk-zoom-in_nuvola.svg b/staging-v0.3.5/design/icons/gtk-zoom-in_nuvola.svg new file mode 100644 index 0000000..1737355 --- /dev/null +++ b/staging-v0.3.5/design/icons/gtk-zoom-in_nuvola.svg @@ -0,0 +1,433 @@ + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/staging-v0.3.5/design/icons/help_browser.svg b/staging-v0.3.5/design/icons/help_browser.svg new file mode 100644 index 0000000..669dda3 --- /dev/null +++ b/staging-v0.3.5/design/icons/help_browser.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Help Browser + 2005-11-06 + + + Tuomas Kuosmanen + + + + + help + browser + documentation + docs + man + info + + + + + + Jakub Steiner, Andreas Nilsson + + + http://tigert.com + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/help_browser_disable.svg b/staging-v0.3.5/design/icons/help_browser_disable.svg new file mode 100644 index 0000000..74299ba --- /dev/null +++ b/staging-v0.3.5/design/icons/help_browser_disable.svg @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/inaccessible_tango_emblem-unreadable.svg b/staging-v0.3.5/design/icons/inaccessible_tango_emblem-unreadable.svg new file mode 100644 index 0000000..82a4a4f --- /dev/null +++ b/staging-v0.3.5/design/icons/inaccessible_tango_emblem-unreadable.svg @@ -0,0 +1,357 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Unreadable + + + emblem + access + denied + unreadable + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/locked_tango-emblem-readonly.svg b/staging-v0.3.5/design/icons/locked_tango-emblem-readonly.svg new file mode 100644 index 0000000..10cdd97 --- /dev/null +++ b/staging-v0.3.5/design/icons/locked_tango-emblem-readonly.svg @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + http://jimmac.musichall.cz + + Read Only Emblem + + + emblem + read-only + nowrite + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/multimedia-dell-dj-pocket_tango.svg b/staging-v0.3.5/design/icons/multimedia-dell-dj-pocket_tango.svg new file mode 100644 index 0000000..0e25751 --- /dev/null +++ b/staging-v0.3.5/design/icons/multimedia-dell-dj-pocket_tango.svg @@ -0,0 +1,4405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Portable Media - iPod Mini Silver + October 2005 + + + Ryan Collier (pseudo) + + + + + http://www.tango-project.org + + + http://www.pseudocode.org + + + media + device + ipod + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + R + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/multimedia-player-ipod-mini-blue_tango.svg b/staging-v0.3.5/design/icons/multimedia-player-ipod-mini-blue_tango.svg new file mode 100644 index 0000000..0c35cf8 --- /dev/null +++ b/staging-v0.3.5/design/icons/multimedia-player-ipod-mini-blue_tango.svg @@ -0,0 +1,4126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Portable Media - iPod Mini Blue + October 2005 + + + Ryan Collier (pseudo) + + + http://www.pseudocode.org + + + media + device + ipod + + + + + + http://www.tango-project.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + R + + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/multimedia-player-motorola-rokr_tango.svg b/staging-v0.3.5/design/icons/multimedia-player-motorola-rokr_tango.svg new file mode 100644 index 0000000..207e27f --- /dev/null +++ b/staging-v0.3.5/design/icons/multimedia-player-motorola-rokr_tango.svg @@ -0,0 +1,1025 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Portable Media - Motorola ROKR + October 2005 + + + Ryan Collier (pseudo) + + + + + http://www.tango-project.org + + + http://www.pseudocode.org + + + media + device + ipod + phone + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + R + + + + + + + + + + diff --git a/staging-v0.3.5/design/icons/network-transmit-receive_design.svg b/staging-v0.3.5/design/icons/network-transmit-receive_design.svg new file mode 100644 index 0000000..dd48cc4 --- /dev/null +++ b/staging-v0.3.5/design/icons/network-transmit-receive_design.svg @@ -0,0 +1,1041 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +