| Forum Home | ||||
| Press F1 | ||||
| Thread ID: 61658 | 2005-09-12 09:57:00 | Webmail Signup PHP, Linux etc | dwnz (5333) | Press F1 |
| Post ID | Timestamp | Content | User | ||
| 387884 | 2005-09-12 09:57:00 | Hey, I need a script that can create an email account for users on a signup page. I have got SquirrelMail going fine, but cant find anything that doesnt use cPannel or the like. All i want is a script that can signup new users for a email account. Thanks Daniel |
dwnz (5333) | ||
| 387885 | 2005-09-13 03:11:00 | Ok, i have found the page where the web config thing i use adds clients, but since its in PHP i dont understand how it works (Im used to using ASP, but that cant do what i want on linux!) I have this code below, which is what i think i need to use, but im not sure . All i want it to do is enable people to signup online, and get a email address, which this does through the web config thing i use . I also found this . . . . . clarkconnect . org/developer/api/index . php?target=User . html" target="_blank">www . clarkconnect . org <?php // vim: ts=4 /////////////////////////////////////////////////////////////////////////////// // // Copyright 2003-2004 Point Clark Networks . // /////////////////////////////////////////////////////////////////////////////// // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version . // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the // GNU General Public License for more details . // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc . , 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA . // /////////////////////////////////////////////////////////////////////////////// // // Gotchas: // -------- // The " Full Name " form variable is one of the few places where a single quote // (') is allowed (e . g . Tim O'Reilly) . We must do a string replacement right // before we display the variable, and reverse the process before working // with the variable . // . . . $fullname = str_replace( " ' " , " ' " , $fullname); // /////////////////////////////////////////////////////////////////////////////// require_once( " . . / . . /classes/webconfig . inc " ); require_once( " . . / . . /classes/locale . class " ); require_once( " . . / . . /classes/user . class " ); require_once( " . . / . . /classes/usermanager . class " ); require_once( " . . / . . /classes/shell . class " ); $locale = new Locale(); require_once($locale->GetLanguageTemplate(__FILE__)); /////////////////////////////////////////////////////////////////////////////// // // Icons // /////////////////////////////////////////////////////////////////////////////// define(WEB_ICON_PPTP, ReplacePngTags( " /images/icon-users-pptp . png " , " P " )); define(WEB_ICON_SAMBA, ReplacePngTags( " /images/icon-users-samba . png " , " F " )); define(WEB_ICON_SHELL, ReplacePngTags( " /images/icon-users-shell . png " , " S " )); define(WEB_ICON_EMAIL, ReplacePngTags( " /images/icon-users-email . png " , " M " )); /////////////////////////////////////////////////////////////////////////////// // // Header // /////////////////////////////////////////////////////////////////////////////// WebAuthenticate(); WebHeader(WEB_LANG_PAGE_TITLE); WebDialogIntro(WEB_LANG_PAGE_TITLE, " /images/icon-users . png " , WEB_LANG_PAGE_INTRO); /////////////////////////////////////////////////////////////////////////////// // // Handle Update // /////////////////////////////////////////////////////////////////////////////// $errors = array(); $usermanager = new UserManager(); // Common stuff for changing for form variables (on/off) to PHP booleans //---------------------------------------------------------------------- if ($AddUser || $UpdateUser) { $username = strtolower($username); $userinfo[USERMANAGER_USERINFO_FULL_NAME] = str_replace( " ' " , " ' " , $fullname); // see comment above if (preg_match( " /on/i " , $shell)) $userinfo[USERMANAGER_USERINFO_IS_SHELL_USER] = true; else $userinfo[USERMANAGER_USERINFO_IS_SHELL_USER] = false; if (preg_match( " /on/i " , $samba)) $userinfo[USERMANAGER_USERINFO_IS_SAMBA_USER] = true; else $userinfo[USERMANAGER_USERINFO_IS_SAMBA_USER] = false; if (preg_match( " /on/i " , $pptp)) $userinfo[USERMANAGER_USERINFO_IS_PPTP_USER] = true; else $userinfo[USERMANAGER_USERINFO_IS_PPTP_USER] = false; if (preg_match( " /on/i " , $email)) $userinfo[USERMANAGER_USERINFO_IS_EMAIL_USER] = true; else $userinfo[USERMANAGER_USERINFO_IS_EMAIL_USER] = false; } // Do update //---------- if ($AddUser) { $checkweak = VerifyPassword($password, $verify); $checkstrong = VerifyPassword($strongpassword, $strongverify); if ($checkweak || $checkstrong) { if ($checkweak) $errors[] = $checkweak . " ( " . LOCALE_LANG_PASSWORD . " ) " ; if ($checkstrong) $errors[] = $checkstrong . " ( " . USER_LANG_SECURE_PASSWORD . " ) " ; } else { $userinfo[USERMANAGER_USERINFO_PASSWORD_WEAK] = $password; $userinfo[USERMANAGER_USERINFO_PASSWORD_STRONG] = $strongpassword; $usermanager->AddUser($username, $userinfo, $errmsg); if ($errmsg) $errors[] = $errmsg; } } else if ($UpdateUser) { $checkweak = VerifyPassword($password, $verify); $checkstrong = VerifyPassword($strongpassword, $strongverify); if ($checkweak || $checkstrong) { if ($checkweak) $errors[] = $checkweak . " ( " . LOCALE_LANG_PASSWORD . " ) " ; if ($checkstrong) $errors[] = $checkstrong . " ( " . USER_LANG_SECURE_PASSWORD . " ) " ; } else { $userinfo[USERMANAGER_USERINFO_PASSWORD_WEAK] = $password; $userinfo[USERMANAGER_USERINFO_PASSWORD_STRONG] = $strongpassword; $usermanager->UpdateUser($username, $userinfo, $errors[]); } if ($errors[0]) $EditUser[$username] = " redo " ; } else if ($DoDelete) { $usermanager->DeleteUser(key($DoDelete), $deletehome, $errors[]); } $errmsg = WebCheckErrors($errors); if ($errmsg) { WebDialogWarning($errmsg); } else { $username = " " ; $fullname = " " ; $shell = " " ; $samba = " " ; $pptp = " " ; $email = " " ; $verify = " " ; $password = " " ; $strongpassword = " " ; $strongverify = " " ; } /////////////////////////////////////////////////////////////////////////////// // // Main // /////////////////////////////////////////////////////////////////////////////// if ($EditUser) { DisplayAddEdit( " edit " , key($EditUser)); } else if ($legacy_edit && !$Cancel) { DisplayAddEdit( " edit " , $legacy_edit); } else if ($DeleteUser) { DisplayDelete(key($DeleteUser)); } else { DisplayUsers(); DisplayAddEdit( " add " , $username, $shell, $fullname, $samba, $pptp, $email, $password, $verify, $strongpassword, $strongverify); } WebFooter(); /////////////////////////////////////////////////////////////////////////////// // F U N C T I O N S /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// // // DisplayUsers() // /////////////////////////////////////////////////////////////////////////////// function DisplayUsers() { $user = new User( " " ); // To grab language tags $users = new UserManager(); $shell = new Shell(); $userlist = $users->GetAllUserInfo(true, $errmsg); if ($errmsg) { WebDialogWarning($errmsg); return; } while (list($user, $info) = each($userlist)) { // Show error is there is some kind of sanity check failure //--------------------------------------------------------- if (! $info[USERMANAGER_USERINFO_IS_SANE]) { $errors[] . = USER_LANG_ERRMSG_USER_SYNCHRONIZATION_ERROR . " ( " . $user . " ) " ; continue; } // Don't let users delete root account //------------------------------------ if ($user == " root " ) $deletebutton = " " ; else $deletebutton = WebButtonDelete( " DeleteUser[$user] " ); // Only show modules installed on the system //------------------------------------------ $options = " " ; if ($info[USERMANAGER_USERINFO_IS_EMAIL_USER]) $options . = WEB_ICON_EMAIL . " " ; if ($info[USERMANAGER_USERINFO_IS_SAMBA_USER]) $options . = WEB_ICON_SAMBA . " " ; if ($info[USERMANAGER_USERINFO_IS_PPTP_USER]) $options . = WEB_ICON_PPTP . " " ; if ($info[USERMANAGER_USERINFO_IS_SHELL_USER]) $options . = WEB_ICON_SHELL . " " ; $usertable[] = " <tr> <td> " . $user . " </td> <td> " . $info[USERMANAGER_USERINFO_FULL_NAME] . " </td> <td> " . $options . " </td> <td nowrap> " . WebButtonEdit( " EditUser[$user] " ) . $deletebutton . " </td> </tr> " ; } $errmsg = WebCheckErrors($errors); if ($errmsg) WebDialogWarning($errmsg); // Display list of user on the system //----------------------------------- if ($usertable) { sort($usertable); $usertable_output = implode( " \n " , $usertable); global $usermanager; $services = $usermanager->GetInstalledServices($errmsg); if ($errmsg) return; if (in_array(USERMANAGER_SERVICE_SAMBA, $services)) $legend . = WEB_ICON_SAMBA . " " . USER_LANG_SAMBA . " " ; if (in_array(USERMANAGER_SERVICE_EMAIL, $services)) $legend . = WEB_ICON_EMAIL . " " . USER_LANG_EMAIL . " " ; if (in_array(USERMANAGER_SERVICE_PPTP, $services)) $legend . = WEB_ICON_PPTP . " " . USER_LANG_PPTP . " " ; if (in_array(USERMANAGER_SERVICE_SHELL, $services)) $legend . = WEB_ICON_SHELL . " " . USER_LANG_SHELL . " " ; WebFormOpen( " users . php " , " post " ); WebTableOpen(WEB_LANG_USER_INFO_TITLE, " 100% " ); WebTableHeader(LOCALE_LANG_USERNAME . " | " . USER_LANG_FULLNAME . " | " . USER_LANG_OPTIONS . " | " . LOCALE_LANG_ACTION); echo $usertable_output; echo " <tr> <td colspan='4' style='background: #CCCCCC; border-top: 1px solid #999999;' align='center'>$legend </td> " ; WebTableClose(); WebFormClose(); } } /////////////////////////////////////////////////////////////////////////////// // // DisplayAddEdit() // /////////////////////////////////////////////////////////////////////////////// function DisplayAddEdit($type, $username, $shell = " " , $fullname = " " , $samba = " " , $pptp = " " , $email = " " , $password = " " , $verify = " " , $strongpassword = " " , $strongverify = " " ) { // TODO: cleanup the root special case . global $usermanager; $user = new User( " " ); // To grab language tags $servicelist = $usermanager->GetInstalledServices($errmsg); if ($type == " add " ) { $userfield = " <input type='text' name='username' value='$username'> " ; $title = WEB_LANG_ADD_USER_TITLE; $action = " <tr> <td class='header'> </td> <td> " . WebButtonAdd( " AddUser " ) . " " . WebButtonCancel( " " ) . " </td> </tr> " ; } else { $userfield = " $username <input type='hidden' name='username' value='$username'> " ; $title = WEB_LANG_EDIT_INFO_TITLE; $action = " <tr> <td class='header'> </td> <td> " . WebButtonUpdate( " UpdateUser[$username] " ) . " " . WebButtonCancel( " " ) . " </td> </tr> " ; $userinfo = $usermanager->GetUserInfo($username, $errmsg); if ($errmsg) { WebDialogWarning($errmsg); return; } $fullname = $userinfo[USERMANAGER_USERINFO_FULL_NAME]; $password = $userinfo[USERMANAGER_USERINFO_PASSWORD_WEAK]; $verify = $password; $strongpassword = $userinfo[USERMANAGER_USERINFO_PASSWORD_STRONG]; $strongverify = $strongpassword; if ($userinfo[USERMANAGER_USERINFO_IS_SAMBA_USER]) $samba = " on " ; if ($userinfo[USERMANAGER_USERINFO_IS_PPTP_USER]) $pptp = " on " ; if ($userinfo[USERMANAGER_USERINFO_IS_EMAIL_USER]) $email = " on " ; if ($userinfo[USERMANAGER_USERINFO_IS_SHELL_USER]) $shell = " on " ; // Upgrade issue -- user must reset password if we don't have // it in the /etc/users database if ($username == " root " ) { $use_root_config = true; } else if (! $userinfo[USERMANAGER_USERINFO_PASSWORD_WEAK]) { $legacy_upgrade_required = true; $legacy_edit = " <input type='hidden' name='legacy_edit' value='$username'> " ; } } // Add options if installed //------------------------- if (in_array(USERMANAGER_SERVICE_EMAIL, $servicelist)) { if (preg_match( " /on/i " , $email)) $emailon = " checked " ; $addoptions . = " <tr> <td class='header'> " . USER_LANG_EMAIL . " </td> <td> <input type='checkbox' name='email' $emailon> </td> </tr> " ; } if (in_array(USERMANAGER_SERVICE_SAMBA, $servicelist)) { if (preg_match( " /on/i " , $samba)) $sambaon = " checked " ; $addoptions . = " <tr> <td class='header'> " . USER_LANG_SAMBA . " </td> <td> <input type='checkbox' name='samba' $sambaon> </td> </tr> " ; } if (in_array(USERMANAGER_SERVICE_PPTP, $servicelist)) { if (preg_match( " /on/i " , $pptp)) $pptpon = " checked " ; $addoptions . = " <tr> <td class='header'> " . USER_LANG_PPTP . " </td> <td> <input type='checkbox' name='pptp' $pptpon> </td> </tr> " ; } if (in_array(USERMANAGER_SERVICE_SHELL, $servicelist)) { if (preg_match( " /on/i " , $shell)) $shellon = " checked " ; $addoptions . = " <tr> <td class='header'> " . USER_LANG_SHELL . " </td> <td> <input type='checkbox' name='shell' $shellon> </td> </tr> " ; } if ($legacy_upgrade_required) WebDialogWarning(WEB_LANG_LEGACY_PASSWORD_RESET); // Show add user table //-------------------- $fullname = str_replace( " ' " , " ' " , $fullname); WebFormOpen( " users . php " , " post " ); if ($use_root_config) { echo " <input type='hidden' name='password' value='notapplicable'> " ; echo " <input type='hidden' name='verify' value='notapplicable'> " ; echo " <input type='hidden' name='shell' value='on'> " ; echo " <input type='hidden' name='fullname' value='root'> " ; } WebTableOpen($title, " 100% " ); echo " <tr> <td width='100' class='header'> " . LOCALE_LANG_USERNAME . " </td> <td> $userfield </td> </tr> " ; if (! $use_root_config) { echo " <tr> <td class='header'> " . USER_LANG_FULLNAME . " </td> <td> <input size='20' type='text' name='fullname' value='$fullname'> </td> </tr> <tr> <td class='header'> " . LOCALE_LANG_PASSWORD . " </td> <td> <input size='20' type='password' name='password' value='$password'> <b> " . LOCALE_LANG_VERIFY . " </b> <input size='20' type='password' name='verify' value='$verify'> </td> </tr> " ; } echo " <tr> <td class='header'> " . USER_LANG_SECURE_PASSWORD . " </td> <td> <input size='20' type='password' name='strongpassword' value='$strongpassword'> <b> " . LOCALE_LANG_VERIFY . " </b> <input size='20' type='password' name='strongverify' value='$strongverify'> </td> </tr> " ; if (! $use_root_config) echo $addoptions; echo $action; WebTableClose(); WebFormClose(); } /////////////////////////////////////////////////////////////////////////////// // // DisplayDelete() // /////////////////////////////////////////////////////////////////////////////// function DisplayDelete($username) { WebFormOpen( " users . php " , " post " ); WebTableOpen(LOCALE_LANG_CONFIRM, " 400 " ); echo " <tr> <td align='center'> <br> <p> " . WEBCONFIG_ICON_WARNING . " " . WEB_LANG_ARE_YOU_SURE1 . " $username " . WEB_LANG_ARE_YOU_SURE2 . " </p> <p><input type='checkbox' name='deletehome'> " . WEB_LANG_DELETE_FILES . " <br><br> " . WebButtonDelete( " DoDelete[$username] " ) . " " . WebButtonCancel( " Cancel " ) . " </td> </tr> " ; WebTableClose(); WebFormClose(); } /////////////////////////////////////////////////////////////////////////////// // // VerifyPassword() // /////////////////////////////////////////////////////////////////////////////// function VerifyPassword($password, $verify) { if (! $password || !$verify) return WEB_LANG_PASSWORD_REQUIRED; if ($password != $verify) return WEB_LANG_PASSWORD_VERIFY_MISMATCH; } ?> Cheers Daniel |
dwnz (5333) | ||
| 1 | |||||