Commit Graph

68 Commits

Author SHA1 Message Date
thunder2
8b794a8f8f retroshare-nogui
- fixed path to libssh
- link static ssh on Windows
- fixed compiler warning on Windows

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6015 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-18 19:48:31 +00:00
defnax
46054187fc fixed retroshare no-gui project file for windows compile
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6013 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-18 10:52:34 +00:00
drbob
ab01e46f44 made port non-optional for -S <port> ....
This is because the gnu getopt extension for optional arguments is very confusing:  -S7022 is accepted but -S 7022 is not.

Switching to non-optional will save the confusion.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6006 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-17 20:34:38 +00:00
drbob
766d156315 Added SystemExternalAccess Function to RPC.
This provides ExternalPort + DHTKey to Client. To be used to find and connect - even if Dynamic IP address changes :)



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6004 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-17 19:15:04 +00:00
drbob
d3787cb324 Make rs-nogui+SSH compile against the trunk.
* converted to new flags format for File Operations.
 * converted from PUBLIC to VISIBLE lobbies. NB: This required name changes to protobuf definitions.
 * converted DataRates to new function.
 * directory sharing shifted to using OTHERS flags (text menus) - No support for group Flags yet.
 * Added == operator to Flags Type.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6000 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-17 01:24:16 +00:00
thunder2
f764a82408 Fixed compile of gxs on Windows.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5999 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-16 22:39:58 +00:00
drbob
069b72e0b2 Merged branch v0.5-gxs-b1 into trunk (from -r 5351 -> 5995)
This brings a huge amount of goodness into the trunk,
but there is still a big chunk todo before it can be released.

 * GXS Backend.
 * GXS Services:
	- Identities.
	- Circles
	- Photos
	- Wiki
	- GxsForums
	- Posted.
 * SSH no-gui server.

See branch commits for more info.

To switch on GXS stuff, enable CONFIG += gxs
in both libretroshare.pro and retroshare-gui.pro



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5996 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-12-16 19:17:11 +00:00
drbob
fde1e8d66d tweaked cyrils mods to be compatible with old ssh location, and use pregenerated proto.cc files.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5712 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-10-22 18:42:54 +00:00
thunder2
e92ef1a1be Fixed compile error on Windows.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5710 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-10-22 13:48:57 +00:00
csoler
3d4869e226 forgot to commit this file last time
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5708 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-10-21 19:59:53 +00:00
thunder2
56635e4ce4 Added more PRE_TARGETDEPS for Windows compile.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5700 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-10-21 11:51:38 +00:00
thunder2
02f8d27b6e Fixed crash with uninitialized pointer RsSshd::mSession.
Fixed some compile errors on Windows.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5693 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-10-19 13:22:51 +00:00
defnax
92454adbe7 added the required include dirs for win
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5647 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-10-08 15:59:22 +00:00
csoler
a57d627074 added qt file to handle protobuf targets
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5636 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-10-04 19:11:21 +00:00
defnax
b2e88b2ed2 update version and changelog
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5606 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-26 12:26:27 +00:00
drbob
51362f7bac restored back to svn 5549, before chris changed random stuff... how / why?
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5581 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-21 23:15:26 +00:00
chrisparker126
eaa7342165 emergency commit, computer acting up bad!
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5565 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-17 22:08:23 +00:00
csoler
20747426ec added missing libs to compile on arch linux (Patch by AC)
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5558 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-17 18:42:31 +00:00
drbob
b52f8dd2b1 disabled Quit / Exit RPC command - it is not functioning correctly.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5531 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-09 16:10:33 +00:00
csoler
24a3fb58d4 Improved plugin system:
- the user is asked at start wether to load or deny unregistered plugins, but can make it mind later in config->plugins
- added API and SVN numbers into required external plugin symbols
- user-defined plugin rules are dropped when a plugin changes (hash changes) or when the main executable changes.
- added new status flags (Plugin denied, missing API/SVN numbers)
- modified saveList()/loadList() to allow saving a list of rejected plugins as well.
- added methods in notifyBase and inherited classes to ask for plugin confirmation.

- adapted VOIP plugin to follow these new rules (API+SVN numbers). Other plugins should be adapted as well by addign the 
 missing symbols (RETROSHARE_PLUGIN_api and RETROSHARE_PLUGIN_revision).



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5529 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-09 13:59:21 +00:00
drbob
a9f95289d0 Added more RPC functionality:
* System: Quit & shutdown.
 * Search: New Search, List Searches, Close Search, Search Results.
 * Files: TranferLists, ControlDownloads (Start, Stop, Pause, etc).

Changed the way NotifyTxt records search results. 
 * Must register searchId for results to be saved.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5528 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-09 11:48:25 +00:00
drbob
84074fdca1 * Adding Chat RPC support into retroshare-nogui. ( About 90% there, and 40% tested. )
- RPC commands are outlined in the proto file.
	- You can: get listing, send msg, register for recv events, change nickname and join/create lobbiey
	- updated chat & core generated files.

 * Added RpcUniqueId(chan_id, req_id) for identifying requests.
 	- Modified Responses Queues to use new datatype.

 * Fixed reset to occur after the connection has died.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5508 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-03 19:18:59 +00:00
drbob
9c2f7f39e7 Added Multiple Channels and Event support to RPC system.
* added chan_id parameter to many RPC calls, this allows RPC to support multiple SSH clients.
     - the combination of (chan_id, req_id) rather than req_id, should be unique now  
     		-> TODO inside rpcserver queued requests.
 * Modified SSH server to match the new API. Multiple client support has not been added here yet.
 * Modified Menu System to match these changes too.
 * Added an Registration Framework to RpcQueueService, to enable easy event support.
 
This code has not been throughly tested yet.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5500 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-09-01 19:35:23 +00:00
drbob
c8350ad011 Got the first RPC commands working now and tested with python library.
* Switched from BASE => CORE in proto files.
 * finished first RPC call to list peers.
 * return "NO_IMPL_YET" for other peer fns (Not Implemented Yet)
 * Added SystemStatus RPC call too.
 * Disable Verbose SSH logging - so we can see debug better.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5469 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-25 11:47:20 +00:00
drbob
b67f66faa0 Put the first rpc service into action. (untested though).
* Added functions to split up MsgId into Extension / Service / SubMsg.
 * Updated the generated code.
 * Switched on compilation too.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5461 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-23 15:20:43 +00:00
drbob
ccb43660a8 First bits of the RPC Protobuf Service. Doesn't compile yet - this is just a check-point checkin.
* Added generated protobuf code in proto/gencc
 * Added rpcprotopeers.h : Interface for getting/modifying peer information.
 * Added Stuff to .pro file. (disabled at the moment)
 * tweaked update times for SSH Menu, as they were too slow.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5460 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-23 14:04:01 +00:00
drbob
9a24b16226 Adding Ralf's patch to add Shared Directory control to SSH Menu Interface.
* Adds Shared Dir SubMenu with Add, Toggle Flags, Remove Shared Dir Commands.

I tweaked it a bit:
 * Changes the Add Command to not use std::stringstream (as Windows don't like it!)
 * Added Check that the directory exists.
 * Changed Virtual Folder name to the top directory from the path.

Still to do on the SubMenu;
 * Listing should be updated if a Share is Added/Removed.
 * Descriptions are too long, should be changed to short descriptions: Add Share, Toggle Browsable, etc.
 





git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5459 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-23 13:52:37 +00:00
drbob
bb10b6b400 Added first version of RPC system for external control of retroshare-nogui.
The protocol message format is as follows: 
	[HEADER: 16 bytes: 4 x Network Order uint32_t][ VARIABLE LENGTH BODY ] 

	[ MAGIC_CODE ] [ MSG_ID ] [ REQ_ID ] [ BODY_SIZE ] [ ........ BODY ......... ]
	MagicCode = 0x137f0001 ... this will be incremented for new versions of the protocol.
 	MsgID = Corresponds to the format of the Body.
	ReqID = Generated by Requester, Returned in Response, make sure its unique. (undefined behaviour for duplicates)
        BodySize = Byte Length of Body.

	The Body will consist of a protobuf encoded message.

For the moment, the RPC server just ECHOs the request back to the sender - for testing purposes.

Usage:
 * Create SSH connection to retroshare-nogui.
 * Create Request Message(s), and send over SSH channel - You can send as meny requests as you want. 
 * They will processed, and responses sent back (potentially in an arbitary order).

Specific Changes here:
 * Modified rssshd to support arbitary recv/send applications. (interface is RpcComms).
 * Added rpc directory, with server, setup and echo service.
 * Modified Menu System to use the new interface to rssshd 
 * Wrote new matching interface for Terminal Usage.
	- NOTE: Strange BUG in Terminal version.... causes stderr to disappear. TODO.
 * Added -C commandline option to switch on RPC system.

This is the first version - so I expect there will be bugs. Please report for a prompt fix!



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5444 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-20 14:59:41 +00:00
csoler
34ffb229e4 fixed compilation with libssh4
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5436 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-17 14:22:53 +00:00
csoler
2c4a1bf6e4 compatibility with libssh4
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5433 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-16 15:24:16 +00:00
drbob
8f2ff3eaf5 Changes to bring the SSH Menu system online!
* Commandline Options added (./retroshare-nogui -h for help).
 * Added Password Hash system.
 * Shifted Menu output to std::string buffers.
 * Built interface to SSH server.
 * changed menus to lowercase.
 * Fixed SSH server restart issue.
 * Updates Output regularly now.
	


git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5398 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-09 13:45:05 +00:00
drbob
fa65173171 switched output from std::cerr to std::cout....
now you can run ./retroshare-nogui 2> /dev/null
  to get a usable terminal rs console.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5391 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-08 09:23:26 +00:00
drbob
db35ae95af Added Basics of Menu System to retroshare-nogui.
* Menu System basic structure complete.
 * Added functions to NotifyTxt to handle search results.
 * Running from std::cin at the moment.
 * Functional Commands:
	- List Friends, Network.
	- Show Transfers, Cancel Transfers.
	- Basic Search, and Download.
 * Not Connected to SSH server at this point, TODO.
 * Lots of Other Commands to add (e.g. import/add/remove friends, forums, etc)
 * Enable via option in retroshare-nogui.pro, instructions at bottom of file.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5390 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-07 23:55:43 +00:00
drbob
b8729de06a Added SSHv2 connections to retroshare-nogui.
* Using libssh in a seperate thread.
 * Binds to fixed port, and accepts connections from standard SSH clients.
 * Only an Echo Server at the moment: Interface to be decided yet.
 * Only accepts 1 connection, 2nd connection hangs at the moment.
 * A long way to go before it will be useful!



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-gxs-b1@5380 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-08-05 17:08:29 +00:00
csoler
7b6820a6e1 removed gpgme from link line
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5301 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-07-15 16:17:56 +00:00
thunder2
703e5def72 Removed usages of gpg.h and cleaned pro-files for Windows.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5296 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-07-14 00:02:40 +00:00
csoler
fc8dfcf65b Merged branch v0.5-OpenPGP into trunk:
User-level changes:
==================
- libgpgme is not used anymore; it is replaced by a built-in piece of code called OpenPGP-SDK 
  (http://openpgp.nominet.org.uk/cgi-bin/trac.cgi) that was improved to be used by RetroShare
  for handling PGP keys.

- the gnupg keyring is not used anymore. Now, RetroShare has it's own gpg keyring, shared by all instances.
  On linux it's located in ~/.retroshare/pgp/. A lock system prevents multiple locations to read/write keyrings
  simultaneously.

- the trust database from gnupg is not documented, so RetroShare cannot import it. This comes from the fact that
  the GPG standard (RFC4880) asks explicitly not to export trust information. So RetroShare has it's own 
  trust DB shared by locations. This means you need to re-trust people. Sorry for that!

- at start, if no keyring is found, RS will propose to copy the gnupg keyring to use your existing keys. Clicking on 
  "OK" will do the copy, and you should find back all existing locations, except for DSA keys.

- locations for which the suitable keypair is not in the keyring will not be displayed in the login window
- locations for which the suitable keypair is not a RSA/RSA key will not be displayed. RetroShare does not
  support DSA/Elgamal keypairs yet.

- a key import/export exchange function has been added in the certificate creation window (you go there from the login
  window by clicking on "manage keys/locations". This allows to easily create a new location with the same pgp key on
  another computer. To obtain a suitable keypair using gnupg, you need to concatenate the encrypted private key and the 
  public key into an ascii file. This can be done using:
  		gpg -a --export-secret-keys [your ID] > mykey.asc
		gpg -a --export [your ID] >> mykey.asc

- importing a key with subkeys in not yet possible. Please remove subkeys before importing.

- The code has been tested for a reasonnable amount of time, but it's not possible to prevent some new bugs 
  to appear. Please report them asap supplying: call-stacks if possible, and terminal output. In particular,
  openpgp has some assert()'s that should not be triggered unless RetroShare is calling it in an improper way.

Internal changes
================
- a specific component, PGPHandler, takes care of the interface between openpgp-sdk and RetroShare
  openpgp-sdk is c-code, with it's own memory management, which has been kept well separated from 
  RetroShare.

- GPG Ids are now a specific class (not a std::string anymore) for code consistency reasons. As strings are
  still used in many places, this requires a few conversions. In particular, AuthGPG takes strings as
  function params and calls GPGHandler with the proper PGPIdType class. In the future, RetroShare should
  only use PGPIdType. The same will be done for SSL ids.

- signature cleaning is still handled by the Retroshare built-in function, not by openpgp, but we will 
  do this later.

Still to do
===========
- DSA needs subkey handling, since the encryption is performed by a Elgamal subkey. Not sure this will be done.
- GPGIds/SSLIds cleaning (meaning replace strings by appropriate types). Lots of confusion throughout the code in retroshare-gui in particular.
- key removal from keyring. This is a challenge to keep locations synchronised.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5293 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-07-13 21:53:39 +00:00
csoler
efa5460a52 fixed compilation of retroshare-nogui
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-OpenPGP@5262 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-07-01 13:21:05 +00:00
thunder2
1885fb66c4 - Enabled compile on Windows (bzip2 library needed).
- Fixed crash after the second call to RsInit::InitRetroShare when keyring does not exist.
The instance of AuthSSL was created twice and AuthGPG was deleted without stopping the thread. Stopped the AuthGPG thread on exit of RetroShare.
- Added the correct path to the keyring for Windows in RsInit::copyGnuPGKeyrings.
- Changed the detection of the portable version on Windows from the file "gpg.exe" to the file "portable".

git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-OpenPGP@5211 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-06-10 00:29:46 +00:00
thunder2
3b85873313 Added patch from AC
- add missing includes "unistd.h" for compiling with gcc 4.7.0.

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5096 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-04-12 23:29:39 +00:00
csoler
ded4174a13 patch from costa to add a spanish intro server
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5031 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-03-17 15:34:03 +00:00
csoler
b68e660a1c fixed compilation of introserver
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5028 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-03-17 13:18:29 +00:00
thunder2
bd7fe9f53d Fixed path to the libs in Windows build of retroshare-nogui.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4982 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-02-23 11:11:33 +00:00
thunder2
5073913686 Fixed compile on Windows with enabled shadow build of Qt Creator.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4952 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-02-17 11:14:06 +00:00
drbob
9c5e4636c2 * Shortened Date string.
* Fixed Profile directory.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4938 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-02-14 01:06:41 +00:00
drbob
4ab4d60492 Improvements to IntroServer Mode:
* Move Dirs to .retroshare/<sslid>/
 * Automatically make directories.
 * Create 2 files: key & lobby name, cannot make 3rd file: hyperlink from nogui.
 * chmod NEWCERTS directory to 777
 * delete old peers at startup, reload peers from config file.
 * Add Date to Lobby name.

Improvements not done yet:
 - Remove inactive peers - it is tricky to tell the difference between unconnected and old.
 - Cannot make 3rd file: hyperlink from nogui.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4937 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-02-14 00:45:57 +00:00
drbob
4e367d3332 Added missing header files - as requested by theDude.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4920 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-02-11 12:21:48 +00:00
drbob
446db939b2 Added Code to convert retroshare-nogui into an "Introduction Server".
Perhaps the community can use this instead of their existing certificate exchanger.

The way it works:
	- Designed to be coupled up with a WEB Interface to allow new users to interact with each other.
	- Automatically sets up some Chat Lobbies, so that the new users can chat to each other.
	- If you drop a Certificate File into the NEWCERT directory, it is automatically loaded as a friend.
	- These Certificates automatically expire after a fixed period (2 Weeks at the moment).

So the idea is that Users upload their Certificates to the Intro WebServer, then they have two weeks
to test out Retroshare, and use the Intro Server to make some RS Friends.

To enable this Build, edit the .pro file.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4900 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-02-07 17:01:07 +00:00
drbob
4e5e149a95 Patch from Peter - to build Retroshare on FreeBSD.
- Fixup BSD qmake parameters: mainly library locations.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4863 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2012-01-29 14:27:14 +00:00
thunder2
cfed637215 Removed "release" from the win32 build in retroshare-nogui.pro.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4720 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2011-12-10 11:27:52 +00:00