Giter Site home page Giter Site logo

retroshare / retroshare Goto Github PK

View Code? Open in Web Editor NEW
1.7K 94.0 270.0 126.46 MB

RetroShare is a Free and Open Source cross-platform, Friend-2-Friend and secure decentralised communication platform.

Home Page: https://retroshare.cc/

License: Other

QMake 1.70% Batchfile 0.76% Shell 0.54% Makefile 0.34% Python 0.02% NSIS 1.03% XSLT 0.01% C++ 85.97% C 6.56% CSS 0.35% HTML 1.38% Perl 0.05% Java 0.08% Roff 0.35% Dockerfile 0.06% BASIC 0.01% CMake 0.75% Objective-C++ 0.02%

retroshare's Introduction

RetroShare

RetroShare is a decentralized, private, secure, cross-platform, communication toolkit. RetroShare provides file sharing, chat, messages, forums, channels and more.

Table 1. Build Status

GNU/Linux (via Gitlab CI)

pipeline

Windows (via AppVeyor)

RetroShare?svg=true

macOS, (via Travis CI)

RetroShare

libretroshare GNU/Linux, Android (via Gitlab CI)

pipeline

Get the source

Clone this repository, enter the directory and then get the submodules with the following command

git submodule update --init --remote --force libbitdht/ libretroshare/ openpgpsdk/

Compilation

Short of comprehensive and updated documentation on how to build RetroShare (for the many supported platforms it runs on), scripts and recipes are provided in the aim of creating packages for the supported platforms (and more) in the build_scripts directory of this repository.

Those packaging receipts together with the continuous integration files .travis.yml and appveyor.yml are a good source of knowledge on how to compile RetroShare on different platforms.

Using RetroShare on a headless computer with web UI

Warning
This section is outdated need to be adapted to the new web UI

The web UI needs to be enabled as a parameter option to the retroshare-service:

./retroshare-nogui --webinterface 9090 --docroot /usr/share/retroshare/webui/

The web UI is only accessible on localhost:9090. It is advised to keep it that way so that your RS cannot be controlled using an untrusted connection.

To access your web UI from a distance, just open a SSH tunnel to it:

distant_machine:~/ >  ssh rs_host -L 9090:localhost:9090 -N

"rs_host" is the machine running retroshare-nogui. Then on the distant machine, access your web UI on

http://localhost:9090

(This can also be done from the RetroShare GUI.)

retroshare's People

Contributors

altcoinpirate avatar asamk avatar b1rdg avatar cavebeat avatar chelovechishko avatar chozabu avatar csoler avatar defnax avatar drbob avatar electron128 avatar ericthefish avatar felisucoibi avatar g10h4ck avatar heini avatar hunbernd avatar jolavillette avatar kdebiec avatar merkeld avatar mestaritonttu avatar mr-alice avatar myfingerhurt avatar phenomretroshare avatar ppetr avatar pyret1c avatar realityfabric avatar retropooh avatar sehraf avatar thunder2 avatar zapek avatar zeners avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

retroshare's Issues

Private chat windows gain focus automatically

When X initiates a private chat with Y - Y gets a new private chat window on screen that automatically gains focus. This can be exploited by an attacker who keeps initiating private chat requests to cause focused windows appear on target's screen in case if the other side keeps closing the private chat window as soon as the attacker breaks the connection.

Notes:

  1. This happens with setting "Open Window for new chat" ON and setting "Grab Focus when chat arrives" OFF. So either this is OS specific. Or the "Grab Focus when chat arrives" setting has no effect. Or both.
  2. This is not theory, this is already happening in practice. This bug report is the result of me being the target of such an attack recently.
  3. Just minimizing the private chat window to prevent it getting respawned over and over still allows the attacker to try and DoS the target by sending giant piles of text as messages
  4. This can get much nastier if the attacker would use a lot of multiple different identities

Suggested change: since I don't see an "Automatically accept private chat requests" setting or something like that, such a setting that will be disabled by default must be added. So whenever somebody initiates a private chat - the other side gets a notice in its News Feed and has to accept it explicitly before the chat starts and private chat windows get opened. Though this would still allow a determined attacker to flood the News Feed with multiple chat requests, eventually coming from multiple identities, so this can result with a DoS.

upnphandler::background_setup_upnp()

Please inspect the result of pthread_create(). The function will return zero on success. On failure, you should delete the data object. There may be other similar instances throughout your source.

if(pthread_create(&tid, 0, &doSetupUPnP, (void *) data) == 0)
   pthread_detach(tid); /* so memory is reclaimed in linux */
else
   delete data;

// Return false or true?

Misleading status of users in lobbies

Currently, when joining a lobby, all users are displayed online and active. RetroShare starts marking users as AFK and changing their status icon from green to gray only 30 minutes later. This is highly misleading and annoying.

Suggested changes:

  • revert the approach and show all users as AFK when joining a lobby
  • let RetroShare mark an user as non-AFK and change his status icon to green as soon as he types something and the message appears in chat
  • let users customize when RetroShare should mark users as AFK back by providing a setting in minutes (personally, I would like to see an user marked AFK if he did not type anything for more than one minute)

Potential buffer overrun in RetroShare/libretroshare/src/util/extaddrfinder.cc.

request is defined as char[1024]. A wild host name will overrun the buffer. Please consider using snprintf() or QByteArray.

(It appears that the function is assuming that gethostbyname() will guard against lengthy host names. On FreeBSD, I modified an entry in /etc/hosts to contain 1055 characters. A ping correctly located the entry and executed the query.)

    sprintf( request, 
            "GET / HTTP/1.0\r\n"
            "Host: %s:%d\r\n"
            "Connection: Close\r\n"
            "\r\n", 
            server_name.c_str(), 80);

Chess plugin for RetroShare

it would be nice to get work Chess on rs network.
to play with Friends or with Friends of Friends ( with dIstant peers gxsid)

there is always started project seems not continued.
Play Chess with Online Friends start from FriendsList or from Chat lobbies with Online People.

unfinished source:
https://github.com/RetroShare/RsChess

Feature request: make it easier to mail people from chat lobbies

Currently the popup menu that gets displayed when right clicking on nicknames in chat lobbies has two items: Mute participant and Start private chat.

Suggestion: add a third item named Send message which will open the New Message window with GXSID of said user already filled. This will make it easier to message users since it will skip the tedious step of browsing the huge list of IDs in Messages window to select a destination.

Create a simple Skype-like alternative Qt5 QML Gui

we propose to make a simple Skype-like alternative to retroshare-gui. only Chat, Lobbies and Voip/Video. Not sure what to call it - but we will probably use a different brand from retroshare.
Here you can find the example qml model:
https://github.com/drbob/rsqml-models

make a easy clean gui like skype:
https://skypeblogs.files.wordpress.com/2014/10/mac1.png

or look example project:
https://ring.cx/

QML retroshare client:
https://github.com/Emotyco

Implement save/load Chat History for Lobbies & Distant Chat

What i see, there is missed yet saving/loading distant Chats or Chat lobbies Chat History.

you can check this classes if you want implement it:

libretroshare:
rsserver:
p3history.cc/.h
serialiser:
rshistoryitems.cc/.h
retroshare:
rshistory.h

retroshare-gui:
ChatPage.cpp/.h/.ui

Should 4096 bits PGP Key Length be the default?

Considering that Retroshare is moving toward working with TOR networking, it make sense to set PGP Key Length for the highest allowable bit security possible despise some of it's disadvantages like increasing computational cost and storage size. What your thought on this?

Build broken with Qt < 4.7

d9fd60e added a place holder to retroshare-gui/src/gui/chat/CreateLobbyDialog.ui, which was only added in Qt 4.7. CentOS is still using Qt 4.6 so the build is broken there.
To fix this the placeholder should be removed to the .ui file and added manually in the .cpp file with a check for the qt version.

Exact error:
[ 680s] g++ -c -m64 -pipe -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_REENTRANT -DRS_ENABLE_GXS -DRS_RELEASE_VERSION -DHAVE_XSS -DUBUNTU -DQT_NO_DEBUG -DQT_SCRIPT_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/usr/lib64/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/QtUiTools -I/usr/include/QtCore -I/usr/include/QtNetwork -I/usr/include/QtGui -I/usr/include/QtXml -I/usr/include/QtScript -I/usr/include -Iretroshare-gui -I../../libretroshare/src -I../../libresapi/src -Itemp/moc -Itemp/ui -o temp/linux-g++-64/obj/ChatLobbyWidget.o gui/ChatLobbyWidget.cpp
[ 681s] In file included from gui/chat/CreateLobbyDialog.h:6,
[ 681s] from gui/ChatLobbyWidget.cpp:8:
[ 681s] temp/ui/ui_CreateLobbyDialog.h: In member function 'void Ui_CreateLobbyDialog::retranslateUi(QDialog*)':
[ 681s] temp/ui/ui_CreateLobbyDialog.h:249: error: 'class QLineEdit' has no member named 'setPlaceholderText'

Im Window needs Improvements

needs redesign, maybe rewrite completely... some improvements which we need have on im Window...

Easy Voice call
Conference call (need to implemented)
Video Conferencing ( need to implemented)
Collaboration through Whiteboard documents ( where the participants have freedom to share text, drawing and graphical annotations)
Collaboration through PowerPoint/Impress documents ( where the participants can control and see presentations)
Polling lists ( where Presenters can organize polls and all participants can vote and see results.)
Desktop sharing ( usually by allowing participants to see and collaborate on a Windows screen ) 

maybe look on example:
https://answers.uillinois.edu/illinois/51743

mail & instant messages should work with Distant Peer Identities *ONLY*

mail-messages and instant-messages are now working with the legacy system (friend-nodes) and the new Distant Peer Identities (GXS-IDs)

Is there any need for the legacy system anymore? Does it offer any purpose which i did not found yet?

atm, its causing confusion to newbies if both ways are mixed:
When a new message is created, the "FROM" field containing the sender ID is grey. It starts to becomes changeable when a GXS-ID is choosen as the receiver. when its grey, my node is the sender and the receiver must be a direct friended node. Mixing receivers is not possible.

There are a few combinations for mail/instant messages

Distant Peer Identites

  • my Anon-ID sends a message to an Anon-ID (no change, distant chat via turtle/grouter)
  • my signed-ID sends a message to an Anon-ID (no change, distant chat via turtle/grouter)
  • my Anon-ID sends a message to a Signed-ID (no change, distant chat via turtle/grouter)
    requested changes:
  • my Signed-ID sends a message to a Signed-ID, User is part of my friendlist and offline -> distant chat should be established via turtle/grouter (This helps a lot when connectivity problems appear and the connection can be established through mutual friends)
  • my Signed-ID sends a message to a Signed-ID, User is part of my friendlist and online -> turtle/grouter should be bypassed and data should be exchanged P2P directly between nodes. VOIP should be available when the traffic goes direct P2P between two nodes.

Legacy Friend Nodes

  • my-node sends a message to an offline firend-node from my friendlist - friend receives it when he comes online - should be removed
  • my-node sends a message to an online friend-node should be removed

Mails with Distant Peer Identities sent have the mail forwarding & relaying done via friends and contain the async mail transport if the receiver is not online.
Friend Node Mail miss this feature.

legacy Friend Node chat and mailing should be purged IMO.

Its not a major problem but causes small confusion. And it is not necessary to contain the legacy stuff.
The Distant Peer stuff is working great and i see my self refusing to use the direct chat via friend-nodes. Rightclick the user in the chatlobby and do distant chat is far more convenient compared to: Go to Network -> search user -> start chat with his node

Forums broken in 0.6.RC2

I'm not getting forum updates for about two weeks. Maybe it's related to this #99

Occasionally - I think it happened not more than two or three times during past two weeks - I randomly got a few messages in subscribed forums.

I did some manual intervention and removed the gxs directory from inside the node profile. After logging into the network and subscribing to a forum I was not subscribed before - I've got posts. After switching back to existing gxs directory and subscribing to the same forum - I've got no posts.

RetroShare does a very bad job at reporting what's broken, so I have no idea how to fix this. retro.log contains cryptic messages and I have no idea what to look for there, to find out if something might be related to the problem.

Are private messages reliable?

Situation: me and another RetroShare user. We added eachother as friends and there was a connection between us. We initiated a private chat, through an identity in a chat lobby. I sent a couple of messages. Then I found that some of them were lost and did not reach the other side.

Note: I know that sometimes the private chat connection breaks and then automatically restores after a while. This was not the case for the above situation, the connection did not look broken on my side - the other side kept being shown as online while those private messages were lost.

RsAES

The two large methods assume that EVP_DecryptInit_ex() is successful. Assuming that contexts are initialized correctly, the two methods do not issue EVP_CIPHER_CTX_cleanup() before exiting on critical problems.

It looks like the example from https://www.openssl.org/docs/manmaster/crypto/EVP_EncryptInit.html is similar to your usage. Their second example does issue EVP_CIPHER_CTX_cleanup() upon errors.

From that page: "EVP_CIPHER_CTX_cleanup() clears all information from a cipher context and free up any allocated memory associate with it. It should be called after all operations using a cipher are complete so sensitive information does not remain in memory."

Perhaps you should at least interview the result of EVP_EncryptInit_ex() (it returns an integer; a 1 on success) and/or issue EVP_CIPHER_CTX_cleanup() before every return.

Apologies if I'm being bothersome.

Organising RS Messages need more useful features

This is not new, but Messages needs this useful features:

  • Add function to add more folders and subfolders to sort and organize better mails
  • Archive Messages (save the message as single file for every message or in a seperate folder. rs could scan this if the user want to look into the archive.)
  • Import/Export Mails feature
  • Implement Adress Book (look for example: Outlook, Thunderbird)
  • Add support for Calendar/Tasks/Todo (maybe as plugin )
  • Fast Filter Buttons, list messages by Unread ,Starred, Contacts, Tags, Attachments...
  • Add Context Menu to Open Inbox/Outbox/Tags... Open in new Window/new Tab

Forum window needs better notification

When opening the Forum window, subscribed forum titles become bold over time as RetroShare is reading its forums database and finds out that certain subscribed forums have new posts.

Since the GUI interface to forums is a well known performance bottleneck - RetroShare should try harder to notify the user when it is pulling data from its internal forum database, so the user knows that a sync operation is in progress and doesn't try to push the GUI further towards the "Non Responding" state by generating new keyboard events that go into Qt's even queue.

Perhaps changing cursor state to "busy" will do.

Compile failed on CentOS 6

g++ -c -m64 -pipe -g -fno-omit-frame-pointer -Wall -D_FILE_OFFSET_BITS=64 -g -fPIC -Wall -W -DRS_USE_BITDHT -DNO_SQLCIPHER -DPATCHED_LIBUPNP -DUBUNTU -DRS_USE_LIBUPNP -DRS_ENABLE_GXS -DSQLITE_HAS_CODEC -DGXS_ENABLE_SYNC_MSGS -I/usr/lib64/qt4/mkspecs/linux-g++-64 -I. -I. -I../../libbitdht/src -I../libbitdht -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I../../openpgpsdk/src -I../openpgpsdk -I. -I/usr/include/openssl -I/usr/include/upnp -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -o temp/linux-g++-64/obj/UPnPBase.o upnp/UPnPBase.cpp
upnp/UPnPBase.cpp: In static member function ‘static int CUPnPControlPoint::Callback(Upnp_EventType, void*, void*)’:
upnp/UPnPBase.cpp:1484: error: ‘UpnpString_get_String’ was not declared in this scope
make: *** [temp/linux-g++-64/obj/UPnPBase.o] Error 1

Wrong list of packages to install for Debian in README

The list is wrong, in the last line are commas, which is invalid syntax. It is:

sudo apt-get install libglib2.0-dev libupnp-dev qt4-dev-tools \
   libqt4-dev libssl-dev libxss-dev libgnome-keyring-dev libbz2-dev \
   libqt4-opengl-dev libqtmultimediakit1 qtmobility-dev \
   libspeex-dev libspeexdsp-dev libxslt1-dev libcurl4-openssl-dev \
   libopencv-dev, tcl8.5, libmicrohttpd-dev

and it should be

sudo apt-get install libglib2.0-dev libupnp-dev qt4-dev-tools \
   libqt4-dev libssl-dev libxss-dev libgnome-keyring-dev libbz2-dev \
   libqt4-opengl-dev libqtmultimediakit1 qtmobility-dev \
   libspeex-dev libspeexdsp-dev libxslt1-dev libcurl4-openssl-dev \
   libopencv-dev tcl8.5 libmicrohttpd-dev

Easy syncing system

When creating a new location, its hard to start from beginning...to get friends again to my friendslist, view messages, forums....to be up to date on the new location too.

Easy syncing system:

Auto Sync Own Identities
Auto Sync Friendslist
Auto Sync Messages
Auto Sync Forums/Channels/Posted
Auto Sync Folders (optional with own locations or with some Friends) 

Voip/Video Plugin developers wanted

Hello, we need help on the Voip/Video Plugin
there is no active development on this feature its abonded since few years

Video plugin source:
https://github.com/RetroShare/RetroShare/tree/master/plugins/VOIP

  • Launch an animation with sound for Incoming and Outgoing voice/video Call
  • Notify Incoming Audio Call/Video Call via ring sound
  • Add "Decline" Button to Toaster & on Voip Chat call notify
  • Full view Mode
  • Deactivate Voip Buttons, when Friend has no Voip plugin enabled.
  • Implement Voice for Video Chat
  • Improve Voice and Video Quality
  • Video Quality/Resolution Settings (High, Medium, Low) HD, HQ, SD
  • Video Device: WebCam or Desktop Selection
  • Audio Input Device Selection (Microphone)
  • Audio Output Device Selection (Speaker)
  • Video Snapshots https://support.skype.com/en/faq/FA1222/what-is-video-snapshot
  • Voice Messaging(record and send a voice message)
  • Video Messages, send a video greeting to multiple friends/coworkers/developers at once.
  • Add for Friendslist context menu "Call" functionality
  • Add for Friendslist context menu "Video Call" functionality
  • Video Call recording, create and share instant memories.
  • HD and High Resolution Video, Video calling with spectacular clarity and detail.
  • Screen sharing ( share your screen with your friends and colleagues)
  • Audio Conference
  • Video Conference (HD to 1080p)
  • Call Group (group video call)

done.
#140
#129
#144
#141
#120

People Thumbnail View

List People in a userfriendly thumbnail View never finished yet
Display recommended People over rs and make friends easyer

Idea was like google people find
hope this will anytime to reworked on the sources again and be enabled.

People Source Code:
https://github.com/RetroShare/RetroShare/tree/master/retroshare-gui/src/gui/People

Ideas Todos:

  • Sort by Reputation,Recommended, Popularity, Votes
  • Search Persons ( search filter)
  • Enable Thumbed View for People (easy design to switch List or thumbnail View
  • Allow add People as Friend (if GXS ID is PGP associated, needs to be implemented)
  • maybe later more features when its done

Voting "I like this" and "I dislike this" feature for Channels/Forums

The Voting is implemented for Posted Links.

It will be usefull for Gxsforums, gxschannels and photoshare too.

  1. it can used for vote the thread and forum/channel posts
  2. it can be used for thx to a usefull thread post
  3. it can be used for hide stupid answers when post has too much dislikes
  4. display likes and dislikes

Feature request: make it easier to spot new content

The following applies to latest official release 0.6.RC2, if there are any improvements in master branch after that, please do leave a comment about it.

At low level, new content in RetroShare is:

  • new messages in chat lobbies an user is connected to
  • new posts in forums an user is subscribed to
  • new posts in channels an user is subscribed to
  • new posts in topics an user is subscribed to

Notice the common part of all these things - an user is getting notices about new content in things he chooses to follow. This makes sense.

However, this is what happens at higher level: users can create new chat lobbies, new forums, new channels, new topics. I don't notice RetroShare emphasizing them in any way.

I suggest improving the situation, so RetroShare starts tracking new chat lobbies, forums, channels, topics. Whenever one of these new things is fetched for the first time - it should be marked as new and displayed with bold font. It should stay like so until the user explicitly chooses to mark it as seen. This will give existing users a much easier way to track new content as it appears and decide if they want to follow it or not. Because currently new content can be only made visible to others by explicitly advertising it.

RetroShare leaks file descriptors to child processes

When RS executes another process, e.g. when opening a downloaded file, all open file descriptors, including sockets, are leaked to the child process.
I noticed this when I wanted to restart RS, but couldn't because the listening port was already in use by firefox. I had started firefox by opening a web link in RS and then the listening socket fd was leaked to the firefox process, where it remained open, even after RS was closed.

RS should set the FD_CLOEXEC flag on all file descriptors. It can be used like this:

fcntl(fd, F_SETFD, previous_flags | FD_CLOEXEC)

(Repost from the internal forum, so it won't get lost)

Video Streaming (VOD) for Channels

Video Streaming(VOD) That will allow Youtube like Channels in RetroShare.
No need to wait for downloads to complete,with streaming you can use RetroShare Channels in Youtube-style.

Stream Button, for start as Stream if its a mediafile.

Photos (PhotoShare)

Load plugins from /usr/lib64

Reference point in code: https://github.com/RetroShare/RetroShare/blob/master/libretroshare/src/rsserver/rsinit.cc#L1254

What needs to be done:

Check if /usr/lib and /usr/lib64 are symlinked (either /usr/lib is a symlink pointing to /usr/lib64, or /usr/lib64 is a symlink pointing to /usr/lib). This is done to avoid redundancy in the next step.

If /usr/lib and /usr/lib64 are not symlinked, then prepend /usr/lib64 to the list of directories where RetroShare can read plugins from.

Something like:

+ plugins_directories.push_back(std::string("/usr/lib64/retroshare/extensions6/")) ;
  plugins_directories.push_back(std::string("/usr/lib/retroshare/extensions6/")) ;

Moving up to C++ Standard 2011?

I've noticed that a lot of code in Retroshare are still behind 2011/2014 standards (Aka -std=c++11) and I decided to work toward moving it up to a more current standard on my fork and I am wondering where does RetroShare developers stand on moving up to a more current standard? Should we go for C++ 2014 Standard?

Feature Request: Show the number of comments on channel messages

It would be nice to see the number of comments shown on the Comments button of the channel posts, just as they are in 'Posted'. Sometimes I don't notice that comments have been made because I assume the lack of a counter is telling me there are none. I guess I got used to the number shown in Posted.

Improve file search by ignoring diacritical marks

When searching for files under File Tranfers, characters with diacritical marks such as accents, cedillas, umlauts and tildes (e.g. é, è, ê, ü, ç, ñ...) are treated as discrete characters. Treating these accented characters the same as the base characters would make searching easier.

For example, if I share a video of Björk with the accented "ö" in the file name and someone searches for "bjork", he will get no results. It would be better if searching for "o" returned results for that letter with any possible diacritical mark. An option to only match the exact characters could be added to the advanced search options if necessary, in a way similar to the "match case" option.

There are several scenarios where people are unlikely to know the right diacritical marks to use (foreign artists for example). There are also situations when searching with the right diacritical marks may return no results, as some people omit them on purpose from their file names for compatibility or other reasons.

Thanks!

Data loss after RetroShare crash

My RetroShare instance (0.6.RC2 - the latest official Windows build) crashed and I had to kill it with task manager.

After restart RetroShare lost the custom groups in network window that I was using to group friends into.

Also, all network Tor settings were reset to wrong values, the onion address field was empty. I had to apply all settings manually again and restart it one more time.

Are these particular settings stored in the sqlite/sqlcipher backend or just in a file?

IP blacklist doesn't work.

I manually added 194.228.20.255/24 to the IP blacklist, but looking at network traffic with Wireshark I see my machine receiving UDP packets from that network (can't be avoided, I suppose), but to my surprise happily SENDING BACK UDP packets to them (yes, plural!).

This is VERY dangerous, since those machines are known to be run by malicious actors. What if they have a remote exploit against RetroShare or some of its libs? RetroShare shouldn't do any processing of packets coming from malicious machines. It should drop them at the earliest opportunity without even reading its contents.

This is extremely serious, and needs to be fixed urgently.

This is on Ubuntu Vivid, with package RetroShare06 version 0.6.0-1.20150816.9734f32a~vivid, obtained via the RetroShare PPA.

RetroShare/libretroshare/src/util/dnsresolver.cc

gethostbyname() may use static data. Please consider using the reentrant version gethostbyname_r() or protect the function with some locking mechanism.

There is a lock prior to if(!next_call.empty()), however, it's destroyed as soon as its parent begin-end block completes.

If you only have one DNSResolver object, you're probably fine. Although, if getPage() (see below) is executed in a separate thread, you may have unpleasant results.

libretroshare/src/util/extaddrfinder.cc also refers to gethostbyname().

Qt includes QHostInfo (http://doc.qt.io/qt-4.8/qhostinfo.html). It does not appear to support a means of specifying a DNS proxy.

Need Help on RS Wiki plugin ( wiki service)

Hello, we need help to enable RS Wiki(plugin) back.

As you can see, the current Wiki is a basic framework waiting to be expanded. There are lots of potential improvements... some of the ideas are listed below

Ideas:

  • Formatting: No HTML, lets use Markdown or something similar.,
  • Diffs, lots of edits will lead to complex merges - a robust merge tool is essential,
  • Read Mode... hide all the Edits, and only show the most recently published versions,
  • Easy Duplication - to take over an Abandoned or badly moderated Wiki. Copies All base versions to a new group,
  • WikiLinks. A generic Wiki Cross Linking system. This should be combined with Easy Duplication option,to allow easy replacement of groups if necessary... A good design here is critical to a successful Wiki ecosystem,
  • work out how to include media (photos, audio, video, etc) without embedding in pages, this would leverage the turtle transfer system somehow - maybe like channels.
    Comments, reviews etc can be incorporated - ideas here are welcome.
  • Any other suggestion???

Source path:
libretroshare:
https://github.com/RetroShare/RetroShare/blob/master/libretroshare/src/services/p3wiki.cc
Gui Part:
https://github.com/RetroShare/RetroShare/tree/master/retroshare-gui/src/gui/WikiPoos

WikiAddDialog.cpp
WikiAddDialog.h
WikiAddDialog.ui
WikiDialog.cpp
WikiDialog.h
WikiDialog.ui
WikiEditDialog.cpp
WikiEditDialog.h
WikiEditDialog.ui

Unifying indentation

Indentation is not consistent in the RS source code. Even within single files spaces and tabs are sometimes mixed at random. When viewing the files with a different tab setting than the dev who wrote it, the indentation becomes a mess. It's also annoying when editing the files.

I'd suggest unifying the indentation across all RS source code to either 4 spaces or tabs (or something else, I don't really care, as long as it's consistent). This will be a big commit and will make it harder to find out where a change came from, before this commit, but I think it'd be worth it.

e.g. astyle can be used to do this, either with four spaces or with tabs:

    astyle --mode=c --indent=spaces=4 CPP_FILES
    astyle --mode=c --indent=tab CPP_FILES

Misleading tooltip in Messages -> Outbox

It says "This message comes from a distant person."

This makes sense for messages in Inbox only. It Outbox it shall say "This message goes to a distant person." instead.

Design a friends list view and implement it with HTML/CSS/JavaScript/react.js

You have basic HTML/CSS and JavaScript knowlegde and want to contribute to Retroshare? Here is a small project with clearly defined scope. It should costs you not more than one or two weeks/weekends. It is perfect for new contributors.

The peers list of the new webinterface was made quick&dirty, just to show that the backend works. As result, the list is implemented as table with columns like avatar, name, locations. It does not fit on small screens and it looks ugly.

A new react component should be made which satisfies the following requirements:

show name, avatar image, locations, online state
fits on mobile phone screen
easy to see which friends are online and which are not

The component takes JavScript list as input, and generates the HTML with react.js

maybe:

implement filter to show only online friends
sort friends list by name

areas for research:

long-tap menu for mobile phones, or context menu for desktop

More notes below:

Component to display the friends list

(see also Peers2 in retroshare-svn/trunk/libresapi/webui/gui.jsx)

goals:

make it easy to see which friend is online
make the layout fit to the narrow screen of a mobile phone

var Peers3 = React.createClass({ // AutoUpdateMixin: fetches the data and sets this.state // SignalSlotMixin: to send commands to other components with this.emit mixins: [AutoUpdateMixin, SignalSlotMixin], // called by AutoUpdateMixin, defines which data to fetch getPath: function(){return "peers";}, // called by react when component is created getInitialState: function(){ return {data: []}; }, // event handler for an "add friend" button add_friend_handler: function(){ this.emit("change_url", {url: "add_friend"}); }, // called by react render: function(){ return

{/TODO: generate html to display this.state/}
; }, });

The data in this.state.data looks like this: [{ "locations": [{ "avatar_address": "/asdf/avatar_image", "groups": null, "is_online": false, "location": "home", "name": "max", "peer_id": "asdf", "pgp_id": "yxcv" }, ... more locations ... ], "name": "max", "pgp_id": "yxcv" }, ... more peers ... ]

other components:

downloads

i'm not very happy about the unfriendly big numbers. better use KB, MB, GB
visualize the download progress with a progress bar
move actions to a context menue or to a long-tap menue on mobile devices?

search

display previous searches (path=filesearch)

http://pastebin.com/GZvGdR6a

Removing somebody from friend list causes spam to be received

If I remove somebody from friend list, his RetroShare instance starts notifying me about willing to become friends. I get friend request notices in event log. I get friend request messages in mail. Removing the friend request messages doesn't help - new ones just keep arriving.

I am going to take a wide guess about what's going on.

RetroShare is friend-to-friend by design. In order to befriend somebody, the key exchange has to be mutual. So there are two different situations here.

  1. X and Y are not friends. X adds Y to friend list. Y keeps being noticed that he is in the friend list of X now.
  2. X and Y are friends. Y removes X from his friend list. But he keeps belonging to the friend list of X.

These are two different situations with the same intermediary state.

My guess is that currently RetroShare can't make a difference between these situations and treats the similar intermediary state the same way.

Suggested change: when X and Y are friends and X removes Y from friend list - Y's RetroShare instance should get a notice and automatically remove X from its friend list as well.

help needed for VOIP codec to work

Orginal posted by @csoler

I started implementing a codec based on libavcodec, in the branch v0.6-VOIP of github.com/csoler/Retroshare.
The compression now is really good, and a decent 640x480 video can be sent at 5-10KB/s. However, I don't seem to be able to force the codec to keep a maximum bitrate. I would still like to avoid peeks (e.g. 30-40KB/s) created when the acquired video changes a lot, which I don't manage to.

If anyone wants to have a look at the code/help me with this, that would be very nice. Here's some bits to start with:

The codec is implemented in VideoProcessor.cpp (314-681). The function names should be self-explanatory 

To test,

  • when starting RS, go to config->VOIP and click on "preview" in the botton. You should see the video as it was acquired and encoded, then decoded. So it gives an idea of what the codec can do.
  • the graph at right shows the actual bandwidth that the codec is using and the checkbox below is the max bandwidth that I would like to use. Look at it to see if you found a good rate control method.

It's quite easy to see that with the default settings, the bandwidth peaks tend to exceed the max (try to move the camera in order to increate optical flow).

In order to use rate control, enable USE_VARIABLE_BITRATE in VideoProcessor.cpp. But that doesn't do the job either.

Parameters to tweak:

  • rc_*, which basically deal with rate control. There's a few dependencies between them, that might cause errors
  • image resolution. I couldn't manage to encode with a variable image resolution. Apparently the codec doesn't like it at all.
  • image frame rate? For now it's fixed on 15fps. Can it be changed on the fly?

Any help will be appreciated!

https://github.com/csoler/RetroShare/tree/v0.6-VOIP

Master broke settings backwards compatibility

Clients compiled from recent master seem to be able to get past settings of older clients regarding font size in chats. Even if an older version of RetroShare has "Enable custom fonts" checkbox unchecked - it still sees custom font sizes from these new versions. The offending change seems to be 668394d

Move Internal Services Into Plugins.

Moving internal services such as Forums, Posted , wikis and Channels - perhaps even chat and circles would provide the following benefits:

  • ensure plugins can access everything they need to. (including each other?)
  • provide more examples for plugin devs.
  • make code more modular, less monolithic. (easier to read and understand too)
  • make it easier to do really light-weight RS apps (like chat only RS)

Along with a host of benefits not mention'd here!
Plugins could also be in their own separate subtree/submodules - still allowing for a single simple clone/build command, as well as further decentralising development.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.