From 28117760a5f54f60a36b60a68a826fbe4f486e7d Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Fri, 30 Dec 2011 02:41:53 +0000 Subject: [PATCH] Converted homepage to use SihnonFramework and updated content --- .gitignore | 4 + code/auth_mysql.php | 38 --- code/config.php.dist | 103 ------ code/db_mysql.php | 21 -- code/exceptions.php | 41 --- code/functions.php | 78 ----- code/iauthenticator.php | 60 ---- code/iauthorisor.php | 58 ---- code/request_handler.php | 71 ---- code/session_handler.php | 229 ------------- code/validation/ivalidator.php | 115 ------- code/validation/range_validator.php | 40 --- index.php | 82 ----- page-sources/3yp.php | 26 -- page-sources/error.php | 15 - page-sources/home.php | 31 -- page-sources/login.php | 59 ---- page-sources/logout.php | 17 - page-sources/overlay.php | 25 -- page-sources/projects.php | 33 -- private/.gitignore | 4 + private/config.php.dist | 92 +++++ private/dbconfig.conf.dist | 5 + private/htaccess.dist | 16 + private/settings.txt.dist | 35 ++ public/.htaccess | 16 + public/_inc.php | 16 + {files => public/files}/BenRobertsCv.pdf | Bin {resources => public/images}/at.png | Bin {files => public/images}/portrait.jpg | Bin public/images/ripping-cluster/overview.png | Bin 0 -> 64475 bytes public/images/status-board/overview.png | Bin 0 -> 67019 bytes public/index.php | 21 ++ public/scripts/3rdparty/bootstrap-alerts.js | 113 ++++++ public/scripts/3rdparty/bootstrap-dropdown.js | 55 +++ public/scripts/3rdparty/bootstrap-modal.js | 260 ++++++++++++++ public/scripts/3rdparty/bootstrap-popover.js | 90 +++++ public/scripts/3rdparty/bootstrap-tabs.js | 80 +++++ public/scripts/3rdparty/bootstrap-twipsy.js | 321 ++++++++++++++++++ public/scripts/3rdparty/jquery.chained.js | 73 ++++ public/scripts/3rdparty/less-1.1.5.min.js | 16 + public/scripts/main.js | 88 +++++ public/styles/normal.css | 47 +++ resources/email.js | 9 - resources/normal.css | 183 ---------- resources/quote-32.png | Bin 4543 -> 0 bytes resources/rating.php | 36 -- resources/rating_bg.png | Bin 990 -> 0 bytes resources/rating_fg.png | Bin 1139 -> 0 bytes source/lib/Homepage/Main.class.php | 68 ++++ source/webui/pages/errors/401.php | 9 + source/webui/pages/errors/404.php | 9 + .../pages/errors/unhandled-exception.php | 10 + source/webui/templates/cv.tpl | 6 + source/webui/templates/errors/401.tpl | 5 + source/webui/templates/errors/404.tpl | 6 + .../templates/errors/unhandled-exception.tpl | 62 ++++ source/webui/templates/home.tpl | 29 ++ source/webui/templates/index.tpl | 97 ++++++ source/webui/templates/navigation.tpl | 24 ++ source/webui/templates/projects.tpl | 23 ++ source/webui/templates/projects/3yp.tpl | 16 + .../templates/projects/gentoo-overlay.tpl | 22 ++ .../templates/projects/ripping-cluster.tpl | 36 ++ .../templates/projects/sabayon-crepo.tpl | 18 + .../webui/templates/projects/status-board.tpl | 37 ++ templates/default.php | 98 ------ 67 files changed, 1829 insertions(+), 1468 deletions(-) create mode 100644 .gitignore delete mode 100644 code/auth_mysql.php delete mode 100644 code/config.php.dist delete mode 100644 code/db_mysql.php delete mode 100644 code/exceptions.php delete mode 100644 code/functions.php delete mode 100644 code/iauthenticator.php delete mode 100644 code/iauthorisor.php delete mode 100644 code/request_handler.php delete mode 100644 code/session_handler.php delete mode 100644 code/validation/ivalidator.php delete mode 100644 code/validation/range_validator.php delete mode 100644 index.php delete mode 100644 page-sources/3yp.php delete mode 100644 page-sources/error.php delete mode 100644 page-sources/home.php delete mode 100644 page-sources/login.php delete mode 100644 page-sources/logout.php delete mode 100644 page-sources/overlay.php delete mode 100644 page-sources/projects.php create mode 100644 private/.gitignore create mode 100644 private/config.php.dist create mode 100644 private/dbconfig.conf.dist create mode 100644 private/htaccess.dist create mode 100644 private/settings.txt.dist create mode 100644 public/.htaccess create mode 100644 public/_inc.php rename {files => public/files}/BenRobertsCv.pdf (100%) rename {resources => public/images}/at.png (100%) rename {files => public/images}/portrait.jpg (100%) create mode 100644 public/images/ripping-cluster/overview.png create mode 100644 public/images/status-board/overview.png create mode 100644 public/index.php create mode 100644 public/scripts/3rdparty/bootstrap-alerts.js create mode 100644 public/scripts/3rdparty/bootstrap-dropdown.js create mode 100644 public/scripts/3rdparty/bootstrap-modal.js create mode 100644 public/scripts/3rdparty/bootstrap-popover.js create mode 100644 public/scripts/3rdparty/bootstrap-tabs.js create mode 100644 public/scripts/3rdparty/bootstrap-twipsy.js create mode 100644 public/scripts/3rdparty/jquery.chained.js create mode 100644 public/scripts/3rdparty/less-1.1.5.min.js create mode 100644 public/scripts/main.js create mode 100644 public/styles/normal.css delete mode 100644 resources/email.js delete mode 100644 resources/normal.css delete mode 100644 resources/quote-32.png delete mode 100644 resources/rating.php delete mode 100644 resources/rating_bg.png delete mode 100644 resources/rating_fg.png create mode 100644 source/lib/Homepage/Main.class.php create mode 100644 source/webui/pages/errors/401.php create mode 100644 source/webui/pages/errors/404.php create mode 100644 source/webui/pages/errors/unhandled-exception.php create mode 100644 source/webui/templates/cv.tpl create mode 100644 source/webui/templates/errors/401.tpl create mode 100644 source/webui/templates/errors/404.tpl create mode 100644 source/webui/templates/errors/unhandled-exception.tpl create mode 100644 source/webui/templates/home.tpl create mode 100644 source/webui/templates/index.tpl create mode 100644 source/webui/templates/navigation.tpl create mode 100644 source/webui/templates/projects.tpl create mode 100644 source/webui/templates/projects/3yp.tpl create mode 100644 source/webui/templates/projects/gentoo-overlay.tpl create mode 100644 source/webui/templates/projects/ripping-cluster.tpl create mode 100644 source/webui/templates/projects/sabayon-crepo.tpl create mode 100644 source/webui/templates/projects/status-board.tpl delete mode 100644 templates/default.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb612d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# Eclipse project +.buildpath +.project +.settings diff --git a/code/auth_mysql.php b/code/auth_mysql.php deleted file mode 100644 index cf671db..0000000 --- a/code/auth_mysql.php +++ /dev/null @@ -1,38 +0,0 @@ - diff --git a/code/config.php.dist b/code/config.php.dist deleted file mode 100644 index 4993ec1..0000000 --- a/code/config.php.dist +++ /dev/null @@ -1,103 +0,0 @@ - get_web_base_dir(), - 'script-dir' => get_fs_base_dir(), - 'error-code' => 403, - 'error-message' => 'Unknown Error'); - // Placeholder for template fragments - $_template = array( 'messages' => array(), - 'redirect-to' => false, - 'head' => '', - 'title' => 'Default', - 'page' => ''); - // Forward declarations - $_session = null; - - // Templating - $_config['template-file'] = "{$_meta['script-dir']}/templates/default.php"; - - // Homepage - $_config['homepage'] = "{$_meta['script-dir']}/page-sources/home.php"; - - // Sessions - // How long a logged in session will last without activity from the user - $_config['session-login-timeout'] = 60*60*1; // One hour - // How long the username will be stoed in the users cookie - $_config['session-username-timeout'] = 60*60*24*7; // Seven days - - // See session-handler.php for reasons behind the session-network-* config variables - // session-network-mask is used to determine how much of the users IP is hashed into the salt - $_config['session-network-mask'] = 24; - // session-network-mode defines whether the above parameter was passed as a CIDR form, or dotted decimal form - $_config['session-network-mode'] = MASK_CIDR; - - // Maximum number of items to keep in the users session history - $_config['max-history'] = 5; - - // Account Lockout - // How many incorrect authentication attempts before the user is locked out - $_config['lockout-attempts'] = 3; - // How long the account lockout period lasts. During this time, the user will not - // be able to authenticate, even witha valid passwords - $_config['lockout-duration'] = 60*10; // Ten minutes - - - // Authantication - require_once( "{$_meta['script-dir']}/code/iauthenticator.php" ); - $_config['authentication-module'] = 'mysql'; - - // Database - // Mysql connections parameters - $_config['db'] = null; - $_config['mysql'] = array(); - $_config['mysql']['host'] = 'localhost'; - $_config['mysql']['port'] = 3306; - $_config['mysql']['username'] = ''; - $_config['mysql']['password'] = ''; - $_config['mysql']['database'] = ''; - - // Database tables - $_config['mysql']['prefix'] = ''; - - // Connecting to the database - $_db = null; - require_once( "{$_meta['script-dir']}/code/db_mysql.php" ); - - // Only show php error messages if the application is in debug mode - if( isset($_GET['nodebug']) ) $_config['DEBUG'] = false; - if( !$_config['DEBUG'] ) { - set_error_handler( "null_error_handler" ); - set_exception_handler( "null_exception_handler" ); - } - - // Set the default template for all individual pages - $_template['template-file'] = $_config['template-file']; - - - -?> diff --git a/code/db_mysql.php b/code/db_mysql.php deleted file mode 100644 index 840aa53..0000000 --- a/code/db_mysql.php +++ /dev/null @@ -1,21 +0,0 @@ - diff --git a/code/exceptions.php b/code/exceptions.php deleted file mode 100644 index 264cf86..0000000 --- a/code/exceptions.php +++ /dev/null @@ -1,41 +0,0 @@ -\n"; - echo '
';print_r($this->getTrace());echo '
'; - } - } - - }; - - - class FatalException extends BaseException { - // Overridden constructor prints an error message, then terminates the application - public function __construct( $message = '', $code = 0 ) { - parent::__construct( $message, $code ); - die( 'FATAL EXCEPTION: ' . $message ); - } - }; - - - class ConfigException extends BaseException {}; - class SessionException extends BaseException {}; - class AccountLockoutException extends BaseException {}; - class AuthenticationException extends BaseException {}; - class ParameterException extends BaseException {}; - class NotImplementedException extends BaseException {}; - -?> diff --git a/code/functions.php b/code/functions.php deleted file mode 100644 index 9db521f..0000000 --- a/code/functions.php +++ /dev/null @@ -1,78 +0,0 @@ - $value ) { - $dest[$key] = $value; - } - } - - function print_rating_graph( $star_rating ) { - global $_meta; -?> - Rated: <?php echo $star_rating; ?> - diff --git a/code/iauthenticator.php b/code/iauthenticator.php deleted file mode 100644 index 7f77cfb..0000000 --- a/code/iauthenticator.php +++ /dev/null @@ -1,60 +0,0 @@ - diff --git a/code/iauthorisor.php b/code/iauthorisor.php deleted file mode 100644 index 27b7703..0000000 --- a/code/iauthorisor.php +++ /dev/null @@ -1,58 +0,0 @@ - diff --git a/code/request_handler.php b/code/request_handler.php deleted file mode 100644 index 6885618..0000000 --- a/code/request_handler.php +++ /dev/null @@ -1,71 +0,0 @@ -request_string = $request_string; - $this->cache = array(); - } - - public function current_page() { - return $this->request_string; - } - - public function get( $key, $value_pattern = '[^/]*' ) { - // Look in the cache to see if weve already decoded this variable - if( in_array( $key, $this->cache ) ) return $this->cache[ $key ]; - - // Construct the regex to search for /$key/$value/ pairs, and return the $value part - $key = str_replace('£', '\£', $key); - $value_pattern = str_replace('£', '\£', $value_pattern); - $pattern = "£/{$key}/({$value_pattern})(/|\$)£"; - - // Look to see if this variable is in the request string - $count = preg_match( $pattern, $this->request_string, $matches ); - - // See if the variable was set - if( $count == 0 ) return null; - - // Store the result for next time - $this->cache[ $key ] = $matches[1]; - - // And return it to the user - return $matches[1]; - } - - public function construct() { - global $_meta; - - // Varargsy - $args = func_get_args(); - - // Construct the proper request string for these arguments - $request_string = "{$_meta['base-dir']}/"; - $count = count( $args ); - for( $i = 0 ; $i < $count; $i++ ) { - $arg = $args[ $i ]; - // If this item is null, try to find the value of the previous key from the current - // request object as a convenience to the user. It assumes the default value pattern. - if( $arg === null && $i > 0) { - $arg = $this->get( $args[ $i -1 ] ); - } - $request_string .= urlencode($arg) . '/'; - } - - return $request_string; - } - - }; - -?> diff --git a/code/session_handler.php b/code/session_handler.php deleted file mode 100644 index 779ffa7..0000000 --- a/code/session_handler.php +++ /dev/null @@ -1,229 +0,0 @@ -start_new_session(); - } else { - // The session already exists, check its validity - if( $this->is_session_valid() ) { - - } else { - // BAD USER SESSION, start a new one - $this->start_new_session(); - // And inform the user - $_template['messages'][] = "Bad session, starting a new one"; - } - } - - // Load the Authentication modules - $this->authentication = IAuthenticatorFactory::get( $_config['authentication-module'] ); - $this->authentication->initialise(); - - } - - public function __destruct() { - // Shut down the authentication modules - $this->authentication->uninitialise(); - } - - /* - * Accessors - */ - public function authenticator() { return $this->authentication; } - - /* - * The following methods deal with the user session - */ - - // Initialises all the variables we require in each user session - public function start_new_session() { - global $_config; - - // Set up all the session variables - $_SESSION['initialised'] = true; - $_SESSION['logged_in'] = false; - $_SESSION['username'] = ''; - $_SESSION['hash'] = $this->generate_hash(); - $_SESSION['previous_page'] = $_config['homepage']; - $_SESSION['requested_page'] = ''; - $_SESSION['history'] = array('home'); - $_SESSION['lockout'] = false; - $_SESSION['lockout-attempts'] = 0; - - // Be paranoid, change session id - $this->auth_state_changed(); - } - - public function is_session_valid() { - // Check that the identifying information given by the user matches that which was - // saved in the session when it was created - return ($_SESSION['hash'] == $this->generate_hash()); - } - - /* - * This function should be called whenever the authorisation level - * changes in order to keep the session secure. - * It prevents against Session Fixation (http://www.acros.si/papers/session_fixation.pdf) - */ - public function auth_state_changed() { - session_regenerate_id(); - } - - /* - * This function marks a user as having been logged into the system - */ - private function mark_logged_in_as( $username ) { - $_SESSION['username'] = $username; - $_SESSION['logged_in'] = true; - - // The login state has changed - $this->auth_state_changed(); - } - - /* - * This function marks a user as having been logged out of the system - */ - private function mark_logged_out() { - $_SESSION['logged_in'] = false; - - // The login state has changedd - $this->auth_state_changed(); - } - - /* - * This function returns whether or not the user is logged in - */ - public function is_logged_in() { - return $_SESSION['logged_in']; - } - - /* - * This function returns the username of the currently logged in user - */ - public function username() { - return $_SESSION['username']; - } - - /* - * This function requires a user to be logged in, else an exception is thrown - */ - public function require_logged_in() { - if( !$_SESSION['logged_in'] ) throw new AuthenticationException('You must be logged on to view this resource'); - } - - /* - * This function generates a hash from user identifiable information - * to try and prevent session theft. - * If the session id is stolen by an attacker, chances are some of the - * information used to generate the hash will change, and the session - * will be immediately marked as invalid. This hash is checked for - * consistency on every request. - */ - public function generate_hash() { - global $_config; - // Hash together the following pieces of identifying information which remain constant throughout the session: - // User Agent string - This will be constant for the user, but might not be for the attacker - // Netork Mask - ensures each request is coming from the same network. We may not be able to use the - // while ip, because some ISPs use load-balanced proxies, so subsequent requests may come from a - // different machine ip, but we can still use at least part of the address to filter out would be attackers. - $key = $_SERVER['HTTP_USER_AGENT'] . get_network_mask( $_SERVER['REMOTE_ADDR'], $_config['session-network-mask'], $_config['session-network-mode']); - return md5( $key ); - } - - /* - * The following methods deal with the users history - * These will be used to set up redirection after special pages, such as login - */ - - // Add a new item to the user history - public function history_add_request( $page ) { - global $_config; - // Add this item to the beginning of the history array - array_unshift( $_SESSION['history'], $page ); - // Keep the size below a fixed limit - if( count($_SESSION['history']) > $_config['max-history'] ) { - array_pop( $_SESSION['history'] ); - } - } - - // Remove the current item from the user history - public function history_drop_request() { - // remove the item from the beginning of the array - array_shift( $_SESSION['history'] ); - } - - // Return an item from the user history - public function history_get( $index ) { - if( is_numeric($index) ) { - if( $index < count($_SESSION['history']) ) { - return $_SESSION['history'][$index]; - } - } - } - - /* - * The following methods deal with user authentication and authorisation - */ - - // Log the user in - public function login( $username, $password ) { - global $_config; - - // Check the user hasnt been locked out before trying to login - if( $_SESSION['lockout'] == true ) { - // See if the lockout has expired - if($_SESSION['lockout-expiry'] > time() ) throw new AccountLockoutException('Your session is currently locked as a result of enterring too many incorrect passwords. You will not be able to attempt a login for another ' . date('i \m\i\n(\s), s \s\e\c(\s)', $_SESSION['lockout-expiry']-time())); - else { - // Unset the lockout - $_SESSION['lockout'] = false; - $_SESSION['lockout-expiry'] = 0; - $_SESSION['lockout-attempts'] = 0; - } - } - - - try { - // Attempt to authenticate with these credentials - $this->authentication->authenticate( $username, $password ); - } catch( Exception $e ) { - // Increment the number of failed authentication attempts - $_SESSION['lockout-attempts']++; - // Check the lockout attempts - if( $_SESSION['lockout-attempts'] >= $_config['lockout-attempts'] ) { - $_SESSION['lockout'] = true; - $_SESSION['lockout-expiry'] = time() + $_config['lockout-duration']; - throw new AccountLockoutException('You have enterred an incorrect password too many times, and your session has been locked. You will not be able to attempt another login for the next 10 minutes.'); - } - - // The login failed, rethrow the original exception - throw $e; - } - - // Successful login, update the session state - $this->mark_logged_in_as( $username ); - } - - // Log the current user out - public function logout() { - $this->mark_logged_out(); - } - - }; - -?> diff --git a/code/validation/ivalidator.php b/code/validation/ivalidator.php deleted file mode 100644 index 62afed3..0000000 --- a/code/validation/ivalidator.php +++ /dev/null @@ -1,115 +0,0 @@ -validate( $value ); - } - - // All successful - - } catch (ValidationException $e) { - // Add the friendly name of the variable that failed validation, and rethrow the exception - // for the calling code to catch - $e->append_name($name); - throw $e; - } - } - - - }; - - /* - * Validation Exceptions - */ - - class ValidationException extends BaseException { - - public function __construct($message) { - parent::__construct($message); - } - - public function append_name($name) { - $this->e .= ", while validating '{$name}'."; - } - - }; - - -?> diff --git a/code/validation/range_validator.php b/code/validation/range_validator.php deleted file mode 100644 index da0f9b3..0000000 --- a/code/validation/range_validator.php +++ /dev/null @@ -1,40 +0,0 @@ - $max ) - throw new ValidationException("Input is no in the range {$this->min}-{$this->max}"); - } - - }; - -?> diff --git a/index.php b/index.php deleted file mode 100644 index 0790792..0000000 --- a/index.php +++ /dev/null @@ -1,82 +0,0 @@ -get('page')) ? strtolower($_req->get('page')) : 'home'); - $_page = $_chroot . '/' . $_pagename . '.php'; - - // Capture this request so we know where the user wanted to go - $_session->history_add_request( $_SERVER['REQUEST_URI'] ); - - // Check that this path exists - $_realpath = realpath($_page); - if( $_realpath === false ) throw new Exception('Requested page doesnt exist', 404); - - // Check that the real file exists under the pages directory - if( substr($_realpath, 0, strlen($_chroot)) != $_chroot ) throw new Exception('Forbidden', 403); - - - } catch( Exception $e ) { - $_meta['error-code'] = $e->getCode(); - $_meta['error-message'] = $e->getMessage(); - $_page = "{$_meta['script-dir']}/page-sources/error.php"; - } - - // Capture the output and store it in the template - ob_start(); - - try { - include( $_page ); - } catch( AuthenticationException $e ) { - // Redirect to the login page - $_template['messages'][] = $e->getMessage(); - $_page = "{$_meta['script-dir']}/page-sources/login.php"; - // Get the new page - ob_clean(); - include( $_page ); - } catch( ParameterException $e ) { - // Redirect to the error page - $_meta['error-code'] = $e->getCode(); - $_meta['error-message'] = "Required parameter is either missing, or contains an illegal value: '{$e->getMessage()}'"; - $_page = "{$_meta['script-dir']}/page-sources/error.php"; - // Get the new page - ob_clean(); - include( $_page ); - } - - $_template['page'] = ob_get_contents(); - - // Since we've already caught them, prevent the contents from being - // passed to the browser - ob_end_clean(); - - // Get the template - include( $_template['template-file'] ); - - // Send any remaining output to the browser - ob_end_flush(); - -?> \ No newline at end of file diff --git a/page-sources/3yp.php b/page-sources/3yp.php deleted file mode 100644 index 4db99f1..0000000 --- a/page-sources/3yp.php +++ /dev/null @@ -1,26 +0,0 @@ - -

- I am still working on my project, but in the mean time I have some binaries available for user testing. - Please report any bugs you might find to my bug tracker. - (Note: The provider of my SSL certificates does not yet have their root CA certificate distributed with Internet Explorer or Opera, so if you need to, please add them as a Trusted CA.) -

-

- These binaries are solely for testing purposes, and may not be redistributed from anywhere other than this site. - I am in the process of packaging a source distribution. - -

-

- diff --git a/page-sources/error.php b/page-sources/error.php deleted file mode 100644 index 8242c23..0000000 --- a/page-sources/error.php +++ /dev/null @@ -1,15 +0,0 @@ -history_drop_request(); - // Display the error message, and redirect - $_template['title'] = "Errawr"; - $_template['messages'][] = $_meta['error-message']; - $_template['redirect-to'] = $_session->history_get(0); // Top of the list now - -?> \ No newline at end of file diff --git a/page-sources/home.php b/page-sources/home.php deleted file mode 100644 index 4a06114..0000000 --- a/page-sources/home.php +++ /dev/null @@ -1,31 +0,0 @@ - -
-Photo of Ben Roberts -

- I have almost finished the final year of a Master's degree in Computer Science at ECS, University of Southampton, UK and am due to graduate in June 2010. -

-

- Starting this summer, I will be working for Atos Origin as a Graduate Technical Specialist in the Managed Operations division. -

-

- I previously worked for Netcraft in Bath, while taking a year out from my degree studies. My roles included developing and running the SSL Server Survey, reviewing Automated Vulnerability Scan results, and performing occasional penetration tests against web applications for financial institutions. -

-

- On this site you can find a full copy of my CV, - or see what projects I have been working on in my spare time. -

-

- You can contact me via me@benroberts.net. -

- - -
diff --git a/page-sources/login.php b/page-sources/login.php deleted file mode 100644 index ec59b03..0000000 --- a/page-sources/login.php +++ /dev/null @@ -1,59 +0,0 @@ - 0 ) { - // Hide this request from the user's history - $_session->history_drop_request(); - // Now it wont matter how many times a user fails authentication, they will always be redirected to the - // page they requested in the first place - - // Check for the presence of the required form fields - if( !isset($_POST['username']) ) throw new ParameterException(); $username = $_POST['username']; - - $password = ''; - if( isset($_POST['password']) ) $password = $_POST['password']; - - // Attempt the login - try { - $_session->login( $username, $password ); - - // Present a message to the user - $_template['messages'][] = 'You have successfully logged in.'; - - // Set a redirection to the page the user was originally on (now the top of the list, because we dropped this page) - $_template['redirect-to'] = $_session->history_get(0); - - } catch (AuthenticationException $e) { - // Authentication failed - $_template['messages'][] = 'Authentication failed'; - _show_login_form(); - } - - } else { - _show_login_form(); - } - - function _show_login_form() { - global $_meta, $_req; - - // Present the login form to the user -?> -
-

-
- -

-
- diff --git a/page-sources/logout.php b/page-sources/logout.php deleted file mode 100644 index 2574f3d..0000000 --- a/page-sources/logout.php +++ /dev/null @@ -1,17 +0,0 @@ -logout(); - - // Leave the user a notice, and redirect them back to the home page - $_template['title'] = 'Logout'; - $_template['messages'][] = 'You have successfully been logged out.'; - $_template['redirect-to'] = $_req->construct('page','home'); - - -?> \ No newline at end of file diff --git a/page-sources/overlay.php b/page-sources/overlay.php deleted file mode 100644 index 57a9d8d..0000000 --- a/page-sources/overlay.php +++ /dev/null @@ -1,25 +0,0 @@ - -

- The ebuilds in this overlay have mostly been taken from the Gentoo - bugzilla, where the packages haven't yet made it into the portage tree. There - are also a couple of version-bumped packages, and packages to install my own - software on my own machines. Feel free to use these packages, but do so at your - own risk. -

- -

- You can install this overlay using layman. Add the the - Sihnon overlay url - to your overlays variable in /etc/layman/layman.cfg. Then update - the list of overlays with layman -L and add the Sihnon overlay - with layman -a sihnon. -

- -

- The contents of the overlay can be browsed in the - Sihnon overlay browser. -

- diff --git a/page-sources/projects.php b/page-sources/projects.php deleted file mode 100644 index d212534..0000000 --- a/page-sources/projects.php +++ /dev/null @@ -1,33 +0,0 @@ - -

Development projects:

-
-
" title="Gentoo Overlay">Gentoo Portage Overlay
-
Personally developed software, or miscellaneous ebuilds that can't be found in any other overlay.
- -
Sihnon Wiki
-
Documentation for various systems I've configured; mostly for personal reference, but may be useful to others.
- -
HandBrakeCluster
-
A collection of perl scripts to use HandBrakeCLI to batch rip DVD images using multiple machines.
- -
HandBrakeCluster WebUI
-
An alternative web-based UI for the HandBrakeCluster scripts, written in PHP.
- -
- - -

University projects:

-
-
" title="Third Year Project">Third Year Project
-
A cross-platform, zero-config file sharing client using public keys and a web of trust for password-less authentication and access control.
-
- diff --git a/private/.gitignore b/private/.gitignore new file mode 100644 index 0000000..52c2514 --- /dev/null +++ b/private/.gitignore @@ -0,0 +1,4 @@ +# configuration files +config.php +dbconfig.conf +settings.txt diff --git a/private/config.php.dist b/private/config.php.dist new file mode 100644 index 0000000..0672e2a --- /dev/null +++ b/private/config.php.dist @@ -0,0 +1,92 @@ + diff --git a/private/dbconfig.conf.dist b/private/dbconfig.conf.dist new file mode 100644 index 0000000..2d826ee --- /dev/null +++ b/private/dbconfig.conf.dist @@ -0,0 +1,5 @@ +hostname = localhost +username = homepage +password = changeme +dbname = homepage + diff --git a/private/htaccess.dist b/private/htaccess.dist new file mode 100644 index 0000000..7510cc3 --- /dev/null +++ b/private/htaccess.dist @@ -0,0 +1,16 @@ +SetEnv STATUSBOARD_CONFIG /etc/homepage/config.php + + + + RewriteEngine on + RewriteBase / + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(ajax/.*)$ a.php?l=$1 [L] + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)$ index.php?l=$1 + + \ No newline at end of file diff --git a/private/settings.txt.dist b/private/settings.txt.dist new file mode 100644 index 0000000..798f346 --- /dev/null +++ b/private/settings.txt.dist @@ -0,0 +1,35 @@ +[logging.plugins] +type="array(string)" +value=FlatFile + +[logging.FlatFile] +type="array(string)" +value=logfile + +[logging.FlatFile.logfile.filename] +type=string +value=/var/log/homepage/homepage.log + +[logging.FlatFile.logfile.format] +type=string +value="%timestamp% %hostname%:%pid% %progname%:%shortfile%[%line%] %message%" + +[logging.FlatFile.logfile.severity] +type="array(string)" +value="debug +info +warning +error" + +[logging.FlatFile.logfile.category] +type="array(string)" +value="default" + +[cache.base_dir] +type=string +value=/dev/shm/homepage + +[debug.display_exceptions] +type=bool +value=1 + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..fde21da --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,16 @@ +SetEnv HOMEPAGE_CONFIG /home/ben/projects/homepage/private/config.php + + + + RewriteEngine on + RewriteBase /~ben/homepage/ + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(ajax/.*)$ a.php?l=$1 [L] + + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule ^(.*)$ index.php?l=$1 + + diff --git a/public/_inc.php b/public/_inc.php new file mode 100644 index 0000000..c098636 --- /dev/null +++ b/public/_inc.php @@ -0,0 +1,16 @@ + diff --git a/files/BenRobertsCv.pdf b/public/files/BenRobertsCv.pdf similarity index 100% rename from files/BenRobertsCv.pdf rename to public/files/BenRobertsCv.pdf diff --git a/resources/at.png b/public/images/at.png similarity index 100% rename from resources/at.png rename to public/images/at.png diff --git a/files/portrait.jpg b/public/images/portrait.jpg similarity index 100% rename from files/portrait.jpg rename to public/images/portrait.jpg diff --git a/public/images/ripping-cluster/overview.png b/public/images/ripping-cluster/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..e395cfc0131ede8a33b61e5f68359bc5747dce34 GIT binary patch literal 64475 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

m^3Sdv@06mp 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 literal 0 HcmV?d00001 diff --git a/public/images/status-board/overview.png b/public/images/status-board/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..07f94bbb65d0404ec7018dc25000b18de84b8b7e GIT binary patch literal 67019 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 literal 0 HcmV?d00001 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..24a8f9f --- /dev/null +++ b/public/index.php @@ -0,0 +1,21 @@ +smarty(); + + $page = new Homepage_Page($smarty, $main->request()); + if ($page->evaluate()) { + $smarty->display('index.tpl'); + } + +} catch (Homepage_Exception $e) { + die("Uncaught Exception: " . $e->getMessage()); +} + +?> \ No newline at end of file diff --git a/public/scripts/3rdparty/bootstrap-alerts.js b/public/scripts/3rdparty/bootstrap-alerts.js new file mode 100644 index 0000000..37bb430 --- /dev/null +++ b/public/scripts/3rdparty/bootstrap-alerts.js @@ -0,0 +1,113 @@ +/* ========================================================== + * bootstrap-alerts.js v1.4.0 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2011 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function( $ ){ + + "use strict" + + /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + * ======================================================= */ + + var transitionEnd + + $(document).ready(function () { + + $.support.transition = (function () { + var thisBody = document.body || document.documentElement + , thisStyle = thisBody.style + , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined + return support + })() + + // set CSS transition event type + if ( $.support.transition ) { + transitionEnd = "TransitionEnd" + if ( $.browser.webkit ) { + transitionEnd = "webkitTransitionEnd" + } else if ( $.browser.mozilla ) { + transitionEnd = "transitionend" + } else if ( $.browser.opera ) { + transitionEnd = "oTransitionEnd" + } + } + + }) + + /* ALERT CLASS DEFINITION + * ====================== */ + + var Alert = function ( content, options ) { + this.settings = $.extend({}, $.fn.alert.defaults, options) + this.$element = $(content) + .delegate(this.settings.selector, 'click', this.close) + } + + Alert.prototype = { + + close: function (e) { + var $element = $(this).parent('.alert-message') + + e && e.preventDefault() + $element.removeClass('in') + + function removeElement () { + $element.remove() + } + + $.support.transition && $element.hasClass('fade') ? + $element.bind(transitionEnd, removeElement) : + removeElement() + } + + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + $.fn.alert = function ( options ) { + + if ( options === true ) { + return this.data('alert') + } + + return this.each(function () { + var $this = $(this) + + if ( typeof options == 'string' ) { + return $this.data('alert')[options]() + } + + $(this).data('alert', new Alert( this, options )) + + }) + } + + $.fn.alert.defaults = { + selector: '.close' + } + + $(document).ready(function () { + new Alert($('body'), { + selector: '.alert-message[data-alert] .close' + }) + }) + +}( window.jQuery || window.ender ); \ No newline at end of file diff --git a/public/scripts/3rdparty/bootstrap-dropdown.js b/public/scripts/3rdparty/bootstrap-dropdown.js new file mode 100644 index 0000000..cab0ec2 --- /dev/null +++ b/public/scripts/3rdparty/bootstrap-dropdown.js @@ -0,0 +1,55 @@ +/* ============================================================ + * bootstrap-dropdown.js v1.4.0 + * http://twitter.github.com/bootstrap/javascript.html#dropdown + * ============================================================ + * Copyright 2011 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function( $ ){ + + "use strict" + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function ( selector ) { + return this.each(function () { + $(this).delegate(selector || d, 'click', function (e) { + var li = $(this).parent('li') + , isActive = li.hasClass('open') + + clearMenus() + !isActive && li.toggleClass('open') + return false + }) + }) + } + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + var d = 'a.menu, .dropdown-toggle' + + function clearMenus() { + $(d).parent('li').removeClass('open') + } + + $(function () { + $('html').bind("click", clearMenus) + $('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' ) + }) + +}( window.jQuery || window.ender ); \ No newline at end of file diff --git a/public/scripts/3rdparty/bootstrap-modal.js b/public/scripts/3rdparty/bootstrap-modal.js new file mode 100644 index 0000000..be2315a --- /dev/null +++ b/public/scripts/3rdparty/bootstrap-modal.js @@ -0,0 +1,260 @@ +/* ========================================================= + * bootstrap-modal.js v1.4.0 + * http://twitter.github.com/bootstrap/javascript.html#modal + * ========================================================= + * Copyright 2011 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function( $ ){ + + "use strict" + + /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + * ======================================================= */ + + var transitionEnd + + $(document).ready(function () { + + $.support.transition = (function () { + var thisBody = document.body || document.documentElement + , thisStyle = thisBody.style + , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined + return support + })() + + // set CSS transition event type + if ( $.support.transition ) { + transitionEnd = "TransitionEnd" + if ( $.browser.webkit ) { + transitionEnd = "webkitTransitionEnd" + } else if ( $.browser.mozilla ) { + transitionEnd = "transitionend" + } else if ( $.browser.opera ) { + transitionEnd = "oTransitionEnd" + } + } + + }) + + + /* MODAL PUBLIC CLASS DEFINITION + * ============================= */ + + var Modal = function ( content, options ) { + this.settings = $.extend({}, $.fn.modal.defaults, options) + this.$element = $(content) + .delegate('.close', 'click.modal', $.proxy(this.hide, this)) + + if ( this.settings.show ) { + this.show() + } + + return this + } + + Modal.prototype = { + + toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + this.isShown = true + this.$element.trigger('show') + + escape.call(this) + backdrop.call(this, function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + that.$element + .appendTo(document.body) + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + transition ? + that.$element.one(transitionEnd, function () { that.$element.trigger('shown') }) : + that.$element.trigger('shown') + + }) + + return this + } + + , hide: function (e) { + e && e.preventDefault() + + if ( !this.isShown ) { + return this + } + + var that = this + this.isShown = false + + escape.call(this) + + this.$element + .trigger('hide') + .removeClass('in') + + $.support.transition && this.$element.hasClass('fade') ? + hideWithTransition.call(this) : + hideModal.call(this) + + return this + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + function hideWithTransition() { + // firefox drops transitionEnd events :{o + var that = this + , timeout = setTimeout(function () { + that.$element.unbind(transitionEnd) + hideModal.call(that) + }, 500) + + this.$element.one(transitionEnd, function () { + clearTimeout(timeout) + hideModal.call(that) + }) + } + + function hideModal (that) { + this.$element + .hide() + .trigger('hidden') + + backdrop.call(this) + } + + function backdrop ( callback ) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + if ( this.isShown && this.settings.backdrop ) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('