File README changed (mode: 100644) (index b0ac575..78f0d69) |
14 |
14 |
. Upgrades with the standard tools of the distributions |
. Upgrades with the standard tools of the distributions |
15 |
15 |
. Very little dependencies, all packaged in main-stream distributions |
. Very little dependencies, all packaged in main-stream distributions |
16 |
16 |
. SELinux friendly |
. SELinux friendly |
17 |
|
. Very small |
|
|
17 |
|
. Very small (RPM is around 300KiB) |
18 |
18 |
|
|
19 |
19 |
|
|
20 |
20 |
== Install == |
== Install == |
|
81 |
81 |
- Edit /etc/mail/trusted-users and add 'rocketgit' and 'apache'. |
- Edit /etc/mail/trusted-users and add 'rocketgit' and 'apache'. |
82 |
82 |
- Restart daemon: 'systemctl restart sendmail.service' (Fedora) |
- Restart daemon: 'systemctl restart sendmail.service' (Fedora) |
83 |
83 |
|
|
84 |
|
. Run installation script |
|
85 |
|
# php /usr/share/rocketgit/admin/init.php |
|
86 |
|
|
|
87 |
84 |
. Edit firewall to permit ssh, git, http and https ports |
. Edit firewall to permit ssh, git, http and https ports |
88 |
85 |
In /etc/sysconfig/iptables (IPv4) and ip6tables (IPv6), add something |
In /etc/sysconfig/iptables (IPv4) and ip6tables (IPv6), add something |
89 |
86 |
like this: |
like this: |
|
92 |
89 |
-A INPUT -m tcp -p tcp --dport http -j ACCEPT |
-A INPUT -m tcp -p tcp --dport http -j ACCEPT |
93 |
90 |
-A INPUT -m tcp -p tcp --dport https -j ACCEPT |
-A INPUT -m tcp -p tcp --dport https -j ACCEPT |
94 |
91 |
|
|
|
92 |
|
. Point your browser to the newly created server and you will be asked to |
|
93 |
|
create the admin account. |
|
94 |
|
|
95 |
95 |
|
|
96 |
96 |
== Thanks == |
== Thanks == |
97 |
97 |
. Special thanks to my family that supported me in this project. |
. Special thanks to my family that supported me in this project. |
File TODO changed (mode: 100644) (index a26e75b..f441cb0) |
13 |
13 |
Apoi as putea elimina description_nice. |
Apoi as putea elimina description_nice. |
14 |
14 |
[ ] Security: Link-uri + xss (Ionut) |
[ ] Security: Link-uri + xss (Ionut) |
15 |
15 |
[ ] Only one daemon should update the structure, else they will conflict. |
[ ] Only one daemon should update the structure, else they will conflict. |
|
16 |
|
[ ] Seems I must get rid of init.php: locks are owned by root and I cannot |
|
17 |
|
do struct_update&fixes as the rocketgit user. |
|
18 |
|
[ ] Beta sign. |
16 |
19 |
[ ] |
[ ] |
17 |
20 |
|
|
18 |
21 |
== BEFORE NEXT RELEASE == |
== BEFORE NEXT RELEASE == |
|
22 |
|
[ ] Add unit test for 'copy to' into git_log1. There is already one but does |
|
23 |
|
not trigger the detection. Maybe we need a bigger file. |
19 |
24 |
[ ] Make the blob show nicer and remove rg_template_list (replace |
[ ] Make the blob show nicer and remove rg_template_list (replace |
20 |
25 |
it with rg_template*). |
it with rg_template*). |
21 |
26 |
[ ] If there are a lot of tags/branches, remove oldest ones. |
[ ] If there are a lot of tags/branches, remove oldest ones. |
|
... |
... |
mails to be saved in a folder, so we can parse them and verify them. |
46 |
51 |
[ ] php-opcache in docs? |
[ ] php-opcache in docs? |
47 |
52 |
[ ] Drop OUTPUT to prevent some attacks? Document in README? |
[ ] Drop OUTPUT to prevent some attacks? Document in README? |
48 |
53 |
[ ] Seems I cache not set values: first_install is still "?"! |
[ ] Seems I cache not set values: first_install is still "?"! |
49 |
|
[ ] Move into cron the duty for setting first_install and install_id! |
|
50 |
|
Maybe other stuff also. |
|
51 |
|
[ ] 'first_install' is not present in 'state' table. |
|
52 |
54 |
[ ] authorized_keys is missing from 'state' table. Is normal? |
[ ] authorized_keys is missing from 'state' table. Is normal? |
53 |
|
[ ] "Running since" apare cu "?"! Rezolvat, dar se pare ca cache-uim raspunsuri |
|
54 |
|
negative de la cache daemon. Vrem asta?! |
|
55 |
|
[ ] Admin section is not working! |
|
56 |
55 |
[ ] Replace -=ROCKETGIT=- with a random generated code. |
[ ] Replace -=ROCKETGIT=- with a random generated code. |
57 |
56 |
[ ] La mail-ul de creare repo, las prea mult spatiu intre "Hello!" si "Repo is". |
[ ] La mail-ul de creare repo, las prea mult spatiu intre "Hello!" si "Repo is". |
58 |
57 |
[ ] Seems I cannot reliable kill cache.php. It becomes a zombie! |
[ ] Seems I cannot reliable kill cache.php. It becomes a zombie! |
59 |
58 |
[ ] Permisiile pentru /home/rocketgit/.ssh nu sint corecte! Sint root! |
[ ] Permisiile pentru /home/rocketgit/.ssh nu sint corecte! Sint root! |
60 |
|
Rezolvat cu chown. Poate vreau sa nu mai rulez cua root keys_regen. |
|
|
59 |
|
Rezolvat cu chown. Poate vreau sa nu mai rulez cu root keys_regen. |
61 |
60 |
Only add the regen event! Why? At start we have no users and the first |
Only add the regen event! Why? At start we have no users and the first |
62 |
61 |
key added will generate a trigger. |
key added will generate a trigger. |
63 |
62 |
May be other places where I run as root! |
May be other places where I run as root! |
64 |
|
[ ] Logged in as admin, Admin -> Plans is not working (redirects to main page)! |
|
65 |
63 |
[ ] init.php: do not show the password! |
[ ] init.php: do not show the password! |
66 |
64 |
Maybe switch to a web based instalation? |
Maybe switch to a web based instalation? |
67 |
65 |
[ ] I must mark that init.php script was not run, and do not start daemons! |
[ ] I must mark that init.php script was not run, and do not start daemons! |
File admin/init.php deleted (index 6fdb06b..0000000) |
1 |
|
<?php |
|
2 |
|
// This is executed at the first instalation. |
|
3 |
|
// Or, if you want to create another admin user. |
|
4 |
|
error_reporting(E_ALL); |
|
5 |
|
ini_set("track_errors", "On"); |
|
6 |
|
|
|
7 |
|
require_once("/etc/rocketgit/config.php"); |
|
8 |
|
|
|
9 |
|
$INC = dirname(__FILE__) . "/../inc"; |
|
10 |
|
require_once($INC . "/util.inc.php"); |
|
11 |
|
require_once($INC . "/log.inc.php"); |
|
12 |
|
require_once($INC . "/sql.inc.php"); |
|
13 |
|
require_once($INC . "/struct.inc.php"); |
|
14 |
|
require_once($INC . "/state.inc.php"); |
|
15 |
|
require_once($INC . "/rights.inc.php"); |
|
16 |
|
require_once($INC . "/fixes.inc.php"); |
|
17 |
|
|
|
18 |
|
rg_log_set_file($rg_log_dir . "/init.log"); |
|
19 |
|
|
|
20 |
|
rg_sql_app("rg-admin-init"); |
|
21 |
|
$db = rg_sql_open($rg_sql); |
|
22 |
|
if ($db === FALSE) { |
|
23 |
|
echo "Internal error (" . rg_sql_error() . ")!\n"; |
|
24 |
|
exit(1); |
|
25 |
|
} |
|
26 |
|
|
|
27 |
|
$r = rg_sql_struct_update($db, 0); |
|
28 |
|
if ($r !== TRUE) { |
|
29 |
|
echo "Cannot init structure. Check the logs!\n"; |
|
30 |
|
exit(1); |
|
31 |
|
} |
|
32 |
|
|
|
33 |
|
$r = rg_fixes_update($db); |
|
34 |
|
if ($r !== TRUE) { |
|
35 |
|
echo "Cannot apply fixes. Check the logs!\n"; |
|
36 |
|
exit(1); |
|
37 |
|
} |
|
38 |
|
|
|
39 |
|
// Store the timestamp of the first install |
|
40 |
|
$first_install = rg_state_get($db, "first_install"); |
|
41 |
|
if ($first_install == 0) |
|
42 |
|
rg_state_set($db, "first_install", time()); |
|
43 |
|
|
|
44 |
|
$install_id = rg_state_get($db, "install_id"); |
|
45 |
|
if (empty($install_id)) |
|
46 |
|
rg_state_set($db, "install_id", sha512(microtime(TRUE))); |
|
47 |
|
|
|
48 |
|
|
|
49 |
|
// creating admin user |
|
50 |
|
$_u = array(); |
|
51 |
|
$_u['uid'] = 0; |
|
52 |
|
$_u['username'] = "admin"; |
|
53 |
|
$_u['realname'] = "Master admin"; |
|
54 |
|
$_u['email'] = $rg_admin_email; |
|
55 |
|
$_u['is_admin'] = 1; |
|
56 |
|
$_u['rights'] = rg_rights_all("user"); |
|
57 |
|
$_u['session_time'] = 3600; |
|
58 |
|
$_u['confirm_token'] = ""; |
|
59 |
|
$_u['plan_id'] = 0; |
|
60 |
|
while (1) { |
|
61 |
|
$username0 = readline("User [" . $_u['username'] . "]: "); |
|
62 |
|
if (!empty($username0)) |
|
63 |
|
$_u['username'] = $username0; |
|
64 |
|
$email0 = readline("E-mail [" . $_u['email'] . "]: "); |
|
65 |
|
if (!empty($email0)) |
|
66 |
|
$_u['email'] = $email0; |
|
67 |
|
|
|
68 |
|
while(1) { |
|
69 |
|
$_u['pass'] = readline("Password: "); |
|
70 |
|
$_u['pass2'] = readline("Password (confirmation): "); |
|
71 |
|
if (strcmp($_u['pass'], $_u['pass2']) != 0) { |
|
72 |
|
echo "Passwords mismatch!\n"; |
|
73 |
|
continue; |
|
74 |
|
} |
|
75 |
|
break; |
|
76 |
|
} |
|
77 |
|
|
|
78 |
|
$r = rg_user_info($db, $_u['uid'], $_u['username'], "" /* email */); |
|
79 |
|
if ($r['ok'] != 1) { |
|
80 |
|
echo "Error looking up user " . $_u['username'] |
|
81 |
|
. " (" . rg_user_error() . ")!\n"; |
|
82 |
|
exit(1); |
|
83 |
|
} |
|
84 |
|
if ($r['exists'] == 1) { |
|
85 |
|
echo "User " . $_u['username'] . " already exists." |
|
86 |
|
. " Try another one!\n"; |
|
87 |
|
continue; |
|
88 |
|
} |
|
89 |
|
|
|
90 |
|
$r = rg_user_edit($db, $_u); |
|
91 |
|
if ($r === FALSE) { |
|
92 |
|
echo "Cannot create user (" . rg_user_error() . ")!\n"; |
|
93 |
|
continue; |
|
94 |
|
} |
|
95 |
|
|
|
96 |
|
break; |
|
97 |
|
} |
|
98 |
|
|
|
99 |
|
|
|
100 |
|
echo "Done!\n"; |
|
101 |
|
?> |
|
File artwork/rocketgit v2.svg added (mode: 100644) (index 0000000..1a084d8) |
|
1 |
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
|
2 |
|
<!-- Created with Inkscape (http://www.inkscape.org/) --> |
|
3 |
|
|
|
4 |
|
<svg |
|
5 |
|
xmlns:dc="http://purl.org/dc/elements/1.1/" |
|
6 |
|
xmlns:cc="http://creativecommons.org/ns#" |
|
7 |
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" |
|
8 |
|
xmlns:svg="http://www.w3.org/2000/svg" |
|
9 |
|
xmlns="http://www.w3.org/2000/svg" |
|
10 |
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" |
|
11 |
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" |
|
12 |
|
width="744.09448819" |
|
13 |
|
height="1052.3622047" |
|
14 |
|
id="svg2" |
|
15 |
|
version="1.1" |
|
16 |
|
inkscape:version="0.91 r13725" |
|
17 |
|
sodipodi:docname="rocketgit v2.svg" |
|
18 |
|
inkscape:export-filename="/home/catab/Desktop/rocketgit v2.png" |
|
19 |
|
inkscape:export-xdpi="21.18" |
|
20 |
|
inkscape:export-ydpi="21.18"> |
|
21 |
|
<defs |
|
22 |
|
id="defs4" /> |
|
23 |
|
<sodipodi:namedview |
|
24 |
|
id="base" |
|
25 |
|
pagecolor="#ffffff" |
|
26 |
|
bordercolor="#666666" |
|
27 |
|
borderopacity="1.0" |
|
28 |
|
inkscape:pageopacity="0.0" |
|
29 |
|
inkscape:pageshadow="2" |
|
30 |
|
inkscape:zoom="1.3568776" |
|
31 |
|
inkscape:cx="224.54733" |
|
32 |
|
inkscape:cy="810.0693" |
|
33 |
|
inkscape:document-units="px" |
|
34 |
|
inkscape:current-layer="layer1" |
|
35 |
|
showgrid="false" |
|
36 |
|
inkscape:window-width="1366" |
|
37 |
|
inkscape:window-height="717" |
|
38 |
|
inkscape:window-x="0" |
|
39 |
|
inkscape:window-y="0" |
|
40 |
|
inkscape:window-maximized="1" /> |
|
41 |
|
<metadata |
|
42 |
|
id="metadata7"> |
|
43 |
|
<rdf:RDF> |
|
44 |
|
<cc:Work |
|
45 |
|
rdf:about=""> |
|
46 |
|
<dc:format>image/svg+xml</dc:format> |
|
47 |
|
<dc:type |
|
48 |
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> |
|
49 |
|
<dc:title></dc:title> |
|
50 |
|
</cc:Work> |
|
51 |
|
</rdf:RDF> |
|
52 |
|
</metadata> |
|
53 |
|
<g |
|
54 |
|
inkscape:label="Layer 1" |
|
55 |
|
inkscape:groupmode="layer" |
|
56 |
|
id="layer1"> |
|
57 |
|
<path |
|
58 |
|
style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |
|
59 |
|
d="m 168.49201,296.77004 70.21523,-22.48364 -53.09792,68.50362 90.14664,-65.99056 -63.13562,81.52475 61.32229,-47.70656 -32.33355,70.85904 65.91111,-61.40636 -41.63285,86.33542 c 0,0 72.97348,-72.30151 59.27549,-46.57935 -5.03411,13.55954 -22.46639,66.3503 -22.46639,66.3503 0,0 40.24328,-21.90608 58.70628,-46.73634 18.45444,-23.95462 26.0347,-49.43698 16.04415,-76.58517 -7.59005,-33.75652 -65.16484,-103.40388 -135.68444,-79.9457 -51.65765,16.792 -73.27042,73.86055 -73.27042,73.86055 z" |
|
60 |
|
id="path3786" |
|
61 |
|
inkscape:connector-curvature="0" |
|
62 |
|
sodipodi:nodetypes="ccccccccccccccc" |
|
63 |
|
inkscape:export-filename="/home/catab/Desktop/rg/text2995.png" |
|
64 |
|
inkscape:export-xdpi="90" |
|
65 |
|
inkscape:export-ydpi="90" /> |
|
66 |
|
<path |
|
67 |
|
style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" |
|
68 |
|
d="M 336.31599,234.06448 C 365.77129,153.34434 429.58034,95.5685 524.05066,95.669289 513.37748,171.00459 476.65332,255.38691 371.27845,272.02505 c 0,0 31.3277,65.39112 -41.08987,111.35822 36.19336,-61.00007 6.68304,-94.29563 6.68304,-94.29563 l -60.31325,33.27627 27.03697,-62.39301 c 0,0 -35.55506,-24.65517 -101.90859,0 62.12623,-43.48161 98.19298,-41.42017 134.62924,-25.90642 z" |
|
69 |
|
id="path2993" |
|
70 |
|
inkscape:connector-curvature="0" |
|
71 |
|
sodipodi:nodetypes="ccccccccc" |
|
72 |
|
inkscape:export-filename="/home/catab/Desktop/rg/text2995.png" |
|
73 |
|
inkscape:export-xdpi="90" |
|
74 |
|
inkscape:export-ydpi="90" /> |
|
75 |
|
</g> |
|
76 |
|
</svg> |
File inc/admin.inc.php changed (mode: 100644) (index 81381f6..23bedb9) |
... |
... |
function rg_admin_invites_high_level($db, $rg) |
156 |
156 |
return $ret; |
return $ret; |
157 |
157 |
} |
} |
158 |
158 |
|
|
|
159 |
|
/* |
|
160 |
|
* Prepares an instalation for first use |
|
161 |
|
*/ |
|
162 |
|
function rg_init($db, $rg) |
|
163 |
|
{ |
|
164 |
|
global $rg_admin_name; |
|
165 |
|
global $rg_admin_email; |
|
166 |
|
|
|
167 |
|
rg_prof_start("rg_init"); |
|
168 |
|
|
|
169 |
|
$doit = rg_var_uint('doit'); |
|
170 |
|
if ($doit == 0) { |
|
171 |
|
$rg['init']['username'] = 'admin'; |
|
172 |
|
$rg['init']['realname'] = $rg_admin_name; |
|
173 |
|
$rg['init']['email'] = $rg_admin_email; |
|
174 |
|
$rg['init']['pass'] = ''; |
|
175 |
|
$rg['init']['pass2'] = ''; |
|
176 |
|
$rg['init']['session_time'] = 600; |
|
177 |
|
} |
|
178 |
|
|
|
179 |
|
$errmsg = array(); |
|
180 |
|
$load_form = TRUE; |
|
181 |
|
while ($doit == 1) { |
|
182 |
|
$rg['init'] = array(); |
|
183 |
|
$rg['init']['uid'] = 0; |
|
184 |
|
$rg['init']['is_admin'] = 1; |
|
185 |
|
$rg['init']['rights'] = rg_rights_all('init::user'); |
|
186 |
|
$rg['init']['confirm_token'] = ''; |
|
187 |
|
$rg['init']['plan_id'] = 1; |
|
188 |
|
$rg['init']['username'] = rg_var_str('init::username'); |
|
189 |
|
$rg['init']['realname'] = rg_var_str('init::realname'); |
|
190 |
|
$rg['init']['email'] = rg_var_str('init::email'); |
|
191 |
|
$rg['init']['pass'] = rg_var_str('init::pass'); |
|
192 |
|
$rg['init']['pass2'] = rg_var_str('init::pass2'); |
|
193 |
|
$rg['init']['session_time'] = rg_var_uint('init::session_time'); |
|
194 |
|
|
|
195 |
|
if (!rg_valid_referer()) { |
|
196 |
|
$errmsg[] = "invalid referer; try again"; |
|
197 |
|
break; |
|
198 |
|
} |
|
199 |
|
|
|
200 |
|
if (!rg_token_valid($db, $rg, FALSE)) { |
|
201 |
|
$errmsg[] = "invalid token; try again"; |
|
202 |
|
break; |
|
203 |
|
} |
|
204 |
|
|
|
205 |
|
$r = rg_user_edit($db, $rg['init']); |
|
206 |
|
if ($r === FALSE) { |
|
207 |
|
$errmsg[] = rg_user_error(); |
|
208 |
|
break; |
|
209 |
|
} |
|
210 |
|
|
|
211 |
|
rg_state_set($db, 'first_install', time()); |
|
212 |
|
|
|
213 |
|
$ret .= rg_template('user/create_ok.html', $rg); |
|
214 |
|
$load_form = FALSE; |
|
215 |
|
break; |
|
216 |
|
} |
|
217 |
|
|
|
218 |
|
if ($load_form) { |
|
219 |
|
$rg['HTML:errmsg'] = rg_template_errmsg($errmsg); |
|
220 |
|
$rg['rg_form_token'] = rg_token_get($db, $rg); |
|
221 |
|
$ret .= rg_template("admin/init.html", $rg); |
|
222 |
|
} |
|
223 |
|
|
|
224 |
|
rg_prof_end("rg_init"); |
|
225 |
|
return $ret; |
|
226 |
|
} |
|
227 |
|
|
159 |
228 |
?> |
?> |
File inc/dispatch/dispatch.php changed (mode: 100644) (index fafacb2..47263dc) |
... |
... |
case 'tos': |
74 |
74 |
$body .= rg_template('tos.html', $rg); |
$body .= rg_template('tos.html', $rg); |
75 |
75 |
break; |
break; |
76 |
76 |
|
|
|
77 |
|
case 'download': |
|
78 |
|
$body .= rg_template('download.html', $rg); |
|
79 |
|
break; |
|
80 |
|
|
|
81 |
|
case 'features': |
|
82 |
|
$body .= rg_template('features.html', $rg); |
|
83 |
|
break; |
|
84 |
|
|
|
85 |
|
case 'pricing': |
|
86 |
|
$body .= rg_template('pricing.html', $rg); |
|
87 |
|
break; |
|
88 |
|
|
|
89 |
|
case 'donate': |
|
90 |
|
$body .= rg_template('donate.html', $rg); |
|
91 |
|
break; |
|
92 |
|
|
77 |
93 |
default: // can be the main page or user page or repo page |
default: // can be the main page or user page or repo page |
78 |
94 |
rg_log("DEBUG:paras=" . rg_array2string($paras)); |
rg_log("DEBUG:paras=" . rg_array2string($paras)); |
79 |
95 |
$type = empty($paras) ? "" : $paras[0]; |
$type = empty($paras) ? "" : $paras[0]; |
File inc/struct.inc.php changed (mode: 100644) (index 2c9ec7a..cf12bd0) |
... |
... |
$rg_sql_struct[18]['other'] = array( |
303 |
303 |
"disk_quota" => "ALTER TABLE users DROP disk_quota_mb", |
"disk_quota" => "ALTER TABLE users DROP disk_quota_mb", |
304 |
304 |
"plan_desc" => "ALTER TABLE plans ADD description TEXT NOT NULL DEFAULT ''", |
"plan_desc" => "ALTER TABLE plans ADD description TEXT NOT NULL DEFAULT ''", |
305 |
305 |
"plan_speed" => "ALTER TABLE plans ADD speed INT NOT NULL DEFAULT 0", |
"plan_speed" => "ALTER TABLE plans ADD speed INT NOT NULL DEFAULT 0", |
306 |
|
"unlimited" => "INSERT INTO plans (id, name, disk_mb, users, bw" |
|
|
306 |
|
"standard plan" => "INSERT INTO plans (name, disk_mb, users, bw" |
307 |
307 |
. ", speed, commit_size, description, position)" |
. ", speed, commit_size, description, position)" |
308 |
|
. " VALUES (0, 'Unlimited', 0, 0, 0, 0, 0, 'Unlimited plan', 1000)", |
|
|
308 |
|
. " VALUES ('Standard', 0, 0, 0, 0, 0, 'Standard plan', 1000)", |
309 |
309 |
"key_first" => "ALTER TABLE keys ADD first_use INT NOT NULL DEFAULT 0" |
"key_first" => "ALTER TABLE keys ADD first_use INT NOT NULL DEFAULT 0" |
310 |
310 |
); |
); |
311 |
311 |
|
|
|
... |
... |
function rg_sql_struct_slaves_update($db) |
699 |
699 |
rg_prof_end("sql_struct_slaves_update"); |
rg_prof_end("sql_struct_slaves_update"); |
700 |
700 |
return $ret; |
return $ret; |
701 |
701 |
} |
} |
|
702 |
|
|
702 |
703 |
?> |
?> |
File root/index.php changed (mode: 100644) (index e395f44..fafbdc5) |
... |
... |
if (empty($rg['sid'])) { |
117 |
117 |
|
|
118 |
118 |
$body = ""; |
$body = ""; |
119 |
119 |
|
|
|
120 |
|
// Some variables from the database |
|
121 |
|
$rg['first_install_text'] = "?"; |
|
122 |
|
|
|
123 |
|
$r = rg_state_get($db, "first_install"); |
|
124 |
|
if ($r === FALSE) { |
|
125 |
|
// Probably we cannot connect to database/cache |
|
126 |
|
} else if ($r == 0) { |
|
127 |
|
$body .= rg_init($db, $rg); |
|
128 |
|
} else if ($r > 0) { |
|
129 |
|
$rg['first_install_text'] = gmdate("Y-m-d", $r); |
|
130 |
|
} |
|
131 |
|
|
|
132 |
|
|
120 |
133 |
rg_log("Dispatching to [$_op]"); |
rg_log("Dispatching to [$_op]"); |
121 |
134 |
include($INC . "/dispatch/dispatch.php"); |
include($INC . "/dispatch/dispatch.php"); |
122 |
135 |
|
|
|
... |
... |
if ($rg['login_ui']['uid'] > 0) { |
130 |
143 |
$rg['logout_token'] = ""; |
$rg['logout_token'] = ""; |
131 |
144 |
} |
} |
132 |
145 |
|
|
133 |
|
// Some variables from the database |
|
134 |
|
$r = rg_state_get_uint($db, "first_install"); |
|
135 |
|
if ($r > 0) { |
|
136 |
|
$rg['first_install_text'] = gmdate("Y-m-d", $r); |
|
137 |
|
} else { |
|
138 |
|
$rg['first_install_text'] = "?"; |
|
139 |
|
} |
|
140 |
|
|
|
141 |
|
|
|
142 |
|
rg_prof_end("MAIN"); |
|
143 |
146 |
|
|
144 |
147 |
$rg['HTML:rg_body'] = $body; |
$rg['HTML:rg_body'] = $body; |
145 |
148 |
echo rg_template("index.html", $rg); |
echo rg_template("index.html", $rg); |
146 |
149 |
|
|
|
150 |
|
rg_prof_end("MAIN"); |
147 |
151 |
rg_prof_log(); |
rg_prof_log(); |
148 |
152 |
rg_log("DONE!"); |
rg_log("DONE!"); |
149 |
153 |
?> |
?> |
File root/themes/default/admin/init.html added (mode: 100644) (index 0000000..4f1a4b0) |
|
1 |
|
<div class="formarea"> |
|
2 |
|
|
|
3 |
|
<div class="formarea_title">Create first admin account</div><br /> |
|
4 |
|
|
|
5 |
|
@@errmsg@@ |
|
6 |
|
|
|
7 |
|
<form method="post" action="/op/init"> |
|
8 |
|
<input type="hidden" name="doit" value="1" /> |
|
9 |
|
<input type="hidden" name="token" value="@@rg_form_token@@" /> |
|
10 |
|
|
|
11 |
|
<label for="username" class="form_item_title">User name (public)</label><br /> |
|
12 |
|
<input type="text" name="init::username" value="@@init::username@@" /> |
|
13 |
|
<br /> |
|
14 |
|
<br /> |
|
15 |
|
|
|
16 |
|
<label for="realname" class="form_item_title">Name (not public)</label><br /> |
|
17 |
|
<input type="text" name="init::realname" value="@@init::realname@@" /> |
|
18 |
|
<br /> |
|
19 |
|
<br /> |
|
20 |
|
|
|
21 |
|
<label for="email" class="form_item_title">E-mail (not public)</label><br /> |
|
22 |
|
<input type="text" name="init::email" value="@@init::email@@" /> |
|
23 |
|
<br /> |
|
24 |
|
<br /> |
|
25 |
|
|
|
26 |
|
<label for="pass" class="form_item_title">Password</label><br /> |
|
27 |
|
<input type="password" name="init::pass" value="@@init::pass@@" /> |
|
28 |
|
<br /> |
|
29 |
|
<br /> |
|
30 |
|
|
|
31 |
|
<label for="pass2" class="form_item_title">Password (confirmation)</label><br /> |
|
32 |
|
<input type="password" name="init::pass2" value="@@init::pass2@@" /> |
|
33 |
|
<br /> |
|
34 |
|
<br /> |
|
35 |
|
|
|
36 |
|
<label for="session_time" class="form_item_title">Preferred session time (in seconds)</label><br /> |
|
37 |
|
<input type="text" name="init::session_time" value="@@init::session_time@@" /> |
|
38 |
|
<br /> |
|
39 |
|
<br /> |
|
40 |
|
|
|
41 |
|
<input type="submit" value="Create" /> |
|
42 |
|
</form> |
|
43 |
|
|
|
44 |
|
</div> |
File root/themes/default/donate.html added (mode: 100644) (index 0000000..487171e) |
|
1 |
|
<div class="islands"> |
|
2 |
|
<h2>Donate</h2> |
|
3 |
|
|
|
4 |
|
<div class="island_row"> |
|
5 |
|
<div class="island_cell"> |
|
6 |
|
<div class="island"> |
|
7 |
|
<div class="island_title">Donate time</div> |
|
8 |
|
The "cheapest" thing to donate to this project is a part of your time. |
|
9 |
|
You can help by reporting bugs, sending suggestions, come with ideas |
|
10 |
|
to improve this project or by writing code. |
|
11 |
|
Thank you! |
|
12 |
|
</div> |
|
13 |
|
</div> |
|
14 |
|
|
|
15 |
|
<div class="island_cell"> |
|
16 |
|
<div class="island"> |
|
17 |
|
<div class="island_title">Donate money</div> |
|
18 |
|
You can use our PayPal account to donate any amount of money you wish. |
|
19 |
|
<br /> |
|
20 |
|
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"> |
|
21 |
|
<input type="hidden" name="cmd" value="_s-xclick"> |
|
22 |
|
<input type="hidden" name="hosted_button_id" value="9L6N6TRLNKN56"> |
|
23 |
|
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> |
|
24 |
|
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> |
|
25 |
|
</form> |
|
26 |
|
</div> |
|
27 |
|
</div> |
|
28 |
|
</div> |
|
29 |
|
|
|
30 |
|
</div> |
File root/themes/default/download.html added (mode: 100644) (index 0000000..415ce32) |
|
1 |
|
<div class="islands"> |
|
2 |
|
<h2>Download</h2> |
|
3 |
|
|
|
4 |
|
<div class="island_row"> |
|
5 |
|
<div class="island_cell"> |
|
6 |
|
<div class="island"> |
|
7 |
|
<div class="island_title">By cloning</div> |
|
8 |
|
You can just clone RocketGit project and install it from sources. |
|
9 |
|
Just follow this <a href="http://rocketgit.com/user/catalinux/rocketgit">link</a>. |
|
10 |
|
</div> |
|
11 |
|
</div> |
|
12 |
|
|
|
13 |
|
<div class="island_cell"> |
|
14 |
|
<div class="island"> |
|
15 |
|
<div class="island_title">Fedora</div> |
|
16 |
|
From here you can download all the RPMs needed for a Fedora instalation. |
|
17 |
|
Allow us few days to prepare the packages. |
|
18 |
|
</div> |
|
19 |
|
</div> |
|
20 |
|
</div> |
|
21 |
|
|
|
22 |
|
<div class="island_row"> |
|
23 |
|
<div class="island_cell"> |
|
24 |
|
<div class="island"> |
|
25 |
|
<div class="island_title">Other distributions</div> |
|
26 |
|
In the near future, we will provide packages ready for instalation |
|
27 |
|
for all major distributions. If you know how to do a package, please |
|
28 |
|
help us. Thank you. |
|
29 |
|
</div> |
|
30 |
|
</div> |
|
31 |
|
|
|
32 |
|
<div class="island_cell"> |
|
33 |
|
<div class="island"> |
|
34 |
|
<div class="island_title">Virtual machines images</div> |
|
35 |
|
Please allow us few days to provide images for KVM, VirtualBox and VMWare. |
|
36 |
|
We will do our best to go under 100MiB per image. |
|
37 |
|
</div> |
|
38 |
|
</div> |
|
39 |
|
</div> |
|
40 |
|
|
|
41 |
|
</div> |
File root/themes/default/features.html added (mode: 100644) (index 0000000..472bdd0) |
|
1 |
|
<div class="islands"> |
|
2 |
|
<h2>Features</h2> |
|
3 |
|
|
|
4 |
|
<div class="island_row"> |
|
5 |
|
<div class="island_cell"> |
|
6 |
|
<div class="island"> |
|
7 |
|
<div class="island_title">FLOS (free, libre and open-source) software</div> |
|
8 |
|
RocketGit is licensed under |
|
9 |
|
the GNU General Public License v3+, therefore you have the freedom |
|
10 |
|
to share and change all versions of the program and you can |
|
11 |
|
distribute your changes as well. No vendor lock-in. |
|
12 |
|
</div> |
|
13 |
|
</div> |
|
14 |
|
|
|
15 |
|
<div class="island_cell"> |
|
16 |
|
<div class="island"> |
|
17 |
|
<div class="island_title">Fastest</div> |
|
18 |
|
RocketGit is extremely fast as it doesn't contain any Java, |
|
19 |
|
Javascript or Flash. And we plan to rewrite it in C for maximum speed. |
|
20 |
|
</div> |
|
21 |
|
</div> |
|
22 |
|
|
|
23 |
|
<div class="island_cell"> |
|
24 |
|
<div class="island"> |
|
25 |
|
<div class="island_title">Lightest</div> |
|
26 |
|
RocketGit is really compact, therefore even if you choose to |
|
27 |
|
install it on your machine instead of using it in your web |
|
28 |
|
browser, you only need a very small virtual machine for |
|
29 |
|
this (1 core, 256MiB RAM are enough). |
|
30 |
|
</div> |
|
31 |
|
</div> |
|
32 |
|
</div> |
|
33 |
|
|
|
34 |
|
<div class="island_row"> |
|
35 |
|
<div class="island_cell"> |
|
36 |
|
<div class="island"> |
|
37 |
|
<div class="island_title">Ready to go</div> |
|
38 |
|
You can just open your web browser and start using |
|
39 |
|
RocketGit, but even if you choose to install RocketGit on your |
|
40 |
|
machine you can have it up and running in under 2 minutes. You |
|
41 |
|
can say goodbye to lengthy and boring installations! |
|
42 |
|
</div> |
|
43 |
|
</div> |
|
44 |
|
|
|
45 |
|
<div class="island_cell"> |
|
46 |
|
<div class="island"> |
|
47 |
|
<div class="island_title">Very easy to maintain</div> |
|
48 |
|
RocketGit has very little dependencies, all packed |
|
49 |
|
in the main-stream distributions. You just upgrade your |
|
50 |
|
operating system and RocketGit will be up-to-date too. |
|
51 |
|
</div> |
|
52 |
|
</div> |
|
53 |
|
|
|
54 |
|
<div class="island_cell"> |
|
55 |
|
<div class="island"> |
|
56 |
|
<div class="island_title">Corporate friendly</div> |
|
57 |
|
RocketGit is SELinux aware (we wrote the policy), |
|
58 |
|
therefore you can keep your system secure when |
|
59 |
|
using RocketGit. |
|
60 |
|
</div> |
|
61 |
|
</div> |
|
62 |
|
</div> |
|
63 |
|
|
|
64 |
|
<div class="island_row"> |
|
65 |
|
<div class="island_cell"> |
|
66 |
|
<div class="island"> |
|
67 |
|
<div class="island_title">Platform independent</div> |
|
68 |
|
RocketGit is the fastest and lightest platform independent Git hosting |
|
69 |
|
solution currently available on the market. |
|
70 |
|
You can use RocketGit in your web browser (no matter what |
|
71 |
|
operating system is running on your machine) or you can choose to |
|
72 |
|
install RocketGit on your machine (natively, if you are |
|
73 |
|
using Linux, or in a virtual machine, otherwise). |
|
74 |
|
</div> |
|
75 |
|
</div> |
|
76 |
|
|
|
77 |
|
<div class="island_cell"> |
|
78 |
|
<div class="island"> |
|
79 |
|
<div class="island_title">Integrated bug tracker</div> |
|
80 |
|
We built the simplest and the most powerful bug tracker. |
|
81 |
|
Minimal input and flexible label based tagging. Then, you can |
|
82 |
|
create custom searches and even save them to reuse. |
|
83 |
|
</div> |
|
84 |
|
</div> |
|
85 |
|
|
|
86 |
|
<div class="island_cell"> |
|
87 |
|
<div class="island"> |
|
88 |
|
<div class="island_title">Easy to contribute</div> |
|
89 |
|
With the anonymous push feature, to contribute to a project becomes |
|
90 |
|
very easy: a clone and a push. You don't even need an account on |
|
91 |
|
rocketgit.com. |
|
92 |
|
</div> |
|
93 |
|
</div> |
|
94 |
|
</div> |
|
95 |
|
|
|
96 |
|
<div class="island_row"> |
|
97 |
|
<div class="island_cell"> |
|
98 |
|
<div class="island"> |
|
99 |
|
<div class="island_title">Powerful rights management</div> |
|
100 |
|
You have a lot of possibilities to block access to a repository. |
|
101 |
|
You can filter by IPv4/IPv6 addresses (including prefix lenght), |
|
102 |
|
by reference path (regex), by path (regex). You can reject commits |
|
103 |
|
based on size, bad whitespace or operation (create/update/delete) of |
|
104 |
|
branches/tags. You can control the non fast-forwards pushes and the |
|
105 |
|
merges. |
|
106 |
|
</div> |
|
107 |
|
</div> |
|
108 |
|
|
|
109 |
|
<div class="island_cell"> |
|
110 |
|
<div class="island"> |
|
111 |
|
<div class="island_title">Built on top of top software</div> |
|
112 |
|
We use the best products to build upon: Linux, Git, PostgreSQL, |
|
113 |
|
Apache, PHP and SELinux. |
|
114 |
|
</div> |
|
115 |
|
</div> |
|
116 |
|
</div> |
|
117 |
|
|
|
118 |
|
</div> |
File root/themes/default/index.html changed (mode: 100644) (index 0c87c71..c615232) |
12 |
12 |
<div id="container"> |
<div id="container"> |
13 |
13 |
|
|
14 |
14 |
<div id="header"> |
<div id="header"> |
15 |
|
<a class="logo" href="/">RocketGit</a> |
|
|
15 |
|
<div class="logo"> |
|
16 |
|
<a href="/">RocketGit</a> Rocket your launch! |
|
17 |
|
</div> |
16 |
18 |
|
|
17 |
19 |
<div class="user"> |
<div class="user"> |
18 |
|
@@if("@@login_ui::username@@" != ""){{ |
|
|
20 |
|
<a href="/op/download">Download</a> |
|
21 |
|
<a href="/op/features">Features</a> |
|
22 |
|
<a href="/op/pricing">Pricing</a> |
|
23 |
|
<a href="/op/tos">ToS</a> |
|
24 |
|
<a href="/op/donate">Donate</a> |
|
25 |
|
@@if(@@login_ui::uid@@ != 0){{ |
|
26 |
|
<a href="/op/suggestion">Suggestion</a> |
|
27 |
|
<a href="/op/logout?token=@@logout_token@@">Logout</a> |
19 |
28 |
<a href="@@login_ui::homepage@@">@@login_ui::username@@</a> |
<a href="@@login_ui::homepage@@">@@login_ui::username@@</a> |
20 |
29 |
}}{{ |
}}{{ |
21 |
30 |
<a href="/op/login">Sign in</a> |
<a href="/op/login">Sign in</a> |
|
23 |
32 |
</div> |
</div> |
24 |
33 |
</div> <!-- header --> |
</div> <!-- header --> |
25 |
34 |
|
|
|
35 |
|
<div class="slogan"> |
|
36 |
|
FLOS (free, libre and open-source) software for managing Git projects, |
|
37 |
|
both public and private. |
|
38 |
|
</div> |
|
39 |
|
|
26 |
40 |
<!-- main menu --> |
<!-- main menu --> |
27 |
41 |
<div id="menus"> |
<div id="menus"> |
28 |
42 |
<div class="menu"> |
<div class="menu"> |
|
30 |
44 |
@@if(@@login_ui::uid@@ != 0){{<li@@if(@@menu::settings@@ == 1){{ class="selected"}}{{}}><a href="/op/settings">Settings</a></li>}}{{}} |
@@if(@@login_ui::uid@@ != 0){{<li@@if(@@menu::settings@@ == 1){{ class="selected"}}{{}}><a href="/op/settings">Settings</a></li>}}{{}} |
31 |
45 |
<li@@if(@@menu::repo@@ == 1){{ class="selected"}}{{}}><a href="/op/repo">Repositories</a></li> |
<li@@if(@@menu::repo@@ == 1){{ class="selected"}}{{}}><a href="/op/repo">Repositories</a></li> |
32 |
46 |
@@if(@@login_ui::is_admin@@ == 1){{<li@@if(@@menu::admin@@ == 1){{ class="selected"}}{{}}><a href="/op/admin">Admin</a></li>}}{{}} |
@@if(@@login_ui::is_admin@@ == 1){{<li@@if(@@menu::admin@@ == 1){{ class="selected"}}{{}}><a href="/op/admin">Admin</a></li>}}{{}} |
33 |
|
@@if(@@login_ui::uid@@ != 0){{<li@@if(@@menu::suggestion@@ == 1){{ class="selected"}}{{}}><a href="/op/suggestion">Suggestion</a></li>}}{{}} |
|
34 |
|
@@if(@@login_ui::uid@@ != 0){{<li@@if(@@menu::logout@@ == 1){{ class="selected"}}{{}} ><a href="/op/logout?token=@@logout_token@@">Logout</a></li>}}{{}} |
|
35 |
47 |
</ul> |
</ul> |
36 |
48 |
</div> |
</div> |
37 |
49 |
|
|
|
48 |
60 |
|
|
49 |
61 |
<div id="footer"> |
<div id="footer"> |
50 |
62 |
<div id="footer_logo"> |
<div id="footer_logo"> |
51 |
|
<img src="@@IMG:logo/rg4.png@@" alt="RocketGit logo" /><br /> |
|
52 |
|
<a class="logo" href="/">RocketGit</a> |
|
|
63 |
|
<img src="@@IMG:logo/rg6.png@@" alt="RocketGit logo" /><br /> |
|
64 |
|
<div class="logo"> |
|
65 |
|
<a href="/">RocketGit</a> |
|
66 |
|
</div> |
53 |
67 |
</div> |
</div> |
54 |
68 |
|
|
55 |
69 |
<div id="footer_info"> |
<div id="footer_info"> |
File root/themes/default/main.css changed (mode: 100644) (index 33098c0..b2eb00b) |
... |
... |
form input[type="text"], form input[type="password"], form textarea, form select |
45 |
45 |
} |
} |
46 |
46 |
form select option { padding: 1px 4px 1px 4px; } |
form select option { padding: 1px 4px 1px 4px; } |
47 |
47 |
form input[type="submit"] { |
form input[type="submit"] { |
48 |
|
color: #FF2700; |
|
|
48 |
|
color: red; |
49 |
49 |
display: inline-block; |
display: inline-block; |
50 |
50 |
font-weight: bold; |
font-weight: bold; |
51 |
51 |
font-size: 11pt; |
font-size: 11pt; |
|
... |
... |
form input[type="submit"] { |
67 |
67 |
float: left; |
float: left; |
68 |
68 |
font-size: 16pt; |
font-size: 16pt; |
69 |
69 |
font-weight: bold; |
font-weight: bold; |
70 |
|
text-decoration: none; |
|
|
70 |
|
padding: 10px 15px; |
|
71 |
|
xxx-vertical-align: bottom; |
|
72 |
|
color: yellow; |
|
73 |
|
font-style: italic; |
|
74 |
|
} |
|
75 |
|
.logo a { |
71 |
76 |
text-shadow: 0 0 2px yellow; |
text-shadow: 0 0 2px yellow; |
72 |
|
color: #FF2700; |
|
73 |
|
padding: 5px 12px 5px 15px; |
|
74 |
|
vertical-align: bottom; |
|
75 |
|
xxx-display: inline; |
|
|
77 |
|
color: red; |
|
78 |
|
text-decoration: none; |
|
79 |
|
font-size: 20pt; |
|
80 |
|
font-style: normal; |
|
81 |
|
} |
|
82 |
|
|
|
83 |
|
.slogan { |
|
84 |
|
font-size: 16pt; |
|
85 |
|
font-weight: bold; |
|
86 |
|
font-style: italic; |
|
87 |
|
line-height: 120%; |
|
88 |
|
color: yellow; |
|
89 |
|
padding: 5px 15px; |
76 |
90 |
} |
} |
77 |
91 |
|
|
78 |
92 |
.user { |
.user { |
79 |
|
padding: 5px 15px 5px 0px; |
|
|
93 |
|
padding: 10px 15px; |
80 |
94 |
float: right; |
float: right; |
81 |
95 |
} |
} |
82 |
96 |
.user a { |
.user a { |
|
... |
... |
form input[type="submit"] { |
85 |
99 |
text-decoration: none; |
text-decoration: none; |
86 |
100 |
color: #000000; |
color: #000000; |
87 |
101 |
text-shadow: 0 0 3px #ffffff; |
text-shadow: 0 0 3px #ffffff; |
88 |
|
xxx-padding: 3px 12px 3px 0px; |
|
89 |
|
xxx-padding: 3px 0px 3px 0px; |
|
|
102 |
|
padding-left: 15px; |
90 |
103 |
} |
} |
91 |
104 |
|
|
92 |
105 |
#menus { |
#menus { |
|
... |
... |
form input[type="submit"] { |
110 |
123 |
font-weight: bold; |
font-weight: bold; |
111 |
124 |
padding: 5px 15px; |
padding: 5px 15px; |
112 |
125 |
} |
} |
113 |
|
.menu ul li a:hover { color: #FF2700; } |
|
|
126 |
|
.menu ul li a:hover { color: red; } |
114 |
127 |
.menu ul li.selected { background-color: #BBB; } |
.menu ul li.selected { background-color: #BBB; } |
115 |
128 |
.menu ul li.selected a:hover { color: #CCC; } |
.menu ul li.selected a:hover { color: #CCC; } |
116 |
129 |
|
|
|
... |
... |
form input[type="submit"] { |
134 |
147 |
|
|
135 |
148 |
#header { |
#header { |
136 |
149 |
overflow: hidden; |
overflow: hidden; |
137 |
|
xxx-border-bottom: 1px solid #000000; |
|
138 |
|
box-shadow: 0px 2px 3px #666666; |
|
|
150 |
|
box-shadow: 0px 4px 6px #666666; |
139 |
151 |
background-color: #888888; |
background-color: #888888; |
140 |
152 |
width: 100%; |
width: 100%; |
141 |
|
margin-bottom: 4px; |
|
|
153 |
|
margin-bottom: 6px; |
|
154 |
|
line-height: 120%; |
142 |
155 |
} |
} |
143 |
156 |
#header table { |
#header table { |
144 |
157 |
border-collapse: collapse; |
border-collapse: collapse; |
|
... |
... |
form input[type="submit"] { |
162 |
175 |
line-height: 120%; |
line-height: 120%; |
163 |
176 |
} |
} |
164 |
177 |
|
|
165 |
|
tos { |
|
166 |
|
} |
|
167 |
|
|
|
168 |
178 |
#footer { |
#footer { |
169 |
179 |
width: 100%; |
width: 100%; |
170 |
180 |
overflow: hidden; |
overflow: hidden; |
|
... |
... |
tos { |
173 |
183 |
padding: 0 15px; |
padding: 0 15px; |
174 |
184 |
display: table-row; |
display: table-row; |
175 |
185 |
vertical-align: bottom; |
vertical-align: bottom; |
|
186 |
|
height: 100px; |
|
187 |
|
box-shadow: 0px -4px 6px #666666; |
176 |
188 |
} |
} |
177 |
189 |
#footer_logo { |
#footer_logo { |
178 |
190 |
padding: 10px 0; |
padding: 10px 0; |
179 |
191 |
float: left; |
float: left; |
180 |
|
margin-left: 12px; |
|
181 |
|
display: block; |
|
182 |
|
border: 1px white; |
|
183 |
192 |
} |
} |
|
193 |
|
#footer_logo img { margin-left: auto; margin-right: auto; display: block; } |
184 |
194 |
#footer_info { |
#footer_info { |
185 |
195 |
color: #ffffff; |
color: #ffffff; |
186 |
|
background-color: #888888; |
|
187 |
196 |
padding: 5px; |
padding: 5px; |
188 |
197 |
font-size: 11pt; |
font-size: 11pt; |
189 |
|
line-height: 120%; |
|
190 |
|
float: left; |
|
|
198 |
|
line-height: 115%; |
191 |
199 |
margin-left: 20px; |
margin-left: 20px; |
192 |
|
display: block; |
|
193 |
|
border: 1px white; |
|
|
200 |
|
float: left; |
194 |
201 |
} |
} |
195 |
202 |
|
|
196 |
203 |
.horizontal_buttons { |
.horizontal_buttons { |
|
... |
... |
tos { |
236 |
243 |
|
|
237 |
244 |
.error { |
.error { |
238 |
245 |
font-weight: bold; |
font-weight: bold; |
239 |
|
color: #FF2700; |
|
|
246 |
|
color: red; |
240 |
247 |
} |
} |
241 |
248 |
|
|
242 |
249 |
.form_item_title {} |
.form_item_title {} |
|
... |
... |
tos { |
249 |
256 |
|
|
250 |
257 |
.blob_title { |
.blob_title { |
251 |
258 |
font-size: 11pt; |
font-size: 11pt; |
252 |
|
color: #FF2700; |
|
|
259 |
|
color: red; |
253 |
260 |
} |
} |
254 |
261 |
|
|
255 |
262 |
.source { |
.source { |
|
... |
... |
tos { |
314 |
321 |
} |
} |
315 |
322 |
|
|
316 |
323 |
.error {} |
.error {} |
317 |
|
.error b { color: #FF2700; font-weight: bold; font-size: 11pt; } |
|
|
324 |
|
.error b { color: red; font-weight: bold; font-size: 11pt; } |
318 |
325 |
.error ul { padding-left: 15pt; } |
.error ul { padding-left: 15pt; } |
319 |
326 |
.error ul li {} |
.error ul li {} |
320 |
327 |
|
|
|
... |
... |
tos { |
406 |
413 |
margin-top: 5px; |
margin-top: 5px; |
407 |
414 |
background-color: #CCC; |
background-color: #CCC; |
408 |
415 |
padding: 5px; |
padding: 5px; |
409 |
|
border: 1px solid #FF2700; |
|
410 |
|
color: #FF2700; |
|
|
416 |
|
border: 1px solid red; |
|
417 |
|
color: red; |
411 |
418 |
display: table; |
display: table; |
412 |
419 |
} |
} |
413 |
420 |
|
|
|
... |
... |
tos { |
421 |
428 |
|
|
422 |
429 |
.tos { |
.tos { |
423 |
430 |
margin-top: 5px; |
margin-top: 5px; |
424 |
|
border: 1px solid #999998; |
|
|
431 |
|
xxx-border: 1px solid #999998; |
425 |
432 |
padding: 5px; |
padding: 5px; |
426 |
|
border-radius: 4px 4px 4px 4px; |
|
|
433 |
|
xxx-border-radius: 4px 4px 4px 4px; |
427 |
434 |
display: table; |
display: table; |
428 |
435 |
} |
} |
429 |
|
.tos h2 { margin-bottom: 5px; } |
|
430 |
436 |
.tos ul { x-list-style-type: none; padding-left: 15px; } |
.tos ul { x-list-style-type: none; padding-left: 15px; } |
431 |
437 |
|
|
432 |
438 |
.page_title { |
.page_title { |
|
... |
... |
tos { |
435 |
441 |
font-weight: bold; |
font-weight: bold; |
436 |
442 |
} |
} |
437 |
443 |
|
|
438 |
|
.first_page { |
|
|
444 |
|
.islands { |
439 |
445 |
margin-top: 5px; |
margin-top: 5px; |
440 |
|
border: 1px solid #999998; |
|
441 |
|
padding: 5px; |
|
|
446 |
|
font-size: 13pt; |
|
447 |
|
width: 700px; |
|
448 |
|
line-height: 115%; |
|
449 |
|
} |
|
450 |
|
|
|
451 |
|
.island_row { |
|
452 |
|
display: table; |
|
453 |
|
} |
|
454 |
|
|
|
455 |
|
.island_cell { |
|
456 |
|
display: table-cell; |
|
457 |
|
padding: 15px; |
|
458 |
|
} |
|
459 |
|
|
|
460 |
|
.island { |
442 |
461 |
border-radius: 4px 4px 4px 4px; |
border-radius: 4px 4px 4px 4px; |
|
462 |
|
border: 1px solid #999998; |
443 |
463 |
font-size: 13pt; |
font-size: 13pt; |
444 |
|
width: 600px; |
|
445 |
464 |
line-height: 115%; |
line-height: 115%; |
|
465 |
|
padding: 10px; |
|
466 |
|
box-shadow: 0px 2px 3px #666666; |
|
467 |
|
display: table-cell; |
|
468 |
|
} |
|
469 |
|
|
|
470 |
|
.island_title { |
|
471 |
|
color: red; |
|
472 |
|
font-size: 14pt; |
|
473 |
|
font-weight: bold; |
446 |
474 |
} |
} |
File root/themes/default/main.html changed (mode: 100644) (index aee3807..e238814) |
1 |
|
<div class="first_page"> |
|
2 |
|
<div style="font-size: 23pt; font-weight: bold;"> |
|
3 |
|
Welcome to RocketGit! |
|
|
1 |
|
<div class="islands"> |
|
2 |
|
<h2>Welcome to RocketGit!</h2> |
|
3 |
|
|
|
4 |
|
<div class="island_row"> |
|
5 |
|
<div class="island_cell"> |
|
6 |
|
<div class="island"> |
|
7 |
|
<div class="island_title">FLOSS</div> |
|
8 |
|
We know that many people find inappropriate to host their projects on a |
|
9 |
|
proprietary platform. Therefore, we created RocketGit. |
|
10 |
|
</div> |
|
11 |
|
</div> |
|
12 |
|
|
|
13 |
|
<div class="island_cell"> |
|
14 |
|
<div class="island"> |
|
15 |
|
<div class="island_title">Goal</div> |
|
16 |
|
Our goal is to become the best FLOS (free, libre and open-source) |
|
17 |
|
software for managing Git projects, both public and private. |
|
18 |
|
With your help, we will reach our goal. Thank you! |
|
19 |
|
</div> |
|
20 |
|
</div> |
|
21 |
|
|
|
22 |
|
<div class="island_cell"> |
|
23 |
|
<div class="island"> |
|
24 |
|
<div class="island_title">No Enterprise Edition</div> |
|
25 |
|
In case you are wondering about the Enterprise Edition, we are happy to |
|
26 |
|
inform you that this is the same version as the one running here, on |
|
27 |
|
rocketgit.com. Therefore, you can choose to run RocketGit |
|
28 |
|
inside the firewall (on-premise) without losing the FLOSS benefits. |
|
29 |
|
</div> |
|
30 |
|
</div> |
|
31 |
|
</div> |
|
32 |
|
|
|
33 |
|
<div class="island_row"> |
|
34 |
|
<div class="island_cell"> |
|
35 |
|
<div class="island"> |
|
36 |
|
<div class="island_title">Business</div> |
|
37 |
|
Perhaps you want to know how we intend to sustain this business without a |
|
38 |
|
mandatory fee for using the Enterprise Edition. We plan to do this by |
|
39 |
|
offering paid support, by charging for customization, by accepting ads |
|
40 |
|
(very targeted and no Flash/JavaScript) and |
|
41 |
|
<a href="/op/donate">donations</a>. |
|
42 |
|
Please support us to be able to keep this project going. |
|
43 |
|
</div> |
|
44 |
|
</div> |
|
45 |
|
|
|
46 |
|
<div class="island_cell"> |
|
47 |
|
<div class="island"> |
|
48 |
|
<div class="island_title">Private repositories?</div> |
|
49 |
|
Here, at rocketgit.com, you can create an unlimited number |
|
50 |
|
of repositories, both public and private. |
|
51 |
|
</div> |
|
52 |
|
</div> |
|
53 |
|
|
|
54 |
|
<div class="island_cell"> |
|
55 |
|
<div class="island"> |
|
56 |
|
<div class="island_title">Install</div> |
|
57 |
|
To install this software on your server, just go to |
|
58 |
|
<a href="http://rocketgit.com/user/catalinux/rocketgit/source">RocketGit repo</a> |
|
59 |
|
and follow the instructions. It only takes two minutes. |
|
60 |
|
In the near future we will provide pre-made virtual machine images to |
|
61 |
|
achieve under 10 seconds install time. |
|
62 |
|
</div> |
|
63 |
|
</div> |
4 |
64 |
</div> |
</div> |
5 |
|
<br /> |
|
6 |
|
|
|
7 |
|
We know that a lot of people are not happy at all to host a project |
|
8 |
|
on a proprietary platform. So, we created this project.<br /> |
|
9 |
|
<br /> |
|
10 |
|
|
|
11 |
|
Our goal is to become the best FLOSS (free, libre and open-source) |
|
12 |
|
software for managing Git both public and private projects. |
|
13 |
|
With your help, we will reach our goal. Thank you!<br /> |
|
14 |
|
<br /> |
|
15 |
|
|
|
16 |
|
If you are wondering about the Enterprise Edition, the good news is that |
|
17 |
|
this is the same version as the one running here, on rocketgit.com. |
|
18 |
|
You can run this software inside the firewall using free software.<br /> |
|
19 |
|
<br /> |
|
20 |
|
|
|
21 |
|
Maybe you want to know how do we intend to sustain the business without |
|
22 |
|
a mandatory fee for using the Enterprise Edition. |
|
23 |
|
We will do it by offering paid support, by charging for customizations, |
|
24 |
|
ads (very targeted and no flash) and donations. |
|
25 |
|
Please support us to be able to keep going this project.<br /> |
|
26 |
|
<br /> |
|
27 |
|
|
|
28 |
|
Here at rocketgit.com, you can create an unlimited number of repositories, |
|
29 |
|
both public and private.<br /> |
|
30 |
|
<br /> |
|
31 |
|
|
|
32 |
|
To install this software on your server, just go to |
|
33 |
|
<a href="http://rocketgit.com/user/catalinux/rocketgit/source"></a> |
|
34 |
|
and follow the instructions. Takes two minutes. In the near future we will |
|
35 |
|
provide pre-made virtual machine images to achieve under 10 seconds |
|
36 |
|
install time.<br /> |
|
37 |
|
<br /> |
|
38 |
|
|
|
39 |
|
You can create an account <a href="/op/create_account">here</a>.<br /> |
|
|
65 |
|
|
|
66 |
|
<div class="island_row"> |
|
67 |
|
<div class="island_cell"> |
|
68 |
|
<div class="island"> |
|
69 |
|
<div class="island_title">Start</div> |
|
70 |
|
You can create an account <a href="/op/create_account">here</a>. |
|
71 |
|
<br /> |
|
72 |
|
<br /> |
|
73 |
|
<b>Enjoy using RocketGit! Rocket your launch!</b> |
|
74 |
|
</div> |
|
75 |
|
</div> |
|
76 |
|
</div> |
|
77 |
|
|
40 |
78 |
</div> |
</div> |