akai-old's Issues
We need a server config
needs to have max hosts, ssl cert/key, and port
Messages don't scroll to bottom when new messages are received
Error messages don't get displayed
I'd suggest putting them into a status at the bottom of the main window
Clients on same network cannot call eachother
if clients have the same external ip address, they can't call eachother, they should attempt to reach eachother locally if external ip's match.
Login box needs to honour the ISAUTH command
The login box just goes away if you don't put in a valid username and password, this needs to be rectified.
There's no video
Not very important yet, but it'll probably be similar to audio.
We need a user registration system
we also probably want to add an email account, for account recovery
There's no group messaging
No group calls
You can't log in from multiple devices
Sent and received messages need to be delivered to all logged in devices.
We need a config dir/file
somewhere that we can store certs, keys, and server info
There's no encryption
We need encryption for client to server communications.
There's no message caching
This isn't very important yet, but will be once there's actual users...
Presently, the client asks the server for a full message history every time it logs in, but I propose the addition of a date command to notify the client of the newest message, and a requirement for date on the msghist command.
Server crashes if invalid characters are sent from a client
to reproduce:
- telnet to server,
- push ctrl + c
there needs to be a try catch around the string encode method, and an assosiated error message.
Messages need encryption
We need encryption around messages (this is separate from the client to server SSL wrapper)
Audio uses too much bandwidth and drops frames
Crashed people's inernet while testing audio, we probably need to split the audio into smaller uniform packets instead of sending full 16000 byte packets over the udp port. This will make droped packets easier to manager, and will hopefully reduce network strain.
There's no screen sharing
It'll probably use the same pipeline as video, just a different input.
Project does not build on Ubuntu 16.04.01
Error message when building on Ubuntu 16.04.01:
Error Message when making by default:
(xenial)zackery@localhost:~/Desktop/C++/Akai/Akai/client$ make g++ -c -m64 -pipe -g -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -Iobjects -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o objects/messagelist.o messagelist.cpp messagelist.cpp: In constructor ‘FriendMenu::FriendMenu(QString, QWidget*)’: messagelist.cpp:9:54: error: no matching function for call to ‘FriendMenu::addAction(const char [5], FriendMenu*, void (FriendMenu::*)())’ addAction("Call", this, &FriendMenu::callSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided messagelist.cpp:10:62: error: no matching function for call to ‘FriendMenu::addAction(const char [9], FriendMenu*, void (FriendMenu::*)())’ addAction("Unfriend", this, &FriendMenu::unfriendSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided Makefile:407: recipe for target 'objects/messagelist.o' failed make: *** [objects/messagelist.o] Error 1
Error message after adding "-std=c++11" to the end of line 30 in the Akai.pro file located in Akai/client:
(xenial)zackery@localhost:~/Desktop/C++/Akai/Akai/client$ make g++ -c -m64 -pipe -g -std=c++11 -O2 -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -Iobjects -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o objects/messagelist.o messagelist.cpp messagelist.cpp: In constructor ‘FriendMenu::FriendMenu(QString, QWidget*)’: messagelist.cpp:9:54: error: no matching function for call to ‘FriendMenu::addAction(const char [5], FriendMenu*, void (FriendMenu::*)())’ addAction("Call", this, &FriendMenu::callSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided messagelist.cpp:10:62: error: no matching function for call to ‘FriendMenu::addAction(const char [9], FriendMenu*, void (FriendMenu::*)())’ addAction("Unfriend", this, &FriendMenu::unfriendSelected); ^ In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QMenu:1:0, from messagelist.h:14, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate: QAction* QMenu::addAction(const QString&) QAction *addAction(const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:76:14: note: candidate expects 1 argument, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&) QAction *addAction(const QIcon &icon, const QString &text); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:77:14: note: candidate expects 2 arguments, 3 provided /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: candidate: QAction* QMenu::addAction(const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequenc ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:78:14: note: no known conversion for argument 3 from ‘void (FriendMenu::*)()’ to ‘const char*’ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate: QAction* QMenu::addAction(const QIcon&, const QString&, const QObject*, const char*, const QKeySequence&) QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qmenu.h:79:14: note: candidate expects 5 arguments, 3 provided In file included from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qaction.h:39:0, from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QAction:1, from messagelist.h:5, from messagelist.cpp:1: /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate: void QWidget::addAction(QAction*) void addAction(QAction *action); ^ /usr/include/x86_64-linux-gnu/qt5/QtWidgets/qwidget.h:538:10: note: candidate expects 1 argument, 3 provided Makefile:407: recipe for target 'objects/messagelist.o' failed make: *** [objects/messagelist.o] Error 1
Need an options menu
Options menu needs to store audio device settings, perfered audio sample rates, and server configurations.
There's no audio
There's code already, it just needs a server side broker and socket connections.
Need a status bar widget for when a call is in progress
http://doc.qt.io/qt-5/qstatusbar.html
see addPerminateWidget
Calls just start whenever someone requests one
This is a pretty big issue, we need a popup that asks the user if they want to accept a call before they start sending packets.
Audio uses too much cpu
This is most likely due to how often qt has to spawn a thread for reading from the audio input, look into making a persistant thread or using larger buffers.
Server crashes if client resets connection
there just needs to be a try catch arround the read on the server.
Server needs to generate default config
Windows audio is janky
Tested program on a Windows machine and the audio cutout repeatedly (subsecond intervals)
This might be fixed, but should be double checked
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.