Skip to content

Commit adc3153

Browse files
committed
- Added the Apiservice file for call the api's from the plugin
1 parent 390a2f4 commit adc3153

File tree

4 files changed

+95
-28
lines changed

4 files changed

+95
-28
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package io.jenkins.plugins;
2+
3+
import hudson.model.TaskListener;
4+
import net.sf.json.JSONObject;
5+
6+
import java.io.BufferedReader;
7+
import java.io.InputStreamReader;
8+
import java.io.OutputStream;
9+
import java.net.HttpURLConnection;
10+
import java.net.URL;
11+
12+
public class ApiService {
13+
14+
public static boolean triggerScan(String token, String targetFile, TaskListener listener) {
15+
try {
16+
URL url = new URL("https://devmiddleware.vigilnz.com/scan-targets/create");
17+
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
18+
19+
conn.setRequestMethod("POST");
20+
conn.setRequestProperty("Cookie", "__stripe_mid=8049620b-fc23-4fa0-bef6-2f457e454c507c1186; express.sid=s%3ASI1hdS10BJDFcC8Uh56X2kAS_5s_DyCA.Wrv4dKq4xj9ANv4B0EcTVtlCD96CRCK42XjjrAT2FqQ; cf_clearance=UnXvGmt.bZ52lZ.FJ78KsgODIH4Rq6f2_ocM0R8dEnw-1764075148-1.2.1.1-N.oIfJmGZpOHjfT23xgSNnJOOrCttLWtkNAC.Zth32AjfpBCn4RfCKLlRBINS3ES1AfmTiK3Mj8JK8FD8D5z9cC.1hQQJSUYrLBEJ.502c6SCnQPcui_le_Q2cFvlONWOaUdXnQje.RJceuOu1jXk7cNTd272Uc7hlbI5j6mYFaiBqPlrXfi3NJwnrsNWWZnvMNZvTV9Eo2q4LfKVW2RMKp8L3L5b5A.bw.4JID7DjM");
21+
conn.setRequestProperty("Content-Type", "application/json");
22+
conn.setDoOutput(true);
23+
24+
JSONObject json = new JSONObject();
25+
json.put("repositoryId", "69148c059c852f7dbff13d0c");
26+
json.put("scanType", "cve");
27+
json.put("repoName", "awesome-go");
28+
json.put("gitRepoUrl", "https://github.com/avelino/awesome-go.git");
29+
json.put("organization", "Go Projects");
30+
json.put("language", "unknown");
31+
json.put("status", "active");
32+
33+
String body = json.toString();
34+
35+
listener.getLogger().println("API URL: " + conn.getURL());
36+
listener.getLogger().println("Method: " + conn.getRequestMethod());
37+
listener.getLogger().println("Headers: Content-Type=" + conn.getRequestProperty("Content-Type"));
38+
listener.getLogger().println("Cookies: " + conn.getRequestProperty("Cookie"));
39+
listener.getLogger().println("Request Body: " + body);
40+
41+
listener.getLogger().println("API Run : " + conn);
42+
try (OutputStream os = conn.getOutputStream()) {
43+
os.write(body.getBytes());
44+
}
45+
46+
int responseCode = conn.getResponseCode();
47+
listener.getLogger().println("API Response Code: " + responseCode);
48+
49+
// Print the response to output
50+
try (BufferedReader reader = new BufferedReader(new InputStreamReader(responseCode >= 400 ? conn.getErrorStream() : conn.getInputStream()))) {
51+
52+
StringBuilder response = new StringBuilder();
53+
String line;
54+
while ((line = reader.readLine()) != null) {
55+
response.append(line);
56+
}
57+
listener.getLogger().println("API Response Body: " + response.toString());
58+
}
59+
60+
return responseCode == 200;
61+
62+
} catch (Exception e) {
63+
listener.getLogger().println("API Error: " + e.getMessage());
64+
return false;
65+
}
66+
}
67+
68+
}

src/main/java/io/jenkins/plugins/PipelineStepExecution.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,7 @@ public PipelineStepExecution(PipelineStep step, StepContext context) {
1616

1717
@Override
1818
public boolean start() throws Exception {
19-
// getContext().get(TaskListener.class)
20-
// .getLogger()
21-
// .println("Option1: " + step.getToken() + ", Option2: " + step.getTargetFile());
22-
// // Add your custom logic here
23-
// getContext().onSuccess(null);
24-
// return true;
19+
2520
TaskListener listener = getContext().get(TaskListener.class);
2621
Run<?, ?> run = getContext().get(Run.class);
2722
TokenCredentials creds =
@@ -30,12 +25,19 @@ public boolean start() throws Exception {
3025
TokenCredentials.class,
3126
run
3227
);
33-
listener.getLogger().println("Credentials : " + creds);
28+
listener.getLogger().println("------ Pipeline Method ------");
3429

3530
if (creds != null) {
3631
listener.getLogger().println("Token ID: " + creds.getTokenId());
3732
listener.getLogger().println("Description: " + creds.getTokenDescription());
38-
listener.getLogger().println("Token Value: " + creds.getToken().getPlainText());
33+
34+
String token = creds.getToken().getPlainText();
35+
boolean result = ApiService.triggerScan(token, step.getTargetFile(), listener);
36+
37+
if (!result) {
38+
listener.error("Scan failed");
39+
return false;
40+
}
3941
} else {
4042
listener.getLogger().println("No Vigilnz Token credential found");
4143
}

src/main/java/io/jenkins/plugins/SecurityCheckBuilder.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,20 @@ public String getTargetFile() {
4141

4242
// this function trigger when user click the build button
4343
@Override
44-
public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener)
45-
throws InterruptedException, IOException {
44+
public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException {
45+
46+
listener.getLogger().println("------ Freestyle Method ------");
47+
4648
String tokenText = token.getPlainText(); // actual value
4749
listener.getLogger().println("Your Token from Plugin: " + tokenText);
4850
listener.getLogger().println("Your Target File : " + targetFile);
51+
boolean result = ApiService.triggerScan(tokenText, targetFile, listener);
52+
53+
if (!result) {
54+
listener.error("Scan failed");
55+
return false;
56+
}
57+
4958
return true;
5059
}
5160

@@ -60,12 +69,12 @@ public String getDisplayName() {
6069
public ListBoxModel doFillTokenItems(@AncestorInPath Item project) {
6170
ListBoxModel items = new ListBoxModel();
6271

63-
for (TokenCredentials c : CredentialsProvider.lookupCredentials(
64-
TokenCredentials.class,
65-
project,
66-
ACL.SYSTEM,
67-
Collections.emptyList())) {
68-
items.add(c.getTokenDescription(), c.getId());
72+
for (TokenCredentials c : CredentialsProvider.lookupCredentials(TokenCredentials.class, project, ACL.SYSTEM, Collections.emptyList())) {
73+
String label = c.getTokenDescription();
74+
if (label == null || label.isEmpty()) {
75+
label = c.getId();
76+
}
77+
items.add(label, c.getId());
6978
}
7079
return items;
7180
}

src/main/resources/io/jenkins/plugins/SecurityCheckBuilder/config.jelly

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
11
<?jelly escape-by-default='true'?>
22
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form" xmlns:c="/lib/credentials">
33

4-
<!-- <f:entry title="Token" field="token">-->
5-
<!-- <div style="display:flex;gap:8px;">-->
6-
<!-- <div style="flex:1 1 0;">-->
7-
<!-- <f:password/>-->
8-
<!-- </div>-->
9-
<!-- &lt;!&ndash; NORMAL BUTTON (does NOT submit the job form) &ndash;&gt;-->
10-
<!-- <button type="button" class="jenkins-button" onclick="showTokenOptions()">-->
11-
<!-- + Add-->
12-
<!-- </button>-->
13-
<!-- </div>-->
14-
<!-- </f:entry>-->
15-
164
<f:entry title="Token" field="token">
175
<c:select/>
186
</f:entry>

0 commit comments

Comments
 (0)