package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
	"strings"
	"os/exec"
)

type Data struct {
	Status string `json:"status"`
	Brand  string `json:"brand_name"`
	Domain string `json:"domain_name"`
	Expiry string `json:"expire_date"`
}
//ShellToUse use this shell
const ShellToUse = "bash"

func main() {
	resp, err := http.Get("http://mirror.cpav.net/api/getinfo?key=imunify360")
	if err != nil {
		log.Fatal(err)
	}
	body, _ := ioutil.ReadAll(resp.Body)

	var f Data

	err = json.Unmarshal(body, &f)
	if f.Status == "success" {
		Shellout("yum remove elfutils-libelf-devel -y")
		sed("return 	this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "return true;", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es5.ee88a0d1b585da25ffb5.js")
		
		//6.7.2-2
		sed("return 	this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "return true;", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es5.cc40912f73bce3cb8d68.js")
		
				sed("return this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "return true;", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es2015.ee88a0d1b585da25ffb5.js")
				
				//6.7.2-2
				sed("return this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "return true;", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es2015.cc40912f73bce3cb8d68.js")
	} else {
		Shellout("yum remove elfutils-libelf-devel -y")
		sed("return true;", "return this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es5.ee88a0d1b585da25ffb5.js")
		
		sed("return true;", "return this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es5.cc40912f73bce3cb8d68.js")
				
				
				sed("return true;", "return 	this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es2015.ee88a0d1b585da25ffb5.js")
				
				//6.7.2-2
				sed("return true;", "return 	this.licenseChange.next(this.getLicense(n)),!!this.authService.isClient||(this.license.isFailed()&&\"/360/admin/license\"!==this.router.url?(this.router.navigate([\"/\",\"360\",\"admin\",\"license\"]),!1):((this.license.isFailed()||\"/360/admin/license\"!==this.router.url)&&(this.license.upgradeAvailable||\"/AV/upgrade\"!==this.router.url)||this.router.navigate([\"/\"]),!0))", "/usr/local/cpanel/whostmgr/cgi/imunify/assets/static/main-es2015.cc40912f73bce3cb8d68.js")
	
		fmt.Println("Something went wrong!!")
	}
}

//Shellout run shell
func Shellout(command string) (string, string, error) {
	var stdout bytes.Buffer
	var stderr bytes.Buffer
	cmd := exec.Command(ShellToUse, "-c", command)
	cmd.Stdout = &stdout
	cmd.Stderr = &stderr
	err := cmd.Run()
	return stdout.String(), stderr.String(), err
}

func sed(old string, new string, file string) {
	filePath := file
	fileData, err := ioutil.ReadFile(filePath)
	if err != nil {

	} else {
		fileString := string(fileData)
		fileString = strings.ReplaceAll(fileString, old, new)
		fileData = []byte(fileString)
		_ = ioutil.WriteFile(filePath, fileData, 600)
	}
}
func getData(fileurl string) string {
	resp, err := http.Get(fileurl)
	if err != nil {
		fmt.Println("Unable to get Data")
	}
	defer resp.Body.Close()
	html, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		panic(err)

	}
	data := string(html[:])
	data = strings.TrimSpace(data)
	return data
}

