File Makefile.in changed (mode: 100644) (index 791ede4..7528f39) |
... |
... |
tests: |
22 |
22 |
|
|
23 |
23 |
install: all |
install: all |
24 |
24 |
@mkdir -pv $(I_USR_SHARE)/$(PRJ) |
@mkdir -pv $(I_USR_SHARE)/$(PRJ) |
25 |
|
cp -vdr admin inc hooks root scripts $(I_USR_SHARE)/$(PRJ) |
|
|
25 |
|
cp -vdr inc hooks root scripts $(I_USR_SHARE)/$(PRJ) |
26 |
26 |
@mkdir -pv $(I_ETC)/xinetd.d |
@mkdir -pv $(I_ETC)/xinetd.d |
27 |
27 |
cp -vd --no-clobber samples/rg $(I_ETC)/xinetd.d/$(PRJ) |
cp -vd --no-clobber samples/rg $(I_ETC)/xinetd.d/$(PRJ) |
28 |
28 |
@mkdir -pv $(I_ETC)/cron.d |
@mkdir -pv $(I_ETC)/cron.d |
File README.vm changed (mode: 100644) (index 6df554d..a29cbbe) |
... |
... |
How to customize Fedora virtual machine image |
8 |
8 |
- Allow this virtual machine to send mail (add it to the relay allow list). |
- Allow this virtual machine to send mail (add it to the relay allow list). |
9 |
9 |
- You may want to set to it a static IP address instead of DHCP. |
- You may want to set to it a static IP address instead of DHCP. |
10 |
10 |
- You may want to add it to the DNS server |
- You may want to add it to the DNS server |
|
11 |
|
- Add a RNG device inside virtual machine? |
|
12 |
|
|
|
13 |
|
It takes around 2 minutes for the first boot to setup needed things to run. |
File TODO changed (mode: 100644) (index f441cb0..da7761b) |
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 |
16 |
[ ] Beta sign. |
[ ] Beta sign. |
|
17 |
|
[ ] Use a cache var to signal all daemons that we are ready to go. |
|
18 |
|
Or better, a file in /var/lib/rocketgit? |
|
19 |
|
[ ] Recheck what may be run as root in scripts/ folder |
|
20 |
|
[ ] We need to be able to delete old files! We cannot release the vm without |
|
21 |
|
this! |
|
22 |
|
[ ] Upload kvm image to downloads.rocketgit.com. Sign it? sha256 it? |
|
23 |
|
[ ] Secutiry: validate sparas! |
19 |
24 |
[ ] |
[ ] |
20 |
25 |
|
|
21 |
26 |
== BEFORE NEXT RELEASE == |
== BEFORE NEXT RELEASE == |
|
27 |
|
[ ] Warn users on the first page for behind-the-firewall installations |
|
28 |
|
that a new version is avilable. Maybe also the severity level. |
22 |
29 |
[ ] Add unit test for 'copy to' into git_log1. There is already one but does |
[ ] Add unit test for 'copy to' into git_log1. There is already one but does |
23 |
30 |
not trigger the detection. Maybe we need a bigger file. |
not trigger the detection. Maybe we need a bigger file. |
24 |
31 |
[ ] Make the blob show nicer and remove rg_template_list (replace |
[ ] Make the blob show nicer and remove rg_template_list (replace |
File inc/admin.inc.php changed (mode: 100644) (index 23bedb9..2a818a7) |
... |
... |
function rg_init($db, $rg) |
165 |
165 |
global $rg_admin_email; |
global $rg_admin_email; |
166 |
166 |
|
|
167 |
167 |
rg_prof_start("rg_init"); |
rg_prof_start("rg_init"); |
|
168 |
|
rg_log_enter("rg_init"); |
|
169 |
|
|
|
170 |
|
$ret = ''; |
168 |
171 |
|
|
169 |
172 |
$doit = rg_var_uint('doit'); |
$doit = rg_var_uint('doit'); |
170 |
173 |
if ($doit == 0) { |
if ($doit == 0) { |
|
... |
... |
function rg_init($db, $rg) |
182 |
185 |
$rg['init'] = array(); |
$rg['init'] = array(); |
183 |
186 |
$rg['init']['uid'] = 0; |
$rg['init']['uid'] = 0; |
184 |
187 |
$rg['init']['is_admin'] = 1; |
$rg['init']['is_admin'] = 1; |
185 |
|
$rg['init']['rights'] = rg_rights_all('init::user'); |
|
|
188 |
|
$rg['init']['rights'] = rg_rights_all('user'); |
186 |
189 |
$rg['init']['confirm_token'] = ''; |
$rg['init']['confirm_token'] = ''; |
187 |
190 |
$rg['init']['plan_id'] = 1; |
$rg['init']['plan_id'] = 1; |
188 |
191 |
$rg['init']['username'] = rg_var_str('init::username'); |
$rg['init']['username'] = rg_var_str('init::username'); |
|
... |
... |
function rg_init($db, $rg) |
191 |
194 |
$rg['init']['pass'] = rg_var_str('init::pass'); |
$rg['init']['pass'] = rg_var_str('init::pass'); |
192 |
195 |
$rg['init']['pass2'] = rg_var_str('init::pass2'); |
$rg['init']['pass2'] = rg_var_str('init::pass2'); |
193 |
196 |
$rg['init']['session_time'] = rg_var_uint('init::session_time'); |
$rg['init']['session_time'] = rg_var_uint('init::session_time'); |
|
197 |
|
$rg['init']['confirmed'] = 1; /* = no need to confirm */ |
194 |
198 |
|
|
195 |
199 |
if (!rg_valid_referer()) { |
if (!rg_valid_referer()) { |
196 |
200 |
$errmsg[] = "invalid referer; try again"; |
$errmsg[] = "invalid referer; try again"; |
|
... |
... |
function rg_init($db, $rg) |
221 |
225 |
$ret .= rg_template("admin/init.html", $rg); |
$ret .= rg_template("admin/init.html", $rg); |
222 |
226 |
} |
} |
223 |
227 |
|
|
|
228 |
|
rg_log_exit(); |
224 |
229 |
rg_prof_end("rg_init"); |
rg_prof_end("rg_init"); |
225 |
230 |
return $ret; |
return $ret; |
226 |
231 |
} |
} |
File inc/bug.inc.php changed (mode: 100644) (index 6c14725..a24d26a) |
... |
... |
function rg_bug_edit($db, $login_ui, $ri, $data) |
522 |
522 |
break; |
break; |
523 |
523 |
} |
} |
524 |
524 |
|
|
|
525 |
|
$rollback = 0; |
|
526 |
|
|
525 |
527 |
// update cache |
// update cache |
526 |
528 |
$data['ok'] = 1; |
$data['ok'] = 1; |
527 |
529 |
$data['exists'] = 1; |
$data['exists'] = 1; |
|
... |
... |
function rg_bug_edit($db, $login_ui, $ri, $data) |
532 |
534 |
rg_event_signal_daemon("", 0); |
rg_event_signal_daemon("", 0); |
533 |
535 |
|
|
534 |
536 |
$ret = $data['bug_id']; |
$ret = $data['bug_id']; |
535 |
|
$rollback = 0; |
|
536 |
537 |
break; |
break; |
537 |
538 |
} |
} |
538 |
539 |
|
|
File inc/state.inc.php changed (mode: 100644) (index c9eae14..99cd7a5) |
... |
... |
function rg_state_get($db, $var) |
41 |
41 |
break; |
break; |
42 |
42 |
} |
} |
43 |
43 |
|
|
|
44 |
|
// Not found in cache, try the database |
44 |
45 |
$params = array("var" => $var); |
$params = array("var" => $var); |
45 |
46 |
$sql = "SELECT value FROM state WHERE var = @@var@@ LIMIT 1"; |
$sql = "SELECT value FROM state WHERE var = @@var@@ LIMIT 1"; |
46 |
47 |
$res = rg_sql_query_params($db, $sql, $params); |
$res = rg_sql_query_params($db, $sql, $params); |
|
... |
... |
function rg_state_get($db, $var) |
59 |
60 |
rg_sql_free_result($res); |
rg_sql_free_result($res); |
60 |
61 |
|
|
61 |
62 |
// We cache it even if is not found |
// We cache it even if is not found |
62 |
|
rg_cache_set("state::" . $var, $ret); |
|
|
63 |
|
// TODO: I do not think it is OK to cache negative responses! |
|
64 |
|
//rg_cache_set("state::" . $var, $ret); |
63 |
65 |
|
|
64 |
66 |
break; |
break; |
65 |
67 |
} |
} |
File root/index.php changed (mode: 100644) (index fafbdc5..65bccd1) |
... |
... |
$rg['first_install_text'] = "?"; |
123 |
123 |
$r = rg_state_get($db, "first_install"); |
$r = rg_state_get($db, "first_install"); |
124 |
124 |
if ($r === FALSE) { |
if ($r === FALSE) { |
125 |
125 |
// Probably we cannot connect to database/cache |
// Probably we cannot connect to database/cache |
126 |
|
} else if ($r == 0) { |
|
|
126 |
|
$body .= rg_template('admin/db_error.html'); |
|
127 |
|
} else if ($r === '') { |
127 |
128 |
$body .= rg_init($db, $rg); |
$body .= rg_init($db, $rg); |
128 |
129 |
} else if ($r > 0) { |
} else if ($r > 0) { |
129 |
130 |
$rg['first_install_text'] = gmdate("Y-m-d", $r); |
$rg['first_install_text'] = gmdate("Y-m-d", $r); |
130 |
|
} |
|
131 |
|
|
|
132 |
|
|
|
133 |
|
rg_log("Dispatching to [$_op]"); |
|
134 |
|
include($INC . "/dispatch/dispatch.php"); |
|
135 |
131 |
|
|
|
132 |
|
rg_log("Dispatching to [$_op]"); |
|
133 |
|
include($INC . "/dispatch/dispatch.php"); |
|
134 |
|
} |
136 |
135 |
|
|
137 |
136 |
if ($rg['login_ui']['uid'] > 0) { |
if ($rg['login_ui']['uid'] > 0) { |
138 |
137 |
$rg['login_ui']['homepage'] = rg_re_userpage($rg['login_ui']); |
$rg['login_ui']['homepage'] = rg_re_userpage($rg['login_ui']); |
File root/themes/default/download.html changed (mode: 100644) (index 415ce32..13f9b92) |
32 |
32 |
<div class="island_cell"> |
<div class="island_cell"> |
33 |
33 |
<div class="island"> |
<div class="island"> |
34 |
34 |
<div class="island_title">Virtual machines images</div> |
<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. |
|
|
35 |
|
For KVM based machines, use this |
|
36 |
|
<a href="http://downloads.embedromix.ro/rocketgit-kvm-0.22.qcow2">link</a> (193MiB). |
|
37 |
|
Please allow us few days to provide images for VirtualBox and VMWare. |
|
38 |
|
We will do our best to go under 200MiB per image. |
37 |
39 |
</div> |
</div> |
38 |
40 |
</div> |
</div> |
39 |
41 |
</div> |
</div> |
File root/themes/default/main.html changed (mode: 100644) (index e238814..f748fad) |
21 |
21 |
|
|
22 |
22 |
<div class="island_cell"> |
<div class="island_cell"> |
23 |
23 |
<div class="island"> |
<div class="island"> |
24 |
|
<div class="island_title">No Enterprise Edition</div> |
|
|
24 |
|
<div class="island_title">No separate Enterprise Edition</div> |
25 |
25 |
In case you are wondering about the Enterprise Edition, we are happy to |
In case you are wondering about the Enterprise Edition, we are happy to |
26 |
26 |
inform you that this is the same version as the one running here, on |
inform you that this is the same version as the one running here, on |
27 |
27 |
rocketgit.com. Therefore, you can choose to run RocketGit |
rocketgit.com. Therefore, you can choose to run RocketGit |
|
34 |
34 |
<div class="island_cell"> |
<div class="island_cell"> |
35 |
35 |
<div class="island"> |
<div class="island"> |
36 |
36 |
<div class="island_title">Business</div> |
<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 |
|
|
37 |
|
Perhaps you want to know how we intend to sustain this business without |
|
38 |
|
a mandatory fee for using our software. We plan to do this by |
39 |
39 |
offering paid support, by charging for customization, by accepting ads |
offering paid support, by charging for customization, by accepting ads |
40 |
40 |
(very targeted and no Flash/JavaScript) and |
(very targeted and no Flash/JavaScript) and |
41 |
41 |
<a href="/op/donate">donations</a>. |
<a href="/op/donate">donations</a>. |
File root/themes/default/pricing.html changed (mode: 100644) (index 19d0bc5..10acfb4) |
21 |
21 |
<div class="island_cell"> |
<div class="island_cell"> |
22 |
22 |
<div class="island"> |
<div class="island"> |
23 |
23 |
<div class="island_title">Support</div> |
<div class="island_title">Support</div> |
24 |
|
If you need support, please contact us at support@rocketgit.com |
|
25 |
|
to discuss your options. |
|
|
24 |
|
Contact us at support@rocketgit.com for best-effort support. |
|
25 |
|
In the near future we will setup a mailing list for support. |
|
26 |
|
</div> |
|
27 |
|
</div> |
|
28 |
|
</div> |
|
29 |
|
|
|
30 |
|
<div class="island_row"> |
|
31 |
|
<div class="island_cell"> |
|
32 |
|
<div class="island"> |
|
33 |
|
<div class="island_title">Paid support</div> |
|
34 |
|
If you need paid support, please contact us at |
|
35 |
|
paid-support@rocketgit.com to discuss your options. |
26 |
36 |
</div> |
</div> |
27 |
37 |
</div> |
</div> |
28 |
38 |
</div> |
</div> |
File scripts/cron.php changed (mode: 100644) (index e14d92c..e0d2586) |
... |
... |
$r = rg_fixes_update($db); |
41 |
41 |
if ($r !== TRUE) |
if ($r !== TRUE) |
42 |
42 |
exit(1); |
exit(1); |
43 |
43 |
|
|
44 |
|
// Store the timestamp of the first install |
|
45 |
|
$first_install = rg_state_get($db, "first_install"); |
|
46 |
|
if ($first_install == 0) |
|
47 |
|
rg_state_set($db, "first_install", time()); |
|
48 |
|
|
|
49 |
44 |
$install_id = rg_state_get($db, "install_id"); |
$install_id = rg_state_get($db, "install_id"); |
50 |
45 |
if (empty($install_id)) |
if (empty($install_id)) |
51 |
46 |
rg_state_set($db, "install_id", sha512(microtime(TRUE))); |
rg_state_set($db, "install_id", sha512(microtime(TRUE))); |
52 |
47 |
|
|
|
48 |
|
$first_install = rg_state_get($db, 'first_install'); |
|
49 |
|
if ($first_install === '') |
|
50 |
|
exit(0); |
|
51 |
|
|
53 |
52 |
if ((gmdate("H") == 0) && (gmdate("i") == 3)) { |
if ((gmdate("H") == 0) && (gmdate("i") == 3)) { |
54 |
53 |
while (1) { |
while (1) { |
55 |
54 |
rg_log("Compute repository sizes if dirty..."); |
rg_log("Compute repository sizes if dirty..."); |