mirror of
https://github.com/cp6/my-idlers.git
synced 2025-06-07 17:48:09 +00:00
Compare commits
No commits in common. "main" and "2.0" have entirely different histories.
238 changed files with 59455 additions and 122154 deletions
49
.env.example
Normal file
49
.env.example
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
APP_NAME=MyIdlers
|
||||||
|
APP_ENV=local
|
||||||
|
APP_KEY=
|
||||||
|
APP_DEBUG=true
|
||||||
|
APP_URL=http://localhost
|
||||||
|
|
||||||
|
LOG_CHANNEL=stack
|
||||||
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
|
DB_CONNECTION=mysql
|
||||||
|
DB_HOST=127.0.0.1
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DATABASE=my_idlers
|
||||||
|
DB_USERNAME=root
|
||||||
|
DB_PASSWORD=
|
||||||
|
|
||||||
|
BROADCAST_DRIVER=log
|
||||||
|
CACHE_DRIVER=file
|
||||||
|
QUEUE_CONNECTION=sync
|
||||||
|
SESSION_DRIVER=file
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
|
||||||
|
MEMCACHED_HOST=127.0.0.1
|
||||||
|
|
||||||
|
REDIS_HOST=127.0.0.1
|
||||||
|
REDIS_PASSWORD=null
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
MAIL_MAILER=smtp
|
||||||
|
MAIL_HOST=mailhog
|
||||||
|
MAIL_PORT=1025
|
||||||
|
MAIL_USERNAME=null
|
||||||
|
MAIL_PASSWORD=null
|
||||||
|
MAIL_ENCRYPTION=null
|
||||||
|
MAIL_FROM_ADDRESS=null
|
||||||
|
MAIL_FROM_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
AWS_ACCESS_KEY_ID=
|
||||||
|
AWS_SECRET_ACCESS_KEY=
|
||||||
|
AWS_DEFAULT_REGION=us-east-1
|
||||||
|
AWS_BUCKET=
|
||||||
|
|
||||||
|
PUSHER_APP_ID=
|
||||||
|
PUSHER_APP_KEY=
|
||||||
|
PUSHER_APP_SECRET=
|
||||||
|
PUSHER_APP_CLUSTER=mt1
|
||||||
|
|
||||||
|
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||||
|
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
3
.gitattributes
vendored
3
.gitattributes
vendored
|
@ -3,6 +3,3 @@
|
||||||
*.scss linguist-vendored
|
*.scss linguist-vendored
|
||||||
*.js linguist-vendored
|
*.js linguist-vendored
|
||||||
CHANGELOG.md export-ignore
|
CHANGELOG.md export-ignore
|
||||||
|
|
||||||
/public/css/* -diff
|
|
||||||
/public/js/* -diff
|
|
||||||
|
|
79
.github/workflows/main.yml
vendored
79
.github/workflows/main.yml
vendored
|
@ -1,79 +0,0 @@
|
||||||
name: Docker
|
|
||||||
|
|
||||||
# This workflow uses actions that are not certified by GitHub.
|
|
||||||
# They are provided by a third-party and are governed by
|
|
||||||
# separate terms of service, privacy policy, and support
|
|
||||||
# documentation.
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ "main" ]
|
|
||||||
|
|
||||||
env:
|
|
||||||
# Use docker.io for Docker Hub if empty
|
|
||||||
REGISTRY: ghcr.io
|
|
||||||
# github.repository as <account>/<repo>
|
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
packages: write
|
|
||||||
# This is used to complete the identity challenge
|
|
||||||
# with sigstore/fulcio when running outside of PRs.
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
# Install the cosign tool except on PR
|
|
||||||
# https://github.com/sigstore/cosign-installer
|
|
||||||
- name: Install cosign
|
|
||||||
if: github.event_name != 'pull_request'
|
|
||||||
uses: sigstore/cosign-installer@main
|
|
||||||
with:
|
|
||||||
cosign-release: 'v1.11.0'
|
|
||||||
|
|
||||||
|
|
||||||
# Workaround: https://github.com/docker/build-push-action/issues/461
|
|
||||||
- name: Setup Docker buildx
|
|
||||||
uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf
|
|
||||||
|
|
||||||
# Login against a Docker registry except on PR
|
|
||||||
# https://github.com/docker/login-action
|
|
||||||
- name: Log into registry ${{ env.REGISTRY }}
|
|
||||||
if: github.event_name != 'pull_request'
|
|
||||||
uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
|
|
||||||
with:
|
|
||||||
registry: ${{ env.REGISTRY }}
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
# Extract metadata (tags, labels) for Docker
|
|
||||||
# https://github.com/docker/metadata-action
|
|
||||||
- name: Extract Docker metadata
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
|
|
||||||
with:
|
|
||||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
||||||
tags: |
|
|
||||||
latest
|
|
||||||
|
|
||||||
|
|
||||||
# Build and push Docker image with Buildx (don't push on PR)
|
|
||||||
# https://github.com/docker/build-push-action
|
|
||||||
- name: Build and push Docker image
|
|
||||||
id: build-and-push
|
|
||||||
uses: docker/build-push-action@v2
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
platforms: linux/amd64,linux/arm64
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -56,5 +56,3 @@ fabric.properties
|
||||||
# modules.xml
|
# modules.xml
|
||||||
# .idea/misc.xml
|
# .idea/misc.xml
|
||||||
# *.ipr
|
# *.ipr
|
||||||
storage/clockwork/
|
|
||||||
!public/
|
|
||||||
|
|
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
101
.idea/blade.xml
generated
Normal file
101
.idea/blade.xml
generated
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="BladeInjectionConfiguration" default="false">
|
||||||
|
<directives>
|
||||||
|
<data directive="@append" />
|
||||||
|
<data directive="@auth" injection="true" prefix="<?php if(auth()->guard(" suffix=")->check()): ?>" />
|
||||||
|
<data directive="@aware" injection="true" prefix="<?php $attributes = $attributes->exceptProps(" suffix="); ?>" />
|
||||||
|
<data directive="@break" injection="true" prefix="<?php if(" suffix=") break; ?>" />
|
||||||
|
<data directive="@can" injection="true" prefix="<?php if (app(\Illuminate\Contracts\Auth\Access\Gate::class)->check(" suffix=")): ?>" />
|
||||||
|
<data directive="@canany" injection="true" prefix="<?php if (app(\Illuminate\Contracts\Auth\Access\Gate::class)->any(" suffix=")): ?>" />
|
||||||
|
<data directive="@cannot" injection="true" prefix="<?php if (app(\Illuminate\Contracts\Auth\Access\Gate::class)->denies(" suffix=")): ?>" />
|
||||||
|
<data directive="@case" injection="true" prefix="<?php case (" suffix="): ?>" />
|
||||||
|
<data directive="@checked" injection="true" prefix="<?php if(" suffix=") {echo 'checked';}?>" />
|
||||||
|
<data directive="@choice" injection="true" prefix="<?php echo app('translator')->choice(" suffix="); ?>" />
|
||||||
|
<data directive="@class" injection="true" prefix="class="<?php echo \Illuminate\Support\Arr::toCssClasses(" suffix=")?>"" />
|
||||||
|
<data directive="@component" injection="true" prefix="<?php $__env->startComponent(" suffix="); ?>" />
|
||||||
|
<data directive="@componentfirst" injection="true" prefix="<?php $__env->startComponentFirst(" suffix="); ?>" />
|
||||||
|
<data directive="@continue" injection="true" prefix="<?php if(" suffix=") continue; ?>" />
|
||||||
|
<data directive="@csrf" />
|
||||||
|
<data directive="@dd" injection="true" prefix="<?php dd(" suffix="); ?>" />
|
||||||
|
<data directive="@default" />
|
||||||
|
<data directive="@dump" injection="true" prefix="<?php dump(" suffix="); ?>" />
|
||||||
|
<data directive="@each" injection="true" prefix="<?php echo $__env->renderEach(" suffix="); ?>" />
|
||||||
|
<data directive="@else" />
|
||||||
|
<data directive="@elseauth" injection="true" prefix="<?php elseif(auth()->guard(" suffix=")->check()): ?>" />
|
||||||
|
<data directive="@elsecan" injection="true" prefix="<?php elseif (app(\Illuminate\Contracts\Auth\Access\Gate::class)->check(" suffix=")): ?>" />
|
||||||
|
<data directive="@elsecanany" injection="true" prefix="<?php elseif (app(\Illuminate\Contracts\Auth\Access\Gate::class)->any(" suffix=")): ?>" />
|
||||||
|
<data directive="@elsecannot" injection="true" prefix="<?php elseif (app(\Illuminate\Contracts\Auth\Access\Gate::class)->denies(" suffix=")): ?>" />
|
||||||
|
<data directive="@elseguest" injection="true" prefix="<?php elseif(auth()->guard(" suffix=")->guest()): ?>" />
|
||||||
|
<data directive="@elseif" injection="true" prefix="<?php elseif(" suffix="): ?>" />
|
||||||
|
<data directive="@empty" injection="true" prefix="<?php if(empty(" suffix=")): ?>" />
|
||||||
|
<data directive="@endauth" />
|
||||||
|
<data directive="@endcan" />
|
||||||
|
<data directive="@endcanany" />
|
||||||
|
<data directive="@endcannot" />
|
||||||
|
<data directive="@endcomponent" />
|
||||||
|
<data directive="@endcomponentClass" />
|
||||||
|
<data directive="@endcomponentfirst" />
|
||||||
|
<data directive="@endempty" />
|
||||||
|
<data directive="@endenv" />
|
||||||
|
<data directive="@enderror" />
|
||||||
|
<data directive="@endfor" />
|
||||||
|
<data directive="@endforeach" />
|
||||||
|
<data directive="@endforelse" />
|
||||||
|
<data directive="@endguest" />
|
||||||
|
<data directive="@endif" />
|
||||||
|
<data directive="@endisset" />
|
||||||
|
<data directive="@endlang" />
|
||||||
|
<data directive="@endonce" />
|
||||||
|
<data directive="@endphp" />
|
||||||
|
<data directive="@endprepend" />
|
||||||
|
<data directive="@endproduction" />
|
||||||
|
<data directive="@endpush" />
|
||||||
|
<data directive="@endsection" />
|
||||||
|
<data directive="@endslot" />
|
||||||
|
<data directive="@endswitch" />
|
||||||
|
<data directive="@endunless" />
|
||||||
|
<data directive="@endverbatim" />
|
||||||
|
<data directive="@endwhile" />
|
||||||
|
<data directive="@env" injection="true" prefix="<?php if(app()->environment(" suffix=")): ?>" />
|
||||||
|
<data directive="@error" injection="true" prefix="<?php $__errorArgs = [" suffix="]; $__bag = $errors->getBag($__errorArgs[1] ?? 'default'); if ($__bag->has($__errorArgs[0])) : if (isset($message)) { $__messageOriginal = $message; } $message = $__bag->first($__errorArgs[0]); ?>" />
|
||||||
|
<data directive="@extends" injection="true" prefix="<?php echo $__env->make(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>" />
|
||||||
|
<data directive="@extendsfirst" injection="true" prefix="<?php echo $__env->first(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>" />
|
||||||
|
<data directive="@for" injection="true" prefix="<?php for(" suffix="): ?>" />
|
||||||
|
<data directive="@foreach" injection="true" prefix="<?php foreach(" suffix="): ?>" />
|
||||||
|
<data directive="@forelse" injection="true" prefix="<?php foreach(" suffix="): ?>" />
|
||||||
|
<data directive="@guest" injection="true" prefix="<?php if(auth()->guard(" suffix=")->guest()): ?>" />
|
||||||
|
<data directive="@hasSection" injection="true" prefix="<?php if (! empty(trim($__env->yieldContent(" suffix=")))): ?>" />
|
||||||
|
<data directive="@if" injection="true" prefix="<?php if(" suffix="): ?>" />
|
||||||
|
<data directive="@include" injection="true" prefix="<?php echo $__env->make(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>" />
|
||||||
|
<data directive="@includeFirst" injection="true" prefix="<?php echo $__env->first(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>" />
|
||||||
|
<data directive="@includeUnless" injection="true" prefix="<?php echo $__env->renderWhen(! " suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path'])); ?>" />
|
||||||
|
<data directive="@includeWhen" injection="true" prefix="<?php echo $__env->renderWhen(" suffix=", \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path'])); ?>" />
|
||||||
|
<data directive="@isset" injection="true" prefix="<?php if(isset(" suffix=")): ?>" />
|
||||||
|
<data directive="@json" injection="true" prefix="<?php echo json_encode(" suffix=") ?>" />
|
||||||
|
<data directive="@lang" injection="true" prefix="<?php echo app('translator')->get(" suffix="); ?>" />
|
||||||
|
<data directive="@method" injection="true" prefix="<?php echo method_field(" suffix="); ?>" />
|
||||||
|
<data directive="@once" />
|
||||||
|
<data directive="@overwrite" />
|
||||||
|
<data directive="@parent" />
|
||||||
|
<data directive="@php" injection="true" prefix="<?php (" suffix="); ?>" />
|
||||||
|
<data directive="@prepend" injection="true" prefix="<?php $__env->startPrepend(" suffix="); ?>" />
|
||||||
|
<data directive="@production" />
|
||||||
|
<data directive="@props" injection="true" prefix="<?php $attributes = $attributes->exceptProps(" suffix="); ?>" />
|
||||||
|
<data directive="@push" injection="true" prefix="<?php $__env->startPush(" suffix="); ?>" />
|
||||||
|
<data directive="@section" injection="true" prefix="<?php $__env->startSection(" suffix="); ?>" />
|
||||||
|
<data directive="@sectionMissing" injection="true" prefix="<?php if (empty(trim($__env->yieldContent(" suffix=")))): ?>" />
|
||||||
|
<data directive="@selected" injection="true" prefix="<?php if(" suffix=") {echo 'selected';}?>" />
|
||||||
|
<data directive="@show" />
|
||||||
|
<data directive="@slot" injection="true" prefix="<?php $__env->slot(" suffix="); ?>" />
|
||||||
|
<data directive="@stack" injection="true" prefix="<?php echo $__env->yieldPushContent(" suffix="); ?>" />
|
||||||
|
<data directive="@stop" />
|
||||||
|
<data directive="@switch" injection="true" prefix="<?php switch(" suffix="): ?>" />
|
||||||
|
<data directive="@unless" injection="true" prefix="<?php if (! (" suffix=")): ?>" />
|
||||||
|
<data directive="@unset" injection="true" prefix="<?php unset(" suffix="); ?>" />
|
||||||
|
<data directive="@verbatim" />
|
||||||
|
<data directive="@while" injection="true" prefix="<?php while(" suffix="): ?>" />
|
||||||
|
<data directive="@yield" injection="true" prefix="<?php echo $__env->yieldContent(" suffix="); ?>" />
|
||||||
|
</directives>
|
||||||
|
</component>
|
||||||
|
</project>
|
3490
.idea/commandlinetools/Laravel_1_30_22__1_00_PM.xml
generated
Normal file
3490
.idea/commandlinetools/Laravel_1_30_22__1_00_PM.xml
generated
Normal file
File diff suppressed because it is too large
Load diff
47
.idea/commandlinetools/schemas/frameworkDescriptionVersion1.1.4.xsd
generated
Normal file
47
.idea/commandlinetools/schemas/frameworkDescriptionVersion1.1.4.xsd
generated
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
|
||||||
|
xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||||
|
<xs:element name="framework" type="frameworkType"/>
|
||||||
|
<xs:complexType name="commandType">
|
||||||
|
<xs:all>
|
||||||
|
<xs:element type="xs:string" name="name" minOccurs="1" maxOccurs="1"/>
|
||||||
|
<xs:element type="xs:string" name="params" minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xs:element type="xs:string" name="help" minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xs:element type="optionsBeforeType" name="optionsBefore" minOccurs="0" maxOccurs="1"/>
|
||||||
|
</xs:all>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="frameworkType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element type="xs:string" name="extraData" minOccurs="0" maxOccurs="1"/>
|
||||||
|
<xs:element type="commandType" name="command" maxOccurs="unbounded" minOccurs="0"/>
|
||||||
|
<xs:element type="xs:string" name="help" minOccurs="0" maxOccurs="1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute type="xs:string" name="name" use="required"/>
|
||||||
|
<xs:attribute type="xs:string" name="invoke" use="required"/>
|
||||||
|
<xs:attribute type="xs:string" name="alias" use="required"/>
|
||||||
|
<xs:attribute type="xs:boolean" name="enabled" use="required"/>
|
||||||
|
<xs:attribute type="xs:integer" name="version" use="required"/>
|
||||||
|
<xs:attribute type="xs:string" name="frameworkId" use="optional"/>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="optionsBeforeType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element type="optionType" name="option" maxOccurs="unbounded" minOccurs="0"/>
|
||||||
|
</xs:sequence>
|
||||||
|
</xs:complexType>
|
||||||
|
<xs:complexType name="optionType">
|
||||||
|
<xs:sequence>
|
||||||
|
<xs:element type="xs:string" name="help" minOccurs="0" maxOccurs="1"/>
|
||||||
|
</xs:sequence>
|
||||||
|
<xs:attribute type="xs:string" name="name" use="required"/>
|
||||||
|
<xs:attribute type="xs:string" name="shortcut" use="optional"/>
|
||||||
|
<xs:attribute name="pattern" use="optional">
|
||||||
|
<xs:simpleType>
|
||||||
|
<xs:restriction base="xs:string">
|
||||||
|
<xs:enumeration value="space"/>
|
||||||
|
<xs:enumeration value="equals"/>
|
||||||
|
<xs:enumeration value="unknown"/>
|
||||||
|
</xs:restriction>
|
||||||
|
</xs:simpleType>
|
||||||
|
</xs:attribute>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:schema>
|
459
.idea/dbnavigator.xml
generated
Normal file
459
.idea/dbnavigator.xml
generated
Normal file
|
@ -0,0 +1,459 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DBNavigator.Project.DataEditorManager">
|
||||||
|
<record-view-column-sorting-type value="BY_INDEX" />
|
||||||
|
<value-preview-text-wrapping value="true" />
|
||||||
|
<value-preview-pinned value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DataExportManager">
|
||||||
|
<export-instructions>
|
||||||
|
<create-header value="true" />
|
||||||
|
<friendly-headers value="false" />
|
||||||
|
<quote-values-containing-separator value="true" />
|
||||||
|
<quote-all-values value="false" />
|
||||||
|
<value-separator value="" />
|
||||||
|
<file-name value="" />
|
||||||
|
<file-location value="" />
|
||||||
|
<scope value="GLOBAL" />
|
||||||
|
<destination value="FILE" />
|
||||||
|
<format value="EXCEL" />
|
||||||
|
<charset value="windows-1252" />
|
||||||
|
</export-instructions>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseBrowserManager">
|
||||||
|
<autoscroll-to-editor value="false" />
|
||||||
|
<autoscroll-from-editor value="true" />
|
||||||
|
<show-object-properties value="true" />
|
||||||
|
<loaded-nodes />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||||
|
<open-files />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.EditorStateManager">
|
||||||
|
<last-used-providers />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ExecutionManager">
|
||||||
|
<retain-sticky-names value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.MethodExecutionManager">
|
||||||
|
<method-browser />
|
||||||
|
<execution-history>
|
||||||
|
<group-entries value="true" />
|
||||||
|
<execution-inputs />
|
||||||
|
</execution-history>
|
||||||
|
<argument-values-cache />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ObjectDependencyManager">
|
||||||
|
<last-used-dependency-type value="INCOMING" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ObjectQuickFilterManager">
|
||||||
|
<last-used-operator value="EQUAL" />
|
||||||
|
<filters />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ParserDiagnosticsManager">
|
||||||
|
<diagnostics-history />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
|
||||||
|
<recently-used-interfaces />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.Settings">
|
||||||
|
<connections />
|
||||||
|
<browser-settings>
|
||||||
|
<general>
|
||||||
|
<display-mode value="TABBED" />
|
||||||
|
<navigation-history-size value="100" />
|
||||||
|
<show-object-details value="false" />
|
||||||
|
</general>
|
||||||
|
<filters>
|
||||||
|
<object-type-filter>
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="true" />
|
||||||
|
<object-type name="ROLE" enabled="true" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="true" />
|
||||||
|
<object-type name="CHARSET" enabled="true" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||||
|
<object-type name="NESTED_TABLE" enabled="true" />
|
||||||
|
<object-type name="COLUMN" enabled="true" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="true" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||||
|
<object-type name="ARGUMENT" enabled="true" />
|
||||||
|
<object-type name="DIMENSION" enabled="true" />
|
||||||
|
<object-type name="CLUSTER" enabled="true" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</object-type-filter>
|
||||||
|
</filters>
|
||||||
|
<sorting>
|
||||||
|
<object-type name="COLUMN" sorting-type="NAME" />
|
||||||
|
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||||
|
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||||
|
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||||
|
</sorting>
|
||||||
|
<default-editors>
|
||||||
|
<object-type name="VIEW" editor-type="SELECTION" />
|
||||||
|
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||||
|
<object-type name="TYPE" editor-type="SELECTION" />
|
||||||
|
</default-editors>
|
||||||
|
</browser-settings>
|
||||||
|
<navigation-settings>
|
||||||
|
<lookup-filters>
|
||||||
|
<lookup-objects>
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="false" />
|
||||||
|
<object-type name="ROLE" enabled="false" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="false" />
|
||||||
|
<object-type name="CHARSET" enabled="false" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="false" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="DIMENSION" enabled="false" />
|
||||||
|
<object-type name="CLUSTER" enabled="false" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</lookup-objects>
|
||||||
|
<force-database-load value="false" />
|
||||||
|
<prompt-connection-selection value="true" />
|
||||||
|
<prompt-schema-selection value="true" />
|
||||||
|
</lookup-filters>
|
||||||
|
</navigation-settings>
|
||||||
|
<dataset-grid-settings>
|
||||||
|
<general>
|
||||||
|
<enable-zooming value="true" />
|
||||||
|
<enable-column-tooltip value="true" />
|
||||||
|
</general>
|
||||||
|
<sorting>
|
||||||
|
<nulls-first value="true" />
|
||||||
|
<max-sorting-columns value="4" />
|
||||||
|
</sorting>
|
||||||
|
<tracking-columns>
|
||||||
|
<columnNames value="" />
|
||||||
|
<visible value="true" />
|
||||||
|
<editable value="false" />
|
||||||
|
</tracking-columns>
|
||||||
|
</dataset-grid-settings>
|
||||||
|
<dataset-editor-settings>
|
||||||
|
<text-editor-popup>
|
||||||
|
<active value="false" />
|
||||||
|
<active-if-empty value="false" />
|
||||||
|
<data-length-threshold value="100" />
|
||||||
|
<popup-delay value="1000" />
|
||||||
|
</text-editor-popup>
|
||||||
|
<values-actions-popup>
|
||||||
|
<show-popup-button value="true" />
|
||||||
|
<element-count-threshold value="1000" />
|
||||||
|
<data-length-threshold value="250" />
|
||||||
|
</values-actions-popup>
|
||||||
|
<general>
|
||||||
|
<fetch-block-size value="100" />
|
||||||
|
<fetch-timeout value="30" />
|
||||||
|
<trim-whitespaces value="true" />
|
||||||
|
<convert-empty-strings-to-null value="true" />
|
||||||
|
<select-content-on-cell-edit value="true" />
|
||||||
|
<large-value-preview-active value="true" />
|
||||||
|
</general>
|
||||||
|
<filters>
|
||||||
|
<prompt-filter-dialog value="true" />
|
||||||
|
<default-filter-type value="BASIC" />
|
||||||
|
</filters>
|
||||||
|
<qualified-text-editor text-length-threshold="300">
|
||||||
|
<content-types>
|
||||||
|
<content-type name="Text" enabled="true" />
|
||||||
|
<content-type name="XML" enabled="true" />
|
||||||
|
<content-type name="DTD" enabled="true" />
|
||||||
|
<content-type name="HTML" enabled="true" />
|
||||||
|
<content-type name="XHTML" enabled="true" />
|
||||||
|
<content-type name="CSS" enabled="true" />
|
||||||
|
<content-type name="SQL" enabled="true" />
|
||||||
|
<content-type name="PL/SQL" enabled="true" />
|
||||||
|
<content-type name="JavaScript" enabled="true" />
|
||||||
|
<content-type name="JSON" enabled="true" />
|
||||||
|
<content-type name="JSON5" enabled="true" />
|
||||||
|
<content-type name="PHP" enabled="true" />
|
||||||
|
<content-type name="YAML" enabled="true" />
|
||||||
|
</content-types>
|
||||||
|
</qualified-text-editor>
|
||||||
|
<record-navigation>
|
||||||
|
<navigation-target value="VIEWER" />
|
||||||
|
</record-navigation>
|
||||||
|
</dataset-editor-settings>
|
||||||
|
<code-editor-settings>
|
||||||
|
<general>
|
||||||
|
<show-object-navigation-gutter value="false" />
|
||||||
|
<show-spec-declaration-navigation-gutter value="true" />
|
||||||
|
<enable-spellchecking value="true" />
|
||||||
|
<enable-reference-spellchecking value="false" />
|
||||||
|
</general>
|
||||||
|
<confirmations>
|
||||||
|
<save-changes value="false" />
|
||||||
|
<revert-changes value="true" />
|
||||||
|
</confirmations>
|
||||||
|
</code-editor-settings>
|
||||||
|
<code-completion-settings>
|
||||||
|
<filters>
|
||||||
|
<basic-filter>
|
||||||
|
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="role" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="user" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||||
|
<user-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</user-schema>
|
||||||
|
<public-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||||
|
</public-schema>
|
||||||
|
<any-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</any-schema>
|
||||||
|
</basic-filter>
|
||||||
|
<extended-filter>
|
||||||
|
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="user" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="role" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||||
|
<user-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</user-schema>
|
||||||
|
<public-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</public-schema>
|
||||||
|
<any-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</any-schema>
|
||||||
|
</extended-filter>
|
||||||
|
</filters>
|
||||||
|
<sorting enabled="true">
|
||||||
|
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||||
|
<sorting-element type="OBJECT" id="column" />
|
||||||
|
<sorting-element type="OBJECT" id="table" />
|
||||||
|
<sorting-element type="OBJECT" id="view" />
|
||||||
|
<sorting-element type="OBJECT" id="materialized view" />
|
||||||
|
<sorting-element type="OBJECT" id="index" />
|
||||||
|
<sorting-element type="OBJECT" id="constraint" />
|
||||||
|
<sorting-element type="OBJECT" id="trigger" />
|
||||||
|
<sorting-element type="OBJECT" id="synonym" />
|
||||||
|
<sorting-element type="OBJECT" id="sequence" />
|
||||||
|
<sorting-element type="OBJECT" id="procedure" />
|
||||||
|
<sorting-element type="OBJECT" id="function" />
|
||||||
|
<sorting-element type="OBJECT" id="package" />
|
||||||
|
<sorting-element type="OBJECT" id="type" />
|
||||||
|
<sorting-element type="OBJECT" id="dimension" />
|
||||||
|
<sorting-element type="OBJECT" id="cluster" />
|
||||||
|
<sorting-element type="OBJECT" id="dblink" />
|
||||||
|
<sorting-element type="OBJECT" id="schema" />
|
||||||
|
<sorting-element type="OBJECT" id="role" />
|
||||||
|
<sorting-element type="OBJECT" id="user" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="function" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||||
|
</sorting>
|
||||||
|
<format>
|
||||||
|
<enforce-code-style-case value="true" />
|
||||||
|
</format>
|
||||||
|
</code-completion-settings>
|
||||||
|
<execution-engine-settings>
|
||||||
|
<statement-execution>
|
||||||
|
<fetch-block-size value="100" />
|
||||||
|
<execution-timeout value="20" />
|
||||||
|
<debug-execution-timeout value="600" />
|
||||||
|
<focus-result value="false" />
|
||||||
|
<prompt-execution value="false" />
|
||||||
|
</statement-execution>
|
||||||
|
<script-execution>
|
||||||
|
<command-line-interfaces />
|
||||||
|
<execution-timeout value="300" />
|
||||||
|
</script-execution>
|
||||||
|
<method-execution>
|
||||||
|
<execution-timeout value="30" />
|
||||||
|
<debug-execution-timeout value="600" />
|
||||||
|
<parameter-history-size value="10" />
|
||||||
|
</method-execution>
|
||||||
|
</execution-engine-settings>
|
||||||
|
<operation-settings>
|
||||||
|
<transactions>
|
||||||
|
<uncommitted-changes>
|
||||||
|
<on-project-close value="ASK" />
|
||||||
|
<on-disconnect value="ASK" />
|
||||||
|
<on-autocommit-toggle value="ASK" />
|
||||||
|
</uncommitted-changes>
|
||||||
|
<multiple-uncommitted-changes>
|
||||||
|
<on-commit value="ASK" />
|
||||||
|
<on-rollback value="ASK" />
|
||||||
|
</multiple-uncommitted-changes>
|
||||||
|
</transactions>
|
||||||
|
<session-browser>
|
||||||
|
<disconnect-session value="ASK" />
|
||||||
|
<kill-session value="ASK" />
|
||||||
|
<reload-on-filter-change value="false" />
|
||||||
|
</session-browser>
|
||||||
|
<compiler>
|
||||||
|
<compile-type value="KEEP" />
|
||||||
|
<compile-dependencies value="ASK" />
|
||||||
|
<always-show-controls value="false" />
|
||||||
|
</compiler>
|
||||||
|
<debugger>
|
||||||
|
<debugger-type value="JDBC" />
|
||||||
|
<use-generic-runners value="true" />
|
||||||
|
</debugger>
|
||||||
|
</operation-settings>
|
||||||
|
<ddl-file-settings>
|
||||||
|
<extensions>
|
||||||
|
<mapping file-type-id="VIEW" extensions="vw" />
|
||||||
|
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||||
|
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||||
|
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||||
|
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||||
|
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||||
|
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||||
|
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||||
|
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||||
|
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||||
|
</extensions>
|
||||||
|
<general>
|
||||||
|
<lookup-ddl-files value="true" />
|
||||||
|
<create-ddl-files value="false" />
|
||||||
|
<synchronize-ddl-files value="true" />
|
||||||
|
<use-qualified-names value="false" />
|
||||||
|
<make-scripts-rerunnable value="true" />
|
||||||
|
</general>
|
||||||
|
</ddl-file-settings>
|
||||||
|
<general-settings>
|
||||||
|
<regional-settings>
|
||||||
|
<date-format value="MEDIUM" />
|
||||||
|
<number-format value="UNGROUPED" />
|
||||||
|
<locale value="SYSTEM_DEFAULT" />
|
||||||
|
<use-custom-formats value="false" />
|
||||||
|
</regional-settings>
|
||||||
|
<environment>
|
||||||
|
<environment-types>
|
||||||
|
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||||
|
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||||
|
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||||
|
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||||
|
</environment-types>
|
||||||
|
<visibility-settings>
|
||||||
|
<connection-tabs value="true" />
|
||||||
|
<dialog-headers value="true" />
|
||||||
|
<object-editor-tabs value="true" />
|
||||||
|
<script-editor-tabs value="false" />
|
||||||
|
<execution-result-tabs value="true" />
|
||||||
|
</visibility-settings>
|
||||||
|
</environment>
|
||||||
|
</general-settings>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.StatementExecutionManager">
|
||||||
|
<execution-variables />
|
||||||
|
</component>
|
||||||
|
</project>
|
70
.idea/deployment.xml
generated
Normal file
70
.idea/deployment.xml
generated
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
|
||||||
|
<serverData>
|
||||||
|
<paths name="api.nbastatr.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="api.srv3r.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="au2.srv3r.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="be1.nbastatr.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="dal.srv3r.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="los.srv3r.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="mel.srv3r.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="pearl.srv3r.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
<paths name="q.srv3r.com">
|
||||||
|
<serverdata>
|
||||||
|
<mappings>
|
||||||
|
<mapping local="$PROJECT_DIR$" web="/" />
|
||||||
|
</mappings>
|
||||||
|
</serverdata>
|
||||||
|
</paths>
|
||||||
|
</serverData>
|
||||||
|
</component>
|
||||||
|
</project>
|
131
.idea/idlers.iml
generated
Normal file
131
.idea/idlers.iml
generated
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/app" isTestSource="false" packagePrefix="App\" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/database/factories" isTestSource="false" packagePrefix="Database\Factories\" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/database/seeders" isTestSource="false" packagePrefix="Database\Seeders\" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="Tests\" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/tests/Feature" isTestSource="true" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/tests/Unit" isTestSource="true" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/ramsey/uuid" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/ramsey/collection" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/serializable-closure" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/tinker" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/breeze" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/sail" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/vlucas/phpdotenv" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/fakerphp/faker" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/facade/ignition-contracts" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/fruitcake/laravel-cors" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpoption/phpoption" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/egulias/email-validator" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/league/flysystem" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/league/mime-type-detection" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/version" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/league/commonmark" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/league/config" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/graham-campbell/result-type" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psy/psysh" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/voku/portable-ascii" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/hamcrest/hamcrest-php" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/mockery/mockery" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/nesbot/carbon" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/nette/utils" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/prophecy" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/nette/schema" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/dflydev/dot-access-data" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/brick/math" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/asm89/stack-cors" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/simple-cache" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/filp/whoops" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/tijsverkoyen/css-to-inline-styles" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/finder" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/routing" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-contracts" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/css-selector" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-grapheme" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/error-handler" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php72" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-idn" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/dragonmantank/cron-expression" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-foundation" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/var-dumper" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-kernel" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php81" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/service-contracts" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation-contracts" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/string" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/process" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/ignition" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/flare-client-php" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/mailer" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/storage/app" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/storage/framework" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/_laravel_idea" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/yajra/laravel-datatables-oracle" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/mime" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/framework" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/laravel/ui" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/nunomaduro/collision" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/type" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/global-state" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/diff" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/cli-parser" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-text-template" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-invoker" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-file-iterator" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/lines-of-code" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/complexity" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-code-coverage" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/manifest" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/backtrace" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/vendor/spatie/laravel-ignition" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
166
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
166
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="ForgottenDebugOutputInspection" enabled="true" level="ERROR" enabled_by_default="true">
|
||||||
|
<option name="configuration">
|
||||||
|
<list>
|
||||||
|
<option value="\Codeception\Util\Debug::debug" />
|
||||||
|
<option value="\Codeception\Util\Debug::pause" />
|
||||||
|
<option value="\Doctrine\Common\Util\Debug::dump" />
|
||||||
|
<option value="\Doctrine\Common\Util\Debug::export" />
|
||||||
|
<option value="\Illuminate\Support\Debug\Dumper::dump" />
|
||||||
|
<option value="\Symfony\Component\Debug\Debug::enable" />
|
||||||
|
<option value="\Symfony\Component\Debug\DebugClassLoader::enable" />
|
||||||
|
<option value="\Symfony\Component\Debug\ErrorHandler::register" />
|
||||||
|
<option value="\Symfony\Component\Debug\ExceptionHandler::register" />
|
||||||
|
<option value="\TYPO3\CMS\Core\Utility\DebugUtility::debug" />
|
||||||
|
<option value="\Zend\Debug\Debug::dump" />
|
||||||
|
<option value="\Zend\Di\Display\Console::export" />
|
||||||
|
<option value="dd" />
|
||||||
|
<option value="debug_print_backtrace" />
|
||||||
|
<option value="debug_zval_dump" />
|
||||||
|
<option value="dpm" />
|
||||||
|
<option value="dpq" />
|
||||||
|
<option value="dsm" />
|
||||||
|
<option value="dump" />
|
||||||
|
<option value="dvm" />
|
||||||
|
<option value="error_log" />
|
||||||
|
<option value="kpr" />
|
||||||
|
<option value="phpinfo" />
|
||||||
|
<option value="print_r" />
|
||||||
|
<option value="var_dump" />
|
||||||
|
<option value="var_export" />
|
||||||
|
<option value="wp_die" />
|
||||||
|
<option value="xdebug_break" />
|
||||||
|
<option value="xdebug_call_class" />
|
||||||
|
<option value="xdebug_call_file" />
|
||||||
|
<option value="xdebug_call_function" />
|
||||||
|
<option value="xdebug_call_line" />
|
||||||
|
<option value="xdebug_code_coverage_started" />
|
||||||
|
<option value="xdebug_debug_zval" />
|
||||||
|
<option value="xdebug_debug_zval_stdout" />
|
||||||
|
<option value="xdebug_dump_superglobals" />
|
||||||
|
<option value="xdebug_enable" />
|
||||||
|
<option value="xdebug_get_code_coverage" />
|
||||||
|
<option value="xdebug_get_collected_errors" />
|
||||||
|
<option value="xdebug_get_declared_vars" />
|
||||||
|
<option value="xdebug_get_function_stack" />
|
||||||
|
<option value="xdebug_get_headers" />
|
||||||
|
<option value="xdebug_get_monitored_functions" />
|
||||||
|
<option value="xdebug_get_profiler_filename" />
|
||||||
|
<option value="xdebug_get_stack_depth" />
|
||||||
|
<option value="xdebug_get_tracefile_name" />
|
||||||
|
<option value="xdebug_is_enabled" />
|
||||||
|
<option value="xdebug_memory_usage" />
|
||||||
|
<option value="xdebug_peak_memory_usage" />
|
||||||
|
<option value="xdebug_print_function_stack" />
|
||||||
|
<option value="xdebug_start_code_coverage" />
|
||||||
|
<option value="xdebug_start_error_collection" />
|
||||||
|
<option value="xdebug_start_function_monitor" />
|
||||||
|
<option value="xdebug_start_trace" />
|
||||||
|
<option value="xdebug_stop_code_coverage" />
|
||||||
|
<option value="xdebug_stop_error_collection" />
|
||||||
|
<option value="xdebug_stop_function_monitor" />
|
||||||
|
<option value="xdebug_stop_trace" />
|
||||||
|
<option value="xdebug_time_index" />
|
||||||
|
<option value="xdebug_var_dump" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="migratedIntoUserSpace" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="HtmlUnknownAttribute" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="myValues">
|
||||||
|
<value>
|
||||||
|
<list size="2">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="name" />
|
||||||
|
<item index="1" class="java.lang.String" itemvalue="placeholder" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="myCustomValuesEnabled" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="HtmlUnknownTag" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="myValues">
|
||||||
|
<value>
|
||||||
|
<list size="13">
|
||||||
|
<item index="0" class="java.lang.String" itemvalue="nobr" />
|
||||||
|
<item index="1" class="java.lang.String" itemvalue="noembed" />
|
||||||
|
<item index="2" class="java.lang.String" itemvalue="comment" />
|
||||||
|
<item index="3" class="java.lang.String" itemvalue="noscript" />
|
||||||
|
<item index="4" class="java.lang.String" itemvalue="embed" />
|
||||||
|
<item index="5" class="java.lang.String" itemvalue="script" />
|
||||||
|
<item index="6" class="java.lang.String" itemvalue="x-slot" />
|
||||||
|
<item index="7" class="java.lang.String" itemvalue="x-login-card" />
|
||||||
|
<item index="8" class="java.lang.String" itemvalue="x-labels-select" />
|
||||||
|
<item index="9" class="java.lang.String" itemvalue="x-currency-select" />
|
||||||
|
<item index="10" class="java.lang.String" itemvalue="x-term-select" />
|
||||||
|
<item index="11" class="java.lang.String" itemvalue="x-providers-select" />
|
||||||
|
<item index="12" class="java.lang.String" itemvalue="x-locations-select" />
|
||||||
|
</list>
|
||||||
|
</value>
|
||||||
|
</option>
|
||||||
|
<option name="myCustomValuesEnabled" value="true" />
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="Json5StandardCompliance" enabled="false" level="ERROR" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="JsonDuplicatePropertyKeys" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="JsonSchemaCompliance" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="JsonSchemaDeprecation" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="JsonSchemaRefReference" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="JsonStandardCompliance" enabled="false" level="ERROR" enabled_by_default="false" />
|
||||||
|
<inspection_tool class="SecurityAdvisoriesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="optionConfiguration">
|
||||||
|
<list>
|
||||||
|
<option value="barryvdh/laravel-debugbar" />
|
||||||
|
<option value="behat/behat" />
|
||||||
|
<option value="brianium/paratest" />
|
||||||
|
<option value="codeception/codeception" />
|
||||||
|
<option value="codedungeon/phpunit-result-printer" />
|
||||||
|
<option value="composer/composer" />
|
||||||
|
<option value="doctrine/coding-standard" />
|
||||||
|
<option value="filp/whoops" />
|
||||||
|
<option value="friendsofphp/php-cs-fixer" />
|
||||||
|
<option value="humbug/humbug" />
|
||||||
|
<option value="infection/infection" />
|
||||||
|
<option value="jakub-onderka/php-parallel-lint" />
|
||||||
|
<option value="johnkary/phpunit-speedtrap" />
|
||||||
|
<option value="kalessil/production-dependencies-guard" />
|
||||||
|
<option value="mikey179/vfsStream" />
|
||||||
|
<option value="mockery/mockery" />
|
||||||
|
<option value="mybuilder/phpunit-accelerator" />
|
||||||
|
<option value="orchestra/testbench" />
|
||||||
|
<option value="pdepend/pdepend" />
|
||||||
|
<option value="phan/phan" />
|
||||||
|
<option value="phing/phing" />
|
||||||
|
<option value="phpcompatibility/php-compatibility" />
|
||||||
|
<option value="phpmd/phpmd" />
|
||||||
|
<option value="phpro/grumphp" />
|
||||||
|
<option value="phpspec/phpspec" />
|
||||||
|
<option value="phpspec/prophecy" />
|
||||||
|
<option value="phpstan/phpstan" />
|
||||||
|
<option value="phpunit/phpunit" />
|
||||||
|
<option value="povils/phpmnd" />
|
||||||
|
<option value="roave/security-advisories" />
|
||||||
|
<option value="satooshi/php-coveralls" />
|
||||||
|
<option value="sebastian/phpcpd" />
|
||||||
|
<option value="slevomat/coding-standard" />
|
||||||
|
<option value="spatie/phpunit-watcher" />
|
||||||
|
<option value="squizlabs/php_codesniffer" />
|
||||||
|
<option value="sstalle/php7cc" />
|
||||||
|
<option value="symfony/debug" />
|
||||||
|
<option value="symfony/maker-bundle" />
|
||||||
|
<option value="symfony/phpunit-bridge" />
|
||||||
|
<option value="symfony/var-dumper" />
|
||||||
|
<option value="vimeo/psalm" />
|
||||||
|
<option value="wimg/php-compatibility" />
|
||||||
|
<option value="wp-coding-standards/wpcs" />
|
||||||
|
<option value="yiisoft/yii2-coding-standards" />
|
||||||
|
<option value="yiisoft/yii2-debug" />
|
||||||
|
<option value="yiisoft/yii2-gii" />
|
||||||
|
<option value="zendframework/zend-coding-standard" />
|
||||||
|
<option value="zendframework/zend-debug" />
|
||||||
|
<option value="zendframework/zend-test" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
13
.idea/laravel-idea.xml
generated
Normal file
13
.idea/laravel-idea.xml
generated
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="LaravelIdeaMainSettings">
|
||||||
|
<option name="frameworkFound" value="true" />
|
||||||
|
<option name="generationStringSettings">
|
||||||
|
<map>
|
||||||
|
<entry key="createEloquentScope:namespace" value="Models\Scopes" />
|
||||||
|
<entry key="createModel:namespace" value="Models" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
<option name="userClassName" value="App\Models\User" />
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/laravel-plugin.xml
generated
Normal file
6
.idea/laravel-plugin.xml
generated
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="LaravelPluginSettings">
|
||||||
|
<option name="pluginEnabled" value="true" />
|
||||||
|
</component>
|
||||||
|
</project>
|
14
.idea/laravel-query-settings.xml
generated
Normal file
14
.idea/laravel-query-settings.xml
generated
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="LaravelQuerySettings">
|
||||||
|
<option name="filterDataSources" value="true" />
|
||||||
|
<option name="filteredDataSources">
|
||||||
|
<set>
|
||||||
|
<option value="efc7de96-2071-4420-9d95-422a64f97449<-/lq/->myidlers" />
|
||||||
|
<option value="efc7de96-2071-4420-9d95-422a64f97449<-/lq/->laravel" />
|
||||||
|
<option value="efc7de96-2071-4420-9d95-422a64f97449<-/lq/->idlers" />
|
||||||
|
<option value="efc7de96-2071-4420-9d95-422a64f97449<-/lq/->first-project" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
9
.idea/markdown.xml
generated
Normal file
9
.idea/markdown.xml
generated
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MarkdownSettings">
|
||||||
|
<enabledExtensions>
|
||||||
|
<entry key="MermaidLanguageExtension" value="false" />
|
||||||
|
<entry key="PlantUMLLanguageExtension" value="false" />
|
||||||
|
</enabledExtensions>
|
||||||
|
</component>
|
||||||
|
</project>
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/idlers.iml" filepath="$PROJECT_DIR$/.idea/idlers.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
126
.idea/php.xml
generated
Normal file
126
.idea/php.xml
generated
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="PhpIncludePathManager">
|
||||||
|
<include_path>
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ramsey/uuid" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ramsey/collection" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/serializable-closure" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/tinker" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/breeze" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/sail" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/vlucas/phpdotenv" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/fakerphp/faker" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/facade/ignition-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/fruitcake/laravel-cors" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpoption/phpoption" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/flysystem" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/mime-type-detection" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/commonmark" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/league/config" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/graham-campbell/result-type" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psy/psysh" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/voku/portable-ascii" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/hamcrest/hamcrest-php" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/mockery/mockery" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nesbot/carbon" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nette/utils" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpspec/prophecy" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nette/schema" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/dflydev/dot-access-data" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/brick/math" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/asm89/stack-cors" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/log" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/container" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/simple-cache" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/filp/whoops" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/tijsverkoyen/css-to-inline-styles" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/routing" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/error-handler" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/console" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/dragonmantank/cron-expression" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/http-kernel" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php81" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/string" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/process" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/composer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/ignition" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/flare-client-php" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/mailer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/_laravel_idea" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/yajra/laravel-datatables-oracle" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/framework" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/laravel/ui" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/nunomaduro/collision" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/backtrace" />
|
||||||
|
<path value="$PROJECT_DIR$/vendor/spatie/laravel-ignition" />
|
||||||
|
</include_path>
|
||||||
|
</component>
|
||||||
|
<component name="PhpProjectSharedConfiguration" php_language_level="7.4" />
|
||||||
|
<component name="PhpUnit">
|
||||||
|
<phpunit_settings>
|
||||||
|
<PhpUnitSettings configuration_file_path="$PROJECT_DIR$/phpunit.xml" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" use_configuration_file="true" />
|
||||||
|
</phpunit_settings>
|
||||||
|
</component>
|
||||||
|
</project>
|
11
.idea/phpunit.xml
generated
Normal file
11
.idea/phpunit.xml
generated
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="PHPUnit">
|
||||||
|
<option name="directories">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/tests/Unit" />
|
||||||
|
<option value="$PROJECT_DIR$/tests/Feature" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
14
Dockerfile
14
Dockerfile
|
@ -1,14 +0,0 @@
|
||||||
FROM php:8.2-fpm-alpine
|
|
||||||
|
|
||||||
RUN docker-php-ext-install pdo pdo_mysql sockets
|
|
||||||
RUN curl -sS https://getcomposer.org/installer | php -- \
|
|
||||||
--install-dir=/usr/local/bin --filename=composer
|
|
||||||
|
|
||||||
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
COPY . .
|
|
||||||
RUN composer install
|
|
||||||
|
|
||||||
ENV APP_ENV production
|
|
||||||
ENTRYPOINT ["/app/run.sh"]
|
|
254
README.md
254
README.md
|
@ -1,60 +1,46 @@
|
||||||
# My idlers
|
# My idlers
|
||||||
|
|
||||||
A self-hosted web app for displaying, organizing and storing information about your servers (VPS/Dedi), shared &
|
A web app for displaying, organizing and storing information about servers (VPS), shared & reseller hosting, domains,
|
||||||
reseller hosting, seedboxes,
|
DNS and misc services.
|
||||||
domains, DNS and misc services.
|
|
||||||
|
|
||||||
Despite what the name infers this self-hosted web app isn't just for storing idling server information. By using
|
Despite what the name infers this self hosted web app isn't just for storing idling server information. By using
|
||||||
a [YABS](https://github.com/masonr/yet-another-bench-script) output you can get disk & network speed values along with
|
a [YABs](https://github.com/masonr/yet-another-bench-script) output you can get disk & network speed values along with
|
||||||
GeekBench 5 & 6 scores to do easier comparing and sorting. Of course storing other services e.g. web hosting is possible
|
GeekBench 5 scores to do easier comparing and sorting.
|
||||||
and supported too with My idlers.
|
|
||||||
|
|
||||||
[](https://shields.io/) [](https://shields.io/) [](https://shields.io/) [](https://shields.io/)
|
## V2 notes
|
||||||
|
|
||||||
<img src="https://raw.githubusercontent.com/cp6/my-idlers/main/public/My%20Idlers%20logo.jpg" width="128" height="128" />
|
V2 build is a complete overhaul of My idlers with the project being moved onto the Laravel framework. This will simplify
|
||||||
|
development and most of the features from the original build will be present in V2.
|
||||||
|
|
||||||
[View demo site](https://demo.myidlers.com/)
|
Using Laravel will bring in an API endpoint and the possibilities to show servers publicly with certain parameters
|
||||||
|
removed.
|
||||||
|
|
||||||
**Note:** Create, Update and Delete are disabled on the demo site.
|
[Old version live demo](https://myidlers.srv3r.com/)
|
||||||
|
|
||||||
## Project sponsor
|
[](https://shields.io/) [](https://shields.io/) [](https://shields.io/) [](https://shields.io/)
|
||||||
|
|
||||||
Currently seeking a project sponsor
|
## 2.0 changes:
|
||||||
|
|
||||||
## 3.0.0 changes (9 December 2024):
|
**Unfortunately you cannot migrate your current install to the new 2.0 version**
|
||||||
|
|
||||||
* Updated PHP version to 8.3
|
* Laravel framework (version 9).
|
||||||
* Updated Laravel version to ^11
|
* Breeze authentication.
|
||||||
* Updated composer package versions
|
* API GET for any of the CRUD data.
|
||||||
* Updated routes into middleware grouping for auth
|
* Labels (titles/desc) CRUD.
|
||||||
* Updated login and register forms
|
* Misc services CRUD.
|
||||||
* Updated servers, shared, reseller and domains pages to use Datatables
|
* DNS CRUD.
|
||||||
* Added icons to back and submit button components
|
* Ip address CRUD.
|
||||||
* Added icon button to shared and reseller create pages
|
* Reseller hosting.
|
||||||
* Added several updated OS versions to OsSeeder
|
* Added Operating systems to DB, Deleting and creating them now possible.
|
||||||
* Added Font awesome Brands webfont
|
* Make servers displayable public with config options to hide certain values.
|
||||||
* Added IP whois data columns to the ips table
|
* Vue JS used where possible.
|
||||||
* Added IP whois data fetching and updating DB
|
* Datatables used on large tables (Locations, labels, and providers).
|
||||||
* Added Note to API
|
* Added caching for home page and servers
|
||||||
* Fixed OS icons not loading in servers index page
|
|
||||||
* Fixed Settings being called without being created (existing)
|
|
||||||
* Fixed issue with OS: `Call to a member function toJson() on array`
|
|
||||||
* Fixed due in (days) column showing a massive float
|
|
||||||
* Removed 1 user being seeded
|
|
||||||
* Removed doctrine/dbal
|
|
||||||
|
|
||||||
#### Please run the following if updating from an existing install:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
composer update
|
|
||||||
php artisan migrate
|
|
||||||
php artisan route:cache
|
|
||||||
php artisan cache:clear
|
|
||||||
```
|
|
||||||
|
|
||||||
## Requires
|
## Requires
|
||||||
|
|
||||||
* PHP 8.3
|
* PHP 8 (compatible with 8.1)
|
||||||
|
* MySQL server
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
@ -63,10 +49,10 @@ php artisan cache:clear
|
||||||
* Add domains
|
* Add domains
|
||||||
* [Auto get IP's from hostname](https://cdn.write.corbpie.com/wp-content/uploads/2021/01/my-idlers-self-hosted-server-domain-information-ips-from-hostname.gif)
|
* [Auto get IP's from hostname](https://cdn.write.corbpie.com/wp-content/uploads/2021/01/my-idlers-self-hosted-server-domain-information-ips-from-hostname.gif)
|
||||||
* [Check up/down status](https://cdn.write.corbpie.com/wp-content/uploads/2021/01/my-idlers-self-hosted-server-domain-information-ping-up-feature.gif)
|
* [Check up/down status](https://cdn.write.corbpie.com/wp-content/uploads/2021/01/my-idlers-self-hosted-server-domain-information-ping-up-feature.gif)
|
||||||
* Get YABS data from output
|
* Get YABs data from output
|
||||||
* Compare 2 servers
|
* Compare 2 servers
|
||||||
* Save & view YABS output
|
* Save & view YABs output
|
||||||
* Update YABS disk & network results
|
* Update YABs disk & network results
|
||||||
* Next due date system
|
* Next due date system
|
||||||
* Multi currency compatibility
|
* Multi currency compatibility
|
||||||
* Multi payment-term compatibility
|
* Multi payment-term compatibility
|
||||||
|
@ -74,7 +60,6 @@ php artisan cache:clear
|
||||||
* Assign labels
|
* Assign labels
|
||||||
* Assign server type (KVM, OVZ, LXC & dedi)
|
* Assign server type (KVM, OVZ, LXC & dedi)
|
||||||
* Easy to edit values
|
* Easy to edit values
|
||||||
* Assign notes
|
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
@ -87,53 +72,6 @@ php artisan cache:clear
|
||||||
* Run `php artisan migrate:fresh --seed` to create tables and seed data
|
* Run `php artisan migrate:fresh --seed` to create tables and seed data
|
||||||
* Run `php artisan serve`
|
* Run `php artisan serve`
|
||||||
|
|
||||||
## Updating
|
|
||||||
|
|
||||||
If you already have at least version 2.0 installed:
|
|
||||||
|
|
||||||
* Run `git clone https://github.com/cp6/my-idlers.git`
|
|
||||||
* Run `composer install`
|
|
||||||
* Run `composer update`
|
|
||||||
* Run `php artisan migrate`
|
|
||||||
* Run `php artisan route:cache`
|
|
||||||
* Run `php artisan cache:clear`
|
|
||||||
|
|
||||||
## Run using Docker
|
|
||||||
|
|
||||||
```
|
|
||||||
docker run \
|
|
||||||
-p 8000:8000\
|
|
||||||
-e APP_URL=https://... \
|
|
||||||
-e DB_HOST=... \
|
|
||||||
-e DB_DATABASE=... \
|
|
||||||
-e DB_USERNAME=... \
|
|
||||||
-e DB_PASSWORD=... \
|
|
||||||
ghcr.io/cp6/my-idlers:latest
|
|
||||||
docker exec ... php artisan migrate:fresh --seed --force # Set up database one time
|
|
||||||
```
|
|
||||||
|
|
||||||
## Managed Hosting
|
|
||||||
|
|
||||||
Run with a single click on [PikaPods.com](https://www.pikapods.com/)
|
|
||||||
|
|
||||||
[](https://www.pikapods.com/pods?run=my-idlers)
|
|
||||||
|
|
||||||
## Adding a YABS benchmark
|
|
||||||
|
|
||||||
yabs.sh now has JSON formatted response and can POST the output directly from calling the script.
|
|
||||||
|
|
||||||
With My idlers you can use your API key and the server id to directly POST the benchmark result
|
|
||||||
|
|
||||||
`https://yourdomain.com/api/yabs/SERVERID/USERAPIKEYISHERE`
|
|
||||||
|
|
||||||
Example yabs.sh call to POST the result:
|
|
||||||
|
|
||||||
`curl -sL yabs.sh | bash -s -- -s "https://yourdomain.com/api/yabs/SERVERID/USERAPIKEYISHERE"`
|
|
||||||
|
|
||||||
## Credits
|
|
||||||
|
|
||||||
IP who is data provided by [ipwhois.io](https://ipwhois.io/documentation)
|
|
||||||
|
|
||||||
## API endpoints
|
## API endpoints
|
||||||
|
|
||||||
For GET requests the header must have `Accept: application/json` and your API token (found at `/account`)
|
For GET requests the header must have `Accept: application/json` and your API token (found at `/account`)
|
||||||
|
@ -188,114 +126,12 @@ All API requests must be appended with `api/` e.g `mydomain.com/api/servers/gYk8
|
||||||
|
|
||||||
`reseller/{id}`
|
`reseller/{id}`
|
||||||
|
|
||||||
`seedbox/`
|
|
||||||
|
|
||||||
`seedbox/{id}`
|
|
||||||
|
|
||||||
`settings/`
|
`settings/`
|
||||||
|
|
||||||
`shared/`
|
`shared/`
|
||||||
|
|
||||||
`shared/{id}`
|
`shared/{id}`
|
||||||
|
|
||||||
`note/{id}`
|
|
||||||
|
|
||||||
**POST requests**
|
|
||||||
|
|
||||||
Create a server
|
|
||||||
|
|
||||||
`/servers`
|
|
||||||
|
|
||||||
Body content template
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"active": 1,
|
|
||||||
"show_public": 0,
|
|
||||||
"hostname": "test.domain.com",
|
|
||||||
"ns1": "ns1",
|
|
||||||
"ns2": "ns2",
|
|
||||||
"server_type": 1,
|
|
||||||
"os_id": 2,
|
|
||||||
"provider_id": 10,
|
|
||||||
"location_id": 15,
|
|
||||||
"ssh_port": 22,
|
|
||||||
"bandwidth": 2000,
|
|
||||||
"ram": 2024,
|
|
||||||
"ram_type": "MB",
|
|
||||||
"ram_as_mb": 2024,
|
|
||||||
"disk": 30,
|
|
||||||
"disk_type": "GB",
|
|
||||||
"disk_as_gb": 30,
|
|
||||||
"cpu": 2,
|
|
||||||
"has_yabs": 0,
|
|
||||||
"was_promo": 1,
|
|
||||||
"ip1": "127.0.0.1",
|
|
||||||
"ip2": null,
|
|
||||||
"owned_since": "2022-01-01",
|
|
||||||
"currency": "USD",
|
|
||||||
"price": 4.00,
|
|
||||||
"payment_term": 1,
|
|
||||||
"as_usd": 4.00,
|
|
||||||
"usd_per_month": 4.00,
|
|
||||||
"next_due_date": "2022-02-01"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**PUT requests**
|
|
||||||
|
|
||||||
Update a server
|
|
||||||
|
|
||||||
`/servers/ID`
|
|
||||||
|
|
||||||
Body content template
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"active": 1,
|
|
||||||
"show_public": 0,
|
|
||||||
"hostname": "test.domain.com",
|
|
||||||
"ns1": "ns1",
|
|
||||||
"ns2": "ns2",
|
|
||||||
"server_type": 1,
|
|
||||||
"os_id": 2,
|
|
||||||
"provider_id": 10,
|
|
||||||
"location_id": 15,
|
|
||||||
"ssh_port": 22,
|
|
||||||
"bandwidth": 2000,
|
|
||||||
"ram": 2024,
|
|
||||||
"ram_type": "MB",
|
|
||||||
"ram_as_mb": 2024,
|
|
||||||
"disk": 30,
|
|
||||||
"disk_type": "GB",
|
|
||||||
"disk_as_gb": 30,
|
|
||||||
"cpu": 2,
|
|
||||||
"has_yabs": 0,
|
|
||||||
"was_promo": 1,
|
|
||||||
"owned_since": "2022-01-01"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Update pricing
|
|
||||||
|
|
||||||
`/pricing/ID`
|
|
||||||
|
|
||||||
Body content template
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"price": 10.50,
|
|
||||||
"currency": "USD",
|
|
||||||
"term": 1
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**DELETE requests**
|
|
||||||
|
|
||||||
Delete a server
|
|
||||||
|
|
||||||
`/servers/ID`
|
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
**Public viewable listings**
|
**Public viewable listings**
|
||||||
|
@ -318,22 +154,30 @@ or
|
||||||
|
|
||||||
```curl -sL yabs.sh | bash -s -- -r```
|
```curl -sL yabs.sh | bash -s -- -r```
|
||||||
|
|
||||||
Logo icons created by Freepik - Flaticon
|
**Make sure YABs output starts at the first line which is:**
|
||||||
|
|
||||||
|
```# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #```
|
||||||
|
|
||||||
## Screenshots for v2
|
## Screenshots for v2
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-home-2.jpg)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-home.jpg)
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-server-view.jpg)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-server-view.jpg)
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-servers-home.jpg)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-servers-home.jpg)
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-YABs.jpg)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-YABs.jpg)
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-add-server_2.png)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-add-server.jpg)
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-servers-compare.jpg)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-servers-compare.jpg)
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-Ips.jpg)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-Ips.jpg)
|
||||||
|
|
||||||
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-labels.jpg)
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-labels.jpg)
|
||||||
|
|
||||||
|
## Looking for a project sponsor
|
||||||
|
|
||||||
|
I am seeking at least a 1GB ram, Nvme VPS to host a demo installation of My idlers. In return you will get your provider as the default selection in the create forms, as well as in screenshots.
|
||||||
|
|
||||||
|
[](https://cdn.write.corbpie.com/wp-content/uploads/2022/03/My-idlers-v2-default-provider-sponsor-position.png)
|
||||||
|
|
|
@ -2,39 +2,69 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Domains;
|
|
||||||
use App\Models\IPs;
|
use App\Models\IPs;
|
||||||
use App\Models\Labels;
|
use App\Models\Labels;
|
||||||
use App\Models\Misc;
|
|
||||||
use App\Models\NetworkSpeed;
|
use App\Models\NetworkSpeed;
|
||||||
use App\Models\Note;
|
|
||||||
use App\Models\OS;
|
use App\Models\OS;
|
||||||
use App\Models\Pricing;
|
use App\Models\Pricing;
|
||||||
use App\Models\Providers;
|
use App\Models\Providers;
|
||||||
use App\Models\Reseller;
|
|
||||||
use App\Models\SeedBoxes;
|
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Models\Shared;
|
use App\Models\Shared;
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Yabs;
|
|
||||||
use DataTables;
|
use DataTables;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Validator;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class ApiController extends Controller
|
class ApiController extends Controller
|
||||||
{
|
{
|
||||||
protected function getAllServers()
|
protected function getAllServers()
|
||||||
{
|
{
|
||||||
$servers = Server::allServers()->toJson(JSON_PRETTY_PRINT);
|
$servers = DB::table('servers as s')
|
||||||
|
->Join('pricings as p', 's.id', '=', 'p.service_id')
|
||||||
|
->join('providers as pr', 's.provider_id', '=', 'pr.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->join('os as o', 's.os_id', '=', 'o.id')
|
||||||
|
->get(['s.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date', 'pr.name as provider', 'l.name as location','o.name as os'])->toJson(JSON_PRETTY_PRINT);
|
||||||
|
|
||||||
return response($servers, 200);
|
return response($servers, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getServer($id)
|
protected function getServer($id)
|
||||||
{
|
{
|
||||||
$server = Server::server($id)->toJson(JSON_PRETTY_PRINT);
|
$server = DB::table('servers as s')
|
||||||
|
->Join('pricings as p', 's.id', '=', 'p.service_id')
|
||||||
|
->join('providers as pr', 's.provider_id', '=', 'pr.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->join('os as o', 's.os_id', '=', 'o.id')
|
||||||
|
->where('s.id', '=', $id)
|
||||||
|
->get(['s.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date', 'pr.name as provider', 'l.name as location','o.name as os']);
|
||||||
|
|
||||||
|
$yabs = DB::table('yabs')
|
||||||
|
->where('yabs.server_id', '=', $id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$disk_speed = DB::table('disk_speed')
|
||||||
|
->where('disk_speed.server_id', '=', $id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$network_speed = DB::table('network_speed')
|
||||||
|
->where('network_speed.server_id', '=', $id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$labels = DB::table('labels_assigned as la')
|
||||||
|
->Join('labels as l', 'la.label_id', '=', 'l.id')
|
||||||
|
->where('la.service_id', '=', $id)
|
||||||
|
->get(['l.*']);
|
||||||
|
|
||||||
|
$ip_addresses = DB::table('ips as i')
|
||||||
|
->where('i.service_id', '=', $id)
|
||||||
|
->get(['i.*']);
|
||||||
|
|
||||||
|
$server['ip_addresses'] = $ip_addresses;
|
||||||
|
$server['yabs'] = $yabs;
|
||||||
|
$server['disk_speed'] = $disk_speed;
|
||||||
|
$server['network_speed'] = $network_speed;
|
||||||
|
$server['labels'] = $labels;
|
||||||
|
|
||||||
return response($server, 200);
|
return response($server, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,8 +76,7 @@ class ApiController extends Controller
|
||||||
|
|
||||||
protected function getPricing($id)
|
protected function getPricing($id)
|
||||||
{
|
{
|
||||||
$pricing = Pricing::where('id', $id)
|
$pricing = Pricing::where('id', $id)->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
|
||||||
return response($pricing, 200);
|
return response($pricing, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +88,8 @@ class ApiController extends Controller
|
||||||
|
|
||||||
protected function getNetworkSpeeds($id)
|
protected function getNetworkSpeeds($id)
|
||||||
{
|
{
|
||||||
$ns = NetworkSpeed::where('server_id', $id)
|
$ns = DB::table('network_speed as n')
|
||||||
|
->where('n.server_id', '=', $id)
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($ns, 200);
|
return response($ns, 200);
|
||||||
}
|
}
|
||||||
|
@ -72,68 +102,77 @@ class ApiController extends Controller
|
||||||
|
|
||||||
protected function getLabel($id)
|
protected function getLabel($id)
|
||||||
{
|
{
|
||||||
$label = Labels::where('id', $id)
|
$label = DB::table('labels as l')
|
||||||
|
->where('l.id', '=', $id)
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($label, 200);
|
return response($label, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getAllShared()
|
protected function getAllShared()
|
||||||
{
|
{
|
||||||
$shared = Shared::allSharedHosting()->toJson(JSON_PRETTY_PRINT);
|
$shared = DB::table('shared_hosting as sh')
|
||||||
|
->Join('pricings as p', 'sh.id', '=', 'p.service_id')
|
||||||
|
->get(['sh.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($shared, 200);
|
return response($shared, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getShared($id)
|
protected function getShared($id)
|
||||||
{
|
{
|
||||||
$shared = Shared::sharedHosting($id)->toJson(JSON_PRETTY_PRINT);
|
$shared = DB::table('shared_hosting as sh')
|
||||||
|
->Join('pricings as p', 'sh.id', '=', 'p.service_id')
|
||||||
|
->where('sh.id', '=', $id)
|
||||||
|
->get(['sh.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($shared, 200);
|
return response($shared, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getAllReseller()
|
protected function getAllReseller()
|
||||||
{
|
{
|
||||||
$reseller = Reseller::allResellerHosting()->toJson(JSON_PRETTY_PRINT);
|
$reseller = DB::table('reseller_hosting as rh')
|
||||||
|
->Join('pricings as p', 'rh.id', '=', 'p.service_id')
|
||||||
|
->get(['rh.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($reseller, 200);
|
return response($reseller, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getReseller($id)
|
protected function getReseller($id)
|
||||||
{
|
{
|
||||||
$reseller = Reseller::resellerHosting($id)->toJson(JSON_PRETTY_PRINT);
|
$reseller = DB::table('reseller_hosting as rh')
|
||||||
return response($reseller, 200);
|
->Join('pricings as p', 'rh.id', '=', 'p.service_id')
|
||||||
}
|
->where('rh.id', '=', $id)
|
||||||
|
->get(['rh.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
protected function getAllSeedbox()
|
|
||||||
{
|
|
||||||
$reseller = SeedBoxes::allSeedboxes()->toJson(JSON_PRETTY_PRINT);
|
|
||||||
return response($reseller, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getSeedbox($id)
|
|
||||||
{
|
|
||||||
$reseller = SeedBoxes::seedbox($id)->toJson(JSON_PRETTY_PRINT);
|
|
||||||
return response($reseller, 200);
|
return response($reseller, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getAllDomains()
|
protected function getAllDomains()
|
||||||
{
|
{
|
||||||
$domains = Domains::allDomains()->toJson(JSON_PRETTY_PRINT);
|
$domains = DB::table('domains as d')
|
||||||
|
->Join('pricings as p', 'd.id', '=', 'p.service_id')
|
||||||
|
->get(['d.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($domains, 200);
|
return response($domains, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getDomains($id)
|
protected function getDomains($id)
|
||||||
{
|
{
|
||||||
$domain = Domains::domain($id)->toJson(JSON_PRETTY_PRINT);
|
$domain = DB::table('domains as d')
|
||||||
|
->Join('pricings as p', 'd.id', '=', 'p.service_id')
|
||||||
|
->where('d.id', '=', $id)
|
||||||
|
->get(['d.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($domain, 200);
|
return response($domain, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getAllMisc()
|
protected function getAllMisc()
|
||||||
{
|
{
|
||||||
$misc = Misc::allMisc()->toJson(JSON_PRETTY_PRINT);
|
$misc = DB::table('misc_services as m')
|
||||||
|
->Join('pricings as p', 'm.id', '=', 'p.service_id')
|
||||||
|
->get(['m.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($misc, 200);
|
return response($misc, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getMisc($id)
|
protected function getMisc($id)
|
||||||
{
|
{
|
||||||
$misc = Misc::misc($id)->toJson(JSON_PRETTY_PRINT);
|
$misc = DB::table('misc_services as m')
|
||||||
|
->Join('pricings as p', 'm.id', '=', 'p.service_id')
|
||||||
|
->where('m.id', '=', $id)
|
||||||
|
->get(['m.*', 'p.id as price_id', 'p.currency', 'p.price', 'p.term', 'p.as_usd', 'p.usd_per_month', 'p.next_due_date'])->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($misc, 200);
|
return response($misc, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,7 +186,7 @@ class ApiController extends Controller
|
||||||
protected function getDns($id)
|
protected function getDns($id)
|
||||||
{
|
{
|
||||||
$dns = DB::table('d_n_s')
|
$dns = DB::table('d_n_s')
|
||||||
->where('id', $id)
|
->where('id', '=', $id)
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($dns, 200);
|
return response($dns, 200);
|
||||||
}
|
}
|
||||||
|
@ -162,7 +201,7 @@ class ApiController extends Controller
|
||||||
protected function getLocation($id)
|
protected function getLocation($id)
|
||||||
{
|
{
|
||||||
$location = DB::table('locations')
|
$location = DB::table('locations')
|
||||||
->where('id', $id)
|
->where('id', '=', $id)
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($location, 200);
|
return response($location, 200);
|
||||||
}
|
}
|
||||||
|
@ -177,7 +216,7 @@ class ApiController extends Controller
|
||||||
protected function getProvider($id)
|
protected function getProvider($id)
|
||||||
{
|
{
|
||||||
$providers = DB::table('providers')
|
$providers = DB::table('providers')
|
||||||
->where('id', $id)
|
->where('id', '=', $id)
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($providers, 200);
|
return response($providers, 200);
|
||||||
}
|
}
|
||||||
|
@ -191,14 +230,14 @@ class ApiController extends Controller
|
||||||
|
|
||||||
protected function getAllOs()
|
protected function getAllOs()
|
||||||
{
|
{
|
||||||
$os = OS::allOS()->toJson(JSON_PRETTY_PRINT);
|
$os = OS::all()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($os, 200);
|
return response($os, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getOs($id)
|
protected function getOs($id)
|
||||||
{
|
{
|
||||||
$os = DB::table('os as o')
|
$os = DB::table('os as o')
|
||||||
->where('o.id', $id)
|
->where('o.id', '=', $id)
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($os, 200);
|
return response($os, 200);
|
||||||
}
|
}
|
||||||
|
@ -212,7 +251,7 @@ class ApiController extends Controller
|
||||||
protected function getIP($id)
|
protected function getIP($id)
|
||||||
{
|
{
|
||||||
$ip = DB::table('ips as i')
|
$ip = DB::table('ips as i')
|
||||||
->where('i.id', $id)
|
->where('i.id', '=', $id)
|
||||||
->get()->toJson(JSON_PRETTY_PRINT);
|
->get()->toJson(JSON_PRETTY_PRINT);
|
||||||
return response($ip, 200);
|
return response($ip, 200);
|
||||||
}
|
}
|
||||||
|
@ -250,7 +289,6 @@ class ApiController extends Controller
|
||||||
if (isset($data['0']['ip'])) {
|
if (isset($data['0']['ip'])) {
|
||||||
return response(array('ip' => $data['0']['ip']), 200);
|
return response(array('ip' => $data['0']['ip']), 200);
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case "AAAA":
|
case "AAAA":
|
||||||
$data = dns_get_record($domainname, DNS_AAAA);
|
$data = dns_get_record($domainname, DNS_AAAA);
|
||||||
if (isset($data['0']['ipv6'])) {
|
if (isset($data['0']['ipv6'])) {
|
||||||
|
@ -261,250 +299,4 @@ class ApiController extends Controller
|
||||||
return response(array('ip' => null), 200);
|
return response(array('ip' => null), 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function storeServer(Request $request)
|
|
||||||
{
|
|
||||||
$rules = [
|
|
||||||
'hostname' => 'min:3',
|
|
||||||
'server_type' => 'required|integer',
|
|
||||||
'os_id' => 'required|integer',
|
|
||||||
'provider_id' => 'required|integer',
|
|
||||||
'location_id' => 'required|integer',
|
|
||||||
'ssh_port' => 'required|integer',
|
|
||||||
'ram' => 'required|integer',
|
|
||||||
'ram_as_mb' => 'required|integer',
|
|
||||||
'disk' => 'required|integer',
|
|
||||||
'disk_as_gb' => 'required|integer',
|
|
||||||
'cpu' => 'required|integer',
|
|
||||||
'bandwidth' => 'required|integer',
|
|
||||||
'was_promo' => 'required|integer',
|
|
||||||
'active' => 'required|integer',
|
|
||||||
'show_public' => 'required|integer',
|
|
||||||
'ip1' => 'ip',
|
|
||||||
'ip2' => 'ip',
|
|
||||||
'owned_since' => 'required|date',
|
|
||||||
'ram_type' => 'required|string|size:2',
|
|
||||||
'disk_type' => 'required|string|size:2',
|
|
||||||
'currency' => 'required|string|size:3',
|
|
||||||
'price' => 'required|numeric',
|
|
||||||
'payment_term' => 'required|integer',
|
|
||||||
'next_due_date' => 'date',
|
|
||||||
];
|
|
||||||
|
|
||||||
$messages = [
|
|
||||||
'required' => ':attribute is required',
|
|
||||||
'min' => ':attribute must be longer than 3',
|
|
||||||
'integer' => ':attribute must be an integer',
|
|
||||||
'string' => ':attribute must be a string',
|
|
||||||
'size' => ':attribute must be exactly :size characters',
|
|
||||||
'numeric' => ':attribute must be a float',
|
|
||||||
'ip' => ':attribute must be a valid IP address',
|
|
||||||
'date' => ':attribute must be a date Y-m-d',
|
|
||||||
];
|
|
||||||
|
|
||||||
$validator = Validator::make($request->all(), $rules, $messages);
|
|
||||||
|
|
||||||
if ($validator->fails()) {
|
|
||||||
return response()->json(['result' => 'fail', 'messages' => $validator->messages()], 400);
|
|
||||||
}
|
|
||||||
|
|
||||||
$server_id = Str::random(8);
|
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->insertPricing(1, $server_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
if (!is_null($request->ip1)) {
|
|
||||||
IPs::insertIP($server_id, $request->ip1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_null($request->ip2)) {
|
|
||||||
IPs::insertIP($server_id, $request->ip2);
|
|
||||||
}
|
|
||||||
|
|
||||||
$insert = Server::create([
|
|
||||||
'id' => $server_id,
|
|
||||||
'hostname' => $request->hostname,
|
|
||||||
'server_type' => $request->server_type,
|
|
||||||
'os_id' => $request->os_id,
|
|
||||||
'ssh_port' => $request->ssh_port,
|
|
||||||
'provider_id' => $request->provider_id,
|
|
||||||
'location_id' => $request->location_id,
|
|
||||||
'ram' => $request->ram,
|
|
||||||
'ram_type' => $request->ram_type,
|
|
||||||
'ram_as_mb' => ($request->ram_type === 'MB') ? $request->ram : ($request->ram * 1024),
|
|
||||||
'disk' => $request->disk,
|
|
||||||
'disk_type' => $request->disk_type,
|
|
||||||
'disk_as_gb' => ($request->disk_type === 'GB') ? $request->disk : ($request->disk * 1024),
|
|
||||||
'owned_since' => $request->owned_since,
|
|
||||||
'ns1' => $request->ns1,
|
|
||||||
'ns2' => $request->ns2,
|
|
||||||
'bandwidth' => $request->bandwidth,
|
|
||||||
'cpu' => $request->cpu,
|
|
||||||
'was_promo' => $request->was_promo,
|
|
||||||
'show_public' => (isset($request->show_public)) ? 1 : 0
|
|
||||||
]);
|
|
||||||
|
|
||||||
Server::serverRelatedCacheForget();
|
|
||||||
|
|
||||||
if ($insert) {
|
|
||||||
return response()->json(array('result' => 'success', 'server_id' => $server_id), 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
return response()->json(array('result' => 'fail', 'request' => $request->post()), 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function destroyServer(Request $request)
|
|
||||||
{
|
|
||||||
$items = Server::find($request->id);
|
|
||||||
|
|
||||||
(!is_null($items)) ? $result = $items->delete() : $result = false;
|
|
||||||
|
|
||||||
$p = new Pricing();
|
|
||||||
$p->deletePricing($request->id);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($request->id);
|
|
||||||
IPs::deleteIPsAssignedTo($request->id);
|
|
||||||
Server::serverRelatedCacheForget();
|
|
||||||
|
|
||||||
if ($result) {
|
|
||||||
return response()->json(array('result' => 'success'), 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
return response()->json(array('result' => 'fail'), 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateServer(Request $request)
|
|
||||||
{
|
|
||||||
$rules = [
|
|
||||||
'hostname' => 'string|min:3',
|
|
||||||
'server_type' => 'integer',
|
|
||||||
'os_id' => 'integer',
|
|
||||||
'provider_id' => 'integer',
|
|
||||||
'location_id' => 'integer',
|
|
||||||
'ssh_port' => 'integer',
|
|
||||||
'ram' => 'integer',
|
|
||||||
'ram_as_mb' => 'integer',
|
|
||||||
'disk' => 'integer',
|
|
||||||
'disk_as_gb' => 'integer',
|
|
||||||
'cpu' => 'integer',
|
|
||||||
'bandwidth' => 'integer',
|
|
||||||
'was_promo' => 'integer',
|
|
||||||
'active' => 'integer',
|
|
||||||
'show_public' => 'integer',
|
|
||||||
'owned_since' => 'date',
|
|
||||||
'ram_type' => 'string|size:2',
|
|
||||||
'disk_type' => 'string|size:2',
|
|
||||||
'currency' => 'string|size:3',
|
|
||||||
'price' => 'numeric',
|
|
||||||
'payment_term' => 'integer',
|
|
||||||
'next_due_date' => 'date',
|
|
||||||
];
|
|
||||||
|
|
||||||
$messages = [
|
|
||||||
'required' => ':attribute is required',
|
|
||||||
'min' => ':attribute must be longer than 3',
|
|
||||||
'integer' => ':attribute must be an integer',
|
|
||||||
'string' => ':attribute must be a string',
|
|
||||||
'size' => ':attribute must be exactly :size characters',
|
|
||||||
'numeric' => ':attribute must be a float',
|
|
||||||
'date' => ':attribute must be a date Y-m-d',
|
|
||||||
];
|
|
||||||
|
|
||||||
$validator = Validator::make($request->all(), $rules, $messages);
|
|
||||||
|
|
||||||
if ($validator->fails()) {
|
|
||||||
return response()->json(['result' => 'fail', 'messages' => $validator->messages()], 400);
|
|
||||||
}
|
|
||||||
|
|
||||||
$server_update = Server::where('id', $request->id)->update(request()->all());
|
|
||||||
|
|
||||||
Server::serverRelatedCacheForget();
|
|
||||||
Server::serverSpecificCacheForget($request->id);
|
|
||||||
|
|
||||||
if ($server_update) {
|
|
||||||
return response()->json(array('result' => 'success', 'server_id' => $request->id), 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
return response()->json(array('result' => 'fail', 'request' => $request->post()), 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updatePricing(Request $request)
|
|
||||||
{
|
|
||||||
$rules = [
|
|
||||||
'price' => 'required|numeric',
|
|
||||||
'currency' => 'required|string|size:3',
|
|
||||||
'term' => 'required|integer',
|
|
||||||
'active' => 'integer',
|
|
||||||
'next_due_date' => 'date',
|
|
||||||
];
|
|
||||||
|
|
||||||
$messages = [
|
|
||||||
'required' => ':attribute is required',
|
|
||||||
'integer' => ':attribute must be an integer',
|
|
||||||
'string' => ':attribute must be a string',
|
|
||||||
'size' => ':attribute must be exactly :size characters',
|
|
||||||
'numeric' => ':attribute must be a float',
|
|
||||||
'date' => ':attribute must be a date Y-m-d',
|
|
||||||
];
|
|
||||||
|
|
||||||
$validator = Validator::make($request->all(), $rules, $messages);
|
|
||||||
|
|
||||||
if ($validator->fails()) {
|
|
||||||
return response()->json(['result' => 'fail', 'messages' => $validator->messages()], 400);
|
|
||||||
}
|
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
|
|
||||||
$request->as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
|
||||||
|
|
||||||
$request->usd_per_month = $pricing->costAsPerMonth($request->as_usd, $request->term);
|
|
||||||
|
|
||||||
$price_update = Pricing::where('id', $request->id)->update(request()->all());
|
|
||||||
|
|
||||||
Cache::forget("all_pricing");
|
|
||||||
Server::serverRelatedCacheForget();
|
|
||||||
|
|
||||||
if ($price_update) {
|
|
||||||
return response()->json(array('result' => 'success', 'server_id' => $request->id), 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
return response()->json(array('result' => 'fail', 'request' => $request->post()), 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function storeYabs(Request $request, Server $server, string $key): \Illuminate\Http\JsonResponse
|
|
||||||
{
|
|
||||||
$r = User::where('api_token', $key)->first();
|
|
||||||
if (!isset($r->id)) {
|
|
||||||
return response()->json(['error' => 'Unauthenticated'], 401);
|
|
||||||
}
|
|
||||||
|
|
||||||
$insert = Yabs::insertFromJson($request, $server->id);
|
|
||||||
|
|
||||||
if ($insert) {
|
|
||||||
Cache::forget('all_active_servers');//all servers cache
|
|
||||||
Cache::forget('non_active_servers');//all servers cache
|
|
||||||
Cache::forget('all_yabs');//Forget the all YABS cache
|
|
||||||
return response()->json(array('message' => 'Successfully added YABS'), 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
return response()->json(array('error' => 'Server error'), 500);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getAllYabs()
|
|
||||||
{
|
|
||||||
$yabs = Yabs::allYabs()->toJson(JSON_PRETTY_PRINT);
|
|
||||||
return response($yabs, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getYabs($id)
|
|
||||||
{
|
|
||||||
$yabs = Yabs::yabs($id)->toJson(JSON_PRETTY_PRINT);
|
|
||||||
return response($yabs, 200);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function getNote($id)
|
|
||||||
{
|
|
||||||
$note = Note::where('id', $id)->firstOrFail('note')->pluck('note');
|
|
||||||
return response($note, 200)->header('Content-Type', 'text/plain');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,8 @@ use App\Models\Reseller;
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Models\Domains;
|
use App\Models\Domains;
|
||||||
use App\Models\Shared;
|
use App\Models\Shared;
|
||||||
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
|
@ -33,13 +33,9 @@ class DNSController extends Controller
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'hostname' => 'required|string|min:2',
|
'hostname' => 'required|min:2',
|
||||||
'address' => 'required|string|min:2',
|
'address' => 'required|min:2',
|
||||||
'dns_type' => 'required|string',
|
'dns_type' => 'required'
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$dns_id = Str::random(8);
|
$dns_id = Str::random(8);
|
||||||
|
@ -55,9 +51,13 @@ class DNSController extends Controller
|
||||||
'domain_id' => ($request->domain_id !== 'null') ? $request->domain_id : null
|
'domain_id' => ($request->domain_id !== 'null') ? $request->domain_id : null
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $dns_id);
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
Cache::forget('dns_count');
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned (label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $dns_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return redirect()->route('dns.index')
|
return redirect()->route('dns.index')
|
||||||
->with('success', 'DNS Created Successfully.');
|
->with('success', 'DNS Created Successfully.');
|
||||||
|
@ -68,8 +68,8 @@ class DNSController extends Controller
|
||||||
$dns = DNS::findOrFail($dn->id);
|
$dns = DNS::findOrFail($dn->id);
|
||||||
|
|
||||||
$labels = DB::table('labels_assigned as l')
|
$labels = DB::table('labels_assigned as l')
|
||||||
->join('labels', 'l.label_id', 'labels.id')
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
->where('l.service_id', $dn->id)
|
->where('l.service_id', '=', $dn->id)
|
||||||
->get(['labels.label']);
|
->get(['labels.label']);
|
||||||
|
|
||||||
return view('dns.show', compact(['dn', 'dns', 'labels']));
|
return view('dns.show', compact(['dn', 'dns', 'labels']));
|
||||||
|
@ -83,23 +83,19 @@ class DNSController extends Controller
|
||||||
$Resellers = Reseller::all();
|
$Resellers = Reseller::all();
|
||||||
$dn = DNS::findOrFail($dn->id);
|
$dn = DNS::findOrFail($dn->id);
|
||||||
$labels = DB::table('labels_assigned as l')
|
$labels = DB::table('labels_assigned as l')
|
||||||
->join('labels', 'l.label_id', 'labels.id')
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
->where('l.service_id', $dn->id)
|
->where('l.service_id', '=', $dn->id)
|
||||||
->get(['labels.id']);
|
->get(['labels.id', 'labels.label']);
|
||||||
|
|
||||||
return view('dns.edit', compact(['dn', 'labels','Servers', 'Domains', 'Shareds', 'Resellers']));
|
return view('dns.edit', compact(['dn', 'labels','Servers', 'Domains', 'Shareds', 'Resellers']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, DNS $dn): \Illuminate\Http\RedirectResponse
|
public function update(Request $request, DNS $dn)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'hostname' => 'required|string|min:2',
|
'hostname' => 'required|min:2',
|
||||||
'address' => 'required|string|min:2',
|
'address' => 'required|min:2',
|
||||||
'dns_type' => 'required|string',
|
'dns_type' => 'required'
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$dn->update([
|
$dn->update([
|
||||||
|
@ -112,26 +108,31 @@ class DNSController extends Controller
|
||||||
'domain_id' => ($request->domain_id !== 'null') ? $request->domain_id : null
|
'domain_id' => ($request->domain_id !== 'null') ? $request->domain_id : null
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($dn->id);
|
|
||||||
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $dn->id);
|
$deleted = DB::table('labels_assigned')->where('service_id', '=', $dn->id)->delete();
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned ( label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $dn->id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return redirect()->route('dns.index')
|
return redirect()->route('dns.index')
|
||||||
->with('success', 'DNS updated Successfully.');
|
->with('success', 'DNS updated Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(DNS $dn): \Illuminate\Http\RedirectResponse
|
public function destroy(DNS $dn)
|
||||||
{
|
{
|
||||||
if ( $dn->delete()){
|
$id = $dn->id;
|
||||||
Cache::forget('dns_count');
|
$items = DNS::find($id);
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($dn->id);
|
$items->delete();
|
||||||
|
|
||||||
|
Labels::deleteLabelsAssignedTo($id);
|
||||||
|
|
||||||
return redirect()->route('dns.index')
|
return redirect()->route('dns.index')
|
||||||
->with('success', 'DNS was deleted Successfully.');
|
->with('success', 'DNS was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('dns.index')
|
|
||||||
->with('error', 'DNS was not deleted.');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,5 +7,23 @@ use Illuminate\Http\Request;
|
||||||
|
|
||||||
class DiskSpeedController extends Controller
|
class DiskSpeedController extends Controller
|
||||||
{
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(DiskSpeed $diskSpeed)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Domains;
|
use App\Models\Domains;
|
||||||
use App\Models\Home;
|
|
||||||
use App\Models\Labels;
|
use App\Models\Labels;
|
||||||
use App\Models\Pricing;
|
use App\Models\Pricing;
|
||||||
use App\Models\Providers;
|
use App\Models\Providers;
|
||||||
|
@ -14,45 +13,51 @@ use Illuminate\Support\Str;
|
||||||
|
|
||||||
class DomainsController extends Controller
|
class DomainsController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$domains = Domains::allDomains();
|
$domains = DB::table('domains as d')
|
||||||
|
->join('providers as p', 'd.provider_id', '=', 'p.id')
|
||||||
|
->join('pricings as pr', 'd.id', '=', 'pr.service_id')
|
||||||
|
->get(['d.*', 'p.name as provider_name', 'pr.*']);
|
||||||
|
|
||||||
return view('domains.index', compact(['domains']));
|
return view('domains.index', compact(['domains']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show(Domains $domain)
|
public function show(Domains $domain)
|
||||||
{//Need to modern
|
{
|
||||||
$domain_info = Domains::domain($domain->id);
|
|
||||||
return view('domains.show', compact(['domain_info']));
|
$service_extras = DB::table('domains as d')
|
||||||
|
->join('providers as p', 'd.provider_id', '=', 'p.id')
|
||||||
|
->join('pricings as pr', 'd.id', '=', 'pr.service_id')
|
||||||
|
->where('d.id', '=', $domain->id)
|
||||||
|
->get(['d.*', 'p.name as provider_name', 'pr.*']);
|
||||||
|
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $domain->id)
|
||||||
|
->get(['labels.label']);
|
||||||
|
|
||||||
|
return view('domains.show', compact(['domain', 'service_extras', 'labels']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return view('domains.create');
|
$Providers = Providers::all();
|
||||||
|
return view('domains.create', compact('Providers'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'domain' => 'required|string|min:2',
|
'domain' => 'required|min:2',
|
||||||
'extension' => 'required|string|min:2',
|
'extension' => 'required|min:2',
|
||||||
'ns1' => 'sometimes|nullable|min:2',
|
'provider_id' => 'numeric',
|
||||||
'ns2' => 'sometimes|nullable|min:2',
|
|
||||||
'ns3' => 'sometimes|nullable|min:2',
|
|
||||||
'provider_id' => 'integer',
|
|
||||||
'payment_term' => 'integer',
|
|
||||||
'price' => 'numeric',
|
'price' => 'numeric',
|
||||||
'next_due_date' => 'required|date',
|
'next_due_date' => 'required|date'
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$domain_id = Str::random(8);
|
$domain_id = Str::random(8);
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->insertPricing(4, $domain_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Domains::create([
|
Domains::create([
|
||||||
'id' => $domain_id,
|
'id' => $domain_id,
|
||||||
|
@ -65,10 +70,32 @@ class DomainsController extends Controller
|
||||||
'owned_since' => $request->owned_since
|
'owned_since' => $request->owned_since
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $domain_id);
|
$pricing = new Pricing();
|
||||||
|
|
||||||
Cache::forget("all_domains");
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
Home::homePageCacheForget();
|
|
||||||
|
Pricing::create([
|
||||||
|
'service_id' => $domain_id,
|
||||||
|
'service_type' => 4,
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned (label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $domain_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('domains.index')
|
return redirect()->route('domains.index')
|
||||||
->with('success', 'Domain Created Successfully.');
|
->with('success', 'Domain Created Successfully.');
|
||||||
|
@ -76,32 +103,28 @@ class DomainsController extends Controller
|
||||||
|
|
||||||
public function edit(Domains $domain)
|
public function edit(Domains $domain)
|
||||||
{
|
{
|
||||||
$domain_info = Domains::domain($domain->id);
|
$domain_info = DB::table('domains as d')
|
||||||
return view('domains.edit', compact(['domain_info']));
|
->join('pricings as pr', 'd.id', '=', 'pr.service_id')
|
||||||
|
->where('d.id', '=', $domain->id)
|
||||||
|
->get(['d.*', 'pr.*']);
|
||||||
|
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $domain->id)
|
||||||
|
->get(['labels.id', 'labels.label']);
|
||||||
|
|
||||||
|
return view('domains.edit', compact(['domain', 'domain_info', 'labels']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, Domains $domain)
|
public function update(Request $request, Domains $domain)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'domain' => 'required|string|min:2',
|
'domain' => 'required|min:2',
|
||||||
'extension' => 'required|string|min:2',
|
'extension' => 'required|min:2',
|
||||||
'ns1' => 'sometimes|nullable|min:2',
|
'provider_id' => 'numeric',
|
||||||
'ns2' => 'sometimes|nullable|min:2',
|
'price' => 'numeric'
|
||||||
'ns3' => 'sometimes|nullable|min:2',
|
|
||||||
'provider_id' => 'integer',
|
|
||||||
'payment_term' => 'integer',
|
|
||||||
'price' => 'numeric',
|
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->updatePricing($domain->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
$domain->update([
|
$domain->update([
|
||||||
'domain' => $request->domain,
|
'domain' => $request->domain,
|
||||||
'extension' => $request->extension,
|
'extension' => $request->extension,
|
||||||
|
@ -113,13 +136,36 @@ class DomainsController extends Controller
|
||||||
'active' => (isset($request->is_active)) ? 1 : 0
|
'active' => (isset($request->is_active)) ? 1 : 0
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($domain->id);
|
$pricing = new Pricing();
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $domain->id);
|
|
||||||
|
|
||||||
Cache::forget("all_domains");
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
Cache::forget("domain.{$domain->id}");
|
|
||||||
Cache::forget("labels_for_service.{$domain->id}");
|
DB::table('pricings')
|
||||||
Home::homePageCacheForget();
|
->where('service_id', $domain->id)
|
||||||
|
->update([
|
||||||
|
'service_type' => 4,
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
'active' => (isset($request->is_active)) ? 1 : 0
|
||||||
|
]);
|
||||||
|
|
||||||
|
$deleted = DB::table('labels_assigned')->where('service_id', '=', $domain->id)->delete();
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned ( label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $domain->id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('domains.index')
|
return redirect()->route('domains.index')
|
||||||
->with('success', 'Domain Updated Successfully.');
|
->with('success', 'Domain Updated Successfully.');
|
||||||
|
@ -127,22 +173,21 @@ class DomainsController extends Controller
|
||||||
|
|
||||||
public function destroy(Domains $domain)
|
public function destroy(Domains $domain)
|
||||||
{
|
{
|
||||||
if ($domain->delete()){
|
$items = Domains::find($domain->id);
|
||||||
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
$p = new Pricing();
|
$p = new Pricing();
|
||||||
$p->deletePricing($domain->id);
|
$p->deletePricing($domain->id);
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($domain->id);
|
Labels::deleteLabelsAssignedTo($domain->id);
|
||||||
|
|
||||||
Cache::forget("all_domains");
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
Cache::forget("domain.{$domain->id}");
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
Home::homePageCacheForget();
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('domains.index')
|
return redirect()->route('domains.index')
|
||||||
->with('success', 'Domain was deleted Successfully.');
|
->with('success', 'Domain was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('domains.index')
|
|
||||||
->with('error', 'Domain was not deleted.');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,17 +2,23 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\DNS;
|
|
||||||
use App\Models\Home;
|
|
||||||
use App\Models\Labels;
|
|
||||||
use App\Models\Pricing;
|
use App\Models\Pricing;
|
||||||
use App\Models\Settings;
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Process;
|
use App\Process;
|
||||||
use Illuminate\Support\Facades\Session;
|
use Illuminate\Support\Facades\Session;
|
||||||
|
|
||||||
|
//Custom code example
|
||||||
|
|
||||||
class HomeController extends Controller
|
class HomeController extends Controller
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Create a new controller instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->middleware('auth');
|
$this->middleware('auth');
|
||||||
|
@ -23,48 +29,147 @@ class HomeController extends Controller
|
||||||
$p = new Process();
|
$p = new Process();
|
||||||
$p->startTimer();
|
$p->startTimer();
|
||||||
|
|
||||||
//Get & set the settings, 1 minute cache
|
$services_count = Cache::remember('services_count', 1440, function () {
|
||||||
$settings = Settings::getSettings();
|
return DB::table('pricings')
|
||||||
Settings::setSettingsToSession($settings);
|
->select('service_type', DB::raw('COUNT(*) as amount'))
|
||||||
|
->groupBy('service_type')
|
||||||
|
->where('active', '=', 1)
|
||||||
|
->get();
|
||||||
|
});
|
||||||
|
|
||||||
|
$due_soon = Cache::remember('due_soon', 1440, function () {
|
||||||
|
return DB::table('pricings as p')
|
||||||
|
->leftJoin('servers as s', 'p.service_id', '=', 's.id')
|
||||||
|
->leftJoin('shared_hosting as sh', 'p.service_id', '=', 'sh.id')
|
||||||
|
->leftJoin('reseller_hosting as r', 'p.service_id', '=', 'r.id')
|
||||||
|
->leftJoin('domains as d', 'p.service_id', '=', 'd.id')
|
||||||
|
->leftJoin('misc_services as ms', 'p.service_id', '=', 'ms.id')
|
||||||
|
->where('p.active', '=', 1)
|
||||||
|
->orderBy('next_due_date', 'ASC')
|
||||||
|
->limit(6)
|
||||||
|
->get(['p.*', 's.hostname', 'd.domain', 'd.extension', 'r.main_domain as reseller', 'sh.main_domain', 'ms.name']);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
//Check for past due date and refresh the due date if so:
|
//Check for past due date and refresh the due date if so:
|
||||||
$due_soon = Home::doDueSoon(Home::dueSoonData());
|
$pricing = new Pricing();
|
||||||
|
$count = 0;
|
||||||
|
foreach ($due_soon as $service) {
|
||||||
|
if (Carbon::createFromFormat('Y-m-d', $service->next_due_date)->isPast()) {
|
||||||
|
$months = $pricing->termAsMonths($service->term);//Get months for term to update the next due date to
|
||||||
|
$new_due_date = Carbon::createFromFormat('Y-m-d', $service->next_due_date)->addMonths($months)->format('Y-m-d');
|
||||||
|
DB::table('pricings')//Update the DB
|
||||||
|
->where('service_id', $service->service_id)
|
||||||
|
->update(['next_due_date' => $new_due_date]);
|
||||||
|
$due_soon[$count]->next_due_date = $new_due_date;//Update array being sent to view
|
||||||
|
} else {
|
||||||
|
break;//Break because if this date isnt past than the ones after it in the loop wont be either
|
||||||
|
}
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
|
||||||
//Orders services most recently added first, cached with limit from settings
|
Cache::put('due_soon', $due_soon);
|
||||||
$recently_added = Home::recentlyAdded();
|
|
||||||
|
|
||||||
//Get count tally for each of the services type
|
$recently_added = Cache::remember('recently_added', 1440, function () {
|
||||||
$service_count = Home::doServicesCount(Home::servicesCount());
|
return DB::table('pricings as p')
|
||||||
|
->leftJoin('servers as s', 'p.service_id', '=', 's.id')
|
||||||
|
->leftJoin('shared_hosting as sh', 'p.service_id', '=', 'sh.id')
|
||||||
|
->leftJoin('reseller_hosting as r', 'p.service_id', '=', 'r.id')
|
||||||
|
->leftJoin('domains as d', 'p.service_id', '=', 'd.id')
|
||||||
|
->leftJoin('misc_services as ms', 'p.service_id', '=', 'ms.id')
|
||||||
|
->where('p.active', '=', 1)
|
||||||
|
->orderBy('created_at', 'DESC')
|
||||||
|
->limit(6)
|
||||||
|
->get(['p.*', 's.hostname', 'd.domain', 'd.extension', 'r.main_domain as reseller', 'sh.main_domain', 'ms.name']);
|
||||||
|
});
|
||||||
|
|
||||||
//Get pricing for weekly, monthly, yearly, 2 yearly
|
$settings = Cache::remember('settings', 15, function () {
|
||||||
$pricing_breakdown = Home::breakdownPricing(Pricing::allPricing());
|
return DB::table('settings')
|
||||||
|
->where('id', '=', 1)
|
||||||
|
->get();
|
||||||
|
});
|
||||||
|
|
||||||
//Summary of servers specs
|
Session::put('timer_version_footer', $settings[0]->show_versions_footer);
|
||||||
$server_summary = Home::serverSummary();
|
Session::put('show_servers_public', $settings[0]->show_servers_public);
|
||||||
|
Session::put('show_server_value_ip', $settings[0]->show_server_value_ip);
|
||||||
|
Session::put('show_server_value_hostname', $settings[0]->show_server_value_hostname);
|
||||||
|
Session::put('show_server_value_price', $settings[0]->show_server_value_price);
|
||||||
|
Session::put('show_server_value_yabs', $settings[0]->show_server_value_yabs);
|
||||||
|
Session::put('show_server_value_provider', $settings[0]->show_server_value_provider);
|
||||||
|
Session::put('show_server_value_location', $settings[0]->show_server_value_location);
|
||||||
|
Session::put('default_currency', $settings[0]->default_currency);
|
||||||
|
Session::put('default_server_os', $settings[0]->default_server_os);
|
||||||
|
Session::save();
|
||||||
|
|
||||||
|
$pricing = json_decode(DB::table('pricings')->get(), true);
|
||||||
|
|
||||||
|
$total_cost_weekly = $total_cost_pm = $inactive_count = 0;
|
||||||
|
foreach ($pricing as $price) {
|
||||||
|
if ($price['active'] === 1) {
|
||||||
|
if ($price['term'] === 1) {//1 month
|
||||||
|
$total_cost_weekly += ($price['as_usd'] / 4);
|
||||||
|
$total_cost_pm += $price['as_usd'];
|
||||||
|
} elseif ($price['term'] === 2) {//3 months
|
||||||
|
$total_cost_weekly += ($price['as_usd'] / 12);
|
||||||
|
$total_cost_pm += ($price['as_usd'] / 3);
|
||||||
|
} elseif ($price['term'] === 3) {// 6 month
|
||||||
|
$total_cost_weekly += ($price['as_usd'] / 24);
|
||||||
|
$total_cost_pm += ($price['as_usd'] / 6);
|
||||||
|
} elseif ($price['term'] === 4) {// 1 year
|
||||||
|
$total_cost_weekly += ($price['as_usd'] / 48);
|
||||||
|
$total_cost_pm += ($price['as_usd'] / 12);
|
||||||
|
} elseif ($price['term'] === 5) {//2 years
|
||||||
|
$total_cost_weekly += ($price['as_usd'] / 96);
|
||||||
|
$total_cost_pm += ($price['as_usd'] / 24);
|
||||||
|
} elseif ($price['term'] === 6) {//3 years
|
||||||
|
$total_cost_weekly += ($price['as_usd'] / 144);
|
||||||
|
$total_cost_pm += ($price['as_usd'] / 36);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$inactive_count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$total_cost_yearly = ($total_cost_pm * 12);
|
||||||
|
|
||||||
|
$services_count = json_decode($services_count, true);
|
||||||
|
|
||||||
|
$servers_count = $domains_count = $shared_count = $reseller_count = $other_count = $total_services = 0;
|
||||||
|
|
||||||
|
foreach ($services_count as $sc) {
|
||||||
|
$total_services += $sc['amount'];
|
||||||
|
if ($sc['service_type'] === 1) {
|
||||||
|
$servers_count = $sc['amount'];
|
||||||
|
} else if ($sc['service_type'] === 2) {
|
||||||
|
$shared_count = $sc['amount'];
|
||||||
|
} else if ($sc['service_type'] === 3) {
|
||||||
|
$reseller_count = $sc['amount'];
|
||||||
|
} else if ($sc['service_type'] === 4) {
|
||||||
|
$domains_count = $sc['amount'];
|
||||||
|
} else if ($sc['service_type'] === 5) {
|
||||||
|
$other_count = $sc['amount'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$p->stopTimer();
|
$p->stopTimer();
|
||||||
|
|
||||||
$information = [
|
$information = array(
|
||||||
'servers' => $service_count['servers'],
|
'servers' => $servers_count,
|
||||||
'domains' => $service_count['domains'],
|
'domains' => $domains_count,
|
||||||
'shared' => $service_count['shared'],
|
'shared' => $shared_count,
|
||||||
'reseller' => $service_count['reseller'],
|
'reseller' => $reseller_count,
|
||||||
'misc' => $service_count['other'],
|
'misc' => $other_count,
|
||||||
'seedbox' => $service_count['seedbox'],
|
'labels' => DB::table('labels')->count(),
|
||||||
'labels' => Labels::labelsCount(),
|
'dns' => DB::table('d_n_s')->count(),
|
||||||
'dns' => DNS::dnsCount(),
|
'total_services' => $total_services,
|
||||||
'total_services' => $service_count['total'],
|
'total_inactive' => $inactive_count,
|
||||||
'total_inactive' => $pricing_breakdown['inactive_count'],
|
'total_cost_weekly' => number_format($total_cost_weekly, 2),
|
||||||
'total_cost_weekly' => number_format($pricing_breakdown['total_cost_weekly'], 2),
|
'total_cost_monthly' => number_format($total_cost_pm, 2),
|
||||||
'total_cost_monthly' => number_format($pricing_breakdown['total_cost_monthly'], 2),
|
'total_cost_yearly' => number_format($total_cost_yearly, 2),
|
||||||
'total_cost_yearly' => number_format($pricing_breakdown['total_cost_yearly'], 2),
|
'total_cost_2_yearly' => number_format(($total_cost_yearly * 2), 2),
|
||||||
'total_cost_2_yearly' => number_format(($pricing_breakdown['total_cost_yearly'] * 2), 2),
|
|
||||||
'due_soon' => $due_soon,
|
'due_soon' => $due_soon,
|
||||||
'newest' => $recently_added,
|
'newest' => $recently_added,
|
||||||
'execution_time' => number_format($p->getTimeTaken(), 2),
|
'execution_time' => number_format($p->getTimeTaken(), 2)
|
||||||
'servers_summary' => $server_summary,
|
);
|
||||||
'currency' => Session::get('dashboard_currency')
|
|
||||||
];
|
|
||||||
|
|
||||||
return view('home', compact('information'));
|
return view('home', compact('information'));
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\DNS;
|
||||||
use App\Models\IPs;
|
use App\Models\IPs;
|
||||||
use App\Models\Reseller;
|
use App\Models\Reseller;
|
||||||
use App\Models\SeedBoxes;
|
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Models\Shared;
|
use App\Models\Shared;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class IPsController extends Controller
|
class IPsController extends Controller
|
||||||
|
@ -21,24 +21,22 @@ class IPsController extends Controller
|
||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
$servers = Server::all();
|
$Servers = Server::all();
|
||||||
$shareds = Shared::all();
|
$Shareds = Shared::all();
|
||||||
$resellers = Reseller::all();
|
$Resellers = Reseller::all();
|
||||||
$seed_boxes = SeedBoxes::all();
|
return view('ips.create', compact(['Servers', 'Shareds', 'Resellers']));
|
||||||
return view('ips.create', compact(['servers', 'shareds', 'resellers', 'seed_boxes']));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'address' => 'required|ip|min:2',
|
'address' => 'required|ip|min:2',
|
||||||
'ip_type' => 'required|string|size:4',
|
'ip_type' => 'required'
|
||||||
'service_id' => 'required|string'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$ip_id = Str::random(8);
|
$ip_id = Str::random(8);
|
||||||
|
|
||||||
$ip = IPs::create([
|
IPs::create([
|
||||||
'id' => $ip_id,
|
'id' => $ip_id,
|
||||||
'address' => $request->address,
|
'address' => $request->address,
|
||||||
'is_ipv4' => ($request->ip_type === 'ipv4') ? 1 : 0,
|
'is_ipv4' => ($request->ip_type === 'ipv4') ? 1 : 0,
|
||||||
|
@ -46,32 +44,16 @@ class IPsController extends Controller
|
||||||
'active' => 1
|
'active' => 1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$fetch = IPs::getUpdateIpInfo($ip);
|
|
||||||
|
|
||||||
return redirect()->route('IPs.index')
|
return redirect()->route('IPs.index')
|
||||||
->with('success', 'IP address created Successfully.');
|
->with('success', 'IP address created Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(IPs $IP)
|
public function destroy(IPs $IP)
|
||||||
{
|
{
|
||||||
if ($IP->delete()) {
|
$items = IPs::find($IP->id);
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
return redirect()->route('IPs.index')
|
return redirect()->route('IPs.index')
|
||||||
->with('success', 'IP address was deleted Successfully.');
|
->with('success', 'IP address was deleted Successfully.');
|
||||||
}
|
}
|
||||||
return redirect()->route('IPs.index')
|
|
||||||
->with('error', 'IP was not deleted.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getUpdateWhoIs(IPs $IP): \Illuminate\Http\RedirectResponse
|
|
||||||
{
|
|
||||||
$result = IPs::getUpdateIpInfo($IP);
|
|
||||||
|
|
||||||
if ($result) {
|
|
||||||
return redirect()->route('IPs.index')
|
|
||||||
->with('success', 'IP address updated Successfully.');
|
|
||||||
}
|
|
||||||
return redirect()->route('IPs.index')
|
|
||||||
->with('error', 'IP was not updated.');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ class LabelsController extends Controller
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'label' => 'required|string|min:2'
|
'label' => 'required|min:2'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Labels::create([
|
Labels::create([
|
||||||
|
@ -34,7 +34,6 @@ class LabelsController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget('all_labels');
|
Cache::forget('all_labels');
|
||||||
Cache::forget('labels_count');
|
|
||||||
|
|
||||||
return redirect()->route('labels.index')
|
return redirect()->route('labels.index')
|
||||||
->with('success', 'Label Created Successfully.');
|
->with('success', 'Label Created Successfully.');
|
||||||
|
@ -43,31 +42,35 @@ class LabelsController extends Controller
|
||||||
public function show(Labels $label)
|
public function show(Labels $label)
|
||||||
{
|
{
|
||||||
$labels = DB::table('labels_assigned as las')
|
$labels = DB::table('labels_assigned as las')
|
||||||
->leftJoin('pricings as p', 'las.service_id', 'p.service_id')
|
->leftJoin('pricings as p', 'las.service_id', '=', 'p.service_id')
|
||||||
->leftJoin('servers as s', 'las.service_id', 's.id')
|
->leftJoin('servers as s', 'las.service_id', '=', 's.id')
|
||||||
->leftJoin('shared_hosting as sh', 'las.service_id', 'sh.id')
|
->leftJoin('shared_hosting as sh', 'las.service_id', '=', 'sh.id')
|
||||||
->leftJoin('reseller_hosting as r', 'las.service_id', 'r.id')
|
->leftJoin('reseller_hosting as r', 'las.service_id', '=', 'r.id')
|
||||||
->leftJoin('domains as d', 'las.service_id', 'd.id')
|
->leftJoin('domains as d', 'las.service_id', '=', 'd.id')
|
||||||
->where('las.label_id', $label->id)
|
->where('las.label_id', '=', $label->id)
|
||||||
->get(['p.service_type', 'p.service_id', 's.hostname', 'sh.main_domain as shared', 'r.main_domain as reseller', 'd.domain', 'd.extension']);
|
->get(['p.service_type', 'p.service_id', 's.hostname', 'sh.main_domain as shared', 'r.main_domain as reseller', 'd.domain', 'd.extension']);
|
||||||
|
|
||||||
return view('labels.show', compact(['label', 'labels']));
|
return view('labels.show', compact(['label', 'labels']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function edit(Labels $label)
|
||||||
|
{
|
||||||
|
abort(404);
|
||||||
|
}
|
||||||
|
|
||||||
public function destroy(Labels $label)
|
public function destroy(Labels $label)
|
||||||
{
|
{
|
||||||
if ($label->delete()) {
|
$label_id = $label->id;
|
||||||
Cache::forget('labels_count');
|
|
||||||
|
|
||||||
Labels::deleteLabelAssignedAs($label->id);
|
$items = Labels::find($label_id);
|
||||||
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
|
Labels::deleteLabelAssignedAs($label_id);
|
||||||
|
|
||||||
Cache::forget('all_labels');
|
Cache::forget('all_labels');
|
||||||
|
|
||||||
return redirect()->route('labels.index')
|
return redirect()->route('labels.index')
|
||||||
->with('success', 'Label was deleted Successfully.');
|
->with('success', 'Label was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('labels.index')
|
|
||||||
->with('error', 'Label was not deleted.');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ class LocationsController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$locations = Locations::allLocations();
|
$locations = Locations::all();
|
||||||
return view('locations.index', compact(['locations']));
|
return view('locations.index', compact(['locations']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,14 +24,14 @@ class LocationsController extends Controller
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'location_name' => 'required|string|min:2|max:255'
|
'location_name' => 'required|min:2'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Locations::create([
|
Locations::create([
|
||||||
'name' => $request->location_name
|
'name' => $request->location_name
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget('locations');
|
Cache::forget('all_locations');
|
||||||
|
|
||||||
return redirect()->route('locations.index')
|
return redirect()->route('locations.index')
|
||||||
->with('success', 'Location Created Successfully.');
|
->with('success', 'Location Created Successfully.');
|
||||||
|
@ -40,17 +40,17 @@ class LocationsController extends Controller
|
||||||
public function show(Locations $location)
|
public function show(Locations $location)
|
||||||
{
|
{
|
||||||
$servers = DB::table('servers as s')
|
$servers = DB::table('servers as s')
|
||||||
->where('s.location_id', $location->id)
|
->where('s.location_id', '=', $location->id)
|
||||||
->get(['s.id', 's.hostname'])
|
->get(['s.id', 's.hostname'])
|
||||||
->toArray();
|
->toArray();
|
||||||
|
|
||||||
$shared = DB::table('shared_hosting as s')
|
$shared = DB::table('shared_hosting as s')
|
||||||
->where('s.location_id', $location->id)
|
->where('s.location_id', '=', $location->id)
|
||||||
->get(['s.id', 's.main_domain as main_domain_shared'])
|
->get(['s.id', 's.main_domain as main_domain_shared'])
|
||||||
->toArray();
|
->toArray();
|
||||||
|
|
||||||
$reseller = DB::table('reseller_hosting as r')
|
$reseller = DB::table('reseller_hosting as r')
|
||||||
->where('r.location_id', $location->id)
|
->where('r.location_id', '=', $location->id)
|
||||||
->get(['r.id', 'r.main_domain as main_domain_reseller'])
|
->get(['r.id', 'r.main_domain as main_domain_reseller'])
|
||||||
->toArray();
|
->toArray();
|
||||||
|
|
||||||
|
@ -61,15 +61,13 @@ class LocationsController extends Controller
|
||||||
|
|
||||||
public function destroy(Locations $location)
|
public function destroy(Locations $location)
|
||||||
{
|
{
|
||||||
if ($location->delete()){
|
$items = Locations::find($location->id);
|
||||||
Cache::forget('locations');
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
|
Cache::forget('all_locations');
|
||||||
|
|
||||||
return redirect()->route('locations.index')
|
return redirect()->route('locations.index')
|
||||||
->with('success', 'Location was deleted Successfully.');
|
->with('success', 'Location was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('locations.index')
|
|
||||||
->with('error', 'Location was not deleted.');
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,18 +2,21 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Home;
|
|
||||||
use App\Models\Misc;
|
use App\Models\Misc;
|
||||||
use App\Models\Pricing;
|
use App\Models\Pricing;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class MiscController extends Controller
|
class MiscController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$misc = Misc::allMisc();
|
$misc = DB::table('misc_services as d')
|
||||||
|
->join('pricings as pr', 'd.id', '=', 'pr.service_id')
|
||||||
|
->get(['d.*', 'pr.*']);
|
||||||
|
|
||||||
return view('misc.index', compact(['misc']));
|
return view('misc.index', compact(['misc']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,34 +27,49 @@ class MiscController extends Controller
|
||||||
|
|
||||||
public function show(Misc $misc)
|
public function show(Misc $misc)
|
||||||
{
|
{
|
||||||
$misc_data = Misc::misc($misc->id);
|
$service_extras = DB::table('misc_services as m')
|
||||||
return view('misc.show', compact(['misc_data']));
|
->join('pricings as p', 'm.id', '=', 'p.service_id')
|
||||||
|
->where('m.id', '=', $misc->id)
|
||||||
|
->get(['m.*', 'p.*']);
|
||||||
|
|
||||||
|
return view('misc.show', compact(['misc', 'service_extras']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|string|min:3',
|
'name' => 'required|min:3',
|
||||||
'price' => 'required|numeric',
|
'price' => 'required|numeric',
|
||||||
'payment_term' => 'required|integer',
|
'owned_since' => 'date',
|
||||||
'currency' => 'required|string|size:3',
|
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'next_due_date' => 'required|date'
|
'next_due_date' => 'required|date'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$misc_id = Str::random(8);
|
$ms_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->insertPricing(5, $misc_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Misc::create([
|
Misc::create([
|
||||||
'id' => $misc_id,
|
'id' => $ms_id,
|
||||||
'name' => $request->name,
|
'name' => $request->name,
|
||||||
'owned_since' => $request->owned_since
|
'owned_since' => $request->owned_since
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget("all_misc");
|
$pricing = new Pricing();
|
||||||
Home::homePageCacheForget();
|
|
||||||
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
|
|
||||||
|
Pricing::create([
|
||||||
|
'service_id' => $ms_id,
|
||||||
|
'service_type' => 5,
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
]);
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('misc.index')
|
return redirect()->route('misc.index')
|
||||||
->with('success', 'Misc service created Successfully.');
|
->with('success', 'Misc service created Successfully.');
|
||||||
|
@ -59,33 +77,48 @@ class MiscController extends Controller
|
||||||
|
|
||||||
public function edit(Misc $misc)
|
public function edit(Misc $misc)
|
||||||
{
|
{
|
||||||
$misc_data = Misc::misc($misc->id);
|
$misc = DB::table('misc_services as s')
|
||||||
return view('misc.edit', compact('misc_data'));
|
->join('pricings as p', 's.id', '=', 'p.service_id')
|
||||||
|
->where('s.id', '=', $misc->id)
|
||||||
|
->get(['s.*', 'p.*']);
|
||||||
|
|
||||||
|
return view('misc.edit', compact('misc'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, Misc $misc)
|
public function update(Request $request, Misc $misc)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|string|min:3',
|
'name' => 'required',
|
||||||
'price' => 'required|numeric',
|
'owned_since' => 'date',
|
||||||
'payment_term' => 'required|integer',
|
|
||||||
'currency' => 'required|string|size:3',
|
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'next_due_date' => 'required|date'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$misc->update([
|
DB::table('misc_services')
|
||||||
|
->where('id', $misc->id)
|
||||||
|
->update([
|
||||||
'name' => $request->name,
|
'name' => $request->name,
|
||||||
'owned_since' => $request->owned_since,
|
'owned_since' => $request->owned_since,
|
||||||
'active' => (isset($request->is_active)) ? 1 : 0
|
'active' => (isset($request->is_active)) ? 1 : 0
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$pricing->updatePricing($misc->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Cache::forget("all_misc");
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
Cache::forget("misc.{$misc->id}");
|
|
||||||
Home::homePageCacheForget();
|
DB::table('pricings')
|
||||||
|
->where('service_id', $misc->id)
|
||||||
|
->update([
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
'active' => (isset($request->is_active)) ? 1 : 0
|
||||||
|
]);
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('misc.index')
|
return redirect()->route('misc.index')
|
||||||
->with('success', 'Misc service updated Successfully.');
|
->with('success', 'Misc service updated Successfully.');
|
||||||
|
@ -93,19 +126,18 @@ class MiscController extends Controller
|
||||||
|
|
||||||
public function destroy(Misc $misc)
|
public function destroy(Misc $misc)
|
||||||
{
|
{
|
||||||
if ($misc->delete()) {
|
$items = Misc::find($misc->id);
|
||||||
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
$p = new Pricing();
|
$p = new Pricing();
|
||||||
$p->deletePricing($misc->id);
|
$p->deletePricing($misc->id);
|
||||||
|
|
||||||
Cache::forget("all_misc");
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
Cache::forget("misc.{$misc->id}");
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
Home::homePageCacheForget();
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('misc.index')
|
return redirect()->route('misc.index')
|
||||||
->with('success', 'Misc service was deleted Successfully.');
|
->with('success', 'Misc service was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('misc.index')
|
|
||||||
->with('error', 'Misc service was not deleted.');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,4 +7,18 @@ use Illuminate\Http\Request;
|
||||||
|
|
||||||
class NetworkSpeedController extends Controller
|
class NetworkSpeedController extends Controller
|
||||||
{
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show(NetworkSpeed $networkSpeed)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(NetworkSpeed $networkSpeed)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,123 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use App\Models\DNS;
|
|
||||||
use App\Models\Domains;
|
|
||||||
use App\Models\IPs;
|
|
||||||
use App\Models\Note;
|
|
||||||
use App\Models\Reseller;
|
|
||||||
use App\Models\Server;
|
|
||||||
use App\Models\Shared;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class NoteController extends Controller
|
|
||||||
{
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
$notes = Note::allNotes();
|
|
||||||
return view('notes.index', compact('notes'));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function create()
|
|
||||||
{
|
|
||||||
$servers = Server::all();
|
|
||||||
$shareds = Shared::all();
|
|
||||||
$resellers = Reseller::all();
|
|
||||||
$domains = Domains::all();
|
|
||||||
$dns = DNS::all();
|
|
||||||
$ips = IPs::all();
|
|
||||||
|
|
||||||
return view('notes.create', compact(['servers', 'shareds', 'resellers', 'domains', 'dns', 'ips']));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function store(Request $request)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'service_id' => 'required|string|size:8',
|
|
||||||
'note' => 'required|string',
|
|
||||||
]);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$note_id = Str::random(8);
|
|
||||||
|
|
||||||
$a = Note::create([
|
|
||||||
'id' => $note_id,
|
|
||||||
'service_id' => $request->service_id,
|
|
||||||
'note' => $request->note
|
|
||||||
]);
|
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
|
|
||||||
if ($e->getCode() === "23000") {
|
|
||||||
$message = "A note already exists for this service";
|
|
||||||
} else {
|
|
||||||
$message = "Error inserting note";
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('notes.create')
|
|
||||||
->withInput($request->input())->with('error', $message);
|
|
||||||
}
|
|
||||||
|
|
||||||
Cache::forget('all_notes');
|
|
||||||
|
|
||||||
return redirect()->route('notes.index')
|
|
||||||
->with('success', 'Note created successfully.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function edit(Note $note)
|
|
||||||
{
|
|
||||||
$note = Note::note($note->service_id);
|
|
||||||
$servers = Server::all();
|
|
||||||
$shareds = Shared::all();
|
|
||||||
$resellers = Reseller::all();
|
|
||||||
$domains = Domains::all();
|
|
||||||
$dns = DNS::all();
|
|
||||||
$ips = IPs::all();
|
|
||||||
|
|
||||||
return view('notes.edit', compact(['note', 'servers', 'shareds', 'resellers', 'domains', 'dns', 'ips']));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function update(Request $request, Note $note)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'service_id' => 'required|string|size:8',
|
|
||||||
'note' => 'required|string'
|
|
||||||
]);
|
|
||||||
|
|
||||||
$note->update([
|
|
||||||
'service_id' => $request->service_id,
|
|
||||||
'note' => $request->note
|
|
||||||
]);
|
|
||||||
|
|
||||||
Cache::forget('all_notes');
|
|
||||||
Cache::forget("note.$note->service_id");
|
|
||||||
|
|
||||||
return redirect()->route('notes.index')
|
|
||||||
->with('success', 'Note was updated successfully.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function show(Note $note)
|
|
||||||
{
|
|
||||||
$note = Note::note($note->service_id);
|
|
||||||
return view('notes.show', compact(['note']));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function destroy(Note $note)
|
|
||||||
{
|
|
||||||
if ($note->delete()) {
|
|
||||||
Cache::forget("all_notes");
|
|
||||||
Cache::forget("note.$note->service_id");
|
|
||||||
|
|
||||||
return redirect()->route('notes.index')
|
|
||||||
->with('success', 'Note was deleted successfully.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('notes.index')
|
|
||||||
->with('error', 'Note was not deleted.');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -10,7 +10,7 @@ class OsController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$os = OS::allOS()->toArray();
|
$os = OS::all();
|
||||||
return view('os.index', compact(['os']));
|
return view('os.index', compact(['os']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,14 +22,14 @@ class OsController extends Controller
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'os_name' => 'required|string|min:2|max:255'
|
'os_name' => 'required|min:2'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
OS::create([
|
OS::create([
|
||||||
'name' => $request->os_name
|
'name' => $request->os_name
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget('operating_systems');
|
Cache::forget('all_os');
|
||||||
|
|
||||||
return redirect()->route('os.index')
|
return redirect()->route('os.index')
|
||||||
->with('success', 'OS Created Successfully.');
|
->with('success', 'OS Created Successfully.');
|
||||||
|
@ -37,15 +37,13 @@ class OsController extends Controller
|
||||||
|
|
||||||
public function destroy(OS $o)
|
public function destroy(OS $o)
|
||||||
{
|
{
|
||||||
if ($o->delete()) {
|
$items = OS::find($o->id);
|
||||||
Cache::forget('operating_systems');
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
|
Cache::forget('all_os');
|
||||||
|
|
||||||
return redirect()->route('os.index')
|
return redirect()->route('os.index')
|
||||||
->with('success', 'OS was deleted Successfully.');
|
->with('success', 'OS was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('os.index')
|
|
||||||
->with('error', 'OS was not deleted.');
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,5 +7,13 @@ use Illuminate\Http\Request;
|
||||||
|
|
||||||
class PricingController extends Controller
|
class PricingController extends Controller
|
||||||
{
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(Pricing $pricing)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,16 @@
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Providers;
|
use App\Models\Providers;
|
||||||
|
use DataTables;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class ProvidersController extends Controller
|
class ProvidersController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$providers = Providers::allProviders();
|
$providers = Providers::all();
|
||||||
return view('providers.index', compact(['providers']));
|
return view('providers.index', compact(['providers']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,14 +24,14 @@ class ProvidersController extends Controller
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'provider_name' => 'required|string|min:2|max:255'
|
'provider_name' => 'required|min:2'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Providers::create([
|
Providers::create([
|
||||||
'name' => $request->provider_name
|
'name' => $request->provider_name
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget('providers');
|
Cache::forget('all_providers');
|
||||||
|
|
||||||
return redirect()->route('providers.index')
|
return redirect()->route('providers.index')
|
||||||
->with('success', 'Provider Created Successfully.');
|
->with('success', 'Provider Created Successfully.');
|
||||||
|
@ -37,23 +39,51 @@ class ProvidersController extends Controller
|
||||||
|
|
||||||
public function show(Providers $provider)
|
public function show(Providers $provider)
|
||||||
{
|
{
|
||||||
$data = Providers::showServicesForProvider($provider->id);
|
$servers = DB::table('servers as s')
|
||||||
|
->where('s.provider_id', '=', $provider->id)
|
||||||
|
->get(['s.id', 's.hostname'])
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$shared = DB::table('shared_hosting as s')
|
||||||
|
->where('s.provider_id', '=', $provider->id)
|
||||||
|
->get(['s.id', 's.main_domain as main_domain_shared'])
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$reseller = DB::table('reseller_hosting as r')
|
||||||
|
->where('r.provider_id', '=', $provider->id)
|
||||||
|
->get(['r.id', 'r.main_domain as main_domain_reseller'])
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
$data = array_merge($servers, $shared, $reseller);
|
||||||
|
|
||||||
return view('providers.show', compact(['provider', 'data']));
|
return view('providers.show', compact(['provider', 'data']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(Providers $provider)
|
public function destroy(Providers $provider)
|
||||||
{
|
{
|
||||||
if ($provider->delete()) {
|
$items = Providers::find($provider->id);
|
||||||
Cache::forget('providers');
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
|
Cache::forget('all_providers');
|
||||||
|
|
||||||
return redirect()->route('providers.index')
|
return redirect()->route('providers.index')
|
||||||
->with('success', 'Provider was deleted Successfully.');
|
->with('success', 'Provider was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('providers.index')
|
public function getProviders(Request $request)
|
||||||
->with('error', 'Provider was not deleted.');
|
{
|
||||||
|
if ($request->ajax()) {
|
||||||
|
$data = Providers::latest()->get();
|
||||||
|
$dt = Datatables::of($data)
|
||||||
|
->addIndexColumn()
|
||||||
|
->addColumn('action', function ($row) {
|
||||||
|
$actionBtn = '<a href="javascript:void(0)" class="edit btn btn-success btn-sm">Edit</a> <a href="javascript:void(0)" class="delete btn btn-danger btn-sm">Delete</a>';
|
||||||
|
return $actionBtn;
|
||||||
|
})
|
||||||
|
->rawColumns(['action'])
|
||||||
|
->make(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,66 +2,66 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Home;
|
|
||||||
use App\Models\IPs;
|
use App\Models\IPs;
|
||||||
use App\Models\Labels;
|
use App\Models\Labels;
|
||||||
|
use App\Models\Locations;
|
||||||
use App\Models\Pricing;
|
use App\Models\Pricing;
|
||||||
|
use App\Models\Providers;
|
||||||
use App\Models\Reseller;
|
use App\Models\Reseller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class ResellerController extends Controller
|
class ResellerController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$resellers = Reseller::allResellerHosting();
|
$resellers = DB::table('reseller_hosting as s')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->get(['s.*', 'p.name as provider_name', 'pr.*', 'l.name as location']);
|
||||||
|
|
||||||
return view('reseller.index', compact(['resellers']));
|
return view('reseller.index', compact(['resellers']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return view('reseller.create');
|
$Providers = Providers::all();
|
||||||
|
$Locations = Locations::all();
|
||||||
|
return view('reseller.create', compact(['Providers', 'Locations']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'domain' => 'required|min:4',
|
'domain' => 'required|min:4',
|
||||||
'reseller_type' => 'required|string',
|
'reseller_type' => 'required',
|
||||||
'disk' => 'integer',
|
'dedicated_ip' => 'present',
|
||||||
'os_id' => 'integer',
|
'accounts' => 'numeric',
|
||||||
'provider_id' => 'integer',
|
'server_type' => 'numeric',
|
||||||
'location_id' => 'integer',
|
'ram' => 'numeric',
|
||||||
|
'disk' => 'numeric',
|
||||||
|
'os_id' => 'numeric',
|
||||||
|
'provider_id' => 'numeric',
|
||||||
|
'location_id' => 'numeric',
|
||||||
'price' => 'numeric',
|
'price' => 'numeric',
|
||||||
'payment_term' => 'integer',
|
'payment_term' => 'numeric',
|
||||||
'was_promo' => 'integer',
|
'was_promo' => 'numeric',
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
'owned_since' => 'date',
|
||||||
'accounts' => 'integer',
|
'domains' => 'numeric',
|
||||||
'domains' => 'integer',
|
'sub_domains' => 'numeric',
|
||||||
'sub_domains' => 'integer',
|
'bandwidth' => 'numeric',
|
||||||
'bandwidth' => 'integer',
|
'email' => 'numeric',
|
||||||
'email' => 'integer',
|
'ftp' => 'numeric',
|
||||||
'ftp' => 'integer',
|
'db' => 'numeric',
|
||||||
'db' => 'integer',
|
'next_due_date' => 'required|date'
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$reseller_id = Str::random(8);
|
$reseller_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->insertPricing(3, $reseller_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
if (!is_null($request->dedicated_ip)) {
|
|
||||||
IPs::insertIP($reseller_id, $request->dedicated_ip);
|
|
||||||
}
|
|
||||||
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $reseller_id);
|
|
||||||
|
|
||||||
Reseller::create([
|
Reseller::create([
|
||||||
'id' => $reseller_id,
|
'id' => $reseller_id,
|
||||||
'main_domain' => $request->domain,
|
'main_domain' => $request->domain,
|
||||||
|
@ -82,58 +82,124 @@ class ResellerController extends Controller
|
||||||
'db_limit' => $request->db
|
'db_limit' => $request->db
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget("all_reseller");
|
$pricing = new Pricing();
|
||||||
Home::homePageCacheForget();
|
|
||||||
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
|
|
||||||
|
Pricing::create([
|
||||||
|
'service_id' => $reseller_id,
|
||||||
|
'service_type' => 3,
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (!is_null($request->dedicated_ip)) {
|
||||||
|
IPs::create(
|
||||||
|
[
|
||||||
|
'id' => Str::random(8),
|
||||||
|
'service_id' => $reseller_id,
|
||||||
|
'address' => $request->dedicated_ip,
|
||||||
|
'is_ipv4' => (filter_var($request->dedicated_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1,
|
||||||
|
'active' => 1
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned (label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $reseller_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('reseller.index')
|
return redirect()->route('reseller.index')
|
||||||
->with('success', 'Reseller hosting created Successfully.');
|
->with('success', 'Reseller hosting created Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function show(Reseller $reseller)
|
public function show(Reseller $reseller)
|
||||||
{
|
{
|
||||||
$reseller = Reseller::resellerHosting($reseller->id);
|
$reseller_extras = DB::table('reseller_hosting as s')
|
||||||
return view('reseller.show', compact(['reseller']));
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->where('s.id', '=', $reseller->id)
|
||||||
|
->get(['s.*', 'p.name as provider_name', 'l.name as location', 'pr.*']);
|
||||||
|
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->LeftJoin('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $reseller->id)
|
||||||
|
->get(['labels.label']);
|
||||||
|
|
||||||
|
$ip_address = DB::table('ips as i')
|
||||||
|
->where('i.service_id', '=', $reseller->id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return view('reseller.show', compact(['reseller', 'reseller_extras', 'labels', 'ip_address']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit(Reseller $reseller)
|
public function edit(Reseller $reseller)
|
||||||
{
|
{
|
||||||
$reseller = Reseller::resellerHosting($reseller->id);
|
$locations = DB::table('locations')->get(['*']);
|
||||||
return view('reseller.edit', compact(['reseller']));
|
$providers = json_decode(DB::table('providers')->get(['*']), true);
|
||||||
|
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $reseller->id)
|
||||||
|
->get(['labels.id', 'labels.label']);
|
||||||
|
|
||||||
|
$ip_address = json_decode(DB::table('ips as i')
|
||||||
|
->where('i.service_id', '=', $reseller->id)
|
||||||
|
->get(), true);
|
||||||
|
|
||||||
|
$reseller = DB::table('reseller_hosting as s')
|
||||||
|
->join('pricings as p', 's.id', '=', 'p.service_id')
|
||||||
|
->where('s.id', '=', $reseller->id)
|
||||||
|
->get(['s.*', 'p.*']);
|
||||||
|
|
||||||
|
return view('reseller.edit', compact(['reseller', 'locations', 'providers', 'ip_address', 'labels']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, Reseller $reseller)
|
public function update(Request $request, Reseller $reseller)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
|
'id' => 'required|size:8',
|
||||||
'domain' => 'required|min:4',
|
'domain' => 'required|min:4',
|
||||||
'reseller_type' => 'required|string',
|
'reseller_type' => 'required',
|
||||||
'disk' => 'integer',
|
'dedicated_ip' => 'present',
|
||||||
'os_id' => 'integer',
|
'server_type' => 'numeric',
|
||||||
'provider_id' => 'integer',
|
'disk' => 'numeric',
|
||||||
'location_id' => 'integer',
|
'os_id' => 'numeric',
|
||||||
|
'provider_id' => 'numeric',
|
||||||
|
'location_id' => 'numeric',
|
||||||
'price' => 'numeric',
|
'price' => 'numeric',
|
||||||
'payment_term' => 'integer',
|
'payment_term' => 'numeric',
|
||||||
'was_promo' => 'integer',
|
'was_promo' => 'numeric',
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
'owned_since' => 'date',
|
||||||
'accounts' => 'integer',
|
'domains' => 'numeric',
|
||||||
'domains' => 'integer',
|
'sub_domains' => 'numeric',
|
||||||
'sub_domains' => 'integer',
|
'bandwidth' => 'numeric',
|
||||||
'bandwidth' => 'integer',
|
'email' => 'numeric',
|
||||||
'email' => 'integer',
|
'ftp' => 'numeric',
|
||||||
'ftp' => 'integer',
|
'db' => 'numeric'
|
||||||
'db' => 'integer',
|
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$reseller->update([
|
DB::table('reseller_hosting')
|
||||||
|
->where('id', $request->id)
|
||||||
|
->update([
|
||||||
'main_domain' => $request->domain,
|
'main_domain' => $request->domain,
|
||||||
'reseller_type' => $request->reseller_type,
|
'reseller_type' => $request->reseller_type,
|
||||||
'provider_id' => $request->provider_id,
|
'provider_id' => $request->provider_id,
|
||||||
'location_id' => $request->location_id,
|
'location_id' => $request->location_id,
|
||||||
'accounts' => $request->accounts,
|
|
||||||
'disk' => $request->disk,
|
'disk' => $request->disk,
|
||||||
'disk_type' => 'GB',
|
'disk_type' => 'GB',
|
||||||
'disk_as_gb' => $request->disk,
|
'disk_as_gb' => $request->disk,
|
||||||
|
@ -148,22 +214,44 @@ class ResellerController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$pricing->updatePricing($reseller->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($reseller->id);
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $reseller->id);
|
|
||||||
|
|
||||||
IPs::deleteIPsAssignedTo($reseller->id);
|
DB::table('pricings')
|
||||||
|
->where('service_id', $request->id)
|
||||||
|
->update([
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
]);
|
||||||
|
|
||||||
if (!is_null($request->dedicated_ip)) {
|
$deleted = DB::table('labels_assigned')->where('service_id', '=', $request->id)->delete();
|
||||||
IPs::insertIP($reseller->id, $request->dedicated_ip);
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned ( label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $request->id]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cache::forget("all_reseller");
|
$delete_ip = DB::table('ips')->where('service_id', '=', $request->id)->delete();
|
||||||
Cache::forget("reseller_hosting.{$reseller->id}");
|
|
||||||
Cache::forget("labels_for_service.{$reseller->id}");
|
|
||||||
|
|
||||||
Home::homePageCacheForget();
|
if (isset($request->dedicated_ip)) {
|
||||||
|
DB::insert('INSERT IGNORE INTO ips (id, address, service_id, is_ipv4) values (?, ?, ?, ?)', [
|
||||||
|
Str::random(8),
|
||||||
|
$request->dedicated_ip,
|
||||||
|
$request->id,
|
||||||
|
(filter_var($request->dedicated_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('reseller.index')
|
return redirect()->route('reseller.index')
|
||||||
->with('success', 'Reseller hosting updated Successfully.');
|
->with('success', 'Reseller hosting updated Successfully.');
|
||||||
|
@ -171,24 +259,23 @@ class ResellerController extends Controller
|
||||||
|
|
||||||
public function destroy(Reseller $reseller)
|
public function destroy(Reseller $reseller)
|
||||||
{
|
{
|
||||||
if ($reseller->delete()) {
|
$id = $reseller->id;
|
||||||
|
$items = Reseller::find($id);
|
||||||
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
$p = new Pricing();
|
$p = new Pricing();
|
||||||
$p->deletePricing($reseller->id);
|
$p->deletePricing($id);
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($reseller->id);
|
Labels::deleteLabelsAssignedTo($id);
|
||||||
|
|
||||||
IPs::deleteIPsAssignedTo($reseller->id);
|
IPs::deleteIPsAssignedTo($id);
|
||||||
|
|
||||||
Cache::forget("all_reseller");
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
Cache::forget("reseller_hosting.$reseller->id");
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
Home::homePageCacheForget();
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('reseller.index')
|
return redirect()->route('reseller.index')
|
||||||
->with('success', 'Reseller hosting was deleted Successfully.');
|
->with('success', 'Reseller hosting was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('reseller.index')
|
|
||||||
->with('error', 'Reseller was not deleted.');
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,163 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
|
||||||
|
|
||||||
use App\Models\Home;
|
|
||||||
use App\Models\Labels;
|
|
||||||
use App\Models\Pricing;
|
|
||||||
use App\Models\SeedBoxes;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class SeedBoxesController extends Controller
|
|
||||||
{
|
|
||||||
public function index()
|
|
||||||
{
|
|
||||||
$seedboxes = SeedBoxes::allSeedboxes();
|
|
||||||
return view('seedboxes.index', compact(['seedboxes']));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function create()
|
|
||||||
{
|
|
||||||
return view('seedboxes.create');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function store(Request $request)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'title' => 'required|string|min:2',
|
|
||||||
'hostname' => 'sometimes|nullable|string|min:2',
|
|
||||||
'seed_box_type' => 'required|string',
|
|
||||||
'provider_id' => 'integer',
|
|
||||||
'location_id' => 'integer',
|
|
||||||
'price' => 'numeric',
|
|
||||||
'payment_term' => 'integer',
|
|
||||||
'was_promo' => 'integer',
|
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'disk' => 'integer',
|
|
||||||
'bandwidth' => 'integer',
|
|
||||||
'port_speed' => 'integer',
|
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$seedbox_id = Str::random(8);
|
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->insertPricing(6, $seedbox_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($seedbox_id);
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $seedbox_id);
|
|
||||||
|
|
||||||
SeedBoxes::create([
|
|
||||||
'id' => $seedbox_id,
|
|
||||||
'title' => $request->title,
|
|
||||||
'hostname' => $request->hostname,
|
|
||||||
'seed_box_type' => $request->seed_box_type,
|
|
||||||
'provider_id' => $request->provider_id,
|
|
||||||
'location_id' => $request->location_id,
|
|
||||||
'disk' => $request->disk,
|
|
||||||
'disk_type' => 'GB',
|
|
||||||
'disk_as_gb' => $request->disk,
|
|
||||||
'owned_since' => $request->owned_since,
|
|
||||||
'bandwidth' => $request->bandwidth,
|
|
||||||
'port_speed' => $request->port_speed,
|
|
||||||
'was_promo' => $request->was_promo
|
|
||||||
]);
|
|
||||||
|
|
||||||
Cache::forget("all_seedboxes");
|
|
||||||
Home::homePageCacheForget();
|
|
||||||
|
|
||||||
return redirect()->route('seedboxes.index')
|
|
||||||
->with('success', 'Seed box created Successfully.');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function show(SeedBoxes $seedbox)
|
|
||||||
{
|
|
||||||
$seedbox_data = SeedBoxes::seedbox($seedbox->id);
|
|
||||||
return view('seedboxes.show', compact(['seedbox_data']));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function edit(SeedBoxes $seedbox)
|
|
||||||
{
|
|
||||||
$seedbox_data = SeedBoxes::seedbox($seedbox->id);
|
|
||||||
return view('seedboxes.edit', compact(['seedbox_data']));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function update(Request $request, SeedBoxes $seedbox)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'title' => 'required|string|min:2',
|
|
||||||
'hostname' => 'sometimes|nullable|string|min:2',
|
|
||||||
'seed_box_type' => 'required|string',
|
|
||||||
'provider_id' => 'integer',
|
|
||||||
'location_id' => 'integer',
|
|
||||||
'price' => 'numeric',
|
|
||||||
'payment_term' => 'integer',
|
|
||||||
'was_promo' => 'integer',
|
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'disk' => 'integer',
|
|
||||||
'bandwidth' => 'integer',
|
|
||||||
'port_speed' => 'integer',
|
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$seedbox->update([
|
|
||||||
'title' => $request->title,
|
|
||||||
'hostname' => $request->hostname,
|
|
||||||
'seed_box_type' => $request->seed_box_type,
|
|
||||||
'location_id' => $request->location_id,
|
|
||||||
'provider_id' => $request->provider_id,
|
|
||||||
'disk' => $request->disk,
|
|
||||||
'disk_type' => 'GB',
|
|
||||||
'disk_as_gb' => $request->disk,
|
|
||||||
'owned_since' => $request->owned_since,
|
|
||||||
'bandwidth' => $request->bandwidth,
|
|
||||||
'port_speed' => $request->port_speed,
|
|
||||||
'was_promo' => $request->was_promo
|
|
||||||
]);
|
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->updatePricing($seedbox->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($seedbox->id);
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $seedbox->id);
|
|
||||||
|
|
||||||
Cache::forget("all_seedboxes");
|
|
||||||
Cache::forget("seedbox.{$seedbox->id}");
|
|
||||||
Cache::forget("labels_for_service.{$seedbox->id}");
|
|
||||||
Home::homePageCacheForget();
|
|
||||||
|
|
||||||
return redirect()->route('seedboxes.index')
|
|
||||||
->with('success', 'Seed box updated Successfully.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function destroy(SeedBoxes $seedbox)
|
|
||||||
{
|
|
||||||
if ($seedbox->delete()) {
|
|
||||||
$p = new Pricing();
|
|
||||||
$p->deletePricing($seedbox->id);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($seedbox->id);
|
|
||||||
|
|
||||||
Cache::forget("all_seedboxes");
|
|
||||||
Cache::forget("seedbox.{$seedbox->id}");
|
|
||||||
Home::homePageCacheForget();
|
|
||||||
|
|
||||||
return redirect()->route('seedboxes.index')
|
|
||||||
->with('success', 'Seed box was deleted Successfully.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('seedboxes.index')
|
|
||||||
->with('error', 'Seed box was not deleted.');
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -4,80 +4,111 @@ namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\IPs;
|
use App\Models\IPs;
|
||||||
use App\Models\Labels;
|
use App\Models\Labels;
|
||||||
|
use App\Models\OS;
|
||||||
use App\Models\Pricing;
|
use App\Models\Pricing;
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Models\Settings;
|
use App\Models\Providers;
|
||||||
|
use App\Models\Locations;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\Config;
|
||||||
use Illuminate\Support\Facades\Session;
|
use Illuminate\Support\Facades\Session;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
class ServerController extends Controller
|
class ServerController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$servers = Server::allActiveServers();
|
$servers = Cache::remember('all_active_servers', 1440, function () {
|
||||||
$non_active_servers = Server::allNonActiveServers();
|
return DB::table('servers as s')
|
||||||
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->join('os as o', 's.os_id', '=', 'o.id')
|
||||||
|
->where('s.active', '=', 1)
|
||||||
|
->get(['s.*', 'pr.currency', 'pr.price', 'pr.term', 'pr.as_usd', 'pr.next_due_date', 'p.name as provider_name', 'l.name as location', 'o.name as os_name']);
|
||||||
|
});
|
||||||
|
|
||||||
|
$non_active_servers = Cache::remember('non_active_servers', 1440, function () {
|
||||||
|
return DB::table('servers as s')
|
||||||
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->join('os as o', 's.os_id', '=', 'o.id')
|
||||||
|
->where('s.active', '=', 0)
|
||||||
|
->get(['s.*', 'pr.currency', 'pr.price', 'pr.term', 'pr.as_usd', 'p.name as provider_name', 'l.name as location', 'o.name as os_name']);
|
||||||
|
});
|
||||||
|
|
||||||
return view('servers.index', compact(['servers', 'non_active_servers']));
|
return view('servers.index', compact(['servers', 'non_active_servers']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function showServersPublic()
|
public function showServersPublic()
|
||||||
{
|
{
|
||||||
$settings = Settings::getSettings();
|
$settings = DB::table('settings')
|
||||||
Settings::setSettingsToSession($settings);
|
->where('id', '=', 1)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
Session::put('timer_version_footer', $settings[0]->show_versions_footer);
|
||||||
|
Session::put('show_servers_public', $settings[0]->show_servers_public);
|
||||||
|
Session::put('show_server_value_ip', $settings[0]->show_server_value_ip);
|
||||||
|
Session::put('show_server_value_hostname', $settings[0]->show_server_value_hostname);
|
||||||
|
Session::put('show_server_value_price', $settings[0]->show_server_value_price);
|
||||||
|
Session::put('show_server_value_yabs', $settings[0]->show_server_value_yabs);
|
||||||
|
Session::put('show_server_value_provider', $settings[0]->show_server_value_provider);
|
||||||
|
Session::put('show_server_value_location', $settings[0]->show_server_value_location);
|
||||||
|
Session::save();
|
||||||
|
|
||||||
if ((Session::get('show_servers_public') === 1)) {
|
if ((Session::get('show_servers_public') === 1)) {
|
||||||
$servers = Server::allPublicServers();
|
$servers = DB::table('servers as s')
|
||||||
|
->Join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->Join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->Join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->Join('os as o', 's.os_id', '=', 'o.id')
|
||||||
|
->LeftJoin('ips as i', 's.id', '=', 'i.service_id')
|
||||||
|
->LeftJoin('yabs as y', 's.id', '=', 'y.server_id')
|
||||||
|
->LeftJoin('disk_speed as ds', 'y.id', '=', 'ds.id')
|
||||||
|
->where('s.show_public', '=', 1)
|
||||||
|
->get(['pr.currency', 'pr.price', 'pr.term', 'pr.as_usd', 'pr.next_due_date', 'pr.service_id', 'p.name as provider_name', 'l.name as location', 'o.name as os_name', 'y.*', 'y.id as yabs_id', 'ds.*', 's.*', 'i.address as ip', 'i.is_ipv4']);
|
||||||
|
|
||||||
return view('servers.public-index', compact('servers'));
|
return view('servers.public-index', compact('servers'));
|
||||||
}
|
}
|
||||||
abort(404);
|
return response()->view('errors.404', array("status" => 404, "title" => "Page not found", "message" => ""), 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return view('servers.create');
|
$Providers = Providers::all();
|
||||||
|
$Locations = Locations::all();
|
||||||
|
$Os = OS::all();
|
||||||
|
return view('servers.create', compact(['Providers', 'Locations', 'Os']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'hostname' => 'required|min:5',
|
'hostname' => 'required|min:5',
|
||||||
'ip1' => 'sometimes|nullable|ip',
|
'ip1' => 'nullable|ip',
|
||||||
'ip2' => 'sometimes|nullable|ip',
|
'ip2' => 'nullable|ip',
|
||||||
'ns1' => 'sometimes|nullable|string',
|
'service_type' => 'numeric',
|
||||||
'ns2' => 'sometimes|nullable|string',
|
'server_type' => 'numeric',
|
||||||
'server_type' => 'integer',
|
'ram' => 'numeric',
|
||||||
'ssh_port' => 'integer',
|
'disk' => 'numeric',
|
||||||
'bandwidth' => 'integer',
|
'os_id' => 'numeric',
|
||||||
'ram' => 'required|numeric',
|
'provider_id' => 'numeric',
|
||||||
'disk' => 'required|integer',
|
'location_id' => 'numeric',
|
||||||
'os_id' => 'required|integer',
|
'price' => 'numeric',
|
||||||
'provider_id' => 'required|integer',
|
'cpu' => 'numeric',
|
||||||
'location_id' => 'required|integer',
|
'was_promo' => 'numeric',
|
||||||
'price' => 'required|numeric',
|
'next_due_date' => 'required|date'
|
||||||
'cpu' => 'required|integer',
|
|
||||||
'was_promo' => 'integer',
|
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$server_id = Str::random(8);
|
$server_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->insertPricing(1, $server_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
if (!is_null($request->ip1)) {
|
|
||||||
IPs::insertIP($server_id, $request->ip1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_null($request->ip2)) {
|
|
||||||
IPs::insertIP($server_id, $request->ip2);
|
|
||||||
}
|
|
||||||
|
|
||||||
Server::create([
|
Server::create([
|
||||||
'id' => $server_id,
|
'id' => $server_id,
|
||||||
'hostname' => $request->hostname,
|
'hostname' => $request->hostname,
|
||||||
|
@ -88,10 +119,10 @@ class ServerController extends Controller
|
||||||
'location_id' => $request->location_id,
|
'location_id' => $request->location_id,
|
||||||
'ram' => $request->ram,
|
'ram' => $request->ram,
|
||||||
'ram_type' => $request->ram_type,
|
'ram_type' => $request->ram_type,
|
||||||
'ram_as_mb' => ($request->ram_type === 'MB') ? $request->ram : ($request->ram * 1024),
|
'ram_as_mb' => ($request->ram_type === 'MB') ? $request->ram : ($request->ram / 1000),
|
||||||
'disk' => $request->disk,
|
'disk' => $request->disk,
|
||||||
'disk_type' => $request->disk_type,
|
'disk_type' => $request->disk_type,
|
||||||
'disk_as_gb' => ($request->disk_type === 'GB') ? $request->disk : ($request->disk * 1024),
|
'disk_as_gb' => ($request->disk_type === 'GB') ? $request->disk : ($request->disk * 1000),
|
||||||
'owned_since' => $request->owned_since,
|
'owned_since' => $request->owned_since,
|
||||||
'ns1' => $request->ns1,
|
'ns1' => $request->ns1,
|
||||||
'ns2' => $request->ns2,
|
'ns2' => $request->ns2,
|
||||||
|
@ -101,9 +132,58 @@ class ServerController extends Controller
|
||||||
'show_public' => (isset($request->show_public)) ? 1 : 0
|
'show_public' => (isset($request->show_public)) ? 1 : 0
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $server_id);
|
if (!is_null($request->ip1)) {
|
||||||
|
IPs::create(
|
||||||
|
[
|
||||||
|
'id' => Str::random(8),
|
||||||
|
'service_id' => $server_id,
|
||||||
|
'address' => $request->ip1,
|
||||||
|
'is_ipv4' => (filter_var($request->ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1,
|
||||||
|
'active' => 1
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Server::serverRelatedCacheForget();
|
if (!is_null($request->ip2)) {
|
||||||
|
IPs::create(
|
||||||
|
[
|
||||||
|
'id' => Str::random(8),
|
||||||
|
'service_id' => $server_id,
|
||||||
|
'address' => $request->ip2,
|
||||||
|
'is_ipv4' => (filter_var($request->ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1,
|
||||||
|
'active' => 1
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$pricing = new Pricing();
|
||||||
|
|
||||||
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
|
|
||||||
|
Pricing::create([
|
||||||
|
'service_id' => $server_id,
|
||||||
|
'service_type' => 1,
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned (label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $server_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
Cache::forget('all_active_servers');//all servers cache
|
||||||
|
Cache::forget('non_active_servers');//all servers cache
|
||||||
|
|
||||||
return redirect()->route('servers.index')
|
return redirect()->route('servers.index')
|
||||||
->with('success', 'Server Created Successfully.');
|
->with('success', 'Server Created Successfully.');
|
||||||
|
@ -111,58 +191,86 @@ class ServerController extends Controller
|
||||||
|
|
||||||
public function show(Server $server)
|
public function show(Server $server)
|
||||||
{
|
{
|
||||||
$server_data = Server::server($server->id);
|
$server_extras = DB::table('servers as s')
|
||||||
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->join('os as o', 's.os_id', '=', 'o.id')
|
||||||
|
->Leftjoin('yabs as y', 's.id', '=', 'y.server_id')
|
||||||
|
->Leftjoin('disk_speed as ds', 'y.id', '=', 'ds.id')
|
||||||
|
->where('s.id', '=', $server->id)
|
||||||
|
->get(['s.*', 'p.name as provider', 'l.name as location', 'o.name as os_name', 'pr.*', 'y.*', 'ds.*']);
|
||||||
|
|
||||||
return view('servers.show', compact(['server_data']));
|
$network_speeds = json_decode(DB::table('network_speed')
|
||||||
|
->where('network_speed.server_id', '=', $server->id)
|
||||||
|
->get(), true);
|
||||||
|
|
||||||
|
$ip_addresses = json_decode(DB::table('ips as i')
|
||||||
|
->where('i.service_id', '=', $server->id)
|
||||||
|
->get(), true);
|
||||||
|
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $server->id)
|
||||||
|
->get(['labels.label']);
|
||||||
|
|
||||||
|
return view('servers.show', compact(['server', 'server_extras', 'network_speeds', 'labels', 'ip_addresses']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit(Server $server)
|
public function edit(Server $server)
|
||||||
{
|
{
|
||||||
$server_data = Server::server($server->id);
|
$locations = DB::table('locations')->get(['*']);
|
||||||
|
$providers = DB::table('providers')->get(['*']);
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $server->id)
|
||||||
|
->get(['labels.id', 'labels.label']);
|
||||||
|
|
||||||
return view('servers.edit', compact(['server_data']));
|
$os = DB::table('os')->get(['*']);
|
||||||
|
|
||||||
|
$ip_addresses = json_decode(DB::table('ips as i')
|
||||||
|
->where('i.service_id', '=', $server->id)
|
||||||
|
->get(), true);
|
||||||
|
|
||||||
|
$server = DB::table('servers as s')
|
||||||
|
->join('pricings as p', 's.id', '=', 'p.service_id')
|
||||||
|
->where('s.id', '=', $server->id)
|
||||||
|
->get(['s.*', 'p.*']);
|
||||||
|
|
||||||
|
return view('servers.edit', compact(['server', 'locations', 'providers', 'os', 'labels', 'ip_addresses']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, Server $server)
|
public function update(Request $request, Server $server)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'hostname' => 'required|min:5',
|
'hostname' => 'required|min:5',
|
||||||
'ip1' => 'sometimes|nullable|ip',
|
'ram' => 'numeric',
|
||||||
'ip2' => 'sometimes|nullable|ip',
|
'disk' => 'numeric',
|
||||||
'ns1' => 'sometimes|nullable|string',
|
'os_id' => 'numeric',
|
||||||
'ns2' => 'sometimes|nullable|string',
|
'provider_id' => 'numeric',
|
||||||
'server_type' => 'integer',
|
'location_id' => 'numeric',
|
||||||
'ssh_port' => 'integer',
|
'price' => 'numeric',
|
||||||
'bandwidth' => 'integer',
|
'cpu' => 'numeric',
|
||||||
'ram' => 'required|numeric',
|
'was_promo' => 'numeric',
|
||||||
'disk' => 'required|integer',
|
'next_due_date' => 'date'
|
||||||
'os_id' => 'required|integer',
|
|
||||||
'provider_id' => 'required|integer',
|
|
||||||
'location_id' => 'required|integer',
|
|
||||||
'price' => 'required|numeric',
|
|
||||||
'cpu' => 'required|integer',
|
|
||||||
'was_promo' => 'integer',
|
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$server->update([
|
|
||||||
|
DB::table('servers')
|
||||||
|
->where('id', $request->server_id)
|
||||||
|
->update([
|
||||||
'hostname' => $request->hostname,
|
'hostname' => $request->hostname,
|
||||||
'server_type' => $request->server_type,
|
'server_type' => $request->server_type,
|
||||||
'os_id' => $request->os_id,
|
'os_id' => $request->os_id,
|
||||||
'ssh' => $request->ssh_port,
|
'ssh' => $request->ssh,
|
||||||
'provider_id' => $request->provider_id,
|
'provider_id' => $request->provider_id,
|
||||||
'location_id' => $request->location_id,
|
'location_id' => $request->location_id,
|
||||||
'ram' => $request->ram,
|
'ram' => $request->ram,
|
||||||
'ram_type' => $request->ram_type,
|
'ram_type' => $request->ram_type,
|
||||||
'ram_as_mb' => ($request->ram_type === 'MB') ? $request->ram : ($request->ram * 1024),
|
'ram_as_mb' => ($request->ram_type === 'MB') ? $request->ram : ($request->ram / 1000),
|
||||||
'disk' => $request->disk,
|
'disk' => $request->disk,
|
||||||
'disk_type' => $request->disk_type,
|
'disk_type' => $request->disk_type,
|
||||||
'disk_as_gb' => ($request->disk_type === 'GB') ? $request->disk : ($request->disk * 1024),
|
'disk_as_gb' => ($request->disk_type === 'GB') ? $request->disk : ($request->disk * 1000),
|
||||||
'owned_since' => $request->owned_since,
|
'owned_since' => $request->owned_since,
|
||||||
'ns1' => $request->ns1,
|
'ns1' => $request->ns1,
|
||||||
'ns2' => $request->ns2,
|
'ns2' => $request->ns2,
|
||||||
|
@ -174,23 +282,51 @@ class ServerController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$pricing->updatePricing($server->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($server->id);
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $server->id);
|
DB::table('pricings')
|
||||||
|
->where('service_id', $request->server_id)
|
||||||
|
->update([
|
||||||
|
'service_type' => 1,
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
'active' => (isset($request->is_active)) ? 1 : 0
|
||||||
|
]);
|
||||||
|
|
||||||
IPs::deleteIPsAssignedTo($server->id);
|
$deleted = DB::table('labels_assigned')->where('service_id', '=', $server->id)->delete();
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned ( label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $request->server_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$deleted = DB::table('ips')->where('service_id', '=', $server->id)->delete();
|
||||||
|
|
||||||
for ($i = 1; $i <= 8; $i++) {//Max of 8 ips
|
for ($i = 1; $i <= 8; $i++) {//Max of 8 ips
|
||||||
$obj = 'ip' . $i;
|
$obj = 'ip' . $i;
|
||||||
if (isset($request->$obj) && !is_null($request->$obj)) {
|
if (isset($request->$obj) && !is_null($request->$obj)) {
|
||||||
IPs::insertIP($server->id, $request->$obj);
|
DB::insert('INSERT IGNORE INTO ips (id, address, service_id, is_ipv4) values (?, ?, ?, ?)', [
|
||||||
|
Str::random(8),
|
||||||
|
$request->$obj,
|
||||||
|
$request->server_id,
|
||||||
|
(filter_var($request->$obj, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Server::serverRelatedCacheForget();
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
Server::serverSpecificCacheForget($server->id);
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
Cache::forget('all_active_servers');//all servers cache
|
||||||
|
Cache::forget('non_active_servers');//all servers cache
|
||||||
|
|
||||||
return redirect()->route('servers.index')
|
return redirect()->route('servers.index')
|
||||||
->with('success', 'Server Updated Successfully.');
|
->with('success', 'Server Updated Successfully.');
|
||||||
|
@ -198,7 +334,10 @@ class ServerController extends Controller
|
||||||
|
|
||||||
public function destroy(Server $server)
|
public function destroy(Server $server)
|
||||||
{
|
{
|
||||||
if ($server->delete()) {
|
$items = Server::find($server->id);
|
||||||
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
$p = new Pricing();
|
$p = new Pricing();
|
||||||
$p->deletePricing($server->id);
|
$p->deletePricing($server->id);
|
||||||
|
|
||||||
|
@ -206,41 +345,58 @@ class ServerController extends Controller
|
||||||
|
|
||||||
IPs::deleteIPsAssignedTo($server->id);
|
IPs::deleteIPsAssignedTo($server->id);
|
||||||
|
|
||||||
Server::serverRelatedCacheForget();
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
Cache::forget('all_active_servers');//all servers cache
|
||||||
|
Cache::forget('non_active_servers');//all servers cache
|
||||||
|
|
||||||
return redirect()->route('servers.index')
|
return redirect()->route('servers.index')
|
||||||
->with('success', 'Server was deleted Successfully.');
|
->with('success', 'Server was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('servers.index')
|
|
||||||
->with('error', 'Server was not deleted.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function chooseCompare()
|
public function chooseCompare()
|
||||||
{//NOTICE: Selecting servers is not cached yet
|
{
|
||||||
$all_servers = Server::where('has_yabs', 1)->get();
|
$all_servers = Server::where('has_yabs', 1)->get();
|
||||||
|
|
||||||
if (isset($all_servers[1])) {
|
|
||||||
return view('servers.choose-compare', compact('all_servers'));
|
return view('servers.choose-compare', compact('all_servers'));
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('servers.index')
|
|
||||||
->with('error', 'You need atleast 2 servers with a YABS to do a compare');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function compareServers($server1, $server2)
|
public function compareServers($server1, $server2)
|
||||||
{
|
{
|
||||||
$server1_data = Server::server($server1);
|
$server1_data = DB::table('servers as s')
|
||||||
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->Join('yabs as y', 's.id', '=', 'y.server_id')
|
||||||
|
->Join('disk_speed as ds', 'y.id', '=', 'ds.id')
|
||||||
|
->where('s.id', '=', $server1)
|
||||||
|
->get(['s.*', 'p.name as provider_name', 'l.name as location', 'pr.*', 'y.*', 'y.id as yabs_id', 'ds.*']);
|
||||||
|
|
||||||
if (!isset($server1_data[0]->yabs[0])) {
|
if (count($server1_data) === 0) {
|
||||||
abort(404);
|
return response()->view('errors.404', array("status" => 404, "title" => "Page not found", "message" => "No server with YABs data was found for id '$server1'"), 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$server2_data = Server::server($server2);
|
$server1_network = DB::table('network_speed')
|
||||||
|
->where('id', '=', $server1_data[0]->yabs_id)
|
||||||
|
->get();
|
||||||
|
|
||||||
if (!isset($server2_data[0]->yabs[0])) {
|
$server2_data = DB::table('servers as s')
|
||||||
abort(404);
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->Join('yabs as y', 's.id', '=', 'y.server_id')
|
||||||
|
->Join('disk_speed as ds', 'y.id', '=', 'ds.id')
|
||||||
|
->where('s.id', '=', $server2)
|
||||||
|
->get(['s.*', 'p.name as provider_name', 'l.name as location', 'pr.*', 'y.*', 'y.id as yabs_id', 'ds.*']);
|
||||||
|
|
||||||
|
if (count($server2_data) === 0) {
|
||||||
|
return response()->view('errors.404', array("status" => 404, "title" => "Page not found", "message" => "No server with YABs data was found for id '$server2'"), 404);
|
||||||
}
|
}
|
||||||
return view('servers.compare', compact('server1_data', 'server2_data'));
|
|
||||||
|
$server2_network = DB::table('network_speed')
|
||||||
|
->where('id', '=', $server2_data[0]->yabs_id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return view('servers.compare', compact('server1_data', 'server2_data', 'server1_network', 'server2_network'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,53 +5,37 @@ namespace App\Http\Controllers;
|
||||||
use App\Models\Settings;
|
use App\Models\Settings;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Session;
|
||||||
|
|
||||||
class SettingsController extends Controller
|
class SettingsController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
return view('settings.index', ['setting' => Settings::where('id', 1)->first()]);
|
$setting = DB::table('settings')
|
||||||
|
->where('id', '=', 1)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return view('settings.index', compact(['setting']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request)
|
public function update(Request $request, Settings $settings)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'dark_mode' => 'required|integer|min:0|max:1',
|
'show_versions_footer' => 'required|boolean',
|
||||||
'show_versions_footer' => 'required|integer|min:0|max:1',
|
'show_server_value_ip' => 'required|boolean',
|
||||||
'show_server_value_ip' => 'required|integer|min:0|max:1',
|
'show_server_value_hostname' => 'required|boolean',
|
||||||
'show_server_value_hostname' => 'required|integer|min:0|max:1',
|
'show_server_value_provider' => 'required|boolean',
|
||||||
'show_server_value_provider' => 'required|integer|min:0|max:1',
|
'show_server_value_location' => 'required|boolean',
|
||||||
'show_server_value_location' => 'required|integer|min:0|max:1',
|
'show_server_value_price' => 'required|boolean',
|
||||||
'show_server_value_price' => 'required|integer|min:0|max:1',
|
'show_server_value_yabs' => 'required|boolean',
|
||||||
'show_server_value_yabs' => 'required|integer|min:0|max:1',
|
'default_currency' => 'required',
|
||||||
'save_yabs_as_txt' => 'integer|min:0|max:1',
|
'default_server_os' => 'required'
|
||||||
'default_currency' => 'required|string|size:3',
|
|
||||||
'default_server_os' => 'required|integer',
|
|
||||||
'due_soon_amount' => 'required|integer|between:0,12',
|
|
||||||
'recently_added_amount' => 'required|integer|between:0,12',
|
|
||||||
'currency' => 'required|string|size:3',
|
|
||||||
'sort_on' => 'required|integer|between:1,10',
|
|
||||||
'favicon' => 'sometimes|nullable|mimes:ico,jpg,png|max:40',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$settings = Settings::where('id', 1)->first();
|
DB::table('settings')
|
||||||
|
->where('id', 1)
|
||||||
if ($request->favicon) {//Has a favicon upload
|
->update([
|
||||||
|
|
||||||
$file = $request->favicon;
|
|
||||||
$extension = $file->getClientOriginalExtension();
|
|
||||||
$favicon_filename = "favicon.$extension";
|
|
||||||
|
|
||||||
if ($favicon_filename !== $settings->favicon && $settings->favicon !== 'favicon.ico') {
|
|
||||||
Storage::disk('public_uploads')->delete($settings->favicon);//Delete old favicon
|
|
||||||
}
|
|
||||||
|
|
||||||
$file->storeAs("", $favicon_filename, "public_uploads");//Save into /public
|
|
||||||
}
|
|
||||||
|
|
||||||
$do_update = $settings->update([
|
|
||||||
'dark_mode' => $request->dark_mode,
|
|
||||||
'show_versions_footer' => $request->show_versions_footer,
|
'show_versions_footer' => $request->show_versions_footer,
|
||||||
'show_servers_public' => $request->show_servers_public,
|
'show_servers_public' => $request->show_servers_public,
|
||||||
'show_server_value_ip' => $request->show_server_value_ip,
|
'show_server_value_ip' => $request->show_server_value_ip,
|
||||||
|
@ -60,39 +44,26 @@ class SettingsController extends Controller
|
||||||
'show_server_value_location' => $request->show_server_value_location,
|
'show_server_value_location' => $request->show_server_value_location,
|
||||||
'show_server_value_price' => $request->show_server_value_price,
|
'show_server_value_price' => $request->show_server_value_price,
|
||||||
'show_server_value_yabs' => $request->show_server_value_yabs,
|
'show_server_value_yabs' => $request->show_server_value_yabs,
|
||||||
'save_yabs_as_txt' => 0,
|
|
||||||
'default_currency' => $request->default_currency,
|
'default_currency' => $request->default_currency,
|
||||||
'default_server_os' => $request->default_server_os,
|
'default_server_os' => $request->default_server_os
|
||||||
'due_soon_amount' => $request->due_soon_amount,
|
|
||||||
'recently_added_amount' => $request->recently_added_amount,
|
|
||||||
'dashboard_currency' => $request->currency,
|
|
||||||
'sort_on' => $request->sort_on,
|
|
||||||
'favicon' => $favicon_filename ?? $settings->favicon
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget('due_soon');//Main page due_soon cache
|
Session::put('timer_version_footer', $request->show_versions_footer);
|
||||||
Cache::forget('recently_added');//Main page recently_added cache
|
Session::put('show_servers_public', $request->show_servers_public);
|
||||||
Cache::forget('pricing_breakdown');//Main page pricing breakdown
|
Session::put('show_server_value_ip', $request->show_server_value_ip);
|
||||||
|
Session::put('show_server_value_hostname', $request->show_server_value_hostname);
|
||||||
|
Session::put('show_server_value_price', $request->show_server_value_price);
|
||||||
|
Session::put('show_server_value_yabs', $request->show_server_value_yabs);
|
||||||
|
Session::put('show_server_value_provider', $request->show_server_value_provider);
|
||||||
|
Session::put('show_server_value_location', $request->show_server_value_location);
|
||||||
|
Session::put('default_currency', $request->default_currency);
|
||||||
|
Session::put('default_server_os', $request->default_server_os);
|
||||||
|
Session::save();
|
||||||
|
|
||||||
Cache::forget('settings');//Main page settings cache
|
Cache::forget('settings');//Main page settings cache
|
||||||
//Clear because they are affected by settings change (sort_on)
|
|
||||||
Cache::forget('all_servers');
|
|
||||||
Cache::forget('all_active_servers');
|
|
||||||
Cache::forget('all_shared');
|
|
||||||
Cache::forget('all_seedboxes');
|
|
||||||
Cache::forget('all_reseller');
|
|
||||||
Cache::forget('all_misc');
|
|
||||||
Cache::forget('all_domains');
|
|
||||||
|
|
||||||
Settings::setSettingsToSession(Settings::getSettings());
|
|
||||||
|
|
||||||
if ($do_update) {
|
|
||||||
return redirect()->route('settings.index')
|
return redirect()->route('settings.index')
|
||||||
->with('success', 'Settings Updated Successfully.');
|
->with('success', 'Settings Updated Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('settings.index')
|
|
||||||
->with('error', 'Settings failed to update.');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,67 +2,64 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Home;
|
|
||||||
use App\Models\IPs;
|
use App\Models\IPs;
|
||||||
use App\Models\Labels;
|
use App\Models\Labels;
|
||||||
|
use App\Models\Locations;
|
||||||
use App\Models\Pricing;
|
use App\Models\Pricing;
|
||||||
|
use App\Models\Providers;
|
||||||
use App\Models\Shared;
|
use App\Models\Shared;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class SharedController extends Controller
|
class SharedController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
$shared = Shared::allSharedHosting();
|
$shared = DB::table('shared_hosting as s')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->get(['s.*', 'p.name as provider_name', 'pr.*', 'l.name as location']);
|
||||||
|
|
||||||
return view('shared.index', compact(['shared']));
|
return view('shared.index', compact(['shared']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return view('shared.create');
|
$Providers = Providers::all();
|
||||||
|
$Locations = Locations::all();
|
||||||
|
return view('shared.create', compact(['Providers', 'Locations']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function store(Request $request)
|
public function store(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'domain' => 'required|min:4',
|
'domain' => 'required|min:4',
|
||||||
'shared_type' => 'required|string',
|
'shared_type' => 'required',
|
||||||
'disk' => 'integer',
|
'server_type' => 'numeric',
|
||||||
'os_id' => 'integer',
|
'ram' => 'numeric',
|
||||||
'provider_id' => 'integer',
|
'disk' => 'numeric',
|
||||||
'location_id' => 'integer',
|
'os_id' => 'numeric',
|
||||||
|
'provider_id' => 'numeric',
|
||||||
|
'location_id' => 'numeric',
|
||||||
'price' => 'numeric',
|
'price' => 'numeric',
|
||||||
'payment_term' => 'integer',
|
'payment_term' => 'numeric',
|
||||||
'was_promo' => 'integer',
|
'was_promo' => 'numeric',
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
'owned_since' => 'date',
|
||||||
'domains' => 'integer',
|
'domains' => 'numeric',
|
||||||
'sub_domains' => 'integer',
|
'sub_domains' => 'numeric',
|
||||||
'bandwidth' => 'integer',
|
'bandwidth' => 'numeric',
|
||||||
'email' => 'integer',
|
'email' => 'numeric',
|
||||||
'ftp' => 'integer',
|
'ftp' => 'numeric',
|
||||||
'db' => 'integer',
|
'db' => 'numeric',
|
||||||
'next_due_date' => 'required|date',
|
'next_due_date' => 'required|date'
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$shared_id = Str::random(8);
|
$shared_id = Str::random(8);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$pricing->insertPricing(2, $shared_id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($shared_id);
|
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $shared_id);
|
|
||||||
|
|
||||||
IPs::deleteIPsAssignedTo($shared_id);
|
|
||||||
if (!is_null($request->dedicated_ip)) {
|
|
||||||
IPs::insertIP($shared_id, $request->dedicated_ip);
|
|
||||||
}
|
|
||||||
|
|
||||||
Shared::create([
|
Shared::create([
|
||||||
'id' => $shared_id,
|
'id' => $shared_id,
|
||||||
'main_domain' => $request->domain,
|
'main_domain' => $request->domain,
|
||||||
|
@ -82,8 +79,44 @@ class SharedController extends Controller
|
||||||
'db__limit' => $request->db
|
'db__limit' => $request->db
|
||||||
]);
|
]);
|
||||||
|
|
||||||
Cache::forget('all_shared');
|
$pricing = new Pricing();
|
||||||
Home::homePageCacheForget();
|
|
||||||
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
|
|
||||||
|
Pricing::create([
|
||||||
|
'service_id' => $shared_id,
|
||||||
|
'service_type' => 2,
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned (label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $shared_id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_null($request->dedicated_ip)) {
|
||||||
|
IPs::create(
|
||||||
|
[
|
||||||
|
'id' => Str::random(8),
|
||||||
|
'service_id' => $shared_id,
|
||||||
|
'address' => $request->dedicated_ip,
|
||||||
|
'is_ipv4' => (filter_var($request->dedicated_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1,
|
||||||
|
'active' => 1
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('shared.index')
|
return redirect()->route('shared.index')
|
||||||
->with('success', 'Shared hosting created Successfully.');
|
->with('success', 'Shared hosting created Successfully.');
|
||||||
|
@ -91,43 +124,73 @@ class SharedController extends Controller
|
||||||
|
|
||||||
public function show(Shared $shared)
|
public function show(Shared $shared)
|
||||||
{
|
{
|
||||||
$shared = Shared::sharedHosting($shared->id);
|
$shared_extras = DB::table('shared_hosting as s')
|
||||||
return view('shared.show', compact(['shared']));
|
->join('pricings as pr', 's.id', '=', 'pr.service_id')
|
||||||
|
->join('providers as p', 's.provider_id', '=', 'p.id')
|
||||||
|
->join('locations as l', 's.location_id', '=', 'l.id')
|
||||||
|
->where('s.id', '=', $shared->id)
|
||||||
|
->get(['s.*', 'p.name as provider_name', 'l.name as location', 'pr.*']);
|
||||||
|
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $shared->id)
|
||||||
|
->get(['labels.label']);
|
||||||
|
|
||||||
|
$ip_address = DB::table('ips as i')
|
||||||
|
->where('i.service_id', '=', $shared->id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return view('shared.show', compact(['shared', 'shared_extras', 'labels', 'ip_address']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit(Shared $shared)
|
public function edit(Shared $shared)
|
||||||
{
|
{
|
||||||
$shared = Shared::sharedHosting($shared->id);
|
$locations = DB::table('locations')->get(['*']);
|
||||||
return view('shared.edit', compact(['shared']));
|
$providers = json_decode(DB::table('providers')->get(['*']), true);
|
||||||
|
$labels = DB::table('labels_assigned as l')
|
||||||
|
->join('labels', 'l.label_id', '=', 'labels.id')
|
||||||
|
->where('l.service_id', '=', $shared->id)
|
||||||
|
->get(['labels.id', 'labels.label']);
|
||||||
|
|
||||||
|
$ip_address = json_decode(DB::table('ips as i')
|
||||||
|
->where('i.service_id', '=', $shared->id)
|
||||||
|
->get(), true);
|
||||||
|
|
||||||
|
$shared = DB::table('shared_hosting as s')
|
||||||
|
->join('pricings as p', 's.id', '=', 'p.service_id')
|
||||||
|
->where('s.id', '=', $shared->id)
|
||||||
|
->get(['s.*', 'p.*']);
|
||||||
|
|
||||||
|
return view('shared.edit', compact(['shared', 'locations', 'providers', 'labels', 'ip_address']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request, Shared $shared)
|
public function update(Request $request, Shared $shared)
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
|
'id' => 'required|size:8',
|
||||||
'domain' => 'required|min:4',
|
'domain' => 'required|min:4',
|
||||||
'shared_type' => 'required|string',
|
'shared_type' => 'required',
|
||||||
'disk' => 'integer',
|
'dedicated_ip' => 'present',
|
||||||
'os_id' => 'integer',
|
'server_type' => 'numeric',
|
||||||
'provider_id' => 'integer',
|
'disk' => 'numeric',
|
||||||
'location_id' => 'integer',
|
'os_id' => 'numeric',
|
||||||
|
'provider_id' => 'numeric',
|
||||||
|
'location_id' => 'numeric',
|
||||||
'price' => 'numeric',
|
'price' => 'numeric',
|
||||||
'payment_term' => 'integer',
|
'payment_term' => 'numeric',
|
||||||
'was_promo' => 'integer',
|
'was_promo' => 'numeric',
|
||||||
'owned_since' => 'sometimes|nullable|date',
|
'owned_since' => 'date',
|
||||||
'domains' => 'integer',
|
'domains' => 'numeric',
|
||||||
'sub_domains' => 'integer',
|
'sub_domains' => 'numeric',
|
||||||
'bandwidth' => 'integer',
|
'bandwidth' => 'numeric',
|
||||||
'email' => 'integer',
|
'email' => 'numeric',
|
||||||
'ftp' => 'integer',
|
'ftp' => 'numeric',
|
||||||
'db' => 'integer',
|
'db' => 'numeric'
|
||||||
'next_due_date' => 'required|date',
|
|
||||||
'label1' => 'sometimes|nullable|string',
|
|
||||||
'label2' => 'sometimes|nullable|string',
|
|
||||||
'label3' => 'sometimes|nullable|string',
|
|
||||||
'label4' => 'sometimes|nullable|string',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$shared->update([
|
DB::table('shared_hosting')
|
||||||
|
->where('id', $request->id)
|
||||||
|
->update([
|
||||||
'main_domain' => $request->domain,
|
'main_domain' => $request->domain,
|
||||||
'shared_type' => $request->shared_type,
|
'shared_type' => $request->shared_type,
|
||||||
'provider_id' => $request->provider_id,
|
'provider_id' => $request->provider_id,
|
||||||
|
@ -146,20 +209,44 @@ class SharedController extends Controller
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$pricing = new Pricing();
|
$pricing = new Pricing();
|
||||||
$pricing->updatePricing($shared->id, $request->currency, $request->price, $request->payment_term, $request->next_due_date);
|
|
||||||
|
|
||||||
Labels::deleteLabelsAssignedTo($shared->id);
|
$as_usd = $pricing->convertToUSD($request->price, $request->currency);
|
||||||
Labels::insertLabelsAssigned([$request->label1, $request->label2, $request->label3, $request->label4], $shared->id);
|
|
||||||
Cache::forget("labels_for_service.{$shared->id}");
|
|
||||||
|
|
||||||
IPs::deleteIPsAssignedTo($shared->id);
|
DB::table('pricings')
|
||||||
if (isset($request->dedicated_ip)) {
|
->where('service_id', $request->id)
|
||||||
IPs::insertIP($shared->id, $request->dedicated_ip);
|
->update([
|
||||||
|
'currency' => $request->currency,
|
||||||
|
'price' => $request->price,
|
||||||
|
'term' => $request->payment_term,
|
||||||
|
'as_usd' => $as_usd,
|
||||||
|
'usd_per_month' => $pricing->costAsPerMonth($as_usd, $request->payment_term),
|
||||||
|
'next_due_date' => $request->next_due_date,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$deleted = DB::table('labels_assigned')->where('service_id', '=', $request->id)->delete();
|
||||||
|
|
||||||
|
$labels_array = [$request->label1, $request->label2, $request->label3, $request->label4];
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 4; $i++) {
|
||||||
|
if (!is_null($labels_array[($i - 1)])) {
|
||||||
|
DB::insert('INSERT IGNORE INTO labels_assigned ( label_id, service_id) values (?, ?)', [$labels_array[($i - 1)], $request->id]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cache::forget("shared_hosting.{$shared->id}");
|
$delete_ip = DB::table('ips')->where('service_id', '=', $request->id)->delete();
|
||||||
Cache::forget('all_shared');
|
|
||||||
Home::homePageCacheForget();
|
if (isset($request->dedicated_ip)) {
|
||||||
|
DB::insert('INSERT IGNORE INTO ips (id, address, service_id, is_ipv4) values (?, ?, ?, ?)', [
|
||||||
|
Str::random(8),
|
||||||
|
$request->dedicated_ip,
|
||||||
|
$request->id,
|
||||||
|
(filter_var($request->dedicated_ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('shared.index')
|
return redirect()->route('shared.index')
|
||||||
->with('success', 'Shared hosting updated Successfully.');
|
->with('success', 'Shared hosting updated Successfully.');
|
||||||
|
@ -167,7 +254,11 @@ class SharedController extends Controller
|
||||||
|
|
||||||
public function destroy(Shared $shared)
|
public function destroy(Shared $shared)
|
||||||
{
|
{
|
||||||
if ($shared->delete()) {
|
$id = $shared->id;
|
||||||
|
$items = Shared::find($id);
|
||||||
|
|
||||||
|
$items->delete();
|
||||||
|
|
||||||
$p = new Pricing();
|
$p = new Pricing();
|
||||||
$p->deletePricing($shared->id);
|
$p->deletePricing($shared->id);
|
||||||
|
|
||||||
|
@ -175,16 +266,12 @@ class SharedController extends Controller
|
||||||
|
|
||||||
IPs::deleteIPsAssignedTo($shared->id);
|
IPs::deleteIPsAssignedTo($shared->id);
|
||||||
|
|
||||||
Cache::forget("shared_hosting.$shared->id");
|
Cache::forget('services_count');//Main page services_count cache
|
||||||
Cache::forget('all_shared');
|
Cache::forget('due_soon');//Main page due_soon cache
|
||||||
Home::homePageCacheForget();
|
Cache::forget('recently_added');//Main page recently_added cache
|
||||||
|
|
||||||
return redirect()->route('shared.index')
|
return redirect()->route('shared.index')
|
||||||
->with('success', 'Shared hosting was deleted Successfully.');
|
->with('success', 'Shared hosting was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('shared.index')
|
|
||||||
->with('error', 'Shared was not deleted.');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,74 +4,150 @@ namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Models\Server;
|
use App\Models\Server;
|
||||||
use App\Models\Yabs;
|
use App\Models\Yabs;
|
||||||
|
use App\Process;
|
||||||
|
use App\Models\DiskSpeed;
|
||||||
|
use App\Models\NetworkSpeed;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class YabsController extends Controller
|
class YabsController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
return view('yabs.index', ['yabs' => Yabs::allYabs()]);
|
$yabs = DB::table('yabs as y')
|
||||||
|
->join('servers as s', 'y.server_id', '=', 's.id')
|
||||||
|
->Join('disk_speed as ds', 'y.id', '=', 'ds.id')
|
||||||
|
->get(['y.*', 's.hostname', 'ds.*']);
|
||||||
|
|
||||||
|
return view('yabs.index', compact(['yabs']));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
$Servers = Server::all();
|
||||||
|
return view('yabs.create', compact(['Servers']));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
$process = new Process();
|
||||||
|
|
||||||
|
$yabs = $process->yabsOutputAsJson($request->server_id, $request->yabs);
|
||||||
|
|
||||||
|
if (isset($yabs['error_id'])) {
|
||||||
|
return redirect()->route('yabs.index')
|
||||||
|
->with('error', 'Problem inserting YABs. Error id ' . $yabs['error_id']);
|
||||||
|
}
|
||||||
|
//No errors, do insert
|
||||||
|
|
||||||
|
$yabs_id = Str::random(8);
|
||||||
|
|
||||||
|
Yabs::create([
|
||||||
|
'id' => $yabs_id,
|
||||||
|
'server_id' => $request->server_id,
|
||||||
|
'has_ipv6' => $yabs['has_ipv6'],
|
||||||
|
'aes' => $yabs['aes'],
|
||||||
|
'vm' => $yabs['vm'],
|
||||||
|
'output_date' => $yabs['output_date'],
|
||||||
|
'cpu_cores' => $yabs['cpu_cores'],
|
||||||
|
'cpu_freq' => $yabs['cpu_freq'],
|
||||||
|
'cpu_model' => $yabs['cpu'],
|
||||||
|
'ram' => $yabs['ram'],
|
||||||
|
'ram_type' => $yabs['ram_type'],
|
||||||
|
'ram_mb' => $yabs['ram_mb'],
|
||||||
|
'disk' => $yabs['disk'],
|
||||||
|
'disk_type' => $yabs['disk_type'],
|
||||||
|
'disk_gb' => $yabs['disk_gb'],
|
||||||
|
'gb5_single' => $yabs['GB5_single'],
|
||||||
|
'gb5_multi' => $yabs['GB5_mult'],
|
||||||
|
'gb5_id' => $yabs['GB5_id']
|
||||||
|
]);
|
||||||
|
|
||||||
|
DiskSpeed::create([
|
||||||
|
'id' => $yabs_id,
|
||||||
|
'server_id' => $request->server_id,
|
||||||
|
'd_4k' => $yabs['disk_speed']['4k_total'],
|
||||||
|
'd_4k_type' => $yabs['disk_speed']['4k_total_type'],
|
||||||
|
'd_4k_as_mbps' => $yabs['disk_speed']['4k_total_mbps'],
|
||||||
|
'd_64k' => $yabs['disk_speed']['64k_total'],
|
||||||
|
'd_64k_type' => $yabs['disk_speed']['64k_total_type'],
|
||||||
|
'd_64k_as_mbps' => $yabs['disk_speed']['64k_total_mbps'],
|
||||||
|
'd_512k' => $yabs['disk_speed']['512k_total'],
|
||||||
|
'd_512k_type' => $yabs['disk_speed']['512k_total_type'],
|
||||||
|
'd_512k_as_mbps' => $yabs['disk_speed']['512k_total_mbps'],
|
||||||
|
'd_1m' => $yabs['disk_speed']['1m_total'],
|
||||||
|
'd_1m_type' => $yabs['disk_speed']['1m_total_type'],
|
||||||
|
'd_1m_as_mbps' => $yabs['disk_speed']['1m_total_mbps']
|
||||||
|
]);
|
||||||
|
|
||||||
|
foreach ($yabs['network_speed'] as $y) {
|
||||||
|
NetworkSpeed::create([
|
||||||
|
'id' => $yabs_id,
|
||||||
|
'server_id' => $request->server_id,
|
||||||
|
'location' => $y['location'],
|
||||||
|
'send' => $y['send'],
|
||||||
|
'send_type' => $y['send_type'],
|
||||||
|
'send_as_mbps' => $y['send_type_mbps'],
|
||||||
|
'receive' => $y['receive'],
|
||||||
|
'receive_type' => $y['receive_type'],
|
||||||
|
'receive_as_mbps' => $y['receive_type_mbps']
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$update_server = DB::table('servers')
|
||||||
|
->where('id', $request->server_id)
|
||||||
|
->update([
|
||||||
|
'ram' => $yabs['ram'],
|
||||||
|
'ram_type' => $yabs['ram_type'],
|
||||||
|
'ram_as_mb' => ($yabs['ram_type'] === 'GB') ? ($yabs['ram'] * 1000) : $yabs['ram'],
|
||||||
|
'disk' => $yabs['disk'],
|
||||||
|
'disk_type' => $yabs['disk_type'],
|
||||||
|
'disk_as_gb' => ($yabs['disk_type'] === 'TB') ? ($yabs['disk'] * 1000) : $yabs['disk'],
|
||||||
|
'cpu' => $yabs['cpu_cores'],
|
||||||
|
'has_yabs' => 1
|
||||||
|
]);
|
||||||
|
|
||||||
|
Cache::forget('all_active_servers');//all servers cache
|
||||||
|
Cache::forget('non_active_servers');//all servers cache
|
||||||
|
|
||||||
|
return redirect()->route('yabs.index')
|
||||||
|
->with('success', 'Success inserting YABs');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function show(Yabs $yab)
|
public function show(Yabs $yab)
|
||||||
{
|
{
|
||||||
return view('yabs.show', ['yabs' => Yabs::yabs($yab->id)]);
|
$yab = DB::table('yabs as y')
|
||||||
|
->join('servers as s', 'y.server_id', '=', 's.id')
|
||||||
|
->join('disk_speed as ds', 'y.id', '=', 'ds.id')
|
||||||
|
->where('y.id', '=', $yab->id)
|
||||||
|
->get(['y.*', 's.hostname', 'ds.*']);
|
||||||
|
|
||||||
|
$network = DB::table('network_speed')
|
||||||
|
->where('id', '=', $yab[0]->id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return view('yabs.show', compact(['yab', 'network']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(Yabs $yab)
|
public function destroy(Yabs $yab)
|
||||||
{
|
{
|
||||||
if ($yab->delete()) {
|
$id = $yab->id;
|
||||||
if (Server::serverYabsAmount($yab->server_id) === 0) {
|
$yabs = Yabs::find($id);
|
||||||
DB::table('servers')
|
$yabs->delete();
|
||||||
|
|
||||||
|
$disk = DiskSpeed::find($id);
|
||||||
|
$disk->delete();
|
||||||
|
|
||||||
|
$network = NetworkSpeed::find($id);
|
||||||
|
$network->delete();
|
||||||
|
|
||||||
|
$update_server = DB::table('servers')
|
||||||
->where('id', $yab->server_id)
|
->where('id', $yab->server_id)
|
||||||
->update(['has_yabs' => 0]);
|
->update(['has_yabs' => 0]);
|
||||||
}
|
|
||||||
|
|
||||||
Cache::forget('all_yabs');
|
|
||||||
Cache::forget("yabs.{$yab->id}");
|
|
||||||
|
|
||||||
return redirect()->route('yabs.index')
|
return redirect()->route('yabs.index')
|
||||||
->with('success', 'YABS was deleted Successfully.');
|
->with('success', 'YABs was deleted Successfully.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return redirect()->route('yabs.index')
|
|
||||||
->with('error', 'YABS was not deleted.');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function chooseYabsCompare()
|
|
||||||
{
|
|
||||||
$all_yabs = Yabs::allYabs();
|
|
||||||
|
|
||||||
if (isset($all_yabs[1])) {
|
|
||||||
return view('yabs.choose-compare', compact('all_yabs'));
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->route('yabs.index')
|
|
||||||
->with('error', 'You need atleast 2 YABS to do a compare');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function compareYabs(string $yabs1, string $yabs2)
|
|
||||||
{
|
|
||||||
$yabs1_data = Yabs::yabs($yabs1);
|
|
||||||
|
|
||||||
if (is_null($yabs1_data)) {
|
|
||||||
abort(404);
|
|
||||||
}
|
|
||||||
|
|
||||||
$yabs2_data = Yabs::yabs($yabs2);
|
|
||||||
|
|
||||||
if (is_null($yabs2_data)) {
|
|
||||||
abort(404);
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('yabs.compare', compact('yabs1_data', 'yabs2_data'));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function yabsToJson(Yabs $yab): array
|
|
||||||
{
|
|
||||||
$all_yabs = Yabs::yabs($yab->id)[0];
|
|
||||||
return Yabs::buildYabsArray($all_yabs);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Kernel extends HttpKernel
|
||||||
protected $middleware = [
|
protected $middleware = [
|
||||||
// \App\Http\Middleware\TrustHosts::class,
|
// \App\Http\Middleware\TrustHosts::class,
|
||||||
\App\Http\Middleware\TrustProxies::class,
|
\App\Http\Middleware\TrustProxies::class,
|
||||||
\Illuminate\Http\Middleware\HandleCors::class,
|
\Fruitcake\Cors\HandleCors::class,
|
||||||
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
|
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
|
||||||
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
|
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
|
||||||
\App\Http\Middleware\TrimStrings::class,
|
\App\Http\Middleware\TrimStrings::class,
|
||||||
|
|
|
@ -4,8 +4,6 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
|
|
||||||
class DNS extends Model
|
class DNS extends Model
|
||||||
{
|
{
|
||||||
|
@ -13,22 +11,7 @@ class DNS extends Model
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'service_id', 'hostname', 'dns_type', 'address', 'server_id', 'domain_id'];
|
protected $fillable = ['id', 'service_id', 'hostname', 'dns_type', 'address', 'server_id', 'domain_id'];
|
||||||
|
|
||||||
public static $dns_types = ['A', 'AAAA', 'DNAME', 'MX', 'NS', 'SOA', 'TXT', 'URI'];
|
public static $dns_types = ['A', 'AAAA', 'DNAME', 'MX', 'NS', 'SOA', 'TXT', 'URI'];
|
||||||
|
|
||||||
public static function dnsCount()
|
|
||||||
{
|
|
||||||
return Cache::remember('dns_count', now()->addMonth(1), function () {
|
|
||||||
return DNS::count();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function note(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Note::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,16 +9,7 @@ class DiskSpeed extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
public $incrementing = false;
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $table = 'disk_speed';
|
protected $table = 'disk_speed';
|
||||||
|
|
||||||
protected $fillable = ['id', 'server_id', 'd_4k', 'd_4k_type', 'd_4k_as_mbps', 'd_64k', 'd_64k_type', 'd_64k_as_mbps', 'd_512k', 'd_512k_type', 'd_512k_as_mbps', 'd_1m', 'd_1m_type', 'd_1m_as_mbps'];
|
protected $fillable = ['id', 'server_id', 'd_4k', 'd_4k_type', 'd_4k_as_mbps', 'd_64k', 'd_64k_type', 'd_64k_as_mbps', 'd_512k', 'd_512k_type', 'd_512k_as_mbps', 'd_1m', 'd_1m_type', 'd_1m_as_mbps'];
|
||||||
|
|
||||||
public function yabs(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Yabs::class, 'id', 'id');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,6 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
|
|
||||||
class Domains extends Model
|
class Domains extends Model
|
||||||
{
|
{
|
||||||
|
@ -13,51 +11,5 @@ class Domains extends Model
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
protected $table = 'domains';
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'domain', 'extension', 'ns1', 'ns2', 'ns3', 'price', 'currency', 'payment_term', 'owned_since', 'provider_id', 'next_due_date'];
|
protected $fillable = ['id', 'domain', 'extension', 'ns1', 'ns2', 'ns3', 'price', 'currency', 'payment_term', 'owned_since', 'provider_id', 'next_due_date'];
|
||||||
|
|
||||||
|
|
||||||
public static function allDomains()
|
|
||||||
{//All domains and relationships (no using joins)
|
|
||||||
return Cache::remember("all_domains", now()->addMonth(1), function () {
|
|
||||||
$query = Domains::with(['provider', 'price', 'labels']);
|
|
||||||
if (in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$options = Settings::orderByProcess(Session::get('sort_on'));
|
|
||||||
$query->orderBy(Pricing::select("pricings.$options[0]")->whereColumn("pricings.service_id", "domains.id"), $options[1]);
|
|
||||||
}
|
|
||||||
return $query->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function domain(string $domain_id)
|
|
||||||
{//Single domains and relationships (no using joins)
|
|
||||||
return Cache::remember("domain.$domain_id", now()->addMonth(1), function () use ($domain_id) {
|
|
||||||
return Domains::where('id', $domain_id)
|
|
||||||
->with(['provider', 'price', 'labels'])->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provider(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Providers::class, 'id', 'provider_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function price(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Pricing::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function labels(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(LabelsAssigned::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function note(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Note::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,210 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
|
|
||||||
class Home extends Model
|
|
||||||
{
|
|
||||||
use HasFactory;
|
|
||||||
|
|
||||||
public static function homePageCacheForget(): void
|
|
||||||
{
|
|
||||||
Cache::forget('services_count');//Main page services_count cache
|
|
||||||
Cache::forget('due_soon');//Main page due_soon cache
|
|
||||||
Cache::forget('recently_added');//Main page recently_added cache
|
|
||||||
Cache::forget('all_pricing');//All the pricing
|
|
||||||
Cache::forget('services_count_all');
|
|
||||||
Cache::forget('pricing_breakdown');
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function servicesCount()
|
|
||||||
{
|
|
||||||
return Cache::remember('services_count', now()->addHours(6), function () {
|
|
||||||
return DB::table('pricings')
|
|
||||||
->select('service_type', DB::raw('COUNT(*) as amount'))
|
|
||||||
->groupBy('service_type')
|
|
||||||
->where('active', 1)
|
|
||||||
->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function dueSoonData()
|
|
||||||
{
|
|
||||||
return Cache::remember('due_soon', now()->addHours(6), function () {
|
|
||||||
return DB::table('pricings as p')
|
|
||||||
->leftJoin('servers as s', 'p.service_id', 's.id')
|
|
||||||
->leftJoin('shared_hosting as sh', 'p.service_id', 'sh.id')
|
|
||||||
->leftJoin('reseller_hosting as r', 'p.service_id', 'r.id')
|
|
||||||
->leftJoin('domains as d', 'p.service_id', 'd.id')
|
|
||||||
->leftJoin('misc_services as ms', 'p.service_id', 'ms.id')
|
|
||||||
->leftJoin('seedboxes as sb', 'p.service_id', 'sb.id')
|
|
||||||
->where('p.active', 1)
|
|
||||||
->orderBy('next_due_date', 'ASC')
|
|
||||||
->limit(Session::get('due_soon_amount'))
|
|
||||||
->get(['p.*', 's.hostname', 'd.domain', 'd.extension', 'r.main_domain as reseller', 'sh.main_domain', 'ms.name', 'sb.title']);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function serverSummary()
|
|
||||||
{
|
|
||||||
return Cache::remember('servers_summary', now()->addHours(6), function () {
|
|
||||||
$cpu_sum = DB::table('servers')->get()->where('active', 1)->sum('cpu');
|
|
||||||
$ram_mb = DB::table('servers')->get()->where('active', 1)->sum('ram_as_mb');
|
|
||||||
$disk_gb = DB::table('servers')->get()->where('active', 1)->sum('disk_as_gb');
|
|
||||||
$bandwidth = DB::table('servers')->get()->where('active', 1)->sum('bandwidth');
|
|
||||||
$locations_sum = DB::table('servers')->get()->where('active', 1)->groupBy('location_id')->count();
|
|
||||||
$providers_sum = DB::table('servers')->get()->where('active', 1)->groupBy('provider_id')->count();
|
|
||||||
return array(
|
|
||||||
'cpu_sum' => $cpu_sum,
|
|
||||||
'ram_mb_sum' => $ram_mb,
|
|
||||||
'disk_gb_sum' => $disk_gb,
|
|
||||||
'bandwidth_sum' => $bandwidth,
|
|
||||||
'locations_sum' => $locations_sum,
|
|
||||||
'providers_sum' => $providers_sum,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function recentlyAdded()
|
|
||||||
{
|
|
||||||
return Cache::remember('recently_added', now()->addHours(6), function () {
|
|
||||||
return DB::table('pricings as p')
|
|
||||||
->leftJoin('servers as s', 'p.service_id', 's.id')
|
|
||||||
->leftJoin('shared_hosting as sh', 'p.service_id', 'sh.id')
|
|
||||||
->leftJoin('reseller_hosting as r', 'p.service_id', 'r.id')
|
|
||||||
->leftJoin('domains as d', 'p.service_id', 'd.id')
|
|
||||||
->leftJoin('misc_services as ms', 'p.service_id', 'ms.id')
|
|
||||||
->leftJoin('seedboxes as sb', 'p.service_id', 'sb.id')
|
|
||||||
->where('p.active', 1)
|
|
||||||
->orderBy('created_at', 'DESC')
|
|
||||||
->limit(Session::get('recently_added_amount'))
|
|
||||||
->get(['p.*', 's.hostname', 'd.domain', 'd.extension', 'r.main_domain as reseller', 'sh.main_domain', 'ms.name', 'sb.title']);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function doDueSoon($due_soon)
|
|
||||||
{
|
|
||||||
$pricing = new Pricing();
|
|
||||||
$count = $altered_due_soon = 0;
|
|
||||||
$server_due_date_changed = false;
|
|
||||||
foreach ($due_soon as $service) {
|
|
||||||
if (Carbon::createFromFormat('Y-m-d', $service->next_due_date)->isPast()) {
|
|
||||||
$months = $pricing->termAsMonths($service->term);//Get months for term to update the next due date to
|
|
||||||
$new_due_date = Carbon::createFromFormat('Y-m-d', $service->next_due_date)->addMonths($months)->format('Y-m-d');
|
|
||||||
DB::table('pricings')//Update the DB
|
|
||||||
->where('service_id', $service->service_id)
|
|
||||||
->update(['next_due_date' => $new_due_date]);
|
|
||||||
$due_soon[$count]->next_due_date = $new_due_date;//Update array being sent to view
|
|
||||||
$altered_due_soon = 1;
|
|
||||||
if ($service->service_type === 1) {
|
|
||||||
$server_due_date_changed = true;
|
|
||||||
Server::serverSpecificCacheForget($service->service_id);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
break;//Break because if this date isnt past than the ones after it in the loop wont be either
|
|
||||||
}
|
|
||||||
$count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($server_due_date_changed) {
|
|
||||||
Server::serverRelatedCacheForget();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($altered_due_soon === 1) {//Made changes to due soon so re-write it
|
|
||||||
Cache::put('due_soon', $due_soon);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $due_soon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function breakdownPricing($all_pricing): array
|
|
||||||
{
|
|
||||||
$pricing = json_decode($all_pricing, true);
|
|
||||||
|
|
||||||
return Cache::remember('pricing_breakdown', now()->addWeek(1), function () use ($pricing) {
|
|
||||||
$total_cost_weekly = $total_cost_pm = $inactive_count = 0;
|
|
||||||
foreach ($pricing as $price) {
|
|
||||||
if ($price['active'] === 1) {
|
|
||||||
if (Session::get('dashboard_currency') !== 'USD') {
|
|
||||||
$the_price = Pricing::convertFromUSD($price['as_usd'], Session::get('dashboard_currency'));
|
|
||||||
} else {
|
|
||||||
$the_price = $price['as_usd'];
|
|
||||||
}
|
|
||||||
if ($price['term'] === 1) {//1 month
|
|
||||||
$total_cost_weekly += ($the_price / 4);
|
|
||||||
$total_cost_pm += $the_price;
|
|
||||||
} elseif ($price['term'] === 2) {//3 months
|
|
||||||
$total_cost_weekly += ($the_price / 12);
|
|
||||||
$total_cost_pm += ($the_price / 3);
|
|
||||||
} elseif ($price['term'] === 3) {// 6 month
|
|
||||||
$total_cost_weekly += ($the_price / 24);
|
|
||||||
$total_cost_pm += ($the_price / 6);
|
|
||||||
} elseif ($price['term'] === 4) {// 1 year
|
|
||||||
$total_cost_weekly += ($the_price / 48);
|
|
||||||
$total_cost_pm += ($the_price / 12);
|
|
||||||
} elseif ($price['term'] === 5) {//2 years
|
|
||||||
$total_cost_weekly += ($the_price / 96);
|
|
||||||
$total_cost_pm += ($the_price / 24);
|
|
||||||
} elseif ($price['term'] === 6) {//3 years
|
|
||||||
$total_cost_weekly += ($the_price / 144);
|
|
||||||
$total_cost_pm += ($the_price / 36);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$inactive_count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$total_cost_yearly = ($total_cost_pm * 12);
|
|
||||||
|
|
||||||
return array(
|
|
||||||
'total_cost_weekly' => $total_cost_weekly,
|
|
||||||
'total_cost_monthly' => $total_cost_pm,
|
|
||||||
'total_cost_yearly' => $total_cost_yearly,
|
|
||||||
'inactive_count' => $inactive_count,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function doServicesCount($services_count): array
|
|
||||||
{
|
|
||||||
$services_count = json_decode($services_count, true);
|
|
||||||
|
|
||||||
return Cache::remember('services_count_all', now()->addWeek(1), function () use ($services_count) {
|
|
||||||
$servers_count = $domains_count = $shared_count = $reseller_count = $other_count = $seedbox_count = $total_services = 0;
|
|
||||||
foreach ($services_count as $sc) {
|
|
||||||
$total_services += $sc['amount'];
|
|
||||||
if ($sc['service_type'] === 1) {
|
|
||||||
$servers_count = $sc['amount'];
|
|
||||||
} else if ($sc['service_type'] === 2) {
|
|
||||||
$shared_count = $sc['amount'];
|
|
||||||
} else if ($sc['service_type'] === 3) {
|
|
||||||
$reseller_count = $sc['amount'];
|
|
||||||
} else if ($sc['service_type'] === 4) {
|
|
||||||
$domains_count = $sc['amount'];
|
|
||||||
} else if ($sc['service_type'] === 5) {
|
|
||||||
$other_count = $sc['amount'];
|
|
||||||
} else if ($sc['service_type'] === 6) {
|
|
||||||
$seedbox_count = $sc['amount'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return array(
|
|
||||||
'servers' => $servers_count,
|
|
||||||
'shared' => $shared_count,
|
|
||||||
'reseller' => $reseller_count,
|
|
||||||
'domains' => $domains_count,
|
|
||||||
'other' => $other_count,
|
|
||||||
'seedbox' => $seedbox_count,
|
|
||||||
'total' => $total_services
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -4,10 +4,7 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Http;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class IPs extends Model
|
class IPs extends Model
|
||||||
{
|
{
|
||||||
|
@ -15,67 +12,13 @@ class IPs extends Model
|
||||||
|
|
||||||
public $table = 'ips';
|
public $table = 'ips';
|
||||||
|
|
||||||
protected $keyType = 'string';
|
protected $fillable = ['id', 'active', 'service_id', 'address', 'is_ipv4'];
|
||||||
|
|
||||||
protected $fillable = ['id', 'service_id', 'address', 'is_ipv4', 'active', 'continent', 'country', 'region', 'city', 'org', 'isp', 'asn', 'timezone_gmt', 'fetched_at'];
|
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
public static function deleteIPsAssignedTo($service_id): void
|
public static function deleteIPsAssignedTo($service_id)
|
||||||
{
|
{
|
||||||
DB::table('ips')->where('service_id', $service_id)->delete();
|
DB::table('ips')->where('service_id', '=', $service_id)->delete();
|
||||||
}
|
|
||||||
|
|
||||||
public static function insertIP(string $service_id, string $address): IPs
|
|
||||||
{
|
|
||||||
return self::create(
|
|
||||||
[
|
|
||||||
'id' => Str::random(8),
|
|
||||||
'service_id' => $service_id,
|
|
||||||
'address' => $address,
|
|
||||||
'is_ipv4' => (filter_var($address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) ? 0 : 1,
|
|
||||||
'active' => 1
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function ipsForServer(string $server_id)
|
|
||||||
{
|
|
||||||
return Cache::remember("ip_addresses.$server_id", now()->addHours(1), function () use ($server_id) {
|
|
||||||
return json_decode(DB::table('ips as i')
|
|
||||||
->where('i.service_id', $server_id)
|
|
||||||
->get(), true);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function note(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Note::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getUpdateIpInfo(IPs $IP): bool
|
|
||||||
{
|
|
||||||
$response = Http::get("https://ipwhois.app/json/{$IP->address}");
|
|
||||||
|
|
||||||
if ($response->ok()) {
|
|
||||||
|
|
||||||
$data = $response->json();
|
|
||||||
|
|
||||||
$IP->update([
|
|
||||||
'continent' => $data['continent'],
|
|
||||||
'country' => $data['country'],
|
|
||||||
'region' => $data['region'],
|
|
||||||
'city' => $data['city'],
|
|
||||||
'org' => $data['org'],
|
|
||||||
'isp' => $data['isp'],
|
|
||||||
'asn' => $data['asn'],
|
|
||||||
'timezone_gmt' => $data['timezone_gmt'],
|
|
||||||
'fetched_at' => now()
|
|
||||||
]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return $response->ok();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,7 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Mockery\Exception;
|
|
||||||
|
|
||||||
class Labels extends Model
|
class Labels extends Model
|
||||||
{
|
{
|
||||||
|
@ -13,48 +12,16 @@ class Labels extends Model
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
protected $table = 'labels';
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'label', 'server_id', 'server_id_2', 'domain_id', 'domain_id_2', 'shared_id', 'shared_id_2'];
|
protected $fillable = ['id', 'label', 'server_id', 'server_id_2', 'domain_id', 'domain_id_2', 'shared_id', 'shared_id_2'];
|
||||||
|
|
||||||
public static function deleteLabelsAssignedTo($service_id): void
|
public static function deleteLabelsAssignedTo($service_id)
|
||||||
{
|
{
|
||||||
LabelsAssigned::where('service_id', $service_id)->delete();
|
DB::table('labels_assigned')->where('service_id', '=', $service_id)->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function deleteLabelAssignedAs($label_id): void
|
public static function deleteLabelAssignedAs($label_id)
|
||||||
{
|
{
|
||||||
LabelsAssigned::where('label_id', $label_id)->delete();
|
DB::table('labels_assigned')->where('label_id', '=', $label_id)->delete();
|
||||||
}
|
|
||||||
|
|
||||||
public static function insertLabelsAssigned(array $labels_array, string $service_id): void
|
|
||||||
{
|
|
||||||
for ($i = 1; $i <= 4; $i++) {
|
|
||||||
if (!is_null($labels_array[($i - 1)])) {
|
|
||||||
try {
|
|
||||||
LabelsAssigned::create([
|
|
||||||
'label_id' => $labels_array[($i - 1)],
|
|
||||||
'service_id' => $service_id
|
|
||||||
]);
|
|
||||||
} catch (Exception $exception) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function labelsCount(): int
|
|
||||||
{
|
|
||||||
return Cache::remember('labels_count', now()->addMonth(1), function () {
|
|
||||||
return Labels::count();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function assigned(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(LabelsAssigned::class, 'label_id', 'id');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
|
|
||||||
class LabelsAssigned extends Model
|
|
||||||
{
|
|
||||||
use HasFactory;
|
|
||||||
|
|
||||||
public $incrementing = false;
|
|
||||||
|
|
||||||
public $timestamps = false;
|
|
||||||
|
|
||||||
public $table = 'labels_assigned';
|
|
||||||
|
|
||||||
protected $fillable = ['label_id', 'service_id'];
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
public function label(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Labels::class, 'id', 'label_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -4,7 +4,6 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
|
|
||||||
class Locations extends Model
|
class Locations extends Model
|
||||||
{
|
{
|
||||||
|
@ -13,13 +12,4 @@ class Locations extends Model
|
||||||
protected $fillable = ['name'];
|
protected $fillable = ['name'];
|
||||||
|
|
||||||
protected $table = 'locations';
|
protected $table = 'locations';
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
public static function allLocations(): array
|
|
||||||
{
|
|
||||||
return Cache::remember("locations", now()->addMonth(1), function () {
|
|
||||||
return self::orderBy('name')->get()->toArray();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,8 @@
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
|
|
||||||
class Misc extends Model
|
class Misc extends Model
|
||||||
{
|
{
|
||||||
|
@ -16,45 +13,5 @@ class Misc extends Model
|
||||||
|
|
||||||
protected $table = 'misc_services';
|
protected $table = 'misc_services';
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'name', 'owned_since'];
|
protected $fillable = ['id', 'name', 'owned_since'];
|
||||||
|
|
||||||
protected static function boot()
|
|
||||||
{
|
|
||||||
parent::boot();
|
|
||||||
|
|
||||||
static::addGlobalScope('order', function (Builder $builder) {
|
|
||||||
$array = Settings::orderByProcess(Session::get('sort_on') ?? 2);//created_at desc if not set
|
|
||||||
if (!in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$builder->orderBy($array[0], $array[1]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allMisc()
|
|
||||||
{//All misc and relationships (no using joins)
|
|
||||||
return Cache::remember("all_misc", now()->addMonth(1), function () {
|
|
||||||
$query = Misc::with(['price']);
|
|
||||||
if (in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$options = Settings::orderByProcess(Session::get('sort_on'));
|
|
||||||
$query->orderBy(Pricing::select("pricings.$options[0]")->whereColumn("pricings.service_id", "misc_services.id"), $options[1]);
|
|
||||||
}
|
|
||||||
return $query->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function misc(string $misc_id)
|
|
||||||
{//Single misc and relationships (no using joins)
|
|
||||||
return Cache::remember("misc.$misc_id", now()->addMonth(1), function () use ($misc_id) {
|
|
||||||
return Misc::where('id', $misc_id)
|
|
||||||
->with(['price'])->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function price(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Pricing::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,16 +9,7 @@ class NetworkSpeed extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
public $incrementing = false;
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $table = 'network_speed';
|
protected $table = 'network_speed';
|
||||||
|
|
||||||
protected $fillable = ['id', 'server_id', 'location', 'send', 'send_type', 'send_as_mbps', 'receive', 'receive_type', 'receive_as_mbps', 'created_at', 'updated_at'];
|
protected $fillable = ['id', 'server_id', 'location', 'send', 'send_type', 'send_as_mbps', 'receive', 'receive_type', 'receive_as_mbps', 'created_at', 'updated_at'];
|
||||||
|
|
||||||
public function yabs(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Yabs::class, 'id', 'id');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
|
|
||||||
class Note extends Model
|
|
||||||
{
|
|
||||||
use HasFactory;
|
|
||||||
|
|
||||||
public $incrementing = false;
|
|
||||||
|
|
||||||
protected $table = 'notes';
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'service_id', 'note'];
|
|
||||||
|
|
||||||
public static function note(string $service_id): Note
|
|
||||||
{
|
|
||||||
return Cache::remember("note.$service_id", now()->addMonth(1), function () use ($service_id) {
|
|
||||||
return self::where('service_id', $service_id)->with(['server', 'shared', 'reseller', 'domain', 'dns', 'ip'])->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allNotes()
|
|
||||||
{
|
|
||||||
return Cache::remember("all_notes", now()->addMonth(1), function () {
|
|
||||||
return self::with(['server', 'shared', 'reseller', 'domain', 'dns', 'ip'])->orderBy('created_at', 'desc')->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function server(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Server::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function shared(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Shared::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function reseller(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Reseller::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function domain(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(Domains::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function dns(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(DNS::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function ip(): \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
||||||
{
|
|
||||||
return $this->belongsTo(IPs::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -4,7 +4,6 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
|
|
||||||
class OS extends Model
|
class OS extends Model
|
||||||
{
|
{
|
||||||
|
@ -12,14 +11,5 @@ class OS extends Model
|
||||||
|
|
||||||
protected $fillable = ['name'];
|
protected $fillable = ['name'];
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $table = 'os';
|
protected $table = 'os';
|
||||||
|
|
||||||
public static function allOS()
|
|
||||||
{
|
|
||||||
return Cache::remember("operating_systems", now()->addMonth(1), function () {
|
|
||||||
return self::orderBy('name')->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,68 +2,35 @@
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Exception;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Log;
|
|
||||||
|
|
||||||
class Pricing extends Model
|
class Pricing extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
protected $table = 'pricings';
|
|
||||||
|
|
||||||
public $incrementing = false;
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['service_id', 'service_type', 'currency', 'price', 'term', 'as_usd', 'usd_per_month', 'next_due_date'];
|
protected $fillable = ['service_id', 'service_type', 'currency', 'price', 'term', 'as_usd', 'usd_per_month', 'next_due_date'];
|
||||||
|
|
||||||
private static function refreshRates(): object
|
|
||||||
{
|
|
||||||
if (Cache::has("currency_rates")) {
|
|
||||||
return Cache::get("currency_rates");
|
|
||||||
}
|
|
||||||
$response_json = file_get_contents("https://open.er-api.com/v6/latest/USD");
|
|
||||||
if (false === $response_json) {
|
|
||||||
Log::error("do file_get_contents failed");
|
|
||||||
return (object)null;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
$response = json_decode($response_json);
|
|
||||||
if ('success' === $response->result) {
|
|
||||||
return Cache::remember("currency_rates", now()->addWeek(1), function () use ($response) {
|
|
||||||
return $response->rates;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Log::error("server response is " . $response->result . ", expecting success");
|
|
||||||
} catch (Exception $e) {
|
|
||||||
Log::error("failed to request v6.exchangerate-api.com", ['err' => $e]);
|
|
||||||
}
|
|
||||||
return (object)null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static function getRates($currency): float
|
|
||||||
{
|
|
||||||
$rate = self::refreshRates()->$currency;
|
|
||||||
return $rate ?? 1.00;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getCurrencyList(): array
|
|
||||||
{
|
|
||||||
return array_keys((array)self::refreshRates());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function convertFromUSD(string $amount, string $convert_to): float
|
|
||||||
{
|
|
||||||
return $amount * self::getRates($convert_to);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function convertToUSD(string $amount, string $convert_from): float
|
public function convertToUSD(string $amount, string $convert_from): float
|
||||||
{
|
{
|
||||||
return $amount / self::getRates($convert_from);
|
if ($convert_from === 'AUD') {
|
||||||
|
return (0.76 * $amount);
|
||||||
|
} elseif ($convert_from === "USD") {
|
||||||
|
return $amount;
|
||||||
|
} elseif ($convert_from === "GBP") {
|
||||||
|
return (1.35 * $amount);
|
||||||
|
} elseif ($convert_from === "EUR") {
|
||||||
|
return (1.23 * $amount);
|
||||||
|
} elseif ($convert_from === "NZD") {
|
||||||
|
return (0.72 * $amount);
|
||||||
|
} elseif ($convert_from === "JPY") {
|
||||||
|
return (0.0097 * $amount);
|
||||||
|
} elseif ($convert_from === "CAD") {
|
||||||
|
return (0.78 * $amount);
|
||||||
|
} else {
|
||||||
|
return 1.00;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function costAsPerMonth(string $cost, int $term): float
|
public function costAsPerMonth(string $cost, int $term): float
|
||||||
|
@ -106,46 +73,6 @@ class Pricing extends Model
|
||||||
|
|
||||||
public function deletePricing($id): void
|
public function deletePricing($id): void
|
||||||
{
|
{
|
||||||
DB::table('pricings')->where('service_id', $id)->delete();
|
DB::table('pricings')->where('service_id', '=', $id)->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function insertPricing(int $type, string $service_id, string $currency, float $price, int $term, string $next_due_date, int $is_active = 1): Pricing
|
|
||||||
{
|
|
||||||
$as_usd = $this->convertToUSD($price, $currency);
|
|
||||||
return self::create([
|
|
||||||
'service_type' => $type,
|
|
||||||
'service_id' => $service_id,
|
|
||||||
'currency' => $currency,
|
|
||||||
'price' => $price,
|
|
||||||
'term' => $term,
|
|
||||||
'as_usd' => $as_usd,
|
|
||||||
'usd_per_month' => $this->costAsPerMonth($as_usd, $term),
|
|
||||||
'next_due_date' => $next_due_date,
|
|
||||||
'active' => $is_active
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updatePricing(string $service_id, string $currency, float $price, int $term, string $next_due_date, int $is_active = 1): int
|
|
||||||
{
|
|
||||||
$as_usd = $this->convertToUSD($price, $currency);
|
|
||||||
return DB::table('pricings')
|
|
||||||
->where('service_id', $service_id)
|
|
||||||
->update([
|
|
||||||
'currency' => $currency,
|
|
||||||
'price' => $price,
|
|
||||||
'term' => $term,
|
|
||||||
'as_usd' => $as_usd,
|
|
||||||
'usd_per_month' => $this->costAsPerMonth($as_usd, $term),
|
|
||||||
'next_due_date' => $next_due_date,
|
|
||||||
'active' => $is_active
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allPricing()
|
|
||||||
{
|
|
||||||
return Cache::remember('all_active_pricing', now()->addWeek(1), function () {
|
|
||||||
return Pricing::where('active', 1)->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,6 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
|
|
||||||
class Providers extends Model
|
class Providers extends Model
|
||||||
{
|
{
|
||||||
|
@ -13,34 +11,5 @@ class Providers extends Model
|
||||||
|
|
||||||
protected $fillable = ['name'];
|
protected $fillable = ['name'];
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $table = 'providers';
|
protected $table = 'providers';
|
||||||
|
|
||||||
public static function allProviders(): array
|
|
||||||
{
|
|
||||||
return Cache::remember("providers", now()->addMonth(1), function () {
|
|
||||||
return self::orderBy('name')->get()->toArray();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function showServicesForProvider($provider): array
|
|
||||||
{
|
|
||||||
$servers = DB::table('servers as s')
|
|
||||||
->where('s.provider_id', $provider)
|
|
||||||
->get(['s.id', 's.hostname'])
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
$shared = DB::table('shared_hosting as s')
|
|
||||||
->where('s.provider_id', $provider)
|
|
||||||
->get(['s.id', 's.main_domain as main_domain_shared'])
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
$reseller = DB::table('reseller_hosting as r')
|
|
||||||
->where('r.provider_id', $provider)
|
|
||||||
->get(['r.id', 'r.main_domain as main_domain_reseller'])
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
return array_merge($servers, $shared, $reseller);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,8 @@
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
|
|
||||||
class Reseller extends Model
|
class Reseller extends Model
|
||||||
{
|
{
|
||||||
|
@ -15,72 +11,7 @@ class Reseller extends Model
|
||||||
|
|
||||||
protected $table = 'reseller_hosting';
|
protected $table = 'reseller_hosting';
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'active', 'accounts', 'main_domain', 'has_dedicated_ip', 'ip', 'reseller_type', 'provider_id', 'location_id', 'bandwidth', 'disk', 'disk_type', 'disk_as_gb', 'domains_limit', 'subdomains_limit', 'ftp_limit', 'email_limit', 'db_limit', 'was_promo', 'owned_since'];
|
protected $fillable = ['id', 'active', 'accounts', 'main_domain', 'has_dedicated_ip', 'ip', 'reseller_type', 'provider_id', 'location_id', 'bandwidth', 'disk', 'disk_type', 'disk_as_gb', 'domains_limit', 'subdomains_limit', 'ftp_limit', 'email_limit', 'db_limit', 'was_promo', 'owned_since'];
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
protected static function boot()
|
|
||||||
{
|
|
||||||
parent::boot();
|
|
||||||
|
|
||||||
static::addGlobalScope('order', function (Builder $builder) {
|
|
||||||
$array = Settings::orderByProcess(Session::get('sort_on') ?? 2);//created_at desc if not set
|
|
||||||
if (!in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$builder->orderBy($array[0], $array[1]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allResellerHosting()
|
|
||||||
{//All reseller hosting and relationships (no using joins)
|
|
||||||
return Cache::remember("all_reseller", now()->addMonth(1), function () {
|
|
||||||
$query = Reseller::with(['location', 'provider', 'price', 'ips', 'labels']);
|
|
||||||
if (in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$options = Settings::orderByProcess(Session::get('sort_on'));
|
|
||||||
$query->orderBy(Pricing::select("pricings.$options[0]")->whereColumn("pricings.service_id", "reseller_hosting.id"), $options[1]);
|
|
||||||
}
|
|
||||||
return $query->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function resellerHosting(string $reseller_id)
|
|
||||||
{//Single reseller hosting and relationships (no using joins)
|
|
||||||
return Cache::remember("reseller_hosting.$reseller_id", now()->addMonth(1), function () use ($reseller_id) {
|
|
||||||
return Reseller::where('id', $reseller_id)
|
|
||||||
->with(['location', 'provider', 'price', 'ips', 'labels'])->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function ips(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(IPs::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function location(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Locations::class, 'id', 'location_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provider(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Providers::class, 'id', 'provider_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function price(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Pricing::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function labels(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(LabelsAssigned::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function note(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Note::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Models;
|
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
|
|
||||||
class SeedBoxes extends Model
|
|
||||||
{
|
|
||||||
use HasFactory;
|
|
||||||
|
|
||||||
protected $table = 'seedboxes';
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
public $incrementing = false;
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'active', 'title', 'hostname', 'seed_box_type', 'provider_id', 'location_id', 'bandwidth', 'port_speed', 'disk', 'disk_type', 'disk_as_gb', 'was_promo', 'owned_since'];
|
|
||||||
|
|
||||||
protected static function boot()
|
|
||||||
{
|
|
||||||
parent::boot();
|
|
||||||
|
|
||||||
static::addGlobalScope('order', function (Builder $builder) {
|
|
||||||
$array = Settings::orderByProcess(Session::get('sort_on') ?? 2);//created_at desc if not set
|
|
||||||
if (!in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$builder->orderBy($array[0], $array[1]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allSeedboxes()
|
|
||||||
{//All seedboxes and relationships (no using joins)
|
|
||||||
return Cache::remember("all_seedboxes", now()->addMonth(1), function () {
|
|
||||||
$query = SeedBoxes::with(['location', 'provider', 'price']);
|
|
||||||
if (in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$options = Settings::orderByProcess(Session::get('sort_on'));
|
|
||||||
$query->orderBy(Pricing::select("pricings.$options[0]")->whereColumn("pricings.service_id", "seedboxes.id"), $options[1]);
|
|
||||||
}
|
|
||||||
return $query->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function seedbox(string $seedbox_id)
|
|
||||||
{//Single seedbox and relationships (no using joins)
|
|
||||||
return Cache::remember("seedbox.$seedbox_id", now()->addMonth(1), function () use ($seedbox_id) {
|
|
||||||
return SeedBoxes::where('id', $seedbox_id)
|
|
||||||
->with(['location', 'provider', 'price'])->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function location(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Locations::class, 'id', 'location_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provider(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Providers::class, 'id', 'provider_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function price(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Pricing::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function labels(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(LabelsAssigned::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -4,140 +4,121 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
|
|
||||||
class Server extends Model
|
class Server extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
|
|
||||||
protected $table = 'servers';
|
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
protected $fillable = ['id', 'hostname', 'ipv4', 'ipv6', 'server_type', 'os_id', 'location_id', 'provider_id',
|
protected $fillable = ['id', 'hostname', 'ipv4', 'ipv6', 'server_type', 'os_id', 'location_id', 'provider_id', 'ram', 'disk', 'ram_type', 'disk_type', 'ns1', 'ns2', 'label', 'bandwidth', 'ram_as_mb', 'disk_as_gb', 'has_yabs', 'was_promo', 'owned_since', 'ssh', 'active','show_public'];
|
||||||
'ram', 'disk', 'ram_type', 'disk_type', 'ns1', 'ns2', 'label', 'bandwidth', 'ram_as_mb', 'disk_as_gb',
|
|
||||||
'has_yabs', 'was_promo', 'owned_since', 'ssh', 'active', 'show_public', 'cpu'];
|
|
||||||
/**
|
/**
|
||||||
* @var mixed
|
* @var mixed
|
||||||
*/
|
*/
|
||||||
private $id;
|
private $id;
|
||||||
|
|
||||||
protected static function boot()
|
public static function serviceServerType($type)
|
||||||
{
|
|
||||||
parent::boot();
|
|
||||||
|
|
||||||
static::addGlobalScope('order', function (Builder $builder) {
|
|
||||||
$array = Settings::orderByProcess(Session::get('sort_on') ?? 2);//created_at desc if not set
|
|
||||||
if (!in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$builder->orderBy($array[0], $array[1]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allServers()
|
|
||||||
{//All servers and relationships (no using joins)
|
|
||||||
return Cache::remember("all_servers", now()->addMonth(1), function () {
|
|
||||||
$query = Server::with(['location', 'provider', 'os', 'price', 'ips', 'yabs', 'yabs.disk_speed', 'yabs.network_speed', 'labels']);
|
|
||||||
if (in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$options = Settings::orderByProcess(Session::get('sort_on'));
|
|
||||||
$query->orderBy(Pricing::select("pricings.$options[0]")->whereColumn("pricings.service_id", "servers.id"), $options[1]);
|
|
||||||
}
|
|
||||||
return $query->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function server(string $server_id): Server
|
|
||||||
{//Single server and relationships (no using joins)
|
|
||||||
return Cache::remember("server.$server_id", now()->addMonth(1), function () use ($server_id) {
|
|
||||||
return Server::where('id', $server_id)
|
|
||||||
->with(['location', 'provider', 'os', 'price', 'ips', 'yabs', 'yabs.disk_speed', 'yabs.network_speed', 'labels'])->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allActiveServers()
|
|
||||||
{//All ACTIVE servers and relationships replaces activeServersDataIndexPage()
|
|
||||||
return Cache::remember("all_active_servers", now()->addMonth(1), function () {
|
|
||||||
$query = Server::where('active', 1)
|
|
||||||
->with(['location', 'provider', 'os', 'ips', 'yabs', 'yabs.disk_speed', 'yabs.network_speed', 'labels', 'price']);
|
|
||||||
if (in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$options = Settings::orderByProcess(Session::get('sort_on'));
|
|
||||||
$query->orderBy(Pricing::select("pricings.$options[0]")->whereColumn("pricings.service_id", "servers.id"), $options[1]);
|
|
||||||
}
|
|
||||||
return $query->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allNonActiveServers()
|
|
||||||
{//All NON ACTIVE servers and relationships replaces nonActiveServersDataIndexPage()
|
|
||||||
return Cache::remember("non_active_servers", now()->addMonth(1), function () {
|
|
||||||
return Server::where('active', 0)
|
|
||||||
->with(['location', 'provider', 'os', 'price', 'ips', 'yabs', 'yabs.disk_speed', 'yabs.network_speed', 'labels'])
|
|
||||||
->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allPublicServers()
|
|
||||||
{//server data that will be publicly viewable (values in settings)
|
|
||||||
return Cache::remember("public_server_data", now()->addMonth(1), function () {
|
|
||||||
return Server::where('show_public', 1)
|
|
||||||
->with(['location', 'provider', 'os', 'price', 'ips', 'yabs', 'yabs.disk_speed', 'yabs.network_speed', 'labels'])
|
|
||||||
->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function serviceServerType(int $type, bool $short = true): string
|
|
||||||
{
|
{
|
||||||
if ($type === 1) {
|
if ($type === 1) {
|
||||||
return "KVM";
|
return "KVM";
|
||||||
} elseif ($type === 2) {
|
} elseif ($type === 2) {
|
||||||
return "OVZ";
|
return "OVZ";
|
||||||
} elseif ($type === 3) {
|
} elseif ($type === 3) {
|
||||||
if (!$short) {
|
|
||||||
return "Dedicated";
|
|
||||||
}
|
|
||||||
return "DEDI";
|
return "DEDI";
|
||||||
} elseif ($type === 4) {
|
} elseif ($type === 4) {
|
||||||
return "LXC";
|
return "LXC";
|
||||||
} elseif ($type === 6) {
|
|
||||||
return "VMware";
|
|
||||||
} elseif ($type === 7) {
|
|
||||||
return "NAT";
|
|
||||||
} else {
|
} else {
|
||||||
if (!$short) {
|
|
||||||
return "Semi-dedicated";
|
|
||||||
}
|
|
||||||
return "SEMI-DEDI";
|
return "SEMI-DEDI";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function osIntToIcon(int $os, string $os_name): string
|
public static function osIntToIcon(int $os, string $os_name)
|
||||||
{
|
{
|
||||||
if ($os === 1) {//None
|
if ($os === 1) {//None
|
||||||
return "<i class='fas fa-expand' title='{$os_name}'></i>";
|
return "<i class='fas fa-expand' title='{$os_name}'></i>";
|
||||||
} else if ($os <= 3) {//Centos
|
} else if ($os <= 3) {//Centos
|
||||||
return "<i class='fa-brands fa-centos os-icon' title='{$os_name}'></i>";
|
return "<i class='fab fa-centos os-icon' title='{$os_name}'></i>";
|
||||||
} elseif (($os > 7 && $os <= 10) || $os === 44) {//Debian
|
} elseif ($os > 3 && $os <= 6) {//Debain
|
||||||
return "<i class='fa-brands fa-linux os-icon' title='{$os_name}'></i>";
|
return "<i class='fab fa-linux os-icon' title='{$os_name}'></i>";
|
||||||
} elseif (($os > 11 && $os < 15) || $os === 43) {//Fedora
|
} elseif ($os > 6 && $os < 10) {//Fedora
|
||||||
return "<i class='fa-brands fa-fedora os-icon' title='{$os_name}'></i>";
|
return "<i class='fab fa-fedora os-icon' title='{$os_name}'></i>";
|
||||||
} elseif (($os > 14 && $os < 18) || $os === 46) {//FreeBSD
|
} elseif ($os > 10 && $os < 13) {//FreeBSD
|
||||||
return "<i class='fa-brands fa-linux os-icon' title='{$os_name}'></i>";
|
return "<i class='fab fa-linux os-icon' title='{$os_name}'></i>";
|
||||||
} elseif (($os > 17 && $os < 21) || $os === 42) {//OpenBSD
|
} elseif ($os > 13 && $os < 16) {//OpenBSD
|
||||||
return "<i class='fa-brands fa-linux os-icon' title='{$os_name}'></i>";
|
return "<i class='fab fa-linux os-icon' title='{$os_name}'></i>";
|
||||||
} elseif (($os > 25 && $os < 32) || $os === 41) {//Ubuntu
|
} elseif ($os > 15 && $os < 21) {//Ubuntu
|
||||||
return "<i class='fa-brands fa-ubuntu os-icon' title='{$os_name}'></i>";
|
return "<i class='fab fa-ubuntu os-icon' title='{$os_name}'></i>";
|
||||||
} elseif (($os > 32 && $os < 38) || $os === 40) {//Windows
|
} elseif ($os > 20 && $os < 26) {//Windows
|
||||||
return "<i class='fa-brands fa-windows os-icon' title='{$os_name}'></i>";
|
return "<i class='fab fa-windows os-icon' title='{$os_name}'></i>";
|
||||||
} else {//OTHER ISO CUSTOM etc
|
} else {//OTHER ISO CUSTOM etc
|
||||||
return "<i class='fa-solid fa-compact-disc os-icon' title='{$os_name}'></i>";
|
return "<i class='fas fa-compact-disc os-icon' title='{$os_name}'></i>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function tableRowCompare(string $val1, string $val2, string $value_type = '', bool $is_int = true): string
|
public static function osIdAsString($os)
|
||||||
|
{
|
||||||
|
if ($os === "0") {
|
||||||
|
return "None";
|
||||||
|
} elseif ($os === "1") {
|
||||||
|
return "CentOS 7";
|
||||||
|
} elseif ($os === "2") {
|
||||||
|
return "CentOS 8";
|
||||||
|
} elseif ($os === "3") {
|
||||||
|
return "CentOS";
|
||||||
|
} elseif ($os === "4") {
|
||||||
|
return "Debian 9";
|
||||||
|
} elseif ($os === "5") {
|
||||||
|
return "Debian 10";
|
||||||
|
} elseif ($os === "6") {
|
||||||
|
return "Debian";
|
||||||
|
} elseif ($os === "7") {
|
||||||
|
return "Fedora 32";
|
||||||
|
} elseif ($os === "8") {
|
||||||
|
return "Fedora 33";
|
||||||
|
} elseif ($os === "9") {
|
||||||
|
return "Fedora";
|
||||||
|
} elseif ($os === "10") {
|
||||||
|
return "FreeBSD 11.4";
|
||||||
|
} elseif ($os === "11") {
|
||||||
|
return "FreeBSD 12.1";
|
||||||
|
} elseif ($os === "12") {
|
||||||
|
return "FreeBSD";
|
||||||
|
} elseif ($os === "13") {
|
||||||
|
return "OpenBSD 6.7";
|
||||||
|
} elseif ($os === "14") {
|
||||||
|
return "OpenBSD 6.8";
|
||||||
|
} elseif ($os === "15") {
|
||||||
|
return "OpenBSD";
|
||||||
|
} elseif ($os == "16") {
|
||||||
|
return "Ubuntu 16.04";
|
||||||
|
} elseif ($os === "17") {
|
||||||
|
return "Ubuntu 18.04";
|
||||||
|
} elseif ($os === "18") {
|
||||||
|
return "Ubuntu 20.04";
|
||||||
|
} elseif ($os === "19") {
|
||||||
|
return "Ubuntu 20.10";
|
||||||
|
} elseif ($os === "20") {
|
||||||
|
return "Ubuntu";
|
||||||
|
} elseif ($os === "21") {
|
||||||
|
return "Windows Server 2008";
|
||||||
|
} elseif ($os === "22") {
|
||||||
|
return "Windows Server 2012";
|
||||||
|
} elseif ($os === "23") {
|
||||||
|
return "Windows Server 2016";
|
||||||
|
} elseif ($os === "24") {
|
||||||
|
return "Windows Server 2019";
|
||||||
|
} elseif ($os === "25") {
|
||||||
|
return "Windows 10";
|
||||||
|
} elseif ($os === "26") {
|
||||||
|
return "Custom";
|
||||||
|
} elseif ($os === "27") {
|
||||||
|
return "Other";
|
||||||
|
} else {
|
||||||
|
return "Unknown";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function tableRowCompare(string $val1, string $val2, string $value_type = '', bool $is_int = true)
|
||||||
{
|
{
|
||||||
//<td class="td-nowrap plus-td">+303<span class="data-type">MBps</span></td>
|
//<td class="td-nowrap plus-td">+303<span class="data-type">MBps</span></td>
|
||||||
$str = '<td class="td-nowrap ';
|
$str = '<td class="td-nowrap ';
|
||||||
|
@ -169,71 +150,4 @@ class Server extends Model
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function serverRelatedCacheForget(): void
|
|
||||||
{
|
|
||||||
Cache::forget('all_servers');//All servers
|
|
||||||
Cache::forget('services_count');//Main page services_count cache
|
|
||||||
Cache::forget('due_soon');//Main page due_soon cache
|
|
||||||
Cache::forget('recently_added');//Main page recently_added cache
|
|
||||||
Cache::forget('all_active_servers');//all active servers cache
|
|
||||||
Cache::forget('non_active_servers');//all non active servers cache
|
|
||||||
Cache::forget('servers_summary');//servers summary cache
|
|
||||||
Cache::forget('public_server_data');//public servers
|
|
||||||
Cache::forget('all_pricing');//All pricing
|
|
||||||
Cache::forget('services_count_all');
|
|
||||||
Cache::forget('pricing_breakdown');
|
|
||||||
Cache::forget('all_active_pricing');
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function serverSpecificCacheForget(string $server_id): void
|
|
||||||
{
|
|
||||||
Cache::forget("server.$server_id");//Will replace one below
|
|
||||||
Cache::forget("service_pricing.$server_id");//Pricing
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function serverYabsAmount(string $server_id): int
|
|
||||||
{//Returns amount of YABS a server has
|
|
||||||
return Yabs::where('server_id', $server_id)->count();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function yabs(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(Yabs::class, 'server_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function ips(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(IPs::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function location(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Locations::class, 'id', 'location_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provider(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Providers::class, 'id', 'provider_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function os(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(OS::class, 'id', 'os_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function price(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Pricing::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function labels(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(LabelsAssigned::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function note(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Note::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,6 @@ namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
|
|
||||||
class Settings extends Model
|
class Settings extends Model
|
||||||
{
|
{
|
||||||
|
@ -13,65 +11,5 @@ class Settings extends Model
|
||||||
|
|
||||||
protected $table = 'settings';
|
protected $table = 'settings';
|
||||||
|
|
||||||
protected $fillable = ['id', 'show_versions_footer', 'show_servers_public', 'show_server_value_ip', 'show_server_value_hostname', 'show_server_value_provider', 'show_server_value_location', 'show_server_value_price', 'show_server_value_yabs', 'save_yabs_as_txt', 'default_currency', 'default_server_os', 'due_soon_amount', 'recently_added_amount', 'dark_mode', 'dashboard_currency', 'sort_on', 'favicon'];
|
protected $fillable = ['id', 'show_versions_footer', 'show_servers_public'];
|
||||||
|
|
||||||
public static function getSettings(): Settings
|
|
||||||
{
|
|
||||||
return Cache::remember('settings', now()->addWeek(1), function () {
|
|
||||||
$settings = self::where('id', 1)->first();
|
|
||||||
if (is_null($settings)){
|
|
||||||
$settings = Settings::create();
|
|
||||||
}
|
|
||||||
return $settings;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function setSettingsToSession($settings): void
|
|
||||||
{
|
|
||||||
Session::put('dark_mode', $settings->dark_mode ?? 0);
|
|
||||||
Session::put('timer_version_footer', $settings->show_versions_footer ?? 1);
|
|
||||||
Session::put('show_servers_public', $settings->show_servers_public ?? 0);
|
|
||||||
Session::put('show_server_value_ip', $settings->show_server_value_ip ?? 0);
|
|
||||||
Session::put('show_server_value_hostname', $settings->show_server_value_hostname ?? 0);
|
|
||||||
Session::put('show_server_value_price', $settings->show_server_value_price ?? 0);
|
|
||||||
Session::put('show_server_value_yabs', $settings->show_server_value_yabs ?? 0);
|
|
||||||
Session::put('show_server_value_provider', $settings->show_server_value_provider ?? 0);
|
|
||||||
Session::put('show_server_value_location', $settings->show_server_value_location ?? 0);
|
|
||||||
Session::put('save_yabs_as_txt', $settings->save_yabs_as_txt ?? 0);
|
|
||||||
Session::put('default_currency', $settings->default_currency ?? 'USD');
|
|
||||||
Session::put('default_server_os', $settings->default_server_os ?? 1);
|
|
||||||
Session::put('due_soon_amount', $settings->due_soon_amount ?? 6);
|
|
||||||
Session::put('recently_added_amount', $settings->recently_added_amount ?? 6);
|
|
||||||
Session::put('dashboard_currency', $settings->dashboard_currency ?? 'USD');
|
|
||||||
Session::put('sort_on', $settings->sort_on ?? 1);
|
|
||||||
Session::put('favicon', $settings->favicon ?? 'favicon.ico');
|
|
||||||
Session::save();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function orderByProcess(int $value): array
|
|
||||||
{
|
|
||||||
if ($value === 1) {//created_at ASC
|
|
||||||
return ['created_at', 'asc'];
|
|
||||||
} elseif ($value === 2) {//created_at DESC
|
|
||||||
return ['created_at', 'desc'];
|
|
||||||
} elseif ($value === 3) {//next_due_date ASC
|
|
||||||
return ['next_due_date', 'asc'];
|
|
||||||
} elseif ($value === 4) {//next_due_date DESC
|
|
||||||
return ['next_due_date', 'desc'];
|
|
||||||
} elseif ($value === 5) {//as_usd ASC
|
|
||||||
return ['as_usd', 'asc'];
|
|
||||||
} elseif ($value === 6) {//as_usd DESC
|
|
||||||
return ['as_usd', 'desc'];
|
|
||||||
} elseif ($value === 7) {//owned_since ASC
|
|
||||||
return ['owned_since', 'asc'];
|
|
||||||
} elseif ($value === 8) {//owned_since DESC
|
|
||||||
return ['owned_since', 'desc'];
|
|
||||||
} elseif ($value === 9) {//updated_at ASC
|
|
||||||
return ['updated_at', 'asc'];
|
|
||||||
} elseif ($value === 10) {//updated_at DESC
|
|
||||||
return ['updated_at', 'desc'];
|
|
||||||
}
|
|
||||||
return ['created_at', 'desc'];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,8 @@
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\Session;
|
|
||||||
|
|
||||||
class Shared extends Model
|
class Shared extends Model
|
||||||
{
|
{
|
||||||
|
@ -14,72 +11,7 @@ class Shared extends Model
|
||||||
|
|
||||||
public $table = 'shared_hosting';
|
public $table = 'shared_hosting';
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $fillable = ['id', 'active', 'main_domain', 'has_dedicated_ip', 'ip', 'shared_type', 'provider_id', 'location_id', 'bandwidth', 'disk', 'disk_type', 'disk_as_gb', 'domains_limit', 'subdomains_limit', 'ftp_limit', 'email_limit', 'db_limit', 'was_promo', 'owned_since'];
|
protected $fillable = ['id', 'active', 'main_domain', 'has_dedicated_ip', 'ip', 'shared_type', 'provider_id', 'location_id', 'bandwidth', 'disk', 'disk_type', 'disk_as_gb', 'domains_limit', 'subdomains_limit', 'ftp_limit', 'email_limit', 'db_limit', 'was_promo', 'owned_since'];
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
protected static function boot()
|
|
||||||
{
|
|
||||||
parent::boot();
|
|
||||||
|
|
||||||
static::addGlobalScope('order', function (Builder $builder) {
|
|
||||||
$array = Settings::orderByProcess(Session::get('sort_on') ?? 2);//created_at desc if not set
|
|
||||||
if (!in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$builder->orderBy($array[0], $array[1]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allSharedHosting()
|
|
||||||
{//All shared hosting and relationships (no using joins)
|
|
||||||
return Cache::remember("all_shared", now()->addMonth(1), function () {
|
|
||||||
$query = Shared::with(['location', 'provider', 'price', 'ips', 'labels']);
|
|
||||||
if (in_array(Session::get('sort_on'), [3, 4, 5, 6], true)) {
|
|
||||||
$options = Settings::orderByProcess(Session::get('sort_on'));
|
|
||||||
$query->orderBy(Pricing::select("pricings.$options[0]")->whereColumn("pricings.service_id", "shared_hosting.id"), $options[1]);
|
|
||||||
}
|
|
||||||
return $query->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function sharedHosting(string $shared_id)
|
|
||||||
{//Single shared hosting and relationships (no using joins)
|
|
||||||
return Cache::remember("shared_hosting.$shared_id", now()->addMonth(1), function () use ($shared_id) {
|
|
||||||
return Shared::where('id', $shared_id)
|
|
||||||
->with(['location', 'provider', 'price', 'ips', 'labels'])->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function ips(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(IPs::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function location(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Locations::class, 'id', 'location_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provider(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Providers::class, 'id', 'provider_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function price(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Pricing::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function labels(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(LabelsAssigned::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function note(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Note::class, 'service_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,13 +2,8 @@
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use DateTime;
|
|
||||||
use Exception;
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
class Yabs extends Model
|
class Yabs extends Model
|
||||||
{
|
{
|
||||||
|
@ -16,322 +11,7 @@ class Yabs extends Model
|
||||||
|
|
||||||
public $incrementing = false;
|
public $incrementing = false;
|
||||||
|
|
||||||
protected $keyType = 'string';
|
|
||||||
|
|
||||||
protected $table = 'yabs';
|
protected $table = 'yabs';
|
||||||
|
|
||||||
protected $fillable = ['id', 'server_id', 'has_ipv6', 'aes', 'vm', 'output_date', 'cpu_cores', 'cpu_freq', 'cpu_model', 'ram', 'ram_type', 'ram_mb', 'disk', 'disk_type', 'disk_gb', 'gb5_single', 'gb5_multi', 'gb5_id', 'gb6_single', 'gb6_multi', 'gb6_id', '4k', '4k_type', '4k_as_mbps', '64k', '64k_type', '64k_as_mbps', '512k', '512k_type', '512k_as_mbps', '1m', '1m_type', '1m_as_mbps', 'location', 'send', 'send_type', 'send_as_mbps', 'receive', 'receive_type', 'receive_as_mbps', 'uptime', 'distro', 'kernel', 'swap', 'swap_type', 'swap_mb'];
|
protected $fillable = ['id', 'server_id', 'has_ipv6', 'aes', 'vm', 'output_date', 'cpu_cores', 'cpu_freq', 'cpu_model', 'ram', 'ram_type', 'ram_mb', 'disk', 'disk_type', 'disk_gb', 'gb5_single', 'gb5_multi', 'gb5_id', '4k', '4k_type', '4k_as_mbps', '64k', '64k_type', '64k_as_mbps', '512k', '512k_type', '512k_as_mbps', '1m', '1m_type', '1m_as_mbps', 'location', 'send', 'send_type', 'send_as_mbps', 'receive', 'receive_type', 'receive_as_mbps'];
|
||||||
|
|
||||||
public static function yabs(string $yabs_id)
|
|
||||||
{
|
|
||||||
return Cache::remember("yabs.$yabs_id", now()->addMonth(1), function () use ($yabs_id) {
|
|
||||||
return self::where('id', $yabs_id)->with(['server', 'disk_speed', 'network_speed', 'server.location', 'server.provider'])
|
|
||||||
->first();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function allYabs()
|
|
||||||
{
|
|
||||||
return Cache::remember("all_yabs", now()->addMonth(1), function () {
|
|
||||||
return self::with(['server', 'disk_speed', 'network_speed', 'server.location', 'server.provider'])
|
|
||||||
->get();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function server(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(Server::class, 'id', 'server_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function disk_speed(): \Illuminate\Database\Eloquent\Relations\HasOne
|
|
||||||
{
|
|
||||||
return $this->hasOne(DiskSpeed::class, 'id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function network_speed(): \Illuminate\Database\Eloquent\Relations\HasMany
|
|
||||||
{
|
|
||||||
return $this->hasMany(NetworkSpeed::class, 'id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function buildYabsArray($data): array
|
|
||||||
{
|
|
||||||
$speed_tests = [];
|
|
||||||
foreach ($data->network_speed as $ns) {
|
|
||||||
$speed_tests[] = [
|
|
||||||
'location' => $ns->location,
|
|
||||||
'send' => $ns->send . ' ' . $ns->send_type,
|
|
||||||
'receive' => $ns->receive . ' ' . $ns->receive_type,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
return [
|
|
||||||
'date_time' => $data->output_date,
|
|
||||||
'location' => $data->server->location->name,
|
|
||||||
'provider' => $data->server->provider->name,
|
|
||||||
'uptime' => $data->uptime,
|
|
||||||
'distro' => $data->distro,
|
|
||||||
'kernel' => $data->kernel,
|
|
||||||
'cpu' => [
|
|
||||||
'cores' => $data->cpu_cores,
|
|
||||||
'speed_mhz' => $data->cpu_freq,
|
|
||||||
'model' => $data->cpu_model,
|
|
||||||
'aes' => $data->aes === 1,
|
|
||||||
'vm' => $data->vm === 1,
|
|
||||||
'GB5_single' => $data->gb5_single,
|
|
||||||
'GB5_multi' => $data->gb5_multi,
|
|
||||||
],
|
|
||||||
'ram' => [
|
|
||||||
'amount' => $data->ram . ' ' . $data->ram_type,
|
|
||||||
'mb' => $data->ram_mb,
|
|
||||||
'swap' => [
|
|
||||||
'amount' => $data->swap ?? null . ' ' . $data->swap_type ?? null,
|
|
||||||
'mb' => $data->swap_mb ?? null,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'disk' => [
|
|
||||||
'amount' => $data->disk . ' ' . $data->disk_type,
|
|
||||||
'gb' => $data->disk_gb,
|
|
||||||
'speed_tests' => [
|
|
||||||
'4k' => $data->disk_speed->d_4k . ' ' . $data->disk_speed->d_4k_type,
|
|
||||||
'64k' => $data->disk_speed->d_64k . ' ' . $data->disk_speed->d_64k_type,
|
|
||||||
'512k' => $data->disk_speed->d_512k . ' ' . $data->disk_speed->d_512k_type,
|
|
||||||
'1m' => $data->disk_speed->d_1m . ' ' . $data->disk_speed->d_1m_type,
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'network' => [
|
|
||||||
'has_ipv6' => $data->has_ipv6 === 1,
|
|
||||||
'speed_tests' => $speed_tests
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function speedAsMbps(string $string): float
|
|
||||||
{
|
|
||||||
$data = explode(" ", $string);
|
|
||||||
if ($data[0] === 'busy') {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if ($data[1] === "Gbits/sec") {
|
|
||||||
return $data[0] * 1000;
|
|
||||||
} else if ($data[1] === "Mbits/sec") {
|
|
||||||
return $data[0];
|
|
||||||
} else {//Kbps
|
|
||||||
return $data[0] / 1000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function speedType(string $string): string
|
|
||||||
{
|
|
||||||
$data = explode(" ", $string);
|
|
||||||
if ($data[0] === 'busy') {
|
|
||||||
return "MBps";
|
|
||||||
}
|
|
||||||
if ($data[1] === "Gbits/sec") {
|
|
||||||
return "GBps";
|
|
||||||
} else if ($data[1] === "Mbits/sec") {
|
|
||||||
return "MBps";
|
|
||||||
} else {//Kbps
|
|
||||||
return "KBps";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function speedAsFloat(string $string): float
|
|
||||||
{
|
|
||||||
$data = explode(" ", $string);
|
|
||||||
if ($data[0] === 'busy') {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return (float)$data[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function formatRunTime(string $date): string
|
|
||||||
{
|
|
||||||
return DateTime::createFromFormat('Ymd-His', $date)->format('Y-m-d H:i:s');
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function gb5IdFromURL(string $url): int
|
|
||||||
{
|
|
||||||
return str_replace("https://browser.geekbench.com/v5/cpu/", "", $url);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function gb6IdFromURL(string $url): int
|
|
||||||
{
|
|
||||||
return str_replace("https://browser.geekbench.com/v6/cpu/", "", $url);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function KBstoMBs(int $kbs): float
|
|
||||||
{
|
|
||||||
return $kbs / 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function insertFromJson($data, string $server_id): bool
|
|
||||||
{
|
|
||||||
$data = (object)$data;
|
|
||||||
try {
|
|
||||||
$date_ran = self::formatRunTime($data->time);
|
|
||||||
$version = $data['version'];
|
|
||||||
$has_ipv4 = $data['net']['ipv4'];
|
|
||||||
$has_ipv6 = $data['net']['ipv6'];
|
|
||||||
//OS
|
|
||||||
$arch = $data['os']['arch'];
|
|
||||||
$distro = $data['os']['distro'];
|
|
||||||
$kernel = $data['os']['kernel'];
|
|
||||||
$uptime = $data['os']['uptime'];
|
|
||||||
//CPU
|
|
||||||
$model = $data['cpu']['model'];
|
|
||||||
$cores = $data['cpu']['cores'];
|
|
||||||
$freq = $data['cpu']['freq'];
|
|
||||||
$aes = $data['cpu']['aes'];
|
|
||||||
$virt = $data['cpu']['virt'];
|
|
||||||
//RAM Disk
|
|
||||||
$ram = $data['mem']['ram'];
|
|
||||||
$swap = $data['mem']['swap'];
|
|
||||||
$disk = $data['mem']['disk'];
|
|
||||||
|
|
||||||
$gb5_single = $gb5_multi = $gb5_id = $gb6_single = $gb6_multi = $gb6_id = null;
|
|
||||||
foreach ($data['geekbench'] as $gb) {
|
|
||||||
if ($gb['version'] === 5) {
|
|
||||||
$gb5_single = $gb['single'];
|
|
||||||
$gb5_multi = $gb['multi'];
|
|
||||||
$gb5_id = self::gb5IdFromURL($gb['url']);
|
|
||||||
} elseif ($gb['version'] === 6) {
|
|
||||||
$gb6_single = $gb['single'];
|
|
||||||
$gb6_multi = $gb['multi'];
|
|
||||||
$gb6_id = self::gb6IdFromURL($gb['url']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$yabs_id = Str::random(8);
|
|
||||||
|
|
||||||
if ($ram > 999999) {
|
|
||||||
$ram_f = ($ram / 1024 / 1024);
|
|
||||||
$ram_type = 'GB';
|
|
||||||
} else {
|
|
||||||
$ram_f = ($ram / 1024);
|
|
||||||
$ram_type = 'MB';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($disk > 100000000) {
|
|
||||||
$disk_f = ($disk / 1024 / 1024 / 1024);
|
|
||||||
$disk_type = 'TB';
|
|
||||||
} else {
|
|
||||||
$disk_f = ($disk / 1024 / 1024);
|
|
||||||
$disk_type = 'GB';
|
|
||||||
}
|
|
||||||
|
|
||||||
self::create([
|
|
||||||
'id' => $yabs_id,
|
|
||||||
'server_id' => $server_id,
|
|
||||||
'has_ipv6' => $has_ipv6,
|
|
||||||
'aes' => $aes,
|
|
||||||
'vm' => $virt,
|
|
||||||
'distro' => $distro,
|
|
||||||
'kernel' => $kernel,
|
|
||||||
'uptime' => $uptime,
|
|
||||||
'cpu_model' => $model,
|
|
||||||
'cpu_cores' => $cores,
|
|
||||||
'cpu_freq' => (float)$freq,
|
|
||||||
'ram' => $ram_f,
|
|
||||||
'ram_type' => $ram_type,
|
|
||||||
'ram_mb' => ($ram / 1024),
|
|
||||||
'swap' => $swap / 1024,
|
|
||||||
'swap_mb' => ($swap / 1024),
|
|
||||||
'swap_type' => 'MB',
|
|
||||||
'disk' => $disk_f,
|
|
||||||
'disk_gb' => ($disk / 1024 / 1024),
|
|
||||||
'disk_type' => $disk_type,
|
|
||||||
'output_date' => $date_ran,
|
|
||||||
'gb5_single' => $gb5_single,
|
|
||||||
'gb5_multi' => $gb5_multi,
|
|
||||||
'gb5_id' => $gb5_id,
|
|
||||||
'gb6_single' => $gb6_single,
|
|
||||||
'gb6_multi' => $gb6_multi,
|
|
||||||
'gb6_id' => $gb6_id
|
|
||||||
]);
|
|
||||||
|
|
||||||
//fio
|
|
||||||
foreach ($data['fio'] as $ds) {
|
|
||||||
if ($ds['bs'] === '4k') {
|
|
||||||
$d4k = ($ds['speed_rw'] > 999999) ? ($ds['speed_rw'] / 1000 / 1000) : $ds['speed_rw'] / 1000;
|
|
||||||
$d4k_type = ($ds['speed_rw'] > 999999) ? 'GB/s' : 'MB/s';
|
|
||||||
$d4k_mbps = self::KBstoMBs($ds['speed_rw']);
|
|
||||||
}
|
|
||||||
if ($ds['bs'] === '64k') {
|
|
||||||
$d64k = ($ds['speed_rw'] > 999999) ? ($ds['speed_rw'] / 1000 / 1000) : $ds['speed_rw'] / 1000;
|
|
||||||
$d64k_type = ($ds['speed_rw'] > 999999) ? 'GB/s' : 'MB/s';
|
|
||||||
$d64k_mbps = self::KBstoMBs($ds['speed_rw']);
|
|
||||||
}
|
|
||||||
if ($ds['bs'] === '512k') {
|
|
||||||
$d512k = ($ds['speed_rw'] > 999999) ? ($ds['speed_rw'] / 1000 / 1000) : $ds['speed_rw'] / 1000;
|
|
||||||
$d512k_type = ($ds['speed_rw'] > 999999) ? 'GB/s' : 'MB/s';
|
|
||||||
$d512k_mbps = self::KBstoMBs($ds['speed_rw']);
|
|
||||||
}
|
|
||||||
if ($ds['bs'] === '1m') {
|
|
||||||
$d1m = ($ds['speed_rw'] > 999999) ? ($ds['speed_rw'] / 1000 / 1000) : $ds['speed_rw'] / 1000;
|
|
||||||
$d1m_type = ($ds['speed_rw'] > 999999) ? 'GB/s' : 'MB/s';
|
|
||||||
$d1m_mbps = self::KBstoMBs($ds['speed_rw']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DiskSpeed::create([
|
|
||||||
'id' => $yabs_id,
|
|
||||||
'server_id' => $server_id,
|
|
||||||
'd_4k' => $d4k,
|
|
||||||
'd_4k_type' => $d4k_type,
|
|
||||||
'd_4k_as_mbps' => $d4k_mbps,
|
|
||||||
'd_64k' => $d64k,
|
|
||||||
'd_64k_type' => $d64k_type,
|
|
||||||
'd_64k_as_mbps' => $d64k_mbps,
|
|
||||||
'd_512k' => $d512k,
|
|
||||||
'd_512k_type' => $d512k_type,
|
|
||||||
'd_512k_as_mbps' => $d512k_mbps,
|
|
||||||
'd_1m' => $d1m,
|
|
||||||
'd_1m_type' => $d1m_type,
|
|
||||||
'd_1m_as_mbps' => $d1m_mbps
|
|
||||||
]);
|
|
||||||
|
|
||||||
//iperf
|
|
||||||
foreach ($data['iperf'] as $st) {
|
|
||||||
($has_ipv4) ? $match = 'IPv4' : $match = 'IPv6';
|
|
||||||
if ($st['mode'] === $match) {
|
|
||||||
if ($st['send'] !== "busy " || $st['recv'] !== "busy ") {
|
|
||||||
NetworkSpeed::create([
|
|
||||||
'id' => $yabs_id,
|
|
||||||
'server_id' => $server_id,
|
|
||||||
'location' => $st['loc'],
|
|
||||||
'send' => self::speedAsFloat($st['send']),
|
|
||||||
'send_type' => self::speedType($st['send']),
|
|
||||||
'send_as_mbps' => self::speedAsMbps($st['send']),
|
|
||||||
'receive' => self::speedAsFloat($st['recv']),
|
|
||||||
'receive_type' => self::speedType($st['recv']),
|
|
||||||
'receive_as_mbps' => self::speedAsMbps($st['recv'])
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Update server
|
|
||||||
$update_server = DB::table('servers')
|
|
||||||
->where('id', $server_id)
|
|
||||||
->update([
|
|
||||||
'ram' => $ram_f,
|
|
||||||
'ram_type' => $ram_type,
|
|
||||||
'ram_as_mb' => ($ram / 1024),
|
|
||||||
'disk' => $disk_f,
|
|
||||||
'disk_as_gb' => ($disk / 1024 / 1024),
|
|
||||||
'disk_type' => $disk_type,
|
|
||||||
'cpu' => $cores,
|
|
||||||
'has_yabs' => 1
|
|
||||||
]);
|
|
||||||
|
|
||||||
Cache::forget("yabs.$yabs_id");
|
|
||||||
Cache::forget("all_yabs");
|
|
||||||
Cache::forget("server.$server_id");
|
|
||||||
Cache::forget("all_servers");
|
|
||||||
|
|
||||||
} catch (Exception $e) {//Not valid JSON
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
310
app/Process.php
310
app/Process.php
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
||||||
class Process
|
class Process
|
||||||
{
|
{
|
||||||
public string $start_time;
|
public string $start_time;
|
||||||
|
@ -40,4 +43,311 @@ class Process
|
||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function floatValue(string $string): float
|
||||||
|
{//Keeps only numbers and . AKA a float
|
||||||
|
return preg_replace('/[^0-9,.]/', '', trim($string));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function intValue(string $string): int
|
||||||
|
{//Keeps only numbers AKA an int
|
||||||
|
return (int)preg_replace('/[^0-9]/', '', trim($string));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function removeFloat(string $string): string
|
||||||
|
{//Removes float from a string
|
||||||
|
return ltrim(preg_replace('/[^A-Za-z\-,.]/', '', $string), '.');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function trimRemoveR(string $string): string
|
||||||
|
{//Removes \r and does a trim()
|
||||||
|
return trim(str_replace("\r", '', $string));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function datatype(string $string): string
|
||||||
|
{//Formats data type (ram and disk)
|
||||||
|
if (str_contains($string, 'M')) {
|
||||||
|
return 'MB';//Megabytes
|
||||||
|
} elseif (str_contains($string, 'G')) {
|
||||||
|
return 'GB';//Gigabytes
|
||||||
|
} elseif (str_contains($string, 'K')) {
|
||||||
|
return 'KB';//Kilobytes
|
||||||
|
} elseif (str_contains($string, 'T')) {
|
||||||
|
return 'TB';//TeraBytes
|
||||||
|
} elseif (str_contains($string, 'B')) {
|
||||||
|
return 'BT';//Bytes
|
||||||
|
} else {
|
||||||
|
return "GB";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function GBtoMB(string $gb): float
|
||||||
|
{//Gigabyte to Megabyte conversion
|
||||||
|
return ($gb * 1024);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function TBtoGB(string $tb): float
|
||||||
|
{//Terabyte to Gigabyte conversion
|
||||||
|
return ($tb * 1024);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function GBpstoMBps(string $gbps, bool $format = false): float
|
||||||
|
{//Gigabits to Megabits
|
||||||
|
if ($format) {
|
||||||
|
return (float)number_format(((float)$gbps * 1000), 3);
|
||||||
|
}
|
||||||
|
return (float)$gbps * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function diskSpeedAsMbps(string $type, string $value): float
|
||||||
|
{//If value type GB/s convert to MB/s, KB/s to MB/s
|
||||||
|
if ($type === "GB/s") {
|
||||||
|
return $this->GBpstoMBps($value);
|
||||||
|
}
|
||||||
|
if ($type === "KB/s") {
|
||||||
|
return (float)($value / 1000);
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function networkSpeedAsMbps(string $type, string $value): float
|
||||||
|
{//If value type GBps convert to MB/s
|
||||||
|
if ($type === "GBps") {
|
||||||
|
return $this->GBpstoMBps($value);
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function yabsSpeedValues(array $data): array
|
||||||
|
{//Formats YABs speed test for speed value and type as array
|
||||||
|
$data = explode('|', implode($data));
|
||||||
|
if ($data[2] === 'busy') {
|
||||||
|
$send = $send_type = NULL;
|
||||||
|
} else {
|
||||||
|
$send = (float)$data[2];
|
||||||
|
if ($this->removeFloat($data[2]) === 'Mbitssec') {
|
||||||
|
$send_type = "MBps";
|
||||||
|
} elseif ($this->removeFloat($data[2]) === 'Gbitssec') {
|
||||||
|
$send_type = "GBps";
|
||||||
|
} elseif ($this->removeFloat($data[2]) === 'Kbitssec') {
|
||||||
|
$send_type = "KBps";
|
||||||
|
} else {
|
||||||
|
$send_type = $this->removeFloat($data[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($data[3] === 'busy') {
|
||||||
|
$receive = $receive_type = NULL;
|
||||||
|
} else {
|
||||||
|
$receive = (float)$data[3];
|
||||||
|
if ($this->removeFloat($data[3]) === 'Mbitssec') {
|
||||||
|
$receive_type = "MBps";
|
||||||
|
} elseif ($this->removeFloat($data[3]) === 'Gbitssec') {
|
||||||
|
$receive_type = "GBps";
|
||||||
|
} elseif ($this->removeFloat($data[3]) === 'Kbitssec') {
|
||||||
|
$receive_type = "KBps";
|
||||||
|
} else {
|
||||||
|
$receive_type = $this->removeFloat($data[3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return array('send' => $send, 'send_type' => $send_type, 'receive' => $receive, 'receive_type' => $receive_type);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function yabsSpeedLoc(array $data): array
|
||||||
|
{//Formats YABs speed test provider and location as array
|
||||||
|
if ($data[1] === '|') {
|
||||||
|
$provider = $data[0];
|
||||||
|
} else {
|
||||||
|
$provider = $data[0] . ' ' . $data[1];
|
||||||
|
}
|
||||||
|
if ($data[2] !== '|') {
|
||||||
|
$location = $data[2] . ' ' . str_replace(',', '', $data[3]);
|
||||||
|
} else {
|
||||||
|
$location = $data[3] . ' ' . str_replace(',', '', $data[4]);
|
||||||
|
}
|
||||||
|
return array('provider' => $provider, 'location' => $location);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function yabsOutputAsJson(string $server_id, string $data_from_form): array
|
||||||
|
{
|
||||||
|
$file_name = 'tempYabs.txt';
|
||||||
|
|
||||||
|
Storage::disk('local')->put($file_name, $data_from_form);
|
||||||
|
|
||||||
|
$file = Storage::disk('local')->get($file_name);
|
||||||
|
|
||||||
|
if ($file) {
|
||||||
|
$array = explode("\n", $file);
|
||||||
|
Storage::disk('local')->delete($file_name);//Delete file
|
||||||
|
} else {
|
||||||
|
return array('error_id' => 10, 'error_message' => 'Issue writing/reading txt file');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($array) < 46) {
|
||||||
|
return array('error_id' => 9, 'error_message' => 'Less than 46 lines');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str_contains($array[0], "# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #\r")) {
|
||||||
|
if ($array[1] !== "# Yet-Another-Bench-Script #\r") {
|
||||||
|
return array('error_id' => 8, 'error_message' => 'Didnt copy output correctly');
|
||||||
|
}
|
||||||
|
|
||||||
|
$version_array = explode(' ', preg_replace('!\s+!', ' ', $this->trimRemoveR($array[2])));
|
||||||
|
if ($version_array[1] === 'v2021-12-28' || $version_array[1] === 'v2022-02-18') {//YABs version
|
||||||
|
$cpu = $this->trimRemoveR(str_replace(':', '', strstr($array[10], ': ')));
|
||||||
|
$cpu_spec = explode(' ', strstr($array[11], ': '));//: 2 @ 3792.872 MHz
|
||||||
|
$cpu_cores = $cpu_spec[1];
|
||||||
|
$cpu_freq = $cpu_spec[3];
|
||||||
|
$ram_line = $this->trimRemoveR(str_replace(':', '', strstr($array[14], ': ')));
|
||||||
|
$ram = (float)$ram_line;
|
||||||
|
$ram_type = $this->datatype($ram_line);
|
||||||
|
$swap_line = $this->trimRemoveR(str_replace(':', '', strstr($array[15], ': ')));
|
||||||
|
$swap = (float)$swap_line;
|
||||||
|
$swap_type = $this->datatype($swap_line);
|
||||||
|
$disk_line = $this->trimRemoveR(str_replace(':', '', strstr($array[16], ': ')));
|
||||||
|
$disk = (float)$disk_line;
|
||||||
|
$disk_type = $this->datatype($disk_line);
|
||||||
|
$io_3 = explode(' ', preg_replace('!\s+!', ' ', $array[24]));
|
||||||
|
$io_6 = explode(' ', preg_replace('!\s+!', ' ', $array[30]));
|
||||||
|
(str_contains($array[12], 'Enabled')) ? $aes_ni = true : $aes_ni = false;
|
||||||
|
(str_contains($array[13], 'Enabled')) ? $vm_amd_v = true : $vm_amd_v = false;
|
||||||
|
|
||||||
|
$d4k_as_mbps = $this->diskSpeedAsMbps($io_3[3], $this->floatValue($io_3[2]));
|
||||||
|
$d64k_as_mbps = $this->diskSpeedAsMbps($io_3[7], $this->floatValue($io_3[6]));
|
||||||
|
$d512k_as_mbps = $this->diskSpeedAsMbps($io_6[3], $this->floatValue($io_6[2]));
|
||||||
|
$d1m_as_mbps = $this->diskSpeedAsMbps($io_6[7], $this->floatValue($io_6[6]));
|
||||||
|
$disk_test_arr = array(
|
||||||
|
'4k_total' => $this->floatValue($io_3[2]),
|
||||||
|
'4k_total_type' => $io_3[3],
|
||||||
|
'4k_total_mbps' => $d4k_as_mbps,
|
||||||
|
'64k_total' => $this->floatValue($io_3[6]),
|
||||||
|
'64k_total_type' => $io_3[7],
|
||||||
|
'64k_total_mbps' => $d64k_as_mbps,
|
||||||
|
'512k_total' => $this->floatValue($io_6[2]),
|
||||||
|
'512k_total_type' => $io_6[3],
|
||||||
|
'512k_total_mbps' => $d512k_as_mbps,
|
||||||
|
'1m_total' => $this->floatValue($io_6[6]),
|
||||||
|
'1m_total_type' => $io_6[7],
|
||||||
|
'1m_total_mbps' => $d1m_as_mbps,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (isset($array[40])) {
|
||||||
|
if ($array[45] === "Geekbench 5 Benchmark Test:\r") {
|
||||||
|
//No ipv6
|
||||||
|
//Has short ipv4 network speed testing (-r)
|
||||||
|
$has_ipv6 = false;
|
||||||
|
$start_st = 36;
|
||||||
|
$end_st = 43;
|
||||||
|
$gb_s = 49;
|
||||||
|
$gb_m = 50;
|
||||||
|
$gb_url = 51;
|
||||||
|
} elseif ($array[45] === "Geekbench 4 Benchmark Test:\r") {
|
||||||
|
return array('error_id' => 6, 'error_message' => 'GeekBench 5 only allowed');
|
||||||
|
} elseif ($array[45] === "Geekbench 5 test failed. Run manually to determine cause.\r") {
|
||||||
|
return array('error_id' => 7, 'error_message' => 'GeekBench test failed');
|
||||||
|
} elseif ($array[40] === "Geekbench 5 Benchmark Test:\r") {
|
||||||
|
//No ipv6
|
||||||
|
//Has full ipv4 network speed testing
|
||||||
|
$has_ipv6 = false;
|
||||||
|
$start_st = 36;
|
||||||
|
$end_st = 38;
|
||||||
|
$gb_s = 44;
|
||||||
|
$gb_m = 45;
|
||||||
|
$gb_url = 46;
|
||||||
|
} elseif ($array[40] === "iperf3 Network Speed Tests (IPv6):\r") {
|
||||||
|
//HAS ipv6
|
||||||
|
//Has short ipv4 & ipv6 network speed testing
|
||||||
|
$has_ipv6 = true;
|
||||||
|
$start_st = 36;
|
||||||
|
$end_st = 38;
|
||||||
|
$gb_s = 52;
|
||||||
|
$gb_m = 53;
|
||||||
|
$gb_url = 54;
|
||||||
|
} elseif ($array[56] === "Geekbench 5 Benchmark Test:\r") {
|
||||||
|
//HAS ipv6
|
||||||
|
//Has full ipv4 & ipv6 network speed testing
|
||||||
|
$has_ipv6 = true;
|
||||||
|
$start_st = 36;
|
||||||
|
$end_st = 43;
|
||||||
|
$gb_s = 60;
|
||||||
|
$gb_m = 61;
|
||||||
|
$gb_url = 62;
|
||||||
|
} else {
|
||||||
|
return array('error_id' => 5, 'error_message' => 'Not correct YABs command output');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return array('error_id' => 4, 'error_message' => 'Not correct formatting');
|
||||||
|
}
|
||||||
|
$geekbench_single = $this->intValue($array[$gb_s]);
|
||||||
|
$geekbench_multi = $this->intValue($array[$gb_m]);
|
||||||
|
$geek_full_url = explode(' ', preg_replace('!\s+!', ' ', $array[$gb_url]));
|
||||||
|
$gb5_id = (int)substr($geek_full_url[3], strrpos($geek_full_url[3], '/') + 1);//
|
||||||
|
$has_a_speed_test = false;
|
||||||
|
|
||||||
|
($ram_type === 'GB') ? $ram_mb = $this->GBtoMB($ram) : $ram_mb = $ram;
|
||||||
|
($swap_type === 'GB') ? $swap_mb = $this->GBtoMB($swap) : $swap_mb = $swap;
|
||||||
|
($disk_type === 'TB') ? $disk_gb = $this->TBtoGB($disk) : $disk_gb = $disk;
|
||||||
|
|
||||||
|
$date = date_create($array[6]);
|
||||||
|
|
||||||
|
$output = [
|
||||||
|
'id' => $server_id,
|
||||||
|
'has_ipv6' => $has_ipv6,
|
||||||
|
'output_date' => date_format($date, 'Y-m-d H:i:s'),
|
||||||
|
'process_date' => date('Y-m-d H:i:s'),
|
||||||
|
'cpu_cores' => (int)$cpu_cores,
|
||||||
|
'cpu_freq' => (float)$cpu_freq,
|
||||||
|
'cpu' => $cpu,
|
||||||
|
'ram' => $ram,
|
||||||
|
'ram_type' => $ram_type,
|
||||||
|
'ram_mb' => $ram_mb,
|
||||||
|
'swap' => $swap,
|
||||||
|
'swap_type' => $swap_type,
|
||||||
|
'swap_mb' => $swap_mb,
|
||||||
|
'disk' => $disk,
|
||||||
|
'disk_type' => $disk_type,
|
||||||
|
'disk_gb' => $disk_gb,
|
||||||
|
'aes' => $aes_ni,
|
||||||
|
'vm' => $vm_amd_v,
|
||||||
|
'GB5_single' => $geekbench_single,
|
||||||
|
'GB5_mult' => $geekbench_multi,
|
||||||
|
'GB5_id' => $gb5_id
|
||||||
|
];
|
||||||
|
|
||||||
|
$output['disk_speed'] = $disk_test_arr;
|
||||||
|
|
||||||
|
$speed_test_arr = array();
|
||||||
|
|
||||||
|
for ($i = $start_st; $i <= $end_st; $i++) {
|
||||||
|
if (str_contains($array[$i], 'busy')) {
|
||||||
|
//Has a "busy" result, No insert
|
||||||
|
} else {
|
||||||
|
$data = explode(' ', preg_replace('!\s+!', ' ', $array[$i]));
|
||||||
|
$send_as_mbps = $this->networkSpeedAsMbps($this->yabsSpeedValues($data)['send_type'], $this->yabsSpeedValues($data)['send']);
|
||||||
|
$recieve_as_mbps = $this->networkSpeedAsMbps($this->yabsSpeedValues($data)['receive_type'], $this->yabsSpeedValues($data)['receive']);
|
||||||
|
$speed_test_arr[] = array(
|
||||||
|
'location' => $this->yabsSpeedLoc($data)['location'],
|
||||||
|
'send' => $this->yabsSpeedValues($data)['send'],
|
||||||
|
'send_type' => $this->yabsSpeedValues($data)['send_type'],
|
||||||
|
'send_type_mbps' => $send_as_mbps,
|
||||||
|
'receive' => $this->yabsSpeedValues($data)['receive'],
|
||||||
|
'receive_type' => $this->yabsSpeedValues($data)['receive_type'],
|
||||||
|
'receive_type_mbps' => $recieve_as_mbps
|
||||||
|
);
|
||||||
|
$has_a_speed_test = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($has_a_speed_test) {
|
||||||
|
$output['network_speed'] = $speed_test_arr;
|
||||||
|
}
|
||||||
|
return $output;
|
||||||
|
} else {
|
||||||
|
return array('error_id' => 4, 'error_message' => 'Wrong YABs version');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return array('error_id' => 3, 'error_message' => 'Didnt start at right spot');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public const HOME = '/';
|
public const HOME = '/dashboard';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The controller namespace for the application.
|
* The controller namespace for the application.
|
||||||
|
@ -35,9 +35,6 @@ class RouteServiceProvider extends ServiceProvider
|
||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot()
|
||||||
{
|
{
|
||||||
if (config('app.env') === 'production') {
|
|
||||||
\Illuminate\Support\Facades\URL::forceScheme('https');
|
|
||||||
}
|
|
||||||
$this->configureRateLimiting();
|
$this->configureRateLimiting();
|
||||||
|
|
||||||
$this->routes(function () {
|
$this->routes(function () {
|
||||||
|
|
|
@ -15,7 +15,9 @@ class LocationsSelect extends Component
|
||||||
*/
|
*/
|
||||||
public function render()
|
public function render()
|
||||||
{
|
{
|
||||||
$all_locations = Locations::allLocations();
|
$all_locations = Cache::rememberForever('all_locations', function () {
|
||||||
|
return Locations::all();
|
||||||
|
});
|
||||||
return view('components.locations-select', [
|
return view('components.locations-select', [
|
||||||
'locations' => $all_locations
|
'locations' => $all_locations
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -10,8 +10,11 @@ class OsSelect extends Component
|
||||||
{
|
{
|
||||||
public function render()
|
public function render()
|
||||||
{
|
{
|
||||||
|
$all_os = Cache::rememberForever('all_os', function () {
|
||||||
|
return OS::all();
|
||||||
|
});
|
||||||
return view('components.os-select', [
|
return view('components.os-select', [
|
||||||
'os' => OS::allOS()->toArray()
|
'os' => $all_os
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,9 @@ class ProvidersSelect extends Component
|
||||||
*/
|
*/
|
||||||
public function render()
|
public function render()
|
||||||
{
|
{
|
||||||
$all_providers = Providers::allProviders();
|
$all_providers = Cache::rememberForever('all_providers', function () {
|
||||||
|
return Providers::all();
|
||||||
|
});
|
||||||
return view('components.providers-select', [
|
return view('components.providers-select', [
|
||||||
'providers' => $all_providers
|
'providers' => $all_providers
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -10,23 +10,23 @@
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^8.3",
|
"php": "^7.4|^8.0",
|
||||||
"guzzlehttp/guzzle": "^7.9.2",
|
"fruitcake/laravel-cors": "^2.0",
|
||||||
"laravel/framework": "^v11.34.2",
|
"guzzlehttp/guzzle": "^7.0.1",
|
||||||
"laravel/tinker": "^v2.10.0",
|
"laravel/framework": "^9.0",
|
||||||
"laravel/ui": "^v4.6.0",
|
"laravel/tinker": "^2.5",
|
||||||
"yajra/laravel-datatables-oracle": "~v11.1.5",
|
"laravel/ui": "^3.4",
|
||||||
"ext-json": "*",
|
"yajra/laravel-datatables-oracle": "~9.0",
|
||||||
"illuminate/view": "^v11.6.0"
|
"ext-json": "*"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^v1.24.1",
|
"fakerphp/faker": "^1.9.1",
|
||||||
"laravel/breeze": "^v2.2.6",
|
"laravel/breeze": "^1.8",
|
||||||
"laravel/sail": "^v1.39.1",
|
"laravel/sail": "^1.0.1",
|
||||||
"mockery/mockery": "^1.6.12",
|
"mockery/mockery": "^1.4.2",
|
||||||
"nunomaduro/collision": "^v8.5.0",
|
"nunomaduro/collision": "^6.0",
|
||||||
"phpunit/phpunit": "^11.5.0",
|
"phpunit/phpunit": "^9.3.3",
|
||||||
"spatie/laravel-ignition": "^2.9.0"
|
"spatie/laravel-ignition": "^1.0"
|
||||||
},
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"optimize-autoloader": true,
|
"optimize-autoloader": true,
|
||||||
|
|
4188
composer.lock
generated
4188
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -42,11 +42,6 @@ return [
|
||||||
'visibility' => 'public',
|
'visibility' => 'public',
|
||||||
],
|
],
|
||||||
|
|
||||||
'public_uploads' => [
|
|
||||||
'driver' => 'local',
|
|
||||||
'root' => public_path(),
|
|
||||||
],
|
|
||||||
|
|
||||||
's3' => [
|
's3' => [
|
||||||
'driver' => 's3',
|
'driver' => 's3',
|
||||||
'key' => env('AWS_ACCESS_KEY_ID'),
|
'key' => env('AWS_ACCESS_KEY_ID'),
|
||||||
|
|
|
@ -21,9 +21,9 @@ class CreateServersTable extends Migration
|
||||||
$table->string('ns1')->nullable()->default(null);
|
$table->string('ns1')->nullable()->default(null);
|
||||||
$table->string('ns2')->nullable()->default(null);
|
$table->string('ns2')->nullable()->default(null);
|
||||||
$table->tinyInteger('server_type')->default(1);
|
$table->tinyInteger('server_type')->default(1);
|
||||||
$table->unsignedBigInteger('os_id')->default(0);
|
$table->integer('os_id')->default(0);
|
||||||
$table->unsignedBigInteger('provider_id')->default(9999);
|
$table->integer('provider_id')->default(9999);
|
||||||
$table->unsignedBigInteger('location_id')->default(9999);
|
$table->integer('location_id')->default(9999);
|
||||||
$table->integer('ssh')->nullable()->default(22);
|
$table->integer('ssh')->nullable()->default(22);
|
||||||
$table->integer('bandwidth')->nullable();
|
$table->integer('bandwidth')->nullable();
|
||||||
$table->integer('ram')->default(1024);
|
$table->integer('ram')->default(1024);
|
||||||
|
|
|
@ -21,7 +21,7 @@ class CreateDomainsTable extends Migration
|
||||||
$table->string('ns1')->nullable();
|
$table->string('ns1')->nullable();
|
||||||
$table->string('ns2')->nullable();
|
$table->string('ns2')->nullable();
|
||||||
$table->string('ns3')->nullable();
|
$table->string('ns3')->nullable();
|
||||||
$table->unsignedBigInteger('provider_id')->default(9999);
|
$table->integer('provider_id')->default(9999);
|
||||||
$table->date('owned_since')->nullable();
|
$table->date('owned_since')->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|
|
@ -18,8 +18,8 @@ class CreateSharedsTable extends Migration
|
||||||
$table->tinyInteger('active')->default(1);
|
$table->tinyInteger('active')->default(1);
|
||||||
$table->string('main_domain');
|
$table->string('main_domain');
|
||||||
$table->string('shared_type')->nullable();
|
$table->string('shared_type')->nullable();
|
||||||
$table->unsignedBigInteger('provider_id')->default(9999);
|
$table->integer('provider_id')->default(9999);
|
||||||
$table->unsignedBigInteger('location_id')->default(9999);
|
$table->integer('location_id')->default(9999);
|
||||||
$table->integer('bandwidth')->nullable();
|
$table->integer('bandwidth')->nullable();
|
||||||
$table->integer('disk')->default(10);
|
$table->integer('disk')->default(10);
|
||||||
$table->char('disk_type', 2)->default('GB');
|
$table->char('disk_type', 2)->default('GB');
|
||||||
|
|
|
@ -19,8 +19,8 @@ class CreateResellersTable extends Migration
|
||||||
$table->string('main_domain');
|
$table->string('main_domain');
|
||||||
$table->integer('accounts')->default(1);
|
$table->integer('accounts')->default(1);
|
||||||
$table->string('reseller_type')->nullable();
|
$table->string('reseller_type')->nullable();
|
||||||
$table->unsignedBigInteger('provider_id')->default(9999);
|
$table->integer('provider_id')->default(9999);
|
||||||
$table->unsignedBigInteger('location_id')->default(9999);
|
$table->integer('location_id')->default(9999);
|
||||||
$table->integer('bandwidth')->nullable();
|
$table->integer('bandwidth')->nullable();
|
||||||
$table->integer('disk')->default(10);
|
$table->integer('disk')->default(10);
|
||||||
$table->char('disk_type', 2)->default('GB');
|
$table->char('disk_type', 2)->default('GB');
|
||||||
|
|
|
@ -32,7 +32,7 @@ class CreateYabsTable extends Migration
|
||||||
$table->integer('gb5_multi');
|
$table->integer('gb5_multi');
|
||||||
$table->integer('gb5_id');
|
$table->integer('gb5_id');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->unique(['id','server_id'], 'yabs_u1');
|
$table->unique(['id','server_id'], 'uni');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ class CreateNetworkSpeedTable extends Migration
|
||||||
$table->char('receive_type', 4);
|
$table->char('receive_type', 4);
|
||||||
$table->float('receive_as_mbps');
|
$table->float('receive_as_mbps');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->unique(['id','server_id', 'location'], 'network_speed_u1');
|
$table->unique(['id','server_id', 'location'], 'uni');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ class CreateLabelsAssignedTable extends Migration
|
||||||
Schema::create('labels_assigned', function (Blueprint $table) {
|
Schema::create('labels_assigned', function (Blueprint $table) {
|
||||||
$table->char('label_id', 8);
|
$table->char('label_id', 8);
|
||||||
$table->char('service_id', 8);
|
$table->char('service_id', 8);
|
||||||
$table->unique(['label_id','service_id'], 'labels_assigned_u1');
|
$table->unique(['label_id','service_id'], 'uni');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ class CreateIPsTable extends Migration
|
||||||
$table->tinyInteger('is_ipv4')->default(1);
|
$table->tinyInteger('is_ipv4')->default(1);
|
||||||
$table->tinyInteger('active')->default(1);
|
$table->tinyInteger('active')->default(1);
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
$table->unique(['service_id','address'], 'ips_u1');
|
$table->unique(['service_id','address'], 'uni');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->integer('due_soon_amount')->default(6);
|
|
||||||
$table->integer('recently_added_amount')->default(6);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
//
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,55 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class AddForeignKeys extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('servers', function (Blueprint $table) {
|
|
||||||
//$table->foreign('location_id','servers_fk_location')->references('id')->on('locations');
|
|
||||||
//$table->foreign('provider_id','servers_fk_provider')->references('id')->on('providers');
|
|
||||||
//$table->foreign('os_id','servers_fk_os')->references('id')->on('os');
|
|
||||||
$table->foreign('id', 'servers_fk_pricing')->references('service_id')->on('pricings')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('shared_hosting', function (Blueprint $table) {
|
|
||||||
//$table->foreign('location_id','shared_fk_location')->references('id')->on('locations');
|
|
||||||
//$table->foreign('provider_id','shared_fk_provider')->references('id')->on('providers');
|
|
||||||
$table->foreign('id', 'shared_fk_pricing')->references('service_id')->on('pricings')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('reseller_hosting', function (Blueprint $table) {
|
|
||||||
//$table->foreign('location_id','reseller_fk_location')->references('id')->on('locations');
|
|
||||||
//$table->foreign('provider_id','reseller_fk_provider')->references('id')->on('providers');
|
|
||||||
$table->foreign('id', 'reseller_fk_pricing')->references('service_id')->on('pricings')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('domains', function (Blueprint $table) {
|
|
||||||
//$table->foreign('provider_id','domains_fk_provider')->references('id')->on('providers');
|
|
||||||
$table->foreign('id', 'domains_fk_pricing')->references('service_id')->on('pricings')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('misc_services', function (Blueprint $table) {
|
|
||||||
$table->foreign('id', 'misc_fk_pricing')->references('service_id')->on('pricings')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('yabs', function (Blueprint $table) {
|
|
||||||
$table->foreign('server_id', 'yabs_fk_servers')->references('id')->on('servers');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('disk_speed', function (Blueprint $table) {
|
|
||||||
$table->foreign('id', 'ds_fk_yabs')->references('id')->on('yabs');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('network_speed', function (Blueprint $table) {
|
|
||||||
$table->foreign('id', 'ns_fk_yabs')->references('id')->on('yabs');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class AddDarkModeSetting extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->boolean('dark_mode')->default(false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Run the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::create('seedboxes', function (Blueprint $table) {
|
|
||||||
$table->char('id', 8)->primary();
|
|
||||||
$table->tinyInteger('active')->default(1);
|
|
||||||
$table->string('title');
|
|
||||||
$table->string('hostname')->nullable();
|
|
||||||
$table->string('seed_box_type')->nullable();
|
|
||||||
$table->unsignedBigInteger('provider_id')->default(9999);
|
|
||||||
$table->unsignedBigInteger('location_id')->default(9999);
|
|
||||||
$table->integer('bandwidth')->nullable();
|
|
||||||
$table->integer('port_speed')->nullable();
|
|
||||||
$table->integer('disk')->default(10);
|
|
||||||
$table->char('disk_type', 2)->default('GB');
|
|
||||||
$table->integer('disk_as_gb')->nullable()->default(0);
|
|
||||||
$table->tinyInteger('was_promo')->default(0);
|
|
||||||
$table->date('owned_since')->nullable();
|
|
||||||
$table->timestamps();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Reverse the migrations.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::dropIfExists('seedboxes');
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
class AddDashCurrencySetting extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->char('dashboard_currency', 3)->default('USD');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('disk_speed', function (Blueprint $table) {
|
|
||||||
if (env('DB_CONNECTION') !== 'sqlite') {
|
|
||||||
$table->dropForeign('ds_fk_yabs');
|
|
||||||
}
|
|
||||||
|
|
||||||
$table->foreign('id', 'ds_fk_yabs')->references('id')->on('yabs')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
|
|
||||||
Schema::table('network_speed', function (Blueprint $table) {
|
|
||||||
if (env('DB_CONNECTION') !== 'sqlite') {
|
|
||||||
$table->dropForeign('ns_fk_yabs');
|
|
||||||
}
|
|
||||||
|
|
||||||
$table->foreign('id', 'ns_fk_yabs')->references('id')->on('yabs')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,18 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration {
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('yabs', function (Blueprint $table) {
|
|
||||||
if (env('DB_CONNECTION') !== 'sqlite') {
|
|
||||||
$table->dropForeign('yabs_fk_servers');
|
|
||||||
}
|
|
||||||
|
|
||||||
$table->foreign('server_id', 'yabs_fk_servers')->references('id')->on('servers')->onDelete('cascade');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration {
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('yabs', function (Blueprint $table) {
|
|
||||||
$table->string('uptime')->nullable()->default(null)->after('gb5_id');
|
|
||||||
$table->string('distro')->nullable()->default(null)->after('gb5_id');
|
|
||||||
$table->string('kernel')->nullable()->default(null)->after('gb5_id');
|
|
||||||
$table->float('swap')->nullable()->default(null)->after('ram_mb');
|
|
||||||
$table->char('swap_type', 2)->nullable()->default(null)->after('ram_mb');
|
|
||||||
$table->float('swap_mb')->nullable()->default(null)->after('ram_mb');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::table('yabs', function (Blueprint $table) {
|
|
||||||
$table->dropColumn(['uptime', 'distro', 'kernel', 'swap', 'swap_type', 'swap_mb']);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->boolean('save_yabs_as_txt')->default(false)->after('show_server_value_yabs');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->dropColumn('save_yabs_as_txt');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,18 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('yabs', function($table)
|
|
||||||
{
|
|
||||||
$table->integer('gb5_single')->nullable()->change();
|
|
||||||
$table->integer('gb5_multi')->nullable()->change();
|
|
||||||
$table->integer('gb5_id')->nullable()->change();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->tinyInteger('sort_on')->default(1)->after('dashboard_currency');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->dropColumn('sort_on');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
public function up()
|
|
||||||
{
|
|
||||||
Schema::create('notes', function (Blueprint $table) {
|
|
||||||
$table->char('id', 8)->primary();
|
|
||||||
$table->char('service_id', 8)->unique();
|
|
||||||
$table->text('note');
|
|
||||||
$table->timestamps();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down()
|
|
||||||
{
|
|
||||||
Schema::dropIfExists('notes');
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
|
||||||
{
|
|
||||||
public function up(): void
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->string('favicon')->after('sort_on')->default('favicon.ico');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(): void
|
|
||||||
{
|
|
||||||
Schema::table('settings', function (Blueprint $table) {
|
|
||||||
$table->dropColumn('favicon');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,25 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration {
|
|
||||||
public function up(): void
|
|
||||||
{
|
|
||||||
Schema::table('yabs', function (Blueprint $table) {
|
|
||||||
$table->integer('gb6_single')->nullable()->default(null)->after('gb5_id');
|
|
||||||
$table->integer('gb6_multi')->nullable()->default(null)->after('gb5_id');
|
|
||||||
$table->integer('gb6_id')->nullable()->default(null)->after('gb5_id');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(): void
|
|
||||||
{
|
|
||||||
Schema::table('yabs', function (Blueprint $table) {
|
|
||||||
$table->dropColumn('gb6_single');
|
|
||||||
$table->dropColumn('gb6_multi');
|
|
||||||
$table->dropColumn('gb6_id');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,29 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration {
|
|
||||||
public function up(): void
|
|
||||||
{
|
|
||||||
Schema::table('ips', function (Blueprint $table) {
|
|
||||||
$table->string('continent')->default(null)->nullable()->after('active');
|
|
||||||
$table->string('country')->default(null)->nullable()->after('active');
|
|
||||||
$table->string('region')->default(null)->nullable()->after('active');
|
|
||||||
$table->string('city')->default(null)->nullable()->after('active');
|
|
||||||
$table->string('org')->default(null)->nullable()->after('active');
|
|
||||||
$table->string('isp')->default(null)->nullable()->after('active');
|
|
||||||
$table->string('asn')->default(null)->nullable()->after('active');
|
|
||||||
$table->string('timezone_gmt')->default(null)->nullable()->after('active');
|
|
||||||
$table->dateTime('fetched_at')->default(null)->nullable()->after('active');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(): void
|
|
||||||
{
|
|
||||||
Schema::table('ips', function (Blueprint $table) {
|
|
||||||
$table->dropColumn(['continent', 'country', 'region', 'city', 'org', 'isp', 'asn', 'timezone_gmt', 'fetched_at']);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -16,11 +16,6 @@ class LabelsSeeder extends Seeder
|
||||||
"label" => "Docker",
|
"label" => "Docker",
|
||||||
"created_at" => date('Y-m-d H:i:s')
|
"created_at" => date('Y-m-d H:i:s')
|
||||||
],
|
],
|
||||||
[
|
|
||||||
"id" => Str::random(8),
|
|
||||||
"label" => "Kubernetes",
|
|
||||||
"created_at" => date('Y-m-d H:i:s')
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
"id" => Str::random(8),
|
"id" => Str::random(8),
|
||||||
"label" => "Apache2",
|
"label" => "Apache2",
|
||||||
|
|
|
@ -8,96 +8,261 @@ use Illuminate\Support\Facades\DB;
|
||||||
class LocationsSeeder extends Seeder
|
class LocationsSeeder extends Seeder
|
||||||
{
|
{
|
||||||
public function run()
|
public function run()
|
||||||
{//Note add any new locations at the bottom of the array
|
{
|
||||||
$locations = [
|
$locations = array(
|
||||||
['name' => 'My basement'],
|
array(
|
||||||
['name' => 'Adelaide, Australia'],
|
"name" => "My basement",
|
||||||
['name' => 'Amsterdam, Netherlands'],
|
),
|
||||||
['name' => 'Atlanta, USA'],
|
array(
|
||||||
['name' => 'Auckland, New Zealand'],
|
"name" => "Adelaide, Australia",
|
||||||
['name' => 'Bangkok, Thailand'],
|
),
|
||||||
['name' => 'Barcelona, Spain'],
|
array(
|
||||||
['name' => 'Beijing, China'],
|
"name" => "Amsterdam, Netherlands",
|
||||||
['name' => 'Bengaluru, India'],
|
),
|
||||||
['name' => 'Berlin, Germany'],
|
array(
|
||||||
['name' => 'Brisbane, Australia'],
|
"name" => "Atlanta, USA",
|
||||||
['name' => 'Brussels, Belgium'],
|
),
|
||||||
['name' => 'Bucharest, Romania'],
|
array(
|
||||||
['name' => 'Buenos Aires, Argentina'],
|
"name" => "Auckland, New Zealand",
|
||||||
['name' => 'Charlotte, USA'],
|
),
|
||||||
['name' => 'Chennai, India'],
|
array(
|
||||||
['name' => 'Chicago, USA'],
|
"name" => "Bangkok, Thailand",
|
||||||
['name' => 'Christchurch, New Zealand'],
|
),
|
||||||
['name' => 'Dallas, USA'],
|
array(
|
||||||
['name' => 'Denver, USA'],
|
"name" => "Barcelona, Spain",
|
||||||
['name' => 'Dhaka, Bangladesh'],
|
),
|
||||||
['name' => 'Dublin, Ireland'],
|
array(
|
||||||
['name' => 'Frankfurt, Germany'],
|
"name" => "Beijing, China",
|
||||||
['name' => 'Hamburg, Germany'],
|
),
|
||||||
['name' => 'Helsinki, Finland'],
|
array(
|
||||||
['name' => 'Hong Kong'],
|
"name" => "Bengaluru, India",
|
||||||
['name' => 'Houston, USA'],
|
),
|
||||||
['name' => 'Istanbul, Turkey'],
|
array(
|
||||||
['name' => 'Jakarta, Indonesia'],
|
"name" => "Berlin, Germany",
|
||||||
['name' => 'Johannesburg, South Africa'],
|
),
|
||||||
['name' => 'Kansas City, USA'],
|
array(
|
||||||
['name' => 'Kuala Lumpur, Malaysia'],
|
"name" => "Brisbane, Australia",
|
||||||
['name' => 'Kiev, Ukraine'],
|
),
|
||||||
['name' => 'Las Vegas, USA'],
|
array(
|
||||||
['name' => 'London, United kingdom'],
|
"name" => "Brussels, Belgium",
|
||||||
['name' => 'Los Angeles, USA'],
|
),
|
||||||
['name' => 'Luxembourg'],
|
array(
|
||||||
['name' => 'Lyon, France'],
|
"name" => "Bucharest, Romania",
|
||||||
['name' => 'Madrid, Spain'],
|
),
|
||||||
['name' => 'Manchester, United Kingdom'],
|
array(
|
||||||
['name' => 'Melbourne, Australia'],
|
"name" => "Buenos Aires, Argentina",
|
||||||
['name' => 'Mexico City, Mexico'],
|
),
|
||||||
['name' => 'Miami, USA'],
|
array(
|
||||||
['name' => 'Milan, Italy'],
|
"name" => "Charlotte, USA",
|
||||||
['name' => 'Montreal, Canada'],
|
),
|
||||||
['name' => 'Moscow, Russia'],
|
array(
|
||||||
['name' => 'Mumbai, India'],
|
"name" => "Chennai, India",
|
||||||
['name' => 'Munich, Germany'],
|
),
|
||||||
['name' => 'New Delhi, India'],
|
array(
|
||||||
['name' => 'New Jersey, USA'],
|
"name" => "Chicago, USA",
|
||||||
['name' => 'New York, USA'],
|
),
|
||||||
['name' => 'Newcastle, United Kingdom'],
|
array(
|
||||||
['name' => 'Nuremberg, Germany'],
|
"name" => "Christchurch, New Zealand",
|
||||||
['name' => 'Ogden, USA'],
|
),
|
||||||
['name' => 'Oslo, Norway'],
|
array(
|
||||||
['name' => 'Paris, France'],
|
"name" => "Dallas, USA",
|
||||||
['name' => 'Perth, Australia'],
|
),
|
||||||
['name' => 'Phoenix, USA'],
|
array(
|
||||||
['name' => 'Philadelphia, USA'],
|
"name" => "Denver, USA",
|
||||||
['name' => 'Portland, USA'],
|
),
|
||||||
['name' => 'Riga, Latvia'],
|
array(
|
||||||
['name' => 'Rome, Italy'],
|
"name" => "Dublin, Ireland",
|
||||||
['name' => 'Rotterdam, Netherlands'],
|
),
|
||||||
['name' => 'Salt Lake City, USA'],
|
array(
|
||||||
['name' => 'San Diego, USA'],
|
"name" => "Frankfurt, Germany",
|
||||||
['name' => 'San Francisco, USA'],
|
),
|
||||||
['name' => 'San Jose, USA'],
|
array(
|
||||||
['name' => 'Seattle, USA'],
|
"name" => "Hamburg, Germany",
|
||||||
['name' => 'Seoul, South Korea'],
|
),
|
||||||
['name' => 'Shanghai, China'],
|
array(
|
||||||
['name' => 'Silicon Valley, USA'],
|
"name" => "Helsinki, Finland",
|
||||||
['name' => 'Singapore'],
|
),
|
||||||
['name' => 'Sofia, Bulgaria'],
|
array(
|
||||||
['name' => 'St Petersburg, Russia'],
|
"name" => "Hong Kong",
|
||||||
['name' => 'Stockholm, Sweden'],
|
),
|
||||||
['name' => 'Sydney, Australia'],
|
array(
|
||||||
['name' => 'Tampa, USA'],
|
"name" => "Houston, USA",
|
||||||
['name' => 'Tokyo, Japan'],
|
),
|
||||||
['name' => 'Toronto, Canada'],
|
array(
|
||||||
['name' => 'Vancouver, Canada'],
|
"name" => "Istanbul, Turkey",
|
||||||
['name' => 'Warsaw, Poland'],
|
),
|
||||||
['name' => 'Washington, USA'],
|
array(
|
||||||
['name' => 'Wellington, New Zealand'],
|
"name" => "Jakarta, Indonesia",
|
||||||
['name' => 'Zurich, Switzerland'],
|
),
|
||||||
['name' => 'Quebec, Canada'],
|
array(
|
||||||
['name' => 'Kharkiv, Ukraine'],
|
"name" => "Johannesburg, South Africa",
|
||||||
['name' => 'Sao Paulo, Brazil'],
|
),
|
||||||
];
|
array(
|
||||||
|
"name" => "Kansas City, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Kuala Lumpur, Malaysia",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Kiev, Ukraine",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Las Vegas, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "London, United kingdom",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Los Angeles, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Luxembourg",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Lyon, France",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Madrid, Spain",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Manchester, United Kingdom",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Melbourne, Australia",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Mexico City, Mexico",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Miami, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Milan, Italy",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Montreal, Canada",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Moscow, Russia",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Mumbai, India",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Munich, Germany",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "New Delhi, India",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "New Jersey, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "New York, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Newcastle, United Kingdom",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Nuremberg, Germany",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Ogden, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Oslo, Norway",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Paris, France",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Perth, Australia",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Phoenix, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Philadelphia, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Portland, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Riga, Latvia",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Rome, Italy",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Rotterdam, Netherlands",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Salt Lake City, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "San Diego, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "San Francisco, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "San Jose, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Seattle, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Seoul, South Korea",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Shanghai, China",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Silicon Valley, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Singapore",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Sofia, Bulgaria",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "St Petersburg, Russia",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Stockholm, Sweden",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Sydney, Australia",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Tampa, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Tokyo, Japan",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Toronto, Canada",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Vancouver, Canada",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Warsaw, Poland",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Washington, USA",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Wellington, New Zealand",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Zurich, Switzerland",
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"name" => "Quebec, Canada",
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
DB::table('locations')->insert($locations);
|
DB::table('locations')->insert($locations);
|
||||||
|
|
||||||
|
|
|
@ -12,51 +12,33 @@ class OsSeeder extends Seeder
|
||||||
{
|
{
|
||||||
$os = [
|
$os = [
|
||||||
["name" => "None", "created_at" => Carbon::now()],
|
["name" => "None", "created_at" => Carbon::now()],
|
||||||
["name" => "AlmaLinux 8", "created_at" => Carbon::now()],
|
["name" => "Centos 7", "created_at" => Carbon::now()],
|
||||||
["name" => "AlmaLinux", "created_at" => Carbon::now()],
|
|
||||||
["name" => "Centos 7", "created_at" => Carbon::now()],//3
|
|
||||||
["name" => "Centos 8", "created_at" => Carbon::now()],
|
["name" => "Centos 8", "created_at" => Carbon::now()],
|
||||||
["name" => "Centos 9", "created_at" => Carbon::now()],
|
|
||||||
["name" => "Centos", "created_at" => Carbon::now()],
|
["name" => "Centos", "created_at" => Carbon::now()],
|
||||||
["name" => "Debian 9", "created_at" => Carbon::now()],//7
|
["name" => "Debian 9", "created_at" => Carbon::now()],
|
||||||
["name" => "Debian 10", "created_at" => Carbon::now()],
|
["name" => "Debian 10", "created_at" => Carbon::now()],
|
||||||
["name" => "Debian", "created_at" => Carbon::now()],
|
["name" => "Debian", "created_at" => Carbon::now()],
|
||||||
["name" => "Fedora 32", "created_at" => Carbon::now()],//10
|
["name" => "Fedora 32", "created_at" => Carbon::now()],
|
||||||
["name" => "Fedora 33", "created_at" => Carbon::now()],
|
["name" => "Fedora 33", "created_at" => Carbon::now()],
|
||||||
["name" => "Fedora 34", "created_at" => Carbon::now()],
|
["name" => "Fedora", "created_at" => Carbon::now()],
|
||||||
["name" => "Fedora", "created_at" => Carbon::now()],//13
|
|
||||||
["name" => "FreeBSD 11.4", "created_at" => Carbon::now()],
|
["name" => "FreeBSD 11.4", "created_at" => Carbon::now()],
|
||||||
["name" => "FreeBSD 12.1", "created_at" => Carbon::now()],//15
|
["name" => "FreeBSD 12.1", "created_at" => Carbon::now()],
|
||||||
["name" => "FreeBSD", "created_at" => Carbon::now()],
|
["name" => "FreeBSD", "created_at" => Carbon::now()],
|
||||||
["name" => "OpenBSD 6.7", "created_at" => Carbon::now()],
|
["name" => "OpenBSD 6.7", "created_at" => Carbon::now()],
|
||||||
["name" => "OpenBSD 6.8", "created_at" => Carbon::now()],
|
["name" => "OpenBSD 6.8", "created_at" => Carbon::now()],
|
||||||
["name" => "OpenBSD", "created_at" => Carbon::now()],
|
["name" => "OpenBSD", "created_at" => Carbon::now()],
|
||||||
["name" => "Red Hat Enterprise Linux 8", "created_at" => Carbon::now()],//20
|
["name" => "Ubuntu 16.04", "created_at" => Carbon::now()],
|
||||||
["name" => "Red Hat Enterprise Linux 9", "created_at" => Carbon::now()],
|
|
||||||
["name" => "Red Hat Enterprise Linux", "created_at" => Carbon::now()],
|
|
||||||
["name" => "Rocky Linux 8", "created_at" => Carbon::now()],
|
|
||||||
["name" => "Rocky Linux", "created_at" => Carbon::now()],
|
|
||||||
["name" => "Ubuntu 16.04", "created_at" => Carbon::now()],//25
|
|
||||||
["name" => "Ubuntu 18.04", "created_at" => Carbon::now()],
|
["name" => "Ubuntu 18.04", "created_at" => Carbon::now()],
|
||||||
["name" => "Ubuntu 20.04", "created_at" => Carbon::now()],
|
["name" => "Ubuntu 20.04", "created_at" => Carbon::now()],
|
||||||
["name" => "Ubuntu 20.10", "created_at" => Carbon::now()],
|
["name" => "Ubuntu 20.10", "created_at" => Carbon::now()],
|
||||||
["name" => "Ubuntu 22.10", "created_at" => Carbon::now()],
|
["name" => "Ubuntu", "created_at" => Carbon::now()],
|
||||||
["name" => "Ubuntu", "created_at" => Carbon::now()],//30
|
|
||||||
["name" => "Windows Server 2008", "created_at" => Carbon::now()],
|
["name" => "Windows Server 2008", "created_at" => Carbon::now()],
|
||||||
["name" => "Windows Server 2012", "created_at" => Carbon::now()],
|
["name" => "Windows Server 2012", "created_at" => Carbon::now()],
|
||||||
["name" => "Windows Server 2016", "created_at" => Carbon::now()],
|
["name" => "Windows Server 2016", "created_at" => Carbon::now()],
|
||||||
["name" => "Windows Server 2019", "created_at" => Carbon::now()],
|
["name" => "Windows Server 2019", "created_at" => Carbon::now()],
|
||||||
["name" => "Windows 10", "created_at" => Carbon::now()],
|
["name" => "Windows 10", "created_at" => Carbon::now()],
|
||||||
["name" => "Windows 11", "created_at" => Carbon::now()],//38
|
["name" => "Custom", "created_at" => Carbon::now()],
|
||||||
["name" => "Custom", "created_at" => Carbon::now()],//39
|
["name" => "Other", "created_at" => Carbon::now()]
|
||||||
["name" => "Other", "created_at" => Carbon::now()],//40
|
|
||||||
["name" => "Windows Server 2022", "created_at" => Carbon::now()],//41
|
|
||||||
["name" => "Ubuntu 24.04", "created_at" => Carbon::now()],//42
|
|
||||||
["name" => "OpenBSD 7.5", "created_at" => Carbon::now()],//43
|
|
||||||
["name" => "Fedora 41", "created_at" => Carbon::now()],//44
|
|
||||||
["name" => "Debian 11", "created_at" => Carbon::now()],//45
|
|
||||||
["name" => "AlmaLinux 9", "created_at" => Carbon::now()],//46
|
|
||||||
["name" => "FreeBSD 14.1", "created_at" => Carbon::now()],//47
|
|
||||||
];
|
];
|
||||||
|
|
||||||
DB::table('os')->insert($os);
|
DB::table('os')->insert($os);
|
||||||
|
|
|
@ -22,9 +22,7 @@ class ProvidersSeeder extends Seeder
|
||||||
['name' => "BudgetNode"],
|
['name' => "BudgetNode"],
|
||||||
['name' => "BuyVM"],
|
['name' => "BuyVM"],
|
||||||
['name' => "CloudCone"],
|
['name' => "CloudCone"],
|
||||||
['name' => "Cloud Five Limited"],
|
|
||||||
['name' => "Clouvider"],
|
['name' => "Clouvider"],
|
||||||
['name' => "Cloudways"],
|
|
||||||
['name' => "CrownCloud"],
|
['name' => "CrownCloud"],
|
||||||
['name' => "David Froehlich"],
|
['name' => "David Froehlich"],
|
||||||
['name' => "Dedispec"],
|
['name' => "Dedispec"],
|
||||||
|
@ -41,7 +39,6 @@ class ProvidersSeeder extends Seeder
|
||||||
['name' => "FreeRangeCloud"],
|
['name' => "FreeRangeCloud"],
|
||||||
['name' => "George Data Center"],
|
['name' => "George Data Center"],
|
||||||
['name' => "Gestiondbi"],
|
['name' => "Gestiondbi"],
|
||||||
['name' => "Godaddy"],
|
|
||||||
['name' => "Gullo's Hosting"],
|
['name' => "Gullo's Hosting"],
|
||||||
['name' => "HappyBeeHost"],
|
['name' => "HappyBeeHost"],
|
||||||
['name' => "Hetzner"],
|
['name' => "Hetzner"],
|
||||||
|
@ -51,10 +48,9 @@ class ProvidersSeeder extends Seeder
|
||||||
['name' => "HostHatch"],
|
['name' => "HostHatch"],
|
||||||
['name' => "Hostcram"],
|
['name' => "Hostcram"],
|
||||||
['name' => "Hostigger"],
|
['name' => "Hostigger"],
|
||||||
['name' => "Hostinger"],
|
|
||||||
['name' => "HostMaxim"],
|
['name' => "HostMaxim"],
|
||||||
//['name' => "HostSolutions"],
|
['name' => "HostSolutions"],
|
||||||
['name' => "HostUS"],
|
['name' => "Hostus"],
|
||||||
['name' => "HostYD"],
|
['name' => "HostYD"],
|
||||||
//['name' => "Hotlineservers"],
|
//['name' => "Hotlineservers"],
|
||||||
['name' => "Hover"],
|
['name' => "Hover"],
|
||||||
|
@ -92,7 +88,6 @@ class ProvidersSeeder extends Seeder
|
||||||
['name' => "Rad Web hosting"],
|
['name' => "Rad Web hosting"],
|
||||||
['name' => "RamNode"],
|
['name' => "RamNode"],
|
||||||
['name' => "ReadyDedis"],
|
['name' => "ReadyDedis"],
|
||||||
['name' => "ResellerClub"],
|
|
||||||
['name' => "Servarica"],
|
['name' => "Servarica"],
|
||||||
['name' => "Servers Galore"],
|
['name' => "Servers Galore"],
|
||||||
['name' => "Shock Hosting"],
|
['name' => "Shock Hosting"],
|
||||||
|
|
16608
package-lock.json
generated
16608
package-lock.json
generated
File diff suppressed because it is too large
Load diff
39
package.json
39
package.json
|
@ -7,29 +7,26 @@
|
||||||
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
||||||
"hot": "mix watch --hot",
|
"hot": "mix watch --hot",
|
||||||
"prod": "npm run production",
|
"prod": "npm run production",
|
||||||
"production": "mix --production",
|
"production": "mix --production"
|
||||||
"build": "webpack --config webpack.config.js"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"axios": "^1.7.9",
|
"@popperjs/core": "^2.10.2",
|
||||||
"bootstrap": "^5.3.3",
|
"@tailwindcss/forms": "^0.4.0",
|
||||||
"bootstrap-dark-5": "^1.1.3",
|
"alpinejs": "^3.4.2",
|
||||||
"bootstrap-data-table": "^1.0.0",
|
"autoprefixer": "^10.1.0",
|
||||||
"datatables": "^1.10.18",
|
"axios": "^0.21.4",
|
||||||
"datatables.net-bs": "^2.1.8",
|
"bootstrap": "^5.1.3",
|
||||||
"font-awesome": "^4.7.0",
|
"laravel-mix": "^6.0.41",
|
||||||
"jquery": "^3.7.1",
|
"lodash": "^4.17.21",
|
||||||
"laravel-mix": "^6.0.49",
|
"postcss": "^8.2.1",
|
||||||
"resolve-url-loader": "^5.0.0",
|
"postcss-import": "^14.0.1",
|
||||||
"sass": "^1.82.0",
|
"resolve-url-loader": "^3.1.2",
|
||||||
"sass-loader": "^12.6.0",
|
"sass": "^1.32.11",
|
||||||
"vue": "^2.7.16",
|
"sass-loader": "^11.0.1",
|
||||||
"vue-loader": "^17.4.2",
|
"tailwindcss": "^3.0.0",
|
||||||
|
"vue": "^2.6.12",
|
||||||
|
"vue-loader": "^15.9.5",
|
||||||
"vue-resource": "^1.5.3",
|
"vue-resource": "^1.5.3",
|
||||||
"vue-template-compiler": "^2.7.16"
|
"vue-template-compiler": "^2.6.12"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@fortawesome/fontawesome-free": "^6.7.1",
|
|
||||||
"datatables.net-bs5": "^1.13.11"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue