├── .github └── workflows │ └── health-check.yml ├── .gitignore ├── LICENSE ├── README.md ├── health-check.sh ├── index.css ├── index.html ├── index.js ├── logo.svg ├── logs ├── google_report.log ├── hn_report.log ├── reddit_report.log ├── statsig_report.log └── worldclock_report.log └── urls.cfg /.github/workflows/health-check.yml: -------------------------------------------------------------------------------- 1 | name: Scheduled Health Check 2 | 3 | # Controls when the action will run. 4 | on: 5 | schedule: 6 | - cron: "30 * * * *" 7 | 8 | jobs: 9 | health_check_job: 10 | runs-on: ubuntu-latest 11 | name: Check all sites 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: Run Shell Script 15 | id: shell_script_run 16 | run: bash ./health-check.sh 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ISC License (ISC) 2 | Copyright (c) 2021, Statsig, Inc. 3 | 4 | Permission to use, copy, modify, and/or distribute this software for any purpose 5 | with or without fee is hereby granted, provided that the above copyright notice 6 | and this permission notice appear in all copies. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 9 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 10 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 11 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 12 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 13 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 14 | THIS SOFTWARE. 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Health Check](../../actions/workflows/health-check.yml/badge.svg)](../../actions/workflows/health-check.yml) 2 | 3 | # Statsig's Open-Source Status Page 4 | 5 | We tried various Status Pages out there, and built this as a fun little hobby project to make status pages as simple as possible. 6 | 7 | ## Demo 8 | 9 | - https://status.statsig.com 10 | 11 | ## Setup instructions 12 | 13 | 1. Fork the [template repository](https://github.com/statsig-io/statuspage/). 14 | 2. Update `urls.cfg` to include your urls. 15 | 16 | ```cfg 17 | key1=https://example.com 18 | key2=https://statsig.com 19 | ``` 20 | 21 | 3. Update `index.html` and change the title. 22 | 23 | ```html 24 | My Status Page 25 |

Services Status

26 | ``` 27 | 28 | 4. Set up GitHub Pages for your repository. 29 | 30 | ![image](https://user-images.githubusercontent.com/74588208/121419015-5f4dc200-c920-11eb-9b14-a275ef5e2a19.png) 31 | 32 | ## How does it work? 33 | 34 | This project uses GitHub actions to wake up every hour and run a shell script (`health-check.sh`). This script runs `curl` on every url in your config and appends the result of that run to a log file and commits it to the repository. This log is then pulled dynamically from `index.html` and displayed in a easily consumable fashion. You can also run that script from your own infrastructure to update the status page more often. 35 | 36 | ## What does it not do (yet)? 37 | 38 | 1. Incident management. 39 | 2. Outage duration tracking. 40 | 3. Updating status root-cause. 41 | 42 | ## Got new ideas? 43 | 44 | Send in a PR - we'd love to integrate your ideas. 45 | 46 | ## In case... 47 | 48 | You are looking for a developer friendly Feature flags, and A/B experimentation service for your product, check out: https://www.statsig.com 49 | 50 | ![Statsig status page](https://user-images.githubusercontent.com/74588208/146078161-778fcb99-4a59-4e39-9fc0-abef18d5ac52.png) 51 | -------------------------------------------------------------------------------- /health-check.sh: -------------------------------------------------------------------------------- 1 | # In the original repository we'll just print the result of status checks, 2 | # without committing. This avoids generating several commits that would make 3 | # later upstream merges messy for anyone who forked us. 4 | commit=true 5 | origin=$(git remote get-url origin) 6 | if [[ $origin == *statsig-io/statuspage* ]] 7 | then 8 | commit=false 9 | fi 10 | 11 | KEYSARRAY=() 12 | URLSARRAY=() 13 | 14 | urlsConfig="./urls.cfg" 15 | echo "Reading $urlsConfig" 16 | while read -r line 17 | do 18 | echo " $line" 19 | IFS='=' read -ra TOKENS <<< "$line" 20 | KEYSARRAY+=(${TOKENS[0]}) 21 | URLSARRAY+=(${TOKENS[1]}) 22 | done < "$urlsConfig" 23 | 24 | echo "***********************" 25 | echo "Starting health checks with ${#KEYSARRAY[@]} configs:" 26 | 27 | mkdir -p logs 28 | 29 | for (( index=0; index < ${#KEYSARRAY[@]}; index++)) 30 | do 31 | key="${KEYSARRAY[index]}" 32 | url="${URLSARRAY[index]}" 33 | echo " $key=$url" 34 | 35 | for i in 1 2 3 4; 36 | do 37 | response=$(curl --write-out '%{http_code}' --silent --output /dev/null $url) 38 | if [ "$response" -eq 200 ] || [ "$response" -eq 202 ] || [ "$response" -eq 301 ] || [ "$response" -eq 302 ] || [ "$response" -eq 307 ]; then 39 | result="success" 40 | else 41 | result="failed" 42 | fi 43 | if [ "$result" = "success" ]; then 44 | break 45 | fi 46 | sleep 5 47 | done 48 | dateTime=$(date +'%Y-%m-%d %H:%M') 49 | if [[ $commit == true ]] 50 | then 51 | echo $dateTime, $result >> "logs/${key}_report.log" 52 | # By default we keep 2000 last log entries. Feel free to modify this to meet your needs. 53 | echo "$(tail -2000 logs/${key}_report.log)" > "logs/${key}_report.log" 54 | else 55 | echo " $dateTime, $result" 56 | fi 57 | done 58 | 59 | if [[ $commit == true ]] 60 | then 61 | # Let's make Vijaye the most productive person on GitHub. 62 | git config --global user.name 'Vijaye Raji' 63 | git config --global user.email 'vijaye@statsig.com' 64 | git add -A --force logs/ 65 | git commit -am '[Automated] Update Health Check Logs' 66 | git push 67 | fi 68 | -------------------------------------------------------------------------------- /index.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | html { 6 | height: 100%; 7 | display: flex; 8 | flex-direction: column; 9 | } 10 | body { 11 | background-color: #f5f6f8; 12 | color: #3b3b3b; 13 | font-size: 14px; 14 | font-weight: 300; 15 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", 16 | "Helvetica Neue", "Ubuntu", sans-serif; 17 | justify-content: center; 18 | line-height: 22px; 19 | margin: 0; 20 | padding: 0; 21 | text-align: center; 22 | transition: opacity 0.3s; 23 | } 24 | h1, 25 | h2, 26 | h3, 27 | h4, 28 | h5, 29 | h6, 30 | button, 31 | footer, 32 | input, 33 | textarea, 34 | .copyright, 35 | .button { 36 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", 37 | "Helvetica Neue", "Ubuntu", sans-serif; 38 | line-height: 125%; 39 | } 40 | 41 | h1 { 42 | color: #3b3b3b; 43 | font-size: 32px; 44 | font-weight: bold; 45 | margin: 0px; 46 | } 47 | h2 { 48 | color: #3b3b3b; 49 | font-size: 28px; 50 | font-weight: bold; 51 | margin: 16px 0 8px 0; 52 | } 53 | h3 { 54 | color: #3b3b3b; 55 | font-size: 24px; 56 | font-weight: 700; 57 | margin: 8px 0 4px 0; 58 | } 59 | h4 { 60 | color: #3b3b3b; 61 | font-size: 18px; 62 | font-weight: 600; 63 | margin-top: 5px; 64 | margin-bottom: 4px; 65 | } 66 | h5 { 67 | color: #3b3b3b; 68 | font-size: 16px; 69 | font-weight: bold; 70 | margin-top: 5px; 71 | margin-bottom: 4px; 72 | } 73 | h6 { 74 | color: #3b3b3b; 75 | font-size: 16px; 76 | font-weight: bold; 77 | margin-top: 5px; 78 | margin-bottom: 4px; 79 | } 80 | a { 81 | color: #194b7d; 82 | text-decoration: none; 83 | } 84 | 85 | .outlineButton, 86 | .button, 87 | button { 88 | background-color: #194b7d; 89 | border: none; 90 | border-radius: 8px; 91 | color: white; 92 | cursor: pointer; 93 | font-size: 16px; 94 | font-weight: 600; 95 | padding: 10px 16px; 96 | white-space: nowrap; 97 | } 98 | 99 | footer { 100 | color: #9c9c9c; 101 | margin: 40px; 102 | } 103 | 104 | footer a { 105 | font-weight: bold; 106 | } 107 | 108 | .pageContainer { 109 | padding: 30px 50px; 110 | background-color: #fff; 111 | box-shadow: 0px 6px 18px rgba(0, 0, 0, 0.06); 112 | border-radius: 5px; 113 | max-width: 900px; 114 | width: 100%; 115 | margin: 96px auto; 116 | } 117 | 118 | .headline { 119 | display: flex; 120 | align-items: center; 121 | justify-content: center; 122 | } 123 | 124 | .headline span { 125 | background-color: #f5f6f8; 126 | border-radius: 5px; 127 | padding: 6px; 128 | margin-left: 12px; 129 | font-size: 16px; 130 | font-weight: 700; 131 | text-transform: uppercase; 132 | } 133 | 134 | .reportContainer { 135 | margin: 30px auto; 136 | width: 100%; 137 | } 138 | 139 | .statusContainer { 140 | border: 1px solid #ededed; 141 | border-radius: 5px; 142 | padding-top: 20px; 143 | text-align: left; 144 | padding: 24px; 145 | } 146 | 147 | .statusContainer + .statusContainer { 148 | border-top: 1px solid #eee; 149 | margin-top: 30px; 150 | } 151 | 152 | .statusStreamContainer { 153 | display: flex; 154 | justify-content: space-between; 155 | } 156 | 157 | .statusSquare { 158 | border-radius: 3px; 159 | height: 30px; 160 | min-width: 8px; 161 | width: 100%; 162 | } 163 | 164 | .statusSquare + .statusSquare { 165 | margin-left: 6px; 166 | } 167 | 168 | .sectionUrl { 169 | font-size: 14px; 170 | } 171 | 172 | .statusTitle { 173 | text-transform: uppercase; 174 | } 175 | 176 | .statusHeader { 177 | display: flex; 178 | flex-direction: row; 179 | align-items: center; 180 | margin-bottom: 2px; 181 | } 182 | 183 | .statusSubtitle { 184 | display: flex; 185 | flex-direction: row; 186 | align-items: center; 187 | margin-bottom: 12px; 188 | } 189 | 190 | .statusHeadline { 191 | color: #eee; 192 | padding: 4px 8px; 193 | border-radius: 15px; 194 | font-size: 12px; 195 | font-weight: 700; 196 | margin-left: 12px; 197 | } 198 | 199 | .statusUptime { 200 | flex: 1; 201 | text-align: right; 202 | color: #7c7c7c; 203 | font-size: 12px; 204 | } 205 | 206 | .uptimeContainer { 207 | color: #999; 208 | display: flex; 209 | margin-top: 8px; 210 | font-size: 12px; 211 | } 212 | 213 | .uptimeContainer hr { 214 | border: none; 215 | border-top: 1px dashed #eee; 216 | width: 100%; 217 | margin: 10px; 218 | } 219 | 220 | .success { 221 | background-color: #4cae50; 222 | color: #fff; 223 | } 224 | 225 | .failure { 226 | background-color: #f44336; 227 | color: #fff; 228 | } 229 | 230 | .nodata { 231 | background-color: #f8f8f8; 232 | color: #ccc; 233 | } 234 | 235 | .partial { 236 | background-color: #ff9800; 237 | color: #fff; 238 | } 239 | 240 | .tooltip { 241 | background-color: #fff; 242 | box-shadow: 0px 6px 18px rgba(0, 0, 0, 0.12); 243 | border-radius: 4px; 244 | color: #3b3b3b; 245 | font-size: 12px; 246 | line-height: 18px; 247 | padding: 16px; 248 | position: absolute; 249 | text-align: left; 250 | z-index: 100; 251 | width: 240px; 252 | transition: opacity 0.2s; 253 | } 254 | 255 | .tooltip .tooltipArrow { 256 | position: absolute; 257 | bottom: 100%; 258 | width: 4px; 259 | text-align: center; 260 | border: 4px solid transparent; 261 | border-bottom-color: #fff; 262 | left: 50%; 263 | margin-left: -2px; 264 | } 265 | 266 | .tooltip .tooltipDateTime { 267 | font-size: 12px; 268 | color: #7c7c7c; 269 | text-transform: uppercase; 270 | font-weight: 600; 271 | } 272 | 273 | .tooltip .tooltipKey { 274 | color: #ccc; 275 | font-size: 10px; 276 | } 277 | 278 | .tooltip .tooltipDescription { 279 | margin-top: 12px; 280 | font-size: 14px; 281 | color: #181818; 282 | } 283 | 284 | .tooltip #tooltipStatus { 285 | padding: 4px 8px; 286 | border-radius: 15px; 287 | font-size: 12px; 288 | font-weight: bold; 289 | margin-top: 6px; 290 | display: inline-block; 291 | } 292 | 293 | .tooltip hr { 294 | border: none; 295 | border-top: 1px solid #ededed; 296 | margin-top: 16px; 297 | } 298 | 299 | @media screen and (max-width: 800px) { 300 | .pageContainer { 301 | padding: 30px 20px; 302 | margin: 0 auto 40px auto; 303 | } 304 | 305 | .statusHeader, 306 | .statusSubtitle { 307 | display: block; 308 | } 309 | 310 | .statusHeadline, 311 | .sectionUrl, 312 | .statusUptime { 313 | margin-left: 0; 314 | margin-top: 8px; 315 | text-align: left; 316 | } 317 | 318 | .statusTitle, 319 | .statusHeadline { 320 | display: inline-block; 321 | } 322 | 323 | .statusSquare + .statusSquare { 324 | margin-left: 1px; 325 | } 326 | 327 | .statusSquare { 328 | min-width: 4px; 329 | width: 100%; 330 | } 331 | } 332 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Status Page 4 | 5 | 6 | 7 | 8 | 9 |
10 |
11 | Logo 12 | System Status 13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 44 |
45 | 51 | 52 | 55 | 56 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const maxDays = 30; 2 | 3 | async function genReportLog(container, key, url) { 4 | const response = await fetch("logs/" + key + "_report.log"); 5 | let statusLines = ""; 6 | if (response.ok) { 7 | statusLines = await response.text(); 8 | } 9 | 10 | const normalized = normalizeData(statusLines); 11 | const statusStream = constructStatusStream(key, url, normalized); 12 | container.appendChild(statusStream); 13 | } 14 | 15 | function constructStatusStream(key, url, uptimeData) { 16 | let streamContainer = templatize("statusStreamContainerTemplate"); 17 | for (var ii = maxDays - 1; ii >= 0; ii--) { 18 | let line = constructStatusLine(key, ii, uptimeData[ii]); 19 | streamContainer.appendChild(line); 20 | } 21 | 22 | const lastSet = uptimeData[0]; 23 | const color = getColor(lastSet); 24 | 25 | const container = templatize("statusContainerTemplate", { 26 | title: key, 27 | url: url, 28 | color: color, 29 | status: getStatusText(color), 30 | upTime: uptimeData.upTime, 31 | }); 32 | 33 | container.appendChild(streamContainer); 34 | return container; 35 | } 36 | 37 | function constructStatusLine(key, relDay, upTimeArray) { 38 | let date = new Date(); 39 | date.setDate(date.getDate() - relDay); 40 | 41 | return constructStatusSquare(key, date, upTimeArray); 42 | } 43 | 44 | function getColor(uptimeVal) { 45 | return uptimeVal == null 46 | ? "nodata" 47 | : uptimeVal == 1 48 | ? "success" 49 | : uptimeVal < 0.3 50 | ? "failure" 51 | : "partial"; 52 | } 53 | 54 | function constructStatusSquare(key, date, uptimeVal) { 55 | const color = getColor(uptimeVal); 56 | let square = templatize("statusSquareTemplate", { 57 | color: color, 58 | tooltip: getTooltip(key, date, color), 59 | }); 60 | 61 | const show = () => { 62 | showTooltip(square, key, date, color); 63 | }; 64 | square.addEventListener("mouseover", show); 65 | square.addEventListener("mousedown", show); 66 | square.addEventListener("mouseout", hideTooltip); 67 | return square; 68 | } 69 | 70 | let cloneId = 0; 71 | function templatize(templateId, parameters) { 72 | let clone = document.getElementById(templateId).cloneNode(true); 73 | clone.id = "template_clone_" + cloneId++; 74 | if (!parameters) { 75 | return clone; 76 | } 77 | 78 | applyTemplateSubstitutions(clone, parameters); 79 | return clone; 80 | } 81 | 82 | function applyTemplateSubstitutions(node, parameters) { 83 | const attributes = node.getAttributeNames(); 84 | for (var ii = 0; ii < attributes.length; ii++) { 85 | const attr = attributes[ii]; 86 | const attrVal = node.getAttribute(attr); 87 | node.setAttribute(attr, templatizeString(attrVal, parameters)); 88 | } 89 | 90 | if (node.childElementCount == 0) { 91 | node.innerText = templatizeString(node.innerText, parameters); 92 | } else { 93 | const children = Array.from(node.children); 94 | children.forEach((n) => { 95 | applyTemplateSubstitutions(n, parameters); 96 | }); 97 | } 98 | } 99 | 100 | function templatizeString(text, parameters) { 101 | if (parameters) { 102 | for (const [key, val] of Object.entries(parameters)) { 103 | text = text.replaceAll("$" + key, val); 104 | } 105 | } 106 | return text; 107 | } 108 | 109 | function getStatusText(color) { 110 | return color == "nodata" 111 | ? "No Data Available" 112 | : color == "success" 113 | ? "Fully Operational" 114 | : color == "failure" 115 | ? "Major Outage" 116 | : color == "partial" 117 | ? "Partial Outage" 118 | : "Unknown"; 119 | } 120 | 121 | function getStatusDescriptiveText(color) { 122 | return color == "nodata" 123 | ? "No Data Available: Health check was not performed." 124 | : color == "success" 125 | ? "No downtime recorded on this day." 126 | : color == "failure" 127 | ? "Major outages recorded on this day." 128 | : color == "partial" 129 | ? "Partial outages recorded on this day." 130 | : "Unknown"; 131 | } 132 | 133 | function getTooltip(key, date, quartile, color) { 134 | let statusText = getStatusText(color); 135 | return `${key} | ${date.toDateString()} : ${quartile} : ${statusText}`; 136 | } 137 | 138 | function create(tag, className) { 139 | let element = document.createElement(tag); 140 | element.className = className; 141 | return element; 142 | } 143 | 144 | function normalizeData(statusLines) { 145 | const rows = statusLines.split("\n"); 146 | const dateNormalized = splitRowsByDate(rows); 147 | 148 | let relativeDateMap = {}; 149 | const now = Date.now(); 150 | for (const [key, val] of Object.entries(dateNormalized)) { 151 | if (key == "upTime") { 152 | continue; 153 | } 154 | 155 | const relDays = getRelativeDays(now, new Date(key).getTime()); 156 | relativeDateMap[relDays] = getDayAverage(val); 157 | } 158 | 159 | relativeDateMap.upTime = dateNormalized.upTime; 160 | return relativeDateMap; 161 | } 162 | 163 | function getDayAverage(val) { 164 | if (!val || val.length == 0) { 165 | return null; 166 | } else { 167 | return val.reduce((a, v) => a + v) / val.length; 168 | } 169 | } 170 | 171 | function getRelativeDays(date1, date2) { 172 | return Math.floor(Math.abs((date1 - date2) / (24 * 3600 * 1000))); 173 | } 174 | 175 | function splitRowsByDate(rows) { 176 | let dateValues = {}; 177 | let sum = 0, 178 | count = 0; 179 | for (var ii = 0; ii < rows.length; ii++) { 180 | const row = rows[ii]; 181 | if (!row) { 182 | continue; 183 | } 184 | 185 | const [dateTimeStr, resultStr] = row.split(",", 2); 186 | const dateTime = new Date(Date.parse(dateTimeStr.replace(/-/g, "/") + " GMT")); 187 | const dateStr = dateTime.toDateString(); 188 | 189 | let resultArray = dateValues[dateStr]; 190 | if (!resultArray) { 191 | resultArray = []; 192 | dateValues[dateStr] = resultArray; 193 | if (dateValues.length > maxDays) { 194 | break; 195 | } 196 | } 197 | 198 | let result = 0; 199 | if (resultStr.trim() == "success") { 200 | result = 1; 201 | } 202 | sum += result; 203 | count++; 204 | 205 | resultArray.push(result); 206 | } 207 | 208 | const upTime = count ? ((sum / count) * 100).toFixed(2) + "%" : "--%"; 209 | dateValues.upTime = upTime; 210 | return dateValues; 211 | } 212 | 213 | let tooltipTimeout = null; 214 | function showTooltip(element, key, date, color) { 215 | clearTimeout(tooltipTimeout); 216 | const toolTipDiv = document.getElementById("tooltip"); 217 | 218 | document.getElementById("tooltipDateTime").innerText = date.toDateString(); 219 | document.getElementById("tooltipDescription").innerText = 220 | getStatusDescriptiveText(color); 221 | 222 | const statusDiv = document.getElementById("tooltipStatus"); 223 | statusDiv.innerText = getStatusText(color); 224 | statusDiv.className = color; 225 | 226 | toolTipDiv.style.top = element.offsetTop + element.offsetHeight + 10; 227 | toolTipDiv.style.left = 228 | element.offsetLeft + element.offsetWidth / 2 - toolTipDiv.offsetWidth / 2; 229 | toolTipDiv.style.opacity = "1"; 230 | } 231 | 232 | function hideTooltip() { 233 | tooltipTimeout = setTimeout(() => { 234 | const toolTipDiv = document.getElementById("tooltip"); 235 | toolTipDiv.style.opacity = "0"; 236 | }, 1000); 237 | } 238 | 239 | async function genAllReports() { 240 | const response = await fetch("urls.cfg"); 241 | const configText = await response.text(); 242 | const configLines = configText.split("\n"); 243 | for (let ii = 0; ii < configLines.length; ii++) { 244 | const configLine = configLines[ii]; 245 | const [key, url] = configLine.split("="); 246 | if (!key || !url) { 247 | continue; 248 | } 249 | 250 | await genReportLog(document.getElementById("reports"), key, url); 251 | } 252 | } 253 | -------------------------------------------------------------------------------- /logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 22 | 31 | 36 | 41 | 43 | 45 | 64 | 70 | 73 | 78 | 82 | 86 | 90 | 94 | 98 | 102 | 106 | 108 | 113 | 117 | 121 | 125 | 129 | 133 | 137 | 141 | 145 | 149 | 153 | 157 | 159 | 163 | 174 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | image/svg+xml 192 | 194 | 196 | 197 | 198 | Openclipart 199 | 200 | 201 | Generic Logo 202 | 2010-08-03T00:39:17 203 | generic example of a logo 204 | https://openclipart.org/detail/76573/generic-logo-by-shokunin 205 | 206 | 207 | shokunin 208 | 209 | 210 | 211 | 212 | company 213 | logo 214 | logotyp 215 | sign 216 | trademark 217 | your company 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | -------------------------------------------------------------------------------- /logs/google_report.log: -------------------------------------------------------------------------------- 1 | 2021-06-10 08:38, success 2 | 2021-06-10 09:37, success 3 | 2021-06-10 10:39, success 4 | 2021-06-10 11:34, success 5 | 2021-06-10 12:43, success 6 | 2021-06-10 13:41, success 7 | 2021-06-10 14:36, success 8 | 2021-06-10 15:39, success 9 | 2021-06-10 16:46, success 10 | 2021-06-10 17:46, success 11 | 2021-06-10 18:44, success 12 | 2021-06-10 19:37, success 13 | 2021-06-10 20:35, success 14 | 2021-06-10 21:36, success 15 | 2021-06-10 22:36, success 16 | 2021-06-11 01:52, success 17 | 2021-06-11 02:45, success 18 | 2021-06-11 03:39, success 19 | 2021-06-11 04:41, success 20 | 2021-06-11 05:37, success 21 | 2021-06-11 06:39, success 22 | 2021-06-11 07:35, success 23 | 2021-06-11 08:37, success 24 | 2021-06-11 09:36, success 25 | 2021-06-11 10:37, success 26 | 2021-06-11 11:33, success 27 | 2021-06-11 12:42, success 28 | 2021-06-11 13:39, success 29 | 2021-06-11 14:34, success 30 | 2021-06-11 15:38, success 31 | 2021-06-11 16:44, success 32 | 2021-06-11 17:41, success 33 | 2021-06-11 18:40, success 34 | 2021-06-11 19:32, success 35 | 2021-06-11 20:34, success 36 | 2021-06-11 21:35, success 37 | 2021-06-11 22:36, success 38 | 2021-06-11 23:34, success 39 | 2021-06-12 00:46, success 40 | 2021-06-12 01:47, success 41 | 2021-06-12 02:42, success 42 | 2021-06-12 03:38, success 43 | 2021-06-12 04:40, success 44 | 2021-06-12 05:35, success 45 | 2021-06-12 06:39, success 46 | 2021-06-12 07:34, success 47 | 2021-06-12 08:36, success 48 | 2021-06-12 09:36, success 49 | 2021-06-12 10:37, success 50 | 2021-06-12 11:33, success 51 | 2021-06-12 12:42, success 52 | 2021-06-12 13:38, success 53 | 2021-06-12 14:33, success 54 | 2021-06-12 15:38, success 55 | 2021-06-12 16:43, success 56 | 2021-06-12 17:41, success 57 | 2021-06-12 18:40, success 58 | 2021-06-12 19:33, success 59 | 2021-06-12 20:35, success 60 | 2021-06-12 21:35, success 61 | 2021-06-12 22:36, success 62 | 2021-06-12 23:34, success 63 | 2021-06-13 00:47, success 64 | 2021-06-13 01:51, success 65 | 2021-06-13 02:43, success 66 | 2021-06-13 03:39, success 67 | 2021-06-13 04:40, success 68 | 2021-06-13 05:35, success 69 | 2021-06-13 06:39, success 70 | 2021-06-13 07:34, success 71 | 2021-06-13 08:36, success 72 | 2021-06-13 09:36, success 73 | 2021-06-13 10:37, success 74 | 2021-06-13 11:33, success 75 | 2021-06-13 12:42, success 76 | 2021-06-13 13:39, success 77 | 2021-06-13 14:33, success 78 | 2021-06-13 15:39, success 79 | 2021-06-13 16:43, success 80 | 2021-06-13 17:40, success 81 | 2021-06-13 18:40, success 82 | 2021-06-13 19:33, success 83 | 2021-06-13 20:34, success 84 | 2021-06-13 21:35, success 85 | 2021-06-13 22:36, success 86 | 2021-06-13 23:35, success 87 | 2021-06-14 00:46, success 88 | 2021-06-14 01:50, success 89 | 2021-06-14 02:43, success 90 | 2021-06-14 03:39, success 91 | 2021-06-14 04:41, success 92 | 2021-06-14 05:36, success 93 | 2021-06-14 06:40, success 94 | 2021-06-14 07:36, success 95 | 2021-06-14 08:37, success 96 | 2021-06-14 09:37, success 97 | 2021-06-14 10:37, success 98 | 2021-06-14 11:33, success 99 | 2021-06-14 12:42, success 100 | 2021-06-14 13:39, success 101 | 2021-06-14 14:34, success 102 | 2021-06-14 15:39, success 103 | 2021-06-14 16:43, success 104 | 2021-06-14 17:41, success 105 | 2021-06-14 18:40, success 106 | 2021-06-14 19:32, success 107 | 2021-06-14 20:35, success 108 | 2021-06-14 21:36, success 109 | 2021-06-14 22:37, success 110 | 2021-06-14 23:35, success 111 | 2021-06-15 00:46, success 112 | 2021-06-15 01:53, success 113 | 2021-06-15 02:44, success 114 | 2021-06-15 03:39, success 115 | 2021-06-15 04:40, success 116 | 2021-06-15 05:36, success 117 | 2021-06-15 06:40, success 118 | 2021-06-15 07:36, success 119 | 2021-06-15 08:37, success 120 | 2021-06-15 09:37, success 121 | 2021-06-15 10:37, success 122 | 2021-06-15 11:33, success 123 | 2021-06-15 12:42, success 124 | 2021-06-15 13:39, success 125 | 2021-06-15 14:34, success 126 | 2021-06-15 15:39, success 127 | 2021-06-15 16:44, success 128 | 2021-06-15 17:42, success 129 | 2021-06-15 18:41, success 130 | 2021-06-15 19:32, success 131 | 2021-06-15 20:35, success 132 | 2021-06-15 21:38, success 133 | 2021-06-15 22:36, success 134 | 2021-06-15 23:35, success 135 | 2021-06-16 00:46, success 136 | 2021-06-16 01:50, success 137 | 2021-06-16 02:43, success 138 | 2021-06-16 03:39, success 139 | 2021-06-16 04:40, success 140 | 2021-06-16 05:36, success 141 | 2021-06-16 06:40, success 142 | 2021-06-16 07:36, success 143 | 2021-06-16 08:37, success 144 | 2021-06-16 09:37, success 145 | 2021-06-16 10:37, success 146 | 2021-06-16 11:33, success 147 | 2021-06-16 12:43, success 148 | 2021-06-16 13:39, success 149 | 2021-06-16 14:34, success 150 | 2021-06-16 15:39, success 151 | 2021-06-16 16:44, success 152 | 2021-06-16 17:41, success 153 | 2021-06-16 18:41, success 154 | 2021-06-16 19:33, success 155 | 2021-06-16 20:35, success 156 | -------------------------------------------------------------------------------- /logs/hn_report.log: -------------------------------------------------------------------------------- 1 | 2021-06-10 08:38, success 2 | 2021-06-10 09:37, success 3 | 2021-06-10 10:39, success 4 | 2021-06-10 11:34, success 5 | 2021-06-10 12:43, success 6 | 2021-06-10 13:41, success 7 | 2021-06-10 14:36, success 8 | 2021-06-10 15:39, success 9 | 2021-06-10 16:46, success 10 | 2021-06-10 17:46, success 11 | 2021-06-10 18:44, success 12 | 2021-06-10 19:37, success 13 | 2021-06-10 20:35, success 14 | 2021-06-10 21:36, success 15 | 2021-06-10 22:36, success 16 | 2021-06-11 01:52, success 17 | 2021-06-11 02:45, success 18 | 2021-06-11 03:39, success 19 | 2021-06-11 04:41, success 20 | 2021-06-11 05:37, success 21 | 2021-06-11 06:39, success 22 | 2021-06-11 07:35, success 23 | 2021-06-11 08:37, success 24 | 2021-06-11 09:36, success 25 | 2021-06-11 10:37, success 26 | 2021-06-11 11:33, success 27 | 2021-06-11 12:42, success 28 | 2021-06-11 13:39, success 29 | 2021-06-11 14:34, success 30 | 2021-06-11 15:38, success 31 | 2021-06-11 16:44, success 32 | 2021-06-11 17:41, success 33 | 2021-06-11 18:40, success 34 | 2021-06-11 19:32, success 35 | 2021-06-11 20:34, success 36 | 2021-06-11 21:35, success 37 | 2021-06-11 22:36, success 38 | 2021-06-11 23:34, success 39 | 2021-06-12 00:46, success 40 | 2021-06-12 01:47, success 41 | 2021-06-12 02:42, success 42 | 2021-06-12 03:38, success 43 | 2021-06-12 04:40, success 44 | 2021-06-12 05:35, success 45 | 2021-06-12 06:39, success 46 | 2021-06-12 07:34, success 47 | 2021-06-12 08:36, success 48 | 2021-06-12 09:36, success 49 | 2021-06-12 10:37, success 50 | 2021-06-12 11:33, success 51 | 2021-06-12 12:42, success 52 | 2021-06-12 13:38, success 53 | 2021-06-12 14:33, success 54 | 2021-06-12 15:38, success 55 | 2021-06-12 16:43, success 56 | 2021-06-12 17:41, success 57 | 2021-06-12 18:40, success 58 | 2021-06-12 19:33, success 59 | 2021-06-12 20:35, success 60 | 2021-06-12 21:35, success 61 | 2021-06-12 22:36, success 62 | 2021-06-12 23:34, success 63 | 2021-06-13 00:47, success 64 | 2021-06-13 01:51, success 65 | 2021-06-13 02:43, success 66 | 2021-06-13 03:39, success 67 | 2021-06-13 04:40, success 68 | 2021-06-13 05:35, success 69 | 2021-06-13 06:40, success 70 | 2021-06-13 07:34, success 71 | 2021-06-13 08:36, success 72 | 2021-06-13 09:36, success 73 | 2021-06-13 10:37, success 74 | 2021-06-13 11:33, success 75 | 2021-06-13 12:42, success 76 | 2021-06-13 13:39, success 77 | 2021-06-13 14:33, success 78 | 2021-06-13 15:39, success 79 | 2021-06-13 16:43, success 80 | 2021-06-13 17:40, success 81 | 2021-06-13 18:40, success 82 | 2021-06-13 19:33, success 83 | 2021-06-13 20:34, success 84 | 2021-06-13 21:36, success 85 | 2021-06-13 22:36, success 86 | 2021-06-13 23:35, success 87 | 2021-06-14 00:46, success 88 | 2021-06-14 01:50, success 89 | 2021-06-14 02:43, success 90 | 2021-06-14 03:39, success 91 | 2021-06-14 04:41, success 92 | 2021-06-14 05:36, success 93 | 2021-06-14 06:40, success 94 | 2021-06-14 07:36, success 95 | 2021-06-14 08:37, success 96 | 2021-06-14 09:37, success 97 | 2021-06-14 10:37, success 98 | 2021-06-14 11:33, success 99 | 2021-06-14 12:42, success 100 | 2021-06-14 13:39, success 101 | 2021-06-14 14:34, success 102 | 2021-06-14 15:39, success 103 | 2021-06-14 16:43, success 104 | 2021-06-14 17:41, success 105 | 2021-06-14 18:40, success 106 | 2021-06-14 19:32, success 107 | 2021-06-14 20:35, success 108 | 2021-06-14 21:36, success 109 | 2021-06-14 22:37, success 110 | 2021-06-14 23:35, success 111 | 2021-06-15 00:46, success 112 | 2021-06-15 01:53, success 113 | 2021-06-15 02:44, success 114 | 2021-06-15 03:39, success 115 | 2021-06-15 04:40, success 116 | 2021-06-15 05:36, success 117 | 2021-06-15 06:40, success 118 | 2021-06-15 07:36, success 119 | 2021-06-15 08:37, success 120 | 2021-06-15 09:37, success 121 | 2021-06-15 10:37, success 122 | 2021-06-15 11:33, success 123 | 2021-06-15 12:42, success 124 | 2021-06-15 13:39, success 125 | 2021-06-15 14:34, success 126 | 2021-06-15 15:39, success 127 | 2021-06-15 16:44, success 128 | 2021-06-15 17:42, success 129 | 2021-06-15 18:41, success 130 | 2021-06-15 19:33, success 131 | 2021-06-15 20:35, success 132 | 2021-06-15 21:38, success 133 | 2021-06-15 22:36, success 134 | 2021-06-15 23:35, success 135 | 2021-06-16 00:46, success 136 | 2021-06-16 01:50, success 137 | 2021-06-16 02:43, success 138 | 2021-06-16 03:39, success 139 | 2021-06-16 04:40, success 140 | 2021-06-16 05:36, success 141 | 2021-06-16 06:40, success 142 | 2021-06-16 07:36, success 143 | 2021-06-16 08:37, success 144 | 2021-06-16 09:37, success 145 | 2021-06-16 10:37, success 146 | 2021-06-16 11:33, success 147 | 2021-06-16 12:43, success 148 | 2021-06-16 13:39, success 149 | 2021-06-16 14:34, success 150 | 2021-06-16 15:39, success 151 | 2021-06-16 16:44, success 152 | 2021-06-16 17:42, success 153 | 2021-06-16 18:41, success 154 | 2021-06-16 19:33, success 155 | 2021-06-16 20:35, success 156 | -------------------------------------------------------------------------------- /logs/reddit_report.log: -------------------------------------------------------------------------------- 1 | 2021-06-10 08:38, success 2 | 2021-06-10 09:37, success 3 | 2021-06-10 10:39, success 4 | 2021-06-10 11:34, success 5 | 2021-06-10 12:43, success 6 | 2021-06-10 13:41, success 7 | 2021-06-10 14:36, success 8 | 2021-06-10 15:39, success 9 | 2021-06-10 16:46, success 10 | 2021-06-10 17:46, success 11 | 2021-06-10 18:44, success 12 | 2021-06-10 19:37, success 13 | 2021-06-10 20:35, success 14 | 2021-06-10 21:36, success 15 | 2021-06-10 22:36, success 16 | 2021-06-11 01:52, success 17 | 2021-06-11 02:45, success 18 | 2021-06-11 03:39, success 19 | 2021-06-11 04:41, success 20 | 2021-06-11 05:37, success 21 | 2021-06-11 06:39, success 22 | 2021-06-11 07:35, success 23 | 2021-06-11 08:37, success 24 | 2021-06-11 09:36, success 25 | 2021-06-11 10:37, success 26 | 2021-06-11 11:33, success 27 | 2021-06-11 12:42, success 28 | 2021-06-11 13:39, success 29 | 2021-06-11 14:34, success 30 | 2021-06-11 15:38, success 31 | 2021-06-11 16:44, success 32 | 2021-06-11 17:41, success 33 | 2021-06-11 18:40, success 34 | 2021-06-11 19:32, success 35 | 2021-06-11 20:34, success 36 | 2021-06-11 21:35, success 37 | 2021-06-11 22:36, success 38 | 2021-06-11 23:34, success 39 | 2021-06-12 00:46, success 40 | 2021-06-12 01:47, success 41 | 2021-06-12 02:42, success 42 | 2021-06-12 03:38, success 43 | 2021-06-12 04:40, success 44 | 2021-06-12 05:35, success 45 | 2021-06-12 06:39, success 46 | 2021-06-12 07:34, success 47 | 2021-06-12 08:36, success 48 | 2021-06-12 09:36, success 49 | 2021-06-12 10:37, success 50 | 2021-06-12 11:33, success 51 | 2021-06-12 12:42, success 52 | 2021-06-12 13:38, success 53 | 2021-06-12 14:33, success 54 | 2021-06-12 15:38, success 55 | 2021-06-12 16:43, success 56 | 2021-06-12 17:41, success 57 | 2021-06-12 18:40, success 58 | 2021-06-12 19:33, success 59 | 2021-06-12 20:35, success 60 | 2021-06-12 21:35, success 61 | 2021-06-12 22:36, success 62 | 2021-06-12 23:34, success 63 | 2021-06-13 00:47, success 64 | 2021-06-13 01:51, success 65 | 2021-06-13 02:43, success 66 | 2021-06-13 03:39, success 67 | 2021-06-13 04:40, success 68 | 2021-06-13 05:35, success 69 | 2021-06-13 06:40, success 70 | 2021-06-13 07:34, success 71 | 2021-06-13 08:36, success 72 | 2021-06-13 09:36, success 73 | 2021-06-13 10:37, success 74 | 2021-06-13 11:33, success 75 | 2021-06-13 12:42, success 76 | 2021-06-13 13:39, success 77 | 2021-06-13 14:33, success 78 | 2021-06-13 15:39, success 79 | 2021-06-13 16:43, success 80 | 2021-06-13 17:41, success 81 | 2021-06-13 18:40, success 82 | 2021-06-13 19:33, success 83 | 2021-06-13 20:34, success 84 | 2021-06-13 21:36, success 85 | 2021-06-13 22:36, success 86 | 2021-06-13 23:35, success 87 | 2021-06-14 00:46, success 88 | 2021-06-14 01:50, success 89 | 2021-06-14 02:43, success 90 | 2021-06-14 03:39, success 91 | 2021-06-14 04:41, success 92 | 2021-06-14 05:36, success 93 | 2021-06-14 06:40, success 94 | 2021-06-14 07:36, success 95 | 2021-06-14 08:37, success 96 | 2021-06-14 09:37, success 97 | 2021-06-14 10:37, success 98 | 2021-06-14 11:33, success 99 | 2021-06-14 12:42, success 100 | 2021-06-14 13:39, success 101 | 2021-06-14 14:34, success 102 | 2021-06-14 15:39, success 103 | 2021-06-14 16:43, success 104 | 2021-06-14 17:41, success 105 | 2021-06-14 18:40, success 106 | 2021-06-14 19:32, success 107 | 2021-06-14 20:35, success 108 | 2021-06-14 21:36, success 109 | 2021-06-14 22:37, success 110 | 2021-06-14 23:35, success 111 | 2021-06-15 00:46, success 112 | 2021-06-15 01:53, success 113 | 2021-06-15 02:44, success 114 | 2021-06-15 03:39, success 115 | 2021-06-15 04:40, success 116 | 2021-06-15 05:36, success 117 | 2021-06-15 06:40, success 118 | 2021-06-15 07:36, success 119 | 2021-06-15 08:37, success 120 | 2021-06-15 09:37, success 121 | 2021-06-15 10:37, success 122 | 2021-06-15 11:33, success 123 | 2021-06-15 12:42, success 124 | 2021-06-15 13:39, success 125 | 2021-06-15 14:34, success 126 | 2021-06-15 15:39, success 127 | 2021-06-15 16:44, success 128 | 2021-06-15 17:42, success 129 | 2021-06-15 18:41, success 130 | 2021-06-15 19:33, success 131 | 2021-06-15 20:35, success 132 | 2021-06-15 21:38, success 133 | 2021-06-15 22:36, success 134 | 2021-06-15 23:35, success 135 | 2021-06-16 00:46, success 136 | 2021-06-16 01:50, success 137 | 2021-06-16 02:43, success 138 | 2021-06-16 03:39, success 139 | 2021-06-16 04:40, success 140 | 2021-06-16 05:36, success 141 | 2021-06-16 06:40, success 142 | 2021-06-16 07:36, success 143 | 2021-06-16 08:37, success 144 | 2021-06-16 09:37, success 145 | 2021-06-16 10:37, success 146 | 2021-06-16 11:33, success 147 | 2021-06-16 12:43, success 148 | 2021-06-16 13:39, success 149 | 2021-06-16 14:34, success 150 | 2021-06-16 15:39, success 151 | 2021-06-16 16:44, success 152 | 2021-06-16 17:42, success 153 | 2021-06-16 18:41, success 154 | 2021-06-16 19:33, success 155 | 2021-06-16 20:35, success 156 | -------------------------------------------------------------------------------- /logs/statsig_report.log: -------------------------------------------------------------------------------- 1 | 2021-06-10 08:38, success 2 | 2021-06-10 09:37, success 3 | 2021-06-10 10:39, success 4 | 2021-06-10 11:34, success 5 | 2021-06-10 12:43, success 6 | 2021-06-10 13:41, success 7 | 2021-06-10 14:36, success 8 | 2021-06-10 15:39, success 9 | 2021-06-10 16:46, success 10 | 2021-06-10 17:46, success 11 | 2021-06-10 18:44, success 12 | 2021-06-10 19:37, success 13 | 2021-06-10 20:35, success 14 | 2021-06-10 21:36, success 15 | 2021-06-10 22:36, success 16 | 2021-06-11 01:52, success 17 | 2021-06-11 02:45, success 18 | 2021-06-11 03:39, success 19 | 2021-06-11 04:41, success 20 | 2021-06-11 05:37, success 21 | 2021-06-11 06:39, success 22 | 2021-06-11 07:35, success 23 | 2021-06-11 08:37, success 24 | 2021-06-11 09:36, success 25 | 2021-06-11 10:37, success 26 | 2021-06-11 11:33, success 27 | 2021-06-11 12:42, success 28 | 2021-06-11 13:39, success 29 | 2021-06-11 14:34, success 30 | 2021-06-11 15:38, success 31 | 2021-06-11 16:44, success 32 | 2021-06-11 17:41, success 33 | 2021-06-11 18:40, success 34 | 2021-06-11 19:32, success 35 | 2021-06-11 20:34, success 36 | 2021-06-11 21:35, success 37 | 2021-06-11 22:36, success 38 | 2021-06-11 23:34, success 39 | 2021-06-12 00:46, success 40 | 2021-06-12 01:47, success 41 | 2021-06-12 02:42, success 42 | 2021-06-12 03:38, success 43 | 2021-06-12 04:40, success 44 | 2021-06-12 05:35, success 45 | 2021-06-12 06:39, success 46 | 2021-06-12 07:34, success 47 | 2021-06-12 08:36, success 48 | 2021-06-12 09:36, success 49 | 2021-06-12 10:37, success 50 | 2021-06-12 11:33, success 51 | 2021-06-12 12:42, success 52 | 2021-06-12 13:38, success 53 | 2021-06-12 14:33, success 54 | 2021-06-12 15:38, success 55 | 2021-06-12 16:43, success 56 | 2021-06-12 17:41, success 57 | 2021-06-12 18:40, success 58 | 2021-06-12 19:33, success 59 | 2021-06-12 20:35, success 60 | 2021-06-12 21:35, success 61 | 2021-06-12 22:36, success 62 | 2021-06-12 23:34, success 63 | 2021-06-13 00:47, success 64 | 2021-06-13 01:51, success 65 | 2021-06-13 02:43, success 66 | 2021-06-13 03:39, success 67 | 2021-06-13 04:40, success 68 | 2021-06-13 05:35, success 69 | 2021-06-13 06:40, success 70 | 2021-06-13 07:34, success 71 | 2021-06-13 08:36, success 72 | 2021-06-13 09:36, success 73 | 2021-06-13 10:37, success 74 | 2021-06-13 11:33, success 75 | 2021-06-13 12:42, success 76 | 2021-06-13 13:39, success 77 | 2021-06-13 14:33, success 78 | 2021-06-13 15:39, success 79 | 2021-06-13 16:43, success 80 | 2021-06-13 17:41, success 81 | 2021-06-13 18:40, success 82 | 2021-06-13 19:33, success 83 | 2021-06-13 20:34, success 84 | 2021-06-13 21:36, success 85 | 2021-06-13 22:36, success 86 | 2021-06-13 23:35, success 87 | 2021-06-14 00:47, success 88 | 2021-06-14 01:50, success 89 | 2021-06-14 02:43, success 90 | 2021-06-14 03:39, success 91 | 2021-06-14 04:41, success 92 | 2021-06-14 05:36, success 93 | 2021-06-14 06:40, success 94 | 2021-06-14 07:36, success 95 | 2021-06-14 08:37, success 96 | 2021-06-14 09:37, success 97 | 2021-06-14 10:37, success 98 | 2021-06-14 11:33, success 99 | 2021-06-14 12:42, success 100 | 2021-06-14 13:39, success 101 | 2021-06-14 14:34, success 102 | 2021-06-14 15:39, success 103 | 2021-06-14 16:43, success 104 | 2021-06-14 17:41, success 105 | 2021-06-14 18:40, success 106 | 2021-06-14 19:32, success 107 | 2021-06-14 20:35, success 108 | 2021-06-14 21:36, success 109 | 2021-06-14 22:37, success 110 | 2021-06-14 23:35, success 111 | 2021-06-15 00:46, success 112 | 2021-06-15 01:53, success 113 | 2021-06-15 02:44, success 114 | 2021-06-15 03:39, success 115 | 2021-06-15 04:40, success 116 | 2021-06-15 05:36, success 117 | 2021-06-15 06:40, success 118 | 2021-06-15 07:36, success 119 | 2021-06-15 08:37, success 120 | 2021-06-15 09:37, success 121 | 2021-06-15 10:37, success 122 | 2021-06-15 11:33, success 123 | 2021-06-15 12:42, success 124 | 2021-06-15 13:39, success 125 | 2021-06-15 14:34, success 126 | 2021-06-15 15:39, success 127 | 2021-06-15 16:44, success 128 | 2021-06-15 17:42, success 129 | 2021-06-15 18:41, success 130 | 2021-06-15 19:33, success 131 | 2021-06-15 20:35, success 132 | 2021-06-15 21:38, success 133 | 2021-06-15 22:36, success 134 | 2021-06-15 23:35, success 135 | 2021-06-16 00:46, success 136 | 2021-06-16 01:50, success 137 | 2021-06-16 02:43, success 138 | 2021-06-16 03:39, success 139 | 2021-06-16 04:40, success 140 | 2021-06-16 05:36, success 141 | 2021-06-16 06:40, success 142 | 2021-06-16 07:36, success 143 | 2021-06-16 08:37, success 144 | 2021-06-16 09:37, success 145 | 2021-06-16 10:37, success 146 | 2021-06-16 11:33, success 147 | 2021-06-16 12:43, success 148 | 2021-06-16 13:39, success 149 | 2021-06-16 14:34, success 150 | 2021-06-16 15:39, success 151 | 2021-06-16 16:44, success 152 | 2021-06-16 17:42, success 153 | 2021-06-16 18:41, success 154 | 2021-06-16 19:33, success 155 | 2021-06-16 20:35, success 156 | -------------------------------------------------------------------------------- /logs/worldclock_report.log: -------------------------------------------------------------------------------- 1 | 2021-06-10 08:38, success 2 | 2021-06-10 09:37, success 3 | 2021-06-10 10:39, success 4 | 2021-06-10 11:34, success 5 | 2021-06-10 12:43, success 6 | 2021-06-10 13:41, success 7 | 2021-06-10 14:36, success 8 | 2021-06-10 15:39, success 9 | 2021-06-10 16:46, success 10 | 2021-06-10 17:46, success 11 | 2021-06-10 18:44, success 12 | 2021-06-10 19:37, success 13 | 2021-06-10 20:35, success 14 | 2021-06-10 21:36, success 15 | 2021-06-10 22:36, success 16 | 2021-06-11 01:52, success 17 | 2021-06-11 02:45, success 18 | 2021-06-11 03:39, success 19 | 2021-06-11 04:41, success 20 | 2021-06-11 05:37, success 21 | 2021-06-11 06:39, success 22 | 2021-06-11 07:35, success 23 | 2021-06-11 08:37, success 24 | 2021-06-11 09:36, success 25 | 2021-06-11 10:37, success 26 | 2021-06-11 11:33, success 27 | 2021-06-11 12:42, failed 28 | 2021-06-11 13:39, success 29 | 2021-06-11 14:34, success 30 | 2021-06-11 15:40, success 31 | 2021-06-11 16:44, success 32 | 2021-06-11 17:41, success 33 | 2021-06-11 18:40, success 34 | 2021-06-11 19:32, success 35 | 2021-06-11 20:34, success 36 | 2021-06-11 21:35, success 37 | 2021-06-11 22:36, success 38 | 2021-06-11 23:34, success 39 | 2021-06-12 00:46, success 40 | 2021-06-12 01:47, success 41 | 2021-06-12 02:42, success 42 | 2021-06-12 03:38, success 43 | 2021-06-12 04:40, success 44 | 2021-06-12 05:35, success 45 | 2021-06-12 06:39, success 46 | 2021-06-12 07:34, success 47 | 2021-06-12 08:36, success 48 | 2021-06-12 09:36, success 49 | 2021-06-12 10:37, success 50 | 2021-06-12 11:33, success 51 | 2021-06-12 12:42, success 52 | 2021-06-12 13:38, success 53 | 2021-06-12 14:33, success 54 | 2021-06-12 15:38, success 55 | 2021-06-12 16:43, success 56 | 2021-06-12 17:41, success 57 | 2021-06-12 18:40, success 58 | 2021-06-12 19:33, success 59 | 2021-06-12 20:35, success 60 | 2021-06-12 21:35, success 61 | 2021-06-12 22:36, success 62 | 2021-06-12 23:34, success 63 | 2021-06-13 00:47, success 64 | 2021-06-13 01:51, success 65 | 2021-06-13 02:43, success 66 | 2021-06-13 03:39, success 67 | 2021-06-13 04:40, success 68 | 2021-06-13 05:35, success 69 | 2021-06-13 06:40, success 70 | 2021-06-13 07:34, success 71 | 2021-06-13 08:36, success 72 | 2021-06-13 09:36, success 73 | 2021-06-13 10:37, success 74 | 2021-06-13 11:33, success 75 | 2021-06-13 12:42, success 76 | 2021-06-13 13:39, success 77 | 2021-06-13 14:33, success 78 | 2021-06-13 15:39, success 79 | 2021-06-13 16:43, success 80 | 2021-06-13 17:41, success 81 | 2021-06-13 18:40, success 82 | 2021-06-13 19:33, success 83 | 2021-06-13 20:34, success 84 | 2021-06-13 21:36, success 85 | 2021-06-13 22:36, success 86 | 2021-06-13 23:35, success 87 | 2021-06-14 00:47, success 88 | 2021-06-14 01:50, success 89 | 2021-06-14 02:43, success 90 | 2021-06-14 03:39, success 91 | 2021-06-14 04:41, success 92 | 2021-06-14 05:36, success 93 | 2021-06-14 06:40, success 94 | 2021-06-14 07:36, success 95 | 2021-06-14 08:37, success 96 | 2021-06-14 09:37, success 97 | 2021-06-14 10:37, success 98 | 2021-06-14 11:33, success 99 | 2021-06-14 12:42, success 100 | 2021-06-14 13:39, success 101 | 2021-06-14 14:34, success 102 | 2021-06-14 15:39, success 103 | 2021-06-14 16:43, success 104 | 2021-06-14 17:41, success 105 | 2021-06-14 18:40, success 106 | 2021-06-14 19:32, success 107 | 2021-06-14 20:35, success 108 | 2021-06-14 21:36, success 109 | 2021-06-14 22:37, success 110 | 2021-06-14 23:35, success 111 | 2021-06-15 00:46, success 112 | 2021-06-15 01:53, success 113 | 2021-06-15 02:44, success 114 | 2021-06-15 03:39, success 115 | 2021-06-15 04:40, success 116 | 2021-06-15 05:36, success 117 | 2021-06-15 06:40, success 118 | 2021-06-15 07:36, success 119 | 2021-06-15 08:37, success 120 | 2021-06-15 09:37, success 121 | 2021-06-15 10:37, success 122 | 2021-06-15 11:33, success 123 | 2021-06-15 12:42, success 124 | 2021-06-15 13:39, success 125 | 2021-06-15 14:34, success 126 | 2021-06-15 15:39, success 127 | 2021-06-15 16:44, success 128 | 2021-06-15 17:42, success 129 | 2021-06-15 18:41, success 130 | 2021-06-15 19:33, success 131 | 2021-06-15 20:35, success 132 | 2021-06-15 21:38, success 133 | 2021-06-15 22:36, success 134 | 2021-06-15 23:35, success 135 | 2021-06-16 00:46, success 136 | 2021-06-16 01:50, success 137 | 2021-06-16 02:43, success 138 | 2021-06-16 03:39, success 139 | 2021-06-16 04:40, success 140 | 2021-06-16 05:36, success 141 | 2021-06-16 06:40, success 142 | 2021-06-16 07:36, success 143 | 2021-06-16 08:37, success 144 | 2021-06-16 09:37, success 145 | 2021-06-16 10:37, success 146 | 2021-06-16 11:33, success 147 | 2021-06-16 12:43, success 148 | 2021-06-16 13:39, success 149 | 2021-06-16 14:34, success 150 | 2021-06-16 15:39, success 151 | 2021-06-16 16:44, success 152 | 2021-06-16 17:42, success 153 | 2021-06-16 18:41, success 154 | 2021-06-16 19:33, success 155 | 2021-06-16 20:35, success 156 | -------------------------------------------------------------------------------- /urls.cfg: -------------------------------------------------------------------------------- 1 | google=https://google.com 2 | hn=https://news.ycombinator.com 3 | reddit=https://reddit.com 4 | statsig=https://www.statsig.com 5 | worldclock=http://worldclockapi.com/api/json/utc/now 6 | --------------------------------------------------------------------------------