Mercurial > pidgin
comparison src/server.c @ 678:c72f58814e9f
[gaim-migrate @ 688]
permit/deny stuff moved to prefs; permit/deny stuff works *properly* now, permit/deny stuff much more logical in preferences.
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Tue, 15 Aug 2000 01:29:35 +0000 |
| parents | b3b5d9d18eea |
| children | 71b2477033cb |
comparison
equal
deleted
inserted
replaced
| 677:05f6f7dabb7e | 678:c72f58814e9f |
|---|---|
| 376 | 376 |
| 377 | 377 |
| 378 void serv_set_permit_deny() | 378 void serv_set_permit_deny() |
| 379 { | 379 { |
| 380 if (!USE_OSCAR) { | 380 if (!USE_OSCAR) { |
| 381 char buf[MSG_LEN]; | 381 char buf[MSG_LEN]; |
| 382 int at; | 382 int at; |
| 383 GList *list; | 383 int cnt; |
| 384 | 384 GList *list; |
| 385 if (permdeny == 1 || permdeny == 4) { | 385 GList *mem; |
| 386 g_snprintf(buf, sizeof(buf), "toc_add_deny"); | 386 struct buddy *b; |
| 387 sflap_send(buf, -1, TYPE_DATA); | 387 struct group *g; |
| 388 } else { | 388 |
| 389 g_snprintf(buf, sizeof(buf), "toc_add_permit"); | 389 switch (permdeny) { |
| 390 sflap_send(buf, -1, TYPE_DATA); | 390 case PERMIT_ALL: |
| 391 } | 391 /* toc_add_permit current_user to go to permit mode, |
| 392 | 392 toc_add_deny <none> to deny none */ |
| 393 | 393 sprintf(buf, "toc_add_deny %s", current_user->username); |
| 394 if (permit) { | 394 sflap_send(buf, -1, TYPE_DATA); |
| 395 at = g_snprintf(buf, sizeof(buf), "toc_add_permit"); | 395 break; |
| 396 list = permit; | 396 case PERMIT_NONE: |
| 397 while(list) { | 397 /* toc_add_deny current_user to go to deny mode, |
| 398 at += g_snprintf(&buf[at], sizeof(buf) - at, " %s", normalize(list->data)); | 398 toc_add_permit <none> to permit none */ |
| 399 list = list->next; | 399 sprintf(buf, "toc_add_permit %s", current_user->username); |
| 400 } | 400 sflap_send(buf, -1, TYPE_DATA); |
| 401 buf[at] = 0; | 401 break; |
| 402 sflap_send(buf, -1, TYPE_DATA); | 402 case PERMIT_SOME: |
| 403 } | 403 /* toc_add_permit <permit> */ |
| 404 | 404 /* if permit is empty this is the same as PERMIT_NONE */ |
| 405 if (deny) { | 405 if (permit) { |
| 406 at = g_snprintf(buf, sizeof(buf), "toc_add_deny"); | 406 at = g_snprintf(buf, sizeof(buf), "toc_add_permit"); |
| 407 list = deny; | 407 list = permit; |
| 408 while(list) { | 408 while (list) { |
| 409 at += g_snprintf(&buf[at], sizeof(buf) - at, " %s", normalize(list->data)); | 409 at += g_snprintf(&buf[at], sizeof(buf) - at, " %s", normalize(list->data)); |
| 410 list = list->next; | 410 list = list->next; |
| 411 } | 411 } |
| 412 buf[at] = 0; | 412 buf[at] = 0; /* is this necessary? */ |
| 413 sflap_send(buf, -1, TYPE_DATA); | 413 sflap_send(buf, -1, TYPE_DATA); |
| 414 } | 414 } else { |
| 415 } else { | 415 sprintf(buf, "toc_add_deny %s", current_user->username); |
| 416 /* oscar requires us to do everyone at once (?) */ | 416 sflap_send(buf, -1, TYPE_DATA); |
| 417 /* I think this code is OK now. */ | 417 sprintf(buf, "toc_add_permit"); |
| 418 char buf[BUF_LONG]; int at; GList *list, *grp, *bud; | 418 sflap_send(buf, -1, TYPE_DATA); |
| 419 if (permdeny == 3) { /* Permit Some : Only people on buddy list and | |
| 420 on permit list */ | |
| 421 struct group *g; struct buddy *b; | |
| 422 at = 0; list = permit; grp = groups; | |
| 423 debug_print("Setting permit list...\n"); | |
| 424 while (grp) { | |
| 425 g = (struct group *)grp->data; | |
| 426 bud = g->members; | |
| 427 while (bud) { | |
| 428 b = (struct buddy *)bud->data; | |
| 429 at += g_snprintf(&buf[at], sizeof(buf) - at, | |
| 430 "%s&", b->name); | |
| 431 bud = bud->next; | |
| 432 } | 419 } |
| 433 grp = grp->next; | 420 break; |
| 434 } | 421 case DENY_SOME: |
| 435 while (list) { | 422 /* toc_add_deny <deny> */ |
| 436 at += g_snprintf(&buf[at], sizeof(buf) - at, "%s&", | 423 /* if deny is empty this is the same as PERMIT_ALL */ |
| 437 (char *)list->data); | 424 if (deny) { |
| 438 list = list->next; | 425 at = g_snprintf(buf, sizeof(buf), "toc_add_deny"); |
| 439 } | 426 list = deny; |
| 440 aim_bos_changevisibility(gaim_sess, gaim_conn, | 427 while (list) { |
| 441 AIM_VISIBILITYCHANGE_PERMITADD, buf); | 428 at += g_snprintf(&buf[at], sizeof(buf) - at, " %s", normalize(list->data)); |
| 442 } else { /* Deny Some : Deny people on deny list */ | 429 list = list->next; |
| 443 list = deny; at = 0; | 430 } |
| 444 if (list == NULL) return; | 431 buf[at] = 0; /* is this necessary? */ |
| 445 while (list) { | 432 sflap_send(buf, -1, TYPE_DATA); |
| 446 at += g_snprintf(&buf[at], sizeof(buf) - at, "%s&", | 433 } else { |
| 447 (char *)list->data); | 434 sprintf(buf, "toc_add_permit %s", current_user->username); |
| 448 list = list->next; | 435 sflap_send(buf, -1, TYPE_DATA); |
| 449 } | 436 sprintf(buf, "toc_add_deny"); |
| 450 aim_bos_changevisibility(gaim_sess, gaim_conn, | 437 sflap_send(buf, -1, TYPE_DATA); |
| 451 AIM_VISIBILITYCHANGE_DENYADD, buf); | 438 } |
| 452 } | 439 break; |
| 440 case PERMIT_BUDDY: | |
| 441 /* toc_add_permit <bud> */ | |
| 442 /* if there are no buddies this is the same as PERMIT_NONE */ | |
| 443 at = g_snprintf(buf, sizeof(buf), "toc_add_permit"); | |
| 444 list = groups; | |
| 445 cnt = 0; | |
| 446 while (list) { | |
| 447 g = (struct group *)list->data; | |
| 448 mem = g->members; | |
| 449 while (mem) { | |
| 450 b = (struct buddy *)mem->data; | |
| 451 at += g_snprintf(&buf[at], sizeof(buf) - at, " %s", normalize(b->name)); | |
| 452 cnt++; | |
| 453 mem = mem->next; | |
| 454 } | |
| 455 list = list->next; | |
| 456 } | |
| 457 if (cnt) { | |
| 458 sflap_send(buf, -1, TYPE_DATA); | |
| 459 } else { | |
| 460 sprintf(buf, "toc_add_deny %s", current_user->username); | |
| 461 sflap_send(buf, -1, TYPE_DATA); | |
| 462 sprintf(buf, "toc_add_permit"); | |
| 463 sflap_send(buf, -1, TYPE_DATA); | |
| 464 } | |
| 465 } | |
| 466 } else { | |
| 467 int at; | |
| 468 GList *list; | |
| 469 GList *mem; | |
| 470 struct buddy *b; | |
| 471 struct group *g; | |
| 472 char buf[MSG_LEN]; | |
| 473 int cnt; | |
| 474 | |
| 475 switch (permdeny) { | |
| 476 /* aim_bos_changevisibility(gaim_sess, gaim_conn, type, list) */ | |
| 477 case PERMIT_ALL: | |
| 478 /* AIM_VISIBILITYCHANGE_DENYADD current_user */ | |
| 479 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 480 AIM_VISIBILITYCHANGE_DENYADD, current_user->username); | |
| 481 break; | |
| 482 case PERMIT_NONE: | |
| 483 /* AIM_VISIBILITY_PERMITADD current_user */ | |
| 484 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 485 AIM_VISIBILITYCHANGE_PERMITADD, current_user->username); | |
| 486 break; | |
| 487 case PERMIT_SOME: | |
| 488 /* PERMIT <permit> */ | |
| 489 /* if permit is empty this is the same as PERMIT_NONE */ | |
| 490 if (permit) { | |
| 491 at = 0; | |
| 492 list = permit; | |
| 493 while (list) { | |
| 494 at += g_snprintf(&buf[at], sizeof(buf) - at, "%s", list->data); | |
| 495 list = list->next; | |
| 496 if (list) | |
| 497 at += g_snprintf(&buf[at], sizeof(buf) - at, "&"); | |
| 498 } | |
| 499 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 500 AIM_VISIBILITYCHANGE_PERMITADD, buf); | |
| 501 } else { | |
| 502 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 503 AIM_VISIBILITYCHANGE_PERMITADD, current_user->username); | |
| 504 } | |
| 505 break; | |
| 506 case DENY_SOME: | |
| 507 /* DENY <deny> */ | |
| 508 /* if deny is empty this is the same as PERMIT_ALL */ | |
| 509 if (deny) { | |
| 510 at = 0; | |
| 511 list = permit; | |
| 512 while (list) { | |
| 513 at += g_snprintf(&buf[at], sizeof(buf) - at, "%s", list->data); | |
| 514 list = list->next; | |
| 515 if (list) | |
| 516 at += g_snprintf(&buf[at], sizeof(buf) - at, "&"); | |
| 517 } | |
| 518 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 519 AIM_VISIBILITYCHANGE_DENYADD, buf); | |
| 520 } else { | |
| 521 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 522 AIM_VISIBILITYCHANGE_DENYADD, current_user->username); | |
| 523 } | |
| 524 break; | |
| 525 case PERMIT_BUDDY: | |
| 526 /* PERMIT <bud> */ | |
| 527 /* if there are no buddies this is the same as PERMIT_NONE */ | |
| 528 at = 0; | |
| 529 list = groups; | |
| 530 cnt = 0; | |
| 531 while (list) { | |
| 532 g = (struct group *)list->data; | |
| 533 mem = g->members; | |
| 534 while (mem) { | |
| 535 b = (struct buddy *)mem->data; | |
| 536 if (at) | |
| 537 at += g_snprintf(&buf[at], sizeof(buf) - at, "&"); | |
| 538 at += g_snprintf(&buf[at], sizeof(buf) - at, "%s", b->name); | |
| 539 cnt++; | |
| 540 mem = mem->next; | |
| 541 } | |
| 542 list = list->next; | |
| 543 } | |
| 544 if (cnt) { | |
| 545 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 546 AIM_VISIBILITYCHANGE_PERMITADD, buf); | |
| 547 } else { | |
| 548 aim_bos_changevisibility(gaim_sess, gaim_conn, | |
| 549 AIM_VISIBILITYCHANGE_PERMITADD, current_user->username); | |
| 550 } | |
| 551 break; | |
| 552 } | |
| 453 } | 553 } |
| 454 } | 554 } |
| 455 | 555 |
| 456 void serv_set_idle(int time) | 556 void serv_set_idle(int time) |
| 457 { | 557 { |
