<?php
error_reporting(E_ALL);
ini_set("track_errors", "On");
$more = array();
$INC = dirname(__FILE__) . "/../inc";
require_once("/etc/rocketgit/config.php");
require_once($INC . "/init.inc.php");
require_once($INC . "/log.inc.php");
include_once($INC . "/sql.inc.php");
include_once($INC . "/struct.inc.php");
include_once($INC . "/user.inc.php");
include_once($INC . "/repo.inc.php");
include_once($INC . "/keys.inc.php");
include_once($INC . "/token.inc.php");
include_once($INC . "/prof.inc.php");
include_once($INC . "/mr.inc.php");
include_once($INC . "/bug.inc.php");
include_once($INC . "/fixes.inc.php");
rg_prof_start("MAIN");
rg_log_set_file($rg_web_log_dir . "/main.log");
// Init variables
$THEME_URL = "/themes/" . $rg_theme;
$sparas = "";
$login_ui = array();
// We have variable 'vv' passed from webserver - build 'op' and rest of paras
$sparas = rg_var_str("vv");
rg_log("DEBUG: sparas=$sparas.");
$more['url'] = $sparas;
$paras = explode("/", trim($sparas, "/"));
$_t = empty($paras) ? "" : $paras[0];
rg_log("DEBUG: paras: " . rg_array2string($paras));
if (strcmp($_t, "op") == 0) {
array_shift($paras);
$_op = empty($paras) ? "" : array_shift($paras);
} else {
$_op = "";
}
$doit = rg_var_uint("doit");
$sid = rg_var_re("sid", "/[^A-Za-z0-9]/");
$token = rg_var_re("token", "/[^A-Za-z0-9]/");
$user = ""; $repo = ""; $organization = 0;
rg_log("IP: " . @$_SERVER['REMOTE_ADDR']);
rg_log("_REQUEST: " . rg_array2string($_REQUEST));
rg_log("_COOKIE: " . rg_array2string($_COOKIE));
rg_log("Start! sid=$sid");
// database connection
$db = rg_sql_open($rg_sql);
if ($db === FALSE) {
// TODO: Retry?
die("Cannot open database!");
}
while (1) {
$r = rg_sql_struct_update_needed($db);
if ($r === FALSE) {
$r = rg_fixes_needed($db);
if ($r === FALSE)
break;
}
rg_log("Schema/fixes is not up-to-date! Sleep 1 second...");
sleep(1);
}
rg_user_login_by_sid($db, $sid, $login_ui);
rg_log("After login_by_sid, login_ui=" . rg_array2string($login_ui));
$body = "";
$rg_menu = array();
// first level menu
$_m = array(
"login" => array(
"text" => "Login",
"uid0" => 1,
"op" => "/op/login"),
"settings" => array(
"text" => "Settings",
"op" => "/op/settings"),
"repo" => array(
"text" => "Repositories",
"op" => "/op/repo"),
"admin" => array(
"text" => "Admin",
"needs_admin" => 1,
"op" => "/op/admin"),
"suggestion"=> array(
"text" => "Suggestion",
"op" => "/op/suggestion"),
"logout" => array(
"text" => "Logout",
"op" => "/op/logout")
);
rg_menu_add($rg_menu, $_m, $_op);
rg_log("Dispatching to [$_op]");
include($INC . "/dispatch/dispatch.php");
$_m = rg_menu($rg_menu, "", $login_ui);
$more['HTML:rg_menu'] = implode("", $_m);
if ($login_ui['uid'] > 0) {
$more['rg_username'] = $login_ui['username'];
$more['rg_homepage'] = rg_re_userpage($login_ui);
} else {
$more['rg_username'] = "";
$more['rg_homepage'] = "";
}
// home page
// Some variables from the database
$r = rg_state_get_uint($db, "first_install");
if ($r > 0) {
$more['first_install_text'] = gmdate("Y-m-d", $r);
} else {
$more['first_install_text'] = "?";
}
rg_prof_end("MAIN");
// TODO: Do something with the profiling, here: log it in database etc.
$more['HTML:rg_theme_url'] = $THEME_URL;
$more['HTML:rg_body'] = $body;
echo rg_template("index.html", $more);
rg_log("DONE!");
rg_prof_log("rg_log");
?>
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"
Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/rocketgit
Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit
You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a
pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master