* 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
* 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
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
* 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
* 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
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
- 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
* 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
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
libretroshare/src/retroshare/
All the relevant headers have been modified to reflect that change.
This allows installation of libretroshare on a system, headers will
be put in $WHEREVER/retroshare/ and we keep the ability to compile
against them, be it on the system or in the SVN tree.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3342 b45a01b8-16f6-495d-af2f-9b41ad6348cc
Enabled bitdht in RetroShare.pro and retroshare-nogui.pro too
Fixed link of RetroShare on Windows
-> added ws2_32 after bitdht, maybe someone has a better solution
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3335 b45a01b8-16f6-495d-af2f-9b41ad6348cc
Every call to RsInit::LoadCertificates() now creates a file:
~/.retroshare/xxxxxxxxxxxxxxxxxxxx/lock
which is then bound to a system lock (fcntl F_SETLK).
If the lock request fails, it means another instance is already
running with the same profile.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3241 b45a01b8-16f6-495d-af2f-9b41ad6348cc