File TODO changed (mode: 100644) (index 6a3822c..3a70d08) |
25 |
25 |
ssh sk support |
ssh sk support |
26 |
26 |
distro packages |
distro packages |
27 |
27 |
More distributions and architectures added. |
More distributions and architectures added. |
28 |
|
[ ] I must have rocketgit-global-stable 2.89 and for testing 2.33 and I do not! Seems the trigger is not done! |
|
29 |
|
Seems pkg_generate_dotrepo_rpm_callback, which updates the db version |
|
30 |
|
(I think - check) was called, but the packages were not prepared. |
|
31 |
|
Seems rg_pkg_prepare_ev_for_dotrepo is skipping some repos because |
|
32 |
|
uid does not match. |
|
|
28 |
|
PHP 8 |
33 |
29 |
[ ] |
[ ] |
34 |
30 |
|
|
35 |
31 |
== hook update |
== hook update |
|
64 |
60 |
Seems we are cloning the namespace, before knowing if the user can push! |
Seems we are cloning the namespace, before knowing if the user can push! |
65 |
61 |
|
|
66 |
62 |
== FOR OTHER RELEASE == |
== FOR OTHER RELEASE == |
|
63 |
|
[ ] Use SELinux booleans to restrict more the VM env. |
|
64 |
|
[ ] Convert builder and worker to systemd serices (sockets). |
|
65 |
|
[ ] webhook: allow user to select pkg repos which should be enabled. |
|
66 |
|
Pay attention to use only the global ones! |
|
67 |
|
Maybe use different repos for different packages. |
|
68 |
|
[ ] Allow global repositories browsing. |
|
69 |
|
[ ] If we detect same version, we should increment build number. |
|
70 |
|
How we detect that version was already built? |
|
71 |
|
Store it somehow, or check in rgfs? |
|
72 |
|
[ ] We need to distinguish between build fatal errors and non-fatal. |
|
73 |
|
[ ] What happens if the worker is not running? Do we lose 'rgw' messages? |
|
74 |
|
We should buffer them. |
67 |
75 |
[ ] Describe how to remove RocketGit repositories. |
[ ] Describe how to remove RocketGit repositories. |
68 |
76 |
[ ] Explain why we have USERNAME+PROJECT packages names also in private repos. |
[ ] Explain why we have USERNAME+PROJECT packages names also in private repos. |
69 |
77 |
[ ] pkg_subrepo:distro_info should be exposed on web. |
[ ] pkg_subrepo:distro_info should be exposed on web. |
File inc/git.inc.php changed (mode: 100644) (index d437487..d627a04) |
... |
... |
function rg_git_diff($id, $a, $template_file) |
1764 |
1764 |
|
|
1765 |
1765 |
$v = rg_visible_string($finfo['file']); |
$v = rg_visible_string($finfo['file']); |
1766 |
1766 |
$f = rg_xss_safe($v); |
$f = rg_xss_safe($v); |
1767 |
|
$ret .= '<a name="file-' . $id . '-' . sha1($finfo['file']) . '"></a>' . "\n"; |
|
1768 |
1767 |
|
|
1769 |
|
$ret .= "<table class=\"chunk\">\n"; |
|
|
1768 |
|
$ret .= '<table id="file-' . $id . '-' . sha1($finfo['file']) . '" class="chunk">' . "\n"; |
1770 |
1769 |
$ret .= "<tr style=\"border: 1px; background: #dddddd\"><td colspan=\"4\">"; |
$ret .= "<tr style=\"border: 1px; background: #dddddd\"><td colspan=\"4\">"; |
1771 |
1770 |
if ($finfo['oversize_diff'] == 1) |
if ($finfo['oversize_diff'] == 1) |
1772 |
1771 |
$ret .= rg_template('repo/diff_too_big.html', |
$ret .= rg_template('repo/diff_too_big.html', |
File root/themes/default/doc/api.html changed (mode: 100644) (index 50d4509..d339922) |
... |
... |
$ ssh rocketgit@rocketgit.com api invalid_cmd |
37 |
37 |
<br /> |
<br /> |
38 |
38 |
|
|
39 |
39 |
|
|
40 |
|
<a name="user_info"><b>user_info</b></a><br /> |
|
|
40 |
|
<span id="user_info" class="api_op"><b>user_info</b></span><br /> |
41 |
41 |
<b>Description:</b> List information about a user<br /> |
<b>Description:</b> List information about a user<br /> |
42 |
42 |
<b>Parameters:</b> user/uid [optional]<br /> |
<b>Parameters:</b> user/uid [optional]<br /> |
43 |
43 |
Example: |
Example: |
|
... |
... |
$ ssh rocketgit@rocketgit.com api user_info user=bla |
75 |
75 |
<br /> |
<br /> |
76 |
76 |
|
|
77 |
77 |
|
|
78 |
|
<a name="user_rights_list"><b>user_rights_list</b></a><br /> |
|
|
78 |
|
<span id="user_rights_list" class="api_op"><b>user_rights_list</b></span><br /> |
79 |
79 |
<b>Description:</b> Lists user defined rights<br /> |
<b>Description:</b> Lists user defined rights<br /> |
80 |
80 |
<b>Parameters:</b> user/uid [optional]<br /> |
<b>Parameters:</b> user/uid [optional]<br /> |
81 |
81 |
Example: |
Example: |
|
... |
... |
$ ssh rocketgit@rocketgit.com api user_rights_list user=bla |
114 |
114 |
<br /> |
<br /> |
115 |
115 |
|
|
116 |
116 |
|
|
117 |
|
<a name="user_ssh_keys_list"><b>user_ssh_keys_list</b></a><br /> |
|
|
117 |
|
<span id="user_ssh_keys_list" class="api_op"><b>user_ssh_keys_list</b></span><br /> |
118 |
118 |
<b>Description:</b> Lists SSH keys of a user<br /> |
<b>Description:</b> Lists SSH keys of a user<br /> |
119 |
119 |
<b>Parameters:</b> user/uid [optional]<br /> |
<b>Parameters:</b> user/uid [optional]<br /> |
120 |
120 |
Example: |
Example: |
|
... |
... |
$ ssh rocketgit@rocketgit.com api user_ssh_keys_list user=bla |
148 |
148 |
<br /> |
<br /> |
149 |
149 |
|
|
150 |
150 |
|
|
151 |
|
<a name="user_wh_list"><b>user_wh_list</b></a><br /> |
|
|
151 |
|
<span id="user_wh_list" class="api_op"><b>user_wh_list</b></span><br /> |
152 |
152 |
<b>Description:</b> Lists webhooks of a user<br /> |
<b>Description:</b> Lists webhooks of a user<br /> |
153 |
153 |
<b>Parameters:</b> user/uid [optional]<br /> |
<b>Parameters:</b> user/uid [optional]<br /> |
154 |
154 |
Example: |
Example: |
|
... |
... |
$ ssh rocketgit@rocketgit.com api user_wh_list user=bla |
200 |
200 |
<br /> |
<br /> |
201 |
201 |
|
|
202 |
202 |
|
|
203 |
|
<a name="repo_list"><b>repo_list</b></a><br /> |
|
|
203 |
|
<span id="repo_list" class="api_op"><b>repo_list</b></span><br /> |
204 |
204 |
<b>Parameters:</b> user/uid [optional]<br /> |
<b>Parameters:</b> user/uid [optional]<br /> |
205 |
205 |
Example: |
Example: |
206 |
206 |
<div class="term">$ curl --header 'Authorization: put_here_your_username this_is_your_api_key' \ |
<div class="term">$ curl --header 'Authorization: put_here_your_username this_is_your_api_key' \ |
|
... |
... |
$ ssh rocketgit@rocketgit.com api repo_list |
216 |
216 |
<br /> |
<br /> |
217 |
217 |
|
|
218 |
218 |
|
|
219 |
|
<a name="repo_info"><b>repo_info</b></a><br /> |
|
|
219 |
|
<span id="repo_info" class="api_op"><b>repo_info</b></span><br /> |
220 |
220 |
<b>Description:</b> Shows info about a repository<br /> |
<b>Description:</b> Shows info about a repository<br /> |
221 |
221 |
<b>Parameters:</b> user/uid [optional], repo/repo_id<br /> |
<b>Parameters:</b> user/uid [optional], repo/repo_id<br /> |
222 |
222 |
Example: |
Example: |
|
... |
... |
$ ssh rocketgit@rocketgit.com api repo_info repo=repo1 |
260 |
260 |
<br /> |
<br /> |
261 |
261 |
|
|
262 |
262 |
|
|
263 |
|
<a name="repo_bug_list"><b>repo_bug_list</b></a><br /> |
|
|
263 |
|
<span id="repo_bug_list" class="api_op"><b>repo_bug_list</b></span><br /> |
264 |
264 |
<b>Description:</b> Lists the bugs<br /> |
<b>Description:</b> Lists the bugs<br /> |
265 |
265 |
<b>Parameters:</b> user/uid [optional], repo/repo_id<br /> |
<b>Parameters:</b> user/uid [optional], repo/repo_id<br /> |
266 |
266 |
Example: |
Example: |
|
... |
... |
$ ssh rocketgit@rocketgit.com api repo_bug_list repo=repo1 |
281 |
281 |
<br /> |
<br /> |
282 |
282 |
|
|
283 |
283 |
|
|
284 |
|
<a name="repo_bug_info"><b>repo_bug_info</b></a><br /> |
|
|
284 |
|
<span id="repo_bug_info" class="api_op"><b>repo_bug_info</b></span><br /> |
285 |
285 |
<b>Description:</b> Shows information about a bug<br /> |
<b>Description:</b> Shows information about a bug<br /> |
286 |
286 |
<b>Parameters:</b> user/uid [optional], repo/repo_id, bug_id<br /> |
<b>Parameters:</b> user/uid [optional], repo/repo_id, bug_id<br /> |
287 |
287 |
Example: |
Example: |
|
... |
... |
$ ssh rocketgit@rocketgit.com api repo_bug_info repo=repo1 bug_id=2 |
318 |
318 |
<br /> |
<br /> |
319 |
319 |
|
|
320 |
320 |
|
|
321 |
|
<a name="repo_mr_list"><b>repo_mr_list</b></a><br /> |
|
|
321 |
|
<span id="repo_mr_list" class="api_op"><b>repo_mr_list</b></span><br /> |
322 |
322 |
<b>Description:</b> Lists the merge requests<br /> |
<b>Description:</b> Lists the merge requests<br /> |
323 |
323 |
<b>Parameters:</b> user/uid [optional], repo/repo_id<br /> |
<b>Parameters:</b> user/uid [optional], repo/repo_id<br /> |
324 |
324 |
Example: |
Example: |
File root/themes/default/download-vm.html changed (mode: 100644) (index ffc1fdc..a0f41a8) |
15 |
15 |
</div> |
</div> |
16 |
16 |
</div> |
</div> |
17 |
17 |
|
|
18 |
|
<a name="qemu"></a> |
|
19 |
|
<div class="island_wide"> |
|
|
18 |
|
<div id="qemu" class="island_wide"> |
20 |
19 |
<div class="island_title">qemu based virtualization</div> |
<div class="island_title">qemu based virtualization</div> |
21 |
20 |
|
|
22 |
21 |
Steps to follow:<br /> |
Steps to follow:<br /> |
|
110 |
109 |
finish the installation. |
finish the installation. |
111 |
110 |
</div> |
</div> |
112 |
111 |
|
|
113 |
|
<a name="vmware_esxi"></a> |
|
114 |
|
<div class="island_wide"> |
|
|
112 |
|
<div id="vmware_esxi" class="island_wide"> |
115 |
113 |
<div class="island_title">VMware ESXi based virtualization</div> |
<div class="island_title">VMware ESXi based virtualization</div> |
116 |
114 |
|
|
117 |
115 |
Steps to follow:<br /> |
Steps to follow:<br /> |
|
142 |
140 |
finish the installation. |
finish the installation. |
143 |
141 |
</div> |
</div> |
144 |
142 |
|
|
145 |
|
<a name="vmware_player"></a> |
|
146 |
|
<div class="island_wide"> |
|
|
143 |
|
<div id="vmware_player" class="island_wide"> |
147 |
144 |
<div class="island_title">VMware Player based virtualization</div> |
<div class="island_title">VMware Player based virtualization</div> |
148 |
145 |
|
|
149 |
146 |
Steps to follow:<br /> |
Steps to follow:<br /> |
|
181 |
178 |
finish the installation. |
finish the installation. |
182 |
179 |
</div> |
</div> |
183 |
180 |
|
|
184 |
|
<a name="virtualbox"></a> |
|
185 |
|
<div class="island_wide"> |
|
|
181 |
|
<div id="virtualbox" class="island_wide"> |
186 |
182 |
<div class="island_title">Oracle's VirtualBox based virtualization</div> |
<div class="island_title">Oracle's VirtualBox based virtualization</div> |
187 |
183 |
|
|
188 |
184 |
Steps to follow:<br /> |
Steps to follow:<br /> |
|
217 |
213 |
finish the installation. |
finish the installation. |
218 |
214 |
</div> |
</div> |
219 |
215 |
|
|
220 |
|
<a name="common"></a> |
|
221 |
|
<div class="island_wide"> |
|
|
216 |
|
<div id="common" class="island_wide"> |
222 |
217 |
<div class="island_title">Common section for all virtualization solutions</div> |
<div class="island_title">Common section for all virtualization solutions</div> |
223 |
218 |
|
|
224 |
219 |
You must check the following list because you may want to:<br /> |
You must check the following list because you may want to:<br /> |
File samples/pool.conf changed (mode: 100644) (index 5cbd588..176af79) |
... |
... |
pm.start_servers = 5 |
10 |
10 |
pm.min_spare_servers = 5 |
pm.min_spare_servers = 5 |
11 |
11 |
pm.max_spare_servers = 10 |
pm.max_spare_servers = 10 |
12 |
12 |
pm.process_idle_timeout = 30s; |
pm.process_idle_timeout = 30s; |
13 |
|
slowlog = /var/log/php-fpm/rocketgit-slow.log |
|
|
13 |
|
;slowlog = /var/log/rocketgit/fpm-slow.log |
14 |
14 |
request_slowlog_timeout = 2s |
request_slowlog_timeout = 2s |
15 |
|
php_admin_value[error_log] = /var/log/php-fpm/rocketgit-error.log |
|
|
15 |
|
;php_admin_value[error_log] = /var/log/rocketgit/fpm-php-error.log |
16 |
16 |
php_admin_flag[log_errors] = on |
php_admin_flag[log_errors] = on |
17 |
17 |
php_admin_value[memory_limit] = 128M |
php_admin_value[memory_limit] = 128M |
18 |
18 |
php_admin_value[post_max_size] = 512M |
php_admin_value[post_max_size] = 512M |
File scripts/builder.php changed (mode: 100644) (index 2bf17e8..ff7d9e6) |
... |
... |
function rg_process_job($db, &$job) |
714 |
714 |
|
|
715 |
715 |
// Should we delay because of a previous fail? |
// Should we delay because of a previous fail? |
716 |
716 |
if (isset($job['next_try']) && ($job['next_try'] > time())) { |
if (isset($job['next_try']) && ($job['next_try'] > time())) { |
717 |
|
rg_log($jid . ': job is suspended till ' |
|
|
717 |
|
rg_log_debug($jid . ': job is suspended till ' |
718 |
718 |
. date('Y-m-d H:i:s', $job['next_try'])); |
. date('Y-m-d H:i:s', $job['next_try'])); |
719 |
719 |
return FALSE; |
return FALSE; |
720 |
720 |
} |
} |
|
... |
... |
function rg_process_job($db, &$job) |
831 |
831 |
|
|
832 |
832 |
// TODO: we should signal this and prevent the call if the list of |
// TODO: we should signal this and prevent the call if the list of |
833 |
833 |
// workers does not change. |
// workers does not change. |
834 |
|
rg_log('No workers found!'); |
|
|
834 |
|
rg_log('No workers found! Suspend job for 10s'); |
|
835 |
|
$job['next_try'] = time() + 10; |
835 |
836 |
return TRUE; |
return TRUE; |
836 |
837 |
} |
} |
837 |
838 |
|
|
File scripts/worker.php changed (mode: 100644) (index ec55fa6..6889003) |
... |
... |
function start_worker_build_tools($job, &$reason, &$reason2) |
395 |
395 |
|
|
396 |
396 |
$s .= '' |
$s .= '' |
397 |
397 |
. "\n" |
. "\n" |
|
398 |
|
. '# pkg_repo_id to uid translation' . "\n" |
398 |
399 |
. 'declare -gA pri2uid=()' . "\n"; |
. 'declare -gA pri2uid=()' . "\n"; |
399 |
400 |
|
|
400 |
401 |
$list = ''; $list_add = ''; |
$list = ''; $list_add = ''; |
|
... |
... |
function start_worker_build_tools($job, &$reason, &$reason2) |
498 |
499 |
. ' fi' . "\n" |
. ' fi' . "\n" |
499 |
500 |
. "\n" |
. "\n" |
500 |
501 |
. ' local old_dir=${PWD}' . "\n" |
. ' local old_dir=${PWD}' . "\n" |
|
502 |
|
. ' xecho "rg_rpm_sign: switching to [${dir}]"' . "\n" |
501 |
503 |
. ' cd "${dir}"' . "\n" |
. ' cd "${dir}"' . "\n" |
502 |
504 |
. ' rg_op_s rpmsign --define "_gpg_name repo_id-${pkg_repo_id}" \\' . "\n" |
. ' rg_op_s rpmsign --define "_gpg_name repo_id-${pkg_repo_id}" \\' . "\n" |
503 |
505 |
. ' --define "_gpg_sign_cmd_extra_args --no-autostart --batch" \\' . "\n" |
. ' --define "_gpg_sign_cmd_extra_args --no-autostart --batch" \\' . "\n" |
|
... |
... |
function start_worker_build_tools($job, &$reason, &$reason2) |
646 |
648 |
. ' done' . "\n" |
. ' done' . "\n" |
647 |
649 |
. ' rg_log_pop' . "\n" |
. ' rg_log_pop' . "\n" |
648 |
650 |
. ' return ${E}' . "\n" |
. ' return ${E}' . "\n" |
649 |
|
. '}' . "\n" |
|
650 |
|
. "\n" |
|
651 |
|
. 'rg_notify "Script ${0} started"' . "\n" |
|
652 |
|
. "\n"; |
|
|
651 |
|
. '}' . "\n\n"; |
653 |
652 |
|
|
654 |
653 |
$f = $job['main'] . '/root/build_tools.sh'; |
$f = $job['main'] . '/root/build_tools.sh'; |
655 |
654 |
$r = @file_put_contents($f, $s); |
$r = @file_put_contents($f, $s); |
|
... |
... |
function start_worker_build_repo($job, $conf, &$reason, &$reason2) |
816 |
815 |
// No need for chown because we will make everything owned by build2 user. |
// No need for chown because we will make everything owned by build2 user. |
817 |
816 |
$keys++; |
$keys++; |
818 |
817 |
} |
} |
|
818 |
|
rg_log_debug($keys . ' key(s) were saved to build2 dir'); |
819 |
819 |
|
|
820 |
820 |
$s = '' |
$s = '' |
821 |
821 |
. '#!/bin/bash' . "\n" |
. '#!/bin/bash' . "\n" |
|
... |
... |
function start_worker_build_repo($job, $conf, &$reason, &$reason2) |
847 |
847 |
. ' # Signing something for test' . "\n" |
. ' # Signing something for test' . "\n" |
848 |
848 |
. ' rm -f /tmp/rg-sign-junk' . "\n" |
. ' rm -f /tmp/rg-sign-junk' . "\n" |
849 |
849 |
. ' rg_op_s gpg --output /tmp/rg-sign-junk --no-autostart --batch \\' . "\n" |
. ' rg_op_s gpg --output /tmp/rg-sign-junk --no-autostart --batch \\' . "\n" |
850 |
|
. ' --armour --sign /etc/hosts || break' . "\n"; |
|
|
850 |
|
. ' --armour --sign /etc/hosts || break' . "\n" |
|
851 |
|
. ' # list supported configuration' . "\n" |
|
852 |
|
. ' gpg --with-colons --list-config' . "\n"; |
851 |
853 |
|
|
852 |
854 |
$s .= "\n" |
$s .= "\n" |
853 |
855 |
. ' declare -A rgfs_mounted=()' . "\n"; |
. ' declare -A rgfs_mounted=()' . "\n"; |
|
... |
... |
function start_worker_build_repo($job, $conf, &$reason, &$reason2) |
1011 |
1013 |
. ' fi' . "\n" |
. ' fi' . "\n" |
1012 |
1014 |
. ' xecho "+ ${rgfs}/${file}"' . "\n" |
. ' xecho "+ ${rgfs}/${file}"' . "\n" |
1013 |
1015 |
. ' echo "${file}" >> ${pkg_filter_list_file}' . "\n" |
. ' echo "${file}" >> ${pkg_filter_list_file}' . "\n" |
1014 |
|
. ' done < <(cat "${pkg_list_file}"; echo; cat "${pkg_pend_list_file}"; echo' . "\n" |
|
|
1016 |
|
. ' done < <(cat "${pkg_list_file}"; echo; cat "${pkg_pend_list_file}"; echo)' . "\n" |
1015 |
1017 |
. ' rg_log_pop' . "\n" |
. ' rg_log_pop' . "\n" |
1016 |
1018 |
. "\n" |
. "\n" |
1017 |
1019 |
. ' if [ "${job_uid}" = "0" ]; then' . "\n" |
. ' if [ "${job_uid}" = "0" ]; then' . "\n" |
|
... |
... |
function start_worker($job) |
1173 |
1175 |
rg_exec('virsh undefine --nvram ' . $ename, '', FALSE, FALSE, FALSE); |
rg_exec('virsh undefine --nvram ' . $ename, '', FALSE, FALSE, FALSE); |
1174 |
1176 |
|
|
1175 |
1177 |
$r = rg_exec('qemu-img create -o lazy_refcounts=on,cluster_size=256K' |
$r = rg_exec('qemu-img create -o lazy_refcounts=on,cluster_size=256K' |
1176 |
|
. ' -b ' . $master |
|
|
1178 |
|
. ' -b ' . $master . ' -F qcow2' |
1177 |
1179 |
. ' -f qcow2 ' . $eimg, '', FALSE, FALSE, FALSE); |
. ' -f qcow2 ' . $eimg, '', FALSE, FALSE, FALSE); |
1178 |
1180 |
if ($r['ok'] !== 1) { |
if ($r['ok'] !== 1) { |
1179 |
1181 |
$reason = 'cannot create VM image'; |
$reason = 'cannot create VM image'; |
File techdocs/rpm.txt changed (mode: 100644) (index db1d81c..1a04171) |
... |
... |
a .spec file is present in the repo and the user pushes. |
8 |
8 |
- 'rg_wh_build_send_one' will |
- 'rg_wh_build_send_one' will |
9 |
9 |
- get the pkg_maps, repo and subrepo info |
- get the pkg_maps, repo and subrepo info |
10 |
10 |
- sets exec:prepare_rpms and exec:copy_to_rgfs flags |
- sets exec:prepare_rpms and exec:copy_to_rgfs flags |
11 |
|
- will call 'rg_pkg_prepare_ev_for_dotrepo' to create user repositories |
|
|
11 |
|
- will call 'rg_pkg_prepare_ev_for_dotrepo' to add info to create user repositories |
12 |
12 |
- will call 'rg_builder_add' |
- will call 'rg_builder_add' |
13 |
13 |
- Builer will send the job to a worker |
- Builer will send the job to a worker |
14 |
14 |
- Worker will start the VM |
- Worker will start the VM |
File tests/ldap_core.php changed (mode: 100644) (index ec1e18a..9bcf8bc) |
... |
... |
if ($r['ok'] != 1) { |
56 |
56 |
rg_log('Error parsing ldif: ' . $r['errmsg']); |
rg_log('Error parsing ldif: ' . $r['errmsg']); |
57 |
57 |
exit(1); |
exit(1); |
58 |
58 |
} |
} |
59 |
|
if (@strcmp($r['data'][0]['xxx'], 'my-domain') != 0) { |
|
|
59 |
|
if (@strcmp($r['data'][0]['xxx'][0], 'my-domain') != 0) { |
60 |
60 |
rg_log_ml('r: ' . print_r($r, TRUE)); |
rg_log_ml('r: ' . print_r($r, TRUE)); |
61 |
|
rg_log('data[0][xxx] is not \'my-domain\'!'); |
|
|
61 |
|
rg_log('data[0][xxx][0] is not \'my-domain\'!'); |
62 |
62 |
exit(1); |
exit(1); |
63 |
63 |
} |
} |
64 |
|
if (@strcmp($r['data'][2]['dn'], 'ou=People-șț,dc=my-domain,dc=com') != 0) { |
|
|
64 |
|
if (@strcmp($r['data'][2]['dn'][0], 'ou=People-șț,dc=my-domain,dc=com') != 0) { |
65 |
65 |
rg_log_ml('r: ' . print_r($r, TRUE)); |
rg_log_ml('r: ' . print_r($r, TRUE)); |
66 |
|
rg_log('data[2][dn] is not \'ou=People-șț,dc=my-domain,dc=com\'!'); |
|
|
66 |
|
rg_log('data[2][dn][0] is not \'ou=People-șț,dc=my-domain,dc=com\'!'); |
67 |
67 |
exit(1); |
exit(1); |
68 |
68 |
} |
} |
69 |
69 |
rg_log_exit(); |
rg_log_exit(); |
70 |
70 |
|
|
71 |
71 |
|
|
72 |
72 |
rg_log('OK!'); |
rg_log('OK!'); |
73 |
|
?> |
|
|
73 |
|
|