Search This Blog

Tuesday, December 11, 2018

Jenkins JSON API usage

<?php



class Jenkins
{

private $crumb_field;
private $crumb_value;

/**
* Undocumented check the jenkins url is active
*
* @return boolean
*/
function isActive()
{
$response = \Httpful\Request::get(JENKINS_URL . 'api/json/')
->expectsJson()
->authenticateWith(JENKINS_USER, JENKINS_PASS)
->send();

return isset($response->body->assignedLabels[0]->name);

}
function getVersion()
{

$response = \Httpful\Request::get(JENKINS_URL . 'api/json/')

->expectsJson()

->authenticateWith(JENKINS_USER, JENKINS_PASS)
->send();
}
/**
*
* getLastBuild information for the $jobName sent
* @param mixed $jobName - Valid job name
*/

function getLastBuildInfo($jobName)
{

$response = \Httpful\Request::get(JENKINS_URL . '/job/' . $jobName . '/lastBuild/api/json')
->expectsJson()
->authenticateWith(JENKINS_USER, JENKINS_PASS)
->send();
return $response->body;
}
/**
* get all available jobs from the Jenkins with basic information
*
* @return Object
*/
function getJobs()
{
$response = \Httpful\Request::get(JENKINS_URL . '/api/json?tree=jobs[name,color,url,description,buildable,inQueue,healthReport,lastStatbleBuild,lastUnstableBuild,lastSuccessfulBuild,lastFailedBuild]')
->expectsJson()
->authenticateWith(JENKINS_USER, JENKINS_PASS)
->send();
return $response->body;
}
/**
* get config.xml for the jobname passed from Jenkins URL
*
* @param [string] $jobName
* @return Object
*/
function getJobConfig($jobName)
{

$response = \Httpful\Request::get(JENKINS_URL . 'job/' . $jobName . '/config.xml')
->expectsXml()
->authenticateWith(JENKINS_USER, JENKINS_PASS)
->send();
return $response;
}
/**
* trigger a job
*
* @param [string] $jobName
* @return Object
*/
function buildJob($jobName)
{
if ($this->crumb_field == '' || $this->crumb_value == '') {
$this->getCrumb();
}
$response = \Httpful\Request::post(JENKINS_URL .'job/'.$jobName .'/build')
->addHeader($this->crumb_field, $this->crumb_value)
->authenticateWith(JENKINS_USER, JENKINS_PASS)
->send();
return $response;
}
/**
* Get crumb information
*
* @return void
*/
function getCrumb()
{
$response = \Httpful\Request::get(JENKINS_URL . 'crumbIssuer/api/json')
->authenticateWith(JENKINS_USER, JENKINS_PASS)
->expectsJson()
->send();
$this->crumb_field = $response->body->crumbRequestField;
$this->crumb_value = $response->body->crumb;
}
/**
* Copy job to a new name
*
* @param [type] $from - Jobname
* @param [type] $to - Jobname
* @return Object
*/
function createJob($from, $to)
{

if ($this->crumb_field == '' || $this->crumb_value == '') {
$this->getCrumb();
}
$response = \Httpful\Request::post(JENKINS_URL . 'createItem?name=' . $to . '&from=' . $from . '&mode=copy')
->addHeader($this->crumb_field, $this->crumb_value)

->authenticateWith(JENKINS_USER, JENKINS_PASS)
->send();
return $response;
}

}

Wednesday, August 10, 2016

Cloudflare 522 ERROR - Nginx - Fail2Ban



In my case I was using Ubuntu 16.04 with Fail2ban installed as if fail2ban takes the ips from nginx access log, Which has repeated cloudflare ips listed on the file (As if Cloudflare used as reverse proxy). Fail2Ban started block Cloudflare ips 

The solution would be logging the original ips of the request on the access file instead of Cloudflare ip

First check your Nginx has "ngx_http_realip_module"
nginx -V

If Enabled add the ips below to a file under conf.d 

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 199.27.128.0/21;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;

# use any of the following two
real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;


CloudFlare ip might change so please check this link

Wednesday, August 3, 2016

nginx error - ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

If you get the following error 

This site can’t be reached
The webpage at https://yourdomain.com/ might be temporarily down or it may have moved permanently to a new web address.
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

Change your nginx conf as follows

server
{
    listen 443 ssl http2;
    server_name yourdomain.com;
    ...
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH';
    ...
}

Reference : CloudFlare 

Sunday, June 12, 2016

Remove Skype ads



  1. Exit Skype
  2. Open Internet Explorer
  3. Open Internet Options
  4. Go to Security and select Restricted sites
  5. Click Sites
  6. Add https://apps.skype.com/, click OK
  7. Go to General, click Delete, and click Delete again
  8. Open Skype, the blank space should be gone and there will be no ads

I don't know what the implications are and whether there any issues with other skype apps, but so far this is the only possible solution that I can think of."

Saturday, June 4, 2016

Find malicious or hacked file in linux

First find the outgoing connections with the following command

netstat -nputwN

Check the connections and find the connection which is trying to attack the other systems. For example PID 11009 in this scenario.

Use the following command to identify the list of files involved in the process execution

lsof -p 11009