function downloadData($request) { $extension = pathinfo($request['file_name'], PATHINFO_EXTENSION); $file_path = EXPTEMP_PATH . $request['file_name']; $strUser = file_get_contents($file_path); unlink($file_path); if ($request['end_date'] == "") { $end_date = date("Ymd"); } else { $end_date = $request['end_date']; } $condition = str_replace("/", "", $request['start_date']) . "~" . str_replace("/", "", $end_date); $filename = "給与明細データ" . "_" . $condition . "." . $extension; $ret = $this->getLastOutputData(); if ($ret != "") { $sql = $this->getQuery("UPDATE_SALARY_LAST_OUTPUT"); } else { $sql = $this->getQuery("INSERT_SALARY_LAST_OUTPUT"); } $ret = $this->oDb->query($sql); if (!$ret) { // エラーの場合は、ログ出力するが処理はDL済みのためエラーにしない Debug_Trace("給与明細データ出力日時の保存失敗 SQL=" . $sql, 0); } $this->strDl($filename, $strUser); }
function checkAdLoginAuth($user_id, $login_passwd) { //接続開始 $ldap_conn = ldap_connect(LDAP_HOST_1, LDAP_PORT); if (!$ldap_conn) { $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_2); } else { print_r("OK" . PHP_EOL); } if (!$ldap_conn) { Debug_Trace("接続失敗"); return false; } if ($ldap_conn) { ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); $ldap_bind = ldap_bind($ldap_conn, "CN=" . $user_id . "," . LDAP_DN, $login_passwd); if ($ldap_bind) { Debug_Trace("ADの認証に成功しました", 3); return true; } else { Debug_Trace("ADの認証に失敗しました", 3); Debug_Trace($user_id, 3); return false; } } else { Debug_Trace('ADサーバへの接続に失敗しました'); return false; } ldap_close($ldap_conn); return true; }
function deleteAd($wireless_id) { if (!defined("LDAP_HOST_1")) { return true; } //接続開始 $ldap_conn = ldap_connect(LDAP_HOST_1, LDAP_PORT); if (!$ldap_conn) { $ldap_conn = ldap_connect(LDAP_HOST_2, LDAP_PORT); } if (!$ldap_conn) { Debug_Trace("接続失敗", 9); return false; } // バインド $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 9); return false; } // 削除 $userDn = "CN=" . $wireless_id . "," . WLESS_ID_DN; if (ldap_delete($ldap_conn, $userDn)) { Debug_Trace("削除は成功しました", 952); } else { Debug_Trace("削除は失敗しました", 952); return false; } return true; }
function checkADLoginAuth(&$request) { $user_id = $request['login_id']; $login_passwd = $request['login_passwd']; //接続開始 $ldap_conn = ldap_connect(LDAP_AD_HOST_1, LDAP_AD_PORT); if (!$ldap_conn) { $ldap_conn = ldap_connect("ldaps://" . LDAP_AD_HOST_2); } if (!$ldap_conn) { Debug_Trace("接続失敗"); return false; } if ($ldap_conn) { ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); $ldap_bind = ldap_bind($ldap_conn, "CN=" . $user_id . "," . LDAP_AD_DN, $login_passwd); if ($ldap_bind) { Debug_Trace("ADの認証に成功しました", 3); ldap_close($ldap_conn); //return true; } else { Debug_Trace("ADの認証に失敗しました", 3); Debug_Trace($user_id, 3); ldap_close($ldap_conn); return false; } } //接続終了 ldap_close($ldap_conn); $args = $this->getSqlArgs(); $args[0] = $request['login_id']; $sql = $this->getQuery("LOGINADAUTH", $args); $user_id = $this->oDb->getOne($sql); if ($user_id != "") { $request['user_id'] = $user_id; return true; } return false; }
$ldap_search = ldap_search($ldap_conn, "CN=tsukada.masanori.hp,OU=enable,OU=y-ncvc,DC=y-ncvc,DC=local", "cn=*"); $get_entries = ldap_get_entries($ldap_conn, $ldap_search); //エントリ情報出力 print_r($get_entries); $vpn_user_id = 'abe.tadaaki.hp'; $last_name = '忠明'; $first_name = '阿部'; $mod['givenname'] = mb_convert_encoding('1', "sjis-win", "auto"); $mod['sn'] = mb_convert_encoding('2', "sjis-win", "auto"); $mod['displayname'] = mb_convert_encoding('6', "sjis-win", "auto"); // 更新時のパラメータ $userDn = "CN=" . $vpn_user_id . "," . LOGINID_DN; // 更新 if (ldap_modify($ldap_conn, "CN=0001Naika,OU=SmicUser,OU=SMIC,DC=y-ncvc,DC=local", $mod)) { print_r('更新は成功しました'); Debug_Trace("更新は成功しました", 414); } else { $errno = ldap_errno($ldap_conn); $errmsg = ldap_error($ldap_conn); print_r('|'); print_r($errno); print_r('|'); print_r($errmsg); print_r('|'); print_r($userDn); print_r($mod); var_dump($ldap_conn); return; } ldap_close($ldap_conn); exit;
function modifyPasslogicMembers($request) { if (!defined("LDAP_HOST_1")) { return; } //接続開始 $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_1); if (!$ldap_conn) { $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_2); } if (!$ldap_conn) { Debug_Trace("接続失敗", 9); return; } // バインド $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 9); return; } $vpn_user_id = $request['vpn_user_id']; $passwd = $request['passwd']; $expiry_date = $request['expiry_date']; // 更新時のパラメータ $mod["mail"] = $request['mail_addr']; $mod['unicodePwd'] = mb_convert_encoding("\"{$passwd}\"", "UTF-16LE"); $mod["accountExpires"] = $this->convToAccountExpirys($expiry_date); $userDn = "CN=" . $vpn_user_id . "," . PASSLOGIC_DN; // 更新 if (ldap_modify($ldap_conn, $userDn, $mod)) { Debug_Trace("更新は成功しました", 414); } else { Debug_Trace("更新は失敗しました", 414); Debug_Trace($userDn, 414); Debug_Trace($mod, 414); return; } ldap_close($ldap_conn); return; }
function changeWirelessVlanAd($wireless_id, $org_vlan_id, $new_vlan_id) { if (!defined("LDAP_HOST_1")) { return true; } //接続開始 $ldap_conn = ldap_connect(LDAP_HOST_1, LDAP_PORT); if (!$ldap_conn) { $ldap_conn = ldap_connect(LDAP_HOST_2, LDAP_PORT); } if (!$ldap_conn) { Debug_Trace("接続失敗", 1); return false; } // バインド $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 9); return false; } // 申請者の統合IDのパスワードを取得 $user_id = $this->getSessionData('LOGIN_USER_ID'); $aryUser = $this->getUserData($user_id); $passwd = $aryUser['login_passwd']; $group_info["member"] = "CN=" . $wireless_id . "," . WLESS_ID_DN; // 旧があればグループから抜ける if ($org_vlan_id != "") { // 古いVLANグループから抜ける $vlan_name = $this->getVlanName($org_vlan_id); $joinVl = str_replace("###VLAN_NAME###", $vlan_name, VLAN_DN); if (ldap_mod_del($ldap_conn, $joinVl, $group_info)) { Debug_Trace("グループ脱退は成功しました", 125); } else { Debug_Trace("グループ脱退は失敗しました", 125); return false; } } // 新しいグループに参加 if ($new_vlan_id != "") { // 新しいVLANグループに参加 $vlan_name = $this->getVlanName($new_vlan_id); $joinVl = str_replace("###VLAN_NAME###", $vlan_name, VLAN_DN); if (ldap_mod_add($ldap_conn, $joinVl, $group_info)) { Debug_Trace("グループ参加は成功しました", 126); } else { Debug_Trace("グループ参加は失敗しました", 126); return false; } } return true; }
function delUserMailAddr($login_id) { $client = null; $this->createMailClient(&$client); if (is_null($client)) { return; } $params = array('uid' => $login_id); // メールサーバへ問い合わせ $schparams = array(); $schparams['uid'] = $login_id; $schparams['page'] = 1; $res = $client->userSearchLdap($schparams); $resultNum = $res->resultNum; if ($resultNum == 0) { // なければ終了 return; } $res = $client->userDeleteLdap($params); if ($res->resultCode == 100) { Debug_Trace("メールアカウント削除は成功しました", 501); } else { if ($res->resultCode == 200) { Debug_Trace("メールアカウント削除は失敗しました(クライアント側エラー)", 501); Debug_Trace($params, 301); $has_err = true; } else { Debug_Trace("メールアカウント削除は失敗しました(サーバー側エラー)", 501); Debug_Trace($params, 301); $has_err = true; } } // エラーがあればログに記録 if ($has_error) { $this->makeMailErrLog("", $login_id, "9"); } return; }
$aryData['sub_job_id'][$no] = $data['sub_job_id']; } } $aryTmp = $oMgr->getSubPostData($aryData['user_id'], true); if (is_array($aryTmp)) { foreach ($aryTmp as $no => $data) { $aryData['sub_post_id'][$no] = $data['sub_post_id']; } } $aryTmp = $oMgr->getSubStaffIdData($aryData['user_id'], true); if (is_array($aryTmp)) { foreach ($aryTmp as $no => $data) { $aryData['sub_staff_id'][$no] = $data['sub_staff_id']; } } $_SESSION['LOGIN_USER_ID'] = $aryData['update_id']; // 更新 $ret = $oMgr->updateUserBaseData($aryData); if (!$ret) { Debug_Trace("基本情報予約データ反映に失敗しました。", 621); Debug_Trace($aryData); exit; } $oMgr->oDb->begin(); // 完了フラグ1を立てる $sql = "UPDATE user_base_reserve SET complete_flg = '1' WHERE user_id = " . $aryData['user_id']; $oMgr->oDb->query($sql); $oMgr->oDb->end(); } } exit;
function addUserToAd(&$ldap_conn, $user_name, $passwd, $userDn, $aryGroupDn) { // 存在チェック $target = "CN=" . $user_name; $filter = array("cn", "sAMAccountName"); $result = ldap_search($ldap_conn, $userDn, $target, $filter); $data = ldap_get_entries($ldap_conn, $result); // あれば一旦削除 if ($data['count'] == 1) { // 削除 $deleteDn = "CN=" . $user_name . "," . $userDn; if (ldap_delete($ldap_conn, $deleteDn)) { Debug_Trace("削除は成功しました", 512); Debug_Trace($deleteDn, 512); } else { Debug_Trace("削除は失敗しました", 512); Debug_Trace($deleteDn, 512); return false; } } // 追加時のパラメータ $add["cn"] = $user_name; $add["objectClass"] = "user"; $add["sAMAccountName"] = $user_name; $add["userPrincipalName"] = $user_name; $add['unicodePwd'] = mb_convert_encoding("\"{$passwd}\"", "UTF-16LE"); $add["UserAccountControl"] = "66048"; $userDn = "CN=" . $user_name . "," . $userDn; // 登録 if (ldap_add($ldap_conn, $userDn, $add)) { Debug_Trace("追加は成功しました", 112); Debug_Trace($userDn, 112); $add['unicodePwd'] = "******"; Debug_Trace($add, 112); } else { Debug_Trace("追加は失敗しました", 112); Debug_Trace($userDn, 112); Debug_Trace($add, 112); return false; } // グループへの追加 if (is_array($aryGroupDn)) { foreach ($aryGroupDn as $groupDn) { $group_info["member"] = $userDn; if (ldap_mod_add($ldap_conn, $groupDn, $group_info)) { Debug_Trace("グループ参加は成功しました", 113); Debug_Trace($groupDn, 113); Debug_Trace($group_info, 113); } else { Debug_Trace("グループ参加は失敗しました", 113); Debug_Trace($groupDn, 113); Debug_Trace($group_info, 113); return false; } } } return true; }
function delMailingMembers($mlist_id, $mail_addr, $aryFlgs) { $client = null; $this->createMlistClient(&$client); if (is_null($client)) { exit; return; } $mlist_acc = $this->getMlistAcc($mlist_id); $sender_kbn = $this->getSenderKbn($mlist_id); if ($sender_kbn == SENDER_KBN_FREE) { $params = array('listName' => $mlist_acc, 'member' => $mail_addr, 'file' => 'actives'); $res = $client->mailingMemDelete($params); if ($res->resultCode == 100) { Debug_Trace("メンバー削除は成功しました", 351); } else { if ($res->resultCode == 200) { Debug_Trace("メンバー削除は失敗しました(クライアント側エラー)", 351); } else { Debug_Trace("メンバー削除は失敗しました(サーバー側エラー)", 351); } } } else { if (@$aryFlgs['sender_flg'] == "1") { $params = array('listName' => $mlist_acc, 'member' => $mail_addr, 'file' => 'members'); $res = $client->mailingMemDelete($params); if ($res->resultCode == 100) { Debug_Trace("メンバー削除は成功しました", 351); } else { if ($res->resultCode == 200) { Debug_Trace("メンバー削除は失敗しました(クライアント側エラー)", 351); return; } else { Debug_Trace("メンバー削除は失敗しました(サーバー側エラー)", 351); return; } } } if (@$aryFlgs['recipient_flg'] == "1") { $params = array('listName' => $mlist_acc, 'member' => $mail_addr, 'file' => 'actives'); $res = $client->mailingMemDelete($params); if ($res->resultCode == 100) { Debug_Trace("メンバー削除は成功しました", 351); } else { if ($res->resultCode == 200) { Debug_Trace("メンバー削除は失敗しました(クライアント側エラー)", 351); } else { Debug_Trace("メンバー削除は失敗しました(サーバー側エラー)", 351); } } } } return; }
function sendEntryMail() { // 申請者名 $entry_name = $this->getUserName(); $mail_data = file_get_contents('mail/mlist_entry.tpl', FILE_USE_INCLUDE_PATH); // メールデータを取り出す list($head, $bodySrc) = explode("BODY:", $mail_data); // 件名 $subject = trim(str_replace("TITLE:", "", $head)); // 本文 $bodySrc = str_replace("{ENTRY_NAME}", $entry_name, $bodySrc); $admin_id = MLIST_ADMIN_USER_ID; $aryAdm = $this->getUserData($admin_id); if ($aryAdm['mail_acc'] == "") { return; } // 管理者名 $admin_name = $aryAdm['kanjisei'] . " " . $aryAdm['kanjimei']; $body = str_replace("{ADMIN_NAME}", $admin_name, $bodySrc); $mail_to = $aryAdm['mail_acc'] . USER_MAIL_DOMAIN; $params = array(); $params['admin_name'] = $admin_name; $params['entry_name'] = $entry_name; $params['mail_to'] = $mail_to; $params['subject'] = $subject; $params['body'] = $body; Debug_Trace($params, "1234"); // メール送信 $this->sendSystemMail($mail_to, $subject, $body, SYSMAIL_FROM, SYSMAIL_SENDERNAME, SYSMAIL_CC, SYSMAIL_BCC, SYSMAIL_ENVELOP, SYSMAIL_RETURN_PATH); }
function ldapRename($user_id, $to_invalid = true) { if (!defined("LDAP_HOST_1")) { return true; } //接続開始 $ldap_conn = ldap_connect(LDAP_HOST_1, LDAP_PORT); if (!$ldap_conn) { $ldap_conn = ldap_connect(LDAP_HOST_2, LDAP_PORT); } if (!$ldap_conn) { Debug_Trace("接続失敗", 1); return false; } // // ldap_renameを使うためにバージョンを指定 // if (ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3)) { } else { Debug_Trace("プロトコルバージョンを 3 に設定できませんでした", 1); } $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 1); return false; } // 統合IDを取得 $aryData = $this->getUserData($user_id); $login_id = $aryData['login_id']; $rdn = "CN=" . $login_id; if ($to_invalid) { // 無効にする場合 $oldParent = LOGINID_DN; $newParent = LOGINID_DN_DISABLE; $msg = "無効化"; } else { // 有効にする場合 $oldParent = LOGINID_DN_DISABLE; $newParent = LOGINID_DN; $msg = "有効化"; } $old_dn = $rdn . "," . $oldParent; if (ldap_rename($ldap_conn, $old_dn, $rdn, $newParent, true)) { Debug_Trace("ADへの" . $msg . "は成功しました", 129); return true; } else { Debug_Trace("ADへの" . $msg . "は失敗しました", 129); return false; } }
function delMailingList($mlist_id) { $client = null; $this->createMlistClient(&$client); if (is_null($client)) { return; } $mlist_acc = $this->getMlistAcc($mlist_id); $params = array('listName' => $mlist_acc); $res = $client->mailingDelete($params); if ($res->resultCode == 100) { Debug_Trace("メーリングリスト削除は成功しました", 521); } else { if ($res->resultCode == 200) { Debug_Trace($res->message, 999); Debug_Trace("メーリングリスト削除は失敗しました(クライアント側エラー)", 521); } else { Debug_Trace("メーリングリスト削除は失敗しました(サーバー側エラー)", 521); } } return; }
function modifyExpiryPasslogicMembers($ary_vpn_user_id, $expiry_date) { if (!defined("LDAP_HOST_1")) { return; } //接続開始 $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_1); if (!$ldap_conn) { $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_2); } if (!$ldap_conn) { Debug_Trace("接続失敗", 9); return; } // バインド $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 9); return; } foreach ($ary_vpn_user_id as $index => $vpn_user_id) { // 更新時のパラメータ $mod["accountExpires"] = $this->convToAccountExpirys($expiry_date); $userDn = "CN=" . $vpn_user_id . "," . PASSLOGIC_DN; // 更新 if (ldap_modify($ldap_conn, $userDn, $mod)) { Debug_Trace("更新は成功しました", 415); } else { Debug_Trace("更新は失敗しました", 415); Debug_Trace($userDn, 415); Debug_Trace($mod, 415); return; } } ldap_close($ldap_conn); return; }
Debug_Trace($res, 181); Debug_Trace($params, 181); } else { $has_error = true; Debug_Trace("メンバー削除は失敗しました(サーバー側エラー)[actives:" . $member . "]", 381); Debug_Trace($res, 181); Debug_Trace($params, 181); } } } } // エラーがあればログに記録 if ($has_error) { // 同じIDのものがないかチェック $sql = "SELECT log_cd FROM mlist_members_errlog WHERE mlist_id = " . $mlist_id . " AND complete_flg = '0'"; $ext_cd = $oMgr->oDb->getOne($sql); if ($ext_cd == "") { // なければ記録する // ログコード作成 ランダム数字2文字+マイクロタイムの数字部分のみ $rand = rand(10, 99); $time = microtime(true); list($mae, $ushiro) = explode(".", $time); $log_cd = $rand . $mae . str_pad($ushiro, 4, "0"); $sql = "INSERT INTO mlist_members_errlog (log_cd, log_time, mlist_id) VALUES ('" . $log_cd . "', now(), " . $mlist_id . ")"; $ret = $oMgr->oDb->query($sql); if (!$ret) { Debug_Trace("エラーログの記録に失敗しました[ID:" . $mlist_id . "]", 382); } } } exit;
function sendDelEntryMail($aryTargetVlanId) { // 申請者名 $entry_name = $this->getUserName(); $mail_data = file_get_contents('mail/app_delreq.tpl', FILE_USE_INCLUDE_PATH); // メールデータを取り出す list($head, $bodySrc) = explode("BODY:", $mail_data); // 件名 $subject = trim(str_replace("TITLE:", "", $head)); // 本文 $bodySrc = str_replace("{ENTRY_NAME}", $entry_name, $bodySrc); $aryIds = array(); if (is_array($aryTargetVlanId)) { foreach ($aryTargetVlanId as $vlan_id) { $aryTmp = $this->getVlanAdminIds($vlan_id); if (is_array($aryTmp)) { foreach ($aryTmp as $adm_id) { if (!in_array($adm_id, $aryIds)) { $aryIds[] = $adm_id; } } } } } if (is_array($aryIds)) { foreach ($aryIds as $admin_id) { $aryAdm = $this->getUserData($admin_id); if ($aryAdm['mail_acc'] == "") { continue; } // 管理者名 $admin_name = $aryAdm['kanjisei'] . " " . $aryAdm['kanjimei']; $body = str_replace("{ADMIN_NAME}", $admin_name, $bodySrc); $mail_to = $aryAdm['mail_acc'] . USER_MAIL_DOMAIN; $params = array(); $params['admin_name'] = $admin_name; $params['entry_name'] = $entry_name; $params['mail_to'] = $mail_to; $params['subject'] = $subject; $params['body'] = $body; Debug_Trace($params, "1234"); // メール送信 $this->sendSystemMail($mail_to, $subject, $body, SYSMAIL_FROM, SYSMAIL_SENDERNAME, SYSMAIL_CC, SYSMAIL_BCC, SYSMAIL_ENVELOP, SYSMAIL_RETURN_PATH); } } }
function relationAd($user_id, $aryNewChgId, $aryOld = array()) { if (!defined("LDAP_HOST_1")) { return true; } //接続開始 $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_1); $is_sec = false; if (!$ldap_conn) { $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_2); $is_sec = true; } if (!$ldap_conn) { Debug_Trace("接続失敗", 1); $this->makeUserAdErrLog($user_id); return false; } $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 1); $this->makeUserAdErrLog($user_id); return false; } $aryData = $this->getUserData($user_id); $login_id = $aryData['login_id']; // 変更時前のデータを削除 ※変わっている場合のみ if (@$aryOld['login_id'] != "" && $aryOld['login_id'] != $login_id) { // 存在チェック $target = "CN=" . $aryOld['login_id']; $filter = array("cn", "sAMAccountName"); $result = ldap_search($ldap_conn, LOGINID_DN, $target, $filter); $data = ldap_get_entries($ldap_conn, $result); // いたら消す if ($data['count'] == 1) { // 削除 $deleteDn = $target . "," . LOGINID_DN; if (ldap_delete($ldap_conn, $deleteDn)) { Debug_Trace("削除は成功しました", 5); } else { Debug_Trace("削除は失敗しました", 5); $this->makeUserAdErrLog($user_id); return false; } } } // 新しいIDが空ならこれで終わり if ($login_id == "") { return true; } $login_passwd = $aryData['login_passwd']; $vdi_user_flg = $aryData['vdi_user_flg']; $ftrans_user_flg = $aryData['ftrans_user_flg']; $ftrans_user_kbn = $aryData['ftrans_user_kbn']; // // 統合ID // // 存在チェック $target = "CN=" . $login_id; $filter = array("cn", "sAMAccountName"); $result = ldap_search($ldap_conn, LOGINID_DN, $target, $filter); $data = ldap_get_entries($ldap_conn, $result); $users_dn = "CN=" . $login_id . "," . LOGINID_DN; $group_info["member"] = $users_dn; // 更新 if ($data['count'] == 1) { $mod = array(); $this->getAdRelUserData($user_id, &$mod); if (ldap_modify($ldap_conn, $users_dn, $mod)) { Debug_Trace("更新は成功しました", 1); } else { Debug_Trace("更新は失敗しました", 1); $this->makeUserAdErrLog($user_id); return false; } } else { // 登録 // 追加時のパラメータ $add["cn"] = $login_id; $add["objectClass"] = "user"; $add["sAMAccountName"] = $login_id; $add["userPrincipalName"] = $login_id . AD_LOCAL_DOMAIN; $add["UserAccountControl"] = "66048"; $this->getAdRelUserData($user_id, &$add); if (ldap_add($ldap_conn, $users_dn, $add)) { Debug_Trace("追加は成功しました", 1); } else { Debug_Trace("追加は失敗しました", 1); $this->makeUserAdErrLog($user_id); return false; } // VLANグループの追加 if (ldap_mod_add($ldap_conn, VLAN400_DN, $group_info)) { Debug_Trace("VLAN参加は成功しました", 1); } else { Debug_Trace("VLAN参加は失敗しました", 1); $this->makeUserAdErrLog($user_id); return false; } } $has_error = false; // VDIグループの追加 if ($vdi_user_flg == "1") { if ($aryOld['vdi_user_flg'] != "1") { if (ldap_mod_add($ldap_conn, VDI_DN, $group_info)) { Debug_Trace("VDI参加は成功しました", 1); } else { Debug_Trace("VDI参加は失敗しました", 1); Debug_Trace($group_info, 1); $has_error = true; } } } else { if ($aryOld['vdi_user_flg'] == "1") { if (ldap_mod_del($ldap_conn, VDI_DN, $group_info)) { Debug_Trace("VDI脱退は成功しました", 1); } else { Debug_Trace("VDI脱退は失敗しました", 1); Debug_Trace($group_info, 1); $has_error = true; } } } // ファイル転送グループの追加 if ($ftrans_user_flg == "1") { if ($ftrans_user_kbn == $aryOld['ftrans_user_kbn']) { // 変わってない $ftrans_add_kbn = ""; $ftrans_del_kbn = ""; } else { if ($aryOld['ftrans_user_kbn'] == "0") { // 追加のみ $ftrans_add_kbn = $ftrans_user_kbn; $ftrans_del_kbn = ""; } else { // 抜けて追加 $ftrans_add_kbn = $ftrans_user_kbn; $ftrans_del_kbn = $aryOld['ftrans_user_kbn']; } } // 追加 $ftrans_add_dn = ""; if ($ftrans_add_kbn == FTRANS_USER_KBN_USR) { $ftrans_add_dn = FTRANS_DN_USR; } else { if ($ftrans_add_kbn == FTRANS_USER_KBN_ADM) { $ftrans_add_dn = FTRANS_DN_ADM; } } // 脱退 $ftrans_del_dn = ""; if ($ftrans_del_kbn == FTRANS_USER_KBN_USR) { $ftrans_del_dn = FTRANS_DN_USR; } else { if ($ftrans_del_kbn == FTRANS_USER_KBN_ADM) { $ftrans_del_dn = FTRANS_DN_ADM; } } if ($ftrans_add_dn != "") { if (ldap_mod_add($ldap_conn, $ftrans_add_dn, $group_info)) { Debug_Trace("ファイル転送グループ参加は成功しました", 1); } else { Debug_Trace("ファイル転送グループ参加は失敗しました", 1); Debug_Trace($group_info, 1); $has_error = true; } } if ($ftrans_del_dn != "") { if (ldap_mod_del($ldap_conn, $ftrans_del_dn, $group_info)) { Debug_Trace("ファイル転送グループ脱退は成功しました", 1); } else { Debug_Trace("ファイル転送グループ脱退は失敗しました", 1); Debug_Trace($group_info, 1); $has_error = true; } } } else { // 脱退 $ftrans_del_dn = ""; if ($aryOld['ftrans_user_kbn'] == FTRANS_USER_KBN_USR) { $ftrans_del_dn = FTRANS_DN_USR; } else { if ($aryOld['ftrans_user_kbn'] == FTRANS_USER_KBN_ADM) { $ftrans_del_dn = FTRANS_DN_ADM; } } if ($ftrans_del_dn != "") { if (ldap_mod_del($ldap_conn, $ftrans_del_dn, $group_info)) { Debug_Trace("ファイル転送グループ脱退は成功しました", 1); } else { Debug_Trace("ファイル転送グループ脱退は失敗しました", 1); Debug_Trace($group_info, 1); $has_error = true; } } } // ファイルサーバグループの追加 if (is_array($aryNewChgId)) { foreach ($aryNewChgId as $chg_id) { $sg_name = $this->getBelongSgName($chg_id); if ($sg_name == "") { continue; } $sg_name = mb_convert_encoding($sg_name, "sjis-win", "auto"); $file_server_dn = "CN=" . $sg_name . "," . FILE_SERVER_DN; if (ldap_mod_add($ldap_conn, $file_server_dn, $group_info)) { Debug_Trace("ファイルサーバグループ参加は成功しました", 1); } else { Debug_Trace("ファイルサーバグループ参加は失敗しました", 1); Debug_Trace($group_info, 1); $has_error = true; } } } // 抜けるファイルサーバグループがある場合 if (is_array(@$aryOld['del_belong_chg_id'])) { foreach ($aryOld['del_belong_chg_id'] as $chg_id) { $sg_name = $this->getBelongSgName($chg_id); if ($sg_name == "") { continue; } $sg_name = mb_convert_encoding($sg_name, "sjis-win", "auto"); $file_server_dn = "CN=" . $sg_name . "," . FILE_SERVER_DN; if (ldap_mod_del($ldap_conn, $file_server_dn, $group_info)) { Debug_Trace("ファイルサーバグループ脱退は成功しました", 1); } else { Debug_Trace("ファイルサーバグループ脱退は失敗しました", 1); Debug_Trace($group_info, 1); $has_error = true; } } } // 無線IDの登録があるか確認 // パスワードが変わったか旧データがない場合 if ($aryOld['login_passwd'] == "" || $aryOld['login_passwd'] != $login_passwd) { $ret = $this->checkAdWirelessId(&$ldap_conn, $user_id, $login_passwd); if (!$ret) { $has_error = true; } } ldap_close($ldap_conn); if ($has_error) { return false; } return true; }
function makeUserAdErrLog($user_id) { // 同じユーザのものがないかチェック $sql = $this->getQuery('EXISTS_USER_AD_ERR', $user_id); $log_cd = $this->oDb->getOne($sql); if ($log_cd == "") { // なければ記録する // ログコード作成 ランダム数字2文字+マイクロタイムの数字部分のみ $rand = rand(10, 99); $time = microtime(true); list($mae, $ushiro) = explode(".", $time); $log_cd = $rand . $mae . str_pad($ushiro, 4, "0"); $args = array(); $args[0] = $log_cd; $args[1] = $user_id; $sql = $this->getQuery('INSERT_USER_AD_ERR', $args); $ret = $this->oDb->query($sql); if (!$ret) { Debug_Trace("エラーログの記録に失敗しました[ID:" . $user_id . "]", 759); } } return; }
function chkJIS3over($target, &$rtn) { $rtn = ""; for ($idx = 0; $idx < mb_strlen($target, 'utf-8'); $idx++) { $str0 = mb_substr($target, $idx, 1, 'utf-8'); // 1文字をSJISにする。 $str = mb_convert_encoding($str0, "sjis-win", 'utf-8'); Debug_Trace($str, 9876); if (strlen(bin2hex($str)) / 2 == 1) { // 1バイト文字 $c = ord($str[0]); if ($str == "?" && $str0 != "?") { $rtn .= $str0; } } else { $c = ord($str[0]); // 先頭1バイト $c2 = ord($str[1]); // 2バイト目 $c3 = $c * 0x100 + $c2; // 2バイト分の数値にする。 Debug_Trace($c3, 9876); if ($c3 >= 0x8140 && $c3 <= 0x853d || $c3 >= 0x889f && $c3 <= 0x9872 || $c3 >= 0x989f && $c3 <= 0x9ffc || $c3 >= 0xe040 && $c3 <= 0xeaa4 || $c3 >= 0xfa40 && $c3 <= 0xfc4b) { } else { $rtn .= $str0; //echo "機種依存文字など" . "\n"; } } } /* for($idx = 0; $idx < mb_strlen($target, 'utf-8'); $idx++) { $str = mb_substr($target, $idx, 1, 'utf-8'); // iso-2022-jpに一旦文字コード変換後戻したものが下の文字列と同じならOK $str0 = mb_convert_encoding($str, "sjis-win", 'utf-8'); $str1 = mb_convert_encoding($str0, 'utf-8', "sjis-win"); if ($str != $str1) { $rtn .= $str; } } */ if ($rtn == "") { return true; } return false; }
if (!defined("LDAP_HOST_1")) { exit; } //接続開始 $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_1); if (!$ldap_conn) { $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_2); } if (!$ldap_conn) { Debug_Trace("接続失敗", 987); exit; } // バインド $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 987); exit; } if (is_array($aryId)) { foreach ($aryId as $log_cd => $aryData) { // 結果にかかわらず完了フラグ1を立てる $sql = "UPDATE wireless_ad_errlog SET complete_flg = '1' WHERE log_cd = '" . $log_cd . "'"; $oMgr->oDb->query($sql); $user_id = $aryData['user_id']; $wireless_id = $aryData['wireless_id']; // ユーザのパスワード $aryUser = $oMgr->getUserData($user_id); $passwd = $aryUser['login_passwd']; // 指定のワイアレスの設定を取得 $sql = "\nSELECT\n APL.vlan_id\nFROM\n app_head_tbl AS APH,\n app_list_Tbl AS APL\nWHERE\n APH.app_id = APL.app_id AND\n APH.wireless_id = '" . $oMgr->sqlItemChar($wireless_id) . "' AND\n APH.app_user_id = " . $user_id . " AND\n APL.busy_flg = '1'\n"; $vlan_id = $oMgr->oDb->getOne($sql);
function relationAd($request) { if (!defined("LDAP_HOST_1")) { return; } //接続開始 $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_1); if (!$ldap_conn) { $ldap_conn = ldap_connect("ldaps://" . LDAP_HOST_2); } if (!$ldap_conn) { Debug_Trace("接続失敗", 9); return; } // バインド $ldap_bind = ldap_bind($ldap_conn, LDAP_DN, LDAP_PASS); if (!$ldap_bind) { Debug_Trace("バインド失敗", 9); return; } $wireless_id = $request['wireless_id']; $passwd = $request['password']; // 追加時のパラメータ $add["cn"] = $wireless_id; $add["objectClass"] = "user"; $add["sAMAccountName"] = $wireless_id; $add["userPrincipalName"] = $wireless_id . AD_LOCAL_DOMAIN; $add["sAMAccountName"] = $wireless_id; $add['unicodePwd'] = mb_convert_encoding("\"{$passwd}\"", "UTF-16LE"); //$add["UserAccountControl"] = "512"; $add["UserAccountControl"] = "66048"; $userDn = "CN=" . $wireless_id . "," . WLESS_ID_DN; // 登録 if (ldap_add($ldap_conn, $userDn, $add)) { Debug_Trace("追加は成功しました", 912); } else { Debug_Trace("追加は失敗しました", 912); return; } // グループへの追加 $group_info["member"] = $userDn; if (ldap_mod_add($ldap_conn, GUEST_DN, $group_info)) { Debug_Trace("グループ参加は成功しました", 913); } else { Debug_Trace("グループ参加は失敗しました", 913); return; } return; }
function sendResultMail($entry_id, $entry_kbn, $file) { // 申請者名 $aryUser = $this->getUserData($entry_id); if ($aryUser['mail_acc'] == "") { Debug_Trace("承認メール対象アドレスなし", "1234"); return true; } $entry_name = $aryUser['kanjisei'] . " " . $aryUser['kanjimei']; $mail_to = $aryUser['mail_acc'] . USER_MAIL_DOMAIN; $entry_kbn_name = ""; switch ($entry_kbn) { case ENTRY_KBN_ADD: $entry_kbn_name = "登録"; break; case ENTRY_KBN_EDIT: $entry_kbn_name = "更新"; break; case ENTRY_KBN_DEL: $entry_kbn_name = "削除"; break; } $mail_data = file_get_contents($file, FILE_USE_INCLUDE_PATH); // メールデータを取り出す list($head, $body) = explode("BODY:", $mail_data); // 件名 $subject = trim(str_replace("TITLE:", "", $head)); $subject = str_replace("{ENTRY_KBN}", $entry_kbn_name, $subject); // 本文 $body = str_replace("{ENTRY_NAME}", $entry_name, $body); $body = str_replace("{ENTRY_KBN}", $entry_kbn_name, $body); $params = array(); $params['entry_name'] = $entry_name; $params['mail_to'] = $mail_to; $params['subject'] = $subject; $params['body'] = $body; Debug_Trace($params, "1234"); // メール送信 $this->sendSystemMail($mail_to, $subject, $body, SYSMAIL_FROM, SYSMAIL_SENDERNAME, SYSMAIL_CC, SYSMAIL_BCC, SYSMAIL_ENVELOP, SYSMAIL_RETURN_PATH); }
function delUserMailAddr($login_id) { $client = null; $this->createMailClient(&$client); if (is_null($client)) { return; } $params = array('uid' => $login_id); $res = $client->userDeleteLdap($params); if ($res->resultCode == 100) { Debug_Trace("メールアカウント削除は成功しました", 501); } else { if ($res->resultCode == 200) { Debug_Trace("メールアカウント削除は失敗しました(クライアント側エラー)", 501); } else { Debug_Trace("メールアカウント削除は失敗しました(サーバー側エラー)", 501); } } return; }