You need to install the Jappix application, adapted for Friendica (see README).';
}
else if (!file_exists("addon/jappixmini/jappix.zip")) {
$o .= '
The source archive jappix.zip does not exist. This is probably a violation of the Jappix License (see README).
';
}
else {
$o .= '
Jappix is installed.
';
}
// warn if cron job has not yet been executed
$cron_run = get_config("jappixmini", "last_cron_execution");
if (!$cron_run) $o .= "
Warning: The cron job has not yet been executed. If this message is still there after some time (usually 10 minutes), this means that autosubscribe and autoaccept will not work.
";
// bosh proxy
$bosh_proxy = intval(get_config("jappixmini", "bosh_proxy"));
$bosh_proxy = intval($bosh_proxy) ? ' checked="checked"' : '';
$o .= '';
$o .= ' ';
// info text field
$info_text = get_config("jappixmini", "infotext");
$o .= '
';
$o .= '
';
// submit button
$o .= '';
}
function jappixmini_plugin_admin_post(&$a) {
// set info text
$submit = $_REQUEST['jappixmini-admin-settings'];
if ($submit) {
$info_text = $_REQUEST['jappixmini-infotext'];
$bosh_proxy = intval($_REQUEST['jappixmini-proxy']);
set_config("jappixmini", "infotext", $info_text);
set_config("jappixmini", "bosh_proxy", $bosh_proxy);
}
}
function jappixmini_module() {}
function jappixmini_init(&$a) {
// module page where other Friendica sites can submit Jabber addresses to and also can query Jabber addresses
// of local users
if (!file_exists("addon/jappixmini/jappix")) killme();
$dfrn_id = $_REQUEST["dfrn_id"];
if (!$dfrn_id) killme();
$role = $_REQUEST["role"];
if ($role=="pub") {
$r = q("SELECT * FROM `contact` WHERE LENGTH(`pubkey`) AND `dfrn-id`='%s' LIMIT 1",
dbesc($dfrn_id)
);
if (!count($r)) killme();
$encrypt_func = openssl_public_encrypt;
$decrypt_func = openssl_public_decrypt;
$key = $r[0]["pubkey"];
} else if ($role=="prv") {
$r = q("SELECT * FROM `contact` WHERE LENGTH(`prvkey`) AND `issued-id`='%s' LIMIT 1",
dbesc($dfrn_id)
);
if (!count($r)) killme();
$encrypt_func = openssl_private_encrypt;
$decrypt_func = openssl_private_decrypt;
$key = $r[0]["prvkey"];
} else {
killme();
}
$uid = $r[0]["uid"];
// save the Jabber address we received
try {
$signed_address_hex = $_REQUEST["signed_address"];
$signed_address = hex2bin($signed_address_hex);
$trusted_address = "";
$decrypt_func($signed_address, $trusted_address, $key);
$now = intval(time());
set_pconfig($uid, "jappixmini", "id:$dfrn_id", "$now:$trusted_address");
} catch (Exception $e) {
}
// do not return an address if user deactivated plugin
$activated = get_pconfig($uid, 'jappixmini', 'activate');
if (!$activated) killme();
// return the requested Jabber address
try {
$username = get_pconfig($uid, 'jappixmini', 'username');
$server = get_pconfig($uid, 'jappixmini', 'server');
$address = "$username@$server";
$encrypted_address = "";
$encrypt_func($address, $encrypted_address, $key);
$encrypted_address_hex = bin2hex($encrypted_address);
$answer = Array(
"status"=>"ok",
"encrypted_address"=>$encrypted_address_hex
);
$answer_json = json_encode($answer);
echo $answer_json;
killme();
} catch (Exception $e) {
killme();
}
}
function jappixmini_settings(&$a, &$s) {
// addon settings for a user
if (!file_exists("addon/jappixmini/jappix")) return;
$activate = get_pconfig(local_user(),'jappixmini','activate');
$activate = intval($activate) ? ' checked="checked"' : '';
$username = get_pconfig(local_user(),'jappixmini','username');
$username = htmlentities($username);
$server = get_pconfig(local_user(),'jappixmini','server');
$server = htmlentities($server);
$bosh = get_pconfig(local_user(),'jappixmini','bosh');
$bosh = htmlentities($bosh);
$password = get_pconfig(local_user(),'jappixmini','password');
$autosubscribe = get_pconfig(local_user(),'jappixmini','autosubscribe');
$autosubscribe = intval($autosubscribe) ? ' checked="checked"' : '';
$autoapprove = get_pconfig(local_user(),'jappixmini','autoapprove');
$autoapprove = intval($autoapprove) ? ' checked="checked"' : '';
$encrypt = intval(get_pconfig(local_user(),'jappixmini','encrypt'));
$encrypt_checked = $encrypt ? ' checked="checked"' : '';
$encrypt_disabled = $encrypt ? '' : ' disabled="disabled"';
$info_text = get_config("jappixmini", "infotext");
$info_text = htmlentities($info_text);
$info_text = str_replace("\n", " ", $info_text);
if (!$activate) {
// load scripts if not yet activated so that password can be saved
$a->page['htmlhead'] .= ''."\r\n";
$a->page['htmlhead'] .= ''."\r\n";
$a->page['htmlhead'] .= ''."\r\n";
$a->page['htmlhead'] .= ''."\r\n";
$a->page['htmlhead'] .= ''."\r\n";
$a->page['htmlhead'] .= ''."\r\n";
}
$s .= '