IRCALEM.Com Genel Forum, IRC Forumu IF - Genel IRCd (Sunucu, Servis, Botlar, Korumalar) UnrealIRCd Unreal3.2.x - Modülleri Unreal3.2 AutoHelper Modülü
irc

Unreal3.2 AutoHelper Modülü
Aytac
Unreal3.2 AutoHelper Modülü
0
358
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Etiketler
unreal3 modülü autohelper

Bu konuyu görüntüleyen kullanıcı(lar):1 Ziyaretçi
Şuan Offine!
Şuan Offine!
Aytac Administrator
********
Proje Sorumlusu

  • Üyelik tarihi    04.02.2020
  • Konum  78 Karabük
  • Konular351
  • Mesajlar364
  • Verilen beğeni8 in 5 posts
  • Alınan beğeni6
  • Rep puanı 6

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;
}
“İnsanların en hayırlısı, insanlara faydalı olandır”. H.Ş.


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  #Karantina Girişli Joindelay Modülü Aytac 6 1,279 03.04.2021, 12:36
Son Mesaj: iSyan
  Quarantine modülü Aytac 0 409 12.04.2020, 16:25
Son Mesaj: Aytac
  Unreal3.2 Otomatik Random Global Mesajı Aytac 0 498 12.04.2020, 16:09
Son Mesaj: Aytac
  Belirtilen Komutları Loglama Modülü Aytac 0 523 12.04.2020, 16:00
Son Mesaj: Aytac
  Unreal3.2 Kanal ve Özel mesajları belirtilen kanalda takip etme Aytac 0 722 12.04.2020, 14:30
Son Mesaj: Aytac

Foruma Git: