مشروع Starmail مفتوح المصدر
#1
السلام عليكم
مقدمة
بالطبع الكل يتسائل ماهو ستارمايل , هو عبارة عن سكربت PHP قديم برمجته منذ مدة وكانت بدايتي البرمجية في php وكان فيه اخطاء برمجية كثيرة و غير محمي
لاعلينا لقد قمت بتغيير الشكل وتغيير في قواعد البيانات والان اصبح افضل من ذي قبل
مبدأ عمل السكربت
هو عبارة عن مستقبل رسائل http ومرسل لنفسه فقط
والرسالة ترسل باكثر من طريقة ويدعم ارسال المرفقات
لماذا مفتوح المصدر
لتطوير السكربت اكثر
طريقة الاستخدام
يرسل مرة واحدة فقط من نفس الايبي الى غاية مرور بعض الوقت وهذا لتفادي السبام
ولاعادة الارسال اغلق البرنامج واعد فتحه و الارسال محدود ( 200 رسالة )
والعضويات الذهبية غير محدودة في الارسال والتكرار
موضوع سابق
الاستخدام
اولا هذه تعريفات عامة مجموعة من المتغيرات والدوال...
حيث ان UsernameCrypt و PasswordCrypt و key عبارة عن ثوابت لكل عضوية

PHP كود :
implementation

{$R *.dfm}
  
type
    TReponseFormat 
= record
    stored
,
    
added,
    
rest,
    
error: string;
  
end;


  var   
UserName      :string  ='admiin_01';
        
Password      :string  ='123456';
        
UsernameCrypt :string  ='NIwe6BU3w95IqQlJfoegoHzJlWONAV3iuPmvUOD7gKM=';
        
PasswordCrypt :string  ='u7ZO8joRBteZyavUFrVX/0bV2+42eG5G7+iWXmekt7c=';
        
key           :string  ='eQc9aioMK1C0pUJs81ZX5cJ+A/ZvolJsShZ4gR2Sm54=' ;
        
url           :string  ='http://delphiapi.0fees.net/index.php?add';

function 
Url_encode(const url:string):string;
var
i: integer;
begin
  result
:='';
  for 
i:=1 to length(url) do begin
    
case url[i] of 'a'..'z','A'..'Z','0'..'9','/','.','&','-','=', '?': result:=result+ url[i];
    else 
result:=result+'%'+uppercase(inttohex(ord(url[i]),2));
    
end;
  
end;
end;

function 
GetReponse(Content:string):TReponseFormat;
var
Super: ISuperObject;
begin
  Super 
:= SuperObject.SO(Content);
    try
    
Result.error := Super.S['error'];
    if (
Result.error='null') then
    begin
    Result
.stored := Super.S['stored'];
    
Result.added := Super.S['added'];
    
Result.rest := Super.S['rest'];
    
end else
    
begin
    Result
.stored := '';
    
Result.added := '';
    
Result.rest := '';
    
end;  


  finally
    
Super := nil;
  
end;
end;


procedure TForm2.FormCreate(Sender: TObject);
begin
Memo1
.Text:='message';
IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; rv:36.0) Gecko/20100101 Firefox/38.0';
  
// IdHTTP1.Request.ContentEncoding := 'utf-8';
  // IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';

   
UsernameCrypt:= url_encode(UsernameCrypt);
   
PasswordCrypt:= url_encode(PasswordCrypt);
   
key          := url_encode(key);
   
end; 
لارسال رسالة مع مرفقات POST
PHP كود :
procedure TForm2.Button3Click(Sender: TObject);
var
files         : TIdMultiPartFormDataStream;
Information   : string;
ReponseFormat : TReponseFormat;
begin
 
//post upload File   crypt
 //IdHTTP1.ProxyParams.ProxyPort:=81;
   //IdHTTP1.ProxyParams.ProxyServer:='81.3.8.101';

  
files   := TIdMultiPartFormDataStream.Create;
  if 
FileExists(Edit1.Text) then
  files
.AddFile('fileToUpload', Edit1.Text, 'application/x-www-form-urlencoded');
  
files.AddFormField('email',Edit2.Text);
  
files.AddFormField('subj',Edit3.Text);//.ContentTransfer := '8bit';
  
files.AddFormField('msg',Memo1.Text);//.ContentTransfer := '8bit';
  
{ files.AddFormField('subj',Edit3.Text,'utf-8').ContentTransfer := '8bit';
  
files.AddFormField('msg',Memo1.Text,'utf-8').ContentTransfer := '8bit'; }
  
files.AddFormField('username',UsernameCrypt );//.ContentTransfer := '8bit';
  
files.AddFormField('password',PasswordCrypt );//.ContentTransfer := '8bit';
  
files.AddFormField('key',key);//.ContentTransfer := '8bit';
  
files.AddFormField('crypt','1');//.ContentTransfer := '8bit';
  
files.AddFormField('request','post');//.ContentTransfer := '8bit';
files.AddFormField('urldecode','1');//.ContentTransfer := '8bit';

  
try

  
Information   := IdHTTP1.Post(url,files) ;
  
ReponseFormat := GetReponse(Information);
  
Label1.Caption:= 'Information :'#13#10+
                   
ReponseFormat.error+#13#10+
                   
ReponseFormat.stored+#13#10+
                   
ReponseFormat.added+#13#10+
                   
ReponseFormat.rest;

  
StatusBar1.Panels[0].Text:=Information;
  finally
  
files.Free;
  
IdHTTP1.Request.Clear;
  
IdHTTP1.ProxyParams.Clear ;
  
end;

end; 
لارسال رسالة عادية باستخدام GET
PHP كود :
procedure TForm2.Button5Click(Sender: TObject);
var
Information   : string;
ReponseFormat : TReponseFormat;
begin
 
//get http

  
Information   := IdHTTP1.Get(url+'&request=get&email='+
  
url_encode(Edit2.Text)+'&subj='+url_encode(Edit3.Text)+'&msg='+url_encode(Memo1.Text)+'&username='+Username+'&password='+Password+'&key=no&crypt=0');
  
ReponseFormat := GetReponse(Information);
  
Label1.Caption:= 'Information :'#13#10+
                   
ReponseFormat.error+#13#10+
                   
ReponseFormat.stored+#13#10+
                   
ReponseFormat.added+#13#10+
                   
ReponseFormat.rest;

  
StatusBar1.Panels[0].Text:=Information;


end; 
طلب معلومات الارسال
PHP كود :
ShowMessage(IdHTTP1.Get(url+'&api&username='+Username+'&password='+Password)); 
البرنامج demo ( تجدونه كامل في المرفقات )

[صورة: hyQEcg.png]

بعد استخدام البرنامج ستجدون الرسالة المرسلة في حسابكم على ستار مايل

صور من السكربت

صفحة الدخول

[صورة: hkwNdg.png]

الواجهة الرئيسية

[صورة: BcmgCo.png]

معلومات API

[صورة: Ix3h74.png]

معاينة الرسالة

[صورة: OAiUGb.png]

اعدادات اخرى
كود :
http://img538.imageshack.us/img538/2378/0PGZ6X.png
السكربت كامل النسخة 0.6 ( بدون لوحة تحكم الادمن )
كود :
http://www.mediafire.com/download/1s6ud6sapmyyl3i/SMsite06.7z

للتجربة

اسم المستخدم
admiin_01
كلمة المرور
123456
رابط الموقع
ستارمايل

وفي الختام
اي خطا او احتمال ثغرة فنرجــــوا ان تشاركونا بها


الملفات المرفقة
.7z   Demo_starmail.7z (الحجم : 273.25 ك ب / التحميلات : 223)
الرد
#2
شكراً جزيلاً باركك الله أيها المبارك الكريم ، صراحة فكرة وبرمجة ممتاز جداً .
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم