Skip to content

Commit

Permalink
Basic implementation of a Digg input
Browse files Browse the repository at this point in the history
  • Loading branch information
Fudge committed Mar 16, 2008
1 parent 51e1fff commit fa14046
Show file tree
Hide file tree
Showing 14 changed files with 375 additions and 199 deletions.
2 changes: 1 addition & 1 deletion Makefile
@@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: gltrail
# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 17:33:31 2008
# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 18:26:00 2008
# Project: gltrail.pro
# Template: subdirs
# Command: /usr/bin/qmake -unix -o Makefile gltrail.pro
Expand Down
1 change: 1 addition & 0 deletions README
Expand Up @@ -4,6 +4,7 @@
3. cp gltrail.ini-example gltrail.ini
(and replace with your information)
4. ./bin/gltrail gltrail.ini
./bin/gltrail --digg

Note: You'll need public-key ssh access set up to your servers,
as I haven't found a good/free cross-platform ssh library.
Expand Down
57 changes: 36 additions & 21 deletions src/Makefile
@@ -1,6 +1,6 @@
#############################################################################
# Makefile for building: ../bin/gltrail
# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 17:33:31 2008
# Generated by qmake (2.01a) (Qt 4.3.2) on: Sat Mar 15 18:40:51 2008
# Project: src.pro
# Template: app
# Command: /usr/bin/qmake -unix -o Makefile src.pro
Expand All @@ -10,13 +10,13 @@

CC = gcc
CXX = g++
DEFINES = -DQT_SHARED -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB
DEFINES = -DQT_SHARED -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
CFLAGS = -pipe -g -D_REENTRANT -Wall -W $(DEFINES)
CXXFLAGS = -pipe -g -D_REENTRANT -Wall -W $(DEFINES)
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I.
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4 -I/usr/X11R6/include -I. -I.
LINK = g++
LFLAGS =
LIBS = $(SUBLIBS) -L/usr/X11R6/lib -L/usr/lib -lGLU -lGL -lQtOpenGL -lQtGui -lQtCore -lpthread
LIBS = $(SUBLIBS) -L/usr/lib -L/usr/X11R6/lib -lQtOpenGL -lQtGui -lQtNetwork -lQtCore -lGLU -lGL -lpthread
AR = ar cqs
RANLIB =
QMAKE = /usr/bin/qmake
Expand Down Expand Up @@ -48,23 +48,27 @@ SOURCES = main.cpp \
window.cpp \
glwidget.cpp \
background_updater.cpp \
inputs/ssh.cpp moc_input.cpp \
moc_window.cpp \
input.cpp \
inputs/ssh.cpp \
inputs/digg.cpp moc_window.cpp \
moc_glwidget.cpp \
moc_background_updater.cpp \
moc_ssh.cpp
moc_ssh.cpp \
moc_digg.cpp
OBJECTS = main.o \
activity.o \
element.o \
window.o \
glwidget.o \
background_updater.o \
input.o \
ssh.o \
moc_input.o \
digg.o \
moc_window.o \
moc_glwidget.o \
moc_background_updater.o \
moc_ssh.o
moc_ssh.o \
moc_digg.o
DIST = /usr/share/qt4/mkspecs/common/g++.conf \
/usr/share/qt4/mkspecs/common/unix.conf \
/usr/share/qt4/mkspecs/common/linux.conf \
Expand All @@ -75,8 +79,8 @@ DIST = /usr/share/qt4/mkspecs/common/g++.conf \
/usr/share/qt4/mkspecs/features/default_pre.prf \
/usr/share/qt4/mkspecs/features/debug.prf \
/usr/share/qt4/mkspecs/features/default_post.prf \
/usr/share/qt4/mkspecs/features/unix/opengl.prf \
/usr/share/qt4/mkspecs/features/qt.prf \
/usr/share/qt4/mkspecs/features/unix/opengl.prf \
/usr/share/qt4/mkspecs/features/moc.prf \
/usr/share/qt4/mkspecs/features/unix/thread.prf \
/usr/share/qt4/mkspecs/features/warn_on.prf \
Expand Down Expand Up @@ -127,8 +131,8 @@ Makefile: src.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mk
/usr/share/qt4/mkspecs/features/default_pre.prf \
/usr/share/qt4/mkspecs/features/debug.prf \
/usr/share/qt4/mkspecs/features/default_post.prf \
/usr/share/qt4/mkspecs/features/unix/opengl.prf \
/usr/share/qt4/mkspecs/features/qt.prf \
/usr/share/qt4/mkspecs/features/unix/opengl.prf \
/usr/share/qt4/mkspecs/features/moc.prf \
/usr/share/qt4/mkspecs/features/unix/thread.prf \
/usr/share/qt4/mkspecs/features/warn_on.prf \
Expand All @@ -147,8 +151,8 @@ Makefile: src.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mk
/usr/share/qt4/mkspecs/features/default_pre.prf:
/usr/share/qt4/mkspecs/features/debug.prf:
/usr/share/qt4/mkspecs/features/default_post.prf:
/usr/share/qt4/mkspecs/features/unix/opengl.prf:
/usr/share/qt4/mkspecs/features/qt.prf:
/usr/share/qt4/mkspecs/features/unix/opengl.prf:
/usr/share/qt4/mkspecs/features/moc.prf:
/usr/share/qt4/mkspecs/features/unix/thread.prf:
/usr/share/qt4/mkspecs/features/warn_on.prf:
Expand All @@ -161,7 +165,7 @@ qmake: FORCE

dist:
@$(CHK_DIR_EXISTS) .tmp/gltrail1.0.0 || $(MKDIR) .tmp/gltrail1.0.0
$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/gltrail1.0.0/ && $(COPY_FILE) --parents input.h element.h activity.h relation.h window.h glwidget.h background_updater.h inputs/ssh.h .tmp/gltrail1.0.0/ && $(COPY_FILE) --parents main.cpp activity.cpp element.cpp window.cpp glwidget.cpp background_updater.cpp inputs/ssh.cpp .tmp/gltrail1.0.0/ && (cd `dirname .tmp/gltrail1.0.0` && $(TAR) gltrail1.0.0.tar gltrail1.0.0 && $(COMPRESS) gltrail1.0.0.tar) && $(MOVE) `dirname .tmp/gltrail1.0.0`/gltrail1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/gltrail1.0.0
$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/gltrail1.0.0/ && $(COPY_FILE) --parents input.h element.h activity.h relation.h window.h glwidget.h background_updater.h inputs/ssh.h inputs/digg.h .tmp/gltrail1.0.0/ && $(COPY_FILE) --parents main.cpp activity.cpp element.cpp window.cpp glwidget.cpp background_updater.cpp input.cpp inputs/ssh.cpp inputs/digg.cpp .tmp/gltrail1.0.0/ && (cd `dirname .tmp/gltrail1.0.0` && $(TAR) gltrail1.0.0.tar gltrail1.0.0 && $(COMPRESS) gltrail1.0.0.tar) && $(MOVE) `dirname .tmp/gltrail1.0.0`/gltrail1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/gltrail1.0.0


clean:compiler_clean
Expand All @@ -180,12 +184,9 @@ mocclean: compiler_moc_header_clean compiler_moc_source_clean

mocables: compiler_moc_header_make_all compiler_moc_source_make_all

compiler_moc_header_make_all: moc_input.cpp moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp
compiler_moc_header_make_all: moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp moc_digg.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_input.cpp moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp
moc_input.cpp: input.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) input.h -o moc_input.cpp

-$(DEL_FILE) moc_window.cpp moc_glwidget.cpp moc_background_updater.cpp moc_ssh.cpp moc_digg.cpp
moc_window.cpp: glwidget.h \
input.h \
window.h
Expand All @@ -207,6 +208,10 @@ moc_ssh.cpp: input.h \
inputs/ssh.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) inputs/ssh.h -o moc_ssh.cpp

moc_digg.cpp: input.h \
inputs/digg.h
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) inputs/digg.h -o moc_digg.cpp

compiler_rcc_make_all:
compiler_rcc_clean:
compiler_image_collection_make_all: qmake_image_collection.cpp
Expand Down Expand Up @@ -248,7 +253,8 @@ element.o: element.cpp element.h \
window.o: window.cpp window.h \
glwidget.h \
input.h \
inputs/ssh.h
inputs/ssh.h \
inputs/digg.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o window.o window.cpp

glwidget.o: glwidget.cpp glwidget.h \
Expand All @@ -267,13 +273,19 @@ background_updater.o: background_updater.cpp background_updater.h \
relation.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o background_updater.o background_updater.cpp

input.o: input.cpp input.h \
glwidget.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp

ssh.o: inputs/ssh.cpp inputs/ssh.h \
input.h \
glwidget.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ssh.o inputs/ssh.cpp

moc_input.o: moc_input.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_input.o moc_input.cpp
digg.o: inputs/digg.cpp inputs/digg.h \
input.h \
glwidget.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o digg.o inputs/digg.cpp

moc_window.o: moc_window.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_window.o moc_window.cpp
Expand All @@ -287,6 +299,9 @@ moc_background_updater.o: moc_background_updater.cpp
moc_ssh.o: moc_ssh.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_ssh.o moc_ssh.cpp

moc_digg.o: moc_digg.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_digg.o moc_digg.cpp

####### Install

install: FORCE
Expand Down
2 changes: 0 additions & 2 deletions src/background_updater.h
Expand Up @@ -21,8 +21,6 @@ class BackgroundUpdater : public QThread
protected:
void run();



private:
Inputs *hosts;
Elements *elements;
Expand Down
5 changes: 2 additions & 3 deletions src/glwidget.cpp
Expand Up @@ -41,7 +41,6 @@ int last_time = 0;
GLWidget::GLWidget(QWidget *parent, Inputs *h)
: QGLWidget(QGLFormat(QGL::DoubleBuffer | QGL::Rgba | QGL::DirectRendering | QGL::AlphaChannel), parent)
{
// startTimer(1);
startTimer(16);
setFocusPolicy(Qt::StrongFocus);
setMouseTracking(true);
Expand Down Expand Up @@ -75,7 +74,7 @@ GLWidget::~GLWidget()
{
if( hosts != NULL ) {
for(Inputs::iterator it = hosts->begin(); it != hosts->end(); ++it)
(*it)->end();
(*it)->endProcessing();
}
}

Expand Down Expand Up @@ -342,7 +341,7 @@ void GLWidget::resizeGL(int width, int height) {
void GLWidget::keyPressEvent(QKeyEvent *event) {
if( event->key() == Qt::Key_Escape ) {
for(Inputs::iterator it = hosts->begin(); it != hosts->end(); ++it)
(*it)->end();
(*it)->endProcessing();
hosts = NULL;
QApplication::exit(1);
} else if( event->key() == Qt::Key_Space ) {
Expand Down
3 changes: 3 additions & 0 deletions src/glwidget.h
Expand Up @@ -78,6 +78,9 @@ class GLWidget : public QGLWidget
bool showStats() const { return statsMode; };
bool useRecoil() const { return recoil; };

void setShowLines(int mode) { linesMode = mode; };
void setShowSize(int mode) { sizeMode = mode; };

float getX() const { return x; };
float getY() const { return y; };

Expand Down
112 changes: 3 additions & 109 deletions src/input.cpp
@@ -1,122 +1,16 @@
#include "host.h"
#include "input.h"

#include <QStringList>
#include <iostream>
#include "glwidget.h"

using namespace std;

void Input::start(void) {
proc = new QProcess( this );
void Input::startProcessing() {

proc->setProcessChannelMode(QProcess::SeparateChannels);

connect( proc, SIGNAL(readyReadStandardOutput()), this, SLOT(readFromStdout()) );
connect( proc, SIGNAL(readyReadStandardError()), this, SLOT(readFromStderr()) );
QString cmd = getCommandString();
std::cout << "[" << domain.toStdString() << "] exec[" << cmd.toStdString() << "]" << std::endl;
proc->start( getCommandString() );
proc->waitForStarted();
}

void Input::endProcessing() {

void Input::end( void ) {
cout << "Terminating[" << domain.toStdString() << "]" << endl;
proc->terminate();
proc->waitForFinished(2000);
if( proc->state() == QProcess::Running ) {
cout << "Killing[" << domain.toStdString() << "]" << endl;
proc->kill();
}

}

QString Input::getCommandString() {
QStringList cmd;
cmd << "ssh";
cmd << user + "@" + host;

if( !port.isEmpty() )
cmd << "-p" << port;

cmd << command << args;

return cmd.join(" ");
}

void Input::readFromStdout(void ) {
char buf[2048];

proc->setReadChannel(QProcess::StandardOutput);

while( proc->canReadLine() ) {
qint64 len = proc->readLine(buf, sizeof(buf));
if( len != -1 ) {

// QString apache_pattern("([\\d\\S.]+) (\\S+) (\\S+) \\[([^\\]]+)\\] \"([^\"]*)\" (\\d+) ([\\S]+) \"([^\"]+)\" \"([^\"]+)\"");
QRegExp rx(pattern);

if( rx.indexIn(buf) > -1 ) {
QString url = rx.cap(1);

if( url.contains(" ") ) {
url = url.split(" ")[1];
}

QString referrer = rx.cap(2);

if( ignoreQueryParameters() )
url = url.split("?")[0];

if( !ignore.isEmpty() && url.contains( QRegExp(ignore, Qt::CaseInsensitive) ) ) {
continue;
}

for( int i = 0; i < replacementPatterns.size(); i++ ) {
url.replace( QRegExp(replacementPatterns[i]), replacementStrings[i] );
}

url.replace( QRegExp("/index\\.vsp$"), "/" );

if( referrer.contains( QRegExp("http://(.*\\.)?" + domain) ) || referrer.startsWith("/") ) {
referrer = referrer.split("?")[0];

for( int i = 0; i < replacementPatterns.size(); i++ ) {
referrer.replace( QRegExp(replacementPatterns[i]), replacementStrings[i] );
}
}

referrer.replace( QRegExp("^http://(.*\\.)?" + domain), "");
bool external = false;
if( referrer.contains("http://") ) {
external = true;
referrer.replace("http://", "");
}
// std::cout << "[" << domain.toStdString() << "] " << url.toStdString() << " <- " << (const char*) referrer.toLatin1() << std::endl;

if( url == referrer ) {
referrer = "";
}

gl->addRelation(this, url, referrer, external);

} else {
std::cout << "[" << domain.toStdString() << "] UNKNOWN [" << buf << "]" << std::endl;
}
// glWidget->addRandomElement();
}
}
}

void Input::readFromStderr(void) {
char buf[2048];
std::cout << "STDERR!\n";
proc->setReadChannel(QProcess::StandardError);

while( proc->canReadLine() ) {
qint64 len = proc->readLine(buf, sizeof(buf));
if( len != -1 ) {
std::cout << "[" << domain.toStdString() << "] STDERR [" << buf << "]" << std::endl;
}
}
}
13 changes: 6 additions & 7 deletions src/input.h
Expand Up @@ -9,14 +9,12 @@

class GLWidget;

class Input : public QObject {

Q_OBJECT
class Input {

public:

Input(QObject *parent) : QObject(parent) {};
~Input() {};
Input() {};
virtual ~Input() {};

void setDomain(const QString &d) { domain = d; };
void setColor(const QString &c) { color = QColor(c); };
Expand All @@ -27,10 +25,11 @@ class Input : public QObject {
void setGLWidget(GLWidget *glw) { gl = glw; };
GLWidget *getGLWidget() const { return gl; };

void setAutoPurge(bool p) {autoPurge = p; };
bool doPurge( void ) const { return autoPurge; };

virtual void start() {};
virtual void end() {};
virtual void startProcessing();
virtual void endProcessing();
protected:
GLWidget *gl;
QString domain;
Expand Down

0 comments on commit fa14046

Please sign in to comment.