<?php # Copyright (c) 2012 John Reese # Licensed under the MIT license $t_address = $_SERVER['REMOTE_ADDR']; $t_valid = false; helper_begin_long_process(); # Always allow the same machine to import if ( '127.0.0.1' == $t_address || '127.0.1.1' == $t_address || 'localhost' == $t_address || '::1' == $t_address ) { $t_valid = true; } # Check for allowed remote IP/URL addresses if ( !$t_valid && ON == plugin_config_get( 'remote_imports' ) ) { $t_import_urls = unserialize( plugin_config_get( 'import_urls' ) ); preg_match( '/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/', $t_address, $t_address_matches ); foreach ( $t_import_urls as $t_url ) { if ( $t_valid ) break; $t_url = trim( $t_url ); if ( preg_match( '/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/', $t_url, $t_remote_matches ) ) { # IP if ( $t_url == $t_address ) { $t_valid = true; break; } $t_match = true; for( $i = 1; $i <= 4; $i++ ) { if ( $t_remote_matches[$i] == '0' || $t_address_matches[$i] == $t_remote_matches[$i] ) { } else { $t_match = false; break; } } $t_valid = $t_match; } else { $t_ip = gethostbyname( $t_url ); if ( $t_ip == $t_address ) { $t_valid = true; break; } } } } if ( gpc_get_string( 'api_key' ) == plugin_config_get( 'api_key' ) ) { $t_valid = true; } # Not validated by this point gets the boot! if ( !$t_valid ) { die( plugin_lang_get( 'invalid_import_url' ) ); } $f_repo_id = strtolower( gpc_get_string( 'id' ) ); # Load an array of repositories to be imported if ( $f_repo_id == 'all' ) { $t_repos = SourceRepo::load_all(); } elseif ( is_numeric( $f_repo_id ) ) { $t_repo_id = (int) $f_repo_id; $t_repos = array( SourceRepo::load( $t_repo_id ) ); } else { $f_repo_name = $f_repo_id; $t_repos = array( SourceRepo::load_from_name( $f_repo_name ) ); } # Loop through all repos to be imported foreach ( $t_repos as $t_repo ) { $t_vcs = SourceVCS::repo( $t_repo ); # keep checking for more changesets to import $t_repo->import_error = false; while( true ) { # import the next batch of changesets $t_changesets = $t_vcs->import_latest( $t_repo ); # check for errors if ( !is_array( $t_changesets ) ) { $t_repo->import_error = true; break; } # if no more entries, we're done if ( count( $t_changesets ) < 1 ) { break; } Source_Process_Changesets( $t_changesets ); } }