diff --git a/commondir.pri b/commondir.pri index d571d55..b896c8e 100755 --- a/commondir.pri +++ b/commondir.pri @@ -1,18 +1,20 @@ # specifying common dirs +# comment following line to build the lib as static library +DEFINES *= QHTTP_DYNAMIC_LIB +# comment following line to trim client classes from build DEFINES *= QHTTP_HAS_CLIENT # Qt5.5.1 on OSX needs both c++11 and c++14!! the c++14 is not enough CONFIG += c++11 c++14 unix { - TEMPDIR = $$PRJDIR/tmp/unix/$$TARGET - macx:TEMPDIR = $$PRJDIR/tmp/osx/$$TARGET + TEMPDIR = $$PRJDIR/tmp/unix/$$TARGET + macx:TEMPDIR = $$PRJDIR/tmp/osx/$$TARGET } win32 { - warning("Windows port of this library has not been tested nor profiled.") - TEMPDIR = $$PRJDIR/tmp/win32/$$TARGET - DEFINES += _WINDOWS WIN32_LEAN_AND_MEAN NOMINMAX + TEMPDIR = $$PRJDIR/tmp/win32/$$TARGET + DEFINES += _WINDOWS WIN32_LEAN_AND_MEAN NOMINMAX } diff --git a/example/example.pro b/example/example.pro index 043b2ce..b17fa64 100644 --- a/example/example.pro +++ b/example/example.pro @@ -1,7 +1,11 @@ TEMPLATE = subdirs -SUBDIRS += helloworld +SUBDIRS += helloworld \ + uStaticServer SUBDIRS += postcollector SUBDIRS += basic-server -SUBDIRS += keep-alive + +contains(DEFINES, QHTTP_HAS_CLIENT) { + SUBDIRS += keep-alive +} diff --git a/example/uStaticServer/main.cpp b/example/uStaticServer/main.cpp new file mode 100644 index 0000000..a080bdd --- /dev/null +++ b/example/uStaticServer/main.cpp @@ -0,0 +1,11 @@ +#include "mainwindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + + return a.exec(); +} diff --git a/example/uStaticServer/mainwindow.cpp b/example/uStaticServer/mainwindow.cpp new file mode 100644 index 0000000..78effe2 --- /dev/null +++ b/example/uStaticServer/mainwindow.cpp @@ -0,0 +1,135 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + + +#include "qhttpserver.hpp" +#include "qhttpserverconnection.hpp" +#include "qhttpserverrequest.hpp" +#include "qhttpserverresponse.hpp" + +#include +#include +#include + +#include "../include/unixcatcher.hpp" + +#include +#include + +#include +#include + +using namespace qhttp::server; +using namespace std; + +#define Y2X(X) #X +#define MAC2STR(Y) Y2X(Y) +#define SITEROOT . + + +map mime; + +QString root="."; +QFileDialog *getD; +map servers; + +void fileProvider(QHttpRequest* req, QHttpResponse* res) +{ + QString docname=root+(req->url().toString()==("/") ?("/index.html"):req->url().toString()) ; + QFile doc(docname); + + if(not doc.open(QFile::ReadOnly)) + { + QByteArray body = "Sorry Not found"; + res->addHeader("Content-Length", QString::number(body.size()).toUtf8()); + res->setStatusCode(qhttp::TStatusCode::ESTATUS_NOT_FOUND); + res->write(body); + return; + } + + try { + auto nm=docname.toStdString(); + auto ext=nm.substr(nm.find_last_of('.')); + res->addHeader("Content-Type",mime[ext].data()); + } catch (...) { + res->addHeader("Content-Type","application/octet-stream"); + } + + res->addHeader("Content-Length", QString::number(doc.size()).toUtf8()); + res->addHeader("Access-Control-Allow-Origin"," * "); + res->addHeader("Access-Control-Allow-Headers","GET,POST,PUT"); + res->setStatusCode(qhttp::TStatusCode::ESTATUS_OK); + res->write(doc.readAll()); +} + + + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + getD=new QFileDialog(); + getD->setFileMode(QFileDialog::Directory); + getD->setOption(QFileDialog::ShowDirsOnly); + + ui->rootE->setText(root); + + if(mime.empty()) + { + QFile fk(":/mime_types.txt"); + fk.open(QIODevice::ReadOnly | QIODevice::Text); + + do + { + QString mime_kv_pair; + mime_kv_pair=fk.readLine(); + auto kv=mime_kv_pair.split("\t"); + mime[kv[0].toStdString()]=kv[1].toStdString(); + }while(fk.canReadLine()); + } + + this->on_addPortBt_clicked(); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + + + + +void MainWindow::on_chRtBt_clicked() +{ + if(getD->exec()) + ui->rootE->setText(root=getD->selectedFiles()[0]); +} + +void MainWindow::on_addPortBt_clicked() +{ + auto np=ui->portE->text(); + if(servers.find(np)==servers.end()) + { + servers[np].listen(np,fileProvider); + if(servers[np].isListening()) + ui->portsE->addItem(np); + else + servers.erase(np); + } +} + +void MainWindow::on_rmPortBt_clicked() +{ + if(ui->portsE->count()>0) + { + servers.erase(ui->portsE->currentItem()->text()); + ui->portsE->takeItem(ui->portsE->currentRow()); + } +} + +void MainWindow::on_rootE_textChanged(const QString &nroot) +{ + root=nroot; +} diff --git a/example/uStaticServer/mainwindow.h b/example/uStaticServer/mainwindow.h new file mode 100644 index 0000000..01a6595 --- /dev/null +++ b/example/uStaticServer/mainwindow.h @@ -0,0 +1,31 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private slots: + void on_chRtBt_clicked(); + + void on_addPortBt_clicked(); + + void on_rmPortBt_clicked(); + + void on_rootE_textChanged(const QString &arg1); + +private: + Ui::MainWindow *ui; +}; + +#endif // MAINWINDOW_H diff --git a/example/uStaticServer/mainwindow.ui b/example/uStaticServer/mainwindow.ui new file mode 100644 index 0000000..a3e5605 --- /dev/null +++ b/example/uStaticServer/mainwindow.ui @@ -0,0 +1,92 @@ + + + MainWindow + + + + 0 + 0 + 174 + 313 + + + + MainWindow + + + + + + + + + + ChangeRoot + + + + + + + Remove Port + + + + + + + Add Port + + + + + + + 65535 + + + 80 + + + + + + + + + + + + 0 + 0 + 174 + 21 + + + + + File + + + + + + + + TopToolBarArea + + + false + + + + + + Exit + + + + + + + diff --git a/example/uStaticServer/mime_list_1.qrc b/example/uStaticServer/mime_list_1.qrc new file mode 100644 index 0000000..50cfc8b --- /dev/null +++ b/example/uStaticServer/mime_list_1.qrc @@ -0,0 +1,5 @@ + + + mime_types.txt + + diff --git a/example/uStaticServer/mime_types.txt b/example/uStaticServer/mime_types.txt new file mode 100644 index 0000000..892866f --- /dev/null +++ b/example/uStaticServer/mime_types.txt @@ -0,0 +1,646 @@ +.3dm x-world/x-3dmf +.3dmf x-world/x-3dmf +.a application/octet-stream +.aab application/x-authorware-bin +.aam application/x-authorware-map +.aas application/x-authorware-seg +.abc text/vnd.abc +.acgi text/html +.afl video/animaflex +.ai application/postscript +.aif audio/aiff +.aif audio/x-aiff +.aifc audio/aiff +.aifc audio/x-aiff +.aiff audio/aiff +.aiff audio/x-aiff +.aim application/x-aim +.aip text/x-audiosoft-intra +.ani application/x-navi-animation +.aos application/x-nokia-9000-communicator-add-on-software +.aps application/mime +.arc application/octet-stream +.arj application/arj +.arj application/octet-stream +.art image/x-jg +.asf video/x-ms-asf +.asm text/x-asm +.asp text/asp +.asx application/x-mplayer2 +.asx video/x-ms-asf +.asx video/x-ms-asf-plugin +.au audio/basic +.au audio/x-au +.avi application/x-troff-msvideo +.avi video/avi +.avi video/msvideo +.avi video/x-msvideo +.avs video/avs-video +.bcpio application/x-bcpio +.bin application/mac-binary +.bin application/macbinary +.bin application/octet-stream +.bin application/x-binary +.bin application/x-macbinary +.bm image/bmp +.bmp image/bmp +.bmp image/x-windows-bmp +.boo application/book +.book application/book +.boz application/x-bzip2 +.bsh application/x-bsh +.bz application/x-bzip +.bz2 application/x-bzip2 +.c text/plain +.c text/x-c +.c++ text/plain +.cat application/vnd.ms-pki.seccat +.cc text/plain +.cc text/x-c +.ccad application/clariscad +.cco application/x-cocoa +.cdf application/cdf +.cdf application/x-cdf +.cdf application/x-netcdf +.cer application/pkix-cert +.cer application/x-x509-ca-cert +.cha application/x-chat +.chat application/x-chat +.class application/java +.class application/java-byte-code +.class application/x-java-class +.com application/octet-stream +.com text/plain +.conf text/plain +.cpio application/x-cpio +.cpp text/x-c +.cpt application/mac-compactpro +.cpt application/x-compactpro +.cpt application/x-cpt +.crl application/pkcs-crl +.crl application/pkix-crl +.crt application/pkix-cert +.crt application/x-x509-ca-cert +.crt application/x-x509-user-cert +.csh application/x-csh +.csh text/x-script.csh +.css application/x-pointplus +.css text/css +.cxx text/plain +.dcr application/x-director +.deepv application/x-deepv +.def text/plain +.der application/x-x509-ca-cert +.dif video/x-dv +.dir application/x-director +.dl video/dl +.dl video/x-dl +.doc application/msword +.dot application/msword +.dp application/commonground +.drw application/drafting +.dump application/octet-stream +.dv video/x-dv +.dvi application/x-dvi +.dwf drawing/x-dwf (old) +.dwf model/vnd.dwf +.dwg application/acad +.dwg image/vnd.dwg +.dwg image/x-dwg +.dxf application/dxf +.dxf image/vnd.dwg +.dxf image/x-dwg +.dxr application/x-director +.el text/x-script.elisp +.elc application/x-bytecode.elisp (compiled elisp) +.elc application/x-elc +.env application/x-envoy +.eps application/postscript +.es application/x-esrehber +.etx text/x-setext +.evy application/envoy +.evy application/x-envoy +.exe application/octet-stream +.f text/plain +.f text/x-fortran +.f77 text/x-fortran +.f90 text/plain +.f90 text/x-fortran +.fdf application/vnd.fdf +.fif application/fractals +.fif image/fif +.fli video/fli +.fli video/x-fli +.flo image/florian +.flx text/vnd.fmi.flexstor +.fmf video/x-atomic3d-feature +.for text/plain +.for text/x-fortran +.fpx image/vnd.fpx +.fpx image/vnd.net-fpx +.frl application/freeloader +.funk audio/make +.g text/plain +.g3 image/g3fax +.gif image/gif +.gl video/gl +.gl video/x-gl +.gsd audio/x-gsm +.gsm audio/x-gsm +.gsp application/x-gsp +.gss application/x-gss +.gtar application/x-gtar +.gz application/x-compressed +.gz application/x-gzip +.gzip application/x-gzip +.gzip multipart/x-gzip +.h text/plain +.h text/x-h +.hdf application/x-hdf +.help application/x-helpfile +.hgl application/vnd.hp-hpgl +.hh text/plain +.hh text/x-h +.hlb text/x-script +.hlp application/hlp +.hlp application/x-helpfile +.hlp application/x-winhelp +.hpg application/vnd.hp-hpgl +.hpgl application/vnd.hp-hpgl +.hqx application/binhex +.hqx application/binhex4 +.hqx application/mac-binhex +.hqx application/mac-binhex40 +.hqx application/x-binhex40 +.hqx application/x-mac-binhex40 +.hta application/hta +.htc text/x-component +.htm text/html +.html text/html +.htmls text/html +.htt text/webviewhtml +.htx text/html +.ice x-conference/x-cooltalk +.ico image/x-icon +.idc text/plain +.ief image/ief +.iefs image/ief +.iges application/iges +.iges model/iges +.igs application/iges +.igs model/iges +.ima application/x-ima +.imap application/x-httpd-imap +.inf application/inf +.ins application/x-internett-signup +.ip application/x-ip2 +.isu video/x-isvideo +.it audio/it +.iv application/x-inventor +.ivr i-world/i-vrml +.ivy application/x-livescreen +.jam audio/x-jam +.jav text/plain +.jav text/x-java-source +.java text/plain +.java text/x-java-source +.jcm application/x-java-commerce +.jfif image/jpeg +.jfif image/pjpeg +.jfif-tbnl image/jpeg +.jpe image/jpeg +.jpe image/pjpeg +.jpeg image/jpeg +.jpeg image/pjpeg +.jpg image/jpeg +.jpg image/pjpeg +.jps image/x-jps +.js application/x-javascript +.js application/javascript +.js application/ecmascript +.js text/javascript +.js text/ecmascript +.jut image/jutvision +.kar audio/midi +.kar music/x-karaoke +.ksh application/x-ksh +.ksh text/x-script.ksh +.la audio/nspaudio +.la audio/x-nspaudio +.lam audio/x-liveaudio +.latex application/x-latex +.lha application/lha +.lha application/octet-stream +.lha application/x-lha +.lhx application/octet-stream +.list text/plain +.lma audio/nspaudio +.lma audio/x-nspaudio +.log text/plain +.lsp application/x-lisp +.lsp text/x-script.lisp +.lst text/plain +.lsx text/x-la-asf +.ltx application/x-latex +.lzh application/octet-stream +.lzh application/x-lzh +.lzx application/lzx +.lzx application/octet-stream +.lzx application/x-lzx +.m text/plain +.m text/x-m +.m1v video/mpeg +.m2a audio/mpeg +.m2v video/mpeg +.m3u audio/x-mpequrl +.man application/x-troff-man +.map application/x-navimap +.mar text/plain +.mbd application/mbedlet +.mc$ application/x-magic-cap-package-1.0 +.mcd application/mcad +.mcd application/x-mathcad +.mcf image/vasa +.mcf text/mcf +.mcp application/netmc +.me application/x-troff-me +.mht message/rfc822 +.mhtml message/rfc822 +.mid application/x-midi +.mid audio/midi +.mid audio/x-mid +.mid audio/x-midi +.mid music/crescendo +.mid x-music/x-midi +.midi application/x-midi +.midi audio/midi +.midi audio/x-mid +.midi audio/x-midi +.midi music/crescendo +.midi x-music/x-midi +.mif application/x-frame +.mif application/x-mif +.mime message/rfc822 +.mime www/mime +.mjf audio/x-vnd.audioexplosion.mjuicemediafile +.mjpg video/x-motion-jpeg +.mm application/base64 +.mm application/x-meme +.mme application/base64 +.mod audio/mod +.mod audio/x-mod +.moov video/quicktime +.mov video/quicktime +.movie video/x-sgi-movie +.mp2 audio/mpeg +.mp2 audio/x-mpeg +.mp2 video/mpeg +.mp2 video/x-mpeg +.mp2 video/x-mpeq2a +.mp3 audio/mpeg3 +.mp3 audio/x-mpeg-3 +.mp3 video/mpeg +.mp3 video/x-mpeg +.mpa audio/mpeg +.mpa video/mpeg +.mpc application/x-project +.mpe video/mpeg +.mpeg video/mpeg +.mpg audio/mpeg +.mpg video/mpeg +.mpga audio/mpeg +.mpp application/vnd.ms-project +.mpt application/x-project +.mpv application/x-project +.mpx application/x-project +.mrc application/marc +.ms application/x-troff-ms +.mv video/x-sgi-movie +.my audio/make +.mzz application/x-vnd.audioexplosion.mzz +.nap image/naplps +.naplps image/naplps +.nc application/x-netcdf +.ncm application/vnd.nokia.configuration-message +.nif image/x-niff +.niff image/x-niff +.nix application/x-mix-transfer +.nsc application/x-conference +.nvd application/x-navidoc +.o application/octet-stream +.oda application/oda +.omc application/x-omc +.omcd application/x-omcdatamaker +.omcr application/x-omcregerator +.p text/x-pascal +.p10 application/pkcs10 +.p10 application/x-pkcs10 +.p12 application/pkcs-12 +.p12 application/x-pkcs12 +.p7a application/x-pkcs7-signature +.p7c application/pkcs7-mime +.p7c application/x-pkcs7-mime +.p7m application/pkcs7-mime +.p7m application/x-pkcs7-mime +.p7r application/x-pkcs7-certreqresp +.p7s application/pkcs7-signature +.part application/pro_eng +.pas text/pascal +.pbm image/x-portable-bitmap +.pcl application/vnd.hp-pcl +.pcl application/x-pcl +.pct image/x-pict +.pcx image/x-pcx +.pdb chemical/x-pdb +.pdf application/pdf +.pfunk audio/make +.pfunk audio/make.my.funk +.pgm image/x-portable-graymap +.pgm image/x-portable-greymap +.pic image/pict +.pict image/pict +.pkg application/x-newton-compatible-pkg +.pko application/vnd.ms-pki.pko +.pl text/plain +.pl text/x-script.perl +.plx application/x-pixclscript +.pm image/x-xpixmap +.pm text/x-script.perl-module +.pm4 application/x-pagemaker +.pm5 application/x-pagemaker +.png image/png +.pnm application/x-portable-anymap +.pnm image/x-portable-anymap +.pot application/mspowerpoint +.pot application/vnd.ms-powerpoint +.pov model/x-pov +.ppa application/vnd.ms-powerpoint +.ppm image/x-portable-pixmap +.pps application/mspowerpoint +.pps application/vnd.ms-powerpoint +.ppt application/mspowerpoint +.ppt application/powerpoint +.ppt application/vnd.ms-powerpoint +.ppt application/x-mspowerpoint +.ppz application/mspowerpoint +.pre application/x-freelance +.prt application/pro_eng +.ps application/postscript +.psd application/octet-stream +.pvu paleovu/x-pv +.pwz application/vnd.ms-powerpoint +.py text/x-script.phyton +.pyc application/x-bytecode.python +.qcp audio/vnd.qcelp +.qd3 x-world/x-3dmf +.qd3d x-world/x-3dmf +.qif image/x-quicktime +.qt video/quicktime +.qtc video/x-qtc +.qti image/x-quicktime +.qtif image/x-quicktime +.ra audio/x-pn-realaudio +.ra audio/x-pn-realaudio-plugin +.ra audio/x-realaudio +.ram audio/x-pn-realaudio +.ras application/x-cmu-raster +.ras image/cmu-raster +.ras image/x-cmu-raster +.rast image/cmu-raster +.rexx text/x-script.rexx +.rf image/vnd.rn-realflash +.rgb image/x-rgb +.rm application/vnd.rn-realmedia +.rm audio/x-pn-realaudio +.rmi audio/mid +.rmm audio/x-pn-realaudio +.rmp audio/x-pn-realaudio +.rmp audio/x-pn-realaudio-plugin +.rng application/ringing-tones +.rng application/vnd.nokia.ringing-tone +.rnx application/vnd.rn-realplayer +.roff application/x-troff +.rp image/vnd.rn-realpix +.rpm audio/x-pn-realaudio-plugin +.rt text/richtext +.rt text/vnd.rn-realtext +.rtf application/rtf +.rtf application/x-rtf +.rtf text/richtext +.rtx application/rtf +.rtx text/richtext +.rv video/vnd.rn-realvideo +.s text/x-asm +.s3m audio/s3m +.saveme application/octet-stream +.sbk application/x-tbook +.scm application/x-lotusscreencam +.scm text/x-script.guile +.scm text/x-script.scheme +.scm video/x-scm +.sdml text/plain +.sdp application/sdp +.sdp application/x-sdp +.sdr application/sounder +.sea application/sea +.sea application/x-sea +.set application/set +.sgm text/sgml +.sgm text/x-sgml +.sgml text/sgml +.sgml text/x-sgml +.sh application/x-bsh +.sh application/x-sh +.sh application/x-shar +.sh text/x-script.sh +.shar application/x-bsh +.shar application/x-shar +.shtml text/html +.shtml text/x-server-parsed-html +.sid audio/x-psid +.sit application/x-sit +.sit application/x-stuffit +.skd application/x-koan +.skm application/x-koan +.skp application/x-koan +.skt application/x-koan +.sl application/x-seelogo +.smi application/smil +.smil application/smil +.snd audio/basic +.snd audio/x-adpcm +.sol application/solids +.spc application/x-pkcs7-certificates +.spc text/x-speech +.spl application/futuresplash +.spr application/x-sprite +.sprite application/x-sprite +.src application/x-wais-source +.ssi text/x-server-parsed-html +.ssm application/streamingmedia +.sst application/vnd.ms-pki.certstore +.step application/step +.stl application/sla +.stl application/vnd.ms-pki.stl +.stl application/x-navistyle +.stp application/step +.sv4cpio application/x-sv4cpio +.sv4crc application/x-sv4crc +.svf image/vnd.dwg +.svf image/x-dwg +.svr application/x-world +.svr x-world/x-svr +.swf application/x-shockwave-flash +.t application/x-troff +.talk text/x-speech +.tar application/x-tar +.tbk application/toolbook +.tbk application/x-tbook +.tcl application/x-tcl +.tcl text/x-script.tcl +.tcsh text/x-script.tcsh +.tex application/x-tex +.texi application/x-texinfo +.texinfo application/x-texinfo +.text application/plain +.text text/plain +.tgz application/gnutar +.tgz application/x-compressed +.tif image/tiff +.tif image/x-tiff +.tiff image/tiff +.tiff image/x-tiff +.tr application/x-troff +.tsi audio/tsp-audio +.tsp application/dsptype +.tsp audio/tsplayer +.tsv text/tab-separated-values +.turbot image/florian +.txt text/plain +.uil text/x-uil +.uni text/uri-list +.unis text/uri-list +.unv application/i-deas +.uri text/uri-list +.uris text/uri-list +.ustar application/x-ustar +.ustar multipart/x-ustar +.uu application/octet-stream +.uu text/x-uuencode +.uue text/x-uuencode +.vcd application/x-cdlink +.vcs text/x-vcalendar +.vda application/vda +.vdo video/vdo +.vew application/groupwise +.viv video/vivo +.viv video/vnd.vivo +.vivo video/vivo +.vivo video/vnd.vivo +.vmd application/vocaltec-media-desc +.vmf application/vocaltec-media-file +.voc audio/voc +.voc audio/x-voc +.vos video/vosaic +.vox audio/voxware +.vqe audio/x-twinvq-plugin +.vqf audio/x-twinvq +.vql audio/x-twinvq-plugin +.vrml application/x-vrml +.vrml model/vrml +.vrml x-world/x-vrml +.vrt x-world/x-vrt +.vsd application/x-visio +.vst application/x-visio +.vsw application/x-visio +.w60 application/wordperfect6.0 +.w61 application/wordperfect6.1 +.w6w application/msword +.wav audio/wav +.wav audio/x-wav +.wb1 application/x-qpro +.wbmp image/vnd.wap.wbmp +.web application/vnd.xara +.wiz application/msword +.wk1 application/x-123 +.wmf windows/metafile +.wml text/vnd.wap.wml +.wmlc application/vnd.wap.wmlc +.wmls text/vnd.wap.wmlscript +.wmlsc application/vnd.wap.wmlscriptc +.word application/msword +.wp application/wordperfect +.wp5 application/wordperfect +.wp5 application/wordperfect6.0 +.wp6 application/wordperfect +.wpd application/wordperfect +.wpd application/x-wpwin +.wq1 application/x-lotus +.wri application/mswrite +.wri application/x-wri +.wrl application/x-world +.wrl model/vrml +.wrl x-world/x-vrml +.wrz model/vrml +.wrz x-world/x-vrml +.wsc text/scriplet +.wsrc application/x-wais-source +.wtk application/x-wintalk +.xbm image/x-xbitmap +.xbm image/x-xbm +.xbm image/xbm +.xdr video/x-amt-demorun +.xgz xgl/drawing +.xif image/vnd.xiff +.xl application/excel +.xla application/excel +.xla application/x-excel +.xla application/x-msexcel +.xlb application/excel +.xlb application/vnd.ms-excel +.xlb application/x-excel +.xlc application/excel +.xlc application/vnd.ms-excel +.xlc application/x-excel +.xld application/excel +.xld application/x-excel +.xlk application/excel +.xlk application/x-excel +.xll application/excel +.xll application/vnd.ms-excel +.xll application/x-excel +.xlm application/excel +.xlm application/vnd.ms-excel +.xlm application/x-excel +.xls application/excel +.xls application/vnd.ms-excel +.xls application/x-excel +.xls application/x-msexcel +.xlt application/excel +.xlt application/x-excel +.xlv application/excel +.xlv application/x-excel +.xlw application/excel +.xlw application/vnd.ms-excel +.xlw application/x-excel +.xlw application/x-msexcel +.xm audio/xm +.xml application/xml +.xml text/xml +.xmz xgl/movie +.xpix application/x-vnd.ls-xpix +.xpm image/x-xpixmap +.xpm image/xpm +.x-png image/png +.xsr video/x-amt-showrun +.xwd image/x-xwd +.xwd image/x-xwindowdump +.xyz chemical/x-pdb +.z application/x-compress +.z application/x-compressed +.zip application/x-compressed +.zip application/x-zip-compressed +.zip application/zip +.zip multipart/x-zip +.zoo application/octet-stream +.zsh text/x-script.zsh diff --git a/example/uStaticServer/uStaticServer.pro b/example/uStaticServer/uStaticServer.pro new file mode 100644 index 0000000..f87d627 --- /dev/null +++ b/example/uStaticServer/uStaticServer.pro @@ -0,0 +1,28 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2017-01-20T01:28:47 +# +#------------------------------------------------- + +QT += core gui network + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = uStaticServer +TEMPLATE = app + + +PRJDIR = ../.. +include($$PRJDIR/commondir.pri) + +SOURCES += main.cpp\ + mainwindow.cpp + +LIBS += -lqhttp + +HEADERS += mainwindow.h + +FORMS += mainwindow.ui + +RESOURCES += \ + mime_list_1.qrc