diff --git a/src/api/api.ts b/src/api/api.ts
index a560ae1..30a8092 100644
--- a/src/api/api.ts
+++ b/src/api/api.ts
@@ -6,5 +6,8 @@ class getdata {
async text_server(url: string) {
return await api.post('http://149.129.107.38:1323/textserver', { url });
}
+ async get_country(ip: string) {
+ return await api.get(`https://ip.useragentinfo.com/json?ip=${ip}`);
+ }
}
export { getdata };
diff --git a/src/components/LinkItem.vue b/src/components/LinkItem.vue
index 973b0d7..5038146 100644
--- a/src/components/LinkItem.vue
+++ b/src/components/LinkItem.vue
@@ -2,12 +2,12 @@
@@ -37,6 +37,7 @@ export default defineComponent({
setup(props) {
const online = ref(false);
const isonline = () => {
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
let obj = JSON.parse(decode(props.text!.replace('vmess://', '')));
let http = props.serve.istls == 0 ? 'http' : 'https'
let reg = new RegExp(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/);
@@ -48,6 +49,9 @@ export default defineComponent({
const api = new getdata;
const $q = useQuasar()
const outtext = computed(() => {
+ // eslint-disable-next-line vue/no-side-effects-in-computed-properties
+ online.value = false
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
let obj = JSON.parse(decode(props.text!.replace('vmess://', '')));
obj.add = props.serve.ip
obj.port = props.serve.port
@@ -58,15 +62,24 @@ export default defineComponent({
isonline()
return 'vmess://' + encode(JSON.stringify(obj))
})
- const copy = () => {
-
- // api.text_server('http://uszz.giaogiao.uk:8080/34.125.44.195').then(res => { console.log(res.data) })
- copyToClipboard(outtext.value)
+ const copy = (type: string) => {
+ let tmp = ''
+ switch (type) {
+ case 'sub':
+ tmp = `http://149.129.107.38/link.php?link=${outtext.value}`
+ break;
+ case 'link':
+ tmp = outtext.value
+ break;
+ default:
+ break;
+ }
+ copyToClipboard(tmp)
.then(() => {
// success!
$q.notify({
message: '复制成功',
- color: 'purple',
+ color: 'positive',
position: 'top'
})
})
@@ -74,7 +87,7 @@ export default defineComponent({
// fail
$q.notify({
message: '复制失败',
- color: 'purple'
+ color: 'negative'
})
})
}
diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue
index fbbabc1..63d0d1c 100644
--- a/src/layouts/MainLayout.vue
+++ b/src/layouts/MainLayout.vue
@@ -1,22 +1,115 @@
+
+
+
+
+
+
+
+
+
+ Title
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ menuItem.label }}
+
+
+
+
+
+
+
+
+
+
-
diff --git a/src/pages/CreateLink.vue b/src/pages/CreateLink.vue
new file mode 100644
index 0000000..26e49b1
--- /dev/null
+++ b/src/pages/CreateLink.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
diff --git a/src/pages/IndexPage.vue b/src/pages/IndexPage.vue
index 082f3b6..1af3bd8 100644
--- a/src/pages/IndexPage.vue
+++ b/src/pages/IndexPage.vue
@@ -4,7 +4,7 @@
节点
+ style="color: green;" />
@@ -26,8 +26,7 @@ import { server } from 'components/models';
import { computed, defineComponent, onMounted, ref } from 'vue';
import { getdata } from 'src/api/api'
import LinkItem from 'components/LinkItem.vue';
-import { b64decode } from '@waiting/base64'
-import { encode, decode } from 'js-base64';
+import { decode } from 'js-base64';
export default defineComponent({
name: 'IndexPage',
components: { LinkItem },
@@ -45,6 +44,8 @@ export default defineComponent({
})
const isobj = computed(() => {
try {
+ // eslint-disable-next-line vue/no-side-effects-in-computed-properties
+ online.value = false
let obj = JSON.parse(decode(text.value.replace('vmess://', '')));
if (obj.id != '2ee57806-f6e4-482a-ef08-7360c04cd3e5' || obj.net != 'ws') {
return false
@@ -58,7 +59,7 @@ export default defineComponent({
return true
})
const isonline = () => {
- let obj = JSON.parse(decode(text.value!.replace('vmess://', '')));
+ let obj = JSON.parse(decode(text.value?.replace('vmess://', '')));
let reg = new RegExp(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/);
let ip = obj.ps.match(reg)[0];
api.text_server(`http://${ip}:9000/`).then(res => {
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 2d34fc1..b23c8dd 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -4,7 +4,7 @@ const routes: RouteRecordRaw[] = [
{
path: '/',
component: () => import('layouts/MainLayout.vue'),
- children: [{ path: '', component: () => import('pages/IndexPage.vue') }],
+ children: [{ path: '', name: 'home', component: () => import('pages/IndexPage.vue') }, { path: 'createlink', name: 'createlink', component: () => import('pages/CreateLink.vue') }],
},
// Always leave this as last one,
diff --git a/src/store/index.ts b/src/store/index.ts
index 2c4f2c7..d21fe5e 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -7,7 +7,7 @@ import {
useStore as vuexUseStore,
} from 'vuex'
-// import example from './module-example'
+import example from './module-example'
// import { ExampleStateInterface } from './module-example/state';
/*
@@ -37,16 +37,16 @@ declare module '@vue/runtime-core' {
export const storeKey: InjectionKey