Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.64 KB | None | 0 0
  1. void LoadConfig() {
  2.     FILE *file;
  3.     char asdf[512];
  4.     char *lnbreak, *tmp, *buf, *equsgn;
  5.     int blarg, curprof, i, i2, cmdi, round, round2;
  6.  
  7.     blarg = 0;
  8.     strcpy(asdf, dir);
  9.     strcat(asdf, "bnd.conf");
  10.     file = fopen(asdf, "r");
  11.     if (!file) {
  12.         printf("%s missing: aborting load\n", asdf);
  13.         exit(1);
  14.     }
  15.     do {
  16.         fgets(asdf, sizeof(asdf), file);
  17.         buf = skipws(asdf);
  18.         if (*buf != '#') {
  19.             lnbreak = buf;
  20.             while (*lnbreak != '\n' && *lnbreak != '\r' && *lnbreak)
  21.                 lnbreak++;
  22.             *lnbreak = 0;
  23.  
  24.             if (*(int *)buf == ' gfc') {
  25.                 buf += 4;
  26.                 if (*(int *)buf == 'niam') {
  27.                     buf = skipws(buf + 4);
  28.                     if (*buf == '{') {
  29.                         blarg = 1;
  30.                         round = 0;
  31.                     }
  32.                 } else if (*(int *)buf == 'forp') {
  33.                     buf += 4;
  34.                     if (*(int *)buf == ' eli') {
  35.                         buf += 4;
  36.                         tmp = buf;
  37.                         while (*tmp != ' ' && tmp != lnbreak)
  38.                             tmp++;
  39.                         *tmp++ = 0;
  40.                         curprof = atoi(buf);
  41.                         round2 = 0;
  42.                         if (curprof > 31)
  43.                             continue;
  44.                         if (curprof > numbots)
  45.                             numbots = curprof + 1;
  46.                         bot[curprof] = (LPBOT)malloc(sizeof(BOT));
  47.                         memset(bot[curprof], 0, sizeof(BOT));
  48.                         buf = skipws(tmp);
  49.                         if (*buf == '{')
  50.                             blarg = 2;
  51.                     }
  52.                 }
  53.             } else if (*buf == '}') {
  54.                 blarg = 0;
  55.             } else if (blarg == 1) {
  56.                 equsgn = strchr(buf, '=');
  57.                 if (!equsgn)
  58.                     continue;
  59.                 *equsgn++ = 0;
  60.                 i = round;
  61.                 i2 = 0;
  62.                 while (i2 != sizeof(maincfgstrs) / sizeof(char *)) {
  63.                     if (i == sizeof(maincfgstrs) / sizeof(char *))
  64.                         i = 0;
  65.                     if (!strcasecmp(buf, maincfgstrs[i])) {
  66.                         cmdi = i;
  67.                         goto donefor1;
  68.                     }
  69.                     i++;
  70.                     i2++;
  71.                 }
  72.                 cmdi = -1;
  73. donefor1:
  74.                 switch (cmdi) {
  75.                     case -1:
  76.                         printf("unrecognized config entry \'%s\', ignoring\n", buf);
  77.                         break;
  78.                     case CFG_SERVER:
  79.                         strncpy(server, equsgn, sizeof(server));
  80.                         break;
  81.                     case CFG_BNLSSERVER:
  82.                         strncpy(bnlsserver, equsgn, sizeof(bnlsserver));
  83.                         break;
  84.                     case CFG_HOME:
  85.                         strncpy(home, equsgn, sizeof(home));
  86.                         break;
  87.                     case CFG_OWNER:
  88.                         AddOwner(equsgn);
  89.                         break;
  90.                     case CFG_MASTERS:  
  91.                         AddMasters(equsgn);
  92.                         break;
  93.                     case CFG_USEBNLS:  
  94.                         if (*equsgn - '0')
  95.                             gstate |= GFS_USEBNLS;
  96.                         break;
  97.                     case CFG_FORCEPROXY:
  98.                         if (*equsgn - '0')
  99.                             gstate |= GFS_FORCEPROXY;
  100.                         break;
  101.                     case CFG_IPBAN:
  102.                         if (*equsgn - '0')
  103.                             gstate |= GFS_IPBAN;
  104.                         break;
  105.                     case CFG_WAR3VB:
  106.                         sscanf(equsgn, "%X", &verbyte);
  107.                         break;
  108.                     case CFG_HASH1:
  109.                     case CFG_HASH2:    
  110.                     case CFG_HASH3:
  111.                         strncpy(hashes[cmdi - CFG_HASH1], equsgn, sizeof(hashes[i]));
  112.                         break;
  113.                     case CFG_UPDATESITE:
  114.                         strncpy(updatesite, equsgn, sizeof(updatesite));
  115.                         break;
  116.                     case CFG_UPDATEFILE:
  117.                         strncpy(updateverfile, equsgn, sizeof(updateverfile));
  118.                         break;
  119.                     case CFG_CHECKUPDATES:
  120.                         if (*equsgn - '0')
  121.                             gstate |= GFS_CHECKUPDATES;
  122.                         break;
  123.                     case CFG_PROCESSPRIORITY:
  124.                         //There is no command for this since it could be set with
  125.                         //utilities such as renice and Windows Task Manager
  126.                         //This function could fail silently - check with ps ax
  127.                         if (*equsgn)
  128.                             SetProcessPriority(atoi(equsgn));
  129.                         break;
  130.                     case CFG_FLOODTICK:
  131.                         floodthresh_tick = atoi(equsgn);
  132.                         break;
  133.                     case CFG_FLOODNUMTICKS:
  134.                         floodthresh_numticks = atoi(equsgn);
  135.                         break;
  136.                     case CFG_FLOODOVER:
  137.                         floodthresh_over = atoi(equsgn);
  138.                 }
  139.                 round++;
  140.             } else if (blarg == 2) {
  141.                 equsgn = strchr(buf, '=');
  142.                 if (!equsgn)
  143.                     continue;
  144.                 *equsgn++ = 0;
  145.                 i = round2;
  146.                 i2 = 0;
  147.                 while (i2 != sizeof(profcfgstrs) / sizeof(char *)) {
  148.                     if (i == sizeof(profcfgstrs) / sizeof(char *))
  149.                         i = 0;
  150.                     if (!strcasecmp(buf, profcfgstrs[i])) {
  151.                         cmdi = i;
  152.                         goto donefor2;
  153.                     }
  154.                     i++;
  155.                     i2++;
  156.                 }
  157.                 cmdi = -1;
  158. donefor2:
  159.                 switch (cmdi) {
  160.                     case -1:                                       
  161.                         break;
  162.                     case CFG_USER:
  163.                         strncpy(bot[curprof]->username, equsgn, sizeof(bot[curprof]->username));
  164.                         break;
  165.                     case CFG_PASS:
  166.                         strncpy(bot[curprof]->password, equsgn, sizeof(bot[curprof]->password));
  167.                         break;
  168.                     case CFG_CDKEY:
  169.                         AddCDKeyToList(equsgn, curprof);
  170.                         defcdkeys++;
  171.                         break;
  172.                     case CFG_TRIGGER:
  173.                         if (*equsgn)
  174.                             bot[curprof]->trigger = *equsgn;
  175.                         break;
  176.                     case CFG_USEPROXY:
  177.                         if (*equsgn - '0')
  178.                             bot[curprof]->fstate |= BFS_USEPROXY;
  179.                         break;
  180.                     case CFG_AUTOCONNECT:
  181.                         if (*equsgn - '0')
  182.                             bot[curprof]->fstate |= BFS_AUTOCONN;
  183.                 }
  184.                 round2++;
  185.             }
  186.         }
  187.     } while (!feof(file));
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement