Unreal3.2 AutoHelper Modülü

Aytac

nicktag
Yönetici
Developer
Katılım
4 Şub 2020
Mesajlar
379
Tepkime puanı
50
Puanları
28
Konum
ircland
Web sitesi
www.ircalem.net
AutoHelper:
unrealircd.conf unuzdaki help-channel satırında ayarlı kanala biri  girerse ve Chanserv tarafından otomatik op olur ise +h modu verilip,  Hostuna Helper.xxx.xxx gibi bir host vermek mümkün olur.
ve kanaldan normal şekilde çıkana kadar helperlığı devam eder.

Kullanımı:
- Modül içinden
char HelperHost[]="Helper.Domain.Com";
satırını istediğiniz gibi değiştirin.
- Diğer modülleri kurar gibi make cutommodule çekip, conf dosyanıza loadmodule ekleyin.
- sonra sunucunuza rehash çekin.)

Autohelper.c modülü;

Kod:
/* 
* AutoHelper Modülü -> Yapımcı : Sky-Dancer 
* Bilinen Hatalar: 
* - Kanalda en az 1 kişi olmak zorunda. (çünkü ircd, kanal boş iken op u chanserv den daha önce veriyor.) 
* - "-o" durumunda Helperlık sona ermiyor. 
* - sadece part durumunda helperlık sona eriyor. (bunun anlamı svspart gibi durumlarda helper ın helper kalacağıdır.) 
* Yapılması Gerekenler: 
* -> Modülü Diğer Modüller Gibi Kurunuz. 
* -> HelperHost Değişkenini Dilediğiniz Gibi Değiştiriniz. 
* -> +h modu alınınca, whoisde s_err.c deki 310 numaralı raw mesajı gönderiliyor. (Standart) 
*    Bunu İstediğiniz Gibi Değiştiriniz. 
*/ 
 
#include "config.h" 
#include "struct.h" 
#include "common.h" 
#include "sys.h" 
#include "numeric.h" 
#include "msg.h" 
#include "channel.h" 
#include <time.h> 
#include <sys/stat.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#ifdef _WIN32 
#include <io.h> 
#endif 
#include <fcntl.h> 
#include "h.h" 
#ifdef _WIN32 
#include "version.h" 
#endif 
 
char HelperHost[]="Helper.Domain.Com"; 
 
static int Mod_Degisimi(aClient *, aClient *, aChannel *, char *, char *, TS, int); 
static int K_Ayrildi(aClient *, aClient *, aChannel *, char *); 
 
static ModuleInfo   *MyModInfo; 
 
static Hook *H_ModDegisimi=NULL, *H_Part=NULL; 
 
ModuleHeader MOD_HEADER(AutoHelper) = { 
   "AutoHelper", 
   "Otomatik Helper Modülü (By Sky-Dancer)", 
   "Otomatik Helper Modülü (By Sky-Dancer)", 
   "3.2-b8-1", 
   NULL  
    }; 
 
DLLFUNC int MOD_TEST(AutoHelper)(ModuleInfo *modinfo) { 
return MOD_SUCCESS; 
} 
 
DLLFUNC int MOD_INIT(AutoHelper)(ModuleInfo *modinfo) { 
   MyModInfo=modinfo; 
   H_ModDegisimi = HookAddEx(modinfo->handle, HOOKTYPE_REMOTE_CHANMODE, Mod_Degisimi); 
   H_Part   = HookAddEx(modinfo->handle, HOOKTYPE_LOCAL_PART, K_Ayrildi); 
return MOD_SUCCESS; 
} 
 
DLLFUNC int MOD_LOAD(AutoHelper)(int module_load) { 
return MOD_SUCCESS; 
} 
 
DLLFUNC int MOD_UNLOAD(AutoHelper)(int module_unload) { 
return MOD_SUCCESS; 
} 
 
int Helper_Yap(aClient *sptr) { 
   if (IsServer(sptr) || IsULine(sptr) || IsOper(sptr)) 
      return 0; 
   sptr->user->virthost = strdup(HelperHost); 
   sendto_one(sptr, ":%s MODE %s +h", sptr->name, sptr->name); 
   SetHelpOp(sptr); 
   sendto_one(sptr,":%s NOTICE %s :*** Not: Hostunuz %s olarak Değiştirilmiştir.", 
      me.name, sptr->name, HelperHost); 
return 0; 
} 
 
int Helper_Sil(aClient *sptr) { 
   if (IsServer(sptr) || IsULine(sptr) || IsOper(sptr)) 
      return 0; 
   sptr->user->virthost = strdup((char *)make_virthost(sptr, sptr->user->realhost, sptr->user->virthost, 1)); 
   sendto_one(sptr, ":%s MODE %s -h", sptr->name, sptr->name); 
   ClearHelpOp(sptr); 
   sendto_one(sptr, ":%s NOTICE %s :*** Not: Helperlığınız Sona Ermiştir.", me.name, sptr->name); 
return 0; 
} 
 
static int Mod_Degisimi(aClient *cptr, aClient *sptr, aChannel *chptr, char *modebuf, char *parabuf, TS sendts, int samode) { 
   char *p, *OpAlanNick, *OpAlanNick2; 
   aClient *KullaniciTemp; 
 
   if (stricmp(chptr->chname,helpchan)) 
      return 0; 
 
   if (stricmp(sptr->name,"Chanserv")) 
      return 0; 
 
   if (!strcmp(modebuf,"+o")) { 
      if (!BadPtr(parabuf)) { 
         if ((KullaniciTemp = find_client(parabuf, NULL))) { 
            Helper_Yap(KullaniciTemp); 
            return 0; 
         } 
      } 
   } 
 
   // ircservices için. 
   if (!strcmp(modebuf,"+oa") || !strcmp(modebuf,"+oq")) { 
         OpAlanNick = strtoken(&p, parabuf, " "); 
         if (!BadPtr(OpAlanNick)) { 
         if ((KullaniciTemp = find_client(OpAlanNick, NULL))) { 
            Helper_Yap(KullaniciTemp); 
            return 0; 
         } 
      } 
   } 
 
   //anope için. 
   if (!strcmp(modebuf,"+ao") || !strcmp(modebuf,"+qo")) { 
      if (!strstr(parabuf," ")) { 
      return 0; 
      } 
      OpAlanNick = strtoken(&p, parabuf, " "); 
      OpAlanNick2 = strtoken(&p, NULL, " "); 
      if (!BadPtr(OpAlanNick2)) { 
         if ((KullaniciTemp = find_client(OpAlanNick2, NULL))) { 
            Helper_Yap(KullaniciTemp); 
            return 0; 
         } 
      } 
   } 
return 0; 
} 
 
static int K_Ayrildi(aClient *cptr, aClient *sptr, aChannel *chptr, char *comment) { 
   if (stricmp(chptr->chname,helpchan)) 
      return 0; 
   if (IsHelpOp(sptr)) { 
      Helper_Sil(sptr); 
   } 
return 0; 
}
 
Üst