הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   HTTPSOCKET כדי לבצע פעולות ב DIRECTADMIN (https://hosts.co.il/forums/showthread.php?t=108117)

MAORBARI 15-12-14 20:05

HTTPSOCKET כדי לבצע פעולות ב DIRECTADMIN
 
היי,
אני משתמש ב httpsocket 2.7 לביצוע פעולות ב DIRECTADMIN.
עכשיו אני פותח חשבון דרך קוד בדירקט, באותו הרצה, אני שם קוד שמבצע התחברות ל FTP של החשבון החדש.

הבעיה היא שהוא מחזיר לי שגיאת אימות:
Warning: ftp_login(): Login authentication failed in

מה שלא הגיוני כי אני משתמש באותם משתנים.
מה שמוזר, זה שאם אני מפריד את ההרצות, ז"T פעם אחת עושה הרצה של פתיחת חשבון, ואז מריץ קובץ אחר שמבצע התחברות ל FTP (כמובן עם אותם פרטים) - הוא כן מצליח להתחבר.

מדוע זה קורה ואיך אפשר לתקן זאת?

תודה!

איציק ברבי 15-12-14 20:08

תעלה את הקוד, אולי זה משהו שקשור לחסימה של השרת, כי אולי אתה מחובר כבר לDA.
תנסה לראות אם זה עדיין עובד אחרי שאתה סוגר את הבקשה של הsocket .

zoharesh 16-12-14 14:34

לפי השגיאה שמחוזרת לך אתה מנסה להתחבר ל-FTP לפני שהמשתמש קיים פיזית.
בלי לראות את הקוד שלך אני לא יכול לכוון אותך לבעיה ספציפית, אבל תוודא שאתה שולח את הבקשה ליצירת המשתמש, מקבל תשובה חזרה ורק לאחר מכן מנסה להתחבר ל-FTP.

MAORBARI 16-12-14 19:48

PHP קוד:

     $username htmlentities($_POST['username']);
    
$domain htmlentities($_POST['domain']);
    
$email htmlentities($_POST['email']);
    
$sock = new HTTPSocket;
    
    if(
$server_ssl == 'Y')
        
$sock->connect('ssl://'.$server_host$server_port);
    else
        
$sock->connect($server_host$server_port);
 
    
$sock->set_login($server_login$server_pass);
 
    
$package 'Unlimited_1_Domain';
    
    
$sock->query('/CMD_API_ACCOUNT_USER',
        array(
           
'action' => 'create',
           
'add' => 'Submit',
           
'username' => $username,
           
'email' => $email,
           
'passwd' => $pass,
           
'passwd2' => $pass,
           
'domain' => $domain,
           
'package' => $package,
           
'ip' => $server_ip,
           
'notify' => 'yes'
          
)
    );
  
    
$result $sock->fetch_parsed_body();
// LOGIN TO FTP AFTER CREATE

        
$conn_id ftp_connect($server_ip) or die("Could not connect to $server_ip");
        
$login_result ftp_login($conn_id$username$pass);
        
        echo 
is_array(ftp_nlist($conn_id".")) ? 'Connected!' 'not Connected! :('

פותח משתמש אך מראה לי not Connected :(.
תודה :)

אדיר 16-12-14 20:56

יכול להיות שהסרבר מחזיר לך תשובה אבל זה לא בהכרח אומר שהוא כבר ביצע את מה שביקשת ממנו, הוא רק ענה לך שהוא קיבל את זה. במקביל, הוא דוחף את הפעולה שלך ל- Queue ומבצע אותה בזמנו הפנוי.
תחפש איך בדיוק ה- API שלהם עובד בקטע הזה.

MAORBARI 16-12-14 21:41

ציטוט:

נכתב במקור על ידי אדיר (פרסם 893104)
יכול להיות שהסרבר מחזיר לך תשובה אבל זה לא בהכרח אומר שהוא כבר ביצע את מה שביקשת ממנו, הוא רק ענה לך שהוא קיבל את זה. במקביל, הוא דוחף את הפעולה שלך ל- Queue ומבצע אותה בזמנו הפנוי.
תחפש איך בדיוק ה- API שלהם עובד בקטע הזה.

תודה רבה, אני פשוט אפריד הרצות כי אני מקבל גם שגיאות של עומס, והצפה ו 502 בעקבות עומד בהרצה אחת.

zoharesh 17-12-14 13:29

PHP קוד:

$result $sock->fetch_parsed_body(); 

בדקת ש-result מכיל תשובה חיובית?

אגב, ביצירת יוזר DA יוצר אותו על המקום (יש פעולות אחרות שעובדות בתצורת Queue כמו שאדיר כתב).
בכל אופן הייתי מוסיף sleep של מספר שניות אחרי יצירת היוזר.

MAORBARI 17-12-14 20:23

ציטוט:

נכתב במקור על ידי zoharesh (פרסם 893113)
PHP קוד:

$result $sock->fetch_parsed_body(); 

בדקת ש-result מכיל תשובה חיובית?

אגב, ביצירת יוזר DA יוצר אותו על המקום (יש פעולות אחרות שעובדות בתצורת Queue כמו שאדיר כתב).
בכל אופן הייתי מוסיף sleep של מספר שניות אחרי יצירת היוזר.

כן הוא מחזיר תשובה חיובית ובנוסף ניסיתי את הSLEEP שמתי ל 10 שניות וזה לא עזר.


כל הזמנים הם GMT +2. הזמן כעת הוא 15:19.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ