- Timestamp:
- 2011-10-21T03:00:54Z (13 years ago)
- Branches:
- master
- Children:
- e6b41b1
- Parents:
- 6a45181 (diff), aea22cd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
otr.c
r6a45181 r3864c08 278 278 e = otrl_privkey_read(irc->otr->us, s); 279 279 if(e && e!=enoent) { 280 irc_ usermsg(irc, "otr load: %s: %s", s, gcry_strerror(e));280 irc_rootmsg(irc, "otr load: %s: %s", s, gcry_strerror(e)); 281 281 } 282 282 g_snprintf(s, 511, "%s%s.otr_fprints", global.conf->configdir, irc->user->nick); 283 283 e = otrl_privkey_read_fingerprints(irc->otr->us, s, NULL, NULL); 284 284 if(e && e!=enoent) { 285 irc_ usermsg(irc, "otr load: %s: %s", s, gcry_strerror(e));285 irc_rootmsg(irc, "otr load: %s: %s", s, gcry_strerror(e)); 286 286 } 287 287 … … 291 291 } 292 292 if(kg) { 293 irc_ usermsg(irc, "Notice: "293 irc_rootmsg(irc, "Notice: " 294 294 "The accounts above do not have OTR encryption keys associated with them, yet. " 295 295 "These keys are now being generated in the background. " … … 309 309 e = otrl_privkey_write_fingerprints(irc->otr->us, s); 310 310 if(e) { 311 irc_ usermsg(irc, "otr save: %s: %s", s, gcry_strerror(e));311 irc_rootmsg(irc, "otr save: %s: %s", s, gcry_strerror(e)); 312 312 } 313 313 chmod(s, 0600); … … 348 348 k = otrl_privkey_find(irc->otr->us, a->user, a->prpl->name); 349 349 if(k) { 350 irc_ usermsg(irc, "otr: %s/%s ready", a->user, a->prpl->name);350 irc_rootmsg(irc, "otr: %s/%s ready", a->user, a->prpl->name); 351 351 return 0; 352 352 } if(keygen_in_progress(irc, a->user, a->prpl->name)) { 353 irc_ usermsg(irc, "otr: keygen for %s/%s already in progress", a->user, a->prpl->name);353 irc_rootmsg(irc, "otr: keygen for %s/%s already in progress", a->user, a->prpl->name); 354 354 return 0; 355 355 } else { 356 irc_ usermsg(irc, "otr: starting background keygen for %s/%s", a->user, a->prpl->name);356 irc_rootmsg(irc, "otr: starting background keygen for %s/%s", a->user, a->prpl->name); 357 357 otr_keygen(irc, a->user, a->prpl->name); 358 358 return 1; … … 365 365 char *newmsg = NULL; 366 366 OtrlTLV *tlvs = NULL; 367 char *colormsg;368 367 irc_t *irc = iu->irc; 369 368 struct im_connection *ic = iu->bu->ic; … … 385 384 } else if(!newmsg) { 386 385 /* this was a non-OTR message */ 387 return g_strdup(msg);386 return msg; 388 387 } else { 389 388 /* OTR has processed this message */ 390 389 ConnContext *context = otrl_context_find(irc->otr->us, iu->bu->handle, 391 390 ic->acc->user, ic->acc->prpl->name, 0, NULL, NULL, NULL); 391 392 /* we're done with the original msg, which will be caller-freed. */ 393 /* NB: must not change the newmsg pointer, since we free it. */ 394 msg = newmsg; 392 395 393 396 if(context && context->msgstate == OTRL_MSGSTATE_ENCRYPTED) { … … 397 400 !(ic->flags & OPT_DOES_HTML) && 398 401 set_getbool(&ic->bee->set, "strip_html")) { 399 strip_html( newmsg);402 strip_html(msg); 400 403 } 401 404 402 405 /* coloring */ 403 406 if(set_getbool(&ic->bee->set, "otr_color_encrypted")) { 404 /* color according to f'print trust */405 int color;407 int color; /* color according to f'print trust */ 408 char *pre="", *sep=""; /* optional parts */ 406 409 const char *trust = context->active_fingerprint->trust; 410 407 411 if(trust && trust[0] != '\0') 408 412 color=3; /* green */ … … 410 414 color=5; /* red */ 411 415 412 if(newmsg[0] == ',') { 413 /* could be a problem with the color code */ 414 /* insert a space between color spec and message */ 415 colormsg = g_strdup_printf("\x03%.2d %s\x0F", color, newmsg); 416 } else { 417 colormsg = g_strdup_printf("\x03%.2d%s\x0F", color, newmsg); 416 /* in a query window, keep "/me " uncolored at the beginning */ 417 if(g_strncasecmp(msg, "/me ", 4) == 0 418 && irc_user_msgdest(iu) == irc->user->nick) { 419 msg += 4; /* skip */ 420 pre = "/me "; 418 421 } 422 423 /* comma in first place could mess with the color code */ 424 if(msg[0] == ',') { 425 /* insert a space between color spec and message */ 426 sep = " "; 427 } 428 429 msg = g_strdup_printf("%s\x03%.2d%s%s\x0F", pre, 430 color, sep, msg); 419 431 } 420 } else { 421 colormsg = g_strdup(newmsg); 422 } 423 432 } 433 434 if(msg == newmsg) { 435 msg = g_strdup(newmsg); 436 } 424 437 otrl_message_free(newmsg); 425 return colormsg;438 return msg; 426 439 } 427 440 } … … 431 444 int st; 432 445 char *otrmsg = NULL; 446 char *emsg = msg; /* the message as we hand it to libotr */ 433 447 ConnContext *ctx = NULL; 434 448 irc_t *irc = iu->irc; … … 440 454 } 441 455 442 /* HTML encoding */443 /* consider OTR plaintext to be HTML if otr_does_html is set */444 if(set_getbool(&ic->bee->set, "otr_does_html") &&445 (g_strncasecmp(msg, "<html>", 6) != 0)) {446 msg = escape_html(msg);447 }448 449 st = otrl_message_sending(irc->otr->us, &otr_ops, ic,450 ic->acc->user, ic->acc->prpl->name, iu->bu->handle,451 msg, NULL, &otrmsg, NULL, NULL);452 if(st) {453 return NULL;454 }455 456 456 ctx = otrl_context_find(irc->otr->us, 457 457 iu->bu->handle, ic->acc->user, ic->acc->prpl->name, 458 458 1, NULL, NULL, NULL); 459 460 /* HTML encoding */ 461 /* consider OTR plaintext to be HTML if otr_does_html is set */ 462 if(ctx && ctx->msgstate == OTRL_MSGSTATE_ENCRYPTED && 463 set_getbool(&ic->bee->set, "otr_does_html") && 464 (g_strncasecmp(msg, "<html>", 6) != 0)) { 465 emsg = escape_html(msg); 466 } 467 468 st = otrl_message_sending(irc->otr->us, &otr_ops, ic, 469 ic->acc->user, ic->acc->prpl->name, iu->bu->handle, 470 emsg, NULL, &otrmsg, NULL, NULL); 471 if(emsg != msg) { 472 g_free(emsg); /* we're done with this one */ 473 } 474 if(st) { 475 return NULL; 476 } 459 477 460 478 if(otrmsg) { … … 504 522 505 523 if(!cmd->command) { 506 irc_ usermsg(irc, "%s: unknown subcommand \"%s\", see \x02help otr\x02",524 irc_rootmsg(irc, "%s: unknown subcommand \"%s\", see \x02help otr\x02", 507 525 args[0], args[1]); 508 526 return; … … 510 528 511 529 if(!args[cmd->required_parameters+1]) { 512 irc_ usermsg(irc, "%s %s: not enough arguments (%d req.)",530 irc_rootmsg(irc, "%s %s: not enough arguments (%d req.)", 513 531 args[0], args[1], cmd->required_parameters); 514 532 return; … … 582 600 if (strcmp(accountname, recipient) == 0) { 583 601 /* huh? injecting messages to myself? */ 584 irc_ usermsg(irc, "note to self: %s", message);602 irc_rootmsg(irc, "note to self: %s", message); 585 603 } else { 586 604 /* need to drop some consts here :-( */ … … 597 615 char *msg = g_strdup(message); 598 616 irc_t *irc = ic->bee->ui_data; 617 irc_user_t *u = peeruser(irc, username, protocol); 599 618 600 619 strip_html(msg); 601 irc_usermsg(irc, "otr: %s", msg); 620 if(u) { 621 /* display as a notice from this particular user */ 622 irc_usernotice(u, "%s", msg); 623 } else { 624 irc_rootmsg(irc, "[otr] %s", msg); 625 } 602 626 603 627 g_free(msg); … … 611 635 struct im_connection *ic = check_imc(opdata, accountname, protocol); 612 636 irc_t *irc = ic->bee->ui_data; 637 irc_user_t *u = peeruser(irc, username, protocol); 613 638 char hunam[45]; /* anybody looking? ;-) */ 614 639 615 640 otrl_privkey_hash_to_human(hunam, fingerprint); 616 irc_usermsg(irc, "new fingerprint for %s: %s", 617 peernick(irc, username, protocol), hunam); 641 if(u) { 642 irc_usernotice(u, "new fingerprint: %s", hunam); 643 } else { 644 /* this case shouldn't normally happen */ 645 irc_rootmsg(irc, "new fingerprint for %s/%s: %s", 646 username, protocol, hunam); 647 } 618 648 } 619 649 … … 644 674 if(!otr_update_modeflags(irc, u)) { 645 675 char *trust = u->flags & IRC_USER_OTR_TRUSTED ? "trusted" : "untrusted!"; 646 irc_user msg(irc, "conversation with %s is now off the record (%s)", u->nick, trust);676 irc_usernotice(u, "conversation is now off the record (%s)", trust); 647 677 } 648 678 } … … 664 694 otr_update_uflags(context, u); 665 695 if(!otr_update_modeflags(irc, u)) 666 irc_user msg(irc, "conversation with %s is now in the clear", u->nick);696 irc_usernotice(u, "conversation is now in cleartext"); 667 697 } 668 698 … … 685 715 if(!otr_update_modeflags(irc, u)) { 686 716 char *trust = u->flags & IRC_USER_OTR_TRUSTED ? "trusted" : "untrusted!"; 687 irc_user msg(irc, "otr connection with %s has been refreshed (%s)", u->nick, trust);717 irc_usernotice(u, "otr connection has been refreshed (%s)", trust); 688 718 } 689 719 } … … 729 759 u = irc_user_by_name(irc, args[1]); 730 760 if(!u || !u->bu || !u->bu->ic) { 731 irc_ usermsg(irc, "%s: unknown user", args[1]);761 irc_rootmsg(irc, "%s: unknown user", args[1]); 732 762 return; 733 763 } … … 754 784 u = irc_user_by_name(irc, args[1]); 755 785 if(!u || !u->bu || !u->bu->ic) { 756 irc_ usermsg(irc, "%s: unknown user", args[1]);786 irc_rootmsg(irc, "%s: unknown user", args[1]); 757 787 return; 758 788 } 759 789 if(!(u->bu->flags & BEE_USER_ONLINE)) { 760 irc_ usermsg(irc, "%s is offline", args[1]);790 irc_rootmsg(irc, "%s is offline", args[1]); 761 791 return; 762 792 } … … 785 815 u = irc_user_by_name(irc, args[1]); 786 816 if(!u || !u->bu || !u->bu->ic) { 787 irc_ usermsg(irc, "%s: unknown user", args[1]);817 irc_rootmsg(irc, "%s: unknown user", args[1]); 788 818 return; 789 819 } … … 792 822 u->bu->ic->acc->user, u->bu->ic->acc->prpl->name, 0, NULL, NULL, NULL); 793 823 if(!ctx) { 794 irc_ usermsg(irc, "%s: no otr context with user", args[1]);824 irc_rootmsg(irc, "%s: no otr context with user", args[1]); 795 825 return; 796 826 } … … 804 834 805 835 if(!*p || !*q) { 806 irc_ usermsg(irc, "failed: truncated fingerprint block %d", i+1);836 irc_rootmsg(irc, "failed: truncated fingerprint block %d", i+1); 807 837 return; 808 838 } … … 811 841 y = hexval(*q); 812 842 if(x<0) { 813 irc_ usermsg(irc, "failed: %d. hex digit of block %d out of range", 2*j+1, i+1);843 irc_rootmsg(irc, "failed: %d. hex digit of block %d out of range", 2*j+1, i+1); 814 844 return; 815 845 } 816 846 if(y<0) { 817 irc_ usermsg(irc, "failed: %d. hex digit of block %d out of range", 2*j+2, i+1);847 irc_rootmsg(irc, "failed: %d. hex digit of block %d out of range", 2*j+2, i+1); 818 848 return; 819 849 } … … 824 854 fp = otrl_context_find_fingerprint(ctx, raw, 0, NULL); 825 855 if(!fp) { 826 irc_ usermsg(irc, "failed: no such fingerprint for %s", args[1]);856 irc_rootmsg(irc, "failed: no such fingerprint for %s", args[1]); 827 857 } else { 828 858 char *trust = args[7] ? args[7] : "affirmed"; 829 859 otrl_context_set_trust(fp, trust); 830 irc_ usermsg(irc, "fingerprint match, trust set to \"%s\"", trust);860 irc_rootmsg(irc, "fingerprint match, trust set to \"%s\"", trust); 831 861 if(u->flags & IRC_USER_OTR_ENCRYPTED) 832 862 u->flags |= IRC_USER_OTR_TRUSTED; … … 856 886 ctx = otrl_context_find(irc->otr->us, handle, myhandle, protocol, 0, NULL, NULL, NULL); 857 887 if(!ctx) { 858 irc_ usermsg(irc, "no such context");888 irc_rootmsg(irc, "no such context"); 859 889 g_free(arg); 860 890 return; … … 863 893 irc_user_t *u = irc_user_by_name(irc, args[1]); 864 894 if(!u || !u->bu || !u->bu->ic) { 865 irc_ usermsg(irc, "%s: unknown user", args[1]);895 irc_rootmsg(irc, "%s: unknown user", args[1]); 866 896 g_free(arg); 867 897 return; … … 870 900 u->bu->ic->acc->prpl->name, 0, NULL, NULL, NULL); 871 901 if(!ctx) { 872 irc_ usermsg(irc, "no otr context with %s", args[1]);902 irc_rootmsg(irc, "no otr context with %s", args[1]); 873 903 g_free(arg); 874 904 return; … … 878 908 /* show how we resolved the (nick) argument, if we did */ 879 909 if(handle!=arg) { 880 irc_ usermsg(irc, "%s is %s/%s; we are %s/%s to them", args[1],910 irc_rootmsg(irc, "%s is %s/%s; we are %s/%s to them", args[1], 881 911 ctx->username, ctx->protocol, ctx->accountname, ctx->protocol); 882 912 } … … 893 923 n = atoi(args[1]); 894 924 if(n<0 || (!n && strcmp(args[1], "0"))) { 895 irc_ usermsg(irc, "%s: invalid account number", args[1]);925 irc_rootmsg(irc, "%s: invalid account number", args[1]); 896 926 return; 897 927 } … … 900 930 for(i=0; i<n && a; i++, a=a->next); 901 931 if(!a) { 902 irc_ usermsg(irc, "%s: no such account", args[1]);932 irc_rootmsg(irc, "%s: no such account", args[1]); 903 933 return; 904 934 } 905 935 906 936 if(keygen_in_progress(irc, a->user, a->prpl->name)) { 907 irc_ usermsg(irc, "keygen for account %d already in progress", n);937 irc_rootmsg(irc, "keygen for account %d already in progress", n); 908 938 return; 909 939 } … … 927 957 928 958 if(fp == fp->context->active_fingerprint) { 929 irc_ usermsg(irc, "that fingerprint is active, terminate otr connection first");959 irc_rootmsg(irc, "that fingerprint is active, terminate otr connection first"); 930 960 return; 931 961 } … … 943 973 944 974 if(ctx->msgstate == OTRL_MSGSTATE_ENCRYPTED) { 945 irc_ usermsg(irc, "active otr connection with %s, terminate it first",975 irc_rootmsg(irc, "active otr connection with %s, terminate it first", 946 976 peernick(irc, ctx->username, ctx->protocol)); 947 977 return; … … 975 1005 976 1006 if(!args[3]) { 977 irc_ usermsg(irc, "otr %s %s: not enough arguments (2 req.)", args[0], args[1]);1007 irc_rootmsg(irc, "otr %s %s: not enough arguments (2 req.)", args[0], args[1]); 978 1008 return; 979 1009 } … … 982 1012 u = irc_user_by_name(irc, args[2]); 983 1013 if(!u || !u->bu || !u->bu->ic) { 984 irc_ usermsg(irc, "%s: unknown user", args[2]);1014 irc_rootmsg(irc, "%s: unknown user", args[2]); 985 1015 return; 986 1016 } … … 989 1019 u->bu->ic->acc->prpl->name, 0, NULL, NULL, NULL); 990 1020 if(!ctx) { 991 irc_ usermsg(irc, "no otr context with %s", args[2]);1021 irc_rootmsg(irc, "no otr context with %s", args[2]); 992 1022 return; 993 1023 } … … 1000 1030 1001 1031 if(fp == ctx->active_fingerprint) { 1002 irc_ usermsg(irc, "that fingerprint is active, terminate otr connection first");1032 irc_rootmsg(irc, "that fingerprint is active, terminate otr connection first"); 1003 1033 return; 1004 1034 } … … 1025 1055 u = irc_user_by_name(irc, args[2]); 1026 1056 if(!u || !u->bu || !u->bu->ic) { 1027 irc_ usermsg(irc, "%s: unknown user", args[2]);1057 irc_rootmsg(irc, "%s: unknown user", args[2]); 1028 1058 return; 1029 1059 } … … 1032 1062 u->bu->ic->acc->prpl->name, 0, NULL, NULL, NULL); 1033 1063 if(!ctx) { 1034 irc_ usermsg(irc, "no otr context with %s", args[2]);1064 irc_rootmsg(irc, "no otr context with %s", args[2]); 1035 1065 return; 1036 1066 } 1037 1067 1038 1068 if(ctx->msgstate == OTRL_MSGSTATE_ENCRYPTED) { 1039 irc_ usermsg(irc, "active otr connection with %s, terminate it first", args[2]);1069 irc_rootmsg(irc, "active otr connection with %s, terminate it first", args[2]); 1040 1070 return; 1041 1071 } … … 1070 1100 else 1071 1101 { 1072 irc_ usermsg(irc, "otr %s: unknown subcommand \"%s\", see \x02help otr forget\x02",1102 irc_rootmsg(irc, "otr %s: unknown subcommand \"%s\", see \x02help otr forget\x02", 1073 1103 args[0], args[1]); 1074 1104 } … … 1096 1126 if(!context) { 1097 1127 /* huh? out of memory or what? */ 1098 irc_ usermsg(irc, "smp: failed to get otr context for %s", u->nick);1128 irc_rootmsg(irc, "smp: failed to get otr context for %s", u->nick); 1099 1129 otrl_message_abort_smp(us, ops, u->bu->ic, context); 1100 1130 otrl_sm_state_free(context->smstate); … … 1104 1134 1105 1135 if (context->smstate->sm_prog_state == OTRL_SMP_PROG_CHEATED) { 1106 irc_ usermsg(irc, "smp %s: opponent violated protocol, aborting",1136 irc_rootmsg(irc, "smp %s: opponent violated protocol, aborting", 1107 1137 u->nick); 1108 1138 otrl_message_abort_smp(us, ops, u->bu->ic, context); … … 1114 1144 if (tlv) { 1115 1145 if (nextMsg != OTRL_SMP_EXPECT1) { 1116 irc_ usermsg(irc, "smp %s: spurious SMP1Q received, aborting", u->nick);1146 irc_rootmsg(irc, "smp %s: spurious SMP1Q received, aborting", u->nick); 1117 1147 otrl_message_abort_smp(us, ops, u->bu->ic, context); 1118 1148 otrl_sm_state_free(context->smstate); 1119 1149 } else { 1120 1150 char *question = g_strndup((char *)tlv->data, tlv->len); 1121 irc_ usermsg(irc, "smp: initiated by %s with question: \x02\"%s\"\x02", u->nick,1151 irc_rootmsg(irc, "smp: initiated by %s with question: \x02\"%s\"\x02", u->nick, 1122 1152 question); 1123 irc_ usermsg(irc, "smp: respond with \x02otr smp %s <answer>\x02",1153 irc_rootmsg(irc, "smp: respond with \x02otr smp %s <answer>\x02", 1124 1154 u->nick); 1125 1155 g_free(question); … … 1130 1160 if (tlv) { 1131 1161 if (nextMsg != OTRL_SMP_EXPECT1) { 1132 irc_ usermsg(irc, "smp %s: spurious SMP1 received, aborting", u->nick);1162 irc_rootmsg(irc, "smp %s: spurious SMP1 received, aborting", u->nick); 1133 1163 otrl_message_abort_smp(us, ops, u->bu->ic, context); 1134 1164 otrl_sm_state_free(context->smstate); 1135 1165 } else { 1136 irc_ usermsg(irc, "smp: initiated by %s"1166 irc_rootmsg(irc, "smp: initiated by %s" 1137 1167 " - respond with \x02otr smp %s <secret>\x02", 1138 1168 u->nick, u->nick); … … 1143 1173 if (tlv) { 1144 1174 if (nextMsg != OTRL_SMP_EXPECT2) { 1145 irc_ usermsg(irc, "smp %s: spurious SMP2 received, aborting", u->nick);1175 irc_rootmsg(irc, "smp %s: spurious SMP2 received, aborting", u->nick); 1146 1176 otrl_message_abort_smp(us, ops, u->bu->ic, context); 1147 1177 otrl_sm_state_free(context->smstate); … … 1154 1184 if (tlv) { 1155 1185 if (nextMsg != OTRL_SMP_EXPECT3) { 1156 irc_ usermsg(irc, "smp %s: spurious SMP3 received, aborting", u->nick);1186 irc_rootmsg(irc, "smp %s: spurious SMP3 received, aborting", u->nick); 1157 1187 otrl_message_abort_smp(us, ops, u->bu->ic, context); 1158 1188 otrl_sm_state_free(context->smstate); … … 1161 1191 if(context->smstate->sm_prog_state == OTRL_SMP_PROG_SUCCEEDED) { 1162 1192 if(context->smstate->received_question) { 1163 irc_ usermsg(irc, "smp %s: correct answer, you are trusted",1193 irc_rootmsg(irc, "smp %s: correct answer, you are trusted", 1164 1194 u->nick); 1165 1195 } else { 1166 irc_ usermsg(irc, "smp %s: secrets proved equal, fingerprint trusted",1196 irc_rootmsg(irc, "smp %s: secrets proved equal, fingerprint trusted", 1167 1197 u->nick); 1168 1198 } 1169 1199 } else { 1170 1200 if(context->smstate->received_question) { 1171 irc_ usermsg(irc, "smp %s: wrong answer, you are not trusted",1201 irc_rootmsg(irc, "smp %s: wrong answer, you are not trusted", 1172 1202 u->nick); 1173 1203 } else { 1174 irc_ usermsg(irc, "smp %s: secrets did not match, fingerprint not trusted",1204 irc_rootmsg(irc, "smp %s: secrets did not match, fingerprint not trusted", 1175 1205 u->nick); 1176 1206 } … … 1183 1213 if (tlv) { 1184 1214 if (nextMsg != OTRL_SMP_EXPECT4) { 1185 irc_ usermsg(irc, "smp %s: spurious SMP4 received, aborting", u->nick);1215 irc_rootmsg(irc, "smp %s: spurious SMP4 received, aborting", u->nick); 1186 1216 otrl_message_abort_smp(us, ops, u->bu->ic, context); 1187 1217 otrl_sm_state_free(context->smstate); … … 1189 1219 /* SMP4 received, otrl_message_receiving will have set fp trust */ 1190 1220 if(context->smstate->sm_prog_state == OTRL_SMP_PROG_SUCCEEDED) { 1191 irc_ usermsg(irc, "smp %s: secrets proved equal, fingerprint trusted",1221 irc_rootmsg(irc, "smp %s: secrets proved equal, fingerprint trusted", 1192 1222 u->nick); 1193 1223 } else { 1194 irc_ usermsg(irc, "smp %s: secrets did not match, fingerprint not trusted",1224 irc_rootmsg(irc, "smp %s: secrets did not match, fingerprint not trusted", 1195 1225 u->nick); 1196 1226 } … … 1201 1231 tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP_ABORT); 1202 1232 if (tlv) { 1203 irc_ usermsg(irc, "smp: received abort from %s", u->nick);1233 irc_rootmsg(irc, "smp: received abort from %s", u->nick); 1204 1234 otrl_sm_state_free(context->smstate); 1205 1235 /* smp is in back in EXPECT1 */ … … 1216 1246 u = irc_user_by_name(irc, nick); 1217 1247 if(!u || !u->bu || !u->bu->ic) { 1218 irc_ usermsg(irc, "%s: unknown user", nick);1248 irc_rootmsg(irc, "%s: unknown user", nick); 1219 1249 return; 1220 1250 } 1221 1251 if(!(u->bu->flags & BEE_USER_ONLINE)) { 1222 irc_ usermsg(irc, "%s is offline", nick);1252 irc_rootmsg(irc, "%s is offline", nick); 1223 1253 return; 1224 1254 } … … 1227 1257 u->bu->ic->acc->user, u->bu->ic->acc->prpl->name, 0, NULL, NULL, NULL); 1228 1258 if(!ctx || ctx->msgstate != OTRL_MSGSTATE_ENCRYPTED) { 1229 irc_ usermsg(irc, "smp: otr inactive with %s, try \x02otr connect"1259 irc_rootmsg(irc, "smp: otr inactive with %s, try \x02otr connect" 1230 1260 " %s\x02", nick, nick); 1231 1261 return; … … 1242 1272 if(question) { 1243 1273 /* this was 'otr smpq', just initiate */ 1244 irc_ usermsg(irc, "smp: initiating with %s...", u->nick);1274 irc_rootmsg(irc, "smp: initiating with %s...", u->nick); 1245 1275 otrl_message_initiate_smp_q(irc->otr->us, &otr_ops, u->bu->ic, ctx, 1246 1276 question, (unsigned char *)secret, strlen(secret)); … … 1251 1281 is completed or aborted! */ 1252 1282 if(ctx->smstate->secret == NULL) { 1253 irc_ usermsg(irc, "smp: initiating with %s...", u->nick);1283 irc_rootmsg(irc, "smp: initiating with %s...", u->nick); 1254 1284 otrl_message_initiate_smp(irc->otr->us, &otr_ops, 1255 1285 u->bu->ic, ctx, (unsigned char *)secret, strlen(secret)); … … 1258 1288 /* if we're still in EXPECT1 but smstate is initialized, we must have 1259 1289 received the SMP1, so let's issue a response */ 1260 irc_ usermsg(irc, "smp: responding to %s...", u->nick);1290 irc_rootmsg(irc, "smp: responding to %s...", u->nick); 1261 1291 otrl_message_respond_smp(irc->otr->us, &otr_ops, 1262 1292 u->bu->ic, ctx, (unsigned char *)secret, strlen(secret)); … … 1373 1403 } 1374 1404 if(fp == ctx->active_fingerprint) { 1375 irc_ usermsg(irc, " \x02%s (%s)\x02", human, trust);1405 irc_rootmsg(irc, " \x02%s (%s)\x02", human, trust); 1376 1406 } else { 1377 irc_ usermsg(irc, " %s (%s)", human, trust);1407 irc_rootmsg(irc, " %s (%s)", human, trust); 1378 1408 } 1379 1409 } 1380 1410 if(count==0) 1381 irc_ usermsg(irc, " (none)");1411 irc_rootmsg(irc, " (none)"); 1382 1412 } 1383 1413 … … 1398 1428 1399 1429 if(n>=40) { 1400 irc_ usermsg(irc, "too many fingerprint digits given, expected at most 40");1430 irc_rootmsg(irc, "too many fingerprint digits given, expected at most 40"); 1401 1431 return NULL; 1402 1432 } … … 1405 1435 *(p++) = c; 1406 1436 } else { 1407 irc_ usermsg(irc, "invalid hex digit '%c' in block %d", args[i][j], i+1);1437 irc_rootmsg(irc, "invalid hex digit '%c' in block %d", args[i][j], i+1); 1408 1438 return NULL; 1409 1439 } … … 1426 1456 } 1427 1457 if(!fp) { 1428 irc_ usermsg(irc, "%s: no match", prefix);1458 irc_rootmsg(irc, "%s: no match", prefix); 1429 1459 return NULL; 1430 1460 } … … 1439 1469 } 1440 1470 if(fp2) { 1441 irc_ usermsg(irc, "%s: multiple matches", prefix);1471 irc_rootmsg(irc, "%s: multiple matches", prefix); 1442 1472 return NULL; 1443 1473 } … … 1462 1492 1463 1493 if(n>=40) { 1464 irc_ usermsg(irc, "too many fingerprint digits given, expected at most 40");1494 irc_rootmsg(irc, "too many fingerprint digits given, expected at most 40"); 1465 1495 return NULL; 1466 1496 } … … 1469 1499 *(p++) = c; 1470 1500 } else { 1471 irc_ usermsg(irc, "invalid hex digit '%c' in block %d", args[i][j], i+1);1501 irc_rootmsg(irc, "invalid hex digit '%c' in block %d", args[i][j], i+1); 1472 1502 return NULL; 1473 1503 } … … 1490 1520 } 1491 1521 if(!k) { 1492 irc_ usermsg(irc, "%s: no match", prefix);1522 irc_rootmsg(irc, "%s: no match", prefix); 1493 1523 return NULL; 1494 1524 } … … 1503 1533 } 1504 1534 if(k2) { 1505 irc_ usermsg(irc, "%s: multiple matches", prefix);1535 irc_rootmsg(irc, "%s: multiple matches", prefix); 1506 1536 return NULL; 1507 1537 } … … 1518 1548 1519 1549 /* list all privkeys (including ones being generated) */ 1520 irc_ usermsg(irc, "\x1fprivate keys:\x1f");1550 irc_rootmsg(irc, "\x1fprivate keys:\x1f"); 1521 1551 for(key=irc->otr->us->privkey_root; key; key=key->next) { 1522 1552 const char *hash; … … 1524 1554 switch(key->pubkey_type) { 1525 1555 case OTRL_PUBKEY_TYPE_DSA: 1526 irc_ usermsg(irc, " %s/%s - DSA", key->accountname, key->protocol);1556 irc_rootmsg(irc, " %s/%s - DSA", key->accountname, key->protocol); 1527 1557 break; 1528 1558 default: 1529 irc_ usermsg(irc, " %s/%s - type %d", key->accountname, key->protocol,1559 irc_rootmsg(irc, " %s/%s - type %d", key->accountname, key->protocol, 1530 1560 key->pubkey_type); 1531 1561 } … … 1536 1566 hash = otrl_privkey_fingerprint(irc->otr->us, human, key->accountname, key->protocol); 1537 1567 if(hash) /* should always succeed */ 1538 irc_ usermsg(irc, " %s", human);1568 irc_rootmsg(irc, " %s", human); 1539 1569 } 1540 1570 if(irc->otr->sent_accountname) { 1541 irc_ usermsg(irc, " %s/%s - DSA", irc->otr->sent_accountname,1571 irc_rootmsg(irc, " %s/%s - DSA", irc->otr->sent_accountname, 1542 1572 irc->otr->sent_protocol); 1543 irc_ usermsg(irc, " (being generated)");1573 irc_rootmsg(irc, " (being generated)"); 1544 1574 } 1545 1575 for(kg=irc->otr->todo; kg; kg=kg->next) { 1546 irc_ usermsg(irc, " %s/%s - DSA", kg->accountname, kg->protocol);1547 irc_ usermsg(irc, " (queued)");1576 irc_rootmsg(irc, " %s/%s - DSA", kg->accountname, kg->protocol); 1577 irc_rootmsg(irc, " (queued)"); 1548 1578 } 1549 1579 if(key == irc->otr->us->privkey_root && 1550 1580 !irc->otr->sent_accountname && 1551 1581 kg == irc->otr->todo) 1552 irc_ usermsg(irc, " (none)");1582 irc_rootmsg(irc, " (none)"); 1553 1583 1554 1584 /* list all contexts */ 1555 irc_ usermsg(irc, "%s", "");1556 irc_ usermsg(irc, "\x1f" "connection contexts:\x1f (bold=currently encrypted)");1585 irc_rootmsg(irc, "%s", ""); 1586 irc_rootmsg(irc, "\x1f" "connection contexts:\x1f (bold=currently encrypted)"); 1557 1587 for(ctx=irc->otr->us->context_root; ctx; ctx=ctx->next) {\ 1558 1588 irc_user_t *u; … … 1568 1598 1569 1599 if(ctx->msgstate == OTRL_MSGSTATE_ENCRYPTED) { 1570 irc_ usermsg(irc, " \x02%s\x02", userstring);1600 irc_rootmsg(irc, " \x02%s\x02", userstring); 1571 1601 } else { 1572 irc_ usermsg(irc, " %s", userstring);1602 irc_rootmsg(irc, " %s", userstring); 1573 1603 } 1574 1604 … … 1576 1606 } 1577 1607 if(ctx == irc->otr->us->context_root) 1578 irc_ usermsg(irc, " (none)");1608 irc_rootmsg(irc, " (none)"); 1579 1609 } 1580 1610 … … 1583 1613 switch(ctx->otr_offer) { 1584 1614 case OFFER_NOT: 1585 irc_ usermsg(irc, " otr offer status: none sent");1615 irc_rootmsg(irc, " otr offer status: none sent"); 1586 1616 break; 1587 1617 case OFFER_SENT: 1588 irc_ usermsg(irc, " otr offer status: awaiting reply");1618 irc_rootmsg(irc, " otr offer status: awaiting reply"); 1589 1619 break; 1590 1620 case OFFER_ACCEPTED: 1591 irc_ usermsg(irc, " otr offer status: accepted our offer");1621 irc_rootmsg(irc, " otr offer status: accepted our offer"); 1592 1622 break; 1593 1623 case OFFER_REJECTED: 1594 irc_ usermsg(irc, " otr offer status: ignored our offer");1624 irc_rootmsg(irc, " otr offer status: ignored our offer"); 1595 1625 break; 1596 1626 default: 1597 irc_ usermsg(irc, " otr offer status: %d", ctx->otr_offer);1627 irc_rootmsg(irc, " otr offer status: %d", ctx->otr_offer); 1598 1628 } 1599 1629 1600 1630 switch(ctx->msgstate) { 1601 1631 case OTRL_MSGSTATE_PLAINTEXT: 1602 irc_ usermsg(irc, " connection state: cleartext");1632 irc_rootmsg(irc, " connection state: cleartext"); 1603 1633 break; 1604 1634 case OTRL_MSGSTATE_ENCRYPTED: 1605 irc_ usermsg(irc, " connection state: encrypted (v%d)", ctx->protocol_version);1635 irc_rootmsg(irc, " connection state: encrypted (v%d)", ctx->protocol_version); 1606 1636 break; 1607 1637 case OTRL_MSGSTATE_FINISHED: 1608 irc_ usermsg(irc, " connection state: shut down");1638 irc_rootmsg(irc, " connection state: shut down"); 1609 1639 break; 1610 1640 default: 1611 irc_ usermsg(irc, " connection state: %d", ctx->msgstate);1612 } 1613 1614 irc_ usermsg(irc, " fingerprints: (bold=active)");1641 irc_rootmsg(irc, " connection state: %d", ctx->msgstate); 1642 } 1643 1644 irc_rootmsg(irc, " fingerprints: (bold=active)"); 1615 1645 show_fingerprints(irc, ctx); 1616 1646 } … … 1652 1682 1653 1683 if(pipe(to) < 0 || pipe(from) < 0) { 1654 irc_ usermsg(irc, "otr keygen: couldn't create pipe: %s", strerror(errno));1684 irc_rootmsg(irc, "otr keygen: couldn't create pipe: %s", strerror(errno)); 1655 1685 return; 1656 1686 } … … 1659 1689 fromf = fdopen(from[0], "r"); 1660 1690 if(!tof || !fromf) { 1661 irc_ usermsg(irc, "otr keygen: couldn't streamify pipe: %s", strerror(errno));1691 irc_rootmsg(irc, "otr keygen: couldn't streamify pipe: %s", strerror(errno)); 1662 1692 return; 1663 1693 } … … 1665 1695 p = fork(); 1666 1696 if(p<0) { 1667 irc_ usermsg(irc, "otr keygen: couldn't fork: %s", strerror(errno));1697 irc_rootmsg(irc, "otr keygen: couldn't fork: %s", strerror(errno)); 1668 1698 return; 1669 1699 } … … 1745 1775 myfgets(msg, 512, irc->otr->from); 1746 1776 1747 irc_ usermsg(irc, "%s", msg);1777 irc_rootmsg(irc, "%s", msg); 1748 1778 if(filename[0]) { 1749 1779 char *kf = g_strdup_printf("%s%s.otr_keys", global.conf->configdir, irc->user->nick); … … 1819 1849 1820 1850 if(keygen_in_progress(irc, acc->user, acc->prpl->name)) { 1821 irc_ usermsg(irc, "keygen for %s/%s already in progress",1851 irc_rootmsg(irc, "keygen for %s/%s already in progress", 1822 1852 acc->user, acc->prpl->name); 1823 1853 } else { 1824 irc_ usermsg(irc, "starting background keygen for %s/%s",1854 irc_rootmsg(irc, "starting background keygen for %s/%s", 1825 1855 acc->user, acc->prpl->name); 1826 irc_ usermsg(irc, "you will be notified when it completes");1856 irc_rootmsg(irc, "you will be notified when it completes"); 1827 1857 otr_keygen(irc, acc->user, acc->prpl->name); 1828 1858 } 1829 1859 } 1860 1861 /* vim: set noet ts=4 sw=4: */
Note: See TracChangeset
for help on using the changeset viewer.