From f723ddc3a2b05c06b1085b670822f17ca04b16c5 Mon Sep 17 00:00:00 2001
From: Ayoub Maatouch <48140672+AyoubMaatouch@users.noreply.github.com>
Date: Thu, 30 Jun 2022 06:13:13 +0100
Subject: [PATCH] cleaning and adding a readme
---
Readme.md | 45 +
{webserver => server}/Makefile | 0
{webserver => server}/Server.hpp | 0
{webserver => server}/cgi.cpp | 0
{webserver => server}/errors/403.html | 0
{webserver => server}/errors/404.html | 0
{webserver => server}/errors/405.html | 0
{webserver => server}/errors/413.html | 0
{webserver => server}/errors/414.html | 0
{webserver => server}/errors/501.html | 0
{webserver => server}/helper_tools.cpp | 0
{webserver => server}/helper_tools.hpp | 0
{webserver => server}/main.cpp | 0
{webserver => server}/response.cpp | 0
{webserver => server}/response.hpp | 0
{webserver => server}/socket.cpp | 0
{webserver => server}/socket.hpp | 0
.../folder/file => server/tmp_files/.gitkeep | 0
{webserver => server}/webserv.conf | 0
webserver/basic-php-website/README.md | 27 -
webserver/basic-php-website/catalog.php | 45 -
webserver/basic-php-website/css/style.css | 724 -
webserver/basic-php-website/details.php | 96 -
webserver/basic-php-website/finawa.gif | Bin 3434071 -> 0 bytes
webserver/basic-php-website/hell.html | 197 -
.../img/banner-link-arrow.png | Bin 1303 -> 0 bytes
.../basic-php-website/img/branding-title.png | Bin 4043 -> 0 bytes
.../basic-php-website/img/media/beethoven.jpg | Bin 26827 -> 0 bytes
.../img/media/clean_code.jpg | Bin 34789 -> 0 bytes
.../img/media/clean_coder.jpg | Bin 48799 -> 0 bytes
.../img/media/design_patterns.jpg | Bin 40837 -> 0 bytes
.../img/media/elvis_presley.gif | Bin 9594 -> 0 bytes
.../img/media/elvis_presley.jpg | Bin 49563 -> 0 bytes
.../img/media/forest_gump.jpg | Bin 13466 -> 0 bytes
.../img/media/garth_brooks.jpg | Bin 25763 -> 0 bytes
.../basic-php-website/img/media/lotr.jpg | Bin 18709 -> 0 bytes
.../img/media/nat_king_cole.jpg | Bin 33443 -> 0 bytes
.../img/media/office_space.jpg | Bin 14328 -> 0 bytes
.../img/media/princess_bride.jpg | Bin 19624 -> 0 bytes
.../img/media/refactoring.jpg | Bin 33277 -> 0 bytes
.../basic-php-website/img/nav-sprite.png | Bin 8575 -> 0 bytes
webserver/basic-php-website/inc/data.php | 186 -
webserver/basic-php-website/inc/footer.php | 19 -
webserver/basic-php-website/inc/functions.php | 28 -
webserver/basic-php-website/inc/header.php | 25 -
.../inc/phpmailer/Exception.php | 39 -
.../inc/phpmailer/PHPMailer.php | 4408 ------
.../basic-php-website/inc/phpmailer/SMTP.php | 1325 --
webserver/basic-php-website/index.php | 28 -
webserver/basic-php-website/styles.css | 38 -
webserver/basic-php-website/suggest.php | 429 -
webserver/cgi_scripts/form.perl | 36 -
webserver/cgi_scripts/hello.html | 7 -
webserver/cgi_scripts/index.php | 63 -
webserver/cgi_scripts/index.py | 5 -
webserver/cgi_scripts/old_cgi.cpp | 109 -
webserver/cgi_scripts/set_cookie.php | 10 -
webserver/public/autoindex.css | 38 -
webserver/public/autoindex.html | 16 -
webserver/public/favicon.ico | Bin 28669 -> 0 bytes
webserver/public/finawa.gif | Bin 3434071 -> 0 bytes
webserver/public/folder/wrw | 0
webserver/public/folder/x | 1 -
webserver/public/index.html | 36 -
webserver/public/myerror.html | 15 -
webserver/public/okbye.gif | Bin 419788 -> 0 bytes
webserver/public/redirection.html | 23 -
webserver/public/styles.css | 39 -
webserver/public/test/5k_image.jpeg | Bin 6725466 -> 0 bytes
webserver/public/test/index.html | 13 -
webserver/public/test/upload.php | 49 -
webserver/public/tour/index.html | 36 -
webserver/public/uploaded_file | Bin 44635 -> 0 bytes
webserver/public/west.mp4 | Bin 1833764 -> 0 bytes
webserver/simple/assets/css/style.css | 890 --
.../simple/assets/img/apple-touch-icon.png | Bin 1738 -> 0 bytes
webserver/simple/assets/img/favicon.png | Bin 491 -> 0 bytes
webserver/simple/assets/img/hero-bg.jpg | Bin 171940 -> 0 bytes
webserver/simple/assets/img/img_1.jpg | Bin 53225 -> 0 bytes
webserver/simple/assets/img/img_2.jpg | Bin 42386 -> 0 bytes
webserver/simple/assets/img/img_3.jpg | Bin 30221 -> 0 bytes
webserver/simple/assets/img/img_4.jpg | Bin 25887 -> 0 bytes
webserver/simple/assets/img/logo.png | Bin 3992 -> 0 bytes
webserver/simple/assets/img/person_1.jpg | Bin 342510 -> 0 bytes
webserver/simple/assets/img/person_2.jpg | Bin 62116 -> 0 bytes
webserver/simple/assets/img/person_3.jpg | Bin 43992 -> 0 bytes
webserver/simple/assets/img/phone1.png | Bin 305367 -> 0 bytes
webserver/simple/assets/img/phone2.png | Bin 964193 -> 0 bytes
webserver/simple/assets/img/phone_1.png | Bin 14898 -> 0 bytes
webserver/simple/assets/img/phone_2.png | Bin 34903 -> 0 bytes
webserver/simple/assets/img/undraw_svg_1.svg | 1 -
webserver/simple/assets/img/undraw_svg_2.svg | 1 -
webserver/simple/assets/img/undraw_svg_3.svg | 1 -
webserver/simple/assets/img/undraw_svg_4.svg | 1 -
webserver/simple/assets/js/main.js | 124 -
webserver/simple/assets/vendor/aos/aos.css | 1 -
webserver/simple/assets/vendor/aos/aos.js | 1 -
.../bootstrap-icons/bootstrap-icons.css | 1390 --
.../bootstrap-icons/bootstrap-icons.json | 1372 --
.../fonts/bootstrap-icons.woff | Bin 120468 -> 0 bytes
.../fonts/bootstrap-icons.woff2 | Bin 90528 -> 0 bytes
.../assets/vendor/bootstrap-icons/index.html | 5527 --------
.../vendor/bootstrap/css/bootstrap-grid.css | 5051 -------
.../bootstrap/css/bootstrap-grid.css.map | 1 -
.../bootstrap/css/bootstrap-grid.min.css | 7 -
.../bootstrap/css/bootstrap-grid.min.css.map | 1 -
.../bootstrap/css/bootstrap-grid.rtl.css | 5050 -------
.../bootstrap/css/bootstrap-grid.rtl.css.map | 1 -
.../bootstrap/css/bootstrap-grid.rtl.min.css | 7 -
.../css/bootstrap-grid.rtl.min.css.map | 1 -
.../vendor/bootstrap/css/bootstrap-reboot.css | 481 -
.../bootstrap/css/bootstrap-reboot.css.map | 1 -
.../bootstrap/css/bootstrap-reboot.min.css | 8 -
.../css/bootstrap-reboot.min.css.map | 1 -
.../bootstrap/css/bootstrap-reboot.rtl.css | 478 -
.../css/bootstrap-reboot.rtl.css.map | 1 -
.../css/bootstrap-reboot.rtl.min.css | 8 -
.../css/bootstrap-reboot.rtl.min.css.map | 1 -
.../bootstrap/css/bootstrap-utilities.css | 4866 -------
.../bootstrap/css/bootstrap-utilities.css.map | 1 -
.../bootstrap/css/bootstrap-utilities.min.css | 7 -
.../css/bootstrap-utilities.min.css.map | 1 -
.../bootstrap/css/bootstrap-utilities.rtl.css | 4857 -------
.../css/bootstrap-utilities.rtl.css.map | 1 -
.../css/bootstrap-utilities.rtl.min.css | 7 -
.../css/bootstrap-utilities.rtl.min.css.map | 1 -
.../assets/vendor/bootstrap/css/bootstrap.css | 11222 ----------------
.../vendor/bootstrap/css/bootstrap.css.map | 1 -
.../vendor/bootstrap/css/bootstrap.min.css | 7 -
.../bootstrap/css/bootstrap.min.css.map | 1 -
.../vendor/bootstrap/css/bootstrap.rtl.css | 11198 ---------------
.../bootstrap/css/bootstrap.rtl.css.map | 1 -
.../bootstrap/css/bootstrap.rtl.min.css | 7 -
.../bootstrap/css/bootstrap.rtl.min.css.map | 1 -
.../vendor/bootstrap/js/bootstrap.bundle.js | 6812 ----------
.../bootstrap/js/bootstrap.bundle.js.map | 1 -
.../bootstrap/js/bootstrap.bundle.min.js | 7 -
.../bootstrap/js/bootstrap.bundle.min.js.map | 1 -
.../vendor/bootstrap/js/bootstrap.esm.js | 4999 -------
.../vendor/bootstrap/js/bootstrap.esm.js.map | 1 -
.../vendor/bootstrap/js/bootstrap.esm.min.js | 7 -
.../bootstrap/js/bootstrap.esm.min.js.map | 1 -
.../assets/vendor/bootstrap/js/bootstrap.js | 5048 -------
.../vendor/bootstrap/js/bootstrap.js.map | 1 -
.../vendor/bootstrap/js/bootstrap.min.js | 7 -
.../vendor/bootstrap/js/bootstrap.min.js.map | 1 -
.../assets/vendor/boxicons/css/animations.css | 386 -
.../assets/vendor/boxicons/css/boxicons.css | 5098 -------
.../vendor/boxicons/css/boxicons.min.css | 1 -
.../vendor/boxicons/css/transformations.css | 30 -
.../assets/vendor/boxicons/fonts/boxicons.eot | Bin 292572 -> 0 bytes
.../assets/vendor/boxicons/fonts/boxicons.svg | 1551 ---
.../assets/vendor/boxicons/fonts/boxicons.ttf | Bin 292404 -> 0 bytes
.../vendor/boxicons/fonts/boxicons.woff | Bin 292480 -> 0 bytes
.../vendor/boxicons/fonts/boxicons.woff2 | Bin 102988 -> 0 bytes
.../assets/vendor/php-email-form/validate.js | 85 -
.../vendor/swiper/swiper-bundle.min.css | 13 -
.../assets/vendor/swiper/swiper-bundle.min.js | 14 -
webserver/simple/file1.txt | 0
webserver/simple/finawa.gif | Bin 3434071 -> 0 bytes
webserver/simple/index.html | 235 -
webserver/simple/main | Bin 217164 -> 0 bytes
webserver/template/css/bootstrap.min.css | 7 -
webserver/template/css/fontAwesome.css | 2337 ----
.../template/css/fonts/flexslider-icon.eot | Bin 2082 -> 0 bytes
.../template/css/fonts/flexslider-icon.svg | 19 -
.../template/css/fonts/flexslider-icon.ttf | Bin 1892 -> 0 bytes
.../template/css/fonts/flexslider-icon.woff | Bin 1268 -> 0 bytes
webserver/template/css/hero-slider.css | 679 -
webserver/template/css/owl-carousel.css | 210 -
webserver/template/css/templatemo-main.css | 756 --
webserver/template/directory.png | Bin 572 -> 0 bytes
webserver/template/file.png | Bin 360 -> 0 bytes
webserver/template/fonts/FontAwesome.otf | Bin 134808 -> 0 bytes
.../template/fonts/fontawesome-webfont.eot | Bin 165742 -> 0 bytes
.../template/fonts/fontawesome-webfont.svg | 2671 ----
.../template/fonts/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes
.../template/fonts/fontawesome-webfont.woff | Bin 98024 -> 0 bytes
.../template/fonts/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes
.../fonts/glyphicons-halflings-regular.eot | Bin 20335 -> 0 bytes
.../fonts/glyphicons-halflings-regular.svg | 229 -
.../fonts/glyphicons-halflings-regular.ttf | Bin 41280 -> 0 bytes
.../fonts/glyphicons-halflings-regular.woff | Bin 23320 -> 0 bytes
webserver/template/img/1st-big-item.jpg | Bin 243684 -> 0 bytes
webserver/template/img/1st-item.jpg | Bin 27352 -> 0 bytes
webserver/template/img/1st-section.jpg | Bin 368028 -> 0 bytes
webserver/template/img/1st-tab.jpg | Bin 131949 -> 0 bytes
webserver/template/img/2nd-big-item.jpg | Bin 589394 -> 0 bytes
webserver/template/img/2nd-item.jpg | Bin 32447 -> 0 bytes
webserver/template/img/2nd-section.jpg | Bin 208407 -> 0 bytes
webserver/template/img/2nd-tab.jpg | Bin 54043 -> 0 bytes
webserver/template/img/3rd-big-item.jpg | Bin 201903 -> 0 bytes
webserver/template/img/3rd-item.jpg | Bin 22536 -> 0 bytes
webserver/template/img/3rd-section.jpg | Bin 64771 -> 0 bytes
webserver/template/img/3rd-tab.jpg | Bin 27346 -> 0 bytes
webserver/template/img/4th-big-item.jpg | Bin 221014 -> 0 bytes
webserver/template/img/4th-item.jpg | Bin 8376 -> 0 bytes
webserver/template/img/4th-section.jpg | Bin 56607 -> 0 bytes
webserver/template/img/4th-tab.jpg | Bin 81495 -> 0 bytes
webserver/template/img/5th-big-item.jpg | Bin 167404 -> 0 bytes
webserver/template/img/5th-item.jpg | Bin 18032 -> 0 bytes
webserver/template/img/5th-section.jpg | Bin 325498 -> 0 bytes
webserver/template/img/6th-big-item.jpg | Bin 291027 -> 0 bytes
webserver/template/img/6th-item.jpg | Bin 25148 -> 0 bytes
webserver/template/img/close.png | Bin 280 -> 0 bytes
webserver/template/img/loading.gif | Bin 8476 -> 0 bytes
webserver/template/img/next.png | Bin 1350 -> 0 bytes
webserver/template/img/prev.png | Bin 1360 -> 0 bytes
webserver/template/index.html | 344 -
webserver/template/js/main.js | 60 -
webserver/template/js/plugins.js | 2031 ---
webserver/template/js/vendor/bootstrap.min.js | 7 -
.../template/js/vendor/jquery-1.11.2.min.js | 4 -
.../modernizr-2.8.3-respond-1.4.2.min.js | 11 -
webserver/template/js/vendor/npm.js | 13 -
webserver/template/log | 170 -
webserver/template/prepros-6.config | 246 -
webserver/test/index.html | 12 -
webserver/test/style.css | 5 -
webserver/touch/file1.txt | 0
webserver/touch/file3.txt | 0
webserver/touch/file4.txt | 0
webserver/touch/file5.txt | 0
webserver/touch/file6.txt | 0
webserver/touch/image.png | Bin 1164145 -> 0 bytes
225 files changed, 45 insertions(+), 94806 deletions(-)
create mode 100644 Readme.md
rename {webserver => server}/Makefile (100%)
rename {webserver => server}/Server.hpp (100%)
rename {webserver => server}/cgi.cpp (100%)
rename {webserver => server}/errors/403.html (100%)
rename {webserver => server}/errors/404.html (100%)
rename {webserver => server}/errors/405.html (100%)
rename {webserver => server}/errors/413.html (100%)
rename {webserver => server}/errors/414.html (100%)
rename {webserver => server}/errors/501.html (100%)
rename {webserver => server}/helper_tools.cpp (100%)
rename {webserver => server}/helper_tools.hpp (100%)
rename {webserver => server}/main.cpp (100%)
rename {webserver => server}/response.cpp (100%)
rename {webserver => server}/response.hpp (100%)
rename {webserver => server}/socket.cpp (100%)
rename {webserver => server}/socket.hpp (100%)
rename webserver/public/folder/file => server/tmp_files/.gitkeep (100%)
rename {webserver => server}/webserv.conf (100%)
delete mode 100755 webserver/basic-php-website/README.md
delete mode 100755 webserver/basic-php-website/catalog.php
delete mode 100755 webserver/basic-php-website/css/style.css
delete mode 100755 webserver/basic-php-website/details.php
delete mode 100644 webserver/basic-php-website/finawa.gif
delete mode 100644 webserver/basic-php-website/hell.html
delete mode 100755 webserver/basic-php-website/img/banner-link-arrow.png
delete mode 100755 webserver/basic-php-website/img/branding-title.png
delete mode 100755 webserver/basic-php-website/img/media/beethoven.jpg
delete mode 100755 webserver/basic-php-website/img/media/clean_code.jpg
delete mode 100755 webserver/basic-php-website/img/media/clean_coder.jpg
delete mode 100755 webserver/basic-php-website/img/media/design_patterns.jpg
delete mode 100755 webserver/basic-php-website/img/media/elvis_presley.gif
delete mode 100755 webserver/basic-php-website/img/media/elvis_presley.jpg
delete mode 100755 webserver/basic-php-website/img/media/forest_gump.jpg
delete mode 100755 webserver/basic-php-website/img/media/garth_brooks.jpg
delete mode 100755 webserver/basic-php-website/img/media/lotr.jpg
delete mode 100755 webserver/basic-php-website/img/media/nat_king_cole.jpg
delete mode 100755 webserver/basic-php-website/img/media/office_space.jpg
delete mode 100755 webserver/basic-php-website/img/media/princess_bride.jpg
delete mode 100755 webserver/basic-php-website/img/media/refactoring.jpg
delete mode 100755 webserver/basic-php-website/img/nav-sprite.png
delete mode 100755 webserver/basic-php-website/inc/data.php
delete mode 100755 webserver/basic-php-website/inc/footer.php
delete mode 100755 webserver/basic-php-website/inc/functions.php
delete mode 100755 webserver/basic-php-website/inc/header.php
delete mode 100755 webserver/basic-php-website/inc/phpmailer/Exception.php
delete mode 100755 webserver/basic-php-website/inc/phpmailer/PHPMailer.php
delete mode 100755 webserver/basic-php-website/inc/phpmailer/SMTP.php
delete mode 100755 webserver/basic-php-website/index.php
delete mode 100644 webserver/basic-php-website/styles.css
delete mode 100755 webserver/basic-php-website/suggest.php
delete mode 100644 webserver/cgi_scripts/form.perl
delete mode 100644 webserver/cgi_scripts/hello.html
delete mode 100644 webserver/cgi_scripts/index.php
delete mode 100644 webserver/cgi_scripts/index.py
delete mode 100644 webserver/cgi_scripts/old_cgi.cpp
delete mode 100644 webserver/cgi_scripts/set_cookie.php
delete mode 100644 webserver/public/autoindex.css
delete mode 100644 webserver/public/autoindex.html
delete mode 100755 webserver/public/favicon.ico
delete mode 100644 webserver/public/finawa.gif
delete mode 100644 webserver/public/folder/wrw
delete mode 100644 webserver/public/folder/x
delete mode 100644 webserver/public/index.html
delete mode 100644 webserver/public/myerror.html
delete mode 100644 webserver/public/okbye.gif
delete mode 100644 webserver/public/redirection.html
delete mode 100644 webserver/public/styles.css
delete mode 100644 webserver/public/test/5k_image.jpeg
delete mode 100755 webserver/public/test/index.html
delete mode 100644 webserver/public/test/upload.php
delete mode 100644 webserver/public/tour/index.html
delete mode 100644 webserver/public/uploaded_file
delete mode 100644 webserver/public/west.mp4
delete mode 100644 webserver/simple/assets/css/style.css
delete mode 100644 webserver/simple/assets/img/apple-touch-icon.png
delete mode 100644 webserver/simple/assets/img/favicon.png
delete mode 100644 webserver/simple/assets/img/hero-bg.jpg
delete mode 100644 webserver/simple/assets/img/img_1.jpg
delete mode 100644 webserver/simple/assets/img/img_2.jpg
delete mode 100644 webserver/simple/assets/img/img_3.jpg
delete mode 100644 webserver/simple/assets/img/img_4.jpg
delete mode 100644 webserver/simple/assets/img/logo.png
delete mode 100644 webserver/simple/assets/img/person_1.jpg
delete mode 100644 webserver/simple/assets/img/person_2.jpg
delete mode 100644 webserver/simple/assets/img/person_3.jpg
delete mode 100644 webserver/simple/assets/img/phone1.png
delete mode 100644 webserver/simple/assets/img/phone2.png
delete mode 100644 webserver/simple/assets/img/phone_1.png
delete mode 100644 webserver/simple/assets/img/phone_2.png
delete mode 100644 webserver/simple/assets/img/undraw_svg_1.svg
delete mode 100644 webserver/simple/assets/img/undraw_svg_2.svg
delete mode 100644 webserver/simple/assets/img/undraw_svg_3.svg
delete mode 100644 webserver/simple/assets/img/undraw_svg_4.svg
delete mode 100644 webserver/simple/assets/js/main.js
delete mode 100644 webserver/simple/assets/vendor/aos/aos.css
delete mode 100644 webserver/simple/assets/vendor/aos/aos.js
delete mode 100644 webserver/simple/assets/vendor/bootstrap-icons/bootstrap-icons.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap-icons/bootstrap-icons.json
delete mode 100644 webserver/simple/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff
delete mode 100644 webserver/simple/assets/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2
delete mode 100644 webserver/simple/assets/vendor/bootstrap-icons/index.html
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.rtl.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.rtl.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-grid.rtl.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-reboot.rtl.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap-utilities.rtl.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.rtl.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.rtl.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.rtl.min.css
delete mode 100644 webserver/simple/assets/vendor/bootstrap/css/bootstrap.rtl.min.css.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.bundle.js
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.bundle.js.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.bundle.min.js
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.bundle.min.js.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.esm.js
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.esm.js.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.esm.min.js
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.esm.min.js.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.js
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.js.map
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.min.js
delete mode 100644 webserver/simple/assets/vendor/bootstrap/js/bootstrap.min.js.map
delete mode 100644 webserver/simple/assets/vendor/boxicons/css/animations.css
delete mode 100644 webserver/simple/assets/vendor/boxicons/css/boxicons.css
delete mode 100644 webserver/simple/assets/vendor/boxicons/css/boxicons.min.css
delete mode 100644 webserver/simple/assets/vendor/boxicons/css/transformations.css
delete mode 100644 webserver/simple/assets/vendor/boxicons/fonts/boxicons.eot
delete mode 100644 webserver/simple/assets/vendor/boxicons/fonts/boxicons.svg
delete mode 100644 webserver/simple/assets/vendor/boxicons/fonts/boxicons.ttf
delete mode 100644 webserver/simple/assets/vendor/boxicons/fonts/boxicons.woff
delete mode 100644 webserver/simple/assets/vendor/boxicons/fonts/boxicons.woff2
delete mode 100644 webserver/simple/assets/vendor/php-email-form/validate.js
delete mode 100644 webserver/simple/assets/vendor/swiper/swiper-bundle.min.css
delete mode 100644 webserver/simple/assets/vendor/swiper/swiper-bundle.min.js
delete mode 100644 webserver/simple/file1.txt
delete mode 100644 webserver/simple/finawa.gif
delete mode 100644 webserver/simple/index.html
delete mode 100755 webserver/simple/main
delete mode 100755 webserver/template/css/bootstrap.min.css
delete mode 100755 webserver/template/css/fontAwesome.css
delete mode 100755 webserver/template/css/fonts/flexslider-icon.eot
delete mode 100755 webserver/template/css/fonts/flexslider-icon.svg
delete mode 100755 webserver/template/css/fonts/flexslider-icon.ttf
delete mode 100755 webserver/template/css/fonts/flexslider-icon.woff
delete mode 100755 webserver/template/css/hero-slider.css
delete mode 100755 webserver/template/css/owl-carousel.css
delete mode 100755 webserver/template/css/templatemo-main.css
delete mode 100644 webserver/template/directory.png
delete mode 100644 webserver/template/file.png
delete mode 100755 webserver/template/fonts/FontAwesome.otf
delete mode 100755 webserver/template/fonts/fontawesome-webfont.eot
delete mode 100755 webserver/template/fonts/fontawesome-webfont.svg
delete mode 100755 webserver/template/fonts/fontawesome-webfont.ttf
delete mode 100755 webserver/template/fonts/fontawesome-webfont.woff
delete mode 100755 webserver/template/fonts/fontawesome-webfont.woff2
delete mode 100755 webserver/template/fonts/glyphicons-halflings-regular.eot
delete mode 100755 webserver/template/fonts/glyphicons-halflings-regular.svg
delete mode 100755 webserver/template/fonts/glyphicons-halflings-regular.ttf
delete mode 100755 webserver/template/fonts/glyphicons-halflings-regular.woff
delete mode 100755 webserver/template/img/1st-big-item.jpg
delete mode 100755 webserver/template/img/1st-item.jpg
delete mode 100755 webserver/template/img/1st-section.jpg
delete mode 100755 webserver/template/img/1st-tab.jpg
delete mode 100755 webserver/template/img/2nd-big-item.jpg
delete mode 100755 webserver/template/img/2nd-item.jpg
delete mode 100755 webserver/template/img/2nd-section.jpg
delete mode 100755 webserver/template/img/2nd-tab.jpg
delete mode 100755 webserver/template/img/3rd-big-item.jpg
delete mode 100755 webserver/template/img/3rd-item.jpg
delete mode 100755 webserver/template/img/3rd-section.jpg
delete mode 100755 webserver/template/img/3rd-tab.jpg
delete mode 100755 webserver/template/img/4th-big-item.jpg
delete mode 100755 webserver/template/img/4th-item.jpg
delete mode 100755 webserver/template/img/4th-section.jpg
delete mode 100755 webserver/template/img/4th-tab.jpg
delete mode 100755 webserver/template/img/5th-big-item.jpg
delete mode 100755 webserver/template/img/5th-item.jpg
delete mode 100755 webserver/template/img/5th-section.jpg
delete mode 100755 webserver/template/img/6th-big-item.jpg
delete mode 100755 webserver/template/img/6th-item.jpg
delete mode 100755 webserver/template/img/close.png
delete mode 100755 webserver/template/img/loading.gif
delete mode 100755 webserver/template/img/next.png
delete mode 100755 webserver/template/img/prev.png
delete mode 100755 webserver/template/index.html
delete mode 100755 webserver/template/js/main.js
delete mode 100755 webserver/template/js/plugins.js
delete mode 100755 webserver/template/js/vendor/bootstrap.min.js
delete mode 100755 webserver/template/js/vendor/jquery-1.11.2.min.js
delete mode 100755 webserver/template/js/vendor/modernizr-2.8.3-respond-1.4.2.min.js
delete mode 100755 webserver/template/js/vendor/npm.js
delete mode 100644 webserver/template/log
delete mode 100755 webserver/template/prepros-6.config
delete mode 100644 webserver/test/index.html
delete mode 100644 webserver/test/style.css
delete mode 100755 webserver/touch/file1.txt
delete mode 100644 webserver/touch/file3.txt
delete mode 100644 webserver/touch/file4.txt
delete mode 100644 webserver/touch/file5.txt
delete mode 100644 webserver/touch/file6.txt
delete mode 100644 webserver/touch/image.png
diff --git a/Readme.md b/Readme.md
new file mode 100644
index 0000000..ea95b87
--- /dev/null
+++ b/Readme.md
@@ -0,0 +1,45 @@
+# WebServer
+## because reinventing the wheel is an option
+### Features:
+- HTTP 1.1 compliant
+- Never block and client can be bounced properly
+- Non-blocking I/O operations
+- Listen to multiple IPs
+- Listen to multiple ports
+- Methods: GET, POST, DELETE
+- Able to upload files
+- Able to serve a fully static website.
+- Supports multipale CGIs.
+- Custom error pages
+- High availablity
+- Resilient! Server never dies :slightly_smiling_face:
+- `poll()` as the default event monitor
+### Usage
+``` bash
+$ make -C server/
+$ ./webserver server/webserver.conf
+```
+
+### Setup Configue file
+ ```yaml
+ server:
+ host: 127.0.0.1
+ port: 5050
+ server_name: example.com
+ location:
+ allowed_method: get delete post
+ path: /
+ root: /Users/aymaatou/Desktop/WebServer/webserver/public
+ index: index.html index.php ..
+ upload: "upload/path"
+ auto_index: on || off
+ cgi:
+ php: "path/to/php-cgi"
+ py: "path/to/python"
+ perl: "path/to/perl"
+ redirection:
+ status: redirection_code
+ url: 'url'
+ error_page:
+ status_code: costume_error_page.html
+```
diff --git a/webserver/Makefile b/server/Makefile
similarity index 100%
rename from webserver/Makefile
rename to server/Makefile
diff --git a/webserver/Server.hpp b/server/Server.hpp
similarity index 100%
rename from webserver/Server.hpp
rename to server/Server.hpp
diff --git a/webserver/cgi.cpp b/server/cgi.cpp
similarity index 100%
rename from webserver/cgi.cpp
rename to server/cgi.cpp
diff --git a/webserver/errors/403.html b/server/errors/403.html
similarity index 100%
rename from webserver/errors/403.html
rename to server/errors/403.html
diff --git a/webserver/errors/404.html b/server/errors/404.html
similarity index 100%
rename from webserver/errors/404.html
rename to server/errors/404.html
diff --git a/webserver/errors/405.html b/server/errors/405.html
similarity index 100%
rename from webserver/errors/405.html
rename to server/errors/405.html
diff --git a/webserver/errors/413.html b/server/errors/413.html
similarity index 100%
rename from webserver/errors/413.html
rename to server/errors/413.html
diff --git a/webserver/errors/414.html b/server/errors/414.html
similarity index 100%
rename from webserver/errors/414.html
rename to server/errors/414.html
diff --git a/webserver/errors/501.html b/server/errors/501.html
similarity index 100%
rename from webserver/errors/501.html
rename to server/errors/501.html
diff --git a/webserver/helper_tools.cpp b/server/helper_tools.cpp
similarity index 100%
rename from webserver/helper_tools.cpp
rename to server/helper_tools.cpp
diff --git a/webserver/helper_tools.hpp b/server/helper_tools.hpp
similarity index 100%
rename from webserver/helper_tools.hpp
rename to server/helper_tools.hpp
diff --git a/webserver/main.cpp b/server/main.cpp
similarity index 100%
rename from webserver/main.cpp
rename to server/main.cpp
diff --git a/webserver/response.cpp b/server/response.cpp
similarity index 100%
rename from webserver/response.cpp
rename to server/response.cpp
diff --git a/webserver/response.hpp b/server/response.hpp
similarity index 100%
rename from webserver/response.hpp
rename to server/response.hpp
diff --git a/webserver/socket.cpp b/server/socket.cpp
similarity index 100%
rename from webserver/socket.cpp
rename to server/socket.cpp
diff --git a/webserver/socket.hpp b/server/socket.hpp
similarity index 100%
rename from webserver/socket.hpp
rename to server/socket.hpp
diff --git a/webserver/public/folder/file b/server/tmp_files/.gitkeep
similarity index 100%
rename from webserver/public/folder/file
rename to server/tmp_files/.gitkeep
diff --git a/webserver/webserv.conf b/server/webserv.conf
similarity index 100%
rename from webserver/webserv.conf
rename to server/webserv.conf
diff --git a/webserver/basic-php-website/README.md b/webserver/basic-php-website/README.md
deleted file mode 100755
index 90db2ac..0000000
--- a/webserver/basic-php-website/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Basic PHP Website
-===========================================
-
-This project, build a simple website using the PHP programming language. The web site, a media library, will let you organize and display your Books, Movies and Music. Could easily use this project to create a website that lets you organize and display any type of item: Branch Locations, Products, Services, Events, even Courses.
-
-Will learn:
-* Organizing and Displaying Inventory
-* Reusing Code
-* Email and Form Data
-
-I.) Building a Media Library in PHP
-
-Our media website will have a number of pages, but the pages share a few common elements like the top navigation menu and the footer. We’ll build these shared elements into a set of template files, using basic programming concepts like variables and conditionals to make it all work.
-
-II.) Listing and Sorting Inventory Items
-
-Media library contains quite a bit of information, too much to fit in simple variables. A PHP array will be perfect for the task, and we’ll explore all the ins and outs of working with arrays to store sets of related data. Use the data from the array to populate our category pages that shows a list of all the media in our catalog.
-
-We want to have separate pages for the different categories of media items, but the layout should be the same on each of these pages. We’ll work with PHP functions, blocks of code that can be called from other blocks of code, to make sure that media items are displayed the same across all list pages. PHP comes with a large number of native functions, but it also provides a way to create our own.
-
-III.) Adding a Basic Form
-
-PHP does more than just make a set of HTML files easier to maintain. It also adds advanced functionality to a site that HTML and CSS alone cannot achieve, like sending an email. We’ll create a suggestion form for our website, allowing users to enter a media suggestion into an HTML form and then using PHP to process the form submission.
-
-IV.) Enhancing a Form
-
-Our suggestion form currently checks that the information submitted by visitors to our site is valid, but we need to improve how validation errors get displayed. We’ll enhance the flow of our code that handles form submissions, displaying error messages within the context of the form and carefully avoiding a common security vulnerability by escaping our output.
diff --git a/webserver/basic-php-website/catalog.php b/webserver/basic-php-website/catalog.php
deleted file mode 100755
index eb63f08..0000000
--- a/webserver/basic-php-website/catalog.php
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
Full Catalog > ";
- }
- echo $pageTitle; ?>
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/webserver/basic-php-website/css/style.css b/webserver/basic-php-website/css/style.css
deleted file mode 100755
index f9469b4..0000000
--- a/webserver/basic-php-website/css/style.css
+++ /dev/null
@@ -1,724 +0,0 @@
-/*! normalize.css - http://github.com/necolas/normalize.css */
-
-/* ==========================================================================
- HTML5 display definitions
- ========================================================================== */
-
-/*
- * Corrects `block` display not defined in IE6/7/8/9 & FF3.
- */
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section,
-summary {
- display: block;
-}
-
-/*
- * Corrects `inline-block` display not defined in IE6/7/8/9 & FF3.
- */
-
-audio,
-canvas,
-video {
- display: inline-block;
- *display: inline;
- *zoom: 1;
-}
-
-/*
- * Prevents modern browsers from displaying `audio` without controls.
- * Remove excess height in iOS5 devices.
- */
-
-audio:not([controls]) {
- display: none;
- height: 0;
-}
-
-/*
- * Addresses styling for `hidden` attribute not present in IE7/8/9, FF3, S4.
- * Known issue: no IE6 support.
- */
-
-[hidden] {
- display: none;
-}
-
-/* ==========================================================================
- Base
- ========================================================================== */
-
-/*
- * 1. Corrects text resizing oddly in IE6/7 when body `font-size` is set using
- * `em` units.
- * 2. Prevents iOS text size adjust after orientation change, without disabling
- * user zoom.
- */
-
-html {
- font-size: 100%; /* 1 */
- -webkit-text-size-adjust: 100%; /* 2 */
- -ms-text-size-adjust: 100%; /* 2 */
-}
-
-/*
- * Addresses `font-family` inconsistency between `textarea` and other form
- * elements.
- */
-
-html,
-button,
-input,
-select,
-textarea {
- font-family: sans-serif;
-}
-
-/*
- * Addresses margins handled incorrectly in IE6/7.
- */
-
-body {
- margin: 0;
-}
-
-/* ==========================================================================
- Links
- ========================================================================== */
-
-/*
- * Addresses `outline` inconsistency between Chrome and other browsers.
- */
-a {
- color: #3888c2;
-}
-a:focus {
- outline: thin dotted;
-}
-
-/*
- * Improves readability when focused and also mouse hovered in all browsers.
- * people.opera.com/patrickl/experiments/keyboard/test
- */
-
-a:active,
-a:hover {
- outline: 0;
- color: #285f87;
-}
-
-/* ==========================================================================
- Typography
- ========================================================================== */
-
-/*
- * Addresses font sizes and margins set differently in IE6/7.
- * Addresses font sizes within `section` and `article` in FF4+, Chrome, S5.
- */
-
-h1 {
- font-size: 2em;
- margin: 0.67em 0;
-}
-
-h2 {
- font-size: 1.5em;
- margin: 0.83em 0;
-}
-
-h3 {
- font-size: 1.17em;
- margin: 1em 0;
-}
-
-h4 {
- font-size: 1em;
- margin: 1.33em 0;
-}
-
-h5 {
- font-size: 0.83em;
- margin: 1.67em 0;
-}
-
-h6 {
- font-size: 0.75em;
- margin: 2.33em 0;
-}
-
-/*
- * Addresses styling not present in IE7/8/9, S5, Chrome.
- */
-
-abbr[title] {
- border-bottom: 1px dotted;
-}
-
-/*
- * Addresses style set to `bolder` in FF3+, S4/5, Chrome.
- */
-
-b,
-strong {
- font-weight: bold;
-}
-
-blockquote {
- margin: 1em 40px;
-}
-
-/*
- * Addresses styling not present in S5, Chrome.
- */
-
-dfn {
- font-style: italic;
-}
-
-/*
- * Addresses styling not present in IE6/7/8/9.
- */
-
-mark {
- background: #ff0;
- color: #000;
-}
-
-/*
- * Addresses margins set differently in IE6/7.
- */
-
-p,
-pre {
- margin: 1em 0;
-}
-
-/*
- * Corrects font family set oddly in IE6, S4/5, Chrome.
- * en.wikipedia.org/wiki/User:Davidgothberg/Test59
- */
-
-code,
-kbd,
-pre,
-samp {
- font-family: monospace, serif;
- _font-family: 'courier new', monospace;
- font-size: 1em;
-}
-
-/*
- * Improves readability of pre-formatted text in all browsers.
- */
-
-pre {
- white-space: pre;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-
-/*
- * Addresses CSS quotes not supported in IE6/7.
- */
-
-q {
- quotes: none;
-}
-
-/*
- * Addresses `quotes` property not supported in S4.
- */
-
-q:before,
-q:after {
- content: '';
- content: none;
-}
-
-small {
- font-size: 75%;
-}
-
-/*
- * Prevents `sub` and `sup` affecting `line-height` in all browsers.
- * gist.github.com/413930
- */
-
-sub,
-sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
-}
-
-sup {
- top: -0.5em;
-}
-
-sub {
- bottom: -0.25em;
-}
-
-/* ==========================================================================
- Lists
- ========================================================================== */
-
-/*
- * Addresses margins set differently in IE6/7.
- */
-
-dl,
-menu,
-ol,
-ul {
- margin: 1em 0;
-}
-
-dd {
- margin: 0 0 0 40px;
-}
-
-/*
- * Addresses paddings set differently in IE6/7.
- */
-
-menu,
-ol,
-ul {
- padding: 0 0 0 40px;
-}
-
-/*
- * Corrects list images handled incorrectly in IE7.
- */
-
-nav ul,
-nav ol {
- list-style: none;
- list-style-image: none;
-}
-
-/* ==========================================================================
- Embedded content
- ========================================================================== */
-
-/*
- * 1. Removes border when inside `a` element in IE6/7/8/9, FF3.
- * 2. Improves image quality when scaled in IE7.
- * code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/
- */
-
-img {
- border: 0; /* 1 */
- -ms-interpolation-mode: bicubic; /* 2 */
-}
-
-/*
- * Corrects overflow displayed oddly in IE9.
- */
-
-svg:not(:root) {
- overflow: hidden;
-}
-
-/* ==========================================================================
- Figures
- ========================================================================== */
-
-/*
- * Addresses margin not present in IE6/7/8/9, S5, O11.
- */
-
-figure {
- margin: 0;
-}
-
-/* ==========================================================================
- Forms
- ========================================================================== */
-
-/*
- * Corrects margin displayed oddly in IE6/7.
- */
-
-form {
- margin: 0;
-}
-
-/*
- * Define consistent border, margin, and padding.
- */
-
-fieldset {
- border: 1px solid #c0c0c0;
- margin: 0 2px;
- padding: 0.35em 0.625em 0.75em;
-}
-
-/*
- * 1. Corrects color not being inherited in IE6/7/8/9.
- * 2. Corrects text not wrapping in FF3.
- * 3. Corrects alignment displayed oddly in IE6/7.
- */
-
-legend {
- border: 0; /* 1 */
- padding: 0;
- white-space: normal; /* 2 */
- *margin-left: -7px; /* 3 */
-}
-
-/*
- * 1. Corrects font size not being inherited in all browsers.
- * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome.
- * 3. Improves appearance and consistency in all browsers.
- */
-
-button,
-input,
-select,
-textarea {
- font-size: 100%; /* 1 */
- margin: 0; /* 2 */
- vertical-align: baseline; /* 3 */
- *vertical-align: middle; /* 3 */
-}
-
-/*
- * Addresses FF3/4 setting `line-height` on `input` using `!important` in the
- * UA stylesheet.
- */
-
-button,
-input {
- line-height: normal;
-}
-
-/*
- * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
- * and `video` controls.
- * 2. Corrects inability to style clickable `input` types in iOS.
- * 3. Improves usability and consistency of cursor style between image-type
- * `input` and others.
- * 4. Removes inner spacing in IE7 without affecting normal text inputs.
- * Known issue: inner spacing remains in IE6.
- */
-
-button,
-html input[type="button"], /* 1 */
-input[type="reset"],
-input[type="submit"] {
- -webkit-appearance: button; /* 2 */
- cursor: pointer; /* 3 */
- *overflow: visible; /* 4 */
-}
-
-/*
- * Re-set default cursor for disabled elements.
- */
-
-button[disabled],
-input[disabled] {
- cursor: default;
-}
-
-/*
- * 1. Addresses box sizing set to content-box in IE8/9.
- * 2. Removes excess padding in IE8/9.
- * 3. Removes excess padding in IE7.
- * Known issue: excess padding remains in IE6.
- */
-
-input[type="checkbox"],
-input[type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
- *height: 13px; /* 3 */
- *width: 13px; /* 3 */
-}
-
-/*
- * 1. Addresses `appearance` set to `searchfield` in S5, Chrome.
- * 2. Addresses `box-sizing` set to `border-box` in S5, Chrome (include `-moz`
- * to future-proof).
- */
-
-input[type="search"] {
- -webkit-appearance: textfield; /* 1 */
- -moz-box-sizing: content-box;
- -webkit-box-sizing: content-box; /* 2 */
- box-sizing: content-box;
-}
-
-/*
- * Removes inner padding and search cancel button in S5, Chrome on OS X.
- */
-
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
-}
-
-/*
- * Removes inner padding and border in FF3+.
- */
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
- border: 0;
- padding: 0;
-}
-
-/*
- * 1. Removes default vertical scrollbar in IE6/7/8/9.
- * 2. Improves readability and alignment in all browsers.
- */
-
-textarea {
- overflow: auto; /* 1 */
- vertical-align: top; /* 2 */
-}
-
-/* ==========================================================================
- Tables
- ========================================================================== */
-
-/*
- * Remove most spacing between table cells.
- */
-
-table {
- border-collapse: collapse;
- border-spacing: 0;
- text-align: left;
-}
- table th {
- padding-right: 40px;
- }
-
-html {overflow-y: scroll; overflow-x: hidden;}
-body {font-family: 'Open Sans', sans-serif; background:#f0eeed; color: #676767;}
-
-.wrapper {width: 980px; margin: 0 auto;}
-#content {padding: 20px 0 80px;}
-.header:after {content:"";height:0;display:block;visibility:hidden;clear:both;}
-.header {background: #ef8887; border-bottom: 3px solid #db7a78;}
-.header .branding-title {float: left; margin: 0 0 0 5px; font: 0/0 serif; text-shadow: none; color: transparent; width:225px; height:125px;background:url(../img/branding-title.png) 0 6px no-repeat;padding: 6px 0;}
-.header .branding-title a {display: block; height: 125px; width: 225px;}
-.header .nav {float: right; top: 10; right: 0; margin: 0; position: relative; left: 15px; z-index: 99999999;}
-.header .nav li {display: inline-block; margin: 0; list-style: none;}
-.header .nav li a {
- color: white;
- text-decoration: none;
- display: block;
- line-height: 95px;
- padding: 10px 0 0;
- margin: 0 0 0 50px;
- width: 100px;
- text-align: left;
- background: url('../img/nav-sprite.png') no-repeat 0px 105px;
- white-space: nowrap;
- text-transform: uppercase;
- letter-spacing: 1px;
-}
-.header .nav li.on a {text-decoration:underline;}
-.header .nav li a:hover, .header .nav li a:active {opacity: 0.7;}
-.header .nav li.books a {background-position: 8px -5px;}
-.header .nav li.movies a {background-position: 13px -105px;}
-.header .nav li.music a {background-position: 15px -235px;}
-.header .nav li.suggest a {background-position: 35px -340px;}
-#content {min-height: 400px; background: white;}
-.section.page:after {content:"";display:block;visibility:hidden;height:0;clear:both;}
-.section.page {padding: 34px 0; background: white;}
-.section.page h1 {
- font-size: 24px;
- text-align: center;
- line-height: 1.6;
- font-weight: normal;
-}
-.section.page .media-details h1 {
- text-align: left;
-}
-.section.page p {width: 475px; margin-left: auto; margin-right: auto; }
-.section.page .media-details h1 .price {color: #9d9f4e; padding-right: 10px; font-size: 34px;}
-.section.catalog {padding-bottom: 42px;}
-.section.catalog h2 {
- font-size: 24px;
- text-align: center;
- line-height: 1.6;
- font-weight: normal;
- padding-top: 20px;
-}
-.section.catalog ul.items {margin: 0 0 -17px 0; padding: 0; width: 997px;}
-.section.catalog ul.items li {
- display: inline-block;
- list-style: none;
- width: 204px;
- text-align: center;
- padding: 14px;
- margin: 0 0 17px 17px;
- position: relative;
- left: -17px;
-}
-.section.catalog ul.items li a:hover:after {
- content: '+';
- font-size: 50px; position: absolute; top:35px; right:30px; color: #3888c2; vertical-align: top;
-}
-.section.catalog ul.items li a {
- background: white;
- display: block;
- padding: 30px 0 10px;
- text-decoration: none;
-}
-.details-button {
- color: #888;
-}
-.section.catalog ul.items li a:hover {
- opacity: 1;
- color: #666;
-}
-.section.catalog ul.items li img {
- width: 190px;
- border: 6px solid #f0eeed;
-}
-.section.catalog ul.items li p {
- margin-left: 0;
- margin-right: 0;
- width: auto;
-}
-
-.media-picture {
- float: left;
- width: 400px;
- text-align: center;
- border: 1px solid #d9d9d9;
- padding: 14px;
- background: #f0eeed;
-}
-.media-picture span {
- background: white;
- display: block;
- width: 100%;
- padding: 36px 0 61px;
-}
-.media-picture img {width: 292px;}
-.media-details {
- width: 460px;
- float: right;
-}
-.media-details form {
- margin-left: 0;
-}
-td, th {
- padding: 5px 5px;
-}
-form {width: 475px; margin: 34px auto;}
-form tr, tr {text-align:left;vertical-align: top; padding:2px;}
-form table {width: 475px; margin-bottom: 16px;}
-form th {
- width: 150px;
- vertical-align: middle;
- padding: 8px;
-}
-form td {
- padding: 15px 15px;
-}
-form td select,
-form td input,
-form td textarea {
- width: 100%;
- border-radius: 4px;
- padding: 10px;
- border: 1px solid #a5a5a5;
- font-size: 14px;
- font-family: 'Open Sans', sans-serif;
-}
-form input[type="submit"] {
- width: 475px;
- text-align: center;
- border: 0;
- background: #3888c2;
- color: #FFF;
- -webkit-border-radius: 4px;
- border-radius: 4px;
- font-size: 16px;
- padding: 14px 0 16px;
- font-family: 'Open Sans', sans-serif;
-}
- form input[type="submit"]:hover {
- background: #358dce;
- cursor: pointer;
- }
-
-.search {
- background: #f0eeed;
- border-bottom: 3px solid #dddddd;
- width:100%;
- text-align:right;
-}
-.search form {
- margin: 5px 5px 5px auto;
-}
-.search form input[type="submit"] {
- width: auto;
- text-align: center;
- border: 0;
- background: #3888c2;
- color: #FFF;
- -webkit-border-radius: 4px;
- border-radius: 4px;
- font-size: 16px;
- padding: 6px;
- font-family: 'Open Sans', sans-serif;
-}
-.page p.message {
- background: #ffeca4;
- border: 1px solid #f16702;
- padding: 1em;
- width: 444px;
-}
-.breadcrumbs {
- font-size: 14px;
- font-weight: normal;
- padding: 14px 0 48px;
-}
- .breadcrumbs a {
- text-decoration: none;
- color: #3888c2;
- }
-.note-designer {
- font-size: 14px;
- font-style: italic;
- font-weight: bold;
-}
-
-.footer {
- background: #f0eeed;
- border-top: 3px solid #dddddd;
- padding: 42px 0;
- font-size: 12px;
- color: #a5a5a5;
-}
-.footer ul {margin: 0; padding: 0; float: left;}
-.footer ul li {
- margin: 0;
- padding: 0;
- list-style: none;
- display: inline-block;
-}
-.footer ul li:after {content:" | "}
-.footer ul li:last-child:after {content:"";}
-.footer p {margin: 0; padding-right: 3px;}
-.footer a {text-decoration: none; color: #539def; margin: 0 10px;}
-.footer li:first-child a {margin-left: 4px;}
-.footer a:hover, .footer a:active {text-decoration: underline;}
diff --git a/webserver/basic-php-website/details.php b/webserver/basic-php-website/details.php
deleted file mode 100755
index a01dbdd..0000000
--- a/webserver/basic-php-website/details.php
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/webserver/basic-php-website/finawa.gif b/webserver/basic-php-website/finawa.gif
deleted file mode 100644
index b77f5f13f690fefdc7bb810a77a7de0b86a406e5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3434071
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