static uint8* xf_cliprdr_process_requested_text(uint8* data, int* size) { uint8* outbuf; outbuf = lf2crlf(data, size); return outbuf; }
static BYTE* xf_cliprdr_process_requested_text(BYTE* data, int* size) { BYTE* outbuf; outbuf = lf2crlf(data, size); return outbuf; }
static BYTE* xf_cliprdr_process_requested_unicodetext(BYTE* data, int* size) { char* inbuf; WCHAR* outbuf = NULL; int out_size; inbuf = (char*) lf2crlf(data, size); out_size = ConvertToUnicode(CP_UTF8, 0, inbuf, -1, &outbuf, 0); free(inbuf); *size = (int) ((out_size + 1) * 2); return (BYTE*) outbuf; }
static BYTE* xf_cliprdr_process_requested_unicodetext(BYTE* data, int* size) { char* inbuf; WCHAR* outbuf; int out_size; inbuf = (char*) lf2crlf(data, size); out_size = freerdp_AsciiToUnicodeAlloc(inbuf, &outbuf, 0); free(inbuf); *size = (int) ((out_size + 1) * 2); return (BYTE*) outbuf; }
static uint8* xf_cliprdr_process_requested_unicodetext(uint8* data, int* size) { uint8* inbuf; uint8* outbuf; size_t out_size; UNICONV* uniconv; inbuf = lf2crlf(data, size); uniconv = freerdp_uniconv_new(); outbuf = (uint8*) freerdp_uniconv_out(uniconv, (char*) inbuf, &out_size); freerdp_uniconv_free(uniconv); xfree(inbuf); *size = (int) out_size + 2; return outbuf; }
/* static */ int AmSipDialog::reply_error(const AmSipRequest& req, unsigned int code, const string& reason, const string& hdrs) { string reply_sock = "/tmp/" + AmSession::getNewId(); string code_str = int2str(code); int headers; string msg = ":t_reply:\n" + code_str + "\n" + reason + "\n" + req.key + "\n" + AmSession::getNewId() + "\n"; headers = 0; if(!hdrs.empty()) { msg += "\"" + lf2crlf(escape(hdrs)); headers = 1; } if (AmConfig::Signature.length()) { if (headers == 1) { msg += "Server: " + AmConfig::Signature + "\r\n"; } else { msg += "\"Server: " + AmConfig::Signature + "\r\n"; headers = 1; } } if (headers == 1) { msg += "\"\n"; } else { msg += ".\n"; } return AmServer::send_msg(msg,reply_sock, 500); }
void remmina_rdp_cliprdr_get_clipboard_data(RemminaProtocolWidget* gp, RemminaPluginRdpUiObject* ui) { RDP_CB_DATA_RESPONSE_EVENT* event; GtkClipboard* clipboard; UINT8* inbuf = NULL; UINT8* outbuf = NULL; GdkPixbuf *image = NULL; int size = 0; rfContext* rfi = GET_DATA(gp); clipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD); if (clipboard) { switch (ui->clipboard.format) { case CB_FORMAT_TEXT: case CB_FORMAT_UNICODETEXT: case CB_FORMAT_HTML: { inbuf = (UINT8*)gtk_clipboard_wait_for_text(clipboard); break; } case CB_FORMAT_PNG: case CB_FORMAT_JPEG: case CB_FORMAT_DIB: { image = gtk_clipboard_wait_for_image(clipboard); break; } } } /* No data received, send nothing */ if (inbuf != NULL || image != NULL) { switch (ui->clipboard.format) { case CB_FORMAT_TEXT: case CB_FORMAT_HTML: { size = strlen((char*)inbuf); outbuf = lf2crlf(inbuf, &size); break; } case CB_FORMAT_UNICODETEXT: { size = strlen((char*)inbuf); inbuf = lf2crlf(inbuf, &size); size = (ConvertToUnicode(CP_UTF8, 0, (CHAR*)inbuf, -1, (WCHAR**)&outbuf, 0) + 1) * 2; g_free(inbuf); break; } case CB_FORMAT_PNG: { gchar* data; gsize buffersize; gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "png", NULL, NULL); outbuf = (UINT8*) malloc(buffersize); memcpy(outbuf, data, buffersize); size = buffersize; g_object_unref(image); break; } case CB_FORMAT_JPEG: { gchar* data; gsize buffersize; gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "jpeg", NULL, NULL); outbuf = (UINT8*) malloc(buffersize); memcpy(outbuf, data, buffersize); size = buffersize; g_object_unref(image); break; } case CB_FORMAT_DIB: { gchar* data; gsize buffersize; gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "bmp", NULL, NULL); size = buffersize - 14; outbuf = (UINT8*) malloc(size); memcpy(outbuf, data + 14, size); g_object_unref(image); break; } } } event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(CliprdrChannel_Class, CliprdrChannel_DataResponse, NULL, NULL); event->data = outbuf; event->size = size; freerdp_channels_send_event(rfi->instance->context->channels, (wMessage*) event); }
string UnixSocketAdapter::serialize(const AmSipRequest& req, const string &rplAddr) { string msg; msg = ":t_uac_dlg:" #ifndef OpenSER + rplAddr + #endif "\n" + req.method + "\n" + req.r_uri + "\n"; if(req.next_hop.empty()) msg += "."; else msg += req.next_hop; msg += "\n"; #ifdef OpenSER msg += ".\n"; /* socket */ #endif string extraHdrs; extraHdrs += req.from; extraHdrs += "\n"; extraHdrs += req.to; extraHdrs += "\n"; extraHdrs += "CSeq: " + int2str(req.cseq) + " " + req.method + "\n" + "Call-ID: " + req.callid + "\n"; if (! req.contact.empty()) extraHdrs += req.contact; if (! req.hdrs.empty()) { extraHdrs += req.hdrs; if (req.hdrs[req.hdrs.length() - 1] != '\n') extraHdrs += "\n"; } if(!req.route.empty()) extraHdrs += req.route; if(!req.body.empty()) extraHdrs += "Content-Type: " + req.content_type + "\n"; #ifdef OpenSER extraHdrs = "\"" + lf2crlf(escape(extraHdrs)) + "\"\n"; #endif string bodyFrame; #ifndef OpenSER bodyFrame = ".\n" // EoH + req.body + ".\n\n"; #else // is lf2crlf() needed?! (see function for replies) if (!req.body.empty()) bodyFrame = "\"" + req.body + "\"\n"; #endif msg += extraHdrs + bodyFrame; return msg; }
string UnixSocketAdapter::serialize(const AmSipReply &reply, const string &rplAddr) { string msg; msg = ":t_reply:" #ifndef OpenSER + rplAddr + #endif "\n"; msg += int2str(reply.code); msg += "\n"; msg += reply.reason; msg += "\n"; msg += reply.serKey; msg += "\n"; msg += reply.local_tag; msg += "\n"; string extraHdrs, bodyFrame; if (! reply.hdrs.empty()) extraHdrs += reply.hdrs; if (reply.code < 300) { if (! reply.contact.empty()) extraHdrs += reply.contact; if (! reply.body.empty()) extraHdrs += "Content-Type: " + reply.content_type + "\n"; #ifndef OpenSER bodyFrame += reply.body; bodyFrame += ".\n\n"; #else if (! reply.body.empty()) { // TODO: body already CRLF'ed? bodyFrame += "\"" + reply.body + "\"\n"; } #endif } #ifndef OpenSER else { bodyFrame = ".\n\n"; } extraHdrs += ".\n"; #endif #ifdef OpenSER if (extraHdrs.empty()) { extraHdrs = ".\n"; } else { extraHdrs = "\"" + lf2crlf(escape(extraHdrs)) + "\"\n"; } #endif msg += extraHdrs + bodyFrame; return msg; }
void remmina_rdp_cliprdr_get_clipboard_data(RemminaProtocolWidget* gp, RemminaPluginRdpUiObject* ui) { TRACE_CALL(__func__); GtkClipboard* gtkClipboard; UINT8* inbuf = NULL; UINT8* outbuf = NULL; GdkPixbuf *image = NULL; int size = 0; rfContext* rfi = GET_PLUGIN_DATA(gp); RemminaPluginRdpEvent rdp_event = { 0 }; CLIPRDR_FORMAT_DATA_RESPONSE* pFormatDataResponse; gtkClipboard = gtk_widget_get_clipboard(rfi->drawing_area, GDK_SELECTION_CLIPBOARD); if (gtkClipboard) { switch (ui->clipboard.format) { case CF_TEXT: case CF_UNICODETEXT: case CB_FORMAT_HTML: { inbuf = (UINT8*)gtk_clipboard_wait_for_text(gtkClipboard); break; } case CB_FORMAT_PNG: case CB_FORMAT_JPEG: case CF_DIB: case CF_DIBV5: { image = gtk_clipboard_wait_for_image(gtkClipboard); break; } } } /* No data received, send nothing */ if (inbuf != NULL || image != NULL) { switch (ui->clipboard.format) { case CF_TEXT: case CB_FORMAT_HTML: { size = strlen((char*)inbuf); outbuf = lf2crlf(inbuf, &size); break; } case CF_UNICODETEXT: { size = strlen((char*)inbuf); inbuf = lf2crlf(inbuf, &size); size = (ConvertToUnicode(CP_UTF8, 0, (CHAR*)inbuf, -1, (WCHAR**)&outbuf, 0) ) * sizeof(WCHAR); g_free(inbuf); break; } case CB_FORMAT_PNG: { gchar* data; gsize buffersize; gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "png", NULL, NULL); outbuf = (UINT8*)malloc(buffersize); memcpy(outbuf, data, buffersize); size = buffersize; g_object_unref(image); break; } case CB_FORMAT_JPEG: { gchar* data; gsize buffersize; gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "jpeg", NULL, NULL); outbuf = (UINT8*)malloc(buffersize); memcpy(outbuf, data, buffersize); size = buffersize; g_object_unref(image); break; } case CF_DIB: case CF_DIBV5: { gchar* data; gsize buffersize; gdk_pixbuf_save_to_buffer(image, &data, &buffersize, "bmp", NULL, NULL); size = buffersize - 14; outbuf = (UINT8*)malloc(size); memcpy(outbuf, data + 14, size); g_object_unref(image); break; } } } pFormatDataResponse = (CLIPRDR_FORMAT_DATA_RESPONSE*)malloc(sizeof(CLIPRDR_FORMAT_DATA_RESPONSE)); if (!pFormatDataResponse) { if (outbuf) free(outbuf); return; } ZeroMemory(pFormatDataResponse, sizeof(CLIPRDR_FORMAT_DATA_RESPONSE)); rdp_event.type = REMMINA_RDP_EVENT_TYPE_CLIPBOARD_SEND_CLIENT_FORMAT_DATA_RESPONSE; rdp_event.clipboard_formatdataresponse.pFormatDataResponse = pFormatDataResponse; pFormatDataResponse->msgFlags = CB_RESPONSE_OK; pFormatDataResponse->dataLen = size; pFormatDataResponse->requestedFormatData = outbuf; remmina_rdp_event_event_push(gp, &rdp_event); }
int AmSipDialog::sendRequest(const string& method, const string& content_type, const string& body, const string& hdrs) { string msg,ser_cmd; string m_hdrs = hdrs; if(hdl) hdl->onSendRequest(method,content_type,body,m_hdrs,cseq); msg = ":t_uac_dlg:\n" + method + "\n" + remote_uri + "\n"; if(next_hop.empty()) msg += "."; else msg += next_hop; msg += "\n"; msg += ".\n"; /* socket */ msg += "\"From: " + escape(local_party); if(!local_tag.empty()) msg += ";tag=" + local_tag; msg += "\n"; msg += "To: " + escape(remote_party); if(!remote_tag.empty()) msg += ";tag=" + remote_tag; msg += "\n"; msg += "CSeq: " + int2str(cseq) + " " + method + "\n" + "Call-ID: " + callid + "\n"; if((method!="BYE")&&(method!="CANCEL")) msg += lf2crlf(escape(getContactHdr())); if(!m_hdrs.empty()){ msg += lf2crlf(escape(m_hdrs)); if(m_hdrs[m_hdrs.length()-1] != '\n') msg += "\r\n"; } if(!route.empty()) msg += lf2crlf(getRoute()); if(!body.empty()) msg += "Content-Type: " + content_type + "\r\n"; msg += "Max-Forwards: " MAX_FORWARDS "\r\n"; if (AmConfig::Signature.length()) msg += "User-Agent: " + AmConfig::Signature + "\r\n"; msg += "\"\n"; if (!body.empty()) msg += "\"" + lf2crlf(body) + "\"\n"; if (AmServer::send_msg_replyhandler(msg)) return -1; uac_trans[cseq] = AmSipTransaction(method,cseq); // increment for next request cseq++; return 0; }
int AmSipDialog::reply(const AmSipRequest& req, unsigned int code, const string& reason, const string& content_type, const string& body, const string& hdrs) { string m_hdrs = hdrs; int headers; if(hdl) hdl->onSendReply(req,code,reason, content_type,body,m_hdrs); string reply_sock = "/tmp/" + AmSession::getNewId(); string code_str = int2str(code); string msg = ":t_reply:\n"; msg += code_str; msg += "\n"; msg += reason; msg += "\n"; msg += req.key; msg += "\n"; msg += local_tag; msg += "\n"; headers = 0; if(!m_hdrs.empty()) { msg += "\"" + lf2crlf(escape(m_hdrs)); headers = 1; } if ((req.method!="CANCEL")&& !((req.method=="BYE")&&(code<300))) { if (headers == 1) { msg += lf2crlf(escape(getContactHdr())); } else { msg += "\"" + lf2crlf(escape(getContactHdr())); headers = 1; } } if(!body.empty()) { if (headers == 1) { msg += "Content-Type: " + content_type + "\r\n"; } else { msg += "\"Content-Type: " + content_type + "\r\n"; headers = 1; } } if (AmConfig::Signature.length()) { if (headers == 1) { msg += "Server: " + AmConfig::Signature + "\r\n"; } else { msg += "\"Server: " + AmConfig::Signature + "\r\n"; headers = 1; } } if (headers == 1) { msg += "\"\n"; } else { msg += ".\n"; } if(!body.empty()) msg += "\"" + body + "\"\n"; if(updateStatusReply(req,code)) return -1; return AmServer::send_msg(msg,reply_sock, 500); }
void orcqrencode(char *ctx) { int version; int level; int hint; int size; int margin; int i; int doEncodeStructured; char buf[MAX_DATA_SIZE]; char buf2[MAX_DATA_SIZE]; char qrfile[SIZE_QRFILE]; char qrfile_suffix[SIZE_QRFILE + 10]; char *p; QRcode *code; QRcode_List *head, *entry; OPENLOG; if((p = strchr(CTX(ctx, OFFSET_INFILE), ' ')) != NULL) *p = '\0'; if((p = strchr(CTX(ctx, OFFSET_QRFILE), ' ')) != NULL) *p = '\0'; memset(CTX(ctx, OFFSET_RET_CODE), QRENCODE_OK, SIZE_RET_CODE); if(euc2sjis(CTX(ctx, OFFSET_INFILE), buf) != 0){ memset(CTX(ctx, OFFSET_RET_CODE), CHAR_CONV_ERROR, SIZE_RET_CODE); return; } hint = ctx_string2int(ctx, OFFSET_HINT, SIZE_HINT); if (hint < 2) { if(parse_csv(buf, buf2) !=0){ memset(CTX(ctx, OFFSET_RET_CODE), KANA_CONV_ERROR, SIZE_RET_CODE); return; } } else { lf2crlf(buf,buf2); } snprintf(qrfile, SIZE_QRFILE, "%s", CTX(ctx, OFFSET_QRFILE)); version = ctx_string2int(ctx, OFFSET_VERSION, SIZE_VERSION); if(version <= 0 || version > 40){ memset(CTX(ctx, OFFSET_RET_CODE), PARAM_ERROR, SIZE_RET_CODE); return; } switch(*CTX(ctx, OFFSET_LEVEL)){ case 'L': level = QR_ECLEVEL_L; break; case 'M': level = QR_ECLEVEL_M; break; case 'Q': level = QR_ECLEVEL_Q; break; case 'H': level = QR_ECLEVEL_H; break; default: level = QR_ECLEVEL_L; } p = strrchr(qrfile, '.'); if(p != NULL)*p = '\0'; doEncodeStructured = ctx_string2int(ctx, OFFSET_STRUCTURED, SIZE_STRUCTURED); hint = (hint % 2) == 0 ? QR_MODE_KANJI : QR_MODE_8; size = ctx_string2int(ctx, OFFSET_PIXEL, SIZE_PIXEL); margin = ctx_string2int(ctx, OFFSET_MARGIN, SIZE_MARGIN); code = QRcode_encodeString(buf2, version, level, hint, 1); if (code != NULL) { if (code->version <= version) { snprintf(qrfile_suffix, sizeof(qrfile_suffix), "%s_%02d.png", qrfile, 1); if(writePNG(code, qrfile_suffix, size, margin) != 0){ memset(CTX(ctx, OFFSET_RET_CODE), WRITE_PNG_ERROR, SIZE_RET_CODE); QRcode_free(code); return; } SYSLOG("write single image"); sprintf(buf, "%02d" , code->version); memcpy(CTX(ctx, OFFSET_RET_VERSION), buf, SIZE_RET_VERSION); sprintf(buf, "%02d" , 1); memcpy(CTX(ctx, OFFSET_RET_SYMBOLS), "01", SIZE_RET_SYMBOLS); QRcode_free(code); return; } QRcode_free(code); } if (doEncodeStructured) { head = QRcode_encodeStringStructured(buf2, version, level, hint ,1); if(head) { entry = head; i = 0; while(entry != NULL) { code = entry->code; snprintf(qrfile_suffix, sizeof(qrfile_suffix), "%s_%02d.png", qrfile, i + 1); if(writePNG(code, qrfile_suffix, size, margin) != 0){ memset(CTX(ctx, OFFSET_RET_CODE), WRITE_PNG_ERROR, SIZE_RET_CODE); break; } entry = entry->next; i++; } SYSLOG("write multi images"); QRcode_List_free(entry); } else { memset(CTX(ctx, OFFSET_RET_CODE), QRENCODE_ERROR, SIZE_RET_CODE); return; } sprintf(buf, "%02d" , head->code->version); memcpy(CTX(ctx, OFFSET_RET_VERSION), buf, SIZE_RET_VERSION); sprintf(buf, "%02d" , i); memcpy(CTX(ctx, OFFSET_RET_SYMBOLS), buf, SIZE_RET_SYMBOLS); QRcode_List_free(head); } #if 1 print_ctx(ctx); #endif SYSLOG("end"); return; }