'.$data['message'].'

'; $ok = false; } else { $check=$db->prepare('SELECT null FROM onions WHERE onion=?;'); $check->execute([$onion]); if($check->fetch(PDO::FETCH_NUM)){ $msg = '

'._('Error onion already exists.').'

'; $ok = false; } } }else{ $onion_version = 3; if(isset($_REQUEST['onion_type']) && in_array($_REQUEST['onion_type'], [2, 3])){ $onion_version = $_REQUEST['onion_type']; } $check=$db->prepare('SELECT null FROM onions WHERE onion=?;'); do{ $data = generate_new_onion($onion_version); $priv_key = $data['priv_key']; $onion = $data['onion']; $onion_version = $data['version']; $check->execute([$onion]); }while($check->fetch(PDO::FETCH_NUM)); } $priv_key=trim(str_replace("\r", '', $priv_key)); $stmt = $db->prepare('SELECT COUNT(*) FROM onions WHERE user_id = ?;'); $stmt->execute([$user['id']]); $count = $stmt->fetch(PDO::FETCH_NUM); if($count[0]>=MAX_NUM_USER_ONIONS) { $ok = false; } if($ok){ add_user_onion($user['id'], $onion, $priv_key, $onion_version); } } if(isset($_POST['action']) && $_POST['action']==='del_onion_2' && !empty($_POST['onion'])){ if($error=check_csrf_error()){ die($error); } del_user_onion($user['id'], $_POST['onion']); } if(isset($_POST['action']) && $_POST['action']==='add_domain' && !empty($_POST['domain'])){ if($error=check_csrf_error()){ die($error); } $error = add_user_domain($user['id'], $_POST['domain']); if(!empty($error)){ $msg = '

'.$error.'

'; } } if(isset($_POST['action']) && $_POST['action']==='del_domain' && !empty($_POST['domain'])){ if($error=check_csrf_error()){ die($error); } print_header(_('Delete domain')); ?>

prepare('SELECT onions.version, onions.instance FROM onions INNER JOIN users ON (users.id=onions.user_id) WHERE onions.onion = ? AND users.id = ? AND onions.enabled IN (0, 1);'); $stmt->execute([$_REQUEST['onion'], $user['id']]); if($onion=$stmt->fetch(PDO::FETCH_ASSOC)){ $stmt=$db->prepare('UPDATE onions SET enabled = ?, enable_smtp = ?, num_intros = ?, max_streams = ? WHERE onion = ?;'); $enabled = isset($_REQUEST['enabled']) ? 1 : 0; $enable_smtp = isset($_REQUEST['enable_smtp']) ? 1 : 0; $num_intros = intval($_REQUEST['num_intros']); if($num_intros<3){ $num_intros = 3; }elseif($onion['version']==2 && $num_intros>10){ $num_intros = 10; }elseif($num_intros>20){ $num_intros = 20; } $max_streams = intval($_REQUEST['max_streams']); if($max_streams<0){ $max_streams = 0; }elseif($max_streams>65535){ $max_streams = 65535; } $stmt->execute([$enabled, $enable_smtp, $num_intros, $max_streams, $_REQUEST['onion']]); enqueue_instance_reload($onion['instance']); } } if(isset($_REQUEST['action']) && isset($_POST['domain']) && $_POST['action']==='edit_domain'){ if($error=check_csrf_error()){ die($error); } $stmt=$db->prepare('SELECT null FROM domains WHERE domain = ? AND user_id = ? AND enabled IN (0, 1);'); $stmt->execute([$_POST['domain'], $user['id']]); if($onion=$stmt->fetch(PDO::FETCH_NUM)){ $stmt=$db->prepare('UPDATE domains SET enabled = ? WHERE domain = ?;'); $enabled = isset($_POST['enabled']) ? 1 : 0; $stmt->execute([$enabled, $_POST['domain']]); enqueue_instance_reload(); } } print_header(_('Dashboard'), '#custom_onion:not(checked)+#private_key{display:none;}#custom_onion:checked+#private_key{display:block;}td{padding:5px}meter{width:200px}'); dashboard_menu($user, 'home.php'); if(!empty($msg)){ echo $msg; } echo '

'.sprintf(_('Enter system account password to check your %s mail:'), $user['system_account'].'@' . ADDRESS).'

'; echo '

'._('Onion domains').'

'; echo ''; echo ''; $stmt=$db->prepare('SELECT onion, private_key, enabled, enable_smtp, num_intros, max_streams FROM onions WHERE user_id = ?;'); $stmt->execute([$user['id']]); $count_onions = 0; while($onion=$stmt->fetch(PDO::FETCH_ASSOC)){ ++$count_onions; echo "'; echo ''; echo ''; echo ''; if(in_array($onion['enabled'], [0, 1])){ echo ''; }else{ echo ''; } echo ''; } if($count_onions"; echo ''; } echo '
'._('Onion').''._('Private key').''._('Enabled').''._('SMTP enabled').''._('Nr. of intros').''._('Max streams per rend circuit').''._('Action').'
$onion[onion].onion"; if(isset($_REQUEST['show_priv'])){ echo "
$onion[private_key]
"; }else{ echo ''._('Show private key').''; } echo '
'; echo ''._('Unavailable').'
'._('Add additional hidden service:').'
'; echo ''; echo ''; echo '
'; if(MAX_NUM_USER_DOMAINS>0){ echo '

'._('Clearnet domains').'

'; echo ''; echo ''; $stmt=$db->prepare('SELECT domain, enabled FROM domains WHERE user_id = ?;'); $stmt->execute([$user['id']]); $count_domains = 0; while($domain=$stmt->fetch(PDO::FETCH_ASSOC)){ ++$count_domains; echo ""; echo ''; if(in_array($domain['enabled'], [0, 1])){ echo ''; }else{ echo ''; } echo ''; } if($count_domains"; echo ''; } echo '
'._('Domain').''._('Enabled').''._('Action').'
$domain[domain]'; echo ''._('Unavailable').'
'._('Add additional domain:').'
'; echo ''; echo '
'; echo '

'.sprintf(_('To enable your clearnet domain, edit your DNS settings and enter %1$s as your A record and %2$s as your AAAA record. Once you have modified your DNS settings, contact me to configure the SSL certificate. You may also use any subdomain of %4$s'), CLEARNET_A, CLEARNET_AAAA, CONTACT_URL, CLEARNET_SUBDOMAINS).'

'; } echo '

'._('MySQL Database<').'/h3>'; echo ''; echo ''; $stmt=$db->prepare('SELECT mysql_database FROM mysql_databases WHERE user_id = ?;'); $stmt->execute([$user['id']]); $count_dbs = 0; while($mysql=$stmt->fetch(PDO::FETCH_ASSOC)){ ++$count_dbs; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
'._('Database').''._('Host').''._('User').''._('Action').'
'.htmlspecialchars($mysql['mysql_database']).'localhost'.htmlspecialchars($user['mysql_user']).'
'; if($count_dbs

'; } ?>

PHPMyAdmin and Adminer for web based database administration.'), rawurlencode($user['mysql_user'])); ?>

$tmp){ echo ""; } ?>
$user[system_account]$server$tmp[sftp]$tmp[pop3]$tmp[imap]$tmp[smtp]

FileManager for web based file management.'); ?>

prepare('SELECT quota_size, quota_size_used, quota_files, quota_files_used FROM disk_quota WHERE user_id = ?;'); $stmt->execute([$user['id']]); $quota = $stmt->fetch(PDO::FETCH_ASSOC); $quota_usage = $quota['quota_size_used'] / $quota['quota_size']; $quota_files_usage = $quota['quota_files_used'] / $quota['quota_files']; $usage_text = bytes_to_human_readable($quota['quota_size_used'] * 1024) . ' of ' . bytes_to_human_readable($quota['quota_size'] * 1024) . ' - ' . round($quota_usage * 100, 2).'%'; $usage_files_text = sprintf(_("%d of %d - %f%%"), $quota['quota_files_used'], $quota['quota_files'], round($quota_files_usage * 100, 2)); ?>

- '._('Upgrade').'' : ''; ?>

- '._('Upgrade').'' : ''; ?>

access.logerror.log
access.logerror.log
access.logerror.log