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);
 }
Esempio n. 2
0
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;
 }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
$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;
 }
Esempio n. 7
0
 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;
 }
Esempio n. 8
0
 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;
 }
Esempio n. 19
0
 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;
 }
Esempio n. 20
0
 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);
 }
Esempio n. 24
0
 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;
 }