How to use Jenkins to handle HTTP Request? - http

I'm new to Jenkins and I don't know if with it I can do what I want. I need to send a file from one point (in another PC) to an endpoint in a server where Jenkins exist, I believe the best way to send the file is with a POST Request because I can send metadata that could help me to process the file. The thing is I don't know if I can configure this endpoint with Jenkins so it could recieve the file or I have to use another thing to create this endpoint and later it should call Jenkins. I don't know if a Jenkins' Plugin could help me here or something.
What I was considering was maybe using Kafka to handle the requests (I believe it can do that) with a queue and it later could call Jenkins to execute the actions I really want with the file that arrived and the details that came in the metadata.
BTW, I'm using Ubuntu 20, but this should be able to run in Windows too, but for now I only want to test this in Ubuntu.
Also, if anyone could recomend me some software that is like Jenkins only to see other options. The main feature that I found in Jenkins that I want to use for now besides what I'm asking in this post is the capability of process the emails that arrives in an specific mail, this is done with a Plugin, the CI/CD features are welcome, tho, I haven't use them yet.
Thanks.

Related

How can I reuse a server-side TCP endpoint for multiple consumers?

I'm a beginner trying to understand TCP, and I'm using Rust. If I create a new listener and bind it to an address
let tcplistener = TcpListener::bind("127.0.0.1:55555").unwrap();
I can tcplistener.accept() new connections between 127.0.0.1:55555 and some other endpoint on the client.
In my case, tcplistener lives within an instance of a struct representing a plugin. Each plugin should be controllable from its own browser tab. There is one connection (endpoint-pair) per plugin, with one endpoint always being 127.0.0.1:55555. The plugins run in a single thread with non-blocking listeners and streams. I use websockets, but I'm not sure if this question is specific to websockets.
What I'm doing now is
instantiate plugin A
accept the first connection from a browser tab to plugin A
after that, assign the tcplistener field in plugin A to a newly created listener with arbitrary OS-assigned port
This seems to work; if I instantiate a new plugin B afterwards, I can create a listener bound to 127.0.0.1:55555 and accepting a connection. If I don't create a new listener with different address/port, then I get the "Address already in use" error.
This is obviously not a good solution since it occupies all the other ports for no reason. Is there a better way?
A comment said:
Why does each plugin have a TcpListener? Why not have one component with the listener, call accept, then hand off the returned TcpStream to each constructed plugin?
That does sound good, but where would that TcpListener be stored, and how does it hand off the streams? Possibilities I see for storing:
The host. I cannot modify the plugin host, I'm just a plugin author.
One dedicated plugin. The problem I see is that plugins can't access any information stored in another plugin, so I wouldn't know how to do that.
A separately running process. I could imagine running a server separately and let the plugins be clients. Users could connect their browser to the server, which somehow does the proxying to the plugin. Sounds reasonable, but the inconvenience here is that plugin users would have to install a server as a separate package. So I'd really like to avoid that. Although I suppose launching the server could be done automatically at plugin instantiation, maybe that's the way to go?
One workaround, if I understand all of your limitations correctly, is to use Option. Option is used for precisely the case of "something or not something".
Here, you could have an Option<TcpListener>. On a freshly-initialized plugin, this would be set to Some(...), and once accepted, would transition to None.
This does have a number of downsides:
There's a time period where there are no listeners.
You have to deal with the possibility of the listener being None.
You can't start a second plugin before the first one accepts something.
Some kind of parent-child relationship is probably better, or even limiting to a singleton plugin, if plausible.

Alfresco Error reporting via e-mail

Is there a way to set up Alfresco to send email to admins on each server error as in Python Django Error reporting via e-mail?
Thanks in advance for any hint.
The first thing I would say is that you need to really look in to the viability of using e-mails to help admins spot problems with servers. Sending an e-mail can be a heavy operation and as such, particularly with many repeated errors, can make an existing problem worse. And what about the cases where the ability to send e-mails goes down or a problem so severe happens that it simply cannot send e-mails?
For properly setting up reporting on your servers you might want to look at Logstash + Kibana:
http://alfresco.blog.redpill-linpro.com/2014/07/01/alfresco-logging-with-logstash-and-kibana-part-1-the-basics/
That being said, it should be possible to configure log4j to use an SMTP appender if that is the route you want to go down:
What is the proper way to configure SMTPAppender in log4j?
In Alfresco 4.2 you should need to add something such as the following to the log4j.properties in tomcat/webapps/alfresco/WEB_INF/classes/:
#CONFIGURE SMTP
log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.SMTPHost=mail.mydomain.com
log4j.appender.email.SMTPUsername=myuser#mydomain.com
log4j.appender.email.SMTPPassword=mypw
log4j.appender.email.From=myuser#mydomain.com
log4j.appender.email.BufferSize=1
log4j.appender.email.EvaluatorClass=TriggerLogEvent
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%m

QueueMetrics, qLoader, and Asterisk not talking correctly

I have 2 servers, one with QueueMetrics installed and the other with Asterisk and qLoader. Both of these servers are able to communicate with each other and pass data back and forth. The problem that I am running into is that when adding an agent to a queue, neither Queuemetrics or the Asterisk server is recognizing that the agent is being added. I can make a call into the queue and see it being offered to the queue in real-time in QM. When I try to add an agent to the queue, QM says that the agent is being added. When watching the real-time monitor after the agent is added, the agent just never shows up as logged in. I have checked the MySQL database as well and it never shows the agent as being logged in either. I am unsure at this point what is causing the issue, and whether it is that the agent isn't being add to MySQL because of QM or because the agent available isn't being sent to the Asterisk server.
Any help would be greatly appreciated.
i think you need read something about queues setup and check your setup. For example this book: http://cdn.oreilly.com/books/9780596510480.pdf
Unfortanly no way troubleshoot your install without see config&debug.
QueueMetrics uses two different channels to work with the server: it reads data from the queue_log through qloader (and that is working for you) and uses AMI plus a custom Asterisk dialplan to perform actions like logging-on agents.
You can test the AMI and whether the dialplan is included through the DbTester tool - see http://queuemetrics.com/manuals/QM_UserManual-chunked/ar01s20.html#DBTEST - note that you may need to edit the supplied dialplan to match the format of your channel names. Qm is very flexible, but you need to tell it how your environment is set-up.
Or just keep an Asterisk CLI open when trying to log in agents and see what happens.

Drupal Rules Scheduler sends out duplicate emails (Drupal 7 Views-Rules integration)

I am sending out a nightly email through rules scheduler, when I manually execute it sends out one email as it should, however when it runs on the schedule it sends me 10 duplicate emails. I've looked all over and can't seem to find any solution to the problem.
Thanks in advance for any suggestions
Use Job scheduler module. In this module you first insert the data in job_schedule and create a queue for each schedule . when crons run it start executing each queue and send mails then it delete its entry from the job_scheduler table. hence it will not send same mail again and again to the same person.. There is proper documentation in job_scheduler module in drupal7. Just go through it.
This sounds like a bug in the Rules module; it has its quirks. I see you have reported this issue in the Rules issue queue: http://drupal.org/node/1314916, which is what I was first going to suggest. So now I know your issue is for Rules 7.x-2.x dev integration with Views 7... both of which have more than a few bugs. I strongly suspect this issue has as much to do with Views as with Rules. (The 10x repetition seems unlikely to be a coincidence since 10 is a default value for results-per-page in Views, etc)
When you report an issue, it's helpful to include all pertinent information (Drupal version, steps to replicate, what's written to the log, etc). I'd personally suggest seeing if you can replicate your issue in a clean installation of Drupal with just the modules necessary to run your test. If you can replicate it that way, it's easier to provide enough information for the developers to identify the issue and resolve it. (e.g. use Devel generate to create some nodes and dummy users, then create a very simple view, e.g. just titles of the five most recent nodes, and use that view as the source for your email content. Does it send 5 copies? You may need to configure a localhost mail server to test this.

Qt IPC - Named Pipes

I'm developing a qt browser plugin and want to implement named pipes in it. I tried the basic fortune cookie example provided with the QLocalSocket and QLocalServer in an exe and it works fine. But when i try to implement a similar thing in the browser plugin, making a page where the plugin is present listen to a name (like a server) and another tab/window which tries to connect to this. But this doesn't seem to work. When i do a client->errorString() it prints out "Unknown Error".
Any help on what I'm doing wrong?
Thanks a ton in advance
Put debug output to check the following things:
Has your client asked for a connection?
Has the server received a request to setup a connection?
Has each entity created it's QLocalSocket instance?
What does QLocalSocket::state() say on both entities?
Possible causes:
Have both of your code paths received cpu-time (seperate threads in the same process?)?
Is there a deadlock?

Resources