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');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,10 @@ class CreatePricingTable extends Migration
|
||||||
$table->tinyInteger('service_type');
|
$table->tinyInteger('service_type');
|
||||||
$table->tinyInteger('active')->default(1);
|
$table->tinyInteger('active')->default(1);
|
||||||
$table->char('currency', 3);
|
$table->char('currency', 3);
|
||||||
$table->decimal('price', 10, 2);
|
$table->decimal('price',10,2);
|
||||||
$table->tinyInteger('term');
|
$table->tinyInteger('term');
|
||||||
$table->decimal('as_usd', 10, 2);
|
$table->decimal('as_usd',10,2);
|
||||||
$table->decimal('usd_per_month', 10, 2);
|
$table->decimal('usd_per_month',10,2);
|
||||||
$table->date('next_due_date');
|
$table->date('next_due_date');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|
|
@ -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
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue